我有一个类似三角形的 BW位图。我想确定每个三角形面临的方向。通过“面对”我的意思是以一种在所有三角形中恒定的方式描述方向,例如通过最长边的中位数的方向。
到目前为止,我可以单独识别三角形,但我不知道找出每个三角形方向的最佳方法是什么。
作为第一个想法,我考虑过使用 Hough变换来拟合每个三角形的边。一旦我有3个边,我可以计算它们的交点,然后我有3个顶点的坐标。从3个顶点可以很容易地找出最长边的中位数。
我对这种方法的问题在于我从未使用Hough变换,我不知道编写一个找到边的函数并以一种可用于计算交叉点的方式返回它们是多么困难。您能否将我链接到某篇文章或简要解释如何使用Hough变换来查找边表示我可以用来计算交叉点?
我的另一个想法是直接在位图图像上使用 rotation invariant moments ,而不用Hough变换识别它们的边。
我对这个解决方案的问题在于,当我用时刻描述它时,我不知道方向的“含义”是什么。 如果我使用不变矩,我该如何定义参考方向?
包含已识别对象的示例图像:
单个对象
答案 0 :(得分:1)
使用houghlines
查找每个三角形中最长的 ,即BW输入应仅包含一个三角形的边(例如,使用BW = edge(I,'canny')
)。这将为您提供三角形最长边的等式。
如果你的三角形是等高的,那么通过其中点的最长边的法线就是中位数,你就完成了。
如果没有,我想你必须找到3条边等等。
看看你的blob,我建议你试用R = regionprops(BW,'Orientation');