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

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

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

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

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

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

 
Из интересного: для такой более фотографически реальной мишени наименьшее количество муара дал алгоритм LMMSE. Советую авторам RAW-конверторов к нему присмотреться.

Заключение

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

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

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

Comments

Весьма интересно! Я

Весьма интересно!
Я естественно сразу сравнил заблуреный DNG с RPP (VCD и AHD) и разница даже больше чем я ожидал. Т.е. из того муара что мы получаем солидная часть идет не от алгоритма а от точности арифметики. Чем ближе к центру, тем хуже все становится.
И в плане пожелания - если нетрудно добавь еще 3 таких же звезды с шириной в 2, 3 и 4 пиксела в те DNG!

Да, точность арифметики

Да, точность арифметики конечно важна, хорошо себя показавшие LMMSE/AMaZE - они float.

А мишени я всякие буду делать, процедура вроде налажена. Я начал, собственно, с Siemens Star, но на ней таких душераздирающих эффектов (как на резкой мишени) нету.

Мишени

Не появилось случайно новых тестовых мишений за 2+ года? У меня есть основания полагать, что алгоритмы, которые дали артефакты, дадут те же самые артефакты при смене базового типа на float.

Ну как бэ инструмент есть,

Ну как бэ инструмент есть, давайте tiff - сконвертируем. Про float - соседний текст: http://www.libraw.su/articles/festina-lente.html

Все же подобные

Все же подобные "издевательства" над алгоритмами несколько "нечестные" - мы пытаемся алгоритмам подсунуть данные на которые он даже и не должны быть расчитаны. Ведь математика говорит что нельзя с байера требовать попиксельной резкости и контраста. Мы же не пытаемся цифровому аудиотракту с частотой дискретизации АЦП 44кГц скармливать частоты выше 22кГц? Причем не пытаемся той же причине, по которой на байеровскую матрицу (равно как и фовеон) не должна попадать картинка не прошедшая через ФНЧ - АА фильтр.

Причем непонятно как судить по результатам о качестве алгоритма. Вот например то, что у AMaZE меньше цветных артефактов говорит о том что он точнее восстаналивает яркостную компоненту или о том что он успешнее "портит" цветовую? И что важнее?

Во-первых, подать в

Во-первых, подать в стереоусилитель два разночастотных ВЧ-сигнала в два канала и проверить интермодуляцию - это первейшее дело. Это что касается аналогии с аудиоаппаратурой.

Во-вторых, далеко не все камеры имеют anti-alias фильтр. Не имеют его многие (все?) среднеформатные задники и некоторые "узкоформатные" камеры (Кодаки, Лейки). И картинка с 13-Mp Кодака по уровню детализации близка к 20Mp-камере с фильтром, ценой легкости возникновения муара.

В-третьих, муар получается и на размытой картинке.

Упс, первый пост и сюда таки

Упс, первый пост и сюда таки запостился, прошу прощения за дублирование оного блоге.
Насчет двух сигналов и интермодуляции - это все же немного не то. При проверке
интермодуляционных искажений частоты сигналов все же располагаются до той самой
частоты Найквиста. А я говорил о том, что а аудио старательно избегают диапазона
выше этой частоты.
А вот в случае с изображением почему-то мало того, что мы ищем детали с пространственной
частотой равной той самой частоте Найквиста, которая кстати, в случае байера еще и
по сути различна для цветовой и яркостной составляющей (и для R и G,B тоже), так еще
и убираем АА-фильтр совсем и потом боремся с последствиями.
Оно конечно понятно - на нерегулярных структурах муара вроде и не заметно, но... детализации
там получается несколько "условная", т.е. выглядит это как детали, а на практике это то,
что додумал алгоритм интерполяции.
Мне когда-то попдался хороший пример на котором показан фрагмент кадра с мелкой
серой галькой (на кадре она получилось как размером в несколько пикселей каждый камень)
снятый на камеру с АА фильтром и без. На камере без фильтра камни аккуратненько раскрашены
в разные цвета, хотя явно выраженного регулряного муара вроде и не видно.

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

Ваши комментарии

Ваши комментарии проваливаются в спам отчего-то (не изучал score), если зарегистрироваться, то станет легче.

По делу: если размывать "пиксель в 4", то из 20Mpix получим 5. Что как-то мало. Если размывать меньше, то шансы алиасинга повышаются очень сильно.

Ну то есть если размер пиксела dslr уменьшить до пары микрон, то "интерполяция" будет не нужна, биннинга будет достаточно.

У меня несколько посторонний

У меня несколько посторонний вопрос возник - а какова технология изготовления DNG? Есть некая тулза или просто производилась "пересадка данных" в некий существующий валидный DNG-файл?

Есть Адобовский DNG SDK

Есть Адобовский 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

Но вообще, пользоваться можно.

Окраска каёмочек.

Очень интересный тест! Пусть синтетический и далёкий от реального изображения. Зато он позволяет анализировать и сравнивать разные методы интерполяции. На реальном изображении это свалится в сплошную субъективщину.
Особенно понравились результаты тестов проприетарных конвертеров. До этого я слышал мнения фотографов о том, что Capture One предпочтителен для макро, так как даёт большую резкость. Вы реально показали, что у него свой собственный метод интерполяции. И очень не плохой.
Все способы дают цветной муар. Естественно. Но интересно, что как у Capture One, так и у метода AMaZE минимальна окраска расходящихся лучиков. Да, есть у Capture One пурпурное пятно (у других не лучше, но не так заметно потому, что у других пурпур зелёным разбавлен), зато отдельные полосочки окрашены меньше. Получается, что он даёт сбой на достаточно протяженных участках с периодической структурой (пурпурное пятно), но лучше отрабатывает нерегулярные детали. Это значит, что и в случае с мелкой галькой на берегу (там нет регулярной периодической структуры) он справится лучше. Это же в большой степени относится и к интерполяции AMaZE.

Во-первых, спасибо за

Во-первых, спасибо за интересную статью... С практической точки зрения - крайне полезна... Хотелось-бы узнать - можно-ли каким-либо способом сделать мишень не DNG - формата? Хотелось-бы посмотреть встроенный и закрытый демозаик от DxO. Он не принимает DNG, а только экспортирует... Тем более я с ним работаю "официально" и софт очень нравится...

Кстати, тестовую DNG мишень не отображает кореловский AfterShot Pro... и страшно "корячит" RAW Therapee...

В теории - можно. Есть много

В теории - можно. Есть много относительно простых RAW-форматов. Без сжатия (или с простым сжатием) и так далее.

На практике же - для DNG есть готовый адобовский SDK и генерация мишени оказалась несложной, связываться же с какими-то другими форматами лично мне - лень, для моих целей оно не нужно.

Спасибо за ответ...

Спасибо за ответ... я задал этот вопрос (относительно DNG, DNG-мишени и тестирования рав-ковертеров - с ссылкой на Вашу статью в англ. варианте) в саппорт DxO и мне интересно, что они ответят. Хотя я догадываюсь, почему они избегают DNG :) Должны - все-таки откликнуться - я давний легальный пользователь их софта :)

Мне непонятно также, почему надо поддерживать в LibRaw 11 или 12 алгоритмов демозаика, если, как минимум, половина из них явно хуже других. Может отполировать лучшее и убрать лишний код. Кстати, это все отлично видно в последних версиях digiKam и darktable - туда я грузил тестовые мишени - пожалуй, единственных качественных фришных мультиплатформенных систем обработки RAW.

Еще раз спасибо за интересный сайт и постоянное развитие/поддержку LibRAW...

С LibRaw ситуация очень

С LibRaw ситуация очень простая:
1) Задача LibRaw - раскодирование RAW. Постпроцессинг достался на халяву от dcraw, ну его и прикрутили.
2) Никаких планов по развитию постпроцессинга в LibRaw - нет.
3) При этом, contribution от сообщества - приветствуется и добавляется, как правило, целиком (за исключением вопиющих случаев, кроме этого - был еще случай с коррекцией экспозиции со сжатием светов, когда я плюнул и переделал сам).
Фильтровать - я не берусь, то что предлагают - кому-то нужно, наверное.
Ну вот прислали мне методов демозаики - ну вставить их дело одного вечера. А вот тестировать я их даже и не стал.

В этом смысле darktable пошел по правильному пути и там постобработка своя, а digiKam меня, если честно, огорчает.

Понятно... спасибо за

Понятно... спасибо за разъяснения позиции - все логично и оптимально... Насчет Darktable согласен, портировали бы его на win - было-бы совсем классно...

Прислали ответ ни о чем от DxO - в двух словах - пока DNG не признают все производители в качестве единого формата - заниматься им не будем и так работы дофига и ни одного слова о внутреннем демозаике, который я хотел протестить... :)

" Thank you for writing. There has been some discussion among the development team regarding the possible support of DNG format files for input into Optics Pro. The issue has been that though Adobe has been promoting the DNG format as an industry standard for quite sometime, it has not yet evolved into the standard. Each camera manufacturer has their own proprietary RAW file format, and will vary from camera model to camera model.

Since manufacturer RAW formats are their primary formats, much of our development effort must go into developing support modules for each of these cameras. We currently have a backlog of requests for the support of new and previous camera bodies for RAW support, which limits our ability to develop support for the DNG format. It would make our professional lives a lot easier if there was one adopted standard.

.... "

С ума сойти. А лейку, к

С ума сойти.

А лейку, к примеру, где DNG - единственный формат, они не поддерживают что ли?

При том, что поддержка достигается, при желании, прикручиванием бесплатного (и с приемлемой лицензией) адобовского SDK.

Ну да... я тоже слегка впал в

Ну да... я тоже слегка впал в ступор :), особенно если учесть и то, что не только для "одинокой" лейки это актуально, но и для нового Pentax K-01 - там DNG тоже единственный формат. Да и если учесть замашки DxO, как статусного тестера для сенсоров - камер - оптики - http://www.dxomark.com/index.php . Но софт их все равно нравится - может лучше глубоко не копать :). Аналогично я им задавал вопросы про реализацию 64-битной версии, не напряжно конечно, но обидно при 16 гб памяти на домашнем компе использовать только от 3 до 4 + GPU :) Ответили тоже малость "невпопад"...

Отличный тест - спасибо. Но

Отличный тест - спасибо. Но было бы замечательно добавить несколько слов о самих алгоритмах. Хотя бы в общих чертах как они работают. А то мне например понятен только один метод интерполяции...

FreeBSD kernel is very well

FreeBSD kernel is very well documented. Unfortunately, it is all in "C"

В том смысле, что для тех алгоритмов, которые в LibRaw - если даже нет публично доступного описания человеческим языком, то есть исходник и его можно читать.

Просто из любопытства в

Просто из любопытства в дополнение к статье не полезешь в исходники пусть и на понятном, но малознакомом языке, искать там функции дебайеризации и разбираться в их алгоритмах. )

AHD, PPG, VNG, LMMSE -

AHD, PPG, VNG, LMMSE - насколько я помню, описаны в литературе и найти несложно.
Но "несколькими словами" тут не обойтись, читайте первоисточники.

Спасибо что не

Спасибо что не игнорируете.
Вы правы. Все так. Вот только меня например интересует в первую очередь PPG и AMaZE - с первым все и так понятно, а по второму я что-то не нашел инфы. Может быть дадите какую-то ссылку.
Когда разрабы дарктейбл прикрутят LMMSE и прочеее - буду интересоваться и ими.

PPG - это Patterned Pixel

PPG - это Patterned Pixel Grouping.
Там очень простой и компактный исходник, можно и разобраться. Вот еще какое-то описание, но я его не читал: https://sites.google.com/site/chklin/demosaic/

AMAZE - описания не видел. Или исходник смотреть или автору писать.

Перечитывал вот статью и

Перечитывал вот статью и наткнулся на ачипятку, вроде: "Уровень черного на 4 стопа ниже уровня черного" (в описании мишени). Белого, может?

Ага, белого.

Ага, белого. Сейчас поправлю.