使用 openCV 检测墙角 - 困难

Detect wall corner with openCV - Hard

我有这张图片(抱歉尺寸):

编辑:这只是我房间的一个简单的墙角,没什么特别的...

我正在尝试检测确切的角点,但到目前为止未能检测到。 我尝试使用 gray 和 bilateral,mask 和 canny,当然还有一些 openCV corner 算法的组合,比如 Harris、EigenValsAndVecs、MinEigenVal 等等…… 至此,我发现了很多点,还是none.
有什么想法吗?

谢谢

这看起来很简单。首先你计算梯度大小,这将找到三个大部分均匀区域之间的线(下图中的 b),然后你应用类似 Harris 角检测器的东西(或任何其他变化也可以)找到直线之间的交点(下图中的c)。我对 Harris 检测器中的高斯梯度幅度和平滑都使用了 4 的西格玛。

我在 MATLAB 中快速完成了这个测试,因为它是开放的,但您可以访问我使用的相同 DIPlib 算法(披露:我是 DIPlib 的作者)。它看起来像这样:

import diplib as dip

a = dip.ImageRead('corner.jpg') # you can use OpenCV or PIL or whatever else for reading too

b = dip.GradientMagnitude(a, sigmas=4)
c = dip.HarrisCornerDetector(b, sigmas=4)