Skip to content

Commit

Permalink
run black
Browse files Browse the repository at this point in the history
  • Loading branch information
DIYer22 committed Mar 11, 2023
1 parent bdd26d2 commit 38d55ac
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions process_raw/process_raw.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ def __init__(self, bit=12, poww=1, demosaicing_method="Malvar2004", pattern="GBR
self.pattern = pattern

def __call__(self, raw):
norma_raw = raw / 2 ** self.bit
norma_raw = raw / 2**self.bit

pow_func = self.pow_func_for_uint8()
norma_raw = pow_func(norma_raw)

rgb = (self.demosaicing(norma_raw)).clip(0, 1 - 1 / 2 ** self.bit)
rgb = (self.demosaicing(norma_raw)).clip(0, 1 - 1 / 2**self.bit)
rgb = np.uint8(rgb * 256)
return rgb

Expand All @@ -36,11 +36,13 @@ def demosaicing(self, raw):
rgb = demosaicing_func(raw, self.pattern)
return rgb

def pow_func_for_uint8(self,):
def pow_func_for_uint8(
self,
):
"""
pow 改进
改进的动机: 充分利用 uint8 来容纳细节, 即使 1/2^12 的亮度值在映射后不会超过 1/2^8
return funcation that supoort both int and float
"""
poww = self.poww
Expand All @@ -49,10 +51,10 @@ def pow_func_for_uint8(self,):
return lambda raw: raw

x0 = (2 ** (bit - 8) / poww) ** (1 / (poww - 1)) # where_dx_equl_scale
y0 = x0 ** poww
y0 = x0**poww
remap = lambda raw: (((raw) * (1 - x0) + x0) ** poww - y0) / (1 - y0)
return (
lambda raw: np.uint8(remap(raw / 2 ** bit) * 256)
lambda raw: np.uint8(remap(raw / 2**bit) * 256)
if np.issubdtype(raw.dtype, np.integer)
else remap(raw)
)
Expand All @@ -72,13 +74,19 @@ def simple_demosaicing(raw, pattern):
"""

d = {}
for color, channel in zip(pattern, [raw[::2, ::2, None], raw[::2, 1::2, None], raw[1::2, ::2, None], raw[1::2, 1::2, None]]):
for color, channel in zip(
pattern,
[
raw[::2, ::2, None],
raw[::2, 1::2, None],
raw[1::2, ::2, None],
raw[1::2, 1::2, None],
],
):
d[color] = d.get(color, []) + [channel]


RGB = np.concatenate(
[np.mean(d[color], 0) for color in "RGB"]
,
[np.mean(d[color], 0) for color in "RGB"],
-1,
)
return RGB
Expand Down Expand Up @@ -135,10 +143,13 @@ def save(dng_path, raw, bit=12, pattern="GBRG", compress=False, Orientation=1):
raw2dng = RAW2DNG()

raw2dng.options(
tags=t, path=boxx.dirname(dng_path) + "/", compress=compress,
tags=t,
path=boxx.dirname(dng_path) + "/",
compress=compress,
)
raw2dng.convert(
raw, filename=boxx.filename(dng_path),
raw,
filename=boxx.filename(dng_path),
)
# compress = True lossless for bayer, 29MB => 19 MB

Expand Down

0 comments on commit 38d55ac

Please sign in to comment.