Rawpy необработанное изображение
Я пытаюсь читать и показывать необработанные изображения в Python с помощью модуля RawPy. К сожалению, модуль не предоставляет простой метод демозаики, но представляет собой полную функцию постобработки, которая не подходит для моего случая, так как я хочу сохранить изображения с плавающей запятой вместо использования 8-битного uint. Я также не хочу применять гамму или любую другую постобработку, поэтому я в конечном итоге демозирую их вручную. Когда я использую метод raw_pattern объекта RawPy, куда я загрузил изображение dng, я получаю это:
In[23] : raw_image.raw_pattern
Out[23]: array([[0, 1],
[3, 2]], dtype=uint8)
Но документация Adobe DNG гласит
Digital Negative Specification
September 2012
CFAPlaneColor
...
Value
See below
Default
0, 1, 2 (red, green, blue)
И я запутался, откуда эти 3? Если есть другой способ создания необработанного изображения, он также подходит, поскольку мне легко заменить эту часть проекта.
Спасибо заранее!
1 ответ
rawpy (или, вернее, базовое программное обеспечение libraw/dcraw) обрабатывает два зеленых канала как отдельные каналы. Взгляните на https://en.wikipedia.org/wiki/Bayer_filter где вы можете видеть, что матрица фильтра Байера состоит из 4-пиксельных квадратов, которые имеют один синий пиксель, один красный пиксель и два зеленых пикселя. Причиной наличия двух зеленых пикселей является то, что человеческое зрение намного более чувствительно к зеленому и будет легче воспринимать шум. Добавляя больше зеленых пикселей, шум в зеленом канале может быть уменьшен во время демозаики / постобработки.
Вместо того, чтобы выполнять демозапись самостоятельно (что может быть довольно сложно), другим вариантом может быть отключение всех видов опций постобработки и вывод в виде 16-битного целочисленного изображения. Я использовал эту технику при обработке астрофотографических изображений. Посмотрите этот пример из обзора проекта:
with rawpy.imread(path) as raw:
rgb = raw.postprocess(gamma=(1,1), no_auto_bright=True, output_bps=16)
imageio.imsave('linear.tiff', rgb)