Cómo convertir una imagen en escala de grises a una imagen rgb

Generalmente, las imágenes en color requieren al menos tres dimensiones de información, como RGB, HSV, YIQ, etc. Cada color equivale a un vector tridimensional, y diferentes reglas de representación equivalen a la representación del mismo vector bajo diferentes ejes de coordenadas (es decir, bajo diferentes bases). Después de convertirlo a escala de grises, solo queda una dimensión, lo que equivale a proyectar un vector tridimensional en un escalar unidimensional, y es imposible restaurarlo al vector original. Si desea restaurarlo, debe almacenar la información en las otras dos dimensiones juntas, sigue siendo un vector tridimensional. Esto no es tan bueno como guardar directamente los datos de la imagen en color original. Si debe descomponerlo en una base en escala de grises y las otras dos bases, puede usar YIQ para representarlo. Su componente Y es equivalente a los datos en escala de grises. La señal de televisión estadounidense NTSC está representada por YIQ, por lo que se puede comparar con el negro y. compatible con televisores blancos (los televisores en blanco y negro solo pueden aceptar señales Y y obtener imágenes en escala de grises).

Utiliza los comandos rgb2ntsc y ntsc2rgb para intercambiar datos entre RGB y YIQ. El siguiente es un ejemplo

clear;clc;

RGB = imread('peppers.png');%RGB image

YIQ = rgb2ntsc(RGB) ;% YIQ representa

GRAY=rgb2gray(RGB);% imagen en escala de grises, que es equivalente a Y en YIQ, excepto que el valor de la imagen en escala de grises es un número entero de 0 a 255 e Y es 0 a 1 Número real, es decir, GRAY=uint8(255*YIQ(:,:,1))

RGB_restore=ntsc2rgb(YIQ);% imagen RGB recuperada de la representación YIQ

subtrama 221

imshow(RGB);title('Imagen original RGB')

subtrama 222

imshow(GRIS);title('Imagen en escala de grises GRIS ')

subtrama 224

imshow(YIQ(:,:,1));title({'Componente Y después de la conversión a YIQ',' (equivalente a una imagen en escala de grises) ' })

subtrama 223

imshow(RGB_restore);title({'Imagen RGB restaurada a partir de la representación YIQ','(consistente con la imagen original)'})

Por supuesto, esta descomposición no es única, siempre y cuando se garantice que las tres bases sean independientes entre sí. Por tanto, podemos definir el método de descomposición nosotros mismos. Por ejemplo, queremos convertir la representación RGB a la representación RGg, es decir, reemplazar el componente azul B con el componente gris g, y el componente rojo R y el componente verde G permanecen sin cambios. Podemos calcular el componente azul B a partir de RGg, porque el nivel de gris g=p*R+q*G+t*B (donde p=0.2989, q=0.5870, t=0.1140), entonces B=(g-p*R-q* G)/t. Por lo tanto, solo necesitamos conservar los dos componentes de color de R y G, más la imagen en escala de grises g, para restaurar la imagen RGB original.

El siguiente es un ejemplo

clear;clc;

RGB = imread('peppers.png');%RGB image

g=rgb2gray(RGB) ;% Imagen en escala de grises g

R=double(RGB(:,:,1));% componente rojo R

G=double(RGB(:,:,2)) ; % componente verde G, por lo que RGg es un método de representación de color definido por nosotros mismos

p=0.2989;q=0.5870;t=0.1140;

B=(double(g )- p*R-q*G)/t;%El componente azul B calculado por RGg es consistente con el componente azul en la imagen original

subtrama 131

imshow(RGB);title( 'Imagen original RGB')

subtrama 132

imshow(g);title('Imagen en escala de grises g')

subtrama 133

imshow(uint8(cat(3,R,G,B)));title({'imagen RGB recuperada de la representación RGg','(consistente con la imagen original)'})