Ищу формат высокой компресии

Boris
Гуру
Сообщения: 4115
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 406
Откуда: Париж

Ищу формат высокой компресии

Сообщение Boris » 17 мар 2016, 19:30

Знает ли кто-нибудь какой формат высокой компрессии а-ля JPEG, или ECW, или еще какой сохраняет в GDAL свойства NODATA? У меня, чем не сожму по-планшетные растры, NODATA по краям растра превращается в мешанину близких к NODATA значений, которые при просмотре не хотят становиться прозрачными.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 1851
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1161
Откуда: Казань

Re: Ищу формат высокой компресии

Сообщение Игорь Белов » 17 мар 2016, 20:19

Общее у форматов JPEG, ECW, MrSID то, что хранятся не значения пикселов, а коэффициенты разложений. Чем больше сжатие, тем дальше восстановленное изображение от оригинала, и тем гуще бахрома по краю.

Если речь идёт о планшетах, имеет смысл завершать обработку растров уменьшением количества цветов (глубины цвета) и сохранять со сжатием по алгоритму без потери качества (LZW, PACKBITS, DEFLATE, CCITT и др.). Тогда и бахромы не будет, и растры будут намного компактнее, чем полноцветные с суперсжатием. Всё же эти полиномы да вейвлеты придуманы не для планшетов, а для фотоснимков, там их и следует использовать.

Kandey
Активный участник
Сообщения: 165
Зарегистрирован: 24 фев 2012, 13:31
Репутация: 44

Re: Ищу формат высокой компресии

Сообщение Kandey » 17 мар 2016, 23:48

Попробуйте PNG. Я не знаю, годится ли он для ваших дел, но на файлах с большим кол-вом одноцветных плашек (карты) он даёт преимущество относительно жипега раза в 3 примерно.
ЗЫ. Естественно, без какого либо намёка на ухудшение качества.

Boris
Гуру
Сообщения: 4115
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 406
Откуда: Париж

Re: Ищу формат высокой компресии

Сообщение Boris » 18 мар 2016, 00:39

К сожалению, имеет место "отрыжка" бумажного производства - ортофото 0,25м передано в по планшетной нарезке с белыми краями в несжатом GeoTIFF. Про качество привязки и качество геотэгов, я без мата сказать не могу. А "таскать" GeoTIFF в 1/2 гигабайта по сети - это не работа, а сплошной перекур. А начинаешь сжимать - вылезают белые каря, которые совсем небелые.

Kandey
Активный участник
Сообщения: 165
Зарегистрирован: 24 фев 2012, 13:31
Репутация: 44

Re: Ищу формат высокой компресии

Сообщение Kandey » 18 мар 2016, 01:14

.
Последний раз редактировалось Kandey 21 мар 2016, 10:37, всего редактировалось 1 раз.

gamm
Гуру
Сообщения: 2985
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 696
Ваше звание: программист
Откуда: Казань

Re: Ищу формат высокой компресии

Сообщение gamm » 18 мар 2016, 08:01

Boris писал(а):К сожалению, имеет место "отрыжка" бумажного производства - ортофото 0,25м передано в по планшетной нарезке с белыми краями в несжатом GeoTIFF.
обрезать белые края, и перепаковать со сжатием. Если там RGB, то сделать BW256. Последние два пункта точно можно сделать пакетно.

Boris
Гуру
Сообщения: 4115
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 406
Откуда: Париж

Re: Ищу формат высокой компресии

Сообщение Boris » 18 мар 2016, 09:59

gamm писал(а):
Boris писал(а):К сожалению, имеет место "отрыжка" бумажного производства - ортофото 0,25м передано в по планшетной нарезке с белыми краями в несжатом GeoTIFF.
обрезать белые края, и перепаковать со сжатием. Если там RGB, то сделать BW256. Последние два пункта точно можно сделать пакетно.
Можно чуть подробней:
1. что значит обрезать края? это же хотя и сильно вырожденная, но трапеция, белые края либо присутствуют, либо удаляется часть информации снимка;
2. BW256 - это формат? цветовое пространство?
3. Это очень качественные многоцветные снимки. LZW сжимает их на 30% максимум. Если переходить к палитре, то пропадает 80% цветности.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 740
Ваше звание: Вредитель полей

Re: Ищу формат высокой компресии

Сообщение ericsson » 18 мар 2016, 21:28

Я бы воспользовался JPEG2000 lossless, предварительно выделив маску в отдельный канал (с битностью по желанию - от одного до восьми) и сжал бы его отдельно PNG или любым RLE-форматом. Еще более эффективной может быть векторизация маски.

Boris
Гуру
Сообщения: 4115
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 406
Откуда: Париж

Re: Ищу формат высокой компресии

Сообщение Boris » 18 мар 2016, 22:28

Спасибо, я понял ответ, но не понял многих деталей:
1. Я практически уверен, что мои последние эксперименты были с GDAL 2.0.2 и драйвером "JP2OpenJPEG --- JPEG2000 driver based on OpenJPEG library", и по моему он таки пограничные пиксели из белых превратил в набор около-белых.
2. Я пытался делать маску через GDALCALC, но не говорят про регулярное падение python'а, что делает технологию малопригодной для потоковой обработки, в маске, построенной таким образом остаются артефакты от ярких объектов, со значение 255 во всех 3-х каналах. Да, я знаю, что за это надо убивать, но мне изготовители ортофото не доступны, работа получена по "каналам обмена" - "вот вам от бюджетных затрат". Может есть еще какой метод построения масок?
3. Векторный слой маски то у меня как раз есть изначально - это же планшеты М1:10000, а как мне его учесть при обработке или просмотре. Я читал-читал описания форматов в GDAL, но ни в одном не увидел как "прикрутить" векторную маску.
4. Я пока не сталкивался с экранными ГИС, которые умеют учитывать растровую или векторную маску. Есть такие? ArcGIS?

gamm
Гуру
Сообщения: 2985
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 696
Ваше звание: программист
Откуда: Казань

Re: Ищу формат высокой компресии

Сообщение gamm » 18 мар 2016, 22:32

Boris писал(а):Это очень качественные многоцветные снимки. LZW сжимает их на 30% максимум. Если переходить к палитре, то пропадает 80% цветности.
тогда засада - я думал, что это обычная черно-белая аэрофотосъемка. Противоречивые параграфы, однако - а оригиналов нет, на квадраты нарезать? я бы сжал цвета до примерно 1000 - 4000 вариантов (если TIFF умеет с такими большими палитрами работать). Можно попробовать - в том же Сканексе сетку обучить 30х30, и посмотреть, что получится.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 740
Ваше звание: Вредитель полей

Re: Ищу формат высокой компресии

Сообщение ericsson » 18 мар 2016, 22:39

Во-первых, lossless JP2k жмет без потерь. Но я его не рекомендую. Потому что, на мой взгляд, маску просто имеет смысл хранить отдельно. Поскольку предлагать сумасшествие типа HDF, в котором можно пожать каналы отдельно (фотоизображение - JP2k, маску - как-то иначе) я не считаю целесообразным, предложил просто хранить маску отдельно. В этом случае - наплевать, что находится за пределами значащего изображения в том файле, который отвечает за саму картинку, так как они будут обрезаны на основании данных о маске, которые хранятся в отдельном файле.

Лично я для работы с растровыми масками (извлечение и т.п.) предпочитаю ImageMagick. Вероятно, другие средства тоже существуют.

Что касается конкретных советов по использованию такого формата - это уже второй вопрос (после выбора самого формата). Я вот из этой темы не уловил, как именно вы это собираетесь использовать - отвечал в контексте хранения.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Ищу формат высокой компресии

Сообщение Александр Мурый » 18 мар 2016, 22:45

Boris писал(а): 3. Векторный слой маски то у меня как раз есть изначально - это же планшеты М1:10000, а как мне его учесть при обработке или просмотре. Я читал-читал описания форматов в GDAL, но ни в одном не увидел как "прикрутить" векторную маску.
Векторную никак, вроде бы. Нужно перевести векторную маску в растр (<gdal_rasterize>), а затем с помощью <gdal_calc> применить растровую маску к растру. Примерно так:
gdal_calc -A raster.tif -B mask.tif --outfile=out.tif --calc="A*B" --NoDataValue=255
То же самое делается в GRASS, там <r.mapcalc> имеет на мой вкус более адекватный синтаксис выражений, чем <gdal_calc>.
Boris писал(а): 4. Я пока не сталкивался с экранными ГИС, которые умеют учитывать растровую или векторную маску. Есть такие? ArcGIS?
Например, в GRASS, если задана маска (ест-но, растровая), растры на экране отображаются с её учётом.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Ищу формат высокой компресии

Сообщение Александр Мурый » 18 мар 2016, 22:49

Boris писал(а):У меня, чем не сожму по-планшетные растры, NODATA по краям растра превращается в мешанину близких к NODATA значений, которые при просмотре не хотят становиться прозрачными.
Может быть, гдаловская утилита nearblack чем-то поможет?
Редактор материалов, модератор форума

Boris
Гуру
Сообщения: 4115
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 406
Откуда: Париж

Re: Ищу формат высокой компресии

Сообщение Boris » 19 мар 2016, 01:00

Коллеги, еще раз, у меня в исходных файлах, растры ИМЕЮТ зарамочную часть трапеции планшета, которая и так NODATA=255, я пытаюсь найти способ уменьшить размер файла, копируемого по сети, что бы иметь возможность использовать ортофото для визуального картографирования или дешифрирования. Маски я получать умею. Не очень ясно для чего, но умею, и более того, я их давно сделал. Честно не очень понимаю зачем. Для того, что бы сделать очевидное - слепить масштабный (или "плавающий") VRT и "порубить" его на мелкие, но полностью заполненные прямоугольники, а не трапеции как в исходных данных, они (маски) вроде как и не очень то нужны. Если бы не формат, который искажает эти края c NODATA, то набор из стандартных экранных ГИС и GDAL утилит, один цвет как прозрачный понимаю и так...
Проблема с масками в том, что раздолбаи, которые орто творили, использовали в каждом канале все 256 оттенков, а не 255 + NODATA, и эти маски имеют "разводы" из NODATA в значимой части растра.
Один RGB растр планшета 1:10000 0.25 см на пиксель >= 500Мб. Общий объем под 2Тб. Они только копируются - сутки.
а) каждый растр открывается в настольной ГИС по сети - умереть уснуть.
б) отображается на экране - сдвиг экрана вправо-влево - перерыв на кофе.
в) открываются 2 и больше - ГИС может и упасть.
г) проекция - родная российская, как у орто, так и у значительной части данных.
----
Nearblack - должен заменить пиксели - это понятно, но получается что отучить алгоритмы сжатия растра от замены NODATA на какой то определенной области - этого в GDAL либо нет, либо это не возможно из-за особенностей реализации самих алгоритмов сжатия? Я так понимаю, что JPEG, JPG2000, MrSID, ECW и может кто еще, все сжимают с потерей информации, и именно это порождает превращение белого в около-белое, чего мои настольные ГИС - не понимают.
---
Да, я знаю - один вопрос одна тема, но тут все уже перемешалось - растры-маски-вектора: кто-нибудь знает как в VRT добавляется слой маски и как он там прописывается, что бы хотя бы GDAL это понимал. Только через отдельное программирование?
Где вообще почитать про растры с масками в ГИС? Есть какой стандартный всеми признаваемый подход к ним в ГИС, или RGBA - это и есть наше все? Причем, судя по моему прочтению английских тестов, этот самый A - чаще всего ожидается в 1-м (или 0-м) канале, хотя говориться от 4-м.
У меня маска в CITT4 - ужимается до 300 Кб, если отдельным файлом. Если добавить в TIF, то ожидаемо файл полнеет на четверть.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 740
Ваше звание: Вредитель полей

Re: Ищу формат высокой компресии

Сообщение ericsson » 19 мар 2016, 03:22

Еще раз: жмите свои растры чем угодно, что вам подходит, и наплюйте на артефакты, которые вылезают вдоль краев. А потом используйте с этим растром маску, которая была сохранена отдельно и без потерь.

http://help.arcgis.com/en/arcgisdesktop ... 001t000000
http://www.gdal.org/gdalbuildvrt.html -addalpha

Ответить

Вернуться в «GDAL/OGR»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость