Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

demosaic

Convertir una imagen Bayer en una imagen en color verdadero

Descripción

RGB = demosaic(bayer,sensorAlignment) convierte la imagen Bayer, bayer, en una imagen en color verdadero, RGB. El argumento sensorAlignment especifica el patrón de Bayer.

Un mosaico de filtro de Bayer es un tipo de arreglo de filtros de colores (CFA) o una disposición de filtros de colores en los fotosensores de una cámara digital de un solo chip. Los filtros de colores permiten que cada fotosensor registre solamente datos rojos, verdes o azules. Un patrón de Bayer es la disposición repetida de los cuatro filtros de colores, que consta de dos filtros verdes, uno rojo y uno azul, que componen el mosaico de filtro de Bayer.

Una imagen de patrón de Bayer, o imagen Bayer, es la imagen capturada por una cámara con un mosaico de filtro de Bayer. La interpolación cromática de una imagen Bayer consiste en combinar las señales de los fotosensores para formar una imagen en color verdadero de tres canales, en lugar de una imagen de intensidad de un solo canal.

ejemplo

RGB = demosaic(bayer,sensorAlignment,BitsPerSample=bitsPerSample) también especifica la profundidad de bits real, bitsPerSample, de la imagen Bayer de entrada. Utilice esta sintaxis cuando los datos contengan menos bits que el tipo de datos (desde R2025a).

Ejemplos

contraer todo

Convierta una imagen codificada con el patrón de Bayer que haya sido tomada con una cámara con alineación de sensores de 'bggr'.

I = imread("mandi.tif");
J = demosaic(I,"bggr");
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

imshow(J)

Figure contains an axes object. The hidden axes object contains an object of type image.

Lea una imagen de arreglo de filtros de colores (CFA) y los metadatos de un archivo RAW. Estos datos se capturaron con un sensor de 12 bits y se almacenan utilizando el tipo de datos uint16.

file = "colorCheckerTestImage.NEF";
cfa = rawread(file);
info = rawinfo(file);

Para verificar que se trata de datos de 12 bits, compruebe el valor máximo de píxel. El valor máximo está dentro del rango de datos de 12 bits (2^12-1 o 4095).

maxValue = max(cfa(:))
maxValue = uint16

3366

Los metadatos del archivo, que incluyen información sobre el valor de los píxeles blancos, también son coherentes con datos de 12 bits.

whiteValue = info.ColorInfo.WhiteLevel
whiteValue = 1×4 uint16 row vector

   3827   3827   3827   3827

Obtenga el patrón de Bayer a partir de los metadatos. Aplique interpolación cromática a la imagen utilizando 12 bits por muestra.

sensorAlignment = info.CFALayout;
rgbout = demosaic(cfa,sensorAlignment,BitsPerSample=12);
imageshow(rgbout,DisplayRange=[0 2^12])

Argumentos de entrada

contraer todo

Imagen codificada con patrón de Bayer, especificada como arreglo numérico de M por N. bayer debe tener al menos 5 filas y 5 columnas.

Tipos de datos: uint8 | uint16 | uint32

Patrón de Bayer, especificado como uno de los valores de la tabla siguiente. Cada valor representa el orden de los sensores rojo, verde y azul describiendo los cuatro píxeles de la esquina superior izquierda de la imagen (de izquierda a derecha, de arriba abajo).

PatrónAlineación del sensor 2 por 2
"gbrg"

Top left pixel is green, top right pixel is blue, bottom left pixel is red, and bottom right pixel is green.

"grbg"

Top left pixel is green, top right pixel is red, bottom left pixel is blue, and bottom right pixel is green.

"bggr"

Top left pixel is blue, top right pixel is green, bottom left pixel is green, and bottom right pixel is red.

"rggb"

Top left pixel is red, top right pixel is green, bottom left pixel is green, and bottom right pixel is blue.

Tipos de datos: char | string

Desde R2025a

Bits por muestra, especificados como un entero positivo. El valor máximo de la imagen con interpolación cromática RGB equivale a 2^bitsPerSample – 1.

De forma predeterminada, bitsPerSample equivale al número de bits del tipo de datos de bayer: 8 para imágenes uint8, 16 para imágenes uint16 y 32 para imágenes uint32.

Ejemplo: 12 utiliza 12 bits por muestra y establece el valor máximo de la imagen RGB en 2^12 – 1, o 4095, para imágenes Bayer uint16 y uint32.

Argumentos de salida

contraer todo

Imagen RGB, devuelta como arreglo numérico de M por N por 3 del mismo tipo de datos que bayer.

Algoritmos

La función demosaic utiliza la interpolación lineal corregida por gradientes para convertir la imagen de Bayer bidimensional en una imagen en color verdadero.

Referencias

[1] Malvar, H.S., L. He, and R. Cutler, High quality linear interpolation for demosaicing of Bayer-patterned color images. ICASPP, Volume 34, Issue 11, pp. 2274-2282, May 2004.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2007b

expandir todo