Рабочий код
Я покажу вам код и результаты, запущенные в Mathematica , используя ваш вариант 2.
Сначала мы прочитаем изображение
m = Import@"C:\\imagereplace.png"
Затем мы разделяем каналы RGB
ColorSeparate[m]
Получение
Далее мы коррелируем изображение красного канала (один справа) с 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}]
Теперь мы заменим блок данных новым.Получение:
Я не буду делать Голубой канал, так как это одно и то же.
HTH !!
Примечание. Корреляция изображений - единственный используемый прием.Остальное код как обычно. Здесь вы можете найти основы корреляции.