Opencv中的噪声消除

时间:2011-12-28 10:46:10

标签: c++ image-processing opencv noise-reduction

我目前正在开展一个需要在文档图像中去除噪音的项目。但我无法创建任何有用的代码来启动我的项目。感谢。

根据我所研究的,可以通过k-Fill算法去除在故障扫描仪中产生的噪声(特别是盐/胡椒噪声),但我无法理解该理论。

我在C ++和Codeblocks IDE中使用OpenCV。 我是图像处理领域的新手。 欢迎使用源代码或任何相关链接。

3 个答案:

答案 0 :(得分:3)

如果您不理解k-fill,请先尝试使用更简单的方法。

Here是一篇关于其性能的替代降噪算法的文章。

我建议你试试opening。 OpenCV文档对内置的形态学操作有a short explanation。您也可以使用示例代码进行实验。

答案 1 :(得分:0)

K-filter,不难理解。 占一个小区域(ea 3x3像素或5x5像素左右)。 现在计算一下“启用”' (ea dark)边框上的像素。 如果总计数大于n,则填充中心像素(这是(3x3网格)上的单个像素。并在整个图像上重复此操作。或者删除它,如果总边界低于n

答案 2 :(得分:0)

我不知道 k-fill 的效果如何;但是,

我解释一下;它可能对其他人有用: 我会用 Python 举一个例子,但 CPlusPlus 和 Java 应该是相似的(我不知道) 减少噪声的一种方法是中值滤波器算法,它肯定会降低图像质量。这种质量下降的程度取决于 ksize 参数。您必须为此参数选择一个较小的数字(例如 3);这使得质量不会太低。消除非常小的噪音。

import cv2
im = cv2.imread("noisy_flower.png")
im = cv2.medianBlur(im, ksize=5)
cv2.imwrite("clean_flower.png", im)

enter image description here

此模式适用于图像。对于照片中的文字,您可以创建一个蒙版并根据蒙版将文本复制回最终图像。这在很大程度上取决于您的情况。


Java 版本:

Imgproc.medianBlur(src, dst, 5);