Python使用rawpy获取相机图像的原始RAW数据

       使用相机拍摄的RAW图像,往往带有厂商自定义的文件头,而我只想获取到文件图像部分的原始Bayer数据,然后自己进行去噪、去马赛克、白平衡等ISP算法。

示例:获取索尼相机拍摄的.ARW文件中的原始图像数据。以下代码同样适用于其他类型相机拍摄的RAW图,如佳能的.CR2文件。

import rawpy

openpath = "D:\\IMG\\RAWSample\\Img.ARW";
savepath = 'D:\\IMG\\RAWSample\\Bayer.raw';

with rawpy.imread(openpath) as raw:
    bayer_visible = raw.raw_image_visible;
    width = bayer_visible.shape[0];
    height = bayer_visible.shape[1];

       将读取到的RAW原始数据打印出来,可以知道原始数据图像的宽和高,打印出原始数据的二维矩阵可以知道图像的位深度。

print(bayer_visible.shape)
print(bayer_visible)

将二维整型数组转换为字节流,每两个字节存储一个整型数据,低位在前,高位在后。

with open(savepath, 'wb') as f:
    for x in range(0,width):
        for y in range(0,height):
            data = int(bayer_visible[x][y]);
            f.write(data.to_bytes(2, byteorder='little'));

得到的RAW文件格式为:宽度6024,高度4024,深度:12位,颜色滤波阵列为RGGB。

文件所在链接:https://pan.baidu.com/s/1Jgkg0Uqh7Bvw6avcbpQb2Q 
提取码:p0wx 

Img.ARW图像效果:

Bayer.raw经去马赛克后的效果:

要得到上面图像的效果,还需要白平衡,色彩矩阵校正,伽玛校正等过程,这里就先这样吧,原始数据已经到手了。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值