【发布时间】:2018-11-13 22:39:49
【问题描述】:
我实际上是在尝试识别文档中的盲文字符。我打算将盲文文档转换为纯文本。 我正在使用带有 Java 的 OpenCV 来进行图像处理。
首先,我导入了一个盲文文档的图像:
然后,我进行了一些图像处理,以便对原始图像进行二值化。我读过重要的步骤是:
- 将图像转换为灰度级
- 降低噪音
- 增强边缘对比度
- 二值化图像
这是我使用的代码:
public static void main(String args[]) {
Mat imgGrayscale = new Mat();
Mat image = Imgcodecs.imread("C:/Users/original_braille.jpg", 1);
Imgproc.cvtColor(image, imgGrayscale, Imgproc.COLOR_BGR2GRAY);
Imgproc.GaussianBlur(imgGrayscale, imgGrayscale, new Size(3, 3), 0);
Imgproc.adaptiveThreshold(imgGrayscale, imgGrayscale, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 5, 4);
Imgproc.medianBlur(imgGrayscale, imgGrayscale, 3);
Imgproc.threshold(imgGrayscale, imgGrayscale, 0, 255, Imgproc.THRESH_OTSU);
Imgproc.GaussianBlur(imgGrayscale, imgGrayscale, new Size(3, 3), 0);
Imgproc.threshold(imgGrayscale, imgGrayscale, 0, 255, Imgproc.THRESH_OTSU);
Imgcodecs.imwrite( "C:/Users/Jean-Baptiste/Desktop/Reconnaissance_de_formes/result.jpg", imgGrayscale );
}
这一步我得到了以下结果:
据我说,我们可以提高这张图片的质量以获得更好的效果,但我对不同的图片处理技术没有经验。我可以提高过滤器的质量吗?
之后,我想对图像进行分割,以检测该文档的不同字符。我想将文档的不同字符分开,以便将它们转换为文本。
例如我手动绘制了文档的分隔线:
但是我没有找到这一步的解决方案。是否有可能对 OpenCV 做同样的事情?
【问题讨论】:
-
要在图像上查找点,您可能会从这里得到一些想法:docs.opencv.org/3.3.1/d3/db4/tutorial_py_watershed.html
-
要找到分隔线,如果您的文档格式正确(即行间距均匀),您可以执行以下操作: 1- 从您的第一遍获取平均点大小 s 2- 获取与点 3 没有交集的大小为 s/2 的行组 - 递归合并彼此相邻的行
-
您好,感谢您的回复
-
我会尝试实现这种方法。我不是很有经验,但我希望我能做到。
标签: java opencv image-processing ocr image-segmentation