raw数据拆分成rggb四通道,拆分与合成

拆分code:(rggb排序)

拆分函数的输入raw数据为numpy类型,且默认为16位在0到1之间。

def pack_rggb_raw(raw):
    # black_level = 240    
    # white_level = 2 ** 12 - 1
    # #print(raw)
    # im = raw.astype(np.float32)
    # #print(im)
    # im = np.maximum(im - black_level, 0) / (white_level - black_level)  #是否要减去黑电平
    im = np.expand_dims(raw, axis=2)
    img_shape = im.shape
    H = img_shape[0]
    W = img_shape[1]
    #im = im.astype(np.uint16)
    out = np.concatenate((im[0:H:2, 0:W:2, :],  # r
                          im[0:H:2, 1:W:2, :],  # gr
                          im[1:H:2, 1:W:2, :],  # b
                          im[1:H:2, 0:W:2, :]), axis=2)  # gb

    return out

合成code:(rggb排序)

def depack_rggb_raw(raw):
    H = raw.shape[0]
    W = raw.shape[1]
    output = np.zeros((H * 2, W * 2))
    for i in range(H):
        for j in range(W):
            output[2 * i, 2 * j] = raw[ i, j, 0]  # gb
            output[2 * i, 2 * j + 1] = raw[ i, j, 1]  # b
            output[2 * i + 1, 2 * j] = raw[ i, j, 3]  # r
            output[2 * i + 1, 2 * j + 1] = raw[ i, j, 2]  # gr

    #print(output)
    #print(1111111111111111111111)
    output = output*(2**16)            #恢复到16位
    output = output.astype(np.uint16) 
    #print(output)
    return output

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SetMaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值