从Raspberry Pi HQ相机处理RAW文件

图片


当大多数人拍照时,他们只需要按一下相机或手机上的快门按钮,通常以众所周知的JPEG格式显示的即可观看的图像几乎会立即出现在屏幕上。但是,在某些情况下,需要对此JPEG的制作进行更多控制。例如,您可能想要增加或减少除噪功能的活动,或者您可能会觉得颜色不太正确。



然后RAW文件可以解救。在这种情况下,原始图像是从照片矩阵的像素接收的数据的直接传输,没有经过额外的处理...通常,这些文件采用相对标准的Bayer图像格式,以Bryce Bayer的名字命名,Bryce Bayer在1974年为柯达公司工作时发明了该技术。这样做的目的是防止机载图像处理器(ISP)将原始拜耳图像转换为可见图像,而是自己使用单独的程序(通常称为RAW转换器)来完成。





如图所示,Bayer图像每个像素只能记录一种颜色。



有时将原始图像与较旧的负片技术进行比较,尽管许多相机制造商使用自己的格式,但最常见的RAW文件类型是Digital Negative(或DNG)。 ),由Adobe在2004年进行了描述。问题仍然存在-如何从Raspberry Pi中获取DNG文件,以便可以使用您喜欢的RAW转换器对其进行处理。



从Raspberry Pi获取原始图像



许多读者会熟悉raspistill应用程序,该应用程序从相机接收JPEG图像。Raspistill具有-r命令,可将原始数据附加到JPEG文件的末尾。JPEG查看器仍将照常显示此文件,而忽略背面附加的许多兆字节的原始数据。可以使用终端中的命令获取此类JPEG + RAW文件:



raspistill -r -o image.jpg


不幸的是,JPEG + RAW格式正是相机自带的格式,RAW转换器不支持该格式。要使用它,我们需要将其转换为DNG格式。



PyDNG



该实用程序将Raspberry Pi本地JPEG + RAW文件转换为DNG。可以从github.com/schoolpost/PyDNG下载PyDNG,那里还有更详细的说明。简而言之,我们需要遵循以下步骤:



git clone https://github.com/schoolpost/PyDNG
cd PyDNG
pip3 install src/.  #  PyDNG  Python3


PyDNG可以用作较大的Python脚本的一部分,也可以单独运行。继续raspistill示例,我们可以输入输入行:



python3 examples/utility.py image.jpg


可以使用各种RAW转换器处理生成的DNG文件。其中一些是免费的(例如RawTherapee或dcraw,尽管不再开发或支持后者),并且有许多众所周知的商业选项(Adobe Camera Raw或Lightroom)。



白平衡和色彩矩阵



此时,使用Raspberry Pi处理RAW文件的问题之一是获得有意义的颜色。在此之前,由于没有进行颜色平衡,因此图像带有绿色偏差,并且绿色通常是最敏感的颜色通道。更糟糕的是,由于原始图像中的RGB值仅反映了传感器像素对不同波长的敏感度,因此它们先验地无法与我们用眼睛感知的颜色准确关联。这是白平衡和颜色矩阵派上用场的地方。



我们需要正确的白色倍增器,以使场景的中性部分显得中性。我们可以使用raspistill中有关它们的有根据的猜测,将其包含在JPEG + RAW文件中(或者您可以在图像中的某个位置(例如,在灰卡上)测量自己的值。然后,需要使用矩阵和查找表将相机的颜色转换为sRGB或Adobe RGB。



结果



先前尝试转换RAW的结果以及应用更新版本的PyDNG后获得的结果。











































DCP文件



对于熟悉DNG文件的人,我们提供带有摄像机配置文件(二进制格式)的DCP(DNG摄像机配置文件)文件的链接。尝试不同的文件,我们鼓励用户进行实验,创建自己的文件并发布结果!



  1. PyDNG内置的基本颜色配置文件,其结果如上所示。它相对较小,可以视为JSON文件
  2. 带有参考表的增强型较大型材,可实现色彩的均衡渲染。
  3. 与上一个相似,但进行了一些修复以改善皮肤和天空的颜色。


但是,这些文件具有几个功能:



  • 它们针对一台特定的Raspberry Pi高质量相机进行了校准,而不是针对某些普通的“典型”模块进行校准。
  • 光源触手可及-特别是D65灯的传输似乎不准确。
  • 仅当色温与校准涉及的两个色源相差不大时,校准才有效-在我们的示例中,此范围是2900K至6000K。


因此,仍有改进的空间。但是,在许多模块上的测试表明,这些参数是向前迈出的重要一步。



致谢



Jack Hogan用于使用DCamProf进行颜色矩阵校准,Zsabe Nagi用于向PyDNG添加新功能。



附加材料



  • 那里有许多资源描述将原始Bayer图像转换为可见的RGB或YUV图像。例如,杰克博客上的一篇文章
  • 要了解颜色矩阵在DNG文件中扮演的角色,请参阅其规范特别是,这将在第6章中介绍。



All Articles