gpt4 book ai didi

opencv - 在应用 Canny 边缘检测之前预处理图像

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:40 24 4
gpt4 key购买 nike

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

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

我遇到的问题是,无论我尝试过什么,我都无法获得横跨靠近天花板的墙壁的明显直边。我尝试了多种技术来尝试使边缘变暗但无济于事。应用程序商店中有一个应用程序可以检测此边缘,所以我知道它可以完成,我只是不确定我需要应用哪些预处理过滤器,希望有人能指出我正确的方向。

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 );

enter image description here

enter image description here

最佳答案

问题在于这些边缘的阴影,这是由于照明完全来自透过 window 的太阳,而房间内没有光源。而且画面比较暗,所以它的直方图会集中在下方。话虽如此,我会将直方图均衡化作为第一步,将强度分布到整个 0-255 范围内,然后在 canny 内应用相对较大的 sigma(高斯模糊)以抑制高频边缘。

更新:1)灰度值 enter image description here

2) histeq enter image description here

3) 精明 enter image description here

事实上,虽然 histeq 增加了对比度,但它在这里无济于事,因为在门上方的那个区域,梯度几乎为零,正如您从第二张图片中看到的那样。

关于opencv - 在应用 Canny 边缘检测之前预处理图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35922687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com