colour_demosaicing.demosaicing_CFA_Bayer_bilinear#

colour_demosaicing.demosaicing_CFA_Bayer_bilinear(CFA: ArrayLike, pattern: Literal['RGGB', 'BGGR', 'GRBG', 'GBRG'] | str = 'RGGB') NDArrayFloat[source]#

Return the demosaiced RGB colourspace array from given Bayer CFA using bilinear interpolation.

Parameters:
  • CFA (ArrayLike) – Bayer CFA.

  • pattern (Literal['RGGB', 'BGGR', 'GRBG', 'GBRG'] | str) – Arrangement of the colour filters on the pixel array.

Returns:

RGB colourspace array.

Return type:

numpy.ndarray

Notes

  • The definition output is not clipped in range [0, 1] : this allows for direct HDRI image generation on Bayer CFA data and post demosaicing of the high dynamic range data as showcased in this Jupyter Notebook.

References

[LMY10]

Examples

>>> import numpy as np
>>> CFA = np.array(
...     [
...         [0.30980393, 0.36078432, 0.30588236, 0.3764706],
...         [0.35686275, 0.39607844, 0.36078432, 0.40000001],
...     ]
... )
>>> demosaicing_CFA_Bayer_bilinear(CFA)
array([[[ 0.69705884,  0.17941177,  0.09901961],
        [ 0.46176472,  0.4509804 ,  0.19803922],
        [ 0.45882354,  0.27450981,  0.19901961],
        [ 0.22941177,  0.5647059 ,  0.30000001]],

       [[ 0.23235295,  0.53529412,  0.29705883],
        [ 0.15392157,  0.26960785,  0.59411766],
        [ 0.15294118,  0.4509804 ,  0.59705884],
        [ 0.07647059,  0.18431373,  0.90000002]]])
>>> CFA = np.array(
...     [
...         [0.3764706, 0.360784320, 0.40784314, 0.3764706],
...         [0.35686275, 0.30980393, 0.36078432, 0.29803923],
...     ]
... )
>>> demosaicing_CFA_Bayer_bilinear(CFA, "BGGR")
array([[[ 0.07745098,  0.17941177,  0.84705885],
        [ 0.15490197,  0.4509804 ,  0.5882353 ],
        [ 0.15196079,  0.27450981,  0.61176471],
        [ 0.22352942,  0.5647059 ,  0.30588235]],

       [[ 0.23235295,  0.53529412,  0.28235295],
        [ 0.4647059 ,  0.26960785,  0.19607843],
        [ 0.45588237,  0.4509804 ,  0.20392157],
        [ 0.67058827,  0.18431373,  0.10196078]]])