Можно ли увеличить глубину цифрового цвета с помощью интерполяции?

У меня есть набор фотографий, отсканированных с глубиной цвета 8 бит. Можно ли увеличить глубину цвета цифровым способом? Я понимаю, что простое увеличение глубины цвета ничего не даст мне, если только оно не интерполируется аналогично увеличению пикселей фотографии.

Любые программные инструменты для этого? Я использую макинтош.

Ответы (5)

Почему вы хотите увеличить глубину цвета? Глубина цвета не имеет ничего общего с тем, насколько интенсивными или яркими выглядят цвета, а только с переходами между похожими цветами.

Другими словами, основным последствием низкой глубины цвета является появление полос или постеризации в плавных цветовых переходах.

Увеличение глубины цвета само по себе не устраняет полосатость, поскольку 8-битные значения, такие как 1010 0111, просто заменяются 16-битными значениями, такими как 1010 0111 0000 0000, что по сути является тем же числом, но использует больше битов.

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

Однако вы можете добавить шум, чтобы эффективно рандомизировать младшие биты, которые в противном случае устанавливаются равными нулю. И это борется с появлением полос, и это единственная причина, по которой я вижу увеличение глубины цвета, следовательно, это ответ на ваш вопрос:

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

«Вы не можете использовать интерполяцию, так как интерполировать нечего». Хорошо, я это вижу, и это похоже на то, что предлагает @fortran. Кажется, было бы полезно добавить глубину цвета перед изменением цвета/экспозиции... или это не так?
@ Винсент, увеличивая глубину цвета перед выполнением нескольких настроек цвета / контрастности изображения, безусловно, предотвратит любую дополнительную постеризацию или появление полос.
Если кто-то действительно преобразовал и интерполировал 8-битное изображение в 16-битное изображение, а затем добавил шум на более низких уровнях, тогда увеличение битовой глубины должно быть ценным. Вы потеряете детали, но уменьшите или устраните вероятность добавления постеризации (или других артефактов) во время любого дальнейшего редактирования после преобразования.

Вы можете увеличить глубину цвета за счет уменьшения пространственного разрешения.

Т.е. если уменьшить разрешение изображения на 50% по каждой оси, можно получить 2 дополнительных бита глубины цвета.

Стоит ли? Я сомневаюсь в этом...

Два дополнительных бита могут иметь большое значение. Если у вас есть только 8 бит цвета и вы добавите еще два, глубина цвета увеличится с 16,7 миллионов цветов до более чем 1 миллиарда цветов . Конечно, есть оговорки по этому поводу... большинство экранов в любом случае могут отображать только 8-битный цвет, а экраны, которые могут отображать 10-битный цвет, как правило, дороги и требуют специальной настройки программного обеспечения и калибровочного оборудования. Можно спорить о том, ПОЛЕЗНО ли увеличение битовой глубины, однако это не уменьшает ценности дополнительных двух битов глубины цвета.
Помните, что каждая новая цифра (бит) в двоичном формате увеличивает доступный числовой диапазон в два раза. Когда дело доходит до цвета, поскольку в RGB есть три компонента, это увеличение усугубляется.
Будет ли это действительно значимой прибылью? Вы имеете дело с обрезанными значениями уже в пикселях, которые вы смешиваете, поэтому я бы поставил под сомнение, что на самом деле вы не получаете на 2 бита больше глубины цвета, по крайней мере, не значимым образом по сравнению с исходной сценой.
@jrista Я имел в виду, что изображение теряет информацию в процессе ... 4 8-битных пикселя на канал содержат больше информации, чем один 10-битный пиксель на канал.
@AJHenderson Ну, это зависит от текстур (например, если есть муар), разрешения объектива ... Но если это работает для шумоподавления, я не понимаю, почему это не должно работать для добавления дополнительных бит или два информации.
@fortran — работает для шумоподавления, потому что сводит доступную информацию к среднему шуму по сигналу. Для глубины цвета ошибка округления уже учитывается при начальном усечении. Округление комбинации двух округленных значений, которые уже являются ошибкой, не будет иметь значимого отношения к реальной жизни. Он будет производить больше цветов, но они не будут более точными, чем исходное захваченное изображение, поэтому никакой (или минимальной) дополнительной информации не будет, если только я не упустил что-то в математике.
Шум, динамический диапазон, биты... в зависимости от того, как на это посмотреть, это одно и то же. По иронии судьбы, еще один способ улучшить детализацию/битовую глубину/динамический диапазон изображения — это добавить шум к младшим битам, а не уменьшать масштаб (интерполировать) вообще. Это действительно зависит от ваших конечных целей, и я заявил, что есть определенные предостережения (которые, я думаю, относятся к сути вопроса) ... но нельзя отрицать, что два дополнительных бита в конечном итоге означают, что у вас есть значительно более широкий диапазон представимых значений. Ценность этого будет в улучшении широты редактирования... меньше шансов...
...артефакты, возникающие при дальнейшем редактировании изображения после понижения дискретизации. Эта улучшенная свобода редактирования может быть очень важна, если вам нужно выполнить значительный объем редактирования отсканированной фотографии ... вы не сможете фактически ВИДЕТЬ это преимущество на экране, если у вас нет подходящего монитора с 10-битным разрешением. 16-битный LUT (т.е. 8-битный экран все еще может ПОКАЗАТЬ постеризацию, даже если она фактически не существует в базовых данных.)
@AJHenderson Учитывая, что всегда есть ошибки выборки (даже при низком ISO), статистически говоря, вы можете получить значение ближе к реальному значению путем усреднения ... Допустим, что «реальное» значение в области, которая почти черная, составляет 0,3 /255; датчик мог дать 1/255 в одном из четырех случаев и 0/255 в трех других; если мы уменьшим эти 4 пикселя, мы получим значение 0,25/255, что ближе к реальному значению, чем любой из отдельных пикселей.
@jrista как ни странно, несколько месяцев назад у меня появилась идея воспользоваться преимуществами понижения частоты дискретизации, сохранив лишние биты глубины цвета: сделать тональную компрессию HDR в телефонах, которые не поддерживают RAW. Но у меня было предчувствие, что это будет в основном эквивалентно выполнению тональной компрессии в 8-битном изображении с высоким разрешением, а затем последующему понижению дискретизации для уменьшения артефактов.
@fortran - да, это может стать немного ближе, но также возможно, что на самом деле это было изменение текстуры, которое было бы потеряно. Общее разрешение падает, и полученная информация по-прежнему не обязательно точна, даже если она сохраняет часть потерянного разрешения в виде лучшей глубины цвета. Я бы сказал, что это больше сохраняет часть потерянных данных, чем действительно увеличивает глубину цвета. Усиление будет незначительным по сравнению с исходным изображением, снятым в этом разрешении с заданной глубиной цвета.
@AJHenderson: Конечно, понижение частоты дискретизации не увеличит какие-либо внутренние данные. Как я уже сказал, основной причиной преобразования в более высокую битовую глубину и понижение разрешения будет увеличение свободы редактирования . Вы не увидите никакого увеличения деталей и не обязательно какого-либо фактического увеличения IQ в целом. Что вы получите, так это больше свободы для настройки параметров, не вызывая неприглядных артефактов, возникающих в процессе редактирования (особенно разрушительных процессов редактирования). понизить дискретизацию.
@jrista - да, я не возражаю против этого, и я думаю, что упомянул это как преимущество в своем ответе, но вы можете получить это, просто добавив 0 бит в новую наименее значащую цифру без потери разрешения. (Хм, в конце концов, я не упомянул, почему вы хотели бы это сделать в моем ответе. Думаю, я подумал об этом, но не написал. Я обновил, чтобы включить это.)
@AJHenderson: Нулевой бит ... или лучше, просто добавьте немного шума к младшим битам. Небольшое количество шума влияет на улучшение динамического диапазона (или то, что Ктейн настаивает, на самом деле является «диапазоном экспозиции»: theonlinephotographer.typepad.com/the_online_photographer/2012/… ).
@jrista - я бы хотел отметить, что диапазон экспозиции на самом деле не меняется, поскольку самые яркие и самые темные точки остаются самыми яркими и самыми темными, просто увеличивается количество различных значений между ними, что также немного отличается. И я полагаю, что шум на основе локальных выборок пикселей для установки бита наименьшего порядка будет работать хорошо, даже если он может немного смягчить изображение.
@AJ: Точно ... отсюда и значение увеличенной битовой глубины. Вы получаете больше уровней, единственный способ их действительно использовать - это что-то сделать с изображением ... интерполировать (как вы упомянули в своем ответе) ... или добавить шум.

Да, но вы ничего не выигрываете. Если у вас есть два соседних пикселя с интенсивностью 128 и 127, новый интерполированный (между этими двумя) будет иметь интенсивность 127,5. Таким образом, вы увеличили глубину цвета (значение 127,5 не может храниться в 8 битах, но "может" храниться в 9 битах - как значение 255). Если вы интерполируете больше пикселей, вы должны больше увеличить глубину цвета - удвоить размер = добавить дополнительный бит.

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

Правильно ли @fortran, что это возможно только в том случае, если изображение уменьшено? Мне не ясно, как с помощью бикубического... можно было бы изменить значение пикселей. Под этим я подразумеваю, что это, казалось бы, размывает цвет. Это улучшение? Знаете ли вы какие-либо примеры того, как это делается, или как я мог бы это проверить?
Есть два очень похожих взгляда на это. Вы можете понижать или повышать дискретизацию. Я выбираю повышающую дискретизацию, потому что вы упомянули об этом в Q. Понижающая дискретизация на моем примере: у вас есть два пикселя, 128 и 127. Путем понижающей дискретизации вы получите один пиксель их «среднего» (когда он линейный), таким образом, 127,5. В остальном то же самое. Для получения дополнительной информации об интерполяции см. вики: en.wikipedia.org/wiki/Interpolation . Вы увидите, что в случае полинома вы получите не среднее значение между двумя выборочными значениями, а нечто совсем другое.

Вы можете изменить формат файла и сопоставить исходные значения с их новыми уровнями, но это не будет более точно отражать исходное изображение, поскольку данные из оригинала будут потеряны. Простое изменение форматов — это относительно простая линейная операция (добавление одного или нескольких нулевых битов справа от каждого значения и обновление цветового пространства). Основное преимущество этого заключается в том, что он устраняет ошибку округления, приводящую к дальнейшим потерям.

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

Увеличение представления глубины цвета мало что вам поможет, но есть много вариантов улучшить изображение, которое у вас есть. Поскольку вы работаете на Mac, очевидным первым местом для начала является iPhoto, но есть также онлайн-инструменты, такие как pixlr , которые позволят вам быстро и просто настроить уровни контрастности и цвета.

Я понимаю это, но в конце концов это все еще 8 бит. Я думаю, я просто хотел бы лично убедиться, что «увеличение представления глубины цвета мало что поможет» ;-)
Это случай простой математики, думайте о битах как о процентах, а не как действительных числах. Если у вас есть что-то яркое на 50%, представление его как 50,00% добавляет к точности 2 значащих цифры, но на самом деле ничего не делает для изменения основного значения.