【问题标题】:Recognize type of noise识别噪音类型
【发布时间】:2016-05-14 11:37:21
【问题描述】:

这种噪音是什么类型的? 链接:Image 如何删除它?我应用了中值和 fastNlMeansDenoisingColored() 函数,但没有任何改进。

示例程序:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;


int main()
{

Mat img,gray,DENO, im_gray, img_bw, img_final;

img = imread("C:/Users/Opencv/Downloads/1.bmp",1);

cvtColor(img,im_gray,CV_RGB2GRAY);

adaptiveThreshold(im_gray, img_bw, 255, ADAPTIVE_THRESH_MEAN_C,      THRESH_BINARY_INV, 105, 1); 


dilate(img_bw, img_final, Mat(), Point(-1, -1), 2, 1, 1);

imshow("afa",img_final);
waitkay(0);
return 0;
}

Visual Studio 2012、C++、OpenCV 3.0.0 问候

【问题讨论】:

  • 这不是噪音。更像是辍学,因为他们持续了很长时间,所以也很糟糕。您拥有的唯一镜头是仅使用垂直像素的中值过滤器。

标签: visual-c++ opencv3.0 noise-reduction


【解决方案1】:

我写了这些代码:

 ressu3 = zeros(m,n);
 for i=2:m-1
 for j=2:n-1
 ressu3(i,j)=1/55* median ([I(i-1,j-1),I(i-1,j+1),I(i-1,j),I(i+1,j-  1),I(i+1,j+1),I(i+1,j)]);
end
end

代码是用matlab编写的(用于测试)。 是定向中值滤波吗?

【讨论】:

    【解决方案2】:
    • 试试下面的去除噪音的代码,

      cv::Mat mainMat1 = cv::imread("input_image_path");
      cv::Mat dstMat1, medianMat1, finalDest1;
      bilateralFilter(mainMat1, dstMat1, 19, 19 * 2, 19 / 2);
      addWeighted(mainMat1, 0.40, dstMat1, 0.60, 0, finalDest1, -1);
      medianBlur(mainMat1, medianMat1, 17);
      
      cv::Mat dstination1;
      cv::fastNlMeansDenoisingColored(mainMat1,dstination1,10,10,7,21);
      
    • 希望这会有所帮助。

    【讨论】:

    • 谢谢。您的代码删除了背景斑点噪声,并保留了方向噪声。问候
    • @opencvtrain :如果此代码对您有帮助,请接受此答案。
    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2017-05-16
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多