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