Подизображение изображения найти и заменить - PullRequest
2 голосов
/ 01 ноября 2010

Как я могу обнаружить известное изображение или шаблон в изображении, чтобы я мог заменить его своим собственным текстом?

Вариант ввода 1 (определить aaa и bbb отдельно):

aaa and bbb are 'slots' where I will place my text

Вариант ввода 2 (определение красного и синего значений отдельно): Here I use colored rectangles to mark the spaces to fill in

Выход:

what results from the replacement

1 Ответ

3 голосов
/ 01 ноября 2010

Рабочий код

Я покажу вам код и результаты, запущенные в Mathematica , используя ваш вариант 2.

Сначала мы прочитаем изображение

 m = Import@"C:\\imagereplace.png"  

Затем мы разделяем каналы RGB

 ColorSeparate[m]

Получение

alt text

Далее мы коррелируем изображение красного канала (один справа) с Box Matrix, сохраняя только прямоугольную форму.И преобразовать результат в черно-белое изображение.

Binarize@ImageCorrelate[m1[[3]], BoxMatrix[3]] ;

Получение полноразмерного изображения, но содержащего только черный прямоугольник.

Теперь мы находим края прямоугольника (просто петля).

Имея размер и координаты прямоугольников, мы создаем растровое изображение текста, соответствующее обнаруженному размеру, получая:

r1 = Binarize@Rasterize["My Text", RasterSize -> {jmax-jmin + 1, imax-imin + 1}, 
                                    ImageSize -> {jmax-jmin + 1, imax- imin + 1}]

alt text

Теперь мы заменим блок данных новым.Получение:

alt text

Я не буду делать Голубой канал, так как это одно и то же.

HTH !!

Примечание. Корреляция изображений - единственный используемый прием.Остальное код как обычно. Здесь вы можете найти основы корреляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...