Bayer RAW#
Tip
Learn more: https://en.wikipedia.org/wiki/Bayer_filter
Note
The CFA enum selects the color filter array layout.
Functions#
- kornia.color.rgb_to_raw(image, cfa)[source]#
Convert a RGB image to RAW version of image with the specified color filter array.
The image data is assumed to be in the range of (0, 1).
- Parameters:
- Return type:
- Returns:
raw version of the image with shape \((*,1,H,W)\).
Example
>>> rgbinput = torch.rand(2, 3, 4, 6) >>> raw = rgb_to_raw(rgbinput, CFA.BG) # 2x1x4x6
- kornia.color.raw_to_rgb(image, cfa)[source]#
Convert a raw bayer image to RGB version of image.
We are assuming a CFA with 2 green, 1 red, 1 blue. A bilinear interpolation is used for R/G and a fix convolution for the green pixels. To simplify calculations we expect the Height Width to be evenly divisible by 2.
The image data is assumed to be in the range of (0, 1). Image H/W is assumed to be evenly divisible by 2. for simplicity reasons
- Parameters:
- Return type:
- Returns:
RGB version of the image with shape \((*,3,H,W)\).
Example
>>> rawinput = torch.randn(2, 1, 4, 6) >>> rgb = raw_to_rgb(rawinput, CFA.RG) # 2x3x4x6
- kornia.color.raw_to_rgb_2x2_downscaled(image, cfa)[source]#
Convert the raw bayer image to RGB version of it and resize width and height by half.
This is done efficiently by converting each superpixel of bayer image to the corresponding rgb triplet. R and B channels of the raw image are left as are, while two G channels of raw image are averaged to obtain the output G channel.
We are assuming a CFA with 2 green, 1 red, 1 blue. The image data is assumed to be in the range of (0, 1). Image H/W is assumed to be evenly divisible by 2 for simplicity reasons.
- Parameters:
- Return type:
- Returns:
downscaled RGB version of the image with shape \((*,3,\frac{H}{2},\frac{W}{2})\).
Example
>>> rawinput = torch.randn(2, 1, 4, 6) >>> rgb = raw_to_rgb_2x2_downscaled(rawinput, CFA.RG) # 2x3x2x3
Modules#
- class kornia.color.CFA(value)[source]#
Define the configuration of the color filter array.
So far only bayer images is supported and the enum sets the pixel order for bayer. Note that this can change due to things like rotations and cropping of images. Take care if including the translations in pipeline. This implementations is optimized to be reasonably fast, look better than simple nearest neighbour. On top of this care is taken to make it reversible going raw -> rgb -> raw. the raw samples remain intact during conversion and only unknown samples are interpolated.
The names are based on the OpenCV convention where the BG indicates pixel 1,1 (counting from 0,0) is blue and its neighbour to the right is green. In that case the top left pixel is red. Other options are GB, RG and GR
- BG = 0#
- GB = 1#
- GR = 3#
- RG = 2#
- class kornia.color.RgbToRaw(cfa)[source]#
nn.Module to convert a RGB image to bayer raw version of image.
The image data is assumed to be in the range of (0, 1).
- Shape:
image: \((*, 3, H, W)\)
output: \((*, 1, H, W)\)
- reference:
https://docs.opencv.org/4.0.1/de/d25/imgproc_color_conversions.html
Example
>>> rgbinput = torch.rand(2, 3, 4, 6) >>> raw = RgbToRaw(CFA.GB) >>> output = raw(rgbinput) # 2x1x4x6
- class kornia.color.RawToRgb(cfa)[source]#
nn.Module to convert a bayer raw image to RGB version of image.
The image data is assumed to be in the range of (0, 1).
- Shape:
image: \((*, 1, H, W)\)
output: \((*, 3, H, W)\)
Example
>>> rawinput = torch.rand(2, 1, 4, 6) >>> rgb = RawToRgb(CFA.RG) >>> output = rgb(rawinput) # 2x3x4x6
- class kornia.color.RawToRgb2x2Downscaled(cfa)[source]#
nn.Module version of the
raw_to_rgb_2x2_downscaled()function.The image width and height have to be divisible by two. The image data is assumed to be in the range of (0, 1).
- Shape:
image: \((*, 1, H, W)\)
output: \((*, 3, \frac{H}{2}, \frac{W}{2})\)
Example
>>> rawinput = torch.rand(2, 1, 4, 6) >>> rgb_downscale = RawToRgb2x2Downscaled(CFA.RG) >>> output = rgb_downscale(rawinput) # 2x3x2x3