Всъщност заглавието на тази тема трябва да е "Защо JPEG-а трябва да бъде забранен." (по Венци Петров от вчерашната му лекция). Аз само ще разкажа за едни мои неволи и наблюдения, за да не си блъска някой главата като мен.
Първо започвам с калибрацията на монитора и цветовите ICC профили. Ако искате да имате точни цветове и относително правилно предаване на тъмните и светлите тоналности ви трябва: първо хубав монитор, и второ хардуерна калибрация на монитора. Аз ползвам един стар, но все още доста сериозен монитор (HP 2065) със S-IPS матрица, калибриран още преди години, след време повторно калибриран с по-скъп уред (разлика не забелязах). Преди време видях един доста неприятен факт - при снимки правени в по-тъмни условия, и съответно при по-високо ISO, след експорт от RAW към JPEG в конвертиращата програма, компресираният кадър (JPEG), ставаше малко по-контрастен и леко червенееше. Дълго време бях склонен да го неглижирам, и понеже снимките в тъмни условия не са ми чак толкова много, го преписах едва ли не на jpeg компресията и просто не увеличавах допълнително контраста при обработка. Търпението ми се изчерпа преди около два дни, когато обработвах по-голяма серия от снимки почти само на ISO 2500. Трябваше да се разровя за да разбера откъде идва несъответствието между това, което виждах при обработка и експортирания JPEG.
Малко повърхности думи за калибрацията и ICC профила. За калибрирането се ползва един уред наречен колориметър - закача се към компютъра и с подходящ софтуер измерва различните цветове. Накрая генерира файл наречен ICC профил (разширение *.icc), който се задава в цветовите настройки на всеки монитор. В този файл е "закодирана" информацията как да се "смесят" цветовете за да може картината да е цветово правилна. По правило калибрацията не може да се направи "на око", макар да има разни програмки, които заблуждават, че вършат тази работа - трябва си уред. Толкоз за профила - не съм вещ в техническото обяснение, но из нета е пълно с подробни обяснения.
Та какво се случваше при мен? Стандартно JPEG се експортира в цветово пространство sRGB. Навсякъде всички съветват - за уеб експортирайте в sRGB и не му мислете! Браузърите работят стандартно с него и прочее. Програмата с която обработвам (Lightroom) поддържа и зададено от потребителя цветово пространство (color space), освен стандартните sRGB, AdobeRGB и ProPhoto. Заредих в него icc профила (което по същество също е color space) на монитора и "воала" - jpeg-ът стана абсолютно същия на вид като при обработката. Значи оттам идвала неприятната разлика - моята картинка се експортира в sRGB скапвайки всички цветови настройки от профила на монитора! Изглежда този проблем е по-серизозен при калибрирани монитори. Ако мониторът ви така или иначе не е калибриран, то той в много случаи използва някакъв стандартен sRGB файл, и при експорт в sRGB отклонения не се забелязват. Пък и често мониторът не е способен да отдели малките разлики за да се забележат.
След малко по-задълбочено ровене се оказа, че EXIF-а на JPEG-а подържа custom ICC профил, който се кодира в него (просто увеличава незначително размера на снимката - около 4 килобайта). Информацията, обаче, дали да се използва кодиране на custom ICC профил се оказа противоречива - на повечето места препоръчваха използването на стандартния sRGB при експорт на картинки за Интернет, заради проблеми с браузъри или програми, които не могат да "четат" кодирания профил в EXIF-а. В такъв случай снимката се отваря в "суров" вид със значителни цветови отклонения. В крайна сметка тестовете ми показаха, че всички съвременни браузъри, програми, фото фостинги (като пикаса) четат ICC профила от JPEG-а и го прилагат приоритетно, дори и в Андроид програмката за снимки го чете и отваря правилно. Опитах се насила да намеря нещо, което не е съвместимо, но изглежда вече не са останали такива динозаври. Тук има много по-задълбочено описание, където се говори, че цветовите профили трябва да се използват малко по-умно. Аз съветвам при карибриран монитор JPEG-а да се еспортира с "вграден" (Embedded color profile) профил - рискът от грешно възпроизвеждане на картинката е минимален със съвременните браузъри и програми.
Ето как изглежда една такава снимка погледната през онлайн EXIF четец. Горе е картинката без прилагане на профила, а долу е след прилагане - както и ще се вижда навсякъде.
Отстрани четем също: WARNING: Embedded color profile: “(unrecognized embedded color profile 'HP2065_21.9.2013')” Some popular web browsers ignore embedded color profiles, meaning users of those browsers see the wrong colors for this image.
Пак повтарям, че това би било проблем преди години, но в момента изглежда вече не е. И така, внимавайте с цветовите профили и калибрациите, за да не се чудите защо снимките не изглеждат нормално. Особено при игра с icc профили. А доколкото знам при калибрацията на принтерите "забавленията" са още по-сериозни.
Следващата тема е за онлайн хостинги и публикуване на снимки в Интернет. Всъщност форумът по същество е нещо такова. JPEG форматът, който се ползва за публикуване в уеб, обаче е пълен с недостатъци. Вероятно в близко бъдеще ще има някакъв нов по-съвременен формат, но засега не се е чуло нищо сериозно. JPEG всъщност е "компресирана" картинка т.е. по специален алгоритъм част от информацията се отстранява в зависимост от нивото на компресия. Затова и понякога виждаме грозно "накъдрени" картинки. Аз се опитвам да намеря от години някаква платформа за споделяне на снимки, която максимално запазва качеството. От много отдавна ползвам Picasa на Google, но тя съдържа всички недостатци, които има и всеки един "фото хостинг" като Flickr, а дори и нашия форум. Всъщност всичко може да се синтезира в един ред - при публикуване на някаква снимка, която е с по-голям размер, софтуерът на сайта я преоразмерява в зависимост от нуждите, използвайки още веднъж JPEG компресия отгоре на основния файл. Потребителят няма контрол на нивото на компресия, което в повечето случаи е настроено доста консервативно, и влошава допълнително, и често видимо снимката.
Първия пример е форумът. Всяка снимка, която се публикува тук, ако е над 1024 писела по ширина се преоразмерява до 1024, прилагайки допълнителна JPEG компресия с ниво 85 (това се вижда в EXIF-а на всяка снимка "пипната" от форума: CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 85).
Втория пример е далеч по-съвършената Пикаса. В нея може да си качите произволно голяма снимка, която наистина се пази оригинална в пълния размер, но само ако я свалите (или я гледате в пълен формат). Ако ползвате за разглеждане, който и да е автоматичен размер (в зависимост от големината на монитора), то пикасата прилага компресия с неизвестно ниво, но от тестове мога да кажа, че размерът на jpeg файла свален от нея е два пъти по-малък от същия файл, експортиран директно от обработващата програма. Естествено липсата на детайл особено в еднообразните области е видима. Подобно е положението и във фейсбук. А аз просто искам файлът ми да изглежда по същия начин, както след експорта. Да, ама не - пикаса дори стигат още по-далеч предлагайки функция "автоматично подобряване", което прилага разни корекции на снимката - пълна щуротия за хора с малко по-сериозно отношение към фотографията...
Така че - внимателно и с фото хостингите и публикуването на снимки в Интернет. Резултатът може да е доста разочароващ в сравнение с монитора ви. Аз дълги години ползвах Пикаса, при която чрез иначе удобната хитринка с промяна на URL-а, си избирах и размер на снимката. В крайна сметка след проведените експерименти ще спра да го правя. Според мен единствения и най-добър начин за качване на снимки в уеб, е чрез публикуване на JPEG оригинала т.е. това, което сме "проявили" от обработващата програма. Ако се ползва още една компресия, или пък още по-зле - две, то тогава вече не може да бъдем сигурни в добрия вид на снимката. За да сме сигурни, че в уеб няма още една обработка, просто трябва да се ползва някакъв вид "заобикаляне" на софтуера - например във форума експортирайте винаги до 1024 пиксела. По този начин тай няма да ви "закача" снимките с още едно минаване на JPEG компресора. По подобен начин може да се процедира и с всички останали фото хостинги...
Първо започвам с калибрацията на монитора и цветовите ICC профили. Ако искате да имате точни цветове и относително правилно предаване на тъмните и светлите тоналности ви трябва: първо хубав монитор, и второ хардуерна калибрация на монитора. Аз ползвам един стар, но все още доста сериозен монитор (HP 2065) със S-IPS матрица, калибриран още преди години, след време повторно калибриран с по-скъп уред (разлика не забелязах). Преди време видях един доста неприятен факт - при снимки правени в по-тъмни условия, и съответно при по-високо ISO, след експорт от RAW към JPEG в конвертиращата програма, компресираният кадър (JPEG), ставаше малко по-контрастен и леко червенееше. Дълго време бях склонен да го неглижирам, и понеже снимките в тъмни условия не са ми чак толкова много, го преписах едва ли не на jpeg компресията и просто не увеличавах допълнително контраста при обработка. Търпението ми се изчерпа преди около два дни, когато обработвах по-голяма серия от снимки почти само на ISO 2500. Трябваше да се разровя за да разбера откъде идва несъответствието между това, което виждах при обработка и експортирания JPEG.
Малко повърхности думи за калибрацията и ICC профила. За калибрирането се ползва един уред наречен колориметър - закача се към компютъра и с подходящ софтуер измерва различните цветове. Накрая генерира файл наречен ICC профил (разширение *.icc), който се задава в цветовите настройки на всеки монитор. В този файл е "закодирана" информацията как да се "смесят" цветовете за да може картината да е цветово правилна. По правило калибрацията не може да се направи "на око", макар да има разни програмки, които заблуждават, че вършат тази работа - трябва си уред. Толкоз за профила - не съм вещ в техническото обяснение, но из нета е пълно с подробни обяснения.
Та какво се случваше при мен? Стандартно JPEG се експортира в цветово пространство sRGB. Навсякъде всички съветват - за уеб експортирайте в sRGB и не му мислете! Браузърите работят стандартно с него и прочее. Програмата с която обработвам (Lightroom) поддържа и зададено от потребителя цветово пространство (color space), освен стандартните sRGB, AdobeRGB и ProPhoto. Заредих в него icc профила (което по същество също е color space) на монитора и "воала" - jpeg-ът стана абсолютно същия на вид като при обработката. Значи оттам идвала неприятната разлика - моята картинка се експортира в sRGB скапвайки всички цветови настройки от профила на монитора! Изглежда този проблем е по-серизозен при калибрирани монитори. Ако мониторът ви така или иначе не е калибриран, то той в много случаи използва някакъв стандартен sRGB файл, и при експорт в sRGB отклонения не се забелязват. Пък и често мониторът не е способен да отдели малките разлики за да се забележат.
След малко по-задълбочено ровене се оказа, че EXIF-а на JPEG-а подържа custom ICC профил, който се кодира в него (просто увеличава незначително размера на снимката - около 4 килобайта). Информацията, обаче, дали да се използва кодиране на custom ICC профил се оказа противоречива - на повечето места препоръчваха използването на стандартния sRGB при експорт на картинки за Интернет, заради проблеми с браузъри или програми, които не могат да "четат" кодирания профил в EXIF-а. В такъв случай снимката се отваря в "суров" вид със значителни цветови отклонения. В крайна сметка тестовете ми показаха, че всички съвременни браузъри, програми, фото фостинги (като пикаса) четат ICC профила от JPEG-а и го прилагат приоритетно, дори и в Андроид програмката за снимки го чете и отваря правилно. Опитах се насила да намеря нещо, което не е съвместимо, но изглежда вече не са останали такива динозаври. Тук има много по-задълбочено описание, където се говори, че цветовите профили трябва да се използват малко по-умно. Аз съветвам при карибриран монитор JPEG-а да се еспортира с "вграден" (Embedded color profile) профил - рискът от грешно възпроизвеждане на картинката е минимален със съвременните браузъри и програми.
Ето как изглежда една такава снимка погледната през онлайн EXIF четец. Горе е картинката без прилагане на профила, а долу е след прилагане - както и ще се вижда навсякъде.
Отстрани четем също: WARNING: Embedded color profile: “(unrecognized embedded color profile 'HP2065_21.9.2013')” Some popular web browsers ignore embedded color profiles, meaning users of those browsers see the wrong colors for this image.
Пак повтарям, че това би било проблем преди години, но в момента изглежда вече не е. И така, внимавайте с цветовите профили и калибрациите, за да не се чудите защо снимките не изглеждат нормално. Особено при игра с icc профили. А доколкото знам при калибрацията на принтерите "забавленията" са още по-сериозни.
Следващата тема е за онлайн хостинги и публикуване на снимки в Интернет. Всъщност форумът по същество е нещо такова. JPEG форматът, който се ползва за публикуване в уеб, обаче е пълен с недостатъци. Вероятно в близко бъдеще ще има някакъв нов по-съвременен формат, но засега не се е чуло нищо сериозно. JPEG всъщност е "компресирана" картинка т.е. по специален алгоритъм част от информацията се отстранява в зависимост от нивото на компресия. Затова и понякога виждаме грозно "накъдрени" картинки. Аз се опитвам да намеря от години някаква платформа за споделяне на снимки, която максимално запазва качеството. От много отдавна ползвам Picasa на Google, но тя съдържа всички недостатци, които има и всеки един "фото хостинг" като Flickr, а дори и нашия форум. Всъщност всичко може да се синтезира в един ред - при публикуване на някаква снимка, която е с по-голям размер, софтуерът на сайта я преоразмерява в зависимост от нуждите, използвайки още веднъж JPEG компресия отгоре на основния файл. Потребителят няма контрол на нивото на компресия, което в повечето случаи е настроено доста консервативно, и влошава допълнително, и често видимо снимката.
Първия пример е форумът. Всяка снимка, която се публикува тук, ако е над 1024 писела по ширина се преоразмерява до 1024, прилагайки допълнителна JPEG компресия с ниво 85 (това се вижда в EXIF-а на всяка снимка "пипната" от форума: CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 85).
Втория пример е далеч по-съвършената Пикаса. В нея може да си качите произволно голяма снимка, която наистина се пази оригинална в пълния размер, но само ако я свалите (или я гледате в пълен формат). Ако ползвате за разглеждане, който и да е автоматичен размер (в зависимост от големината на монитора), то пикасата прилага компресия с неизвестно ниво, но от тестове мога да кажа, че размерът на jpeg файла свален от нея е два пъти по-малък от същия файл, експортиран директно от обработващата програма. Естествено липсата на детайл особено в еднообразните области е видима. Подобно е положението и във фейсбук. А аз просто искам файлът ми да изглежда по същия начин, както след експорта. Да, ама не - пикаса дори стигат още по-далеч предлагайки функция "автоматично подобряване", което прилага разни корекции на снимката - пълна щуротия за хора с малко по-сериозно отношение към фотографията...
Така че - внимателно и с фото хостингите и публикуването на снимки в Интернет. Резултатът може да е доста разочароващ в сравнение с монитора ви. Аз дълги години ползвах Пикаса, при която чрез иначе удобната хитринка с промяна на URL-а, си избирах и размер на снимката. В крайна сметка след проведените експерименти ще спра да го правя. Според мен единствения и най-добър начин за качване на снимки в уеб, е чрез публикуване на JPEG оригинала т.е. това, което сме "проявили" от обработващата програма. Ако се ползва още една компресия, или пък още по-зле - две, то тогава вече не може да бъдем сигурни в добрия вид на снимката. За да сме сигурни, че в уеб няма още една обработка, просто трябва да се ползва някакъв вид "заобикаляне" на софтуера - например във форума експортирайте винаги до 1024 пиксела. По този начин тай няма да ви "закача" снимките с още едно минаване на JPEG компресора. По подобен начин може да се процедира и с всички останали фото хостинги...
Коментар