2009-11-07 116 views
2

什么编码技术可以让我区分黑白图像位图中的圆形,矩形和三角形?用于区分圆形矩形和三角形的技术?

+0

能否请您提供更多的信息?将给定的位图保证包含一个圆或三角形?它可以包含其他形状?它可以包含多个圈子吗?形状可以出现在位图的任何位置,还是可以保证延伸到定界符?任何进一步的信息将是非常有用的。 – csj

+0

位图必须只有一个形状 – Gamal

+1

查看您在本主题中的评论,这听起来像是您希望在编码级别获得更多帮助。如果这是真的,那么最好让你的问题更抽象,更具体:你用什么语言编程?你有什么代码?你到底在哪一步失败? – BalusC

回答

1

如果噪音足够低,提取曲线,近似可以用于:对每个形状选择参数给出最小误差(最小二乘法,他可以帮助在这里),然后比较这些错误......

如果图像是嘈杂的,我会考虑霍夫变换 - 它可以用来检测具有少量参数的形状,如圆形(对于矩形和三角形更难)。

+0

图像嘈杂,我有一个训练集为每个形状 – Gamal

1

只是我头顶的想法:​​逐像素逐行扫描(像素)图像。如果遇到第一个白色像素(假设它具有黑色背景),则将其位置作为起始点,然后查看下一个白色像素周围八个像素的每个方向。如果找到相邻的第二个像素,则可以在这两个像素之间建立方向矢量。

现在重复此操作,直到您的矢量方向发生变化(或变化高于某个阈值)。保持更改前的最后一个点作为第一行的终点,并为下一行重复该过程。

然后计算两条线之间的角度并存储它。现在跟踪第三行。计算第二行和第三行之间的角度。

如果两个角都是矩形的,你可能找到了一个矩形,否则你可能找到了一个三角形。如果找不到任何直线,则可以断定您找到了一个圆圈。

我知道该算法有点粗略,但我认为(有一些改进),它可以工作,如果你的图像的质量不是太差(太多的噪音,行中的差距等)。