Как заменить белый прямоугольник в изображении с помощью ImageMagick?

Обзор:

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

введите описание изображения здесь

Мой подход:

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

введите описание изображения здесь

Проблема:

Теперь я хотел бы получить расстояние или координаты прямоугольника во втором изображении, чтобы я мог использовать эти координаты для наложения нового изображения поверх первого (исходного изображения) здесь.

У меня есть небольшая идея использовать алгоритм морфологии изображения Чебышева ImageMagick, но не знаю, как я могу это сделать.

Я думаю, что вы можете найти форму довольно точно с помощью простого порога, например:

 convert image.jpg -threshold 90% result.jpg 

введите описание изображения здесь

и вы можете затем сделать обнаружение края Canny следующим образом:

 convert image.jpg -threshold 90% -canny 0x1+10%+30% result.jpg 

введите описание изображения здесь

Следующие вещи, на которые я бы посмотрел, – это использование функции -trim для определения координат рамки обрезки следующим образом:

 convert result.jpg -format "%@" info: 320x248+152+40 

Я отметил это красным цветом ниже.

введите описание изображения здесь

Если вы действительно хотите сделать обрезку, используйте это:

 convert result.jpg -trim result.jpg 

введите описание изображения здесь

А также угол поворота

 convert result.jpg -deskew 40 -format "%[deskew:angle]" info: -0.111906 

Обнаружение линии Hough также может быть эффективным для вас следующим образом:

 convert image.jpg -threshold 90% -canny 0x1+10%+30% \ \( +clone -background none \ -fill red -stroke red -strokewidth 2 \ -hough-lines 5x5+80 -write lines.mvg \ \) -composite hough.png 

введите описание изображения здесь

И файл lines.mvg содержит 4 строки, которые вы ищете

 # Hough line transform: 5x5+80 viewbox 0 0 640 360 line 449.259,0 474.432,360 # 90 line 0,72.5604 640,27.8072 # 143 line 0,293.098 640,248.344 # 187 line 153.538,0 178.712,360 # 153 

Будучи немного ленивым, мне не хотелось разрешать пересечения этих строк, поэтому я подумал, что дам ImageMagick тоже это сделать – используя Morphology для поиска Line Junctions следующим образом:

 convert image.jpg -threshold 90% -canny 0x1+10%+30% \ \( +clone -background none -fill red -stroke red -hough-lines 5x5+80 \) \ -composite -fuzz 50% -fill black -opaque white \ -morphology HMT LineJunctions hough.png 

введите описание изображения здесь