µÄ×Ö·ûÁË¡£
ÎÊÌâÇó½â£º matlab´úÂ룺
Ö÷º¯Êý
function [d]=main(jpg) close all clc
I=imread('Car.jpg');%¶ÁÈë³µÅÆÍ¼ÏñCar.jpg I1=rgb2gray(I);
I2=edge(I1,'roberts',0.15,'both'); se=[1;1;1]; I3=imerode(I2,se);
se=strel('rectangle',[25,25]); I4=imclose(I3,se); I5=bwareaopen(I4,2000);
figure(1),imshow(I5);title('´Ó¶ÔÏóÖÐÒÆ³ýС¶ÔÏó');
[y,x,z]=size(I5);%ͼÏñÒÔ£¨y,x,z£©±í´ï»Ò¶È¼¯£¬x,yÎª×ø±ê£¬zΪ¶ÔӦλÖõÄÖµ myI=double(I5);%ת»¯ÎªË«¾«¶È,±ãÓÚÈ·¶¨·¶Î§
tic % ²â¶¨Ëã·¨Ö´ÐеÄʱ¼ä£¬¿ªÊ¼¼ÆÊ± Blue_y=zeros(y,1); for i=1:y for j=1:x
if(myI(i,j,1)==1) % ѰÕÒyÖá·½ÏòµÄ°×É«ÇøÓò
Blue_y(i,1)= Blue_y(i,1)+1; % ÊÇÀ¶É«ÇøÓòµÄÔò½øÐмÆÊý end end end
[temp MaxY]=max(Blue_y);%Y·½Ïò³µÅÆÇøÓòÈ·¶¨ temp(×î¶àµãÊý):ËùÓÐÐÐÖУ¬×î¶àµÄÀÛ»ý PY1=MaxY;
while ((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1; end %YÖá·½ÏòµÄÉÏÏÞ PY2=MaxY;
while ((Blue_y(PY2,1)>=5)&&(PY2 %%%%%% X·½Ïò %%%%%%%%% Blue_x=zeros(1,x);%½øÒ»²½È·¶¨x·½ÏòµÄ³µÅÆÇøÓò for j=1:x for i=PY1:PY2 %Ö»ÐèҪɨÃèPY1:PY2 µÄ²¿·Ö£¬¼ò»¯³ÌÐò if(myI(i,j,1)==1) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1 end %È·¶¨xÖáµÄÓұ߽ç PX2=x; while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end %È·¶¨xÖáµÄ×ó±ß½ç PX1=PX1-1;%¶Ô³µÅÆÇøÓòµÄУÕý PX2=PX2+1; dw=I(PY1:PY2-8,PX1:PX2,:); %È·¶¨Í¼Æ¬µÄ½ØÈ¡ÇøÓò t=toc; % ¶ÁÈ¡³ÌÐòµÄÔËÐÐʱ¼ä a=imread('dw.jpg'); %¶ÁÈëÒѾ½ØÈ¡ºÃµÄͼÏñ A=size(a); if length(A)==3 b=rgb2gray(a); else b=a; end figure(8);subplot(3,2,1),imshow(b),title('1.³µÅƻҶÈͼÏñ') g_max=double(max(max(b))); g_min=double(min(min(b))); T=round(g_max-(g_max-g_min)/3); % T Ϊ¶þÖµ»¯µÄãÐÖµ [m,n]=size(b); d=(double(b)>=T); % d:¶þֵͼÏñ imwrite(d,'2.³µÅƶþֵͼÏñ.jpg'); figure(8);subplot(3,2,2),imshow(d),title('2.³µÅƶþֵͼÏñ') figure(8),subplot(3,2,3),imshow(d),title('3.¾ùÖµÂ˲¨Ç°') % Â˲¨ h=fspecial('average',3); %½øÐоùÖµÂ˲¨ imwrite(d,'4.¾ùÖµÂ˲¨ºó.jpg'); figure(8),subplot(3,2,4),imshow(d),title('4.¾ùÖµÂ˲¨ºó') % ijЩͼÏñ½øÐвÙ×÷ % ÅòÕÍ»ò¸¯Ê´