clc,clear all,close all
% T = imread ('bat.bmp');%¶ÁÈëͼÏñ
T = imread ('IMG.jpg');%¶ÁÈëͼÏñ
M = imresize ( T ,[256 ,256 ]);%½«Í¼Ïñµ÷Õû256 ¡Á256 ,ΪÁËÏÔʾ·½±ã
YT = rgb2gray(M);%½«RGB ¸ñʽת»»Îª»Ò¶ÈͼÏñ
figure , imshow( YT) ;
title ('ÔʼͼÏñ')%ÏÔʾÔʼͼÏñ
% È¥Ôë%
%1 ÖÐÖµÂ˲¨È¥Ôë%
Z1 = medfilt2 (YT ,[5 ,5 ]);
%2 С²¨·ÖÎöÈ¥Ôë%
%ʹÓÃsym4 С²¨,É趨ȫ¾ÖãÐֵȥÔë%
[ THR ,SORH ,KEEPAPP] = ddencmp('den','wv', Z1);
X = wdencmp( 'gbl',Z1, 'sym4',2 ,THR ,SORH ,KEEPAPP);
figure, imshow(X,[ ]);
title ('È¥ÔëͼÏñ') %ÏÔʾȥÔëͼÏñ
[Z1,s ] = wavedec2 (X ,2, 'sym4');
%½øÐжþ²ãС²¨·Ö½â
len = length ( Z1 );
%´¦Àí·Ö½âϵÊý,Í»³öÂÖÀª,Èõ»¯Ï¸½Ú%
for i = 1 :len
if (Z1(i) > 800)
Z1(i) = 2*Z1(i);
else
Z1(i) = 0.5*Z1(i);
end
end
Z = waverec2 (Z1 ,s, 'sym4'); %·Ö½âϵÊýÖØ¹¹
figure , imshow(Z ,[ ]);
title ('ÔöǿͼÏñ') ;%ÏÔʾÔöǿͼÏñ
BW1 = edge(Z, 'canny',0.3); %canny±ßÔµ¼ì²â
figure, imshow(BW1 );
title ('canny ¼ì²âЧ¹û');%ÏÔʾ±ßÔµ¼ì²âͼÏñ
% Ìî²¹·ì϶%
se90 = strel ('line',3 ,90);
se0 = strel ('line',3 ,0);
% ÅòÕͲÙ×÷%
BWsdil = imdilate (BW1 ,[ se90 ,se0 ]);
figure , imshow(BWsdil);
title ('ÅòÕÍͼÏñ') ;%ÏÔʾÅòÕÍͼÏñ
% Ìî³ä%
BWdfill = imfill (BWsdil, 'holes');
figure , imshow(BWdfill);
title ('Ìî³äͼÏñ'); %ÏÔʾÌî³äͼÏñ
% ÒÆ³ýÓë±ß½çÁ¬Í¨µÄÄ¿±ê%
BWnobord = imclearborder (BWdfill ,4);
figure , imshow(BWnobord);
title ('ÒÆ³ýÓë±ß½çÁ¬Í¨µÄͼÏñ');
%ÏÔÊ¾ÒÆ³ýÓë±ß½çÁ¬Í¨µÄͼÏñ
% ƽ»¬%
seD = strel ('diamond',1);
BWfinal1 = imerode (BWnobord ,seD);
BWfinal2 = imerode (BWfinal1 ,seD);
figure , imshow(BWfinal2);
title ('ƽ»¬Í¼Ïñ'); %ÏÔʾƽ»¬Í¼Ïñ
% ¼ÆËãÁÑÎÆµÄÃæ»ý%
count = 0; % ¼Ç¼ÁÑÎÆÍ¼ÏñÏñËØµãµÄ¸öÊý
[ i , j ] = size (BWfinal2);
for m = 1 : i
for n = 1 : j
if BWfinal2 (m , n) > 0% ÅжÏÊÇ·ñΪÁÑÎÆÍ¼ÏñÏñËØµã
count = count + 1 ;
end
end
end
S = count %ͳ¼ÆÁÑÎÆÍ¼ÏñÏñËØµãµÄ¸öÊý
BWfinal3 = uint8 (BWfinal2);
BW2 = edge (BWfinal3, 'canny');% ±ßÔµÌáÈ¡
figure ,imshow(BW2 );
title('canny ¼ì²âЧ¹û') ;%ÏÔʾ±ßÔµ¼ì²âͼÏñ
[ x , y ] = size (BW2 );
BW = bwperim(BW2 ,8);
% ¼ì²âÄ¿±êµÄ±ßÔµ¸ú×Ù,ÓÃÓÚ¼ÆËãÖܳ¤
% ¼ì²â´¹Ö±·½ÏòÁ¬ÐøµÄÖܳ¤ÏñËØµã%
P1 = 0;
P2 = 0;
Ny = 0;%¼Ç¼´¹Ö±·½ÏòÁ¬ÐøÖܳ¤ÏñËØµãµÄ¸öÊý
for i = 1 : x
for j = 1 : y
if (BW( i , j) > 0)
P2 = j;
if ( ( P2 - P1 ) == 1)
% ÅжÏÊÇ·ñΪ´¹Ö±·½ÏòÁ¬ÐøµÄÖܳ¤ÏñËØµã
Ny = Ny + 1;
end
P1 = P2;
end
end
end
% ¼ì²âˮƽ·½ÏòÁ¬ÐøµÄÖܳ¤ÏñËØµã%
P1 = 0;
P2 = 0;
Nx = 0;%¼Ç¼ˮƽ·½ÏòÁ¬ÐøÖܳ¤ÏñËØµãµÄ¸öÊý
for j = 1 : y
for i = 1 : x
if (BW( i , j) > 0)
P2 = i;
if ( ( P2 - P1 ) == 1)
% ÅжÏÊÇ·ñΪˮƽ·½ÏòÁ¬ÐøµÄÖܳ¤ÏñËØµã
Nx = Nx + 1;
end
P1 = P2;
end
end
end
Ns = sum( sum(BW) );%¼ÆËãÖܳ¤ÏñËØµã×ÜÊý
Nd = Ns - Nx - Ny ;% ¼ÆËãÆæÊýÂëµÄÁ´ÂëÊý
L = sqrt (2) * Nd + Nx + Ny;% ¼ÆËãÖܳ¤
for i=1:9
saveas(figure(i),['figure' num2str(i) '.png'])
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%¸÷¸ö²½Öè´¦ÀíºóµÄͼÏñЧ¹û
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%









| »¶Ó¹âÁÙ EDA365µç×ÓÂÛÌ³Íø (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |