Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在检测划痕之前减少噪音_C++_Opencv_Image Processing_Hough Transform_Canny Operator - Fatal编程技术网

C++ 在检测划痕之前减少噪音

C++ 在检测划痕之前减少噪音,c++,opencv,image-processing,hough-transform,canny-operator,C++,Opencv,Image Processing,Hough Transform,Canny Operator,我在试着检测芯片上的轻微划痕。并连接这些非连续划痕,以便划痕计数正确 目前,我正在使用canny边缘和概率hough变换来检测和绘制划痕。但是,噪声太大,无法准确检测。我尝试了形态学操作来降低噪音,但失败了,因为微弱的划痕也会被消除。此外,我还尝试使用sobel滤波器和高斯模糊来减少噪声,但结果也很糟糕。我对图像处理很陌生,所以我已经没有办法减少噪音了 原创的 预期 这是我正在尝试的图像。预期结果是从芯片顶部一直到芯片底部的划痕,划痕计数应该只有一个 这是我能做的最好的canny edge,

我在试着检测芯片上的轻微划痕。并连接这些非连续划痕,以便划痕计数正确

目前,我正在使用canny边缘和概率hough变换来检测和绘制划痕。但是,噪声太大,无法准确检测。我尝试了形态学操作来降低噪音,但失败了,因为微弱的划痕也会被消除。此外,我还尝试使用sobel滤波器和高斯模糊来减少噪声,但结果也很糟糕。我对图像处理很陌生,所以我已经没有办法减少噪音了

原创的 预期

这是我正在尝试的图像。预期结果是从芯片顶部一直到芯片底部的划痕,划痕计数应该只有一个

这是我能做的最好的canny edge,它给了我错误的检测

这是阈值为185的二值化图像

我愿意接受任何建议,以便尝试其他方法。 另外,如果需要任何额外的信息,请告诉我

已编辑

非局部滤波器 结果


您好,我已经尝试了非本地过滤器,这是结果。这很好,但还不够完美,尤其是中间缺少的部分。我通过手动降低hough变换的阈值来解决这个问题。有什么更好的方法可以解决这个问题吗?

OpenCV中有什么可以帮助我的?我只知道如何使用基本的过滤器,如高斯滤波器和sober滤波器,有什么更好的过滤器可以解决这个问题吗?SE站点“信号处理”可能更适合这个问题您是否尝试过像邻域滤波这样的非局部滤波?一个基于范围的过滤器(mean+-delta变成mean、全局或局部)也会有帮助。@user6556709我想你的意思是opencv中的fastNlMeansDenoising()函数,对吗?它似乎起作用了,我一试就会给你回复。