- 1. Procesamiento de imágenes mediante la ventana del editor MATLAB
- 2. Procesamiento de imágenes con MATLAB GUI
- Creación de la interfaz gráfica de usuario de MATLAB para el procesamiento de imágenes
- Código GUI de MATLAB para procesamiento de imágenes
- Ejecute el código de la GUI de MATLAB para el procesamiento de imágenes
Imagínese apuntando su cámara a algún objeto y la cámara le dice el nombre de ese objeto, sí, Google Lens en los teléfonos inteligentes Android está haciendo lo mismo usando Procesamiento de imágenes. Esto le da a la computadora una visión para detectar y reconocer las cosas y tomar acciones en consecuencia. El procesamiento de imágenes tiene muchas aplicaciones como detección y reconocimiento de rostros, impresión del pulgar, realidad aumentada, OCR, escaneo de códigos de barras y muchas más. Hay muchos softwares disponibles para el procesamiento de imágenes, entre ellos MATLAB es el más adecuado para empezar.
MATLAB puede realizar muchas operaciones avanzadas de procesamiento de imágenes, pero para comenzar con el procesamiento de imágenes en MATLAB, aquí explicaremos algunas operaciones básicas como RGB a gris, rotar la imagen, conversión binaria, etc. claridad, filtrando utilizando las funciones explicadas en este tutorial.
Antes de continuar, si es nuevo en MATLAB, puede consultar nuestros tutoriales anteriores de MATLAB para comprender mejor:
- Introducción a MATLAB: una introducción rápida
- Interfaz de Arduino con MATLAB - LED parpadeante
- Control de motores de CC mediante MATLAB y Arduino
- Control de motor paso a paso usando MATLAB y Arduino
- Cómo trazar un gráfico de temperatura en tiempo real usando MATLAB
En MATLAB, como siempre, hay dos formas de realizar cualquier algoritmo de procesamiento de imágenes, una es ingresando directamente el comando en la ventana del editor / comando y la otra es creando una GUI para el mismo. A continuación, le mostraremos ambos métodos para realizar operaciones básicas de procesamiento de imágenes en MATLAB.
1. Procesamiento de imágenes mediante la ventana del editor MATLAB
Ahora, escribiremos el código para realizar algunas operaciones básicas de procesamiento de imágenes en la ventana del editor. Para familiarizarse con toda la terminología básica utilizada en MATLAB, siga el enlace. Copie y pegue el siguiente código en la ventana del editor, a = imread ('F: \ circuit digest \ procesamiento de imágenes usando matlab \ camerman.jpg'); subparcela (2,3,1); imshow (a); b = rgb2gray (a); subparcela (2, 3, 2); imshow (b); c = im2bw (a); subtrama (2, 3, 3); imshow (c); d = imajustado (b); subtrama (2, 3, 4); imshow (d); e = a; e = rgb2gray (e); subparcela (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ procesamiento de imágenes usando matlab \ beard-man.jpg') = tamaño (a) % colormap ('primavera')
En la variable 'a', estamos importando la imagen usando el comando imread ('nombre de archivo') y luego haciendo un gráfico de la fila '2' y la columna '3' usando la subtrama (fila, columna, posición) y mostrando la imagen importada en la posición ' 1 '. Para mostrar la imagen usamos el comando imshow ('nombre de archivo') .
A continuación se muestran algunos comandos para realizar un procesamiento básico en la imagen cargada:
- En la variable 'b', estamos convirtiendo la imagen RGB en una imagen de intensidad en escala de grises usando el comando rgb2gray ('nombre de archivo') y mostrándola en el gráfico en la posición '2'.
- En la variable 'c', estamos convirtiendo la imagen en una imagen binaria o puede decir en formato de '0' (negro) y '1' (blanco) usando el comando im2bw ('nombre de archivo') y mostrándolo en la gráfica en posición '3'.
- En la variable 'd', estamos ajustando o mapeando los valores de intensidad de la imagen en escala de grises usando el comando imadjust ('nombre de archivo') y mostrándolo en el gráfico en la posición '4'.
- En la variable 'e', estamos trazando el histograma de la imagen en escala de grises usando el comando imhist ('nombre de archivo') y mostrándolo en el gráfico en la posición '5'. Para trazar el histograma, siempre debe convertir la imagen a escala de grises y luego podrá ver el histograma de ese archivo gráfico.
- El comando Imfinfo ('nombre de archivo con ubicación') se usa para mostrar información sobre el archivo gráfico.
- El comando = size ('nombre de archivo') se utiliza para mostrar el tamaño y los planos de color de un archivo gráfico en particular.
- colormap ('primavera') se utiliza para cambiar el tipo de mapa de colores del archivo gráfico. Aquí, en mi código, configuro este comando como comentario, pero puede usarlo eliminando el signo de porcentaje. Hay muchos tipos de color en MATLAB como Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines y spring.
Como estos, hay varios comandos en MATLAB que se pueden usar para realizar diferentes tareas, puede verificar las funciones de procesamiento de imágenes en MATLAB siguiendo el enlace.
2. Procesamiento de imágenes con MATLAB GUI
Creación de la interfaz gráfica de usuario de MATLAB para el procesamiento de imágenes
Para crear una GUI (interfaz gráfica de usuario) para procesamiento de imágenes, inicie la GUI escribiendo el siguiente comando en la ventana de comandos .
guía
Se abrirá una ventana emergente, luego seleccione una nueva GUI en blanco como se muestra en la imagen de abajo,
Ahora tenemos que elegir el número de pulsadores (cada pulsador realizará una tarea diferente) y un eje para mostrar la imagen.
Para redimensionar o cambiar la forma del Pulsador o Ejes, simplemente haga clic en él y podrá arrastrar las esquinas del botón. Al hacer doble clic en cualquiera de estos, podrá cambiar el color, la cadena, la etiqueta y otras opciones de ese botón en particular. Después de la personalización se verá así
Puede personalizar los botones según su elección. Ahora, cuando guarda esto, se genera un código en la ventana Editor de MATLAB. Edite el código generado para configurar la tarea para diferentes botones. A continuación, hemos editado el código MATLAB.
Código GUI de MATLAB para procesamiento de imágenes
El código completo de MATLAB para el procesamiento de imágenes mediante la GUI de MATLAB se proporciona al final de este proyecto. Además, incluimos el archivo GUI (.fig) y el archivo de código (.m) aquí para descargar, con el cual puede personalizar los botones o el tamaño de los ejes según sus necesidades. Hemos editado el código generado como se explica a continuación.
En la función 'uploadimage' , copie y pegue el siguiente código para insertar el archivo desde la PC. Aquí, el comando uigetfile ('tipo de extensión de imagen') se usa para importar imágenes en la GUI de MATLAB. Lea ese archivo usando el comando imread () y luego muéstrelo con el comando imshow () en axes1 usando axes (handle.axes1) . Ahora, con el comando setappdata (), almacene la variable en la GUI para que la variable sea accesible desde una parte de la GUI a la otra parte de la GUI.
a = uigetfile ('. jpg') a = imread (a); ejes (tiradores.axes1); imshow (a); setappdata (0, 'a', a)
Ahora, en cada función verá el comando getappdata () que se usa para recuperar datos que se almacenan usando setappdata () en la GUI.
Aquí explicaremos ocho funciones de uso común en el procesamiento de imágenes.
S. No. |
Mando |
Nombre del botón |
Tarea a realizar |
1. |
uigetfile () |
Cargar imagen |
Haga clic para importar la imagen desde el disco |
2. |
rgb2gray () |
RGB a gris |
Haga clic para convertir la imagen RGB en escala de grises |
3. |
im2bw () |
Convertir a imagen binaria |
Haga clic para convertir la imagen en binario |
4. |
- |
REINICIAR |
Haga clic para restablecer la imagen como original |
5. |
imhist () |
Histograma |
Click para ver el histograma de la imagen |
6. |
desajuste () |
Imagen de complemento |
Click para ver la imagen del complemento |
7. |
edge (nombre de archivo, método) |
Detección de bordes |
Haga clic para detectar los bordes en la imagen |
8. |
imrotate (nombre de archivo, ángulo) |
Rotar las agujas del reloj |
Haga clic para rotar la imagen en el sentido de las agujas del reloj |
9. |
imrotate (nombre de archivo, ángulo) |
Girar en sentido antihorario |
Haga clic para rotar la imagen en sentido antihorario |
1. Convierta la imagen RGB en escala de grises
En la función 'rgb2gray' , copie y pegue el siguiente código para convertir la imagen RGB en escala de grises usando el comando rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); ejes (tiradores.axes1); imshow (agray);
2. Convertir a imagen binaria
En la función 'im2bw' , copie y pegue el siguiente código para convertir la imagen en una imagen binaria o puede decir en formato '0' (negro) y '1' (blanco) usando el comando im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); ejes (tiradores.axes1); imshow (abw);
3. Restablecer la imagen original
En la función 'restablecer' , copie y pegue el siguiente código para restablecer la imagen editada en la imagen original.
a = getappdata (0, 'a'); ejes (tiradores.axes1); imshow (a);
4. Trazar histograma de imagen
En la función 'histograma' , copie y pegue el siguiente código para trazar el histograma de la imagen en escala de grises usando el comando imhist ('nombre de archivo') y muéstrelo en axes1 . Para trazar el histograma, siempre debe convertir la imagen a escala de grises y luego podrá ver el histograma de ese archivo gráfico.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); ejes (tiradores.axes1); imhist (ahist);
5. Convertir a imagen complementaria
En la función 'complementarimagen' , copie y pegue el código siguiente para ver el complemento del archivo gráfico insertado usando el comando imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = desajuste (acomp); ejes (tiradores.axes1); imshow (acomp);
6. Detección de bordes mediante el método Canny
En la función 'borde' , copie y pegue el siguiente código para detectar y encontrar bordes en una imagen en escala de grises usando el comando edge ('nombre de archivo', 'método') . En el lugar de método puede elegir entre estos tres, Canny, Prewitt y montaje . Estamos usando el método Canny para la detección de bordes. Además, no puede detectar el borde directamente de la imagen original, primero debe convertirlo a escala de grises y luego puede detectar los bordes.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = edge (aedge , 'Canny') ' ejes (tiradores.axes1); imshow (aedge);
7. Girar la imagen en el sentido de las agujas del reloj
En la función 'en sentido horario' , copie y pegue el siguiente código para rotar la imagen en el sentido de las agujas del reloj usando el comando imrotate (nombre de archivo, 'ángulo')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (un reloj, 270); ejes (tiradores.axes1); imshow (un reloj);
8. Girar la imagen en sentido antihorario
En la función 'antihorario' , copie y pegue el siguiente código para rotar la imagen en el sentido antihorario usando el comando imrotate (nombre de archivo, 'ángulo')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (un reloj, 90); ejes (tiradores.axes1); imshow (un reloj);
Ejecute el código de la GUI de MATLAB para el procesamiento de imágenes
Ahora, haga clic en el botón 'EJECUTAR' para ejecutar el código editado en el archivo.m
MATLAB puede tardar unos segundos en responder, no haga clic en ningún botón de la GUI hasta que MATLAB muestre un mensaje de ocupado en la esquina inferior izquierda como se muestra a continuación.
Cuando todo esté listo, importe la imagen desde la PC haciendo clic en el botón 'Cargar imagen'. Ahora, podrá convertir o rotar la imagen haciendo clic en cualquier botón en consecuencia. La siguiente tabla le mostrará la tarea que estamos realizando al hacer clic en cualquier botón en particular:
El resultado al hacer clic en cada botón se mostrará a continuación,
El funcionamiento completo de cada botón se demuestra en el video a continuación.
Incluso puede hacer un nivel avanzado de procesamiento de imágenes con Image Processing Toolbox, que puede comprar en el sitio oficial de MATHWORKS, algunas de las operaciones de nivel avanzado se enumeran a continuación:
- Operaciones geométricas
- Operaciones de bloque
- Filtrado lineal y diseño de filtros
- Transforma
- Análisis y mejora de imágenes
- Operaciones de imágenes binarias