Buscando código MATLAB
Código fuente práctico de MATLAB
1 Lectura y rotación de imágenes
A=imread(''); , 2, 1), imshow(A), title('imagen original');
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'); /p>
theta = 30; J = imrotate(I, theta); Intente variar el ángulo, theta.
subplot(2, 2, 4), imshow( J), title(' Imagen girada')
2 Detección de bordes
I=imread('C:\Users\HP\Desktop\Usual Summary\Luffy.jpg') ;
subtrama(2, 2, 1), imshow(I), título('imagen original');
I1=edge(I,'sobel');
p>
subtrama(2, 2, 2), imshow(I1), título('detección de bordes de sobel');
I2=edge(I,'prewitt');
subtrama(2, 2, 3), imshow(I2), título('detección de bordes previos a Witt');
I3=edge(I, 'log');
subtrama (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=double(I);
J=-J (256-1); Transformación lineal de inversión de imagen;
H=uint8(J);
subtrama(1, 2, 1), imshow(I);
subtrama(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(); p >
eje activado; mostrar sistema de coordenadas
I1=rgb2gray(I);
subplot(2, 2, 2), imshow(I1);
title('Imagen en escala de grises');
axis();
eje activado; mostrar sistema de coordenadas
J=imadjust(I1,[0.1] 0.5], []); estiramiento local, estirando la escala de grises dentro de [0.1 0.5] a [0 1]
subplot(2, 2, 3), imshow(J);
p>title('Imagen de transformación lineal [0.1 0.5]');
axis();
cuadrícula en; mostrar líneas de cuadrícula
eje en; mostrar el sistema de coordenadas
K=i
madjust(I1, [0.3 0.7], []); estiramiento local, estirando la escala de grises dentro de [0.3 0.7] a [0 1]
subplot(2, 2, 4), imshow (K);
title('Imagen de transformación lineal [0.3 0.7]');
eje();
cuadrícula activada
eje activado; mostrar sistema de coordenadas
5. Transformación no lineal
El programa MATLAB se implementa de la siguiente manera:
I=imread('xian. bmp') ;
I1=rgb2gray(I);
subplot(1, 2, 1), imshow(I1);
title('imagen en grados de gris' );
eje();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
J=double( I1);
J=40*(log(J 1));
H=uint8(J);
subtrama(1, 2, 2 ), imshow(H);
title('Imagen de transformación logarítmica');
eje();
mostrar líneas de cuadrícula
eje encendido; mostrar sistema de coordenadas
4. Ecualización de histograma
El programa MATLAB se implementa de la siguiente manera:
I= imread('xian. bmp');
I=rgb2gray(I);
figura;
subtrama(2, 2, 1);
p>
imshow(I);
subplot(2, 2, 2);
imhist(I);
I1=histeq(I);
figura;
subtrama(2, 1); 2, 2);
imhist(I1);
5. Filtro de suavizado lineal
Uso de MATLAB para implementar el método de promedio de dominio para suprimir el ruido:
I=imread('xian.bmp');
subtrama(231)
imshow(I)
título('original imagen' )
I=rgb2gray(I);
I1=imnoise(I,'sal&pimienta',0.02);
subtrama(232) p>
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; Realizar filtro de suavizado de plantilla 7*7
k4=filter2(fspecial('average', 9),I1)/2
55; Realizar filtrado de suavizado de plantilla 9*9
subplot(233), imshow(k1);'filtrado de suavizado de plantilla 3*3');
subplot(234), imshow(k2); title('Filtro de suavizado de plantilla 5*5');
subplot(235), imshow(k3);'
subplot(236), imshow(k4); title('filtro de suavizado de plantilla 9*9');
6. Filtro de mediana
Utilice MATLAB para implementar el filtrado de mediana. El programa es el siguiente:
I=imread('xian.bmp');
I=rgb2gray(I);
J=imnoise(I, ' saltamp; pepper', 0.02);
subplot(231), imshow(I);
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,); 5* Filtrado de mediana de 5 plantillas
k3=medfilt2(J,); Realizar filtrado de mediana de plantilla de 7*7
k4=medfilt2(J,); Filtro
subplot(233), imshow(k1); title('filtro de mediana de plantilla 3*3');
subplot(234), imshow(k2); Filtro de mediana de plantilla de 5*5');
subplot(235), imshow(k3); título('Filtro de mediana de plantilla de 7*7');
subplot( 236); imshow(k4); title('9*9 template mediana filter');
7. Utilice el operador Sobel y Laplaciano para enfocar la imagen:
I=imread('xian. bmp');
subtrama(2, 2, 1), imshow(I);
título('imagen original');
p>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(); p>cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
H=fspecial('sobel'); (H, I1); Operación de convolución
subplot(2, 2, 3), imshow(J);
title('imagen de nitidez del operador sobel');
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, 'misma' operación de convolución
subplot(2, 2, 4), imshow(J1)
title('El operador laplaciano enfoca la imagen');
eje();
muestra líneas de cuadrícula
eje activado; muestra el sistema de coordenadas
8. El operador de gradiente detecta bordes
Utilice MATLAB para implementar de la siguiente manera:
I=imread(' xian.bmp') ;
subtrama(2, 3, 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) ;
subplot(2, 3, 2);
imshow(I1);
title('Imagen binaria'); /p>
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
I2=edge(I1,'roberts');
figure;
subplot(2,3,3);
imshow(I2);
title('roberts calcula el resultado de la subsegmentación'); /p>
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'); /p>
eje();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
I4=edge(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
p>9. bordes
El programa MATLAB se implementa de la siguiente manera:
I=imread('xian.bmp');
subplot(2, 2, 1);
imshow(I);
título('imagen original');
I1=rgb2gray(I); 2, 2, 2);
imshow(I1);
título('Imagen en escala de grises'); );
subplot(2, 2, 3);
imshow(I2);
title('Resultado de segmentación del operador de registro');
10.Operación astuta
Bordes de subdetección
Utilice el programa MATLAB para implementar de la siguiente manera:
I=imread('xian.bmp');
subplot(2, 2, 1);
imshow(I);
título('imagen original')
I1=rgb2gray(I);
subplot(2, 2, 2);
imshow(I1);
título('imagen en escala de grises'); astuto' );
subplot(2, 2, 3);
imshow(I2);
title('resultado de segmentación del operador astuto'); /p> p>
11. Seguimiento de límites (función bwtraceboundary)
clc
borrar todo
I=imread('xian.bmp') ;
p>figura
imshow(I);
título('imagen original'); ; Convertir la imagen en color a Convertir imagen en escala de grises
threshold=graythresh(I1); Calcule el umbral requerido para convertir una imagen en escala de grises en una imagen binaria
BW=im2bw(I1, umbral) ; Convertir imagen en escala de grises a imagen binaria Convertir la imagen de grados en una imagen binaria
figura
imshow(BW);
title('Imagen binaria');
dim=size(BW);
col=round(dim(2)/2)-90 Calcular las coordenadas de la columna del punto inicial
row=; find(BW(:,col) , 1); Calcular las coordenadas de la fila del punto inicial
connectivity=8
num_points=180
contour=bwtraceboundary; (BW, [fila, columna], 'N', conectividad, num_points);
Extraer límite
figura
imshow(I1);
espera;
espera;
figura
imshow(I1); p>
plot(contour(:, 2) , contour(:, 1), 'g', 'LineWidth', 2);
title('Imagen de seguimiento de límites');
p>12.Transformación dura p>
I= imread('xian.bmp');
rotI=rgb2gray(I);
subtrama( 2, 2, 1);
imshow(rotI);
title('Imagen en escala de grises');
eje();
cuadrícula activada
eje en;
BW=edge(rotI,'prewitt');
subplot(2, 2, 2);
imshow(BW);
title('imagen después de la detección de bordes del operador prewitt');
eje();
cuadrícula activada
eje activado;
[H, T, R] = ancho (BW);
>subplot(2, 2, 3);
imshow(H, [], 'XData', T, 'YData', R, 'InitialMagnification', 'fit'); p>title('Diagrama de transformación de Hough');
xlabel('\theta'), ylabel('\rho');
eje en, eje normal, espera;
P=houghpeaks(H, 5, 'umbral', techo(0.3*max(H(:))));
x=T(P(:, 2 ) ); y=R(P(:, 1));
plot(x, y, 's', 'color', 'blanco'); (BW, T, R, P, 'FillGap', 5, 'MinLength', 7);
subplot(2, 2, 4);, imshow(rotI);
title('Detección de imagen de transformación dura');
eje();
cuadrícula activada
eje activado; en;
max_len=0;
para k=1: longitud(líneas)
xy=[líneas(k).punto1; .point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
trazar (xy(1,1),xy(1,2),'x','LineWidth',2,'Color','amarillo');
plot(xy(2,1), xy(2, 2), 'x', 'LineWidth', 2, 'Color', 'rojo');
len=norm(lines(k).point1-lines(k) .point2 );
if(lengt;max_len)
max_len=len;
xy_long=xy;
fin
end
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;
subplot(2, 2, 1);
imshow(I1);
título(' Imagen en escala de grises). ')
eje();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
[m, n ]=size(I1); Medir los parámetros de tamaño de la imagen
GP=zeros(1, 256); crear previamente un vector que almacene la probabilidad de ocurrencia en escala de grises
para k= 0: 255
GP(k 1)=length(find(I1==k))/(m*n Calcula la probabilidad de aparición de escala de grises en cada nivel y guárdala en la posición correspondiente en GP
fin
subtrama(2, 2, 2), barra(0: 255, GP, 'g') dibujar
Hacer un histograma
title('Histograma en escala de grises')
xlabel('Valor en escala de grises')
ylabel('Probabilidad de ocurrencia')
p>
I2=im2bw(I, 150/255);
subtrama(2, 2, 3), imshow(I2);
título('Umbral); 150 Dividir imagen')
eje();
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') p> p>
eje();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
14. Método Otsu
Utilice MATLAB para implementar el algoritmo Otsu:
clc
borrar todo
I=imread('xian.bmp' );
subtrama(1, 2, 1), imshow(I);
título('imagen original')
eje(); p>
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
nivel=graythresh(I); determinar el umbral de escala de grises
BW= im2bw (I, nivel);
subplot(1, 2, 2), imshow(BW);
title('Imagen de segmentación de umbral del método Otsu')
eje();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
15. I=imread('xian.bmp'); Cargar imagen
I1=rgb2gray(I);
subplot(1, 2, 1);
imshow(I1);
title('Imagen en escala de grises')
axis();
mostrar líneas de cuadrícula
eje encendido; mostrar sistema de coordenadas
se=strel('disk', 1); generar elementos estructurales circulares
I2=imdilate(I1, se); inflar la imagen
subplot(1, 2, 2)
imshow(I2
title('Imagen inflada');
eje();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
16. >MATLAB implementa operación de corrosión
>
I=imread('xian.bmp'); Cargar imagen
I1=rgb2gray(I);
subplot(1, 2, 1);
p>imshow(I1);
title('Imagen en escala de grises')
eje();
mostrar líneas de cuadrícula
eje encendido; mostrar sistema de coordenadas
se=strel('disk', 1); generar elementos estructurales circulares
I2=imerode(I1, se); Utilice los elementos estructurales generados para corroer la imagen
subplot(1, 2, 2
imshow(I2
title('Corrosion Post-); image');
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'); 2, 1), imshow(I);
título('imagen original');
eje();
eje en visualización de coordenadas
I1=rgb2gray(I);
subplot(2, 2, 2), imshow(I1);
title('Imagen en escala de grises' ); /p>
axis();
eje activado; Mostrar sistema de coordenadas
se=strel('disk', 1); un elemento estructural
I2=imopen(I1, se); Abrir operación
I3=imclose(I1, se); Cerrar operación
subplot(2, 2, 3), imshow(I2);
title('Abrir la imagen después de la operación');
eje();
eje en; sistema de coordenadas
subplot(2, 2, 4), imshow(I3
title('Imagen después de la operación cerrada');
eje encendido; mostrar sistema de coordenadas
18. Abrir y cerrar operaciones combinadas
I=imread('xian.bmp'); p>
p>
subtrama(3, 2, 1), imshow(I
título('imagen original');
eje();
eje activado; mostrar sistema de coordenadas
I1=rgb2gray(I);
subplot(3, 2, 2), imshow(I1); p>
title('Imagen en escala de grises');
eje();
eje activado; sistema de coordenadas de visualización
>se=strel('disk', 1);
I2=imopen(I1, se); abrir operación
I3=imclose(I1, se); p>
p>
subplot(3, 2, 3), imshow(I2);
title('Abrir la imagen después de la operación');
eje ();
eje encendido; mostrar sistema de coordenadas
subplot(3, 2, 4), imshow(I3);
title('Imagen después de cerrar operación');
p>eje();
eje en; mostrar sistema de coordenadas
se=strel('disk', 1); p>
I4=imopen (I1, se);
I5=imclose(I4, se);
subtrama(3, 2, 5), imshow(I5) ; imagen de operación de apertura y cierre
p>title('imagen de operación de apertura y cierre');
eje();
eje activado;
I6=imclose (I1, se);
I7=imopen(I6, se);
subtrama(3, 2, 6), imshow( I7); imagen de operación cerrado-abierto
subplot(3, 2, 6), imshow(I7); p>
title('Imagen de operación cerrado-abierto'); p>axis();
eje encendido; mostrar sistema de coordenadas
19. Extracción de límites de aprendizaje de formulario
Utilice MATLAB para implementar de la siguiente manera:
I=imread('xian.bmp'); cargar imagen
subplot(1, 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(1, 3, 2), imshow(I1);
title('Imagen binarizada');
axis();
cuadrícula activada; mostrar líneas de cuadrícula
eje activado; mostrar sistema de coordenadas
I2=bwperim(I1);
subplot(1, 3, 3), imshow(I2);
title(' Imagen binaria del perímetro del límite');
axis();
cuadrícula activada;
eje activado;
20. Extracción de esqueleto morfológico
Utilice MATLAB para implementar de la siguiente manera:
I =imread('xian.bmp');
subtrama(2, 2, 1), imshow(I);
título('imagen original');
eje();
eje en;
I1= im2bw(I);
subtrama(2, 2, 2), imshow(I1 );
title('Imagen binaria');
eje ();
eje en;
I2=bwmorph(I1 ,'skel',1);
subplot(2,2,3),imshow (I2
title('1 extracción de esqueleto'); p>eje();
eje encendido
I3 =bwm
orph(I1,'skel',2);
subplot(2,2,4),imshow(I3);
title('extracción de 2 esqueletos'); p>
axis();
eje en;
21. Extrae directamente las cuatro coordenadas de vértice
I = imread('xian.bmp ' );
I = I(:,:,1);
BW=im2bw(I);
figura
imshow (~BW)
[x, y]=getpts
Filtro de suavizado
h=fspecial('average', 9);
I_gray=imfilter(I_gray, h, 'replicar'); filtro de suavizado