Opencv 中的去噪
Posted
技术标签:
【中文标题】Opencv 中的去噪【英文标题】:Noise Removal in Opencv 【发布时间】:2012-01-29 02:29:44 【问题描述】:我目前正在从事一个需要去除文档图像中的噪点的项目。但我无法创建任何有用的代码来启动我的项目。谢谢。
根据我的研究,在故障扫描仪中产生的噪声(特别是盐/胡椒噪声)可以通过 k-Fill 算法去除,但我无法理解该理论。
我在 C++ 和 Codeblocks IDE 中使用 OpenCV。 我是图像处理领域的新手。 源代码或任何相关链接表示赞赏。
【问题讨论】:
中值滤波器很简单,可以很好地对抗椒盐噪声。 但是在我使用中值滤镜之后,图像看起来很模糊。我想它不适用于具有小字体的文档图像。 【参考方案1】:我不知道 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)
此模式适用于图像。对于照片中的文字,您可以创建蒙版,然后根据蒙版将文本复制回最终图像。这在很大程度上取决于您的情况。
Java 版本:
Imgproc.medianBlur(src, dst, 5);
【讨论】:
【参考方案2】:K-filter,是不是很难理解。 取一个小区域(ea 3x3 像素或 5x5 像素左右)。 现在计算边框上的“启用”(ea 暗)像素。 如果总计数大于 n,则填充中心像素(这是(3x3 网格)上的单个像素。并在整个图像上重复此操作。或者删除它,如果总边框低于 n
【讨论】:
【参考方案3】:如果您不了解 k-fill,请先尝试使用更简单的方法。
Here 是一篇替代降噪算法及其性能的文章。
我建议你试试opening。 OpenCV 文档有 a short explanation 内置形态学操作。您也可以使用示例代码进行实验。
【讨论】:
感谢您的信息。我想我必须研究 OpenCV 中的那些形态函数。也许他们可以帮到我很多。 先生,我已经尝试过打开和关闭的形态,但它只能去除椒盐噪声。当我尝试使用包含边缘噪声的影印图像时它失败了。你能推荐其他技术吗? 您可以使用结构元素的大小和形式以及使用形态运算符的迭代次数。你也可以试试 Kos 建议的中值过滤器。以上是关于Opencv 中的去噪的主要内容,如果未能解决你的问题,请参考以下文章