def raw_to_rgb(raw_data, black_level=0):
raw_data = raw_data.astype(np.int32)
raw_data = np.maximum(raw_data - black_level, 0)
raw_data = raw_data.astype(np.uint16)
rgb_img = np.stack([cv2.cvtColor(t, cv2.COLOR_BayerBGGR2RGB) for t in raw_data])
# rgb_img_norm = np.stack([cv2.normalize(t, None, 0, 255, cv2.NORM_MINMAX) for t in rgb_img])
rgb_img_norm = np.stack([np.clip(t, 0, 255).astype(np.float32) / 255 for t in rgb_img])
return rgb_img_norm
def raw_to_bggr(raw_img):
# 获取图像尺寸
batch, height, width = raw_img.shape
# 创建新的四通道图像
img_bggr = np.zeros((batch, height // 2, width // 2, 4), dtype=raw_img.dtype)
img_bggr[:, :, :, 0] = raw_img[:, ::2, ::2]
img_bggr[:, :, :, 1] = raw_img[:, ::2, 1::2]
img_bggr[:, :, :, 2] = raw_img[:, 1::2, ::2]
img_bggr[:, :, :, 3] = raw_img[:, 1::2, 1::2]
return img_bggr
def bggr_to_raw(img_bggr):
batch, height, width, channel = img_bggr.shape
raw_img = np.zeros((batch, height * 2, width * 2), dtype=img_bggr.dtype)
raw_img[:, ::2, ::2] = img_bggr[:, :, :, 0]
raw_img[:, ::2, 1::2] = img_bggr[:, :, :, 1]
raw_img[:, 1::2, ::2] = img_bggr[:, :, :, 2]
raw_img[:, 1::2, 1::2] = img_bggr[:, :, :, 3]
return raw_img
10-03
344