О битности у камер Sony
Кроме того, в этом рассказе я не уточнял, что за счет нелинейной тоновой кривой общее количество возможных уровней (значений пикселов) не следует впрямую сравнивать с обычными камерами без тоновой кривой:
- у обычных камер половина всех уровней это самый верхний стоп (где столько не нужно), четверть второй сверху стоп (тоже не нужно)
- в случае с cRAW, уровни распределены по всему диапазону значений гораздо более правильно (с фотографической точки зрения), на самые света выдают поменьше (чем в обычном линейном случае), на полутона и тени побольше.
Введение в проблему и методика
Как мы помним, у камер Sony есть 4 формата данных:- "Старый ARW" (камеры вроде A100)
- Нежатый новый ARW (A700/850/900 в 12-битном режиме)
- cRAW: сжатый новый 11/7-битный ARW, про который я неоднократно писал
- SRF (который был у F828), по причине древности уже неинтересен.
У cRAW имеется тоновая кривая (насколько я видел, одинаковая для всех камер), которая линейна на участке 0 2000 (после вычитания черного на участке 0..1488) а дальше загибается (вверх при распаковке, вниз при паковке в камере).
Во всех трех случаях, количество уровней в светах достаточное. Их, как минимум, несколько сотен на 1EV (в случае 12-битного линейного формата - 2048 уровней на самый верхний стоп). С точки зрения фотографа, интерес представляет количество уровней в полутонах и тени , например, от уровня ~3EV ниже насыщения и до абсолютно черного.
В случае линейного формата все просто, он линейный и 12-битный , если в полутонах и тени камера показывает сплошную гистограмму, значит у нас 12-битные тени . Если в гистограмме есть регулярные дырки, значит уровней меньше, т.е. битность тоже меньше .
Случай с cRAW требует более подробного пояснения.
- После наложения тоновой кривой в процессе распаковки RAW, мы получаем линейный сигнал, размах которого соответствует 14-битной камере.
- В этом сигнале есть дырки - значения, которые никогда не наблюдаются.
- Дырки в светах нас не интересуют количество уровней там достаточное.
- В области от полутонов (~3.3 стопа ниже насыщения) и ниже в сторону черного, в силу особенностей формата данных, мы в лучшем случае видим каждое четное значение.
- Дальше мы считаем дырки в гистограмме и битность (т.е. сколько бит АЦП нужно обычной камере с линейным АЦП, чтобы получить такую же детальность уровней в тенях, точная формула приведена ниже)
Использованные данные
При подсчетах использовались снимки, снятые на ISO100 (или ближайшем более высоком, если у камеры нет ISO100), ISO400 и ISO3200. Этот набор чувствительностей выбран из следующих соображений:- На ISO100 мы, скорее всего, будем иметь наибольшее количество уровней.
- Однако если ISO100 самое нижнее в линейке чувствительностей, то там возможны всякие чудеса (оно может быть вообще фейковым, как ISO50 у Canon), поэтому возьмем еще ISO400, где чудес обычно меньше.
- А на ISO3200 уже могут быть другие чудеса, например цифровое повышение ISO .
Основной массив данных скачан с сайта Imaging-Resource.com. Для тех камер, которые там не представлены данные взяты из других (достаточно разнообразных) источников, но таких камер немного: A300, A450, A900 (нежатые RAW), NEX-5R.
Шумопонижение
Во многих камерах Sony есть шумопонижение которое влияет на RAW-данные (как минимум, в некоторых камерах; целенаправленно это не исследовалось)При подборе примеров выбирались варианты с отключенным шумопонижением, а при их отсутствии с минимальным шумопонижением из доступных вариантов.
Странные гистограммы
Среди камер Sony встречаются такие, где гистограмма ровного поля выглядит как-то так:Но к каждой высокой палочке в комплект входит одна низкая.
Это какой-то числовой артефакт (при обработке данных в камере, возможно, добавляется псевдослучайный шум).
Палочки гистограммы, которые систематически (т.е. повторяющимся паттерном) ниже соседей в подсчете уровней не участвовали.
Дробные значения
Подсчет количества уровней производился в окне шириной 32 уровня. Уменьшение битности относительно максимального значения (12 бит для 12-бит линейных файлов, 14 бит для cRAW) считалось по формуле 5-log2(число уровней в окне шириной 32), результат которой округлялся до одной десятой.Режим съемки
Как минимум, у SLT-A99 разрядность зависит от режима съемки (у A99, согласно руководству, 12 бит при включении одной из опций: Long Exposure NR, BULB-выдержка, Continuous Shooting /включая режимы со склейкой кадров/, 14-бит в остальных случаях).Возможно, аналогичное изменение битности есть у других камер Sony.
Данный эффект никак не изучался ввиду невозможности получить достаточное количество примеров. В частности, для SLT-A99 все найденные в интернете примеры сняты в режиме покадровой съемки и 14-битные (согласно EXIF-тегу).
Для каждой конкретной камеры это явление может быть изучено при наличии камеры на руках, благо методика проста.
Результаты
Прочерки в таблице - у меня нет примеров RAW.Model | ISO | ||
---|---|---|---|
100 | 400 | 3200 | |
A3000 | 12 | 12 | 11 |
A7 | 12.9 | 12.9 | 12.7 |
A7R | 13 | 13 | 12.9 |
DSC-RX1 | 12.9 | 12.9 | 12.9 |
DSC-RX1R | 12.9 | 12.9 | 12.9 |
DSC-RX10 | 12 | 12 | 11.6 |
DSC-RX100 | 12 | 12 | 11.6 |
DSC-RX100II | 12 | 12 | 12 |
DSLR-A100 | 12 | -- | -- |
DSLR-A200 | 11.5 | 11.4 | 12 |
DSLR-A230 | 11.5 | 11.5 | 9 |
DSLR-A290 | 11.6 | 11.6 | 9 |
DSLR-A300 | 12 | 11 (ISO 800) | 10 (ISO1600) |
DSLR-A330 | 11.5 | 11.5 | 9 |
DSLR-A350 | 11.9 | 11.9 | 12 |
DSLR-A380 | 11.7 | 11.7 | 12 |
DSLR-A390 | 11.6 | 11.6 | 12 |
DSLR-A450 | 11.6 | 11.6 | 11.3 |
DSLR-A500 | 11.8 | 11.8 | 11.3 |
DSLR-A550 | 11.8 | 11.8 | 11.3 |
DSLR-A580 | 11.8 | 11.8 | 11 |
DSLR-A700 cRAW | 11.8 | -- | -- |
DSLR-A700 uncompressed | 11.6 | 11.6 | 11.2 |
DSLR-A850 cRAW | -- | -- | -- |
DSLR-A850 uncompressed | 11.5 | 11.5 | 11.2 |
DSLR-A900 cRAW | 11.6 | 11.6 | 11.3 |
DSLR-A900 uncompressed | 11.6 | 11.6 | 11.2 |
NEX-3 | 11.8 | 11.8 | 11.6 |
NEX-3N | 12 | 12 | 11.3 |
NEX-5 | 11.8 | 11.8 | 11.6 |
NEX-5N | 11.8 | 11.8 | 11 |
NEX-5R | 12 | 12 | 10.6 |
NEX-5T | 12 | 12 | 10.6 |
NEX-6 | 12 | 12 | 10.6 |
NEX-7 | 11.8 | 11.8 | 11 |
NEX-C3 | 11.3 | 11.3 | 11 |
NEX-F3 | 12 | 12 | 11.3 |
SLT-A33 | 12 | 12 | 11 |
SLT-A35 | 11.8 | 11.8 | 11 |
SLT-A37 | 12 | 12 | 10.6 |
SLT-A55V | 11.3 | 11.3 | 10.6 |
SLT-A57 | 12 | 12 | 10.6 |
SLT-A58 | 12 | 12 | 10.6 |
SLT-A65V | 11.8 | 11.8 | 10.6 |
SLT-A77V | 11.8 | 11.8 | 10.6 |
SLT-A99V | 13 | 13 | 12.9 |
Выводы
- Использование тоновой кривой сильно улучшает жизнь. Скажем, у A900, несмотря на то, что всего уровней в файле в режиме cRAW становится немного, тени от сжатия вовсе не ухудшаются (другой вопрос, что в ETTR в этом режиме снимать не надо, но это мы отдельно разберем при случае).
- Нет ни одной "14-битной" (в тенях-полутонах) камеры. Есть "13-битные", но и их немного: A7(R), RX1(R), A99. Все остальные - в лучшем случае 12-битные.
- Цифровое ISO (т.е. сильное уменьшение реальной разрядности при увеличении чувствительности) - Sony очень любит. Если вы снимаете на высокие ISO, сверяйтесь с табличкой при выборе камеры.
- Кроме этого, Sony любит цифровые манипуляции с RAW. Так как они делаются в целых числах после АЦП, это приводит к потере уровней. В частности по этой причине, у A7 битность капельку меньше, чем у A7R: дырок в гистограмме чуть больше.
Comments
Массивно. Исчерпывающе. Жаль,
Массивно. Исчерпывающе.
Жаль, что троллить соневодов теперь можно только на основании 13-битности верхних камер.
Ну я видел уже больше одного
Ну я видел уже больше одного примера, где "локальная 7-битность" заметна.
Их, вероятно, больше, надо просто иметь тул для поиска (и он будет!)
Тул - это хорошо. А среди
Тул - это хорошо.
А среди новых сонек какое самое меньшее разрешение? 14?
Там было очень много новых
Там было очень много новых NEX-ов, я в них путаюсь, проще даты выхода в википедии посмотреть.
Вот еще примеры со
Вот еще примеры со странностями нашлись: http://www.fredmiranda.com/A7R-review/
При вытаскивании теней на границе со светлым, в середине статьи.
А вот мне другое
А вот мне другое интересно.
Аффтор пишет там:
"Sometimes, I fantasize about a firmware update that could delay the time between the closing of the shutter and the reopening of the shutter to start exposure."
У меня такая фича на Олике есть. А на каких ещё камерах присутствует такая задержка?
На кэнонах, если снимать с
На кэнонах, если снимать с таймером и предподъемом зеркала, зеркало поднимается сразу, потом отрабатывает таймер, потом съемка кадра.
Это по смыслу - ровно оно же, уменьшение тряски.
Ну вот я про "предподъём" и
Ну вот я про "предподъём" и говорю. В соньке же поднимать нечего, там просто пауза нужна. А на сапопах какого уровня она есть?
В 5/6 - точно так. В более
В 5/6 - точно так. В более младших - давно не пользовался предподьемом, не помню.
Если кому интересно то вот я
Если кому интересно то вот я недавно раскопал что Сони оказывается не первая кто применил нелинейную тоновую кривую. В Кодаках 14n/SLR/n/c очень похожая кривая используется для компрессии 12 битных данных (не совсем raw) в 10 битный .DCR файл. Сами кривые выглядят вот так
http://wowcamera.info/viewtopic.php?p=43893#p43893
Sony точно не первая. Первым
Sony точно не первая.
Первым был, вероятно, Canon D2000C (он же Kodak DCS520), либо какая-то из 8-битных камер.
А сама по себе возможность иметь кривую - есть у многих современных форматов (CR2 /никогда не видел вживую с кривой/, NEF, естественно DNG).
Интересно. Я на Кодак этот
Интересно. Я на Кодак этот уже 2 года снимаю и пока не видел никаких внешних признаков применения этой кривой. Правда я не ETTRю. Наткнулся на нее тоже случайно ковыряясь во внутренностях Libraw (использую ее в своем софте) и смотря на файлы экспонированные на грани насыщения.
Да от кривой то вовсе никакой
Да от кривой то вовсе никакой особой беды нет. Ну или я ее не вижу (правда вот только что обсуждал, что там с дисперсией сигнала и прочим unity gain, но это все теория)
Беда у сони (иногда, довольно редко, но наблюдаемая глазом) от дельта-кодирования с огрублением.
Ну да - посты про Сони я
Ну да - посты про Сони я читаю с интересом...
Ну и вот как это понимать ?
Ну и вот как это понимать ? Что и y Sony, и y Canon? и прочих Nicon цвета в cырых RAW могут сохраняться не в линейной, а в ;-) логарифмической шкале ? Ну, диапазон сенсоров конечен. А шкала какая ?
Сначала надо договориться о
Сначала надо договориться о терминах.
Вот у Sony новых одни и те же данные могут писаться в RAW файл
- без сжатия, как есть, 14 бит
- со сжатием с потерями: наложили сжимающую тоновую кривую (т.е. потеряли градации в светах), а потом еще и сжали с потерями.
Аналогично у Nikon - lossy/lossless форматы у одной камеры.
И?
Но к каждой высокой палочке в комплект входит одна низкая
Похоже что в этой гисторамме смешаны RGGB каналы. Тогда в одном из них может быть другой коэффициент усиления.
В камерах с параллаксной фокусировкой ещё есть дефектные пиксели (используемые для фокусировки). В них может быть тоже другой коэффициент усиления (или они могут интерполироваться).
Ilya Zakharevich
Конкретная гистограмма -
Конкретная гистограмма - красная, то есть и канал - красный. Смешивать нечего.
Вполне возможно, что это - результат "дельта-кодирования", т.е. дельты в точности в нужное место не попадают (по причине большого шага), или попадают не во всех блоках - и портят картинку.
Вообще же, в dcraw-LibRaw-RawDigger два зеленых канала в классическом байере - не смешиваются.
Похоже на блоху raw конвертирования
Что наблюдается: в редкой ситуации, raw converter выдаёт значения которые слегка выше ожидаемых Очень похоже на ту блоху в конвертерах которая видна около следов звёзд; очень интересно
(Я обсуждал эту блоху с Джимом в комментариях к http://blog.kasson.com/?p=4838.)
Ilya
"Блоха" (с бородой вокруг
"Блоха" (с бородой вокруг star trails) же не в конвертерах, а в самом формате хранения данных, ее ж видно в непроцессированных RAW-данных вполне прилично.
А в случае процессированных данных - "борода" вокруг star trails прекрасно видна и в соневском конверторе, то есть он делает так же "неправильно", как и все прочие.
Что касается "dequantization error", то там ошибка должна быть порядка единички ADC т.е. единичка или двоечка (если считать A7R - 13битной) в выходных данных, по меньшей мере в теневых участках (ниже 1400 после применения кривой). Но реальная то "ошибка" (отклонение) - сильно больше, она может быть до 32 в том же линейном участке. Эффект этого мы видим на снимке со star trails: http://blog.lexa.ru/2014/02/28/rawdigger_105_obnaruzhenie_vozmozhnoi_pos...
Блохa raw конвертирования
Непроцессированные RAW-данные это последовательность битов. В них ничего не может быть видно . Видно может стать только после того как данные разжаты в последовательность целых чисел. Блоха в декомпрессоре.
Не аргумент.
Неверно. Декомпрессор должен знать каким образом происходит округление в компрессоре. Если ошибка в этом знании, возникает bias, типично порядка 0.5*quantization_step что и наблюдается.
(Как я писал, этот bias неважен если он постояннен, или зависит только от яркости. Однако здесь он зависит от локального контраста, поэтому виден.)
Ilya
Проблема в том, что сам по
Проблема в том, что сам по себе шаг в этих 7-битных данных (дельтах) - слишком велик (в пределе, если очень сильно не повезло - до 512 единиц в линейной шкале 0-16к).
Отсюда и большая ошибка.
Да, чтобы оно было видимым - должны неудачно сойтись звезды (и в буквальном смысле тоже) - большой контраст и ровный темный фон. Что, собственно, и происходит на практике.
Да, я не согласен с тем, что
Да, я не согласен с тем, что знание "как происходит округление" - сильно поможет.
Вот у вас на выходе компрессора, скажем, возможные значения - с шагом 256. 256, 512, 768...
На вход пришло значение 384. Даже если мы знаем, к примеру, что округление всегда вниз (или всегда к ближайшему) - мы не отличим на выходе 385 от 639 (для "ближайшего") или 256 от 511 (для "вниз").
Это поможет, если мы хотим случайного шума добавить на декодировании. Тогда - да.
Статистическая модель
Высокий шаг квантизации (по сравнению с шумом сигнала) имеет следующие негативные последстия:
Блохи (bias) в деквантизаторе видны сильнее;
Шум исходного сигнала может быть заметно понижен на выходе;
Ожидаемое значение выхода Е(I) (с учётом dithering на входе) может
заметно отличаться от среднего входного значения I (постеризация).
(Дальнейшее триггерит spam filter; увы!)
Илья
Статистическая модель II
Первые две проблемы наиболее заметны и тривиально устранимы (вторая если известны шумовые характеристики входа; просто добавляем шум на выходе [output dithering]). Третья проблема немного сложнее, и ответ сильно зависит от S=step/ . В определенном интервале S она несушественна. Кроме того, вблизи границы этого интервала проблема сушестенна, но всё ещё легко устранима адаптивным деквантизатором.
Например, проанализируем Ваши данные на D800: http://blog.lexa.ru/2012/05/12/o_strannostyakh_nikon_d800.html
Я предполагаю, что насыщение происходит при 8191, так что 204 это насыщение/40 (конечно, если я ошибаюсь здесь, всё нуждается в поправке). Используя кривую с рис. 10 на http://www.rawdigger.com/howtouse/sony-craw-arw2-posterization-detection, поправленное значение это 50, соответсвенно шум 17/4. При 7-битной квантизации, шаг=16.
(Дальнейшее триггерит spam filter; увы!)
Статистическая модель III
Результат? Максимальная постеризация достигается (в предположении нормально распределённого шума) при Е(0.25)=0.17 (ошибка 0.08 всё в единицах шага квантизации). Если бы шум был 28, а не 17, ошибка бы уменьшилась в 10 раз! (Это значит, что адаптивный деквантизатор не будет иметь ни малейшей проблемы.) Так что даже наивный деквантизатор (который не смотрит на другие ближайшие пиксели) вносит ошибку не больше 1.28 шага 11-битного компрессированного сигнала.
(Дальнейшее триггерит spam filter; увы!)
Статистическая модель IV
Сухой остаток? Без чрезвычайно массивного подавления шумов, постеризация не должна быть видна даже с наивным деквантизатором. Вывод: посколько третий дефект (из списка наверху) невидим, то что видимо должно быть первым дефектом.
Илья
Очень трудно отвечать на
Очень трудно отвечать на разрезанную реплику. Зарегистрируйтесь - и будет мимо спам-фильтра будете работать.
Так вот, насыщение у Nikon D800 - на 16к.
Но я не понял, какое отношение D800 имеет к Sony A7
Данные о шуме A7 (и D800)
Извиняюсь: уехал, и не мог отвечать раньше
Так отвечайте на эту. ;-)
Я использовал те данные которые мог найти, и наиболее близкие к A7. Вы знаете экспериментально подтверждённые данные о шумах A7 на разных уровнях серого? Посколько эти сенсоры не следуют закону √(readNoise² + dropNoise²), применять что-нибудь менее непосредственное чем напрямую измеренный шум неправомерно.
Илья
Да, я не согласен с тем, что
Могу ли я спросить: ПОЧЕМУ? В тех местах где борода видна, наиболее различимая (для меня) черта это что она слегка ярче окружения. Будут ли другие черты различимы если эти блоху убрать может да, может нет, но стобы ЗНАТЬ, надо сначала убрать эту блоху.
Извиняюсь, но этот Ваш аргумент показывает что любое квантование неправомерно. Без анализа какая была у шума на входе, всё это не имеет никакого смысла. Сам шаг квантования неважен; важно только его отношение к шума (и даже с отношением ≈ 1.5 деквантователь может сделать приличный выход).
Но Вы всё это и так знаете
Илья
Да, вы совершенно правы - в
Да, вы совершенно правы - в большом количестве случаев фотонный (и другой) шум попрячет проблемы у 7-битной сони.
Но не всегда - что мы видим на примере со star trails.
тех местах где борода
А в красном - и так и сяк:
P.S. Контраст поднимал на глазок, сравнивать количественно не стоит, качественно - все видно.
Красный сильно ярче
Я повернул, выделил два прямоугольника; identify -verbose даёт:
Image: farther-from-trail.png
Geometry: 19x340+0+0
Channel statistics:
Gray:
min: 76 (0.298039)
max: 121 (0.47451)
mean: 94.4711 (0.370475)
standard deviation: 5.40536 (0.0211975)
kurtosis: 0.436501
skewness: 0.0739209
Image: near-trail.png
Geometry: 19x340+0+0
Channel statistics:
Gray:
min: 72 (0.282353)
max: 145 (0.568627)
mean: 101.85 (0.399414)
standard deviation: 8.65991 (0.0339604)
kurtosis: 1.71035
skewness: 0.857351
Я бы сказал что весьма существенно ярче
Может быть У меня было просветление после того как я увидел результаты моделирования Kasson а. У него явно была блоха. После того как он её исправил, бороды около симулированных следов звёзд исчезли. (Исправленные результаты на http://blog.kasson.com/?p=4847, не знаю как найти блохастые.)
Я не понимаю что такое
Я не понимаю что такое геометрия 19x340+0+0. Это координаты плюс нулевой размер или что?
Или вы выделили оптом два прямоугольника 19x340 (а нули - что?)
Сравнивая соневские пиксельные блоки нужно, очевидно, ходить кусками шириной 16 (если у нас поканальный байер без увеличения), убирая оттуда те яркие пиксели, которые вызвали собственно большую дельту. Усреднять вместе с треком - странно. Усреднять, захватывая как блоки с большой дельтой, так и соседние - тоже странно.
Но, по-моему, более темные полоски в зеленом прекрасно видны и так.
Я не понимаю что такое
Я не понимаю что такое геометрия 19x340+0+0
Не важно; размер=19x340. (identify может работать с многослойными графическими форматами, и слои могут быть сдвинуты.)
нужно, очевидно, ходить кусками шириной 16
Я лично не живу в идеальном мире. Я взял Ваш пример, и в нём это невозможно.
Усреднять вместе с треком - странно. Усреднять, захватывая как блоки с большой дельтой, так и соседние - тоже странно.
Who cares? Кусок near-trail.png захватывал бороду примерно на своей площади; кусок farther-from-trail.png находится очень близко, но не трогает бороду . Получается что на бороде среднее примерно на (101.85 - 94.4711)/ ярче. (Конечно, это может быть также результатом постеризации; но мне кажется что всё примеры выглядят очень похоже; при постеризации должно быть округление вверх так же часто как округление вниз, и примеры должны были бы выглядеть по-разному.)
Я продолжаю не понимать. Как
Я продолжаю не понимать. Как вырезка 19x340 может захватывать бороду на 1/3 площади, если высота блока бороды ~50 пикселов (максимальное что увидел), т.е. это 1/7 в лучшем случае?
Как удалось избавиться от основного star trail и от прочих (коих там миллиарды по очевидным причинам)?
Самый большой блок бороды, который мне удалось выделить без явных трейлов - 14x21 пиксел. Примерно 1/20 по площади от 19x340.
Ну вот нарисуйте ваши блоки поверх картинки что ли?
Но, по-моему, более темные
Это обсуждение в режиме ОБС . Я сделал то же что сделал раньше в красном (что Вы не понимаете ;-), но в зелёном канале. Результат:
Image: G-near-trail.png
Geometry: 19x220+0+0
Channel statistics:
Gray:
min: 52 (0.203922)
max: 98 (0.384314)
mean: 72.6507 (0.284905)
standard deviation: 6.96605 (0.0273178)
kurtosis: 0.345157
skewness: 0.603942
Image: G-farther-from-trail.png
Geometry: 19x220+0+0
Gray:
min: 57 (0.223529)
max: 80 (0.313725)
mean: 66.3612 (0.26024)
standard deviation: 2.92803 (0.0114825)
kurtosis: 0.530137
skewness: 0.519886
Опять ярче и на очень похожее число (6...8)!
Я бы добавил картинку как я вырезал прямоугольники, но Ваша помощь (Images can be added to this post) остаётся загадкой КАК?
Повторяю опять: я повернул изображение (так что следы звёзд стали почти вертикальными дугами), и вырезал прямоугольники так что один задевал бороду (но не след звезды) снаружи дуги звезды, а другой немного подальше (так что он не задевает бороду). Можно так славировать, что прямоугольники не задевают других видимых следов (это определяет бо льшую сторону прямоугольника чем длиннее, тем труднее славировать ).
>>Я бы добавил картинку как я
>>Я бы добавил картинку как я вырезал прямоугольники, но Ваша помощь (Images can be added to this post) остаётся загадкой КАК?
Анонимусам - увы, никак. Авторизуйтесь - будет кнопка. Но можно URL картинки привести, впрочем.