Гига-фотография млечного пути в разрешении 108199*81503 или очередная история «65500*65500 хватит всем»
Пару дней назад была новость о том, что Астрономы Европейской южной обсерватории сшили мозаику центра нашей галактики (млечного пути) с разрешением 108199x81503 в ИК диапазоне (в ИК меньше рассеяние света на межзвездном газе и пыли - звезд видно намного больше).К сожалению, результат они выложили лишь в виде онлайн-смотрелки и .psb-файла, размером 24Гб который можно открыть только фотошопом, при этом сам фотошоп отказывался экспортировать его в любой другой формат кроме опять же psb, tiff(само собой неудачно, там размер файла не может превышать 2/4Гб) и RAW. А хотелось что-нибудь, из чего было бы удобно вырезать интересный кусочек на wallpaper...
Забегая вперед, сразу покажу результаты:
1920x1200 2560x1600 2880x1800
1920x1200 2560x1600 2880x1800
Драматические детали опустим, лишь факты о JPEG и ImageMagick
Такие большие картинки получается обрабатывать только x64 версией ImageMagick, причем крайне желательно использовать Q8 версию, а не Q16 (с повышенной точностью внутреннего представления) : Q8 отжирала примерно 45Гб памяти во время работы, а Q16 - ~72Гб, что очень плохо сказывалось на скорости.JPEG исторически не может иметь размер выше 65535x65535, но во многих библиотеках ограничение 65500x65500 (когда-то это действительно казалось недостижимым размером...).
Для того, чтобы не падало сохранение в JPEG нужно отключать оптимизацию Huffman-таблиц (видимо происходит переполнение счетчиков частоты кодов) : -define jpeg:optimize-coding=false
Также удалось сохранить полноразмерное изображение в PNG, но его вообще ничто не смогло открыть + размер получился 22Гб, так что пришлось остановиться на JPEG.
Конечные команды получаются такие:
convert -size 108199x81503 -depth 8 RGB:eso1242a.data -scale 50% -quality 95 -define jpeg:optimize-coding=false eso1242a.jpg
convert -size 108199x81503 -depth 8 RGB:eso1242a.data -crop "65500x65500+22500-0!" -gravity North -quality 95 -define jpeg:optimize-coding=false eso1242a_sq.jpg
Время работы - порядка 30 минут на 1 операцию.Вот тут я понял, что 32Гб памяти - не хватит всем :-)
Ссылки & credits
Credit:ESO/VVV ConsortiumReleased under the Creative Commons Attribution 3.0 Unported license
Acknowledgement: Ignacio Toledo, Martin Kornmesser
http://www.vista.ac.uk/
http://www.stfc.ac.uk/News%20and%20Events/42932.aspx
http://www.eso.org/public/images/eso1242a/zoomable/