首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于opencv c++的图像去噪

基于opencv c++的图像去噪
EN

Stack Overflow用户
提问于 2022-08-04 12:54:31
回答 2查看 180关注 0票数 0

我正在尝试用OpenCV和函数fastNlMeansDenoisingColored去噪彩色图像。这对于大图像来说,去噪的时间太长了,用OpenCV在c++中去除图像噪声的任何替代算法都要花费太多的时间,并举例说明。

EN

回答 2

Stack Overflow用户

发布于 2022-10-21 10:15:49

我使用了Nvidia的Optix去噪器,它在不到1秒的时间内给了我一个去噪图像,除非你想要实时的东西,你可以试试。他们说,它基于人工智能,而且它也使用你的GPU与库达库,所以这是安全的说,相当快和几乎实时去噪。

票数 0
EN

Stack Overflow用户

发布于 2022-10-21 14:39:59

下面的代码是一个使用高斯模糊和中值模糊去噪图像的例子。您可以使用此代码使用图像测试去噪algs,并选择最佳的时间/质量参数。计算去噪图像的时间,花费在几秒钟内输出到控制台。

我的平均次数是: GaussianBlur 0.0747621 medianBlur 0.0100638 NlMeans 1.07519

使用键'1','2','3','4‘分别观看原始,NlMeans,中值或高斯粉砂。“q”结束节目。我发现通过简单的切换图像来比较去噪效果是很方便的,同时保持逐像素的对应。您可以更改int k_szdouble gauss_sigma值以更改模糊程度。

代码语言:javascript
复制
#include <opencv2/opencv.hpp>

#include <chrono>
#include <string>    

using namespace std;
using namespace cv;    

int main()
{

  Mat frame;
  frame = imread("E:\\images\\pair_noised.jpg");

  while (1)
  {
    Mat gaus;
    Mat median;
    Mat NlMeans;

    int k_sz = 5;
    double gauss_sigma = 1.6;
    try {
      TickMeter tm;
      tm.start();
      GaussianBlur(frame, gaus, Size(k_sz, k_sz), gauss_sigma);
      tm.stop();
      cout << "GaussianBlur " <<tm.getTimeSec() << endl;
      tm.reset();

      tm.start();
      medianBlur(frame, median, k_sz);
      tm.stop();
      cout << "medianBlur " << tm.getTimeSec() << endl;
      tm.reset();

      tm.start();
      fastNlMeansDenoisingColored(frame, NlMeans);
      tm.stop();
      cout << "NlMeans " << tm.getTimeSec() << endl;
      tm.reset();
    }
    catch(Exception& Ex)
    {
      cout << Ex.what() << endl;
    }

    string win_nm = "output";
    namedWindow(win_nm);

    char key = waitKey();

    switch (key)
    {
    case '4':
      imshow(win_nm, gaus);
      break;
    case '3':
      imshow(win_nm, median);
      break;
    case '2':
      imshow(win_nm, NlMeans);
      break;
    case '1':
      imshow(win_nm, frame);
      break;

    case 'q':
      return 0;

    default:
      imshow(win_nm, frame);
      break;
    }
  }
  return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73236343

复制
相关文章

相似问题

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