Operaciones aritméticas y lógicas en una imagen con Matlab
Enviado por CMGATO • 11 de Octubre de 2015 • Resumen • 1.096 Palabras (5 Páginas) • 332 Visitas
Antecedente Teórico
La conectividad es un concepto importante utilizado para establecer los límites de objetos en regiones dentro de una imagen. Para determinar si dos píxeles están conectados se determina si son adyacentes en algún sentido (ND(p), N4(p) por ejemplo) y si sus niveles de gris satisfacen un criterio de similaridad (por ejemplo si son iguales). Por ejemplo, en una imagen binaria con valores de 1 y 0, dos píxeles pueden ser vecinos N4(p), pero se dice que están conectados solo cuando tienen el mismo valor.
La distancia o transformada de distancia proporciona una medición de la separación existente entre dos puntos dentro de una imagen. Dados tres píxeles, p, q y z, con coordenadas (x,y), (s,t) y (u,v), respectivamente, se puede definir una función de distancia D si se cumple:
D(p, q)≥ 0,(D(p,q) = 0, si p = q)
D(p, q) = D(q, p)
D(p, z)≤ D(p, q)+ D(q, z)
Las funciones de distancia comúnmente usadas son: distancia euclidiana, distancia
Manhattan o de cuadra y distancia tablero de ajedrez.
Distancia euclidiana entre p y q: En la siguiente figura se muestra la distancia euclidiana para una imagen 3 por 3.[pic 1]
[pic 2]
Distancia Manhattan: se toman solamente los vecinos de orden 4, es decir:
[pic 3]
[pic 4]
Distancia tablero de ajedrez: es similar a la distancia Manhattan, en donde se observa que los 4-vecinos están a una distancia unitaria del píxel central; si se desea que los 8-vecinos estén a la misma distancia se toma:
[pic 5]
[pic 6]
Las operaciones aritméticas más usadas en procesamiento de imágenes son; suma, resta, multiplicación y división. Para que se pueda llevar a cabo una operación aritmética, ambas imágenes deben ser del mismo tamaño. En la figura 9 se muestra la suma de dos imágenes, la cual se realiza de la forma C(x, y) = A(x, y) + B(x, y) La resta de imágenes consiste en restar de una imagen el valor correspondiente de otra imagen. Esta operación es un paso intermedio en algunos procesamientos más complejos, como la detección de movimiento, etc. La resta, al igual que la suma de imágenes requiere que ambas imágenes sean de igual tamaño.
En el campo de las imágenes, la multiplicación se puede llevar a cabo, entre dos imágenes del mismo tamaño, multiplicando elemento a elemento cada uno de los píxeles de la imagen, de la forma C(x, y) = A(x, y) ⋅ B(x, y). Cuando se multiplica cada uno de los píxeles de una imagen por un escalar, se le conoce como escalamiento, el cual se realiza de la siguiente forma B(x, y) = a ⋅ A(x, y) . Cuando
el escalar o constante es menor a 1, se oscurece la imagen y si es mayor a uno aumenta el brillo de la imagen.
La división de imágenes consiste en una división de elemento a elemento, como las demás operaciones vistas anteriormente. La división entre imágenes puede utilizarse para detectar cambios en dos imágenes, sin embargo, en lugar de dar el cambio absoluto de cada píxel, la división da el cambio fraccional o razón de cambio entre los valores de dos píxeles correspondientes. A la división de imágenes también se le conoce como racionalización.
Las principales operaciones lógicas utilizadas en el procesamiento de imágenes son:
AND, OR, NOT, las cuales se aplican solo a imágenes binarizadas.
Diagrama de Flujo[pic 7]
[pic 8]
[pic 9][pic 10][pic 11]
[pic 12][pic 13]
[pic 14]
[pic 15][pic 16]
[pic 17]
[pic 18]
[pic 19]
[pic 20]
[pic 21]
[pic 22]
Programas Utilizados
(Suma y resta de dos imágenes)
close all;
clear all;
clc;
imgA=imread('C:\Users\pc1\Pictures\Exposición\Foto0006.jpg');
imgB=imread('C:\Users\pc1\Pictures\Exposición\Foto0012.jpg');
%Imágenes que se van a leer y trabajar sobre ellas.
subplot(2,2,1);
imshow(imgA);
title('Imagen A');
subplot(2,2,2);
imshow(imgB);
title('Imagen B');
[x,y,z]=size(imgA); %La imagen A será catalogada como una matriz
imgC=zeros(x,y,z);% imgC e imgD será catalogadas como matices vacías o disponibles
imgD=zeros(x,y,z);
for i=1:x
for j=1:y
imgC(i,j,1)=imgA(i,j,1)+imgB(i,j,1);
imgC(i,j,2)=imgA(i,j,2)+imgB(i,j,2);
imgC(i,j,3)=imgA(i,j,3)+imgB(i,j,3);
%En este ciclo, para cada varibale x,y será sumada y restada su respectiva
%componente RGB (1,2,3)
%Ya que para representar una imagen RGB, se trabaja con los 3 colores al
...