Module brevettiai.data.image.bayer_demosaic
Expand source code
import tensorflow as tf
from tensorflow.keras.layers import Conv2D
import numpy as np
def get_kernels():
kern = np.zeros((4, 4, 3), dtype=np.float)
for ii in range(0, 3, 2):
for jj in range(0, 3, 2):
kern[ii, jj, 0] = .25
kern[ii, 1, 1] = .25
kern[1, ii, 1] = .25
kern[1, 1, 2] = 1.0
return {"bgr": kern[:, :, ::-1],
"rgb": kern}
kernels = get_kernels()
def bayer_demosaic_layer(mode="rgb"):
kernel = kernels[mode.lower()]
return Conv2D(3, kernel.shape[:2],
use_bias=False,
strides=2,
weights=[kernel[:,:,None,:]],
trainable=False,
padding='same')
def tf_bayer_demosaic(x, mode="rgb"):
return tf.nn.conv2d(x, kernels[mode][:, :, None, :], strides=[1, 2, 2, 1], padding='SAME', name="bayer_demosaic")
Functions
def bayer_demosaic_layer(mode='rgb')
-
Expand source code
def bayer_demosaic_layer(mode="rgb"): kernel = kernels[mode.lower()] return Conv2D(3, kernel.shape[:2], use_bias=False, strides=2, weights=[kernel[:,:,None,:]], trainable=False, padding='same')
def get_kernels()
-
Expand source code
def get_kernels(): kern = np.zeros((4, 4, 3), dtype=np.float) for ii in range(0, 3, 2): for jj in range(0, 3, 2): kern[ii, jj, 0] = .25 kern[ii, 1, 1] = .25 kern[1, ii, 1] = .25 kern[1, 1, 2] = 1.0 return {"bgr": kern[:, :, ::-1], "rgb": kern}
def tf_bayer_demosaic(x, mode='rgb')
-
Expand source code
def tf_bayer_demosaic(x, mode="rgb"): return tf.nn.conv2d(x, kernels[mode][:, :, None, :], strides=[1, 2, 2, 1], padding='SAME', name="bayer_demosaic")