Почему X-мегапиксельный сенсор производит X МБ данных (в файлах изображений)? - Фотопедия
1 голос
/ 28 ноября 2016
  • Предположим, у меня 1 мегапиксельный сенсор, это означает, что у меня 1 * 10 ^ 6 (1 мегапикселей) пикселей.
  • Если и только если каждый пиксель представляет плотность своего цвета на глубине 8 бит, то есть 8 бит = 1 байт, означает, что каждый пиксель равен 1 байту
  • Тогда у нас есть number_of_pixels * byte = 1 * 10 ^ 6 * byte = 1 Мегабайт данных.

Так почему же, когда большинство датчиков имеют глубину более 8 бит, у нас все еще есть файлы изображений с размером, очень близким к числу мегапикселей, которые у нас есть в камере?

Ответы [ 4 ]

6 голосов
/ 28 ноября 2016

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

Но необработанные файлы также сжимаются, как правило, без потерь. Если из всех лунок пикселя датчика меньше уникальных значений, данные могут быть сжаты меньше, чем если бы для каждого пикселя было больше 2 ^ 12 или 2 ^ 14 возможных тональных значений. Необработанные файлы с моей 24-мегапиксельной камеры обычно занимают от 22 до 29 МБ каждый в зависимости от содержимого. Некоторые камеры даже используют сжатие с потерями для хранения необработанных файлов.

Способ получения цвета заключается в фильтрации каждого пикселя для одного из трех цветов: красного, зеленого и синего. Но все, что измеряется с другой стороны фильтра по этому пикселю, это то, сколько (то есть насколько яркому) свету было разрешено пройти через фильтр. Каждый из фильтров по-прежнему пропускает некоторый свет, который является цветами, отличными от точного цвета фильтра. Однако чем дальше цвет от цвета фильтра, тем меньшее количество этого цвета, попадающего на фильтр, будет проходить сквозь него и хорошо записываться пикселем. Некоторый зеленый цвет проходит через красный и синий фильтры. Некоторые красные и синие проходят через зеленый фильтр. Сравнивая разницу в яркости смежных и окружающих пикселей, отфильтрованных для разных цветов, процесс, известный как распадение слоя или демозаика, может интерполировать значения R, G и B для каждого пикселя. Только после интерполяции цвета значение каждого цвета для каждого пикселя будет указано с использованием 8 битов для цвета для 24 битов на пиксель . В случае JPEG эти данные также будут сжаты. По сути, JPEG обозначает, какие пиксели являются одинаковыми точными комбинациями всех различных комбинаций R, G и B, содержащихся в изображении. Вот почему изображения, которые в основном имеют одинаковые однородные цвета, могут быть сжаты меньше, чем изображения, которые имеют практически все возможные комбинации цветов.

Если вы выводите необработанный файл размером 28–30 МБ с 24-мегапиксельной камеры после его разложения в 16-битный формат TIFF, файл, скорее всего, будет иметь размер более 100 МБ, поскольку он записывает 16-битные данные для каждого из трех цветов для каждого пикселя .

5 голосов
/ 28 ноября 2016

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

2 голосов
/ 29 ноября 2016

Нет, ваша начальная математика неполная. Позвольте мне объяснить математику несжатых файлов.

  • 1 Mpx квадратное фото. Хорошо.

  • 8 бит = 1 байт. Хорошо.

Если бы изображение представляло собой только черно-белое изображение, его размер составлял бы около 1 МБ. Но RGB-файл это около 3 Мб, потому что он имеет 3 канала. Подготовьте одно изображение 1000x1000 и сохраните его в 24-битном формате BMP. 2.93MB.

Но это для несжатого изображения.

Сохранить точное пустое изображение в некоторых других форматах. В PNG будет мерять ... 23к. 1/123 от размера несжатого файла BMP.

Вес файла сжатого изображения не имеет ничего общего с этой математикой. Это связано с:

  • Размер файла (ширина и высота)

  • Глубина в битах

  • Алгоритм сжатия

  • Содержание самого изображения. Плоский белый квадрат сжимается очень эффективно, но фотография ландшафта с большим количеством деревьев и дома не будет столь же эффективной.

  • Если файл поддерживает его, другие слои или каналы.

2 голосов
/ 29 ноября 2016

Датчики - это обычно 12 бит необработанных данных на пиксель, что составляет 1,5 байта на пиксель. (Некоторые предлагают 14 бит, 1,75 байта на пиксель.) Тем не менее, данные обычно сжимаются в файле меньшего размера, то есть ДАЛЕЕ 12 или 14-битные данные, но результат сжатия, вероятно, может, возможно, грубо приблизиться к одному байту на пиксель (меньше, чем 1,5 байта в любом случае, в файле).

Но МБ НЕ 1 * 10 ^ 6 * байт. Миллион есть, а мега - это, по сути, миллион, однако МБ обрабатывается особым образом (не на мегапиксельное определение), а МБ составляет 2 ^ 20 байт, или около 1 048 5576 байт (поэтому размер в МБ примерно на 5% меньше размера в миллионах ). Мегапиксели правильно используют миллионы, но байты обычно используют 2 ^ 20, что составляет 1024x1024.

Когда значение raw интерполируется в RGB, например, в JPG, тогда JPG составляет 8 бит на цвет, а затем три байта на пиксель (когда RGB и JPG).

...