Código fuente práctico de MATLAB
1 Lectura y rotación de imágenes
A=imread('');%Leer imagen
subplot( 2,2,1),imshow(A),title('imagen original');% imagen de salida
I=rgb2gray(A);
subplot(2 ,2, 2),imshow(A),title('Imagen en escala de grises');
subplot(2,2,3),imhist(I),title('Histograma de imagen en escala de grises');% Genera el original histograma de imagen
theta = 30;J = imrotate(I,theta);% Intente variar el ángulo, theta.
subplot(2,2,4), imshow(J) ,title('Imagen rotada')
2 Detección de bordes
I=imread('C:\Users\HP\Desktop\Usual Summary\Luffy .jpg'); p>
subtrama(2,2,1),imshow(I),título('imagen original');
I1=edge(I,'sobel');
subplot(2,2,2),imshow(I1),title('detección de bordes sobel');
I2=edge(I,'prewitt'); subplot(2,2,3),imshow(I2),title('detección de bordes previos a Witt');
I3=edge(I,'log');
p>
subplot(2,2,4),imshow(I3),title('detección de bordes de registro');
inversión de 3 imágenes
El programa MATLAB se implementa de la siguiente manera :
I=imread('xian.bmp');
J=doble(I);
J=-J+(256-1); %Transformación lineal de inversión de imagen
H=uint8(J);
subplot(1,2,1),imshow(I);
subplot( 1 ,2,2),imshow(H);
4. Transformación lineal en escala de grises
El programa MATLAB se implementa de la siguiente manera:
I=imread(' xian .bmp');
subtrama(2,2,1),imshow(I);
título('imagen original');
eje ( );
eje en;% mostrar sistema de coordenadas
I1=rgb2gray(I);
subplot(2,2,2),imshow(I1 ) ;
title('Imagen en escala de grises');
eje();
eje activado; %Mostrar sistema de coordenadas
J =imadjust(I1,[0.1 0.5],[]); % de estiramiento local, estirando la escala de grises dentro de [0.1 0.5] a [0 1]
subplot(2,2,3) ,imshow(J );
title('Imagen de transformación lineal [0.1 0.5]');
eje();
cuadrícula activada % red de visualización Línea de cuadrícula p>
eje activado; %Mostrar sistema de coordenadas
K=imadjust(I1,[0.3 0.7],[]); %Estiramiento local, coloque el sistema de coordenadas dentro de [0.3 0.7] El estiramiento en escala de grises. es [0 1]
subplot(2,2,4),imshow(K);
title('Imagen de transformación lineal [0.3 0.7]');
eje();
cuadrícula activada; %mostrar líneas de cuadrícula
eje activado ; %Mostrar sistema de coordenadas
5. Transformación no lineal
El programa MATLAB se implementa de la siguiente manera:
I=imread('xian.bmp');
p>I1=rgb2gray(I);
subplot(1,2,1),imshow(I1);
title('Imagen en escala de grises') ;
eje();
cuadrícula activada;%mostrar líneas de cuadrícula
eje activado;%mostrar sistema de coordenadas
J=doble ( I1);
J=40*(log(J+1));
H=uint8(J);
subtrama(1,2 , 2),imshow(H);
title('Imagen de transformación logarítmica');
axis();
cuadrícula activada %display grid Line;
eje activado; % muestra el sistema de coordenadas
4. Ecualización del histograma
El programa MATLAB se implementa de la siguiente manera:
I=imread ('xian.bmp');
I=rgb2gray(I);
figura;
subtrama(2,2,1);
imshow(I);
subtrama(2,2,2);
imhist(I);
I1=histeq(I) ;
figura;
subtrama(2,2,1);
imshow(I1);
subtrama(2,2 ,2);
imhist(I1);
5. Filtro de suavizado lineal
Utilice MATLAB para implementar el método de promedio de dominio para suprimir el ruido: p>
I=imread('xian.bmp');
subtrama(231)
imshow(I)
título('imagen original ')
I=rgb2gray(I);
I1=imnoise(I,'sal y pimienta',0.02);
subtrama(232)
imshow(I1)
title('Imagen con ruido de sal y pimienta agregado')
k1=filter2(fspecial('average',3),I1 )/255; %Realizar filtrado de suavizado de plantilla 3*3
k2=filter2(fspecial('average',5),I1)/255; %Realizar filtrado de suavizado de plantilla 5*5 k3=filter2(fspecial ('average' ,7),I1)/255; % realiza filtrado de suavizado de plantilla 7*7
k4=filter2(fspecial('average',9),I1)/255; 9 filtrado de suavizado de plantilla
subplot(233),imshow(k1);title('3*3 filtro de suavizado de plantilla');
subplot(234),imshow(k2); title('5 *5 Filtro de suavizado de plantilla');
subplot(235),imshow(k3);title('7*7 Filtro de suavizado de plantilla');<
/p>
subplot(236),imshow(k4);title('filtro de suavizado de plantilla 9*9');
6. Filtro mediano
Utilice el procedimiento MATLAB implementar el filtrado mediano es el siguiente:
I=imread('xian.bmp');
I=rgb2gray(I);
J=imnoise ( I,'salt&pepper',0.02);
subplot(231),imshow(I);title('imagen original');
subplot(232),imshow(J ) ;title('Agregar imagen de ruido de sal y pimienta');
k1=medfilt2(J); %Realizar filtrado de mediana de plantilla 3*3
k2=medfilt2(J,) ; % Realizar filtrado de mediana de plantilla 5*5
k3=medfilt2(J,); % Realizar filtrado de mediana de plantilla 7*7
k4=medfilt2(J,); *9 Filtro de mediana de plantilla
subplot(233),imshow(k1);title('3*3 Filtro de mediana de plantilla');
subplot(234),imshow( k2) ;title('filtro de mediana de plantilla 5*5');
subplot(235),imshow(k3);title('filtro de mediana de plantilla 7*7');
subtrama (236),imshow(k4);title('filtro mediano de plantilla 9*9');
7. Utilice el operador de Sobel y el laplaciano para enfocar la imagen:
I=imread. ('xian.bmp');
subtrama(2,2,1),imshow(I);
título('Imagen original ');
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado;%Mostrar sistema de coordenadas
I1=im2bw(I);
subtrama(2,2,2),imshow(I1);
título('Imagen binaria');
eje();
cuadrícula activada;%mostrar líneas de cuadrícula
eje activado;%mostrar sistema de coordenadas
H=fspecial('sobel'); %Seleccionar operador sobel
J =filter2(H,I1); %Operación de convolución
subplot(2,2,3),imshow(J);
title('El operador Sobel agudiza la imagen');
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado;%Mostrar sistema de coordenadas
h=[0 1 0,1 -4 1,0 1 0]; %Operador laplaciano
J1=conv2(I1,h ,'same');% operación de convolución
subplot(2,2 ,4),imshow(J1);
title('El operador laplaciano agudiza la imagen ');
axis();
cuadrícula activada; %Mostrar cuadrícula líneas
eje activado; %Mostrar sistema de coordenadas
8. El operador de gradiente detecta bordes
Utilice MATLAB para implementar de la siguiente manera:
I =imread('xian.bmp');
subplot(2,3, 1);
imshow(I);
title('imagen original ');
eje();
>
cuadrícula activada; %mostrar líneas de cuadrícula
eje activado; %mostrar sistema de coordenadas
I1=im2bw(I);
subplot(2, 3,2);
imshow(I1);
title('Imagen binaria');
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
I2=edge(I1,'roberts');
figura; p>
subplot(2,3,3);
imshow(I2);
title('resultado de segmentación del operador de Roberts');
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
I3=edge(I1, 'sobel');
subplot(2,3,4);
imshow(I3);
title('resultado de segmentación del operador sobel');
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
I4= borde(I1,'Prewitt' );
subplot(2,3,5);
imshow(I4);
title('Resultado de segmentación del operador Prewitt');
eje();
cuadrícula activada; %mostrar líneas de cuadrícula
eje activado; %mostrar sistema de coordenadas
9. /p>
Utilice el programa MATLAB para implementar lo siguiente:
I=imread('xian.bmp');
subplot(2,2,1); p>
imshow(I);
title('imagen original');
I1=rgb2gray(I);
subplot(2, 2,2);
imshow(I1);
title('Imagen en escala de grises');
I2= edge(I1,'log');
subplot(2,2,3);
imshow(I2);
title('resultado de segmentación del operador de registro');
10. El operador Astuto detecta bordes
El programa MATLAB se implementa de la siguiente manera:
I=imread('xian.bmp'); 2,2,1);
imshow(I);
title('imagen original')
I1 =rgb2gray(I);
subplot(2,2,2);
imshow(I1);
title('Imagen en escala de grises'); (I1,'canny');
subplot(2,2,3);
imshow(I2);
title('resultado de segmentación del operador astuto ');
11. Seguimiento de límites (función bwtraceboundary)
clc
clear al.
l
I=imread('xian.bmp');
figura
imshow(I);
título('original Image');
I1=rgb2gray(I); %Convertir imagen en color a imagen en escala de grises
threshold=graythresh(I1); Calcular para convertir imagen en escala de grises a binaria El umbral requerido para la imagen
BW=im2bw(I1, umbral %Convierte la imagen en escala de grises en una imagen binaria
figura
imshow(BW); p>
title('Imagen binaria');
dim=size(BW);
col=round(dim(2)/2)- 90; las coordenadas de la columna del punto inicial
row=find(BW(:,col),1 %Calcular las coordenadas de la fila del punto inicial
connectivity=8; p>
num_points=180;
contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);
%Extraer límite
figura
imshow(I1);
espera;
plot(contour(:,2),contour(:,1), 'g ','LineWidth' ,2);
title('Imagen de seguimiento de límites');
12. Transformación de Hough
I= imread(' xian. bmp');
rotI=rgb2gray(I);
subplot(2,2,1);
imshow(rotI); p>
título('Imagen en escala de grises');
eje();
cuadrícula en
eje en;
BW=edge(rotI,'prewitt');
subplot(2,2,2);
imshow(BW);
título(' imagen prewitt después de la detección del borde del operador');
eje();
cuadrícula activada
eje activado;
[H, T,R]=hough(BW);
subplot(2,2,3);
imshow(H,[],'XData',T,'YData', R,'InitialMagnification','fit');
title('Diagrama de transformación de Hough');
xlabel('\theta'),ylabel('\rho') ;
eje encendido, eje normal, espera;
P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); /p>
x=T(P(:,2));y=R(P(:,1));
plot(x,y,'s','color ' ,'blanco');
lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
subplot(2, 2 ,4);,imshow(rotI);
title('Detección de imagen por transformación aproximada');
axis();<
/p>
cuadrícula encendida;
eje encendido;
espera;
max_len=0;
para k= 1:longitud(líneas)
xy=[líneas(k).punto1;líneas(k).punto2];
plot(xy(:,1),xy(: ,2),'LineWidth',2,'Color','green');
plot(xy(1,1),xy(1,2),'x','LineWidth', 2,'Color','amarillo');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red ');
len=norm(lines(k).point1-lines(k).point2);
if(len>max_len)
max_len =len;
xy_long=xy;
fin
fin
plot(xy_long(:,1),xy_long(:, 2),'LineWidth',2,'Color','cyan');
13. Método de umbral de histograma
Utilice MATLAB para implementar el método de umbral de histograma:
I=imread('xian.bmp');
I1=rgb2gray(I);
figura;
subtrama(2,2, 1);
imshow(I1);
title('Imagen en escala de grises')
eje();
cuadrícula en; %Mostrar líneas de cuadrícula
eje encendido; %Mostrar sistema de coordenadas
[m,n]=size(I1);%Medir parámetros de tamaño de imagen
GP= zeros(1,256); %Crea previamente un vector que almacene la probabilidad de aparición en escala de grises
para k=0:255
GP(k+1)=length(find(I1=) =k))/(m*n);% Calcula la probabilidad de ocurrencia de cada nivel de escala de grises y guárdalo en la posición correspondiente en GP
end
subplot(2, 2, 2),bar(0:255,GP,'g')% dibujar histograma
title('Histograma en escala de grises')
xlabel('Valor en escala de grises') p>
ylabel('Probabilidad de ocurrencia')
I2=im2bw(I,150/255
subplot(2,2,3),imshow( I2) ;
title('Imagen segmentada con umbral 150')
axis();
cuadrícula activada; %mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
I3=im2bw(I,200/255 %
subplot(2,2,4),imshow(I3); >
title('Imagen segmentada con umbral 200')
axis();
cuadrícula activada; %mostrar líneas de cuadrícula
eje activada; mostrar sistema de coordenadas
14. Método de umbral automático: método Otsu
Utilice MATLAB para implementar el algoritmo Otsu:
clc
borrar todo
I=imread('xian.bmp');
sub
plot(1,2,1),imshow(I);
título('imagen original')
eje();
cuadrícula activada; Mostrar líneas de cuadrícula
eje en; %Mostrar sistema de coordenadas
level=graythresh(I %Determinar umbral de gris
BW=im2bw(I, nivel) ;
subplot(1,2,2),imshow(BW);
title('Imagen de segmentación del umbral del método Otsu')
axis();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
15. 'xian.bmp'); %Cargar imagen
I1=rgb2gray(I);
subplot(1,2,1);
imshow(I1) );
title('Imagen en escala de grises')
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado ; %Mostrar sistema de coordenadas
se=strel('disk',1); %Generar elementos estructurales circulares
I2=imdilate(I1,se) ; elementos estructurales generados
subplot(1,2,2);
imshow(I2);
title(' Inflate Post-image'); p>
eje();
cuadrícula activada; %mostrar líneas de cuadrícula
eje activado; %mostrar sistema de coordenadas
16. p>
MATLAB implementa la operación de corrosión
I=imread('xian.bmp'); %Load image
I1=rgb2gray( I);
subplot(1,2,1);
imshow(I1);
title('Imagen en escala de grises')
eje();
cuadrícula activada; %Mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
se=strel('disk',1 %Generar elementos estructurales circulares
p>I2=imerode(I1,se); %Usa los elementos estructurales generados para erosionar la imagen
subplot(1,2,2 );
imshow(I2) );
title('imagen después de la corrosión');
eje();
cuadrícula activada %Mostrar líneas de cuadrícula
eje activado; %Mostrar sistema de coordenadas
17. Operaciones de apertura y cierre
Utilice MATLAB para implementar operaciones de apertura y cierre
I=imread('xian.bmp) '); %Cargar imagen
subplot(2,2,1),imshow(I);
title(' Imagen original');
eje ();
>eje activado; %Mostrar sistema de coordenadas
I1=rgb2gray(I);
subplot(2,2,2),imshow(I1);
title('Imagen en escala de grises');
axis();
eje en; %Mostrar sistema de coordenadas
se=strel('disk',1 ) ; % Utiliza un círculo con un radio de 1 como elemento estructural
I2=imopen(I1,se); %Operación abierta
I3=imclose(I1,se %); Cerrar operación
subplot(2,2,3),imshow(I2);
title('Abrir la imagen después de la operación');
axis( );
eje encendido; %Mostrar sistema de coordenadas
subplot(2,2,4),imshow(I3);
title('Imagen después de cerrar operación') ;
eje();
eje en; %Mostrar sistema de coordenadas
18. I=imread ('xian.bmp');%Cargar imagen
subplot(3,2,1),imshow(I);
title('imagen original');
p>eje();
eje en;% mostrar sistema de coordenadas
I1=rgb2gray(I);
subplot( 3,2, 2),imshow(I1);
title('Imagen en escala de grises');
eje();
eje encendido;% de visualización sistema de coordenadas
se=strel('disk',1);
I2=imopen(I1,se);% operación abierta
I3=imclose( I1,se );% operación de cierre
subplot(3,2,3),imshow(I2);
title('Abrir la imagen después de la operación');
eje();
eje en;% mostrar sistema de coordenadas
subplot(3,2,4),imshow(I3);
title('Imagen cerrada después de la operación');
axis();
eje en;% mostrar sistema de coordenadas
se=strel('disk', 1);
I4=imopen(I1,se);
I5=imclose(I4,se);
subtrama(3,2,5) ,imshow(I5 );%imagen de operación abierto-cerrado
title('imagen de operación abierto-cerrado');
eje();
eje en ;%mostrar coordenadas Departamento
I6=imclose(I1,se);
I7=imopen(I6,se);
subplot(3,2, 6),imshow (I7);% imagen de operación cerrado-abierto
title('imagen de operación cerrado-abierto');
eje();
eje en;% Mostrar sistema de coordenadas
19. Extracción de límites morfológicos
Utilice MATLAB para implementar de la siguiente manera:
I=imread('xian.bmp') ;% cargar imagen
subplot(1,3,1),imshow(I);
t
itle('imagen original');
eje();
cuadrícula activada;%mostrar líneas de cuadrícula
eje activado;%mostrar sistema de coordenadas
p>I1=im2bw(I);
subplot(1,3,2),imshow(I1);
title('Imagen binarizada'); /p>
eje();
cuadrícula activada;%mostrar líneas de cuadrícula
eje activado;%mostrar sistema de coordenadas
I2=bwperim (I1 ); %Obtener el perímetro del área
subplot(1,3,3),imshow(I2);
title('Imagen binaria del perímetro del límite'); p>
eje();
cuadrícula activada;
eje activado;
20. Extracción de esqueleto morfológico
Usar MATLAB para implementar lo siguiente:
I=imread('xian.bmp');
subplot(2,2,1),imshow(I);
título('imagen original');
eje();
eje en;
I1=im2bw(I);
subplot(2,2,2),imshow(I1);
title('Imagen binaria');
axis();
eje en ;
I2=bwmorph(I1,'skel',1);
subtrama(2,2,3),imshow(I2);
título ('1 extracción de esqueleto');
axis();
eje en;
I3=bwmorph(I1,'skel', 2);
subtrama(2,2,4),imshow(I3);
título('Extracción del segundo esqueleto');
eje( );
eje en;
21. Extrae directamente las cuatro coordenadas del vértice
I = imread('xian.bmp');
I = I (:,:,1);
BW=im2bw(I);
figura
imshow(~BW)
[ x,y]=getpts
Filtro suave
h=fspecial('average',9);
I_gray=imfilter(I_gray ,h,'replicar ');% filtro de suavizado