Байеровский муар
Об анализе RAW-конверторов
Существующее на сегодня многообразие RAW-конверторов и используемых в них алгоритмов порождает проблему выбора: какие конверторы лучше (и для чего). На интернет-форумах распространена очевидная методология: берется одно (или несколько) изображений, обрабатывается разными конверторами/алгоритмами/настройками и визуально сравнивается. Зачастую, результат выглядит так для изображения P лучше алгоритм Q, а для изображения A алгоритм Z с включенной галкой f+ .
Более того, анализ в терминах хуже/лучше просто неправилен, правильная постановка звучит как ближе/дальше от исходного изображения.
Проблема заключается в том, что мы имеем дело со сложной системой, включающей в себя
- Снимаемый объект и его освещение
- Оптический тракт камеры с аберрациями объектива и светорассеянием внутри камеры.
- Сенсор со всеми его конструктивными особенностями: противомуарным фильтром, цветными байеровскими фильтрами, микролинзами и так далее.
- Внутрикамерный процессинг, как аналоговый, так и цифровой.
- А, да, изучаемый RAW-конвертор тоже.
Даже если правильное исходное изображение известно (снималась синтетическая мишень с известными характеристиками), вклад каждой из перечисленных составляющих остается неясным.
Вместе с тем, никто не мешает исключить из процесса фотокамеру (и снимаемую сцену) и изучать только RAW-конвертор, подавая ему на вход специально сгенерированные данные. Эти данные не обязаны быть правдоподобными (т.е. такими, какие возможно получить с реальной камеры), многие интересные особенности алгоритмов конверторов лучше видны на нереальных данных.
Устойчивость к муару
В процессе изучения возможностей и подходов, родилась первая мишень, ставящая алгоритмы демозаики (байеровской интерполяции) в совершенно невыносимые условия.
Мишень состоит из линий шириной в 1 пиксел, расходящихся из общего центра и образующих круг:
- В правой половине круга радиусы проведены через два градуса, в левой через один градус.
- В верхней половине радиусы проведены с использованием antialiasing (средствами ImageMagick), в нижней без antialiasing.
Из мишени сформирован DNG-файл, таким образом что:
- Уровень белого на 2 стопа ниже уровня насыщения.
- Уровень черного на 4 стопа ниже уровня черного.
- Цветовая матрица диагональная с единичными коэффициентами.
- DNG построен без противомуарного фильтра т.е. просто копированием значений соответствующего цветового канала исходного TIFF-файла в DNG. Из реальной цифровой фотокамеры получить такие данные практически невозможно: даже если противомуарного фильтра нет (цифровой задник), какое-то рассеяние обязательно даст объектив. Впрочем, более реальные (размытые) мишени мы ниже тоже рассмотрим.
К этому DNG-файлу были последовательно применены все 12 методов интерполяции, имеющиеся в LibRaw 0.12, результаты сведены в таблицу ниже (все картинки кликабельны и открываются в полный размер 1000x1000). Картинки в табличке сделаны такими маленькими намеренно, чтобы читатели смотрели полный размер, а не превьюшки, ибо алгоритм формирования превью сам подвержен муару. Для экономии трафика, полноразмерные картинки приведены к 8-битному виду, видимых глазом отличий с исходным 24-битным вариантом практически нет
Как мы видим, все рассмотренные методы демозаики порождают обильный цветной муар (что неудивительно для такой мишени), включая и half (биннинг 4 пикселов в 1). Ни один из методов не породил удовлетворительной картинки, однако у трех из 11 методов картинка ощутимо лучше прочих: AMaZE, LMMSE и AHD (немодифицированный) дали наименьший муар (перечислены в порядке ухудшения качества).
Идентификация алгоритмов
Интерференционные картинки, выдаваемые алгоритмами демозаики на рассмотренной мишени настолько показательны, что возникает непреодолимое желание идентифицировать алгоритмы, используемые в коммерческих программах. В этих целях были опробованы:
- Adobe Camera Raw 6.3
- Capture One 5.2.1
- HDR PhotoStudio 2.15.42
Использовались настройки по умолчанию с единственным исключением: для Camera One пришлось отключить sharpening, слишком уж он сильно он работает на такой контрастной мишени.
Для двух из них методика сработала:
Adobe ACR 6.3 Adobe Camera Raw использует алгоритм, необычайно похожий по результатам на modified AHD by Paul Lee . Конечно, с точностью до яркости, ACR несколько осветлила изображение.
HDR Photostudio
Результаты работы HDR PhotoStudio до крайности похожи (с учетом мельчайших особенностей) на отсутствие "настоящей" демозаики, это полный аналог dcraw -q 0 (bilinear interpolation традиционно не считается "настоящей интерполяцией").
Capture One 5.2.1
Алгоритм Capture One идентифицировать не удалось, пятно цвета magenta на 10:30 (северо-запад) ни в одном из алгоритмов LibRaw не встречено.
Ближе к реальности
Если сформировать DNG из размытой мишени (размытие делалось ImageMagick, метод Gaussian Blur, sigma=1.0), то задача становится куда ближе к фотографической реальности.
Такая мишень ТОЖЕ имеет цветной муар для всех 12 методов интерполяции, имеющихся в LibRaw. Дабы не загромождать статью, покажу 5 из них (три самых лучших из предыдущего теста, DCB и half который почему-то считается наиболее защищенным от артефактов интерполяции).
Half interpolation
|
AHD-интерполяция (алгоритм dcraw)
|
DCB-интерполяция
|
LMMSE-интерполяция
|
AMaZE-интерполяция
|
Заключение
Первые же эксперименты с подсовыванием RAW-конверторам искусственно сгенерированной мишени доставили автору истинное наслаждение. Эксперименты будут продолжены, авторы конверторов трепещите.
А, да, поклонникам пиксельной резкости хочу отдельно напомнить, что если ваша камера/объектив вдруг умеют создавать на матрице контрастный объект пиксельного размера, то какого он будет цвета (и будет ли этот цвет хотя бы отдаленно напоминать исходный) предсказать невозможно.
Для самостоятельных упражнений
- porcupine.dng - неразмытая мишень.
- porcupine-blur.dng - размытая мишень.

















Comments
Очень интересный тест! Пусть синтетический и далёкий от реального изображения. Зато он позволяет анализировать и сравнивать разные методы интерполяции. На реальном изображении это свалится в сплошную субъективщину.
Особенно понравились результаты тестов проприетарных конвертеров. До этого я слышал мнения фотографов о том, что Capture One предпочтителен для макро, так как даёт большую резкость. Вы реально показали, что у него свой собственный метод интерполяции. И очень не плохой.
Все способы дают цветной муар. Естественно. Но интересно, что как у Capture One, так и у метода AMaZE минимальна окраска расходящихся лучиков. Да, есть у Capture One пурпурное пятно (у других не лучше, но не так заметно потому, что у других пурпур зелёным разбавлен), зато отдельные полосочки окрашены меньше. Получается, что он даёт сбой на достаточно протяженных участках с периодической структурой (пурпурное пятно), но лучше отрабатывает нерегулярные детали. Это значит, что и в случае с мелкой галькой на берегу (там нет регулярной периодической структуры) он справится лучше. Это же в большой степени относится и к интерполяции AMaZE.
У меня несколько посторонний вопрос возник - а какова технология изготовления DNG? Есть некая тулза или просто производилась "пересадка данных" в некий существующий валидный DNG-файл?
Есть Адобовский DNG SDK (безумно странный), который позволяет писать DNG. И читать, естественно, тоже.
Бесплатный, с хорошей лицензией, в исходниках: http://www.adobe.com/support/downloads/dng/dng_sdk.html
Что я про него думаю - я два раза (почти матерно) выражал в блоге:
http://twitter.lexa.ru/2010/11/25/dng.html
http://twitter.lexa.ru/2010/11/26/dng_sdk_2.html
Но вообще, пользоваться можно.
Все же подобные "издевательства" над алгоритмами несколько "нечестные" - мы пытаемся алгоритмам подсунуть данные на которые он даже и не должны быть расчитаны. Ведь математика говорит что нельзя с байера требовать попиксельной резкости и контраста. Мы же не пытаемся цифровому аудиотракту с частотой дискретизации АЦП 44кГц скармливать частоты выше 22кГц? Причем не пытаемся той же причине, по которой на байеровскую матрицу (равно как и фовеон) не должна попадать картинка не прошедшая через ФНЧ - АА фильтр.
Причем непонятно как судить по результатам о качестве алгоритма. Вот например то, что у AMaZE меньше цветных артефактов говорит о том что он точнее восстаналивает яркостную компоненту или о том что он успешнее "портит" цветовую? И что важнее?
Во-первых, подать в стереоусилитель два разночастотных ВЧ-сигнала в два канала и проверить интермодуляцию - это первейшее дело. Это что касается аналогии с аудиоаппаратурой.
Во-вторых, далеко не все камеры имеют anti-alias фильтр. Не имеют его многие (все?) среднеформатные задники и некоторые "узкоформатные" камеры (Кодаки, Лейки). И картинка с 13-Mp Кодака по уровню детализации близка к 20Mp-камере с фильтром, ценой легкости возникновения муара.
В-третьих, муар получается и на размытой картинке.
Упс, первый пост и сюда таки запостился, прошу прощения за дублирование оного блоге.
Насчет двух сигналов и интермодуляции - это все же немного не то. При проверке
интермодуляционных искажений частоты сигналов все же располагаются до той самой
частоты Найквиста. А я говорил о том, что а аудио старательно избегают диапазона
выше этой частоты.
А вот в случае с изображением почему-то мало того, что мы ищем детали с пространственной
частотой равной той самой частоте Найквиста, которая кстати, в случае байера еще и
по сути различна для цветовой и яркостной составляющей (и для R и G,B тоже), так еще
и убираем АА-фильтр совсем и потом боремся с последствиями.
Оно конечно понятно - на нерегулярных структурах муара вроде и не заметно, но... детализации
там получается несколько "условная", т.е. выглядит это как детали, а на практике это то,
что додумал алгоритм интерполяции.
Мне когда-то попдался хороший пример на котором показан фрагмент кадра с мелкой
серой галькой (на кадре она получилось как размером в несколько пикселей каждый камень)
снятый на камеру с АА фильтром и без. На камере без фильтра камни аккуратненько раскрашены
в разные цвета, хотя явно выраженного регулряного муара вроде и не видно.
Впрочем я безусловно согласен с тем, что раз уж у демозаика есть шанс столкнуться с неудобными данными, то не помешает знать - как он на них отреагирует, ну или хотя бы знать "область применимости"
того или иного демозаика.
И, да, разноцветная галька - известная (мне) беда у Kodak SLR/c/n
Ваши комментарии проваливаются в спам отчего-то (не изучал score), если зарегистрироваться, то станет легче.
По делу: если размывать "пиксель в 4", то из 20Mpix получим 5. Что как-то мало. Если размывать меньше, то шансы алиасинга повышаются очень сильно.
Ну то есть если размер пиксела dslr уменьшить до пары микрон, то "интерполяция" будет не нужна, биннинга будет достаточно.
Весьма интересно!
Я естественно сразу сравнил заблуреный DNG с RPP (VCD и AHD) и разница даже больше чем я ожидал. Т.е. из того муара что мы получаем солидная часть идет не от алгоритма а от точности арифметики. Чем ближе к центру, тем хуже все становится.
И в плане пожелания - если нетрудно добавь еще 3 таких же звезды с шириной в 2, 3 и 4 пиксела в те DNG!
Да, точность арифметики конечно важна, хорошо себя показавшие LMMSE/AMaZE - они float.
А мишени я всякие буду делать, процедура вроде налажена. Я начал, собственно, с Siemens Star, но на ней таких душераздирающих эффектов (как на резкой мишени) нету.