Обзор:
Первое изображение – мое оригинальное изображение. Здесь я хочу заменить белый прямоугольник, показанный другим изображением.
Мой подход:
Я создал изображение маски с помощью 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