我正在尝试使用RawPy模块读取和去马赛克Python中的原始图像。不幸的是,该模块没有提供简单的去马赛克方法,而是提供了一个完整的后处理功能,这不适合我的情况,因为我想保留浮点图像,而不是使用8bit uint。我也不想应用gamma或任何其他后处理,所以我最终手动去马赛克它们。当我使用RawPy对象的raw_pattern方法加载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是从哪里来的?如果有另一种方法去马赛克原始图像,它也很合适,因为我很容易替换项目的这一部分。
感谢是提前!
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)