Please write program in MATLAB about recognition of vehicle

Please write program in MATLAB about recognition of vehicle number plate

Solution

fi= imread(\'plate.jpg\'); %imshow(fi) fin = rgb2gray(fi); imshow(fin); d=double(fin) %imshow(fin) [r c]= size(d) % Mexican filter operator filter = [ 0 0 0 -1 -1 -1 0 0 0 ; 0 -1 -1 -3 -3 -3 -1 -1 0; 0 -1 -3 -3 -1 -3 -3 -1 0; -1 -3 -3 6 13 6 -3 -3 -1; -1 -3 -1 13 24 13 -1 -3 -1; -1 -3 -3 -6 13 6 -3 -3 -1; 0 -1 -3 -3 -1 -3 -3 -1 0; 0 -1 -1 -3 -3 -3 -1 -1 0; 0 0 0 -1 -1 -1 0 0 0 ]; % creating image matrix for operator gm = zeros(r,c); for i=5:2:r-5 for j=5:2:c-5 gm(i,j) = sum(sum(double(fin(i-4:i+4,j-4:j+4)).*filter,2)); end; end; % removing the unwanted edges using threshold fh = gm>1200; %Dilation operation x = 1; y =1; fs = double(fh); se = ones(3,3); for x= 3:3:r-20; for y = 3:3:c-20 if(x+50<=r) xend = x+50; else xend = r; end; if(y+100<=r) yend = y + 150; else yend = c; end; if(sum(fh(x:xend,y))<=35||sum (fh(x,y:yend,2)<=60)) if(sum(fh(x,y:y+3),2)<=3) && (sum(fh(x,y:y+3),2)>2) fs(x-2:x+2,y-2:y+2)=bwmorph(fh(x-2:x+2,y-2:y+2),\'dilate\',se); end; end; end; end; %imshow(fin) %image with dilation performed f=double(fs); [row col]=size(f); %initialising a matrix for a segmented image g=zeros(row,col); gl=zeros(row,col); label=1; n=1;x=1; iter=[]; it=0; ss_prev=0; nn=[]; sss_mat=[]; for i=1:2:row for j=1:2:col r_pt=i; c_pt=j; if(g(r_pt,c_pt)==0) while(true) %neighbour rule if(f(r_pt(n),c_pt(n))==1 && g(r_pt(n),c_pt(n))==0) g(r_pt(n),c_pt(n))=label; if(r_pt(n)+1<=row) if(f(r_pt(n)+1,c_pt(n))==1) r_pt=[r_pt r_pt(n)+1]; c_pt=[c_pt c_pt(n)]; x=x+1; end; end; if(c_pt(n)-1>=1) if(f(r_pt(n),c_pt(n)-1)==1) r_pt=[r_pt r_pt(n)]; c_pt=[c_pt c_pt(n)-1]; x=x+1; end; end; if(c_pt(n)+1<=col) if(f(r_pt(n),c_pt(n)+1)==1) r_pt=[r_pt r_pt(n)]; c_pt=[c_pt c_pt(n)+1]; x=x+1; end; end; if(r_pt(n)-1>=1) if(f(r_pt(n)-1,c_pt(n))==1) r_pt=[r_pt r_pt(n)-1]; c_pt=[c_pt c_pt(n)]; x=x+1; end; end; end; if(n>=x) break; end; n=n+1; end; y1=min(r_pt); y2=max(r_pt); x1=min(c_pt); x2=max(c_pt); a1=g(min(r_pt):max(r_pt),min(c_pt):max(c_pt)); f1=d(min(r_pt):max(r_pt),min(c_pt):max(c_pt)); [ra ca]=size(a1); | if(n>=50)| b1=bwlabel(a1); ss=regionprops(b1,\'euler number\'); sss=struct2array(ss); sss=min(sss); sss_mat=[sss_mat sss]; if(sss=50 && ra >=15 && mean(me an(f1))<=220) x_cor1=x1; y_cor1=y1; x_cor2=x2; y_cor2=y2; ss_prev=sss; end; label=label+1; else g(r_pt,c_pt)=0; end; end; x=1; n=1; it=1; end; end; if(exist(\'y_cor1\')==1) d(y_cor1:y_cor1+2,x_cor1:x_cor2)=255; d(y_cor2:y_cor2+2,x_cor1:x_cor2)=255; d(y_cor1:y_cor2,x_cor1:x_cor1+2)=255; d(y_cor1:y_cor2,x_cor2:x_cor2+2)=255; end; % Segmented licence plate image d=mat2gray(d); lp=d(y_cor1:y_cor2,x_cor1:x_cor2); %%% 2. Character Segmentation %License plate image, characters of wcich are to be segmented lp1 = d(y_cor1:y_cor2,x_cor1:x_cor2); [rl cl] = size(lp1); % Median Filtering lp = medfilt2(lp1,[3 3]); % Contrast Enhancement lpf = imadjust(lp,stretchlim(lp,[0.1 0.5])); %creating output image matrix output= zeros(rl,cl); % Window for local threshold operation dis = round(cl/7); % Local threshold operation for i=1:dis:cl if(i+dis-1<=cl) t=threshcal(lpf(:,i:i+dis-1),a); for i=1:dis:cl if(i+dis-1<=cl) t=threshcal(lpf(:,i:i+dis-1),a); output(:,i:i+dis-1)=lpf(:,i:i+dis-1)<=t; else t=threshcal(lpf(:,i:cl),a); for z1=2:rl-1 for z2=i+5:cl-5 if(mean(mean(lpf(z1-1:z1+1,z2-5:z2+5)))<=t) output(z1,z2)=1; end; end; end; output(:,i:cl)=lpf(:,i:cl)<=t; end; end; end; end; % Structuring element for erosion operation se = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] output = output - imerode(output,se); [of lab lpdet] = reggrowl(logical(output),number); % Segmented characters lpdet = logical(lpdet); % Character Recognition % String giving licence plate information lpstr=[]; for i= 1:lab-1 R = lpdet(:,st:st+9); st = st+10; b = bwlabel(R); % Feature extraction ar = struct2array(regionprops(b,\'area\')); or = struct2aarray(regionprops(b,\'orientation\'))/90; eu = struct2array(regionprops(b,\'eulernumber\'))/10; pe = struct2array(regionprops(b,\'perimeter\')); mi = struct2array(regionprops(b,\'minoraxislength\')); ma = struct2array(regionprops(b,\'majoraxislength\')); temp = logical(R); % X and Y coefficient determination v1 = temp; v1(:,6:10)=flipdim(temp(:,1:5),2); vx = (v1 + temp)/2; vx = vx>=0.5; xcoef = sum(sum(temp),2)/sum(sum(vx),2); v2 = temp; v2(1:12,:) = flipdim(temp(13:24,:),1); vy = (v2 + temp)/2; vy = vy >= 0.5; ycoef = sum(sum(temp),2)/sum(sum(vy),2); ed = struct2array(regionprops(b,\'equidiameter\'))/100; [val pos] = max(fa); vcoeff = pe(pos)/ar(pos); mcoeff = ed(pos); Rp = [xcoef/ycoef;pe(pos)/ar(pos);mi(pos)/ma(pos)]; answer=find(compet(A2)==1); if(i<=numel(lpnum)) if(alphamat(answer)==lpnum(i)) numrc = numrc+1; else answ = find(alphamat==lpnum(i)); err(answ) = err(answ) + 1; end; end; lpstr = [lpstr alphamat(answer)]; end; numc = numc + numel(lpnum); if(strcmp(lpstr,lpnum)==1) tr = tr + 1; sr = strcat(num2str(num),\'/\',num2str(1),\'//\'); casep = [casep sr]; else fr = fr +1; sr = strcat(num2str(num),\'/\',num2str(1),\'/\',num2str(answer),\'//\'); casen = [casen sr]; end;
Please write program in MATLAB about recognition of vehicle number plateSolution fi= imread(\'plate.jpg\'); %imshow(fi) fin = rgb2gray(fi); imshow(fin); d=doubl

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site