android cvsmooth对应方法,android – 如何使用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);

结果:

使用高斯布尔方法,结果实际上稍微好一些:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值