Professional Documents
Culture Documents
http://lonely113.blogspot.com
Lectura de Imgenes
2
Mediante el comando: Imagen=imread(nombre.extensin) La imagen a leer debe encontrarse en la carpeta de trabajo de Matlab. Los formatos de imagen soportados por Matlab son:
Formato TIFF Extensin .tiff
JPEG
GIF BMP PNG
.jpg
.gif .bmp .png
XWD
.xwd
http://lonely113.blogspot.com
>> Im_RGB=imread('fruta.jpg');
http://lonely113.blogspot.com
En Matlab una imagen en formato de color RGB se representa por tres matrices bidimensionales, correspondientes a los planos R, G y B.
Para obtener los planos R, G y B se ejecutan los comandos: Im_R=Imagen(:,:,1) Im_G=Imagen(:,:,2) Im_B=Imagen(:,:,3)
Ejemplo:
>> Im_R=Im_RGB(:,:,1); >> Im_G=Im_RGB(:,:,2); >> Im_B=Im_RGB(:,:,3);
http://lonely113.blogspot.com
Tamao de la Imagen
6
Despliegue de Imgenes
7
>> imshow(Im_RGB)
http://lonely113.blogspot.com
Escritura de Imgenes
8
Con el comando:
imwrite(Imagen,nombre.extensin)
>> imwrite(Im_RGB,'imagen.jpg');
http://lonely113.blogspot.com
Obtencin de valor de pixel Imagen(m,n) ; Cuando Imagen est en escala de grises (un solo plano).
Imagen(m,n,p) ; Para imagen RGB. Devuelve el valor del pixel correspondiente al plano p (1, 2 3).
Dnde: m,n son las coordenadas del pixel.
>> Im_RGB(300,300,1) ans = 255 >> Im_RGB(300,300,2) ans = 178 >> Im_RGB(300,300,3) ans = 10
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Edicin de Pixeles
11
http://lonely113.blogspot.com
Perfil de Imagen
12
Mostrar la imagen con el comando: imshow. Escribir el comando: improfile Trazar la lnea para obtener el perfil en la imagen (clic en inicio y clic en final) y Enter. Si se desea se puede guardar el perfil en una variable. Ejecutando: perfil=improfile;
300
250
200
150
100
50
50
100
150
350
400
450
500
http://lonely113.blogspot.com
Submuestreo
13
Submuestrear una imagen reduce su tamao y permite que el procesamiento posterior de la imagen se agilice.
a11 a12 a13 a14 a15 a16 a17 a18 a1n
Se toman pixeles equidistantes (muestras), dependiendo del factor elegido, y se desecha el resto de pixeles. Imagen_ sub=Imagen(1:a:end,1:a:end,1:1:end) Dnde: a es el factor de muestreo. Si a=2 la imagen se reduce a la mitad.
http://lonely113.blogspot.com
http://lonely113.blogspot.com
sea del tipo "double", ya que uint8 admite slo valores enteros entre 0 y 255.
Imagen_double=double(Imagen_uint8)
Imagen_uint8=uint8(Imagen_double)
El comando imshow slo muestra imgenes del tipo
uint8.
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Filtraje
17
http://lonely113.blogspot.com
Filtraje
18
http://lonely113.blogspot.com
Se puede realizar similar al caso anterior, definiendo un filtro para deteccin de bordes.
>> filter=[1 2 1;0 0 0;-1 -2 -1]; >> Im_RGB=imread('medusa.jpg'); >> Im_gray=rgb2gray(Im_RGB); >> Im_edge=filter2(filter,Im_gray); >> imshow(Im_RGB); >>figure,imshow(Im_edge);
http://lonely113.blogspot.com
Filtro Mediana
21
Imagen2=medfilt2(Imagen)
Ejemplo:
>> Im_RGB=imread('fruta.jpg'); >> Im_gray=rgb2gray(Im_RGB); >> Im_gray=imnoise(Im_gray, 'salt & pepper'); >> imshow(Im_gray) >> Im_filt=medfilt2(Im_gray); >> figure, imshow(Im_filt)
http://lonely113.blogspot.com
Deteccin de Bordes
22
imagen_edge=edge(imagen_gray,mascara);
Se requiere que la imagen est en escala de grises.
mascara es el tipo de mascara a utilizar (sobel,
http://lonely113.blogspot.com
Ejemplo:
23
http://lonely113.blogspot.com
Binarizacin
24
Imagen_bin=im2bw(Imagen,level)
http://lonely113.blogspot.com
Ejemplo: Mtodo 1.
25
http://lonely113.blogspot.com
Ejemplo: Mtodo 2.
26
>> Im_bin=im2bw(Im_RGB,0.5)
http://lonely113.blogspot.com
Erosin y Dilatacin
27
Dilatacin
28
Se utiliza el comando:
Result=imdilate(Imagen,SE)
Dnde: SE es la estructura del arreglo a utilizar como rejilla. Imagen es previamente binarizada.
Existen varias maneras de obtener una estructura SE. Se realiza mediante el comando "strel". Revisar los archivos de ayuda de Matlab.
http://lonely113.blogspot.com
Dilatacin
29
Suponiendo que se utiliza una matriz identidad de orden 3 como rejilla (mostrada con bordes resaltados en la imagen), el resultado de aplicar la operacin de dilatacin en el pixel que se traslapa con el elemento central de la rejilla es:
"Si alguno de los pixeles de la rejilla configurados como 1 coincide con al menos uno de la imagen el pixel resultante es 1".
http://lonely113.blogspot.com
Ejemplo:
30
Aplicando dilatacin a una imagen binarizada, utilizando una estructura generada a partir de una matriz cuadrada de "1" de orden 30.
>> SE=strel('square',30); >> Im_RGB=imread('imagen.jpg'); >> Im_gray=rgb2gray(Im_RGB); >> Im_edge=edge(Im_gray,'sobel'); >> Im_dilate=imdilate(Im_edge,se); >> imshow(Im_edge); >> figure,imshow(Im_dilate)
http://lonely113.blogspot.com
Erosin
31
Se utiliza el comando: Result=imerode(Imagen,SE) Dnde: SE es la estructura del arreglo a utilizar como rejilla. Imagen es previamente binarizada.
http://lonely113.blogspot.com
Erosin
32
Suponiendo que se utiliza una matriz identidad de orden 3 como rejilla (mostrada con bordes resaltados en la imagen), el resultado de aplicar la operacin de erosin en el pixel que se traslapa con el elemento central de la rejilla es:
"Todos los pixeles de la rejilla configurados como 1 deben coincidir con todos los de la imagen, si esto no sucede el resultado del pixel es 0".
http://lonely113.blogspot.com
Ejemplo:
33
Aplicando la operacin de erosin a la imagen dilatada utilizando una estructura generada por una matriz cuadrada de "1" de orden 15.
http://lonely113.blogspot.com
Vecindad
34
Vecindad-4
http://lonely113.blogspot.com
Vecindad-8
Conectividad
35
Dos pixeles estn con la misma etiqueta estn conectados si existe un camino del uno al otro a travs de pixeles vecinos con la misma etiqueta. La conectividad en Matlab puede ser: Conexin-4: Se toma en cuenta la vecindad-4 para determinar la conectividad de pixeles. Conexin-8: Se toma en cuenta la vecindad-8 para determinar la conectividad de pixeles. ETIQUETADO: Agrupacin de pixeles con caractersticas similares
Si se elige conectividad conexin-4 se considerara como dos objetos diferentes, pero si se elige conectividad conexin-8 se considerara como un solo objeto (vecindad diagonal).
http://lonely113.blogspot.com
Para contar la cantidad de objetos presentes en una imagen se realiza el procedimiento: 1. Leer la imagen. 2. Convertirla a escala de grises y posteriormente binarizarla. 3. En la imagen binarizada se requiere que los objetos a contar estn en blanco (1) y con fondo negro (0), si no fuera as se puede aplicar el comando: Im_bin=not(Im_bin)
4. Ejecutar el siguiente comando para etiquetar los objetos. Cada objeto encontrado se etiqueta con un nmero entero: 1, 2, 3,:
Im_label=bwlabel(Im_bin,C) Dnde: C=4 u 8 (Conexin) 5. Para obtener el nmero de objetos: n=max(max(Im_label))
http://lonely113.blogspot.com
Ejemplo:
37
>> Im_RGB=imread('imagen.jpg'); >> Im_bin=im2bw(Im_RGB,0.5) >>imshow(Im_bin) >> Im_bin=not(Im_bin); >> imshow(Im_bin) >> Im_label=bwlabel(Im_bin,8); >> n=max(max(Im_label)) n= 5
http://lonely113.blogspot.com
Seleccin de un Objeto
38
Ejemplo:
39
http://lonely113.blogspot.com
Resulta de suma utilidad para implementar algoritmos de visin o adquisicin de imgenes en tiempo real utilizando dispositivos simples y de bajo costo tales como las webcams.
Matlab incluye el toolbox "Image Acquisition" para este fin. El toolbox incluye la herramienta Image Aquisition tool "imaqtool" que se utilizar posteriormente.
http://lonely113.blogspot.com
Comandos a utilizar:
Imaqhwinfo
Devuelve la informacin del hardware y software disponibles, tales como: Adaptador de video instalado, versin de Matlab, Toolbox (nombre y versin). Imaqhwinfo(adaptor) Donde adaptor es el nombre del adaptador instalado, por lo general winvideo. Este comando devuelve informacin relacionada al adaptador.
Imaqhwinfo(adaptor,DeviceID)
Donde DeviceID es el ID del dispositivo a utilizar obtenido con el comando anterior. Si slo se cuenta con un dispositivo conectado el DeviceID ser 1. Este comando muestra informacin del dispositivo conectado (cmara) .
http://lonely113.blogspot.com
El adaptador instalado es "winvideo". Hay un dispositivo de adquisicin de imgenes instalado (DeviceID). El dispositivo instalado es una webcam "ilook300". Soporta 13 formatos de adquisicin. Formato por defecto: RGB 640x480.
http://lonely113.blogspot.com
Crear la estructura:
cam=imaqhwinfo(adaptor,DeviceID) Para poder obtener las caractersticas del dispositivo con facilidad. Por ejemplo, para obtener los formatos soportados: cam.SupportedFormats
Ejecutar el comando:
video=videoinput(adaptor,DeviceID,Format)
Construye un objeto de entrada de video (nexo entre el dispositivo y Matlab). Si no se especifica Format se asume el formato por defecto.
http://lonely113.blogspot.com
>> cam.SupportedFormats
ans = Columns 1 through 4 'I420_160x120' 'I420_176x144' 'I420_320x240' 'I420_352x288' Columns 5 through 8 'I420_640x480' 'RGB24_1280x960' 'RGB24_1600x1200' 'RGB24_160x120' Columns 9 through 12 'RGB24_176x144' 'RGB24_320x240' 'RGB24_352x288' 'RGB24_640x480' Column 13 'RGB24_800x600' >> video=videoinput('winvideo',1,'RGB24_640x480');
http://lonely113.blogspot.com
Pre - Visualizacin
45
>> preview(video)
http://lonely113.blogspot.com
Captura
46
http://lonely113.blogspot.com
>> imaqtool
http://lonely113.blogspot.com
Aplicaciones
48
2. Cuenta
de objetos de caractersticas similares presentes en una imagen. 3. Reconocimiento ptico de Caracteres (OCR) mediante un algoritmo implementado por terceros.
En todos los casos las imgenes sern obtenidas mediante una cmara web.
http://lonely113.blogspot.com
No se especifica formato de captura, entonces se asume el formato por defecto (RGB 640x480).
Im_RGB
Im_gray
Im_edge
Im_edge2
http://lonely113.blogspot.com
2. Conteo de Objetos
51
imagen.
problema es que si no se realiza tratamiento previo tambin se etiquetarn los pines de cada transistor.
operaciones de erosin (hasta que desaparezcan los pines y solo quede el cuerpo) y luego dilatacin (para obtener objetos a contar de regular tamao).
http://lonely113.blogspot.com
2. Conteo de Objetos
52 >> cam=imaqhwinfo(winvideo,1); >> video=videoinput(winvideo,1); >> Im_RGB=getsnapshot(video); >> imshow(Im_RGB) >> Im_bin=im2bw(Im_RGB,0.5); >> figure, imshow(Im_bin) >> Im_bin2=not(Im_bin); >> figure, imshow(Im_bin2) >> SE=strel('square',10); >> Im_erode=imerode(Im_bin2,SE); >> figure, imshow(Im_erode) >> Im_dilate=imdilate(Im_erode,SE); >> figure,imshow(Im_dilate) >> Im_label=bwlabel(Im_dilate,8); >> n=max(max(Im_label)) n= 10
http://lonely113.blogspot.com
2. Conteo de Objetos
53
Im_RGB
Im_bin
http://lonely113.blogspot.com
2. Conteo de Objetos
54
La imagen se invierte para poder seguir con el procedimiento de tratamiento de imagen. Si no se aplica erosin se etiquetara cada objeto aislado, dando como resultado un nmero de objetos muy superior al real.
Im_bin2
http://lonely113.blogspot.com
2. Conteo de Objetos
55
Im_erode
Im_dilate
Con estas dos operaciones se obtiene slo el cuerpo de los transistores en su tamao original, los pines ya fueros desechados. La imagen est lista ahora para el etiquetado y conteo.
http://lonely113.blogspot.com
3. Reconocimiento de Caracteres
56
http://www.matpic.com/esp/matlab/ocr.html.
Para usar el algoritmo los archivos a descargados se deben copiar
OCR
http://lonely113.blogspot.com
3. Reconocimiento de Caracteres
57
>> cam=imaqhwinfo('winvideo',1); >> video=videoinput('winvideo',1); >> preview(video) >> text=getsnapshot(video); >> imshow(text) >> text_bin=im2bw(text,0.5); >> figure,imshow(text_bin) >> SE=strel('square',5); >> text_erode=imerode(text_bin,SE); >> figure,imshow(text_erode) >> text_dilate=imdilate(text_erode,SE); >> figure,imshow(text_dilate) >> text_fin=not(text_dilate); >> figure,imshow(text_fin) >> imwrite(text_fin,'TEST_1.jpg'); >> ocr
http://lonely113.blogspot.com
3. Reconocimiento de Caracteres
58
text
text_bin
text_bin contiene elementos no deseados (puntos blancos) que podran perjudicar el proceso de reconocimiento de caracteres. Estos elementos se eliminan aplicando la operacin de erosin.
http://lonely113.blogspot.com
3. Reconocimiento de Caracteres
59
text_erode
text_dilate
3. Reconocimiento de Caracteres
60
text_fin
Es necesario que el texto est en negro con fondo blanco para aplicar el algoritmo.
http://lonely113.blogspot.com
http://lonely113.blogspot.com
61