Однажды я задался вопросом: ‘Почему RAW файлы моей камеры Nikon D700 весят так мало?’. В поисках ответа я нашел очень интересную информацию.
Итак, при съемке я иногда использую формат файлов RAW, (у Nikon он называется NEF – Nikon Electronic Format – электронный формат файлов Nikon). RAW файлы у Nikon имеют определенные настройки, я обычно использую 14-битную глубину цвета со сжатием без потерь или без сжатия вовсе. В общем случае, NEF файлы с 14-битной глубиной цвета и без сжатия весят около 24.4МБ. На картинке ниже я показал размеры моих файлов в байтах.
Как видите, файлы имеют практически одинаковый размер. Возьмем, например, файл ARK-4820.NEF, его вес составляет 25 621 760 байт, или 24,4 МБ. Байты в Мегабайты переводятся очень просто:
25 624 760 / 1 048 576 = 24,4
Хочу обратить внимание, что разный вес RAW (NEF) файлов связан с тем, что они несут не только полезную ‘сырую’ информацию, но и небольшую картинку-превью, а также EXIF модуль данных. Картинка-превью используется для быстрого просмотра изображения на мониторе камеры. Камера при быстром просмотре не требует загрузки тяжелого 25 МБ файла, а просто достает уменьшенную картинку-превью и показывает ее на своем дисплее. Эти картинки скорее всего кодируется с помощью JPEG, а алгоритм JPEG очень гибкий и для каждой отдельно взятой миниатюры требует разный объем информации для хранения.
14-битная глубина цвета означает, что каждый из трех основных оттенков кодируется 14-тью битами памяти. Например, при нажатии на кнопку ‘вопросительный знак’ на соответствующем пункте меню камеры Nikon D700 можно прочитать следующее:
‘Изображения NEF (RAW) записываются с 14-битовой глубиной цвета (16384 уровня). При этом файлы имеют больший размер и более точную передачу оттенков’
Цвет формируется с помощью смешивания трех базовых оттенков – красного R (Red), синего B (Blue), зеленого G (Green). Таким образом, если мы используем 14-битовую глубину цвета, мы можем получить любой из 4 398 046 511 104 цветов. (любой из четырех биллионов триста девяносто восьми миллиардов сорока шести миллионов пятисот одиннадцати тысяч ста четырех цветов).
Это просто подсчитать: 16384 (R) * 16384 (G) * 16384 (B)
На самом деле, 4 биллиона намного больше чем необходимо, для нормальной передачи цвета, такой большой запас цветов используется для удобного редактирования изображения. И чтобы закодировать таким образом один ‘пиксель’ изображения, потребуется 42 бита памяти:
14 бит R + 14 бит G + 14 бит B = 42 бита
Мой Nikon D700 создает снимки максимального качества 4256 на 2832 пикселей, что дает ровно 12 052 992 пикселов (около 12 миллионов пикселов, или просто – 12 МП). Если кодировать изображения с моего Nikon D700, без применения алгоритмов компрессии и сжатия данных, и с 14-битной глубиной цвета, то получится, что нужно использовать 506 225 664 бит информации (42 бит/пиксель умножаем на 12 052 992 пикселов). Это равно 63 278 208 байтам, или 60,3 МБ памяти.
Вопрос: почему по расчетам требуется около 60-ти МБ памяти для одного изображения, а на деле я получаю файлы только на 24.4 МБ? Секрет заключается в том, что исходный RAW файл хранит в себе не ‘настоящие’ пикселы, а информацию про субпиксели CMOS матрицы Nikon D700.
В описании к камере можно встретить вот такое:
То есть в инструкции говорится про ‘эффективные пискели’ и про ‘общее число’ пикселей. Количество эффективных пискселей подсчитать очень просто, достаточно снять в режиме JPEG L Fine и получить снимок 4256 на 2832 пикселей, что равно описанным раннее 12 052 992 пикселям. Если округлить, то получим заявленные в инструкции 12.1 МП. А вот что это за ‘общее число пикселей’, которых почти на один миллион (1МП) больше (12,87 МП)?
Чтобы это понять, достаточно показать, как выглядит светочувствительный датчик камеры Nikon D700.
Если присмотреться, то матрица Байера не создает никакого ‘многоцветного’ изображения. Матрица просто регистрирует зеленые, красные и синие точки, причем зеленых точек вдвое больше чем красных или синих.
На самом деле эта матрица состоит не из пикселов (‘в обычном понимании’), а из суб-пикселов или ячеек-регистраторов. Обычно подразумевают, что пиксель – точка изображения, отображающая любой цвет. На CMOS сенсоре Nikon D700 имеются только суб-пикселы, которые отвечают только за три основных оттенка, на основе которых формируются ‘настоящие’, ‘многоцветные’ пикселы. Матрица Nikon D700 имеет около 12 870 000 таких суб-пикселов, в инструкции такие пикселы названы ‘эффективными’.
Никаких ‘реальных’ 12 МП на сенсоре Nikon D700 нет. А 12 МП, которые мы видим на конечном изображении, это результат жесткой математической интерполяции 12.87 Мега суб-пикселов!
Если усреднить, то каждый суб-пиксель с помощью алгоритмов превращается в один реальный ‘пиксель’. Происходит это благодаря соседним пикселам. Здесь как раз и скрыта ‘пиксельная уличная магия‘. Точно так 4 биллиона цветов являются тоже работой алгоритма дебайеризации.
Если говорить очень грубо, то маркетологи назвали суб-пикселы фильтра Байера ‘пикселами’ и таким образом сделали подмену значений слов. Все завязано на том, что именно нужно понимать под словом ‘пиксел’.
Вернемся к расчетам объема файлов. На самом деле NEF файл хранит в себе только по 14-бит информации для каждого суб-пиксела фильтра Байера, что фактически является той самой глубиной оттенка. Учитывая, что таких суб-пикселов на матрице имеется 12 870 000 (число приблизительное, указано в инструкции), то на хранение информации, полученной из них, потребуется:
12 870 000 * 14 бит=180 180 000 бит или 21,48 МБ
И все же я никак не получил 24,4 МБ, которые я наблюдаю на своем компьютере. Но если к полученным 21,48 МБ добавить данные из EXIF и JPEG PreviewImage то можно получить начальных 24,4 МБ. Получается, что RAW файл хранит еще:
24,4-21,48=2,92 МБ дополнительных данных
Важно: подобные расчеты можно провести и для камер, использующие CCD сенсоры и RAW файлы без сжатия – Nikon D1, D1h, D1x, D100, D200, а также JFET (LBCAST) матрицы – Nikon D2h, D2hs. На деле нет разницы, CCD это или CMOS – они все равно используют фильтр Байера и субпексили для формирования изображения.
А вот камеры Sigma c матрицй Foveon имеют гораздо больший размер RAW файла для тех же 12 МП по сравнению с CMOS матрицей, которые кодируют один реальный пиксель с помощью трех пикселей основных цветов (как и положено), это только подтверждает мои рассуждения. Кстати, на Радоживе появилась еще одна интересная статья и еще одна.
Выводы
В действительности камеры, использующие матрицы с фильтром Байера (CCD, CMOS – не важно), не имеют заявленного реального числа ‘настоящих’ пикселов. На матрице имеется только набор суб-пикселов (фото элементов) патерна Байера, из которого, с помощью специальных сложных алгоритмов, создаются ‘реальные’ пикселы изображения. Вообще, камера не видит цветного изображения вовсе, процессор камеры имеет дело только с абстрактными числами, отвечающими за отдельный оттенок красного, синего или зеленого, а создание цветного изображения – это просто математические хитрости. Собственно, вот почему так сложно добиться ‘правильной’ цветопередачи на многих ЦЗК.
Материалы по теме
- Полнокадровые беззеркальные системы. Обсуждение, выбор, рекомендации.
- Кропнутые беззеркальные системы. Обсуждение, выбор, рекомендации.
- Кропнутые беззеркальные системы, которые прекратили или прекращают свое развитие
- Цифровые зеркальные системы, которые прекратили или прекращают свое развитие
- ОВИ или ЭВИ (важная статья, дающая ответ на вопрос 'зеркалка или беззеркалка')
- Про аккумуляторы беззеркалок
- Простой и понятный средний формат
- Особо светосильные решения от китайских брендов
- Все самые светосильные автофокусные зум-объективы
- Все самые светосильные автофокусные фикс-объективы
- Зеркальный полный кадр на беззеркальном среднем формате
- Автофокусные Speed Booster'ы
- Один объектив, чтоб править миром
- Влияние смартфонов на рынок фототехники
- Что дальше (превосходство смартфонов)?
- Все анонсы и новинки объективов и фотоаппаратов
Комментарии к этой заметке не требуют регистрации. Комментарий может оставить каждый.
Материал подготовил Аркадий Шаповал.
Все-таки поправлю)))
миллион = 10^6
миллиард = 10^9, биллион тоже = 10^9, только первое название традиционное и принято в русском языке, а второе научное и международное.
триллион = 10^12
а вот число 4 398 046 511 104 – четыре триллиона триста девяносто восемь миллиардов(биллионов) сорок шесть миллионов пятьсот одиннадцать тысяч сто четыре.
Ну, точно: математическое шизодаунс-шоу! Из ФМТИ- в фотоэнтузиазисты! Математики скоро модель насморка построят и просчитают вероятное количество чихов в зависимости от инертной массы соплей… И на основании этой модели выведут оптимальное полезное количество пикселей в матрице, образуемой носовым платком… Заживём богато и счастливо!
Без математиков и их трудов, сильно подозреваю, пришлось бы нам до сих пор заниматься наскальной живописью. Ну или рисовать масляными красками.
Фильтры Байера и интерполяция – один из немногих способов получать изображения с матрицы. Если считать четыре субпиксела за один пиксел, мы получим изображение в два раза меньше по высоте и ширине. Но при этом потеряем ту незначительную часть информации, которая получается при смешанном использовании разных каналов в том числе и удвоенная яркостная информация из двух зеленых субпикселов.
Четыре суб-пикселя нельзя считать как один пиксель, так как в каждом даже не смотря на наличие фильтра содержится разная информация.
Почему же на мониторе 3 субпикселя RGB вы считаете как один? Там тоже в каждом разная информация. В Байере разница в плюс одном зеленом субпикселе, который должен в теории повышать четкость в ущерб цвету.
В дополнение к Александру.
Зеленый, дополнительный пиксель сделан для повышения чувствительности к зеленому цвету.
Так сложилось, что человек почти равнодушен к синему, а зеленый ему нужнее.
Есть такая штука, спектральная чувствительность: ЕY = 0,30ER+ 0,59 ЕG + 0,11ЕB
Собственно на компьютерах 16 бит цвета кодируются как 565 (RGB) бит на пиксель, один бит дает диапазон измерения в два раза больше. Что почти попадает в приведенную выше формулу.
Что бы с математикой сильно не заморачиваться сделали еще один доп пиксель, что так же проще технологически – сделать все пиксели одинаковыми.
Поэтому 4 пикселя (RGBRG) легко превращаются в 0,30ER+ 0,59 ЕG + 0,11ЕB, а потом и в RGB.
Вот-вот, не фотографы, а получатели изображений, фоторегистраторы, потребители цветовой информации, пикселосчётчики… Количество мазков кисти в картинах Леонардо не пробовали перечесть? Здря!! Работы-море, и мозг при деле, не сохнет…
Молодой человек, завидовать мозгам лучше молча, а при этом лучше еще и учиться, чтобы разрыв сокращать, и зависть уменьшалась
Так хочется вставить свои “5 копеек” :)
—
1) Во-первых, я надеюсь, что после того, как все узнали о механизмах дебайеризации, в их жизни ничего не поменяется: они не начнут массово избавляться от цифровых камер, стирать любимые фотографии, вспоминать о суициде (“О, как я мог все это время терпеть такой обман?”) и т.д.
—
2) Во-вторых, кто-то задал производителям камер вопрос о том, что ОНИ ПОДРАЗУМЕВАЮТ под словом “PIXEL”? Почему все собравшиеся здесь уверены, что их обманули, надули, кинули? Нас что Nikon или Canon убеждали в том, что речь идет о RGB, RGGB или каких-то других пикселях с несколькими каналами? Нам говорят о количестве ячеек матрицы в целом (total pixels) и о том, сколько УНИКАЛЬНЫХ комбинаций (т.е. того, что затем станет пикселями на экране) камеры и софт собирают из этих ячеек (effective pixels).
—
3) В-третьих, речь не идет о заполнении каких-то пустот несуществующими усредненными (интерполяция) или прогнозируемыми данными (экстраполяция). Речь идет именно о том, что субпиксели во время дебайеризации могут по-разному комбинироваться. И каждая комбинация уникальна, а значит – может претендовать на то, чтобы стать экранным пикселем.
—
4) В-четвертых, все-таки чертовски хорошо, что еще не подняли тему того, как эти непонятным путем появившиеся пиксели по-разному отображаются на разных экранах и уж тем более – как из них формируется печатный растр! :)
—
Все, “5 копеек” вставил, побегу фотографировать, а то чувствую, что теряю драгоценное время.
Подписываюсь под каждой “копейкой” :)
ваших 5 копеек ровно 4.
Вы тоже производите фотоаппарааты? ))
Подумываю над этим :).
А кавычки для того и нужны, чтобы можно было одни вещи называть другими.
Ну хоть один образованный человек.
То, что описано в статье, вовсе не новость, а для интересующихся, а в особенности физиков, давно известная истина. Так, как сделано – единственно правильное решение. А что вы хотели бы? Чтобы каждый пиксель появлялся из триады RGB? И этот народ после этого заявляет что 36 мегапукелей на кропе это много? Какие бы тогда стали размеры микролинз, если бы каждый пиксель формировался из трех чувствительных элементов? Учите матчасть и тогда вы не будете удивляться реальному положению вещей. Производитель как раз о нас и заботится, делая пиксель “жирным” и никакого обмана здесь нет.
>>Так, как сделано — единственно правильное решение
Чем оно правильно? Тем что у вас фотки стали весить больше, и кол-во дутых мегапикселей круче.
>>Производитель как раз о нас и заботится, делая пиксель «жирным» и никакого обмана здесь нет.
Святая наивность. Производитель это буржуй который заботиться только о своей прибыли и не о чем больше. Например маркетологи искусственно программно зарезают некоторые фишки, таким образом принуждая покупать более дорогие модели. Подменяют термины чтобы циферки были побольше умалчивая, что этот термин подменен.
Пиксели вовсе не дутые, а реальные!!! Для того, чтобы заявлять о дутых пикселях – освойте сначала матчать!!! Очень уж захотелось при этих словах сказать гадость, но воздержусь. Да вы бы первый завыли бы о дифракционном пороге, отсутствии резкости и огромных шумах, в следствие минимальной площади светочувствительных элементов, если бы каждый пиксель формировался из трех сенсоров. Запомните: бОльший по размерам светочувствительный элемент собирает бОльшее количество фотонов, отсюда уменьшение шумов, меньший дифракционный порог, лучшая резкость.
Про размер элемента вы правы, но это не делает деб-цию отличной от размытия. Деб-ция по сути есть банальное размытие. С сенсора 10*10, я получу 100 байт инфы об объекте. Если сделать фотку 10*10 то это 300 байт (3 байта на пиксель). Откуда вы взяли 200 байт новой инфы об объекте? А вы ее усреднили из соседних пикселей это банальное размытие.
Мысленный эксперимент. Берем фотку скажем 100х100 (желательно порезче). И по сетке Байера в каждом пиксели оставляем только 1 субпиксель, а остальные 2 субпикселя гасим. Сможете вы использую дебайеризацию этой фотки получить первоначальное изображение? Скажете чему равнялась яркость погашеных субпикселей в каждом пикселе? Точно не скажете, максимум из соседних размажете.
Про матчасть, вы щечки то сдуйте. Если не согласны, приводите аргументы, а пустое сотресание воздуха бесполезны.
Одно и то же количество информации из RAW-файла можно по-разному анализировать и интерпретировать. С разными качеством, скоростью, точностью, – в зависимости от поставленных задач. И от этого многое будет зависеть.
—
Проведите какой-нибудь непростой снимок в RAW через разные конвертеры: современный и десятилетней давности. Почувствуйте разницу в шумах, деталях, цвете. Мы что увеличили количество исходной информации? Нет, мы просто научились с ней лучше работать и на выходе получили значительно более интересный вариант.
Производитель – это буржуй, у которого в штате есть хорошие корректоры, юристы, адвокаты, маркетологи и другие умные люди. Поэтому производитель ЧЕТКО ЗНАЕТ, что ОН НАЗЫВАЕТ словом “pixel”. А если это не совпадает с моим, Вашим или другими мнениями, это уже наши проблемы.
—
Нет обмана, есть слово, в которое разные люди вкладываю разный смысл.
Для Вас, например, пиксель – это видимая на экране точка, характеристики которой описываются яркостными составляющими каналов RGB.
Для, скажем, печатника – условная точка, которая убого пытается отобразиться на экране после конвертации в виде RGB-пикселя, но реально имеющая 4 канала (CMYK).
У производителей конкретных фотокамер применительно к конкретным матрицам есть свое понимание пикселя.
—
Не существует единственно правильного решения, что нужно было бы называть “пикселем” или “субпикселем”. У каждого свое мнение по этому поводу. Важно, что все мы, горячо обсуждая эту тему, теперь понимаем порядок вещей и можем называть вещи своими именами.
И на экране и на печате пиксель это элементарная часть изображения которая может быть любого цвета, а не только красного или синего или зеленого. Производители фотокамер трактуют термин пикселя не как все, но зато так как им выгоднее. А производителей жеских дисков гигабайт это 10Е9 байт, а не 1024*1024*1024. Потому что им так выгоднее.
Вот это точно – в самое яблочко
Приставка “гига-” по ISO обозначает 10 в девятой степени и ни что иное.
Это Вы “гиби-” путаете с “гига-“.
Изучите материал о двоичных приставках:
http://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8
В смысле, по СИ и JEDEC :)
Вадим, правда полностью на вашей стороне. Я, в свою очередь, даже не догадывался, что такое количество людей даже не представляет процесс сбора информации с матрицы. Думал, что уже все цифрофотографы понимают данный процесс. А оказывается …
Ну, конечно, пиксель может быть любого цвета. Только этот цвет нужно как-то обозначить. Монохромные пиксели (не обязательно – белые-серые-черные) можно описать одним каналом, цветные – тремя и более, при этом они могут быть по-разному представлены (HSL, LAB, RGB, CMYK и т.д.).
Производители камер указывают общее количество монохромных пикселей (которые несут информацию в одном канале, независимо от того, какой это канал).
На экране пиксели – многоканальные (т.е. мы их такими воспринимаем). Сколько там каналов, есть ли субпиксели, зависит от технологии формирования изображения.
А при цветной печати пиксели тоже многоканальные. И каналов, обычно, хотя бы на один больше, чем при отображении на экране. И тоже все зависит от технологии печати.
—
Т.е. пиксели бывают разными. Понимание этого простого тезиса облегчит жизнь.
Вот почитайте http://www.cambridgeincolour.com/ru/tutorials/camera-sensors.htm , только вдумчиво, очень доходчиво расписано.
http://arttower.ru/wiki/index.php?title=%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%91%D0%B0%D0%B9%D0%B5%D1%80%D0%B0
Тут в конце пример с гусем. И в конце пишут:
Как видно на картинке, это изображение получилось более размытым, чем исходное. Такой эффект связан с потерей части информации в результате работы фильтра Байера.
Т.е. Фильтр Байера не востанавливает исходную инфу на 100%! он ее интерполирует (размазывает) из соседних пикселей.
Уматовый пример :)))
А исходное изображение что получено без дебайеризации? Или на пленку снято, а потом отсканировано?
Никто же не говорит: снимем на три-четыре-… матрицы одновременно, получим true-многоканальные пиксели, сравним это с убогими “решетками Байера”, – и, типа, почувствуй разницу.
В этой эпической дискуссии народ пытается донести всего несколько тезисов:
1) восстановленная из ЛЮБОГО источника ЛЮБАЯ информация о ЛЮБОМ объекте не является оригиналом и имеет дискретное качество. Вывод: ходите на живые концерты, путешествуйте, наблюдайте за живыми закатами, нюхайте цветы, наслаждайтесь каждой ложкой борща, любите любимых и т.д.
2) если Вы – не инженер (по натуре), а фотограф (по призванию, или хобби у Вас такое) меньше заботьтесь о глубоких технических подробностях процесса получения фотографии (как заряжаются ячейки сенсора и т.д.). Пусть об этом думают инженеры. Вывод: практикуйтесь, совершенствуйте свое мастерство. Железо со временем станет лучше. А станете ли лучше Вы – зависит только от Вас.
3) чтобы не чувствовать себя обманутым, уточняйте интересующие Вас вещи. Люди часто по-разному называют одно и то же или наоборот вкладывают разный смысл в одинаковые слова. Вывод: умение находить общий язык помогает и в магазине, и на работе, и в семейной жизни.
4) в спорах рождается истина. Мы тут не для того, чтобы зафлудить Аркадию страничку или выяснить, кто умнее. Я вот по-новому взглянул на некоторые аспекты получения и анализа изображения. Мне это интересно, т.к. я – врач-офтальмолог. Кто-то с этого дня начнет правильно пользоваться приставками “кило-“, “гига-“, “киби-“, “гиби-“. Вывод: конструктивные дискуссии делают мир лучше :)
Про гиби- не знал. Это получается винда не по стандарту показывает, кто мог подумать.
Кстати, да, из-за Майкрософта многие плюнули на соблюдение стандартов. Я об этом тоже совсем недавно узнал.
Если честно, то мне совершенно пофиг, как они называются и работают. Я на это повлиять не смогу. И говорим мы про видимый спектр … нашими гибкими и вместе с тем очень не совершенными глазами. Все мы видим и оцениваем по-разному. Фигли тогда забивать голову ерундой. А то начнется сейчас: у тебя матрица не та, у тебя “гранаты не той системы” …
Я не считаю, что меня кто-то обманул или ввел в заблуждение … меня больше волнует вопрос о покупке еще одной тушки или стекляшки :), поездки по разным интересным местам … и чтоб мои убогие глаза успели насмотреться на красоту.
Я кажется понял причину деб-ции:
1. Для производителя более привлекательная цифирка мегапикселей, ну это понятно.
2. Сейчас требование к фотоаппарату давать готовую наиболее качественную jpg-фотку на выходе. И чтобы пользователю не приходилось заморачиваться с фильтрами. Т.е. если нужно применить какой то фильтр для улучшения видимого качества фотки, то фотоаппарат должен это сделать сам, а не оставить пользователю. Вот получил он матрицу значений 10*10. Конечно исходной инфы там всего 100 байт, и кому они нужны тому есть raw. А кому нужна готовая фотка, то фотоаппарат сделает увеличение реального разрешения в 2*2=4 раза путем интерполяции недостающих пикселей (деб-ция), потом резкости добавит, цвета поправит, еще чего-нить. В конце получается фотка наилучшего видимого качества. Да если сделать правильно из матрицы 10*10 фотку 5*5, то в ней не будет дутой инфы, но выглядеть она будет действительно хуже. Т.е. для себя я сделал вывод такой, из пикселей написанных на фотоаппарате 1/4 реальных, а остальны интерполированны. Может это и не плохо, людям же важно видимое качество, а как оно получено реально снято или интерполировано им не важно.
Не поняли. Возьмите изображение, полученное из RAW, уменьшите его в два раза, а потом увеличьте до оригинального размера. А затем сравните “дутые пиксели” после дебайеризации с вашими честными пикселями. Пример не совсем корректен, но все же определенные выводы сделать можно.
Фильтр Байера – грамотное инженерное решение, позволяющее оптимально использовать площадь матрицы. “Честное решение” – брать квадрат, размещать в нем три датчика R,G,B (один угол оставлять пустым), усреднять все до одного пикселя и получать с матрицы размером 4000х3000 пикселей картинку со сторонами 2000х1500. Достаточно добавить в “пустой” угол еще один зеленый датчик и мы получим “лишних” 60% яркостной информации (вклад зеленого канала – 60%, 30% – красного, 10% – синего). Ее можно просто выбросить, а можно “подмешать” при помощи мат. преобразований (более сложных, чем простая линейная или даже кубическая интерполяция) к картинке, получив значительно большее яркостное разрешение.
>>Возьмите изображение, полученное из RAW
Где его взять? Любой конвертер отдает уже обработанное.
http://arttower.ru/wiki/index.php?title=%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%91%D0%B0%D0%B9%D0%B5%D1%80%D0%B0
Вот тут взяли фотку гуся. Это как бы исходный объект. Из нее сделали матрицу Байера, т.е. что бы получила матрица идеального фотоаппарата с идеальным объективом. Потом к этой матрице применили деб-цию, т.е. как бы это сделал фотоаппарат. Результирующая фотка не равна исходной! Не равна! Вот если бы у фотика были честные rgb-пиксели, то получилось бы исходное изображение и без всяких д-ций. А так это простое размытие, что и видно при сравнении исходной и конечной фоток гуся.
Да д-ция это наверно чуток более сложное преобразоание чем простая линейная или кубическая интерполяции, но это не значит, что это не интерполяция. Д-ция самая настоящая интерполяция. Из вики:
Интерполя́ция, интерполи́рование — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.
Оно и есть.
> Результирующая фотка не равна исходной!
Кто-то утверждает обратное?
Если поступать “по-честному”, как вы просите, то нужно будет из каждого набора по четыре пикселя слепить один, а не четыре, как это делает алгоритм дебайеризации. В результате ваше изображение будет в два раза меньше по ширине и высоте. И если вы его увеличите, чтобы оно совпадало по размеру с оригинальным изображением, то результат после дебайеризации будет выглядеть ЗНАЧИТЕЛЬНО лучше, потому как получен с использованием той информации, которую вы предлагаете выкинуть.
Фильтр Байера позволяет располагать светочувствительные элементы в виде решетки, использование двух зеленых пикселей вместо одного увеличивает разрешение и дает лишнюю информацию для лучшей передачи зеленых оттенков (и косвенно яркости).
Можно располагать элементы друг над другом, есть и такие матрицы. Волны разной длины проникают на разную глубину, поэтому можно получить в три раза больше информации с одного “геометрического пикселя”, но там тоже не все гладко. Можно расщеплять световой поток на три и направлять свет на три разных матрицы, но это дорого и громоздко.
Если взять почти любую картинку (особенно низко разрешения) и увеличить ее разрешение 2*2 раза путем билинейной интерполяции она тоже станет выглядеть ЗНАЧИТЕЛЬНО лучше и без 4-го канала. Но это ведь не повод так сделать со всеми файлами увеличив их размер в 4! раза.
Да как я написал выше, требование сейчас к фотикам по всей видимости такое: фотик должен выдать готовую jpg-фотку максимально возможного качества, проделав все возможные фильтры сам. Размер фотки значения не имеет. Как она получена из реальных пикселей или дутых это не столь важно.
Вот чего-то Олег никак понять не может, чем одноканальные (монохромные) пиксели от многоканальных (цветных) отличаются. И ничего тут не поделаешь…
—
Соответственно, и интерполяция как усреднение тут не при чем. Дебаеризация – это не усреднение, а получение многоканального пикселя из группы монохромных.
—
При этом, конечно, нужно использовать все возможные комбинации групп, т.к. это даст больше РЕАЛЬНОЙ информации, чем использование каждого монохромного пикселя только один раз с последующим апскейлингом.
—
И этот гусь дурацкий… Люди взяли изображение из набора RGB-пикселей, урезали их до монохромных, т.е. выбросили 2 канала (2/3 информации), а потом говорят: “Видите, изображение деградирует”. КОНЕЧНО, оно деградирует, информации-то осталась треть! И только благодаря дебаеризации на это изображение вообще еще можно смотреть.
Да люди выбросили 2/3 информации. Ну так и фотик тоже 2/3 информации не берет, скажем зеленая составляющая света попавшая на красную или синюю ячейку просто пропадает. Все корректно с гусем.
А как по вашему правильно нужно сделать пример гуся? Сами подумайти есть фотка гуся скажем 100*100*3=300 байт, матрица Байера возьмет только 100 байт. Как не крути из 100 байт обратно теже 300 не получишь. Не согласны? не проблема давайте сделаем гуся как вы хотите. Поясните как.
Выбросить и не снять – разные вещи. Эти моноканальные пиксели несут информацию только об одном канале. Но они же не перестают быть пикселями. И нам не обещали какие-то конкретные пиксели. Обещали пиксели – дали пиксели. А вот какие это пиксели, и чем они отличаются от экранных благодаря Вам мы очень подробно выяснили и “разжевали”.
Вообщем да. Нигде не написано, что это трехканальные пиксели. Если неохота дутой инфы в файле можно поставить в фотике разрешение пониже и тем самым получить чесный перевод пикселей Байера в rgb, тут производители оставля.т выбор пользователю. Наверно зря я на них наговариваю.
Ну тогда разрешение у мониторов тоже можно писать по вертикали в 3 раза больше, там тоже никто не обещал rgb-пиксель :).
Пиксели камеры и экранные пиксели – это как кафель. Есть дешевле, есть дороже, есть побольше, есть поменьше. Но и то, и то – кафель, и то, и то – пиксели.
Поскольку пиксели матрицы камеры одноканальные (монохромные) они содержат в три раза меньше информации, чем пиксели экранные. Они не равнозначные. Но они же пиксели. Честные. Настоящие.
—
Как еще проще объяснить?
Я не знаю. Человек упрямо считает, что его надувают производители. Мол, жидомасонский сговор, все тупо увеличивают картинку в два раза, шарпят и продают как настоящую. Так я его расстрою, в JPEGе RGB конвертируется в YUV – яркостный канал и 2 цветоразностных. Яркостный кодируют весь, а у цветоразностных оставляют по два пиксела из четырех. И это после дебайеризации! Дурят народ, дурят…
Я твердо знаю, что из матрицы Байера 10*10 нельзя точно восстановить первоначальную картинку 10*10*3 никаким способом включая д-цию. Итоговая картинка будет более размыта чем оригинал и масоны тут не причем, чистая математика. Как кодирует JPEG не знаю спорить не буду (но всегда думал, что там чего то в ряд Фурье раскладывают). Но ваша логика такова, давайте к изображению добавим 200% дутых пикселей, все равно их часть потеряется после JPEG сжатия. Замечу, что JPEG это всегда ухудшение качества картинки (видно на контрастных картинках), и после JPEG потеряются не только дутые, но и реальные!
Выше приведенный пример с гусем очень показателен. Или вы Роман тоже с ним не согласны? Давайте сделаем пример с гусем как вы хотите, и убедимся что первоначального качества картинки мы в итоге не получим.
:)))
Нет никакой “первоначальной картинки” гуся. Есть гусь :). Это ОРИГИНАЛ ОБЪЕКТА СЪЕМКИ. Мы никогда не сможем получить идеальную картинку. Увидели контур – хотим увидеть части тела; увидели части тела, хотим увидеть перышки; увидели перышки хотим рассмотреть каждую “ворсиночку”; увидели каждую “ворсиночку”, хотим увидеть каждого клещика, сидящего на ней, и т.д. Нет предела совершенству.
—
Так вот ГУСЯ (а не его фотографию) фотографируют камерой на матрицу с баеровской решеткой. Это и есть ОРИГИНАЛ ИЗОБРАЖЕНИЯ.
—
Информации при съемке не становится меньше. Ее ровно столько, сколько вообще физически изначально может заполучить этот тип матрицы в этой камере при этих настройках и этих условиях съемки. Т.е. сколько-то монохромных пикселей.
Еще раз повторяю, монохромный – не значит “в оттенках серого”. Просто каждый пиксель несет информацию об одном канале (в данном случае – красный, синий, зеленый, зеленый №2).
—
Если бы у нас изначально была многоканальная (например, многослойная) матрица, а сверху мы бы зачем-то повесили баеровскую решетку, мы бы, конечно, потеряли около 2/3 информации. Но мы ничего не потеряли, у нас изначально менее совершенный сенсор. Что с ним ни делай, больше информации он нам не “накопает”.
—
Затем исходная информация тоже никуда не девается: она анализируется, интерпретируется и конвертируется в многоканальные пиксели, понятные экрану монитора. Можно это сделать в один проход (каждый монохромный пиксель используется один раз), можно – в несколько (рассматриваются все возможные комбинации групп по 4 смежных пикселя + возможно группы бОльших размеров и иррегулярные по форме). Чем больше проходов – тем больше шансов выжать максимум из имеющейся информации, тем с большей вероятностью полученное изображение будет соответствовать ожиданиям. Но количество исходной информации при этом опять же не меняется.
>>Нет никакой «первоначальной картинки» гуся. Есть гусь…
Неправильно. Мы не можем бесконечно подробно описать живого гуся это верно. Но мы представили себе абстрактного гуся который состоит из квадратиков. Ну это как будто мы фоткаем не самого гуся, а фоткаем фотку гуся. Допустим у нас есть фотка гуся 100*100*3. Идеальный фотик с идеальным объективом с честой матрицей 100*100*3 сфоткав такую фотку гуся очевидно даст на выходе исходный снимок гуся. Идеальный фотик с матрицей Байера 100*100*1 даст матрицу Байера, из которой путем преобразований де-ции не получается первоначальная фотка гуся, а получается более размытая фотка. Что и показано по той ссылке.
>>Информации при съемке не становится меньше. Ее ровно столько, сколько вообще физически изначально может заполучить этот тип матрицы
Да. Эта матрица способна получить от объекта скажем 10*10=100 байт инфы, ее меньше не становится, т.к. мы ничего не выкидываем. Ее становится больше, мы добавляем, дутые 200 байт. Как будто мы реально 300 байт от объекта получили, а на самом деле только 100.
Смотрите, мы должны 1 пиксель одноканальной матрицы Байера перевести в 3х-канальный. Пусть это зеленый пиксель. Но мы физически не знаем значения ни красного ни синего цвета объекта на месте этого зеленого пикселя. Матрица не сняла, отсекла эту инфу. Где ее взять, мы берем ее из соседнего пикселя, наивно полагая, что значение цветов у соседних пикселей примерно похожи. Но это вовсе не так. Например, исходного объект это яркая желтая (красный+зеленый) точка размером в 1 пиксель на зеленом фоне. И эта точка целиком попала в этот 1 одноканальный зеленый пиксель. В соседних пикселях никакой инфы о ее красной составляющей не будет, там инфа только о зеленом фоне. Де-ция даст нам, эту точку зеленого цвета. В то время как честная трехканальная матрица увидит, что точка обладает красным каналом и в итоге мы получим желтый цвет точки.
“Например, исходного объект это яркая желтая (красный+зеленый) точка размером в 1 пиксель на зеленом фоне. И эта точка целиком попала в этот 1 одноканальный зеленый пиксель. В соседних пикселях никакой инфы о ее красной составляющей не будет” – Ваши размышления только лишний раз подтверждают незнание матчасти :)
Такая ситуация невозможна, т.к. перед матрицей еще стоит специальный фильтр.
Говорят на некоторых моделях антиальясинговый фильтр не стоит перед матрицей. И с чего вы взяли что радиус размытия этого фильтра больше размера пикселя? Может он размывает на 0.1 пикселя, и тогда яркая точка размером в пиксель вполне может быть.
Камер без фильтра — полторы модели. Причем отсутствие этого фильтра преподносится как инструмент для профессионалов, людей, знающих зачем им это нужно.
А по поводу степени размытия — он как бы для того и стоит, чтобы размывать так, чтобы на соседние пиксели попало. Даже если на 0.1 пикселя, это будет означать, что на соседей часть информации уже попадет. На практике там больше. Еще раз повторяю, изучайте матчасть, прежде чем делать выводы о дутости и интерполяции.
P.S. Аркадий, удалите, пожалуйста, выше мой аналогичный комментарий, он не туда цитирован, все съехало.
Еще один “честный вариант” – увеличивать количество пикселей на матрице, уменьшая их линейные размеры. Но тут мы упираемся в целый ряд проблем. Растут шумы (из-за плотной компоновки элементов на матрице больше их нагрев, больше вносимые в замеры искажения). Начинаются проблемы с дифракцией (об этом писали чуть выше). Уменьшается чувствительность, т.к. число фотонов от источника света все же конечно и по мере уменьшения размера светочувствительного элемента количество попадающих на него от одной и той же сцены фотонов будет уменьшаться. Это – путь в никуда.
>>Еще один «честный вариант»
Не еще один, а единственный честный вариант увеличить разрешение это увеличить число пикселей.
>> Это — путь в никуда.
А производители матриц то и не знают. Кол-во пикселей на матрице все больше и больше.
> А производители матриц то и не знают. Кол-во пикселей на матрице все больше и больше.
Если при этом растет площадь матрицы – вполне оправдано. А в остальном, как раз, и срабатывает маркетинг преимущественно. Ладно, проблему шумов по мере совершенствования технологии как-то решают. Но дифракцию еще никто не отменял, да и разрешение оптики должно соответствовать разрешению матрицы, иначе от прироста не будет никакого смысла.
>> Я твердо знаю, что из матрицы Байера 10*10 нельзя точно восстановить первоначальную картинку 10*10*3 никаким способом включая д-цию.
Это совершенно бесспорно. ЕСЛИ БЫ существовала идеальная матрица, каждый физический пиксел которой выдавал бы трехкомпонентное изображение (и такие существуют, я уже писал, но они далеко не идеальны), то в результате съема информации с этой матрицы мы бы получали картинку лучшего качества. Но мы на данном этапе можем только определять уровень освещенности датчика и формировать в ответ на это какое-то напряжение, которое потом оцифровываем. Если вы возьмете матрицу 4000х3000 и не закроете ее цветными фильтрами, то получите свое честное 12МП монохромное изображение. Если мы поверх матрицы поместим еще и сетку Байера из цветных фильтров, то вы получите еще и информацию о цвете. Часть яркостной информации мы потеряем из-за фильтров. Но, еще раз повторю, этот массив будет нести больше информации, чем массив из 2000х1500 усредненных пикселов.
>> этот массив будет нести больше информации, чем массив из 2000х1500 усредненных пикселов
Матрица Байера 4000х3000 несет 12МБ инфы. Если честно сжать ее до 2000х1500 RGB фотки, то это будет 9МБ инфы, т.е. потеря 25% (т.е. вместо 2-х зеленых каналов всего 1). А если сделать де-цию и растянуть ее до 4000х3000 RGB фотки, то получим 36МБ инфы. Т.е. или потерять 25% или раздуть на 200%. В принципе надуть эти 200% мы можем в любой момент даже в реалтайме прям при просмотре фотки.
Но 12 Мпикс маркетологу куда привлекательней чем 3Мпикс. Им хочется писать 12. Но маркетологи тоже не могут переводить фотку честно, т.к. если на камере написано 12 Мпикс, то она не может выдавать на выходе фотку на 3 Мпикс. Поэтому на фотике пишут реальные одноканальные 12Мпикс, а на выходе теже 12 но частично дутые трехканальные. 12=12 и все совпало и у клиентов нет вопросов.
> Матрица Байера 4000х3000 несет 12МБ инфы
4000х3000х14 бит = 21 МБ (уже не 12)
> В принципе надуть эти 200% мы можем в любой момент даже в реалтайме прям при просмотре фотки
Вы RAW обрабатывали когда-нибудь? Сколько приличный конвертер его откраывает и “накручивает” обращали внимание?
Во всем остальном вы ничего понимать не хотите, поэтому даже не вижу смысла убеждать в обратном.
Конвертер работает ровно столько времени сколько позволяет вам железо. Фотик делает это куда проще и быстрее. В компах проц мощнее, вот алгоритм круче. Завтра сделают комп в 100 раз быстрее, программисты напишут фильтр еще тяжелее, и комп будет думать теже пару секунд и делать фотку на 1% привлекательней. Это не показатель.
>>Во всем остальном вы ничего понимать не хотите, поэтому даже не вижу смысла убеждать в обратном
А в чем вы хотите меня убедить? В том что де-ция это не интерполяция? В том что Матрица Байера 10*10 способна получить инфу от объекта более чем 100 байт? Или в том что из 100 байт реальной инфы можно сделать 300 байт реальной инфы? В чем?
Роман, да бесполезно доказывать :)
Пусть человек и дальше ресайзит фотки в 4 раза и спит спокойно, думая что ничего не теряет и этим только экономит место на жестком диске :) А мы глупые будем и дальше снимать полноразмерные фото, у которых треть информации придумана :)
> Как кодирует JPEG не знаю
А вот поинтересуйтесь. Для начала преобразование RGB – YUV. Яркостный канал сохраняем полностью, два цветоразностных прореживаем. Можно убрать половину пикселй из каждого канала U и V и разница будет плохо видна глазу. В результате 33% информации отбросили сравнительно безболезненно. В видео, кстати, отбрасывают еще больше – около 50%.
Ну а дальше еще веселее.
Полученную информацию делим на блоки, каждый кодируем отдельно. Каждый блок подвергаем БПФ. Вместо набора значений каждого пикселя получаем набор частот. Там режем в зависимости от коэффициента сжатия верхние частоты, огрубляя изображение все больше. И только потом применяем собственно сжатие по методу Хаффмана.
Вот перечитал я, Роман, Ваш пост и подумал, что вопросы интерпретации и преобразования информации граничат с философией :).
Например:
– беру свой .nef файл объемом 14 623 438 байт;
– пытаюсь сжать его в WinRAR, best compression – получаю 14 582 483;
– ладно, результат не супер, открываю .nef в Photoshop в sRGB, 8 бит/канал (а сколько у нас там было?) и сохраняю в .tif без сжатия, interleaved, без цветового профиля, получаю 36 671 508 байт;
– аналогично, но применяю сжатие LZW (lossless) – 18 310 864 байт;
– аналогично, но вместо LZW прессую .tif WinRARом – 13 580 860 байт (вот, где начинается уличная магия!).
Теперь пытаюсь подготовить изображение к печати. Чтобы все было прозрачно, вручную конвертирую открытый в Photoshop в sRGB, 8 бит/канал RAW-файл в CMYK, сохраняю в .tif без сжатия – 48 879 468 байт.
Аналогично, но с LZW – 30 024 372 байт.
Аналогично, но несжатый .tif прессую WinRarом – 24 462 690 байт.
Что интересно: по сути, мы ничего особенного с исходной информацией не делали. В первом случае она была преобразована для адекватного отображения на экране. Во втором – для вывода на печать. Даже не берусь судить, где она реальная, где – раздутая. Я бы сказал, что это разные аватары одной и той же информации (если не считать потери при преобразовании в другие цветовые профили).
Вопросом остается: как упакованный раздутый 3-канальный .tif может занимать МЕНЬШЕ места, чем аналогично упакованный .nef? Там меньше РЕАЛЬНОЙ информации?
В RAW у вас несжатые данные с матрицы, без дебайеризации, при конвертации в TIFF получаете уже дебайеризированное изображение, субпикселей уже в три раза больше, поэтому оно и весит в три раза больше.
Тут понятно, вопросов нет
А вот уже упаковка и сжатие – вопрос другой, все зависит от алгоритмов и допустимых потерей. RAR простые изображения почти не сжимает, вы убедились. Скорее всего, таки что-то потерялось.
Потерялась битность, добавились каналы. И тут вдруг оказалось, что при условии грамотной упаковки информации полновесный трехканальный растр может занимать объем меньше, чем убогий НЕдебаеризированный исходник.
А философия заключается в том, что считать РЕАЛЬНЫМ количеством сохраненной визуальной информации? Размер исходного RAW? Размер полновесного растра? Что из описанного мной является РЕАЛЬНЫМ объемом информации, что СЖАТЫМ, а что РАЗДУТЫМ?
Ведь получается, что одна и та же информация может занимать различный объем в зависимости от способа представления и среды использования.
Ну и считайте, что вы, по сути, имеете на выходе с матрицы изображение, закодированное примерно тем же образом, что применяется в форматах сжатия изображений. Ведь когда в JPEG отсекается часть цветовой информации никто не кричит, что его надувают? А там ведь самый простой способ сжатия – в два раза по каждой стороне, а потом растянуть. Однако же возятся с более сложными преобразованиями.
Короче, я очень сложно попытался выразить мысль, что количество полезной информации и занимаемый ею объем – разные вещи.
—
И в последнее время становится все сложнее понять, находится она в нативном, сжатом или раздутом состоянии.
Файлы сжатого RAW и JPEG с моего Nikon D1X занимают практически равный объем, из-за чего снимаю только в RAW :) И то, и то сжато, хотя понятно, что в JPEG потерь больше.
Вообще, спасибо за приятную и познавательную дискуссию.
А самое главное, что оставляя мысли о мегапикселях здесь, я за эти дни отснял много приятных кадров, думая о совершенно иных вещах :)
Ну исходя из определения количество информации, снятой с датчиков – есть какая-то величина. А вот способ ее представления может быть различным. Ниже энтропия – меньше размер сообщения, оно все представляет из себя информацию. Больше энтропия – больше сообщение.
Часть информации мы можем терять, адаптируясь под свойства система вывода (монитор) и системы восприятия (глаз). Например, монитору не вывести более 8 бит на пиксел (в основном). А глаз не различает оттенки цвета в тенях. И т.д. Тут уменьшается количество информации и, соответственно, величина сообщения. А вот за счет сжатия мы уменьшаем энтропию, оставляя сообщение тем же по объему. Преобразовали в формат 16 или 32 бита – увеличили энтропию (пресловутые “дутые пикселы”).
На D7100 RAW на 15,6 МП занимает от 20 до 26 МБт. Записывается RAW без сжатия. Но судя по тому как разнится итоговый объем, то все-таки сжатие явно используется, но без потери качества и отсечения какой-либо информации. Увы, но это лишний раз доказывает, что структура файла RAW для фотографа это не более, чем “черный ящик” с которым умеют работать лишь избранные.
Любительские камеры, Д7100 в том числе, не поддерживают RAW без сжатия.
таки вы правы про сжатие. однако как гласит стр.67 инструкции Д7100, в моем случае сжатие на 20-40%. именно, “на”, а не “до”. т.е. без сжатия RAW должен быть не менее 15,6 МП*14 бит/канал*3 канала/ 8 байт/бит=81 МБт. Допустим прокатывает 40% сжатие: 81*0,4=32,8 МБт. и это без метаданных и превью. те есть все равно “темный лес” получается.
Все на самом деле просто. Не нужно умножать на 3 канала.
не могу понять почему не нужно умножать на 3 канала. суммарно матрица дает цветовой охват в 42 бита (т.е. по 14 бит на канал). 42 бита это считайте 6 байт. т.е. оцыфровка одного пикселя (RGB) занимает 6 байт. т.е. для 15,6 мегапикселей нужно 93,6 МБт.
Дмитрий, Вы невнимательно читали статью, или не читали вовсе. На матрице 15,6 не полноцветных мегапикселей, а одноцветных. Поэтому ничего умножать не надо.
Кажись уловил хитрость с манипулированием данных с матрицы. Если один пиксель это RGGB. То из из двух физических пикселей (RGGB+RGGB) можно получить на самом деле три пикселя. за счет “середин” соседних ячеек (первая и третья ячейки это самостоятельные отдельные ячейки, а вот вторая это вторая половина первой и первая половина второй). для такой модели физических пикселей нужно в два раза меньше. причем этот же метод идет при горизонтальном и вертикальном проходе кадре. следовательно физически достаточно иметь в 4 раза меньше пикселей. тогда мои 15,6 МП превращаются в 3,9 МП. а это 3,9мегапискеля*42 бит/пиксель/8 бит/байт=20,5 МБт. Это уже явно близко к тому, что имеем. + метаданные + превью.
Чтобы далее исключить дискуссии на тему пиксель на матрице это три цвета или один, задал вопрос службе поддержки Никон:
” Дмитро Тищенко: Добрый день, Елена! Меня интересует несколько странный вопрос по матрице D7100.
Дмитро Тищенко: Согласно инструкции пользователя ее размер составляет 24 мегапикселя. Вопрос такой: что под пикселем подразумевает производитель? В данном случае пиксель это полноценная ячейка матрицы (RGGB) или отдельный цвет (RGGB=3 пикселям)?
Елена: Полноценная ячейка”
То есть один пиксель это полноцветный трехцветный пиксель.
“То есть один пиксель это полноцветный трехцветный пиксель” – это чушь, отвечавший человек явно не в теме. Почитайте хотя бы Википедию, прежде чем задавать такие вопросы и уж тем более верить таким ответам. Все давно многократно описано и расписано.
Вот в комментариях проскакивала программа RawDigger – она-то и может положить конец дискуссии на тему один или три цвета. Открываем любой RAW-файл, лезем в настройки, снимаем галочку 2х2, и смотрим в режиме RAW composite. Это и будет то, что увидела матрица, без дебайеризации; при увеличении прекрасно виден массив Байера.
Это ответ тех поддержки. Я им еще задал вопрос в догонку на их же ответ относительно явного не совпадения объема получаемых данных. ответ свелся к закрытости алгоритмов обработки данных. чуть выше я высказал мысль, что итоговые пиксели можно получить при значительно меньшем объеме начальных ячеек фильтра Баера (этого никто не запрещает производителям мариц не говорить об этом – нас, то все равно интересует итоговый размер матрицы в пикселях (RGB)). с RawDigger попробую дополнительно проделать указанный фокус (правда вчера изучал подробные метаданные одного из РАВ-ов. Там речь тоже шла об пикселях и они соответствовали разрешению итового изображения или реальное разрешение изображения нужно тоже делить на 3). Интересно сможет ли мне программа показать общее число ячеек составляющих цвета.
http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%BA%D1%81%D0%B5%D0%BB%D1%8C – дает ответ, что это цвет.
http://ru.wikipedia.org/wiki/%D4%E8%EB%FC%F2%F0_%C1%E0%E9%E5%F0%E0 – речь идет, не об пикселях, а элементах (фильтрах).
RawDigger после отключения дебайеризации как раз покажет то, что восприняла матрица (кстати, там можно включить отображение неэффективных пикселей, у моего Canon 350D получилась черная полоса слева и сверху). Можно увеличить изображение, зайти в настройки и поставить галочку 2х2, будет наглядно видно как работает дебайеризация. Разрешение изображения не меняется, меняются цвета пикселей, с одноцветных на полноцветные.
По ссылке есть такое “Также Пикселем ошибочно называют элемент светочувствительной матрицы (сенсель — от sensor element)”
Но, число сенселей простым смертным ни о чем не скажет (данная статья тому доказательство – не все поняли смысл), поэтому называют мегапикселями, в расчете на то, что пользователи смогут тем самым понять, какое разрешение будет у фотографии (вся эта кухня с дебайеризацией не волнует 99 % фотографирующих).
RawDigger – попробовал детальнее изучить ее. И таки разобрался далее. Да, таки на матрице речь идет об субпикселях (каждая составляющая цвета по отдельности) на самом деле. У меня их получилось нужные 15,6 мегапикселей. Т.е. 15,6мегасубпикселей*14 бит/субпиксель + частичное сжатие без потери качества (на 20-40%) = 18,7-24,9 МБт + превью в 90-95 кБт+метаданные. что очень похоже на правду. НО! После конвертации в тот же TIFF без сохранения каналов цвета получаем те же 15,6 МП, но уже именно после дебайеризации. НО! Массив Байера позволяет спокойно и честно интерполировать почти те же 15,6 мегапикселей. Как?!
Фрагмент фильтра Байера:
RGRGRG…
GBGBGB…
RGRGRG…
GBGBGB…
…
Формирует пиксели (RGB) из субпикселей (самый простой и явно тупой вариант):
RG + GR + RG
GB BG GB
GB + BG + GB
RG GR RG
RG + GR + RG
GB BG GB
т.е. из массива 4х4 имеет 9 полноценных “честных” пикселей.
для того, чтобы скомпенсировать недостающие ряды есть дополнительные пиксели. Так похоже на правду?
почитайте мой ответ ниже!
Моё мнение – ЧЕСТНЫЙ пиксель это тот цветовые составляющие которого больше ни в каких ДРУГИХ пикселях НЕ УЧАВСТВУЮТ!
А тут нас просто дурят! Интерполяция чистой воды.
ИМХО как то все зациклились на цветных пикселях и упустили один момент.
Камера с заявленными 12 мегапикселями действительно делает 12ти мегапиксельный ЧЕРНО-БЕЛЫЙ снимок. Дебайеризация, это по сути востановление цветов для, таки, двенадцати мегапиксельного снимка. Создание одного цветного пикселя из четырех все таки привело бы к ухудшению детализации снимка.
Интересно, а можно программным способом восстановить исходное черно-белое изображение?
RawDigger вам в помощь
Не даёт камера с 12 мп черно-белый снимок в 12 мп, потому как субпиксели закрыты разными цветными фильтрами, выглядит результат как сетка и это надо как-то смешивать (и подправить яркость каналов не поможет, каждый цветной фильтр меняет яркость разных оттенков), то есть всё ещё нужна дебайеризация. И в итоге придётся мириться с шумами (последствия дебайеризации). Почему? Потому что есть смещение. В этой точке мы сняли с красным фильтром, а со смещением вправо – с зелёным. Но это разные точки изображения. Совмещая их мы либо теряем разрешение либо привносим шумы.
Есть экспериментаторы, которые убрали цветные фильтры с матрицы и таким образом получили ДЕЙСТВИТЕЛЬНО черно-белые снимки. Гуглить: Scratching the Color Filter Array Layer Off a DSLR Sensor for Sharper B&W Photos. Вот после такой манипуляции дебайеризация уже не нужна. Вы можете это проделать самостоятельно.
А помоему нет! У меня 600д – 18.1 мегаСУБпиксель и типа 17.8 реальных мегапикселов.
Представьте что объектив сфокусировал до такой степени что зернышки изображения попадали в размер одного субпиксела.
И попала бы в кадр на фоне неба – проволока.
она бы прошлась черным пятном по одному ряду субпикселей. при дебаеризации мы получим градиент из 4-х пикселей плавно меняющийся от цвета неба до половино яркости цвета этого неба и назад опять до цвета неба. но черного пикселя мы бы не получили никогда ибо у каждого дебаерного пикселя есть пара черных 100% и пара светлых 100%.
при дебаеризации с шагом +2 тоесть пикселизация ненакладывая два субпикселя от прошлого квадратика на новый – мы бы получили строгий ровный 75% затененный пиксель у которого соседи – цвета неба а он на 75% темнее соседей. Это в идеальном случае но как известно настолько резких объективов нет и обычный китовый на диафрагме ф11 может покрыть только 2.5 субпикселя максимальной своей резкостью. тут при дебаеризации на 17 мегапикселов мы получим градиент ещё более размазанный. А вот если дебаерить на 4.5 мегапиксела – получим 100% черный пиксель в месте прохождения проволоки и 100% цвет неба вокруг. Налицо обычнейшая линейная апроксимация. когда колво реальных пикселей по горизонтали и вертикали увеличивают вдвое а недостающие получают просто интерполяцией. Проблема осложняется тем что я в фотошопе никак из рава не смог добиться 4.5 мегапикселов но с четко выраженной проволокой на изображении!
Потому вопрос – никто не встречал никаких программ которые могут сделать из рава тифф с реальными 4.5 пикселями у которых между собой нет общих субпикселов?
Ну вообще-то под пикселем матрицы всегда подразумевалась группа чувствительных элементов из которых формируется конечный пиксель. К слову говоря конечный пиксель на экран выводится тоже не одной точкой, а такой же группой разноцветных точек
Да, но если на мониторе 1024*720 пикселей, то все понимают, что за отображение отвечает 1024*720*3RGB составляющих (т.е. с триадой на реальный пиксель), здесь же ситуация другая.
какая другая? суть та же, сделать изображение которое соответствует заявленным пикселям. И кстати далеко не всегда в мониторе 3RGB
Лучше всего суть иллюстрирует изображение, показанное в статье https://radojuva.com.ua/wp-content/uploads/2013/08/native-pixels-and-sub-piexels.jpg, а также, сама статья, которую неплохо было бы прочитать. В мониторе может и не всегда 3RGB, а вот среди подавляющего числа матриц используется байеровский патерн.
Тут ещё в чем подлянка байеровской матрицы RGBG: так так в байере количество зеленых пикселей в два раза больше чем остальных, то именно зеленый канал имеет самую высокую чувствительность, самый широкий ДД и самый низкий уровень шумов. Это создает определенные проблемы с точностью экспозамера, которые возможно иногда решить используя хитрый способ ручной установки ББ с учетом разницы в поканальной чувствительности байера — т.н. UniWB
А вообще, жаль что производители ЦФК забросили матрицу RGBW: https://ru.wikipedia.org/wiki/RGBW , где один пиксель вообще без фильтра, т.е “белый”. Такая матрица, конечно же, формировала более бледные — “пленочные” цвета, но зато с экспозамером, чувствительностью, шумами и ДД дело бы обстояло значительно лучше.