我有一个带有tif文件的建筑项目图像。图像中有一些代表门的四分之一圆。我尝试在Matlab中实现imfindcircles和regioprops(带有偏心率(函数。但不幸的是,函数并没有给我们一个有效的解决方案,比如有些圆找不到,有些圆发现在那个位置不存在圆。有什么不同的想法或解决方案吗?我还附上了我的图片jpg文件。谢谢
https://i.stack.imgur.com/e2889.jpg
图像是二进制的,质量很好。特别是,边缘是连续的,这是一笔巨大的财富。另一方面,圆弧与其他特征相交,这使得它们更难处理。
以下是我的建议:
-
将边缘细化为单像素宽度;
-
使用轮廓跟随算法来跟踪边缘,并在交叉点(交叉点是指一个像素有两个以上邻居的地方(或角度(方向的急剧变化(处停止;
-
检测弯曲的边缘(取三个间隔开的点,观察它们是否偏离一条线(;
-
估计中心和半径(你可以用更多的三元组重复来检查圆度(;
-
保留与预期半径兼容的零件;
-
检查附近的片段(圆形或短片段(是否与全局圆兼容,并将它们连接起来。
在极端情况下,弧可以分割成许多小段。为了处理这个问题,您可以检测短片段的"链",并测试它们的共圆性。