MATLAB | Complementar colores en Imagen RGB

En MATLAB, una imagen RGB es básicamente una array de imágenes tridimensionales (M*N*3) del píxel de color, donde cada píxel de color está asociado con tres valores que corresponden a los componentes de color rojo, azul y verde de la imagen RGB en una ubicación espacial específica. En el complemento de colores de una imagen RGB, cada color de la imagen RGB se reemplaza con su color complementario. 

For example, 
red color ( 255, 0, 0) is replaced with cyan color ( 0, 255, 255 ). 
blue color ( 0, 0, 255 ) is replaced with yellow color ( 255, 255, 0).
here, cyan is complementary color for red and yellow are complementary color for blue. 

Las áreas oscuras se vuelven más claras y las áreas claras se vuelven más oscuras en las imágenes RGB como resultado del complemento.
 

Ejemplo:

MATLAB

% MATLAB code read an RGB Image
img=imread('apple.jpg');
 
% Complement colors of read RGB image
% Using imcomplement() function
comp=imcomplement(img);
 
% Display Complemented Image
imshow(comp);

 

Complementación de colores de una imagen RGB sin utilizar funciones de biblioteca:

Complemente una imagen RGB restando cada valor de píxel del valor de píxel máximo admitido por la clase de imagen RGB y la diferencia se utiliza como valor de píxel en la imagen RGB complementada.

  • Si la imagen RGB pertenece a la clase ‘uint8’, cada píxel tendrá valores entre [ 0 – 255]. Entonces, para el tipo de clase ‘uint8’, el valor máximo que puede tener un píxel es 255. Si una imagen RGB pertenece a la clase ‘uint16’, cada píxel tendrá valores entre [ 0 – 65535]. Por lo tanto, para el tipo de clase ‘uint16’, el valor máximo que puede tener un píxel es 65535. De manera similar, el valor de píxel máximo posible en la imagen RGB de tipo de clase ‘doble’ es 1,0. 
    Por ejemplo, deje que una imagen RGB de la clase ‘uint8’
  • Si un píxel de imagen tiene un valor de 127, en la imagen RGB complementada, el mismo píxel tendrá un valor (255 – 127) = 128.
  • Si el píxel de la imagen RGB tiene un valor de 255, en la imagen RGB complementada, el mismo píxel tendrá un valor (255 – 255) = 0.
     

Ejemplo:

MATLAB

% This function will take an RGB image as input
% and will complement the colors in it
 
function [complement] = complementRGB(img)
      
    % determine number of rows, column
    % and dimension in input image
    [x, y, z]=size(img);
     
    % convert class of RGB image to 'uint8'
    img=im2uint8(img);
 
    % create a image array of 'uint8' class having
    % same  number of rows and columns and having
    % same dimension, with all elements as zero.
    complement = zeros(x, y, z, 'uint8');
     
    % loop to subtract each pixel value from 255
    for i=1:x
        for j=1:y
             for k=1:z
                   % copy the difference to complement image array
               complement(i, j, k)=255-img(i, j, k);
         end
    end
    end
end
     
 
% Driver Code
% read an RGB Image in MATLAB Environment
img=imread('apple.jpg');
 
% call complementRGB() function to
% complement colors in the read RGB Image
comp=complementRGB(img);
 
% Display Complemented RGB Image
imshow(comp);

 
Forma alternativa: 
en MATLAB, las arrays son estructuras de datos básicas. Se pueden manipular muy fácilmente. Por ejemplo Array = 255 – Array; El código anterior restará cada elemento de la array de 255. La array puede tener cualquier número de dimensiones. Entonces, en lugar de usar un bucle de tres para restar 255 a cada píxel de la imagen RGB. Podemos escribirlo directamente como comp=255 – image. Aquí ‘img’ es una array tridimensional que representa nuestra imagen RGB.
 

Ejemplo: 

MATLAB

% MATLAb code for complement an RGB Image:
% read an RGB Image in MATLAB Environment
img=imread('apple.jpg');
 
% convert class of RGB image to 'uint8'
img=im2uint8(img);
 
% complement each pixel by subtracting it from 255.
comp=255-img;
 
% Display Complemented RGB Image
imshow(comp);

Aporte: 
 

RGB Image

Producción: 
 

Inverted RGB Image

 

2. Modificar el color de la imagen RGB 

Las imágenes son una colección de píxeles y los valores de píxeles son números enteros que representan las diferentes intensidades de color. Para cambiar el color de fondo o la escena de fondo, utilizamos técnicas de procesamiento de imágenes para realizar dichas acciones. Para cambiar el color de un píxel en particular, podemos cambiar el valor del color aplicando un bucle y verificando las condiciones en la imagen.

La misma técnica se utiliza en este artículo para cambiar el color y el color de fondo de la imagen. Este es un ejemplo muy simple y básico de un dominio muy grande de procesamiento de imágenes digitales. Se está considerando el logotipo de GFG para esta ilustración. El fondo es blanco y el logotipo de primer plano es de color verde oscuro. 

Pasos:

  • Lea la imagen coloreada dada.
  • Analice el color del primer plano y el fondo de la imagen.
  • Cambia el color de primer plano.
  • Cambia el color de fondo.
  • Muestre las imágenes.

Función utilizada:

  • La función incorporada imread() se usa para leer la imagen.
  • La función incorporada imtool() se usa para mostrar la imagen.
  • La función incorporada pause() se usa para detener la ejecución durante segundos específicos.
  • La función incorporada size( ) se utiliza para obtener el tamaño de la imagen.

Ejemplo:

Matlab

% Change the colour of Image and its background.
 
function ChangeColor(img)
%Change the color of the image.
%input: RGB image
img1=img;
[x,y,~]=size(img);
for i=1:x
    for j=1:y
        if(img1(i,j,2)>100 && img1(i,j,1)<100)
            img1(i,j,1)=255;
            img1(i,j,2)=0;
        end
         
        %change the colour of logo
        if(img1(i,j,1)==255 && img1(i,j,2)==255 && img1(i,j,3)==255)
            img1(i,j,3)=0;
        end
        %change the BG colour.
    end
end
imtool(img,[]);
imtool(img1,[]);
pause(20);
imtool close all;
end

Producción:

Explicación del código:

  • [x,y,~]=tamaño(img); Esta línea obtiene el tamaño de la imagen de entrada.
  • if(img1(i,j,2)>100 && img1(i,j,1)<100) Esta línea busca los píxeles de color verde.
  • img1(i,j,1)=255; Esta línea modifica los píxeles verdes en píxeles de color rojo.
  • img1(i,j,2)=0; Esto hace que el componente verde sea 0.
  • if(img1(i,j,1)==255 && img1(i,j,2)==255 && img1(i,j,3)==255) Esta línea busca píxeles de fondo blanco.
  • img1(i,j,3)=0; Esto hace que el componente azul del píxel blanco de fondo sea 0, de modo que el color resultante sea amarillo para BG.
  • pausa(20); Esta línea detiene la ejecución durante 20 segundos.
  • imtool cerrar todo; Esta línea cierra todas las ventanas de imágenes.

 

Publicación traducida automáticamente

Artículo escrito por ihritik 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 *