“简单”边缘 - 线 - 检测

时间:2013-09-08 17:52:07

标签: matlab image-processing image-recognition edge-detection hough-transform

在图像中我需要找到“表格” - 简单的矩形。 问题在于边缘识别,因为潜在的照片将是“黑暗的” 我尝试过edge - sobel,canny,log,.... - 识别并在Hough变换和线条发现之后。但是这个算法还不足以完成这项任务 什么可以帮助我:
- 它是矩形!,仅在透视图中(类似于装配透视矩形?)
- 该对象必须至少覆盖90%的照片(我知道我需要看近照片边缘) - 该矩形具有快速相同的颜色(例如木质餐桌)
- 我需要找到至少“只有”4个角落..(但是,更好的是找到那张桌子的边缘)

我知道如何使用sobel,canny或log算法,以及霍夫。当然,这些算法在黑暗或非对比度图像时会失败。但是,是否存在另一种基于“拟合”的方法?

显示照片的图像我可以得到(你看它会是黑暗的)以及我需要找到的东西:

image 1 image 2

这真是“漂亮”的画面(没有噪音)。我在更多的噪声图片上测试了它,结果是......非常可怕..
这张图片的结果与实际算法日志(另一张看起来相同):
image 3 image 4
我知道图像和边缘识别不是简单的挑战,但有一些新的更好的方法或类似我可以尝试使用的东西吗? 在这里的一篇帖子中我找到了LSD算法。它似乎非常好描述,似乎它也识别出非常好的直线。您是否认为使用canny或sobel检测更好?? 另一个解决方案是角点检测,在我的样本图像上它工作得更好但它识别太多点并且会出现时间问题..我将需要连接所有点并“找到”表格。

另一种解决方案:
我想到了点对点映射。我将有一些“虚拟”表,并尝试将上面的表映射到那个“虚拟”表(绘画中的简单2d方格:])..但我认为点对点映射会给我带来很大的错误,或者它无法正常工作

有人对算法使用了什么有任何建议吗? 我尝试识别FIJI中的边缘然后将边缘检测到的图像放在matlab中,但是尽管它也很糟糕......:/ ..

您认为最好使用什么?总之,我需要找到一些算法来处理非对比度的暗图像。

1 个答案:

答案 0 :(得分:3)

我尝试了一些修改过的snakes算法:

用4个点对矩形进行参数化,并在图像角落的某处初始化它们。然后使用一些优化算法(例如梯度下降,模拟退火等)将点移向图像特征。

图像特征可以是边缘特征的组合(例如,sobel直接或sobel的某些高斯滤波图像),将在这四个点之间的线上进行评估,并在这4个点进行评估。

此外,您可以处罚不太可能的矩形(可能取决于点之间的角度或与图像边界的距离)。