2

我正在尝试使用 RawPy 模块在 Python 中读取和去马赛克原始图像。不幸的是,该模块没有提供简单的去马赛克方法,而是一个完整的后处理功能,不适合我的情况,因为我想保留浮点图像,而不是使用 8bit uint。我也不想应用 gamma 或任何其他后处理,所以我最终手动去马赛克。当我使用已加载 dng 图像的 RawPy 对象的raw_pattern方法时,我得到以下信息:

In[23] : raw_image.raw_pattern
Out[23]: array([[0, 1],
                [3, 2]], dtype=uint8)

但 Adob​​e 的 DNG 文档说

Digital Negative Specification
September 2012
CFAPlaneColor
...
Value  
See below
Default 
0, 1, 2 (red, green, blue)

我很困惑这3是从哪里来的?如果有另一种去马赛克原始图像的方法也是合适的,因为我很容易替换这部分项目。

谢谢是提前!

4

1 回答 1

4

rawpy(或更准确地说,底层的 libraw/dcraw 软件)将两个绿色通道视为单独的通道。查看https://en.wikipedia.org/wiki/Bayer_filter,您可以在其中看到 Bayer 过滤器矩阵由 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)
于 2018-12-10T19:53:48.903 回答