Procesamiento básico de Imágenes en Matlab Histogramas. Filtros de Bordes. Color Introducción a la Computación Clase 25 María Elena Buemi Leyendo una imagen • >>imread(nombre); Tipos de imágenes .tif , .tiff .jpg , .jpeg .bmp .png • • • • >> imread('rosa.jpg'); >> I=imread('rosa.jpg'); >> [N M]=size(I); >> whos I Name I Size 1024x1024 Bytes Class 1048576 uint8 Attributes ¿Qué imágenes soporta Matlab? • Intensidad • Binarias • Indexadas • RBG Repaso vectores >>v=[13579] ans v =1 3 5 7 9 >> v(2) ans= 5 V se convierte en columna con el operador traspuesta ( . ' ): >> w = v.' >> v(1:3) ans = 1 3 5 >> v(2:4) ans = 3 5 7 >> v(2:end) ans = 3 5 7 >> v(:) ans = 1 3 5 7 9 >> v(1:end) ans = 1 3 5 9 7 9 Matrices >> A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 >> A(2,3) ans = 6 >> C3=A(:,3) C3 = 3 6 9 >> R2=A(2,:) R2 = 4 5 6 >> T2=A(1:2,1:3) T2 = 1 2 3 4 5 6 >> B=A; >> B(:,3) ans = 3 6 9 >> B(:,3)=0 B= 1 2 0 4 5 0 7 8 0 >> A(end,end) %ans = 9 >> A(end, end - 2) %ans = 7 >> A(2:end,end:-2:1) ans = 6 4 9 7 >> A A= 1 2 3 4 5 6 7 8 9 >> E=A([1 3],[2 3]) E= 2 3 8 9 >> D=logical([1 0 0;0 0 1;0 0 0]) D= 1 0 0 0 0 1 0 0 0 >> A(D) ans = 1 6 >> suma=sum(sum(A)) suma = 45 >> S=sum(A(:)) S= 45 >>[N M]=size(A);%devuelve N=filas y M=columnas de A Flip vertical- Crop • • • • >>Ip = I(end:-1:1,:) ; %gira vertical >> Ic = I(257:768,257:768);%recorta >> imshow(Ip) >> imshow(Ic) Histograma y Ploteo • Dados valores de intensidad L, entre 0 y G, se define una función discreta h(r_k)=n_k Donde r_k es un nivel de intensidad entre 0 y G y n_k es la cantidad de r_k. En gral se trabaja con histogramas normalizados: p(r_k)=h(r_k)/n=n_k/n, n el total de pixels. >>h=imhist(I,b), donde b es la cantidad de bines. Bin es una subdivisión de los niveles de intensidad, por ejemplo 256 o 128 o 64. Si el histograma está normalizado: >>p = imhist(f, b)/numel(I) %numel(I) da la cantidad de elementos de I Ejercicio: 1) Observar h para bins 256, 128, 32, 4, 2. Equalización de histograma r_k n_k n_k/100 0 1 2 3 4 5 6 7 4 17 15 18 24 12 0 10 100 0.04 0.17 0.15 0.18 0.24 0.12 0 0.10 1.00 Acum Acum/100 4 21 36 54 78 90 90 100 0.04 0.21 0.36 0.54 0.78 0.90 0.90 1.00 Algoritmo 1. Calcula el histograma 2. Lo normaliza 3. Calcula el histograma Acumulado 4. Normaliza el histograma acumulado 7*Acum/100 0.28 1.47 2.52 3.78 4.46 6.3 6.3 7 s_k 0 1 3 4 4 6 6 7 5.Calcula el max Gris*histograma acumulado 6. Determina los valores de gris de salida para los de entrada. histeq >> A=imread('mamografia.jpg'); >> Ah=histeq(A); >> imshow(Ah) >> B=imread('polen.jpg'); >> Bh=histeq(B); >> imshow(Bh,[]) Ejercicio 2: hacer un algoritmo de equalización y compararlo con histeq, para alguna de las imágenes dadas Filtrado lineal • Las operaciones lineales que usaremos consisten en multiplicar cada pixel del vecindario por un coeficiente correspondiente y sumarlo para obtener el nuevo valor. Los coeficientes estan agrupados en una matriz llamada máscara o ventanas o kernel,… Ejemplo sobel >> clear all >> I=imread('moon.jpg'); >> w=fspecial('sobel'); >> C1=imfilter(I,w); >>figure(1) >> imshow(C1,[ ]); >> C2=imfilter(I,w'); >> figure(2) >> imshow(C2,[ ]) >> C=C1+C2; >> figure(3) >> imshow(C,[ ]) Ejercicio 3 Repetir para Prewitt y Laplace Color-RGB >> I=imread('lenac.jpg'); >> imshow(I) >> I(:,:,1)=0; >> imshow(I) >> I(:,:,2)=0; >> imshow(I)