¿Cómo realizar la mejora del contraste de la imagen en color en MATLAB?

Las imágenes en color constan de 3 canales, cada uno de los cuales representa información de color particular en formato RGB. RGB significa rojo, verde y azul. Todos los colores son generados por la mezcla proporcional de estos 3 colores solamente. Cuando se trata de realce de contraste, existe un dilema típico al decidir el enfoque apropiado para ello. Una forma es mejorar el contraste de cada canal por separado y la segunda forma es mejorar el componente de escala de grises solo sin perturbar el componente de color real de la imagen. Ambos enfoques se explican en detalle en este artículo. 

Existen dos enfoques para mejorar el contraste de las imágenes en color:

  • Método ingenuo: mejora cada canal de color por separado.
  • Método estándar: utilizando el modelo de color HSV.

Algoritmo ingenuo:

Aplique la mejora del contraste del canal rojo, el canal verde y el canal azul por separado. Como resultado, cada componente de color se mejorará en consecuencia y la combinación de colores resultante será muy diferente de la combinación de colores original.

Pasos para el algoritmo Naive: 

  • Lee la imagen.
  • Aplique ecualización de histograma en cada canal para RGB por separado.
  • Muestre ambas imágenes.

Función utilizada:

  • La función incorporada imread() se usa para leer la imagen.
  • La función incorporada histeq() se utiliza para aplicar la ecualización de histogramas.
  • La función incorporada imtool() se utiliza para mostrar la imagen.

Ejemplo:

Matlab

% MATLAB code for Histogram Equalisation
% on RGB image.
% read the image
k=imread("apple.jpeg");
  
% Display original image.
imtool(k,[]);
  
% Apply histogram equalisation.
% on Red channel
k(:,:,1)=histeq(k(:,:,1));
  
% on Green channel
k(:,:,2)=histeq(k(:,:,2));
  
% on Blue channel
k(:,:,3)=histeq(k(:,:,3));
  
% Display enhanced image.
imtool(k,[]);

Producción:

 

Figura 1: imagen RGB original

 

Figura 2: Imagen mejorada

Explicación del código:

  • k(:,:,1)=histeq(k(:,:,1)); Esta línea realiza la mejora del contraste del canal rojo.
  • k(:,:,2)=histeq(k(:,:,2)); Esta línea realiza la mejora del contraste del canal verde.
  • k(:,:,3)=histeq(k(:,:,3)); Esta línea realiza la mejora del contraste del canal azul.
  • imtool(k,[]); Esta línea muestra una imagen mejorada.

Algoritmo estándar:

Primero, convierta la imagen RGB a formato HSV. Los canales H y S contienen la información de color mientras que el canal V contiene el valor de brillo que es similar a la información de escala de grises. La idea es aplicar la mejora de contraste solo del canal V manteniendo H y S sin alterar, de esta manera se conservará la combinación de colores original y, como resultado, la imagen resultante será de alta calidad.

Pasos:

  • Lee la imagen.
  • Convierta la imagen RGB en formato HSV.
  • Aplicar ecualización de histograma en el canal Valor.
  • convertir HSV de nuevo en formato RGB.
  • Muestra la imagen RGB resultante.

Función utilizada:

  • La función incorporada imread() se usa para leer la imagen.
  • La función incorporada rgb2hsv( ) se usa para convertir RGB en una imagen HSV.
  • La función incorporada histeq() se utiliza para aplicar la ecualización de histogramas.
  • La función incorporada hsv2rgb( ) se utiliza para convertir HSV en RGB.
  • La función incorporada imtool() se utiliza para mostrar la imagen.

Matlab

% MATLAB code for apply Histogram 
% Equalisation on HSV image.
  
% Read the image.
k1=imread("apple.jpeg");
  
% Display original RGB image.
imtool(k1,[]);
  
% Convert RGB into HSV image.
k2=rgb2hsv(k1);
  
% Apply HE on Value part of HSV image.
k2(:,:,3)=histeq(k2(:,:,3));
  
% Convert HSV to RGB.
k3=hsv2rgb(k2);
  
% Display RGB image.
imtool(k3,[]);

Producción:

 

Figura 1: imagen RGB original

 

Figura 2: Imagen mejorada

Explicación del código:

  • k2=rgb2hsv(k1); Esta línea convierte la imagen de entrada RGB en formato HSV.
  • k2(:,:,3)=histeq(k2(:,:,3)); Esta línea aplica realce de contraste en la parte Valor de la imagen HSV.
  • k3=hsv2rgb(k2); Esta línea convierte HSV de nuevo a RGB.
  • imtool(k3,[]); Esta línea muestra la imagen RGB resultante.

La ecualización de histogramas en imágenes RGB altera la combinación de colores de la imagen final. La razón es muy simple porque aplica ecualización en 3 canales por separado. Mientras que la ecualización en la imagen HSV se realiza solo en un canal que es Valor. Los canales de tono y saturación no se ecualizan con el histograma, por lo tanto, la combinación de colores no se altera. Se prefiere el segundo método al primero para conservar la combinación de colores de la imagen original en la imagen mejorada final.

 

Publicación traducida automáticamente

Artículo escrito por pintusaini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *