File size: 1,985 Bytes
404d2af 8b973ee 404d2af 8b973ee 404d2af 8b973ee 404d2af 8b973ee 404d2af 8b973ee 404d2af 8b973ee |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import rawpy
import numpy as np
import glob, os
import colour_demosaicing
import imageio
import argparse
from PIL import Image as PILImage
import scipy.io as scio
parser = argparse.ArgumentParser(description="data preprocess")
parser.add_argument("--camera", type=str, default="NIKON_D700", help="Camera Name")
parser.add_argument(
"--Bayer_Pattern", type=str, default="RGGB", help="Bayer Pattern of RAW"
)
parser.add_argument(
"--JPEG_Quality", type=int, default=90, help="Jpeg Quality of the ground truth."
)
args = parser.parse_args()
camera_name = args.camera
Bayer_Pattern = args.Bayer_Pattern
JPEG_Quality = args.JPEG_Quality
dng_path = sorted(glob.glob("/mnt/nvme2n1/hyz/data/" + camera_name + "/DNG/*.cr2"))
rgb_target_path = "/mnt/nvme2n1/hyz/data/" + camera_name + "/RGB/"
raw_input_path = "/mnt/nvme2n1/hyz/data/" + camera_name + "/RAW/"
if not os.path.isdir(rgb_target_path):
os.mkdir(rgb_target_path)
if not os.path.isdir(raw_input_path):
os.mkdir(raw_input_path)
def flip(raw_img, flip):
if flip == 3:
raw_img = np.rot90(raw_img, k=2)
elif flip == 5:
raw_img = np.rot90(raw_img, k=1)
elif flip == 6:
raw_img = np.rot90(raw_img, k=3)
else:
pass
return raw_img
for path in dng_path:
print("Start Processing %s" % os.path.basename(path))
raw = rawpy.imread(path)
file_name = path.split("/")[-1].split(".")[0]
im = raw.postprocess(use_camera_wb=True, no_auto_bright=True)
flip_val = raw.sizes.flip
cwb = raw.camera_whitebalance
raw_img = raw.raw_image_visible
if camera_name == "Canon_EOS_5D":
raw_img = np.maximum(raw_img - 127.0, 0)
de_raw = colour_demosaicing.demosaicing_CFA_Bayer_bilinear(raw_img, Bayer_Pattern)
de_raw = flip(de_raw, flip_val)
rgb_img = PILImage.fromarray(im).save(
rgb_target_path + file_name + ".jpg", quality=JPEG_Quality, subsampling=1
)
np.savez(raw_input_path + file_name + ".npz", raw=de_raw, wb=cwb)
|