Вот возможный конвейер для решения вашей проблемы. Основная идея состоит в том, чтобы идентифицировать текст, создать супер-блоб с некоторой морфологией, найти 4 угла этого супер-блоба и направить точки в перспективный «неумелый» (или выпрямительный, или любой другой wi sh для вызова этого метода коррекции перспективы).
Начните с преобразования изображения в оттенки серого и примените к нему адаптивный порог . Попробуйте методы Gaussian или Mean с параметрами, которые лучше соответствуют вашим тестам. Вот результат, который я получаю после игры со значениями для бита:
![enter image description here](https://i.stack.imgur.com/EGBff.png)
Теперь идея состоит в том, чтобы выделить только текст . Решение, которое я применил: получи самые большие пятна и вычти их из исходного изображения. Вам понадобится метод для расчета площади каждого двоичного двоичного объекта. Проверьте этот предыдущий пост, чтобы узнать, как его реализовать.
Это самые большие капли с изображения:
![enter image description here](https://i.stack.imgur.com/TlkP5.png)
Вычтите самые большие капли из исходного изображения. Вот результат:
![enter image description here](https://i.stack.imgur.com/wlhOs.png)
Как видите, текст почти изолирован. Позвольте мне очистить маленькие кусочки пикселей, применяя снова фильтр области. На этот раз для устранения мелких капель. Вот результат:
![enter image description here](https://i.stack.imgur.com/7eHKO.png)
Очень хорошо, некоторые символы теряются во время операции, но это нормально. Нам нужен хороший непрерывный блок текста , потому что мы собираемся расширить черт возьми. Я попытался применить прямоугольный angular структурирующий элемент с размерами 5 и 5 Op итераций. Удалите вывод с еще 5 итерациями после этого, так что в итоге вы получили этот красивый - изолированный - супер BLOB-объект, которым был текст:
![enter image description here](https://i.stack.imgur.com/2R94X.png)
Проверьте это. 3 маркера, которые вы видите, являются центроидами самых больших пятен, которые я обнаружил на изображении. Нам нужно найти 4 угла супер-капли . Самое большое пятно на изображении - это то, что мы ищем. Я решил повторно использовать фильтр области и искать пятно с наибольшей площадью. Это изолированный супер-объект:
![enter image description here](https://i.stack.imgur.com/aIlSz.png)
Отсюда операции довольно просты. Опять же, цель состоит в том, чтобы получить четыре угла этого шарика. Вы можете поместить прямоугольник или применить детектор краев с последующим преобразованием Хафа, чтобы получить прямые линии, которые следуют за гранями супер-капли.
Я решил применить Детектор краев Canny Edge с последующим преобразование Хафа . Конечно, я настроил преобразование, чтобы отфильтровать только возможные линии, которые меня интересуют - прямые линии выше определенной длины. Это результат обнаружения линии:
![enter image description here](https://i.stack.imgur.com/90GhG.png)
На изображении отображается дополнительная информация. Маркеры, которые вы видите (красный и желтый), являются начальными / конечными точками линий. Моя идея заключалась в том, чтобы найти связку этих строк и вычислить среднее этих точек. Идея состоит в том, что у нас есть группа точек, которые разделены на «квадранты». Если мы вычислим среднее значение начальной и конечной точек каждой строки для квадранта , мы получим 4 средних значения - и это приблизительные значения углов супер-капли!
Я применил K-означает для начальной и конечной точек линий, но вы очень хорошо предпочитаете другие методы обработки. Это нормально. Мои приблизительные углы обозначены большими красными O-маркерами на изображении выше.
Как я и предлагал, попробуйте задать фиксированную выходную позицию для этих углов. Я определил красный прямоугольник для углов, которые будут отображаться. Для этого теста я в значительной степени отрегулировал прямоугольник вручную. Коррекция перспективы дает такой результат:
![enter image description here](https://i.stack.imgur.com/QM1RX.png)
Некоторые предложения:
В зависимости от разрешения входного сигнала изображение, вы можете уменьшить его для более быстрого и лучшего результата, так как ваш вклад кажется достаточно большим для этого.
Tune Hough Line Detection для получения более крупных линий. Моя текущая конфигурация обнаруживает несколько меньших линий, и это может помешать приближению угла.
Я выбрал несколько надежный метод для вычисления 4 углов супер-объекта, который я лично использовал ранее ( Обнаружение кромки + Hough Line Transform + K-означает), но какую цепочку обработки вы выбрали для получения данных, полностью зависит от вас!