Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Просмотр огромного изображения имеющего слои


Автор: Saidin 24.6.2010, 19:52
Доброго времени суток.
У меня стоит задача просмотра длинного изображения состоящего из слоёв. Каждый слой шириной до 1200 пикселей, переменной длиной (но обязательно очень длинная полоса), 2 байта на пиксель, 100 слоёв. Вся эта радость в сумме может весить до 64 ГБ.
Требуется:
    1) Общий обзор выбранного слоя ( обзорное изображение требуется сильно сжать )
    2) Детальный просмотр выбранного участка ( в каком-либо масштабе, либо в натуральную величину ).
    3) Переключение между слоями в первом и втором случае. ( в идеале динамично - пользователь перемещает ползунок - меняется слой )
Скажите пожалуйста в каком направлении копать? Как организовать файл изображения ( сейчас в качестве формата хранения выбран .tif )? Как организовать подгрузку изображения/слоя/?

Автор: VictorTsaregorodtsev 24.6.2010, 23:31
Файл, думаю, надо хранить в виде своего собственного бинарного формата. Сначала - некоторый заголовок, задающий число слоев и их длины в байтах (чтобы можно было быстро подсчитать адрес начала любого слоя в файле), далее - собственно содержимое слоев.
Данные - в виде тех же самых двух байтов на пиксел. Масштабирование делается с помощью явного задействования MMX-команд процессора. Эти команды как раз с байтовыми данными и работают. Надо будет просто считать средние значения для блоков в 2*2, 4*4, 8*8 пикселов (проще масштаб делать кратным двойке, чем какому-то совершенно произвольному числу процентов от размера изображения).
Подгружать данные из файла - с помощью проецируемых в память файлов (это виндовозная технология, для линукса м.б. такого нет). Там к нужному куску данных (с любого места из середины файла), длиной, правда, не более двух или четырех гиг в 32-разрядной винде (имеется в виду размер проецируемого куска файла, а не длина самого файла) можно получать доступ без организации специального выделенного буфера для чтения данных (как это происходит при обычных файловых операциях).
Вопчем, курите Вин32АПИ и ассемблер.

Автор: Saidin 25.6.2010, 20:38
Спасибо, есть много над чем курить...

Автор: Rpahut 26.6.2010, 00:04
Кури тогда ещё мипмаппинг и quadtree.
На здоровье.

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