Требуется добиться чего-то вроде этого: 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);
но будучи обработкой изображений newb, очевидно, я не знаю, что я делаю XD
исходное изображение:
после применения вышеуказанного:
Как это сделать правильно?
UPDATE: он стал намного ближе благодаря мецбургу, берку и Аврелию
Использование метода 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:
используя medianBlur перед otsu:
с использованием GaussianBlur перед otsu:
Кажется, что gaussian blur немного лучше, но я все еще играю с настройками. Если кто-нибудь может посоветовать, как улучшить изображение на экране компьютера, пожалуйста, сообщите нам об этом:) Еще одна вещь.. использование этого метода на изображении внутри верхнего звена дает ужасные результаты: (см. Здесь: http://imgur.com/vOZAaE0