Sony A7: околозвездная постеризация

Год с хвостиком назад, когда я в первый раз озаботился соневским cRAW, я из общих соображений предсказал, что должны быть проблемы на кадрах типа "звезда на фоне темного, но не черного неба".

И таки да. Вот у Ллойда Чамберса: нашелся пример (промотать до раздела Example).

UPD: Ллойд завел отдельную страничку под это чудо.

Такие дела.

И таки да, со star trails все плохо т.к. в артефактах будет весь снимок, не начистишься (лечение - убирать небо в черноту, но не всегда это годится).

Экспозамер: для RAW или для JPEG?

Меж тем, у нас родился текст (и видео):

Exposure for RAW vs. Exposure for JPEG

Это продолжение и развитие уже поминавшегося в данном бложике текста Ильи, но продолжение и развитие было уже на басурманском наречии, русского оригинала не существует.

Ну и многие примеры поминались/обсуждались у меня в комментариях.

Sony cRAW ETTR: сжатие с потерями, теория и практика.

Продолжим обсуждение ETTR на камерах Sony (первая часть тут) и разберемся с lossy-компрессией и ее возможным влиянием на ETTR.

Напомню устройство сжатия с потерями в этом формате:

  • Строка изображения разбивается на блоки по 32 пиксела, в каждом из блоков содержатся пиксели двух цветов, зеленого и какого-то еще из двух оставшихся, по 16 пикселов каждого цвета.
  • Для этих 16 пикселов записываются
    • Минимальное и максимальное значение в 16-пиксельном блоке с точностью 11 бит.
    • Координаты минимума-максимума (номер в блоке).
    • 14 остальных пикселов кодируются в виде дельт с 7-битной точностью.
    • Шаг дельт равен (максимум минимум) / 128 (округленное до ближайшей бОльшей степени двойки).
    • Соответственно, если (максимум минимум) в блоке больше 127, то шаг дельты - больше единцы, то есть дельта-кодирование записывает значение пиксела приближенно.
  • После раскодирования дельт, к раскодированным значениям применяется тоновая кривая, о которой подробно писалось в прошлой заметке
Приведем эту тоновую кривую еще раз:
Как мы видим, наклон кривой в области тени-полутона равен 2, в самых светах 32, в промежутке (ступенчато) меняется.

Посмотрим теперь, как тоновая кривая сочетается с дельта-кодированием.

Q: Qt 5.2 и Retina

Граждане разработчики,

Особенно использующие Qt, вы же тут читаете, я знаю.

Вот есть Qt 5.2 и Маки с ретиной. Надо, значит, чтобы было Щастье.

На самом деле, 99% Щастья есть сходу: если в Info.plist написан NSPrincipalClass, то все стандартные элементы (шрифты, к примеру) рендерятся в ретину и все работает.

Но.

У меня используется свой OpenGL-код, который зовется из QGraphicsScene::drawBackground(). Он, понятно, сходу рисует в четверти окошка в таком случае.

Эксперименты показали, что достаточно поменять одну строчку. Вместо:

glViewport(x,y,w,h);
написать
int dpr = painter->device()->devicePixelRatio();
glViewport(x*dpr,y*dpr,w*dpr,h*dpr);
И все начинает (вроде бы?) работать как надо. Зумится, ротейтится, сдвигается - все вроде как надо.

Так вот, вопрос: Что Я Делаю Не Так?. Не упускаю ли я что-то важное?

P.S. Рассматривание кода Qt-шных примеров не дало ответа. А именно: в части примеров делают именно так. И все работает. А вот в qtbase\examples\widgets\graphicsview\boxes - вообще нет никакого следа devicePixelRatio(), все каким-то чудом работает "само" (и ретина поддерживается нормально)

Sony A7R (и другие cRAW): теория ETTR, часть 1

Как и обещал, опубликую свои соображения про ETTR в Sony A7R (и всех других камерах Sony, использующих формат cRAW, локально 7-битный и с тоновой кривой).

Техника ETTR (Exposure to the right) была разрекламирована Майклом Рейхманом, идея ее заключается в следующем:

  • Цифровой сенсор линеен по яркости , человеческое зрение (и фотография) нет.
  • В верхнем стопе цифрового изображения, полученного с линейного сенсора, размещается половина всех записываемых уровней, в следующем четверть, и так далее.
  • Как следствие, полезно экспонировать так, чтобы гистограмма прижималась к правому краю , так мы используем максимально возможное количество уровней.
Сама по себе идея выглядит разумно, ее несколько портит то, что RAW-конверторы (и/или используемые там цветовые профили) не вполне линейны, поэтому два кадра, снятые вправо и нормально , после приведения их конвертором к одной яркости не будут выглядеть одинаково (про что я уже писал 4 года назад).

Однако если (самостоятельно) построить цветовые профили под такое экспонирование, ETTR позволяет решить две задачи:

  1. Вообще использовать максимальное количество градаций (чем правее мы сняли, тем меньше градаций потеряем), в том числе и для полутонов.
  2. И особенно вытащить значимые тени (где мы планируем показать детализацию) из области с очень малым количеством градаций (и значимыми шумами) в область, где градаций - побольше, а относительный шум поменьше.
На мой взгляд, смысл имеет только вторая задача: нормально тянуть тени можно имея не менее десятка-другого градаций на стоп . Естественно, если мы увеличиваем экспозицию, чтобы тени попали в диапазон с бОльшим числом градаций, то у нас и света-полутона переедут повыше, то есть решая вторую задачу - мы как-то решим и первую.

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

Однако инженеры фирмы Sony внесли в это благолепие две своих изюминки: тоновую кривую и сжатие с потерями. В этом тексте рассмотрим только тоновую кривую.

Sony A7R: соображения про вибрации

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

Последние месяцы интернет бурлит на тему 'Sony A7R Shutter vibration'. Дескать затвор колотит так, что звезды с неба падают.

На эту тему очень много у Кассона, Чамберса (большей частью за paywall), dpreview, fredmiranda и прочая, прочая, прочая.

Я в комментариях поминал уже, что это все не кажется мне таким уж страшным для относительно небольших фокусных. На 400mm (на которых я уже смотрел) ситуация непростая (вкратце: при том креплении, что я использовал, эффект есть от 1/10 до 1/100, причем есть в неприятных масштабах; На более коротких выдержках - да, при 200% на экране можно видеть следы смаза, но я готов с этим жить), но чтобы ее исследовать в деталях - мне нужно дождаться L-bracket, а она "в пути".

Вместе с тем, в интернетах договорились уже до того, что на неудачном диапазоне выдержек (1/10-1/100 или что-то вроде того), даже с родным 55-мм объективом есть деградация "и 36-мегапиксельная Sony A7R становится 24-мегапиксельной по разрешению".

Вот что я имею по этому поводу сказать:

Литий в почте - 2014 - 3

Продолжаем репортаж (начало тут, продолжение здесь).

Шведские улитки сегодня принесли мне литиевые батарейки. Итого общий тайминг:

  • 15 января заказал
  • 22 января - появились в шведском трекинге (но, как я понял, в Сингапуре)
  • 26 января "Прибыло на территорию РФ" (новое слово в нашем трекинге)
  • 29-го - "импорт"
  • 30-го растаможка
  • 4 февраля засветилось на моей почте
  • сегодня получил (извещение тоже сегодня или вчера вечером)
Если считать, что "экспорт" из Сингапура был 22-го, то получается 2 недели с копейками, из которых половина по Москве.

Режим лютует, в прошлом году "хорошей нормой" было недели 4 (под многотонные завалы в аэропортах лично я не попал, худший вариант был недель 6).

Открытий чудных....

Пару недель назад я уже писал о чУдном EXIF в RAW у Sony A900: в 12-битном линейном режиме в EXIF остается тоновая кривая (которая в этом режиме не нужна/не используется) и уровень черного от cRAW (вчетверо выше правильного).

То есть, если вы хотите брать черный из EXIF (что идеологически правильно: выйдет Sony A901 или там поменяют в firmware что-то - а ваш софт уже готов и работает), то нужно проверить на каком мы свете формат и поделить на 4, если 12-битный линейный.

Вчера выяснилось, что аналогично отличилась и компания Nikon: у D5300 в 12-битном режиме совершенно все так же: уровень черного записан для 14-битного режима, а если файл 12-битный, то надо поделить этот черный на 4.

Но и это не все: у D3300, у которого 14-битного режима вовсе нет, в уровень черного в EXIF опять записан учетверенный вариант. Там написано 600 (для тех файлов, что имею на руках), а правильный - 150.

Возможно, Nikon отличился давно, а не в последних моделях, но раньше черный вычитала сама камера, поэтому в EXIF в этом месте были нули.

P.S. невольно начинаешь любить DNG.

P.P.S. Вполне возможно, что Nikon, на самом деле, так заботится о нас. Ну то есть D3300 сохраняет совместимость с D5300 в этом месте. Убилбынах.

Q: Macbook retina + внешний монитор

А вот, я извиняюсь, вопрос.

  1. Берем MacBook pro с ретиной
  2. Выключаем Mission Control - Displays have separate Spaces
  3. Подключаем внешний (не ретинный) монитор
  4. Запускаем какую-нибудь Retina-enabled программу (я взял Keynote)
  5. Размещаем ее окошко на двух мониторах сразу
  6. И начинаем немножко двигать с монитора на монитор.
Так вот, если >50% окна на ретине, то на не-ретина-мониторе как-то пере-рендеривается эмуляция ретины (ну более-менее понятно что происходит - рендерится в фреймбуфер и растягивается немножко). И наоборот.

При этом, если совсем мелкие/тонкие шрифты при таком пере-рендере выглядят плохо, то вот начиная с более-менее рабочего размера шрифта - наоборот, этот пере-рендеренный вариант нравится мне больше и для некоторых приложений (вроде Терминала, где шрифты крупнее "лимита") я бы его сохранил.

Вопрос: а как, собственно? Ну кроме как оставить половинку окна на ноутбуке (что меня совершенно не устраивает).

Обратное неверно - если HiDPI-режим выключается, на ретинном мониторе оно смотрится плохо.

P.S. Ретина - рулит, конечно. Сходу в глаза оно не бросается, но вот два 15" макбука рядом - просто вот вопросов нет. Захотел 4k монитор еще отчетливее.

P.P.S. Теория, что оно просто 2x и все - ерунда. В той же Keynote, если 51% окна утянуть на не-ретинный монитор, в оставшихся 49% букивки маленько прыгают. Метрики шрифтов немножко разные.

RawDigger 1.0.3: удобный анализ экспозиции (для ETTR и не только)

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

Илья на эту тему написал текст, но в процессе его подготовки мы выяснили, что имеющиеся в RawDigger инструменты неудобны для тех, кто не умеет логарифмировать в уме.

Поэтому в RawDigger 1.0.3 включен более удобный механизм, позволяющий оценить а что было бы, если бы мы этот снимок снимали бы с большей экспозицией . Собственно, состоит он из единственного дополнительного движка Auto OE Offset на вкладке Over/Under Exposure в настройках:

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

И о чем бы вы думали? Опять про экспонометрию и ISO

Если кто следит, компания Olympus сделала подарок владельцам OM-D E-M5, выпустив Firmware 2.0. В оном фирмварии появилась новая чувствительность, ISO100 (обозначается как LOW в менюшке).

Сам я не ставил, думаю подождать до версии 2.0.1, но за темой слежу.

Вот на dpreview интенсивно обсуждают, что же там за такое ISO, просто фейк (как у Canon самое нижнее ISO50) или что-то другое.

Нашелся доброволец, снял вилкой, выложил (линк на скачивание архива RAW - внизу поста).

Я это скачал, смотрю. Вижу удивительное: для одной экспопары значения в RAW при ISO100 - на 1/3EV ВЫШЕ, чем для ISO200. То есть чувствительность не такая же (фейковое ISO), не ниже на стоп (настоящее ISO), а выше.

Понятно, можно предполагать, что это затвор шалит (но между снимками на одном ISO - расхождения практически ровно как должны быть). Может быть свет ушел (но по той же причине - не похоже). Короче, причин предполагать некорректный эксперимент - нету.

Что получается? Поставив ISO100 - мы на самом деле ставим ISO250, а экспонируем как 100. Шум в тенях будет офигенно лучше, запас в светах, очевидно, на 1.33 стопа меньше.

Компания Adobe добавляет в этот торт вишенку. Эта камера/ISO уже известны DNG-конвертеру (судя по всему, там в EXIF-тегах написано что-то, что DNG Convertor умеет интерпретировать), поэтому в BaselineExposure он пишет:

  • +0.5 для ISO200
  • -0.84 для ISO100
(и это позволяет предположить, что в эксперименте все снято нормально, та самая 1.33 стопа разницы).

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

Риторические вопросы:

  1. Ставя на камере чувствительность LOW, которая ниже ISO200, ожидаете ли вы получить реально чувствительность выше?
  2. А если у вас две камеры, от разных производителей? Или даже одного производителя, там же в треде на dpreview пишут, что на E-M1 нижнее ISO ведет себя иначе....
  3. Что проще: помнить для камеры единственный параметр ("куда попадает экспонометр при замере по серой карте"), хотя бы в первом приближении (он плавает от освещения), или запоминать все эти мелкие особенности ("в полнолуние при ретроградном меркурии эта камера ведет себя вот так", а если мы поставим ISO100, то в ACR все будет нормально, а в C1 - сильная передержка).
  4. Кто они после этого?

RawDigger 1.0.3: раскапывая Sony

Про 7-битный RAW у Sony я уже неоднократно писал, однако в свежий RawDigger внесены дополнения, которые позволяют на этот формат взглянуть еще внимательнее. Эти дополнения требуют некоторых пояснений.

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

  1. Весь массив данных поделен на блоки по 32 пиксела в ширину (и 1 в высоту).
  2. В каждом таком блоке будет содержаться пикселы двух цветов (RG или GB), по 16 пикселов каждого цвета.
  3. Для 16 одноцветных пикселов в блоке записываются:
    1. Максимальное и минимальное значение (с точностью 11 бит)
    2. Позиция максимального и минимального пиксела в блоке
    3. 14 7-битных приращений (дельт) относительно минимального значения. При восстановлении, дельта умножается на коэффициент равный (max-min)/128 с округлением к ближайшей большей степени двойки
  4. Таким образом, если в 32-пиксельном блоке имеется большая разница в яркости, промежуточные значения будут записаны приблизительно.
  5. После восстановления дельт, к восстановленным значениям применяется тоновая кривая.
В RawDigger 1.0.3 (пока бета, см. конец статьи) добавлена возможность управлять распаковкой этих пикселов:

Pages

Subscribe to blog.lexa.ru: все статьи