MATLAB´ó×÷Òµ ÏÂÔØ±¾ÎÄ

µÄ×Ö·ûÁË¡£

ÎÊÌâÇó½â£º 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ЩͼÏñ½øÐвÙ×÷ % ÅòÕÍ»ò¸¯Ê´