Imágenes - Parte IV Taller de Informática I DC - FCEyN - UBA 11 de noviembre de 2015 Taller de Informática I 11 nov 2015 Taller de Informática I 11 nov 2015 Segmentación Segmentar es subdivir una imagen en sus regiones u objetos de interés Los algoritmos de segmentación están basados en una de las dos propiedades básicas de los valores de intensidad de la imágenes: los bordes dentro de una imagen(Prewitt, Sobel, Roberts) similaridad de acuerdo a un criterio predefinido. Taller de Informática I 11 nov 2015 Segmentación básica: Umbralización o Thresholding Observando el histograma y tomando como umbral donde haya una separación entre dos grupos de intensidad Taller de Informática I 11 nov 2015 Segmentación básica: Umbralización o Thresholding Encontrando un algoritmo que determine el mejor umbral para cada imagen. Matlab tiene implementado el algoritmo de Otsu, su función umbral=graythresh(M) Taller de Informática I 11 nov 2015 Segmentar usando morfologı́a Matemática Utiliza elementos estructurantes (se) para analizar imagenes binarias. Un se es una máscara pequeña centrada en cada pixel Matlab crea un se con la función strel. Taller de Informática I 11 nov 2015 Operaciones fundamentales Las operaciones fundamentales son erosion y dilation. erosion contrae objetos dilation expande objectos. Taller de Informática I 11 nov 2015 Erosión A − B = {a − b : a ∈ A ∧ b ∈ B} Ejemplo: A={(1,1),(1,2),(1,3),(1,4),(1,5),(2,1),(3,1),(4,1),(5,1)} B={(0,0),(0,1)} A-B ={(1,1),(1,2),(1,3),(1,4)} Taller de Informática I 11 nov 2015 Dilatación A ⊕ B = {a + b : a ∈ A ∧ b ∈ B} Ejemplo: A={(0,1),(1,1),(2,1),(2,2),(3,0)} B={(0,0),(0,1)} A \oplus B={(0,1),(1,1),(2,1),(2,2),(3,0), (0,2),(1,2),(2,2),(2,3),(3,1)} Taller de Informática I 11 nov 2015 originalBW = imread(’text.png’); se = strel(’line’,11,90); erodedBW = imerode(originalBW,se); figure, imshow(originalBW) figure, imshow(erodedBW) Taller de Informática I 11 nov 2015 % con imgenes de grises originalI = imread(’cameraman.tif’); se = strel(’ball’,5,5); erodedI = imerode(originalI,se); figure, imshow(originalI), figure, imshow(erodedI) Taller de Informática I 11 nov 2015 originalBW = imread(’text.png’); se = strel(’line’,11,90); dilatedBW = imdilate(originalBW,se); figure, imshow(originalBW), figure, imshow(dilatedBW) Taller de Informática I 11 nov 2015 %con imagen grayscale con mscara rolling ball: originalI = imread(’cameraman.tif’); se = strel(’ball’,5,5); dilatedI = imdilate(originalI,se); figure, imshow(originalI), figure, imshow(dilatedI) Taller de Informática I 11 nov 2015 Ejemplo de Segmentación I = imread(’rice.png’); I2 = imclearborder(I); figure(1) subplot(1,2,1),imshow(I) subplot(1,2,2), imshow(I2) Taller de Informática I 11 nov 2015 Ejemplo de Segmentación umbral=graythresh(I) BW = im2bw(I); %busco un umbral a mano mayor a u y menor a u me quedo con 0.2 BW2 = im2bw(I2,0.3); BW2 = im2bw(I2,0.6); BW2 = im2bw(I2,0.4); %umbral=0.2 BW2 = im2bw(I2,0.2); figure(2),subplot(1,2,1),imshow(BW),subplot(1,2,2), imshow(BW2) Taller de Informática I 11 nov 2015 Ejemplo de Segmentación [L n] = bwlabeln(BW2); figure(3),imshow(L) Taller de Informática I 11 nov 2015 Ejemplo de Segmentación %selcciono una subimagen donde conozco cuantas regiones hay con ginput(2 imshow(BW2(15:84,200:244)); A=BW2(15:84,200:244); [L n] = bwlabeln(A); %binariza seg\’un umbral automatico y reconoce n re figure(4), imshow(L) Taller de Informática I 11 nov 2015 Ejemplo de Segmentación RGB = label2rgb(L, ’jet’, ’k’);%colorea figure(5), imshow(RGB) Taller de Informática I 11 nov 2015 Ejemplo de Segmentación P = bwperim(L,8);% toma como regiones los que tienen figure(6),imshow(P) Taller de Informática I 11 nov 2015 desde 8 conectados f u n c t i o n [ Hero n1 n2 ] = b a c t e r i a s ( ) %UNTITLED2 Summary o f t h i s f u n c t i o n g o e s h e r e % D e t a i l e d e x p l a n a t i o n goes here H = i m r e a d ( ’ h e l a . j p g ’ ) ; f i g u r e , imshow (H) , t i t l e ( ’ o r i g i n a l ’) Haux = H ; Haux ( : , : , 2 ) = 0 ; f i g u r e , imshow ( Haux ) , t i t l e ( ’ o r i g i n a l , banda 2 = 0 ’ ) Haux ( : , : , 3 ) = 0 ; f i g u r e , imshow ( Haux ) , t i t l e ( ’ o r i g i n a l , Banda 2 = 0 , Banda 3 =0 ’ ) f i g u r e , i m h i s t ( Haux ( : , : , 1 ) ) , t i t l e ( ’ p l o t H i s t o g r a m a Banda 1 ’ ) Hbin = o n e s ( s i z e ( Haux ) ) ; Hbin ( f i n d ( Haux < 1 0 0 ) ) = 0 ; f i g u r e , imshow ( Hbin ) ; Z = e d g e ( Hbin ( : , : , 1 ) , ’ s o b e l ’ ) ; f i g u r e , imshow ( Z ) , t i t l e ( ’ edge s o b e l ’ ) [ L1 n1 ] = b w l a b e l n ( Z ) ; f i g u r e , imshow ( L1 ) , t i t l e ( ’ B i n a r i a ’) Hero=e r o s i o n a r ( Haux ( : , : , 1 ) ) ; [ L2 n2 ] = b w l a b e l n ( Hero ) ; t i t l e ( ’ e r o s i o n a d a ’ ) f i g u r e , imshow ( L1 ) end Taller de Informática I 11 nov 2015 Modelo de Elevación Digital Taller de Informática I 11 nov 2015 Modelos digitales de Elevación- Introducción Importancia Los Modelos de Elevación Digital o DEM alcanzan importancia debido a que son datos topográgicos digitales de gran interés por su origen y el conocimiento que representan. La precisión de DEM en la simulación de los verdaderos parámetros terrestres de elevación, pendiente y aspecto mejora significativamente la calidad y calibre del conocimiento en numerosas aplicaciones en la tierra, ambiental y ciencias de la ingenierı́a . Taller de Informática I 11 nov 2015 ¿Qué es un DEM ? Definiciones de DEM Un DEM proporciona una representación digital de una porción de la terreno superficie de la tierra sobre una superficie de dos dimensiones (UNEP/GRID) http://www.grid.unep.ch. Un DEM es una matriz ordenada de números que representa la la distribución espacial de las elevaciones por encima de algún arbitraria datums en el paisaje ( Meijerink et al.,1994 ) Un DEM es un archivo digital que consiste en elevaciones del terreno para posiciones suelo a intervalos regularmente espaciados horizontales (USGS ) Taller de Informática I 11 nov 2015 DEM vs DTM Diferencias Digital Terrain Model (DTM) representa información del terreno usando muestreo de valores dicretos como pendiente, por ej. DEM representa los datos de elevación. Taller de Informática I 11 nov 2015 Estructura del DEM Lı́neas Describen la elevación del terreno por los contornos (almacenada en forma de gráficos digitales de lı́nea, DGLS), los pares x,y a lo largo de cada uno contornos de elevación especificada Taller de Informática I 11 nov 2015 Estructura del DEM GRID Las elevaciones se almacenan en una serie de cuadrı́culas. Taller de Informática I 11 nov 2015 Estructura del DEM tin Net Triangular Irregular, es una red de interconexión tringulos con nodos espaciados irregularmente o puntos de observación con coordenadas x, y, z valores. Ventaja sobre GRID es su capacidad para generar ms información en reas de relieve complejo. Taller de Informática I 11 nov 2015 Procesamiento DEM Remover hendiduras (Sinks) Cálculo de pendientes (Slopes) Dirección de pendiente (Aspect) GRID Acumulation (Flow Accumulation) Stream Order Taller de Informática I 11 nov 2015 Ejemplo Matlab http://dds.cr.usgs.gov/srtm/version2 1/SRTM3/South America/ Archivo: S43W065.hgt indica 43o de latitud sur y 65o longitud oeste Taller de Informática I 11 nov 2015 Ejemplo Matlab [ f i d 1 , mess ]= f o p e n ( ’ S35W059 . h g t ’ , ’ r b ’ , ’ b ’ ) ; fopen: Abre un archive y obtiene información acerca de él. La información la guarda en fid1 junto a mensaje en mess. fid1: es un número entero que identifica el archivo. mess: mensaje de error si el archivo no puede ser abierto. Argumentos: Nombre del archivo: entre comillas se coloca el nombre del archivo a abrir Permisos: Tipo de archivo En fid1 tengo un identificador de archivo. Taller de Informática I 11 nov 2015 Ahora tenemos que recuperar los datos: fread: Lee los datos de un archivo cuyo identificador se obtuvo con fopen. [ A , c o u n t ]= f r e a d ( f i d 1 , [ 1 2 0 1 , 1 2 0 1 ] , ’ b i t 1 6 ’ ) ; A: matriz donde se guardan los datos obtenidos count: cantidad de elementos leı́dos en A Argumentos: fid1: obtenido con fopen [MxN]: tamaño de A ’bit16’: formato en 16 bits Con fclose cerramos el archivo utilizando el identificador obtenido con fopen: fclose ( fid1 ) ; Taller de Informática I 11 nov 2015 Procesar la Matriz A 1) Trasponemos para que esté en igual posición que el mapa. A=A ’ ; A=f l i p u d (A) ; 2) Muchas veces los datos de un archivo .htg contienen errores que estn dados por números negativos. Por lo tanto, recorrer la matriz y corregir estos problemas: f o r i =1: s i z e (A , 1 ) f o r j =1: s i z e (A , 2 ) i f ( A( i , j ) < −10000 ) A( i , j ) = A( i −1 , j ) ; end ; end ; end ; Taller de Informática I 11 nov 2015 Procesar la Matriz A 3) Por último, trataremos de bajar un poco la resolución de la imagen que tenemos para que no tarde tanto al mostrar y usamos la función surf para mostrar la imagen en 3d: B = A( 5 0 0 : 8 0 0 , 200:500) ; axis ([0 ,120 ,0 ,120]) ; s u r f (B) Taller de Informática I 11 nov 2015 4) Por último agregamos color a la imagen usando la función shading. Esta función posee 3 maneras de ejecución: a) shading flat: cada segmento de la malla del grfico posee un color constante subplot (3 ,1 ,1) sphere (16) axis square shading f l a t t i t l e ( ’ F l a t Shading ’ ) Taller de Informática I 11 nov 2015 b) shading faceted: se muestran las lı́neas negras de la malla. Es la forma default subplot (3 ,1 ,2) sphere (16) axis square shading faceted t i t l e ( ’ Faceted Shading ’ ) Taller de Informática I 11 nov 2015 c) shading interp: varı́a el color de cada segmento interpolando los colores a lo largo de la linea subplot (3 ,1 ,3) sphere (16) axis square shading interp t i t l e ( ’ InterpolatedShading ’ ) Taller de Informática I 11 nov 2015 Código Completo [ f i d 1 , mess ]= f o p e n ( ’ S35W059 . h g t ’ , ’ r b ’ , ’ b ’ ) ; [ A , c o u n t ]= f r e a d ( f i d 1 , [ 1 2 0 1 , 1 2 0 1 ] , ’ b i t 1 6 ’ ) ; fclose ( fid1 ) ; A=A ’ ; A=f l i p u d (A) ; f o r i =1: s i z e (A , 1 ) f o r j =1: s i z e (A , 2 ) i f ( A( i , j ) < −10000 ) A( i , j ) = A( i −1, j ) ; end ; end ; end ; B = A( 5 0 0 : 8 0 0 , 200:500) ; axis ([0 ,120 ,0 ,120]) ; s u r f (B) , s h a d i n g i n t e r p , v i e w ( 0 , 9 0 ) Taller de Informática I 11 nov 2015 Taller de Informática I 11 nov 2015