Está en la página 1de 18

%%%cargamos la imagen indivcada

figure
subplot(2,2,1)
imshow('Gauges 00.tif')
im1=imread('Gauges 00.tif');
subplot(2,2,2)
imshow('Pins-00.bmp')
im3=imread('Pins-00.bmp');
subplot(2,2,3)
imshow('Cables14.jpg')
im2=imread('Cables14.jpg');
subplot(2,2,4)
im4=imread('Connector 01.jpg');
imshow('Connector 01.jpg')

%%Creamos LUT para escalón y rampa invertida


lutR=uint8([255:-1:0]); %rampa invertida
lutE1=uint8(zeros(256,1));
lutE1(100:end)=255; %escalón 100
lutE2 = uint8(zeros(256,1));
lutE2(175:end) = 255; % crear escalón en el nivel 175

%% Aplicamos las lut a im1 que es 'Gauges 00.tif'


figure
subplot(2,2,1)

1
imshow(im1)
subplot(2,2,2)
imshow(intlut(im1,lutR))
subplot(2,2,3)
imshow(intlut(im1,lutE1))
subplot(2,2,4)
imshow(intlut(im1,lutE2))

% Aplicamos las lut a la imagen 3: ‘Pins-00.bmp’ y a la 4:


%‘Connector 01.jpg’
figure
subplot(2,2,1)
imshow(im3)
subplot(2,2,2)
imshow(intlut(im3,lutR))
subplot(2,2,3)
imshow(intlut(im3,lutE1))
subplot(2,2,4)
imshow(intlut(im3,lutE2))

2
figure
subplot(2,2,1)
imshow(im4)
subplot(2,2,2)
imshow(intlut(im4,lutR))
subplot(2,2,3)
imshow(intlut(im4,lutE1))%escalon 100
subplot(2,2,4)
imshow(intlut(im4,lutE2))

3
% Visualizar histograma para im4
figure
imhist(im4)

4
%% Visuañizar el histograma anterior von el cpmando plot
hist_im4=imhist(im4);
figure %para mostrar cada representacion en una ventana distinta
plot(hist_im4)

5
figure
bar(hist_im4)

6
% Mostrar la im3 y su histograma normalizado, comprobar que la suma es 1

hist_im3=imhist(im3);
%imshow(im3)
bar(hist_im3/numel(im3)); %dividimos entre l numero total de pixeles

sum(hist_im3/numel(im3))

ans = 1

%%Trabajamos con la imagen 2 pasando a hsv y realizando su histograma


%%parcial

im2_hsv=rgb2hsv(im2);
imhist(((im2_hsv(:,:,1)).*(im2_hsv(:,:,2)>0.1))*255,hsv(256));

Warning: Input has out-of-range values.

axis ([0 255 0 1000])

7
%esto nos permite conocr el angulo normalizado de la reprsentacion en hsv

%% Aplicar el entono de vecindad a im4 usando convolucion

m3 = ones(3,3)/9; % define máscara para promediado 3x3


m9 = ones(9,9)/81; % define máscara para promediado 9x9
m17 = ones(17,17)/289; % define máscara para promediado 17x17
%puede q se quiera 20x20

im4_33=conv2(im4,m3,'same');
im4_99=conv2(im4,m9,'same');
im4_1717=conv2(im4,m17,'same');

figure
subplot(2,2,1)
imshow(im4)
subplot(2,2,2)
imshow(im4_33/255)
subplot(2,2,3)
imshow(im4_99/255)
subplot(2,2,4)
imshow(im4_1717/255)

8
%Se realiza la division por el formato numerico en el que se dvulvemn las
%imagenes (double), de esta forma conseguimos que el sistema si pueda
%trabajar con ellas, en otro caso habremos de hacer una conversion de tipo

%%%Trabajar con im4_1717 como una superficie


figure
im4_1717_surf=surf(im4_1717);
shading interp; %para interpolar la superficie

9
% Detctar los pines en im4 usando corrlacion

plantilla = im4(170:225 ,105:160); % crea plantilla con uno de los pines


imc = normxcorr2(plantilla,im4); % aplica correlación
[x,y] = find (imc>0.6); % localiza valores elevados
figure, imshow(im4); % muestra la imagen
hold on, plot(y-28, x-28,'*'); % superpone el resultado de la correlación a la
imagen.

10
%% Visualizar imc como imagen y superficie
figure
subplot(1,2,1)
imshow(imc)
subplot(1,2,2)
imc_surf=surf(imc);
shading interp

11
%% Seleccionar los orificios en im1
figure
plantilla_im1=imcrop(im1); %para seleccionar en la imagn el criterio de busquda en
este caso los orificios

12
imc_1=normxcorr2(plantilla_im1,im1);
[x,y] = find (imc_1>0.6);
imshow(im1);
hold on, plot(y-size(plantilla_im1,1)/2, x-size(plantilla_im1,1)/2,'*');

13
%% Espectro de Fourier de im1 centrado y sin centrar

im1_f=fft2(im1);
esp_im1 = abs(im1_f);
imesp_im1=30*log10(1+esp_im1); %transformada de fourier (espectro) sin centrar

im1_fc=fftshift(im1_f); %proceso de centrado


esp_im1c=abs(im1_fc);
imesp_im1c=30*log10(1+esp_im1c);

figure
subplot(1,2,1)
imshow(imesp_im1/255)
subplot(1,2,2)
imshow(imesp_im1c/255)

14
%%Trabajar con im3 y su espectro

im3_f=fft2(im3);
esp_im3 = abs(im3_f);
imesp_im3=30*log10(1+esp_im3); % sin centrar

im3_fc=fftshift(im3_f); %proceso de centrado


esp_im3c=abs(im3_fc);
imesp_im3c=30*log10(1+esp_im3c);

figure
subplot(1,3,1)
imshow(im3)
subplot(1,3,2)
imshow(imesp_im3/255)
subplot(1,3,3)
imshow(imesp_im3c/255)

15
%Trabajamos con la im4 y comparaamos con ej9
m17f=fft2(m17); %espectro de nuestra mascara
im4_f=fft2(im4); %espectro de la imagen 4

%convolucionamos en el espectro de la frecuencia


im4_cv=conv2(im4_f,m17f); %convolucionamos los espectros e ambas muestras
im4_cvc=fftshift(im4_cv); %centramos la imagen
%im4_abs=abs(im4_cvc); % realizamos mdulo
im4_abs=real(im4_cvc); %parte real
imesp_im4=30*log10(1+im4_abs);

figure
imshow(imesp_im4/255);

Warning: Displaying real part of complex input.

16
function im=codigobarra(img)

%%Debemos crear un codigo que usando correlacion cruzada sea capaz de


%%identificar los numeros bajo un codigo de barras y posteriormente maracar
%%cada tippo de numero de un color.
load p0;
load p1;
load p2;
load p3;
load p4;
load p5;
load p6;
load p7;
load p8;
load p9;

criterio=normxcorr2(p0,img);
[x,y] = find(criterio>0.8);
imshow(img)

17
hold on, plot(y-10, x-10,'r*')
hold on

criterio=normxcorr2(p1,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'g*')
hold on

criterio=normxcorr2(p2,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'b*')
hold on

criterio=normxcorr2(p3,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'y*')
hold on

criterio=normxcorr2(p4,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'bl*')
hold on

criterio=normxcorr2(p5,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'w*')
hold on

criterio=normxcorr2(p6,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'y*')
hold on

criterio=normxcorr2(p7,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'m*')
hold on

criterio=normxcorr2(p8,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'c*')
hold on

criterio=normxcorr2(p9,img);
[x,y] = find(criterio>0.8);
hold on, plot(y-10, x-10,'k*')
hold on

end

18

También podría gustarte