|
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) |
|
|