Zar*_*rie 3 python image-processing libraw
我正在尝试使用 RawPy 模块在 Python 中读取原始图像并对其进行去马赛克。不幸的是,该模块不提供简单的去马赛克方法,而是提供完整的后处理函数,该函数不适合我的情况,因为我想保留浮点图像,而不是使用 8 位 uint。我也不想应用伽马或任何其他后处理,所以我最终手动对它们进行去马赛克。当我使用已加载 dng 图像的 RawPy 对象的raw_pattern方法时,我得到以下结果:
In[23] : raw_image.raw_pattern
Out[23]: array([[0, 1],
[3, 2]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)
但 Adobe 的 DNG 文档说
Digital Negative Specification
September 2012
CFAPlaneColor
...
Value
See below
Default
0, 1, 2 (red, green, blue)
Run Code Online (Sandbox Code Playgroud)
我很困惑这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)
Run Code Online (Sandbox Code Playgroud)