Автообрезка детали внутри блока переменного размера на изображениях
У меня есть много отсканированных изображений, в которых я хочу автоматически обрезать область внутри самого большого прямоугольника или прямоугольника. Это изображение показывает несколько примеров.
Последний - то, что я хотел бы, чтобы вывод был похож.
Поскольку входные изображения будут различаться по размеру и размеру, а также по количеству общих прямоугольников и их расположению, я подумал, что одним из подходов будет использование какого-либо обнаружения линий. С помощью этой информации мы можем обнаружить самый большой прямоугольник на изображении и использовать его как прямоугольник обрезки. Следующим шагом будет просто использовать imagemagick
с -trim
Вариант, я думаю.
Это правильный подход, и если да, то как я могу его реализовать?
Если нет, то какие другие методы хороши?
1 ответ
Я на самом деле нашел решение для этого самостоятельно. На веб-странице Фреда ImageMagick Script у него есть скрипт Innercrop. Я получаю хороший результат, используя его так:
#!/bin/bash
for f in $(ls *.jpeg); do
./innercrop -m crop -o white -p 1 -f 10% ${f} tmp_${f}
convert -bordercolor black -shave 5x5 -fuzz 30% -trim tmp_${f} -quality 100 +repage result_${f}
rm tmp_${f}
done