首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用Canny边缘检测前的图像预处理

应用Canny边缘检测前的图像预处理
EN

Stack Overflow用户
提问于 2016-03-10 16:58:46
回答 1查看 4.2K关注 0票数 6

我下面有一个房间的图像,我想检测所有的墙壁边缘。我尝试过许多不同的滤波器组合(双边、高斯、拉普拉斯等)。最好的组合似乎是

  • 将图像转换为灰度
  • 应用双边过滤器
  • 运行Canny边缘检测过程
  • 再加两个双边过滤器以消除任何噪音。
  • 应用膨胀过滤器“堵塞”边缘的任何孔。

我遇到的问题是,无论我尝试过什么,我永远也无法得到一个明显的直线边缘,它穿过靠近天花板的墙壁。我尝试了许多方法试图使边缘变暗,但没有效果。有一个应用程序商店,检测这一边缘,所以我知道它可以做,我只是不知道我需要应用什么预处理过滤器,希望有人能指出我的正确方向。

代码语言:javascript
复制
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 );

EN

回答 1

Stack Overflow用户

发布于 2016-03-11 13:08:45

问题是这些边缘的阴影,这是由这样的事实,即照明完全来自太阳透过窗户,而没有光源在房间内。此外,图片是相对黑暗的,因此它的直方图将集中在较低的一面。话虽如此,我将应用直方图均衡化作为第一步,将强度扩展到整个范围0-255,然后,在精明的范围内应用一个相对较大的西格玛(高斯模糊),以抑制高频边缘。

更新: 1)灰度值

2) histeq

3)精明

事实上,虽然histeq增加了对比度,但在这里却无能为力,因为在门上方的那个区域,梯度几乎为零,从第二张图片中可以很好地看到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35922687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档