📄 prueba_pcb_lda.m
字号:
%function prueba_PCB_LDA
clc,close all,clear all;
NomeImg1 = 'pcb1.bmp';
NomeImg2 = 'pcb2.bmp';
NomeMsck1 = 'pcbRoiCopper.bmp';%Cobre
NomeMsck2 = 'pcbRoiFiber.bmp';%
%**************************************************************************
% CAPTURA
%**************************************************************************
%se lee las imagenes
Img1 = imread(NomeImg1);
Img2 = imread(NomeImg2);
Msck11 = imread(NomeMsck1);
Msck12 = imread(NomeMsck2);
Msck13 = ((~Msck11)&(~Msck12));
%transformando as imagenes a doble precision
Img1 = double(rgb2gray(Img1));
Img2 = double(rgb2gray(Img2));
[lh,lv] = size(Img1);
lh_2 = round(lh/2);
%generando la imagen de regiones teorica
Msck=zeros(lh,lv);
Msck(find(Msck11==1))=1;
Msck(find(Msck12==1))=2;
Msck(find(Msck13==1))=3;
%**************************************************************************
% ENTRENAMIENTO
%**************************************************************************
%Datos de entrenamiento
Img1Entr = Img1(:);
MsckEntr = Msck(:);
f = lda( Img1Entr, MsckEntr);
%g = qda( Img1Entr, MsckEntr);
h = logda( Img1Entr, MsckEntr);
disp('_____________________LDA_________________');disp(f)
%disp('_____________________QDA_________________');disp(g)
disp('____________________LOGDA________________');disp(h)
%**************************************************************************
% VALIDACION
%**************************************************************************
%Datos de validacion
[lh,lv]= size(Img2);
Img1Vald = Img2(:);
%Utilizando un LDA
[MsckExpF postF] = classify(f, Img1Vald);
%Utilizando un QDA
%[MsckExpG postG] = classify(g, Img1Vald);
%Utilizando un LOGDA
[MsckExpH postH] = classify(h, Img1Vald);
%comparacion de errores
%[mFG alphaFG] = mcnemar(MsckVald, f(Img1Vald), g(Img1Vald));
[mFH alphaFH] = mcnemar(MsckVald, f(Img1Vald), h(Img1Vald));
%[mHG alphaHG] = mcnemar(MsckVald, h(Img1Vald), g(Img1Vald));
%fprintf('\n mFG =%f mFH =%f mHG =%f \n', mFG, mFH, mHG);
%fprintf('\n alphaFG = %f alphaFH = %f alphaHG = %f \n', alphaFG, alphaFH, alphaHG);
MsckExpF = reshape( MsckExpF, lh, lv );
%MsckExpG = reshape( MsckExpG, lh, lv );
MsckExpH = reshape( MsckExpH, lh, lv );
%determinando las probabilidades aposteriori:
fg1=figure(1);
set(fg1,'Color','w');
set(fg1,'Name','IMAGEN SEGMENTADA: 1-Cobre 2-Placa 3-Hueco','NumberTitle','on');
colormap('default');
subplot(231),imshow(Img1,[0 255]);title('Imagen Real');colorbar('horiz');
subplot(232),imshow(Msck,[1 3]);title('Imagen Segmentada');colorbar('horiz');
subplot(233),imshow(MsckExpF,[1 3]);title('Imagen Segmentada LDA');colorbar('horiz');
%subplot(234),imshow(MsckExpG,[1 3]);title('Imagen Segmentada QDA');colorbar('horiz');
subplot(235),imshow(MsckExpH,[1 3]);title('Imagen Segmentada LOGDA');colorbar('horiz');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -