Байеровский муар

Об анализе RAW-конверторов

Существующее на сегодня многообразие RAW-конверторов и используемых в них алгоритмов порождает проблему выбора: какие конверторы лучше (и для чего). На интернет-форумах распространена очевидная методология: берется одно (или несколько) изображений, обрабатывается разными конверторами/алгоритмами/настройками и визуально сравнивается. Зачастую, результат выглядит так для изображения P лучше алгоритм Q, а для изображения A алгоритм Z с включенной галкой f+ .

Более того, анализ в терминах хуже/лучше просто неправилен, правильная постановка звучит как ближе/дальше от исходного изображения.

Проблема заключается в том, что мы имеем дело со сложной системой, включающей в себя

  1. Снимаемый объект и его освещение
  2. Оптический тракт камеры с аберрациями объектива и светорассеянием внутри камеры.
  3. Сенсор со всеми его конструктивными особенностями: противомуарным фильтром, цветными байеровскими фильтрами, микролинзами и так далее.
  4. Внутрикамерный процессинг, как аналоговый, так и цифровой.
  5. А, да, изучаемый RAW-конвертор тоже.

Даже если правильное исходное изображение известно (снималась синтетическая мишень с известными характеристиками), вклад каждой из перечисленных составляющих остается неясным.

Вместе с тем, никто не мешает исключить из процесса фотокамеру (и снимаемую сцену) и изучать только RAW-конвертор, подавая ему на вход специально сгенерированные данные. Эти данные не обязаны быть правдоподобными (т.е. такими, какие возможно получить с реальной камеры), многие интересные особенности алгоритмов конверторов лучше видны на нереальных данных.

Устойчивость к муару

В процессе изучения возможностей и подходов, родилась первая мишень, ставящая алгоритмы демозаики (байеровской интерполяции) в совершенно невыносимые условия.

Мишень состоит из линий шириной в 1 пиксел, расходящихся из общего центра и образующих круг:

  • В правой половине круга радиусы проведены через два градуса, в левой через один градус.
  • В верхней половине радиусы проведены с использованием antialiasing (средствами ImageMagick), в нижней без antialiasing.
Как мы видим, муар возникает на этом изображении вполне самостоятельно, такова природа целостности пикселов.

Из мишени сформирован DNG-файл, таким образом что:

  • Уровень белого на 2 стопа ниже уровня насыщения.
  • Уровень черного на 4 стопа ниже уровня черного.
  • Цветовая матрица диагональная с единичными коэффициентами.
  • DNG построен без противомуарного фильтра т.е. просто копированием значений соответствующего цветового канала исходного TIFF-файла в DNG. Из реальной цифровой фотокамеры получить такие данные практически невозможно: даже если противомуарного фильтра нет (цифровой задник), какое-то рассеяние обязательно даст объектив. Впрочем, более реальные (размытые) мишени мы ниже тоже рассмотрим.

К этому DNG-файлу были последовательно применены все 12 методов интерполяции, имеющиеся в LibRaw 0.12, результаты сведены в таблицу ниже (все картинки кликабельны и открываются в полный размер 1000x1000). Картинки в табличке сделаны такими маленькими намеренно, чтобы читатели смотрели полный размер, а не превьюшки, ибо алгоритм формирования превью сам подвержен муару. Для экономии трафика, полноразмерные картинки приведены к 8-битному виду, видимых глазом отличий с исходным 24-битным вариантом практически нет

Интерполяция Half-size (binning 4 в 1)Интерполяция Half-size (binning 4 в 1) Bilinear interpolationBilinear interpolation
VNG-интерполяцияVNG-интерполяция PPG-интерполяцияPPG-интерполяция
AHD-интерполяция (алгоритм dcraw)AHD-интерполяция (алгоритм dcraw) DCB-интерполяцияDCB-интерполяция
Modified AHD (Paul Lee)Modified AHD (Paul Lee) AFD-интерполяцияAFD-интерполяция
VCD-интерполяцияVCD-интерполяция VCD+AHDVCD+AHD
LMMSE-интерполяцияLMMSE-интерполяция AMaZE-интерполяцияAMaZE-интерполяция

Как мы видим, все рассмотренные методы демозаики порождают обильный цветной муар (что неудивительно для такой мишени), включая и 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.3Adobe ACR 6.3 Adobe Camera Raw использует алгоритм, необычайно похожий по результатам на modified AHD by Paul Lee . Конечно, с точностью до яркости, ACR несколько осветлила изображение.

HDR PhotostudioHDR Photostudio Результаты работы HDR PhotoStudio до крайности похожи (с учетом мельчайших особенностей) на отсутствие "настоящей" демозаики, это полный аналог dcraw -q 0 (bilinear interpolation традиционно не считается "настоящей интерполяцией").
Capture One 5.2.1Capture One 5.2.1 Алгоритм Capture One идентифицировать не удалось, пятно цвета magenta на 10:30 (северо-запад) ни в одном из алгоритмов LibRaw не встречено.

Ближе к реальности

Если сформировать DNG из размытой мишени (размытие делалось ImageMagick, метод Gaussian Blur, sigma=1.0), то задача становится куда ближе к фотографической реальности.

Такая мишень ТОЖЕ имеет цветной муар для всех 12 методов интерполяции, имеющихся в LibRaw. Дабы не загромождать статью, покажу 5 из них (три самых лучших из предыдущего теста, DCB и half который почему-то считается наиболее защищенным от артефактов интерполяции).

Half interpolationHalf interpolation AHD-интерполяция (алгоритм dcraw)AHD-интерполяция (алгоритм dcraw)
DCB-интерполяцияDCB-интерполяция LMMSE-интерполяцияLMMSE-интерполяция
AMaZE-интерполяцияAMaZE-интерполяция  
Из интересного: для такой более фотографически реальной мишени наименьшее количество муара дал алгоритм LMMSE. Советую авторам RAW-конверторов к нему присмотреться.

Заключение

Первые же эксперименты с подсовыванием RAW-конверторам искусственно сгенерированной мишени доставили автору истинное наслаждение. Эксперименты будут продолжены, авторы конверторов трепещите.

А, да, поклонникам пиксельной резкости хочу отдельно напомнить, что если ваша камера/объектив вдруг умеют создавать на матрице контрастный объект пиксельного размера, то какого он будет цвета (и будет ли этот цвет хотя бы отдаленно напоминать исходный) предсказать невозможно.

Для самостоятельных упражнений

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, но на ней таких душераздирающих эффектов (как на резкой мишени) нету.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.