MATLAB y sus herramientas
MATLAB es una herramienta de software matemático que ofrece
un entorno de desarrollo integrado (IDE) con un lenguaje de programación
propio (lenguaje M).
Entre sus prestaciones básicas se hallan:
• Matrices
• Algoritmos
• GUI
• y la comunicación con programas en otros lenguajes y con otros
dispositivos hardware.
• El paquete MATLAB dispone de dos herramientas adicionales que
expanden sus prestaciones.
• Simulink
• GUIDE
• Además, se pueden ampliar las capacidades de MATLAB
• Toolboxes
• Blocksets
• MATLAB provee funciones y herramientas para visualizar datos en
2D y 3D
MATLAB combina un entorno de escritorio perfeccionado
para el análisis iterativo y los procesos de diseño con un
lenguaje de programación que expresa las matemáticas de
matrices y arrays directamente.
El desarrollo del algoritmo es fundamental para el
procesamiento de imágenes y la visión por computadora
porque cada situación es única y las buenas soluciones
requieren múltiples iteraciones de diseño.
MathWorks proporciona un entorno integral para obtener
información sobre su imagen y datos de video, desarrollar
algoritmos y explorar compensaciones de implementación.
EDGE
La detección de bordes es una técnica de procesamiento de imágenes
común, y se puede utilizar para una variedad de aplicaciones, como la
segmentación de imágenes, la detección de objetos y la detección de
líneas Hough.
• Es una técnica de procesamiento de imágenes para encontrar los límites de los
objetos dentro de las imágenes.
• Funciona al detectar discontinuidades en el brillo.
• La detección de bordes se usa para la segmentación de imágenes.
• La extracción de datos en áreas como el procesamiento de imágenes, la visión
por computadora y la visión artificial.
EDGE
• Sobel
• Canny
• Prewitt
• Roberts
• Métodos de lógica difusa.
• Método Sobel
Método Canny
Método de lógica difusa
Detección EDGE
En una imagen, un borde es una curva que sigue un camino de cambio
rápido en la intensidad de la imagen. Los bordes a menudo se asocian con
los límites de los objetos en una escena. La detección de bordes se usa
para identificar los bordes en una imagen.
Para encontrar bordes, puede usar la función de borde. Esta función busca
lugares en la imagen donde la intensidad cambia rápidamente, utilizando
uno de estos dos criterios:
Lugares donde la primera derivada de la intensidad es más grande en
magnitud que algún umbral
Lugares donde la segunda derivada de la intensidad tiene un cruce por
cero
Detección EDGE
Edge proporciona varios estimadores derivados, cada uno de los
cuales implementa una de estas definiciones.
Para algunos de estos estimadores, puede especificar si la operación
debe ser sensible a bordes horizontales, bordes verticales o ambos.
edge devuelve una imagen binaria que contiene 1's donde se
encuentran los bordes y 0 en otro lugar.
El método de detección de bordes más poderoso que
proporciona edge es el método Canny.
El método Canny difiere de los otros métodos de detección de
bordes en que utiliza dos umbrales diferentes (para detectar
bordes fuertes y débiles) e incluye los bordes débiles en la
salida solo si están conectados a bordes fuertes.
Por lo tanto, es menos probable que este método sea afectado
por el ruido y más probable que detecte los bordes débiles
verdaderos.
Detección EDGE
Es una técnica de procesamiento de imágenes para encontrar los límites
de los objetos dentro de las imágenes. Funciona al detectar
discontinuidades en el brillo. La detección de bordes se usa para la
segmentación de imágenes y la extracción de datos en áreas como el
procesamiento de imágenes.
Detectar bordes en imágenes
Este ejemplo muestra cómo detectar bordes en una imagen utilizando
el detector de bordes Canny y el detector de bordes Sobel.
Detectar bordes en imágenes
SOBEL CANNY
Detectando una celula usando la segmentación de imágenes
1. Se lee la imagen
2. detectar toda la célula
3. Dilata la imagen
4. Rellena los huecos interiores
5. eliminar los objetos conectados en el borde
6. suaviza el objeto
Un método alternativo para mostrar el objeto segmentado sería
colocar un contorno alrededor de la celda segmentada. El
esquema es creado por la función bwperim.
FUZY LOGIC TOOLBOX
Este ejemplo muestra cómo usar el software Fuzzy Logic Toolbox ™ para el
procesamiento de imágenes.
Específicamente, este ejemplo muestra cómo detectar bordes en una imagen.
Un borde es un límite entre dos regiones uniformes. Puede detectar un borde
comparando la intensidad de los píxeles vecinos.
Sin embargo, debido a que las regiones uniformes no están claramente definidas, las
pequeñas diferencias de intensidad entre dos píxeles vecinos no siempre representan
un borde.
El enfoque de lógica difusa para el procesamiento de imágenes le permite usar
funciones de membresía para definir el grado en que un píxel pertenece a un borde o
una región uniforme.
Importación de imagen RGB y conversión a escala de grises
Convierte Irgb a escala de grises
Convertir imagen en datos de doble precisión
El software Fuzzy Logic Toolbox funciona únicamente con
números de doble precisión. Por lo tanto, convierta Igray, una
matriz uint8, en una matriz doble.
Como los valores de uint8 están en el rango [0 2 ^ 8-1], todos los
elementos de I también están en ese rango. Escala I para que sus
elementos estén en el rango [0 1].
Obtener gradiente de imagen
El algoritmo de detección de bordes de lógica difusa para este
ejemplo se basa en el gradiente de imagen para ubicar las
roturas en regiones uniformes. Calcule el gradiente de la imagen
a lo largo del eje xy el eje y.
Gx y Gy son filtros simples de gradiente. Convierta I con Gx,
utilizando la función conv2, para obtener una matriz que
contenga los gradientes de eje x de I. Los valores de gradiente
están en el rango [-1 1]. Del mismo modo, convierta I con Gy
para obtener los gradientes del eje y de I.
Definir el sistema de inferencia difusa (FIS) para la detección de
bordes
Cree un sistema de inferencia difusa (FIS) para detección de
bordes, edgeFIS.
Especifique los gradientes de imagen, Ix e Iy, como las entradas
de edgeFIS.
Especifique una función de membresía gaussiana de media cero
para cada entrada. Si el valor del gradiente para un píxel es 0,
entonces pertenece a la función de membresía cero con un
grado de 1.
sx y sy especifican la desviación estándar para la función de
membresía cero para las entradas Ix e Iy. Puede cambiar los
valores de sx y sy para ajustar el rendimiento del detector de
bordes. Al aumentar los valores, el algoritmo es menos sensible
a los bordes de la imagen y disminuye la intensidad de los bordes
detectados.
Especifique la intensidad de la imagen detectada en el borde
como salida de edgeFIS
Especifique las funciones de membresía triangular, blancas y
negras, para Iout.
Como puede con sx y sy, puede cambiar los valores de wa, wb,
wc, ba, bb y bc para ajustar el rendimiento del detector de
bordes. Los trillizos especifican el inicio, el pico y el final de los
triángulos de las funciones de membresía. Estos parámetros
influyen en la intensidad de los bordes detectados.
Trace las funciones de membresía de las entradas / salidas de
edgeFIS.
Especifique las reglas de FIS
Añada reglas para hacer que un píxel sea blanco si pertenece a
una región uniforme. De lo contrario, haz que el píxel sea negro.
Evaluar FIS
Evalúe la salida del detector de borde para cada fila de píxeles
en I usando las filas correspondientes de Ix e Iy como entradas.
Trazar resultados
Trazar resultados
Ejemplo en MATLAB
Deteccion de bordes
En la primera parte se abre la imagen y se la aplica un filtrado
llamado sobel ,para eso se declaro la variable filt la cual
contiene el sobel y después se le aplica el filtro a la imagen con
imfilter, y se muestra con imagesc.
Devuelve un filtro de 3 por 3 que enfatiza los bordes
horizontales utilizando el efecto de suavizado al
aproximar un gradiente vertical. Para enfatizar los
bordes verticales
Se borró los anteriores comandos de la
consola para que se observe de una
mejor manera.
Por ejemplo aquí se muestra la imagen
de una manera normal.
Luego se muestra con el filtro aplicado
monochrome que es una escala de grises
a simple vista.
Tomando en cuenta los nuevos
comandos, se ve rgb2gray para aplicar el
filtro, y el otro sería ponerle un título a la
imagen con title
En esta parte se aplica el comando
fspecial con una manera gaussian lo que
nos arroja esta gráfica
Surf crea el grafico
Después de esto se aplicó un filtro
smoothed para posteriormente pasar a
encontrar los bordes de la imagen
Después de aplicar el filtro smoothed se
ven las diferencias entre el lado izquierdo
y derecho
Se extraen los valores de la matriz para
hacer la comparacion
Luego se ven los bordes de la imagen original
Estos son los bordes de la imagen con efecto smooth
Por último los bordes con parámetro log.
Que significa Laplacian of Gaussian.
En resumen
Detectó los bordes en una imagen usando un FIS, comparando el
gradiente de cada píxel en las direcciones xey. Si el gradiente de
un píxel no es cero, entonces el píxel pertenece a un borde
(negro). Usted definió el gradiente como cero usando las
funciones de membresía de Gauss para sus entradas FIS.
Ejemplo de detección de líneas
• Dentro de este ejemplo es importante destacar 3 funciones principales:
Donde podemos identificar la primera función para generar la Transformada de
Hough ( 𝜌 = 𝑥 𝐶𝑜𝑠𝜃 + 𝑦 𝑆𝑖𝑛 𝜃 ), con los parámetros que mas adelante le daremos
en la imagen.
La segunda línea es para identificar los picos dentro de la transformada de
Hough, estará alimentada de la transformada y de las acumulaciones en puntos
altos.
La ultima función nos arrojara las líneas, ya que nos traerá los resultados de los
puntos (función 2) dentro de la transformada de Hough (función 1)
Cargamos la imagen con la que vamos a trabajar y el
primer paso es pasar la imagen a escala de grises y
después detectar bordes, aquí lo hacemos con el
algoritmo “canny”.
Después pondremos la primera de las funciones ya
mencionadas especificando los parámetros de la
resolución en rho y la resolución en theta.
Enseguida podemos seguir con la segunda de nuestras
funciones importantes, aqui especificamos la cantidad
de puntos que queremos que no detecte dentro de la
transformada de Hough.
Para la tercera function ya tendremos detectadas las
lineas de nuestra imagen.
Podemos ver que se han encontrado
3 lineas, para verlo graficamente
complementamos nuestro codigo: