PUBLICIDAD


Operaciones aritméticas con imágenes - Visión artificial


Introducción

Cuando trabajamos con imágenes, habrá ocasiones en que queramos realizar operaciones aritméticas (Suma, resta, multiplicación y división) con ellas. En este artículo les explicaremos como realizar operaciones aritméticas en imágenes utilizando el software MATLAB.

Operación puntual

Una operación puntual tiene como función transformar una imagen de entrada a una nueva, utilizando cada pixel de la imagen entrada y aplicándosele una transformación, es decir, la imagen de salida dependerá de dos factores: la imagen de entrada y la transformación que se le aplique. La ecuación que define una operación puntual es la siguiente:

S(x, y)= F(I(x, y))

Dónde:

Las operaciones aritméticas pertenecen al grupo de las operaciones puntuales, a continuación analizaremos los resultados que se obtienen al aplicar estas operaciones y como hacerlas en MATLAB. Es muy importante notar que para que se puedan realizar operaciones entre imágenes, ambas deben ser del mismo tamaño.

Suma en imágenes

Se pueden sumar imágenes entre si y también se le puede sumar una constante a una imagen. Cuando realizamos la operación de sumar una constante a una imagen se aumenta el brillo de esta. Aquí un ejemplo de una imagen que se le sumó la constante “50”:

Operaciones aritméticas con imágenes - 1

La sintaxis para sumar imágenes entre si es la siguiente:

Código:

Resultado= imadd(Imagen1,Imagen2);


La sintaxis para sumar una constante a una imagen es la siguiente:

Código:

Resultado= imadd(Imagen1,valor_constante);

Donde “valor_constante” puede ser cualquier número, 20, 50, 100, etc. Mientras más alto el valor, más será el brillo e incluso se puede saturar la imagen, es decir, se mostraría totalmente blanca.

Resta en imágenes

Al igual que en la suma, se pueden restar imágenes entre si y también se le puede restar una constante a una imagen. Como podrán imaginarse, la operación de resta produce el efecto contrario al de la suma, oscurece la imagen. Aquí un ejemplo de una imagen que se le restó la constante “50”:

Operaciones aritméticas con imágenes - 2

La sintaxis para restar imágenes entre si es la siguiente:

Código:

Resultado= imsubtract(Imagen1,Imagen2);


La sintaxis para restar una constante a una imagen es la siguiente:

Código:

Resultado= imsubtract(Imagen1,valor_constante);

Donde “valor_constante” puede ser cualquier número, 20, 50, 100, etc. Mientras más alto el valor, más oscura será e incluso se puede saturar la imagen, es decir, la imagen se mostraría totalmente negra.

Multiplicación en imágenes

La multiplicación en imágenes crea un efecto parecido al de sumar una imagen a otro, pero al multiplicarse es muy fácil que estas se saturen, por lo que es recomendable aumentar la resolución de imagen para que tenga más capacidad. Supongamos que queremos cambiar una imagen de 8 bits a 16 bits, la sintaxis seria la siguiente:

Código:

Nueva_16 = uint16(Imagen_original);

Aquí un ejemplo de una imagen que se multiplicó con otra, en este caso se les aumentó la resolución, pues al hacerlo en 8 bits se saturaba a blanco.

Operaciones aritméticas con imágenes - 3

La sintaxis para multiplicar imágenes entre si es la siguiente:

Código:

Resultado= immultiply(Imagen1,Imagen2);
 


La multiplicación puede usarse para reducir o aumentar el brillo de una imagen, para aumentar el brillo debe multiplicarse por un valor mayor a 1, y para reducir el brillo se debe multiplicar por un valor mayor a 0 pero menor a 1 (Por ejemplo, 0.55, 0.22). Hay que tener en cuenta que si lo multiplicamos por valores muy altos puede llegar a saturarse. La sintaxis para multiplicar por una constante (A esta operación también se le conoce como “Escalamiento”) a una imagen es la siguiente:

Código:

Resultado= immultiply(Imagen1,valor_constante);


Publicidad


División en imágenes

La división en imágenes (También conocida como “Racionalización”) es muy utilizada para detectar cambios entre una imagen y otra, por ejemplo, si tenemos una cámara y queremos detectar movimiento, la operación de división se puede utilizar para esto. Dicha operación crea un efecto parecido que restar una imagen a otro. Aquí un ejemplo de una imagen que se dividió entre otra, como pueden ver la imagen está casi saturada a negro.

Operaciones aritméticas con imágenes - 4

La sintaxis para dividir imágenes entre si es la siguiente:

Código:

Resultado= imdivide(Imagen1,Imagen2);


La división también puede usarse para reducir o aumentar el brillo de una imagen, para reducir el brillo debe dividirse entre un valor mayor a 1, y para aumentar el brillo se debe dividir entre un valor mayor a 0 pero menor a 1. La sintaxis para dividir entre una constante a una imagen es la siguiente:

Código:

Resultado= imdivide(Imagen1,valor_constante);

Ejercicio

Aplicar distintas operaciones aritméticas (Suma, resta, multiplicación y división) a una serie de imágenes.

Diagrama de flujo

Operaciones aritméticas con imágenes - 5

Código:

%Operaciones aritméticas en imágenes - Por Solución Ingenieril
clear all; %Limpiamos
close all;
clc;
 
I=imread('rice.png'); %Leemos y guardamos la imagen
Y=imread('cameraman.tif'); %Leemos y guardamos la imagen
 
%Sumas
J= imadd(Y,I); %Sumamos ambas imágenes
X= imadd(Y,50); %Sumamos Y + 50
figure; %Mostramos los resultados de sumas
subplot(2,2,1), imshow(I), title('Rice');
subplot(2,2,2), imshow(Y), title('Cameraman');
subplot(2,2,3), imshow(J), title('Cameraman + Rice');
subplot(2,2,4), imshow(X), title('Cameraman + 50');
 
%Restas
Q= imsubtract(Y,I); %Restamos ambas imágenes
W= imsubtract(I,100); %Restamos I - 100
figure; 
subplot(2,2,1), imshow(I), title('Rice');
subplot(2,2,2), imshow(Y), title('Cameraman');
subplot(2,2,3), imshow(Q), title('Cameraman - Rice');
subplot(2,2,4), imshow(W), title('Rice - 100');
 
%Multiplicación
E1=imread('moon.tif'); %Leemos y guardamos la imagen
E16=uint16(E1); %Convertimos imagen de 8 bits a 16 en resolución de intensidad para no saturar
R= immultiply(E16,500); %Multiplicamos la imagen por 500
figure; %Mostramos los resultados
subplot(1,2,1), imshow(E1), title('Moon');
subplot(1,2,2), imshow(R), title('Moon x 500');
 
%División
I2=imread('rice.png'); %Leemos y guardamos la imagen
J2=imdivide(I2,2);%Dividimos la imagen entre 2
figure; %Mostramos el resultado
subplot(1,2,1), imshow(I2), title('Rice');
subplot(1,2,2), imshow(J2), title('Rice / 2');

Resultados

Sumas

Operaciones aritméticas con imágenes - 6

Restas

Operaciones aritméticas con imágenes - 7

Multiplicación

Operaciones aritméticas con imágenes - 8

División

Operaciones aritméticas con imágenes - 9

Conclusión

En este artículo analizamos las distintas operaciones aritméticas que se le pueden aplicar a una imagen, y notamos los efectos que producen estas operaciones en las imágenes, algunos aumentan el brillo, otros lo disminuyen, etc. Además aprendimos a aumentar la resolución de intensidad de una imagen a 16 bits, dándole más espacio de niveles de grises en imágenes que con una menor resolución se saturarían.






Agregar comentario
1500
¿Cuanto es 5 + 3?
Comentarios
(0)
No hay comentarios todavía ¡Sé el primero en comentar!

©2017-2021 Solución Ingenieril. Todos los derechos reservados