Я хочу восстановить текст из следующего изображения как можно лучше. Сложность в том, что я хочу сделать это только с помощью морфологических операций над изображением
Я пытался использовать эрозию, расширение, открытие и закрытие, но результат не очень хороший.
Это вообще возможно?
image-processing
morphological-operations
Jackobsen
источник
источник
Ответы:
Если вы хотите добавить / вычесть и т. Д. Морфологически преобразованные изображения, вы можете подсчитать, сколько сигнальных пикселей находится вблизи каждого пикселя, и пороговое значение на основе этого числа.
Если затем вы свернете маску 3х3 с отверстием посередине, вы можете получить что-то вроде этого:
источник
Это довольно интересная проблема для решения! Попробуйте медианный фильтр . Смотрите ссылку здесь и здесь для более подробной информации.
Хотя я не приложил руки, чтобы смоделировать вашу проблему, это предложение. Мое инстинктивное чувство говорит о том, что оно может принести вам большую пользу, потому что, как известно, оно противодействует типу соли с перцем. В вашем случае изображения имеют дополнительные белые точки вокруг границы, которые будут либо преобразованы в полностью белый, либо в полностью черный в зависимости от того, какая сторона алфавита. Вот как это выглядит после медианной фильтрации:
источник
Если по какой-то причине вы ограничены использованием морфологических операций, то вы можете рассмотреть возможность использования «схемы голосования» для ориентированных операций закрытия.
Одна проблема с морфологическими операциями состоит в том, что они действительно не принимают во внимание направленность. Для центрального пикселя такая окрестность
на самом деле ничем не отличается от такого района
Это может вызвать проблемы, так как расширение и эрозия не имеют направленного смещения, когда вы, возможно, захотите, чтобы они были. Итак, одна вещь, которую вы можете сделать, - найти наиболее подходящую направленную смещенную морфологическую операцию, используя ядра, подобные этим:
Это было бы лучше с 5 x 5 ядрами, но я думаю, что идея достаточно ясна. По сути, идея ядра обнаружения углов немного растянута, так что это ядро обнаружения линейных сегментов. Вы также можете использовать его, чтобы найти наиболее подходящие кривые:
Очевидно, что это приводит к огромному количеству ядер, но если основная идея сработает, то обещает вам, что есть способ оптимизировать методику, чтобы найти наиболее подходящее ядро за один проход.
В любом случае, если вы используете несколько ядер и некоторую логику, каждая операция в (x, y) требует больше вычислений, чем традиционный морфологический шаг:
Размер ядра должен соответствовать размеру ввода. Вместо того, чтобы использовать ядро большего размера, вы можете использовать «распространенное» ядро, чтобы уменьшить количество операций. Следующее ядро - это просто ядро 3 x 3 с радиусом больше 1.
источник