Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Оптимальный алгоритм объединения изображений


Автор: vikaz 21.8.2013, 07:37
Всем привет!
Ребята, подскажите, кто-нибудь находил алгоритм/библиотеку, которая позволяет объединять несколько разнокалиберных картинок в одно изображение так, чтобы результирующее изображение было наименьшего размера.

Заранее спасибо!

Автор: ksili 21.8.2013, 07:58
Сам не знаешь, чего тебе надо. 
Наименьшего размера - это наименьшей площади? Ну так несколько картинок как ни прикладывай - суммарная их площадь не изменится.

Автор: vikaz 21.8.2013, 08:07
Да, наименьшей площади. С чего вы решили, что не измениться?

Добавлено @ 08:18
Вот Вам для примера две картинки, вы хотите сказать, что площадь у них будет одинаковой!? smile

Изображение #1
user posted image

Изображение #2
user posted image

ЗЫ. Если Вы докажите, что они равны, я соглашусь, что я не знаю, чего сам хочу!

Автор: gambit 21.8.2013, 10:24
Сортируешь картинки по размеру и начиная с самой большой начинаешь вставлять в первое свободное место. В итоге сначала большие займут площадь, потом мелочь забьет промежутки.

Задача про атласы?

Автор: ksili 21.8.2013, 10:26
Вы предлагаете задачу оптимизации, при этом не озвучиваете сам критерий оптимизации. 
Как определить, что алгоритм оптимальный?
У картинки как минимум 2 характеристики размера - высота и ширина. Как определить, что одна картинка меньше другой?

Поясните хотя бы на примере тех картинок, что выше. Какая из них оптимальнее? Почему?

Автор: vikaz 21.8.2013, 11:06
Цитата

Сортируешь картинки по размеру и начиная с самой большой начинаешь вставлять в первое свободное место. В итоге сначала большие займут площадь, потом мелочь забьет промежутки.


К сожалению на математическом не учился (а может и к счастью), но пришел примерно к такому же алгоритму. Единственное, что просто вставить в свободное место не подойдет, логика будет сложнее.

Цитата

Задача про атласы? 

ХЗ, мне понадобилось для одного внутреннего проекта. Думал, что, явно, подобную задачу уже решали и не один раз, может кто оформил эту логику как библиотеку или класс.


Цитата

Вы предлагаете задачу оптимизации, при этом не озвучиваете сам критерий оптимизации. 
Как определить, что алгоритм оптимальный?
У картинки как минимум 2 характеристики размера - высота и ширина. Как определить, что одна картинка меньше другой?
Поясните хотя бы на примере тех картинок, что выше. Какая из них оптимальнее? Почему?


Извини камрад, что не полностью описал то что мне нужно. В этом Вы правы, дал мало инфы.
Задача стоит следующая:
Есть папка в которой лежат изображения. 
Нужно создать файл в котором будут лежать все эти картинки, но площадь прямоугольника (результирующего изображения), будет минимальной.
Если посмотреть на те две картинки, которые я привел выше, оптимальнее будет первая. 
Это можно выяснить так:
1. Площадь описанного прямоугольника в первом случае будет меньше чем во втором случае. (просто перемножив высоту на ширину)
2. Визуально более оптимальное решение можно увидеть по пустому месту. В первом случае его нет, а во втором, есть большая пустая площадь в правом нижнем углу.


Автор: jonie 28.8.2013, 15:09
гуглите "задачу укладки ранца" - это она в чистом виде.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)