Какой есть алгоритм для автоматической компоновки нескольких изображений в одно?

Есть куча небольших изображений разного размера и с разным соотношением сторон. Нужно из них, как из мозаики, составить одно большое изображение с заданными размерами.

Нужна программа для этого. Подскажите, есть ли такие программы (язык не важен)? Интересуют исходники, а не сама утилита.

Или, может, кто-нибудь подскажет, как этот процесс называется? Я даже не знаю, что у гугла спрашивать.

Буду благодарен за любые рекомендации.
  • Вопрос задан
  • 3671 просмотр
Пригласить эксперта
Ответы на вопрос 2
icelaba
@icelaba
Знаю и умею всё
В составе imagemagik есть прекрасная утилита montage которая позволяет как угодно объединять картинки,
примеры использования тут

Несмотря на кажущуюся простоту - сгенерить можно что угодно, просто объединяя вызовы montage по принципу - вывод одной используется как ввод другой.

Я для генерации составных картинок использую свой скрипт поверх montage который запускает shell команды, или если задача одноразовая то генерю shell script где внутри все выглядит как то так

montage ./images/0.jpg[x${HALF_HEIGHT}] ./images/1.jpg[x${HALF_HEIGHT}] ./images/2.jpg[x${HALF_HEIGHT}] -geometry "${THRD_WIDTH}x<" -gravity center -crop ${THRD_WIDTH}x${HALF_HEIGHT}+0+0 -geometry "+${BORDER}+${BORDER}" ./out/4.html
Ответ написан
Если интересует алгоритмический аспект, то :
1) Это задача об упаковке двумерного ящика (2-dimension bin packing).
2) В общем случае - вычислительная сложность велика, поэтому решают эвристиками
3) Идеально решить не получится - останутся "зазоры"
4) В-общем, выбираете какую-нибудь эвристику (могу предложить пару), а затем немного "растаскиваете" картинки, чтобы вокруг них были равномерные поля, и неразмеченная область не сильно бросалась в глаза.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы