如何使用OpenCV对图像进行处理,使文本变得清晰? | 您所在的位置:网站首页 › 图片字不清晰怎么处理 › 如何使用OpenCV对图像进行处理,使文本变得清晰? |
想要实现这样的东西:http://www.leptonica.com/binarization.html 在搜索解决方案时,大多数答案都是通用指令,例如建议查看自适应滤波器、高斯模糊、膨胀和侵蚀,但它们都没有提供任何示例代码(因此可以玩弄这些值)。 我知道不同的图像需要不同的方法和值来达到最佳的清晰度,但我只需要一些通用的滤波器,以便在对图像进行任何OCR之前,图像至少比原始图像更清晰,噪音更少。 这就是我到目前为止所尝试的.. Mat imageMat = new Mat(); Utils.bitmapToMat(photo, imageMat); Imgproc.cvtColor(imageMat, imageMat, Imgproc.COLOR_BGR2GRAY); Imgproc.GaussianBlur(imageMat, imageMat, new Size(3, 3), 0); Imgproc.adaptiveThreshold(imageMat, imageMat, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 5, 4);但是作为一个图像处理新手,很明显我不知道我在做什么XD 原图: 应用上述内容后: 怎样做才是正确的呢? 更新:多亏了metsburg,berak和Aurelius,让它更接近了 使用medianBlur方法,因为cvSmooth和CV_MEDIAN已被弃用,并替换为medianBlur: Imgproc.medianBlur(imageMat, imageMat, 3); Imgproc.threshold(imageMat, imageMat, 0, 255, Imgproc.THRESH_OTSU);结果: 使用返回的GaussianBlur方法,结果实际上稍好一些: Imgproc.GaussianBlur(imageMat, imageMat, new Size(3, 3), 0); Imgproc.threshold(imageMat, imageMat, 0, 255, Imgproc.THRESH_OTSU);结果: 对于这张图片,差别并不明显,所以我尝试了另一张图片,这是从电脑屏幕上拍摄的照片。计算机屏幕会产生大量的噪声(波浪线),因此很难消除这些噪声。 示例原图: 直接应用otsu: 在otsu之前使用medianBlur: 在otsu之前使用GaussianBlur: 看起来高斯模糊稍微好一点,但是我仍然在玩设置。如果有人能建议如何进一步改进电脑屏幕照片,请让我们知道:)还有一件事。在顶部链接内的图像上使用此方法会产生可怕的结果:(请参阅此处:http://imgur.com/vOZAaE0 |
CopyRight 2018-2019 实验室设备网 版权所有 |