Wag*_*nga 5 opencv computer-vision canny-operator
我有一个房间下面的图像,我想检测所有墙边.我尝试了很多不同的滤镜组合(双边,高斯,拉普拉斯等),最好的组合似乎如下,
我遇到的问题是,无论我尝试过什么,我都无法获得穿过靠近天花板的墙壁的独特直边.我已经尝试了许多技术来试图使边缘变暗但无济于事.应用程序商店中有一个应用程序检测到这个边缘,所以我知道它可以完成,我只是不确定我需要应用哪些预处理过滤器,希望有人可以指出我正确的方向.
cv::Mat edgeFrame;
cv::Mat grayImage;
cv::Mat blurFrame;
outputFrame=inputFrame.clone();
getGray(inputImage, grayImage);
cv::bilateralFilter(grayImage, blurFrame, 9,80, 80);
cv:Canny(blurFrame, edgeImage,100, 110,5);
cv::bilateralFilter(edgeImage, blurFrame, 21 , 80, 80);
cv::bilateralFilter(blurFrame, edgeImage,21, 100, 150);
int dilation_size =1;
Mat element = getStructuringElement( MORPH_ELLIPSE,
Size( 2*dilation_size + 1, 2*dilation_size+1 ),
Point( dilation_size, dilation_size ) );
dilate( edgeImage, outputFrame, element );
Run Code Online (Sandbox Code Playgroud)
问题是这些边缘的阴影,这是由于照明完全来自透过窗户的阳光,而房间内没有光源。而且图片比较暗,所以它的直方图会集中在下侧。话虽如此,我将应用直方图均衡作为第一步,将强度分布在 0-255 的整个范围内,然后在 canny 内应用相对较大的西格玛(高斯模糊)以抑制高频边缘。
事实上,虽然 histeq 增加了对比度,但它在这里无济于事,因为在门上方的区域中,梯度几乎为零,正如您从第二张图片中可以清楚看到的那样。