Поиск пятна на изображении – математический способ?

Мне нужно найти предопределенную область на изображении и заменить ее другим изображением (просто вставив последнее). Предопределенное пятно будет областью прямоугольника с переменным размером, заполненной сплошным фоном ранее согласованного цвета.

Проконсультируйтесь о том, как мне это достичь?

Наверное, я могу найти первый пиксель указанного цвета, выполнив цикл и пройдя изображение по строке, пиксель за пикселем, но я чувствую, что это не самое эффективное решение. Поскольку место должно быть довольно большим, я также подумал обойти картину (см. Приложение ниже).

найти место

Поэтому мне нужна помощь в определении этих циклов. Я считаю, что для этого мне нужно будет использовать некоторые математические функции.

Например, если большая картина была квадратной, диагональная петля (желтая линия EF ) использовала бы упрощенную линейную функцию y=x ( y=1x+0 ), но вряд ли она была бы квадратной. Поэтому мне придется использовать расширенную полную линейную функцию y=kx+b где k будет иметь какое-то отношение к размеру прямоугольника (я думал, k=height/width ), а b будет равно 0. Таким образом, цикл будет выглядеть как:

 $k = 1080/1920; for ( $x=1920; $x>0; $x-- ) { $y = $k*$x; } 

Но это желтый, и самый простой, я думаю. Теперь, как определить другие? Пожалуйста помоги. благодаря

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

Вы можете использовать под-изображение ImageMagick:

 compare -verbose -dissimilarity-threshold 0.1 -subimage-search subimage.jpg bigimage.jpg 

Подробнее об этом здесь , здесь и здесь .

Он либо скажет вам «TooDissimilar», либо он сообщит вам о положении x, y на этом изображении.