图像处理中非局部均值降噪算法的实现
Implementation of Non Local Means Noise reduction algorithm in image processing
我正在研究C++中非局部均值降噪算法的实现。有关于这种算法的论文(如本文),但也不是很清楚
我知道,它使用的是加权平均值,但我不知道研究窗口在这里的用途是什么,它与比较窗口有什么关系。
作为一个新用户,StackOverflow不允许我上传图像。但是,您可以在上面提供的链接的nlmeans部分找到公式。
根据您参考的论文,当确定给定像素p的结果值时,图像的所有其他像素将根据其邻域与像素p的邻域之间的相似性进行加权和求和。
但这在计算上非常昂贵。因此,作者限制了对加权和有贡献的像素数量;那一定就是你所说的搜索窗口。该搜索窗口是以像素p为中心的21x21区域。被比较的邻域的大小为7x7(部分5)。
我可以用Mathematica快速制作原型,我确认当搜索窗口的大小增加时,它会变得非常昂贵。当您在C++中实现时,我期望有同样的行为。
这里有一些GPL的C++代码,以及原始作者对算法的简要介绍:http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/
这已添加到OpenCV 中
http://docs.opencv.org/modules/photo/doc/denoising.html
相关文章:
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何检查 CNG Windows API 是否返回符合 FIPS 的算法实现
- 递归合并排序算法实现
- OpenGL:布雷森汉姆的线条绘制算法实现
- 微小加密算法实现会产生意想不到的结果
- 在c++中使用合并排序算法实现计数反转
- 我正在尝试为 Kruskal 算法实现一个C++程序,该程序需要我按权重对图形进行排序。如何按权重对结构进行排序
- 最近点对O(nlogn)算法——c++实现中的一些数据问题
- 算法实现错误(DFS)
- 如何为涉及对象成员、间接寻址和强制转换的排序算法实现lambda函数
- 算法实现与 C++ 和 PHP 进行比较
- 如何仅使用 stl 算法实现此函数
- 三边化(2D)算法实现
- 扩展 Dijkstra 算法实现
- 使用霍夫曼树解码算法/实现
- 弗洛伊德-沃歇尔算法实现的问题
- OpenCV中的自适应算法实现
- 克鲁斯卡尔的算法实现
- 用于选择随机子集的通用算法实现
- 非递归 Kosaraju 的两次传递算法实现需要很长时间才能在大型数据集上执行