資源簡介
matlab下對車牌圖像進行二值化,灰度化,濾波,分割。可運行測試,供學習

代碼片段和文件信息
I=imread(‘1.jpg‘);
figure(1)imshow(I);title(‘LC原圖‘);
I1=rgb2gray(I);???%將真彩色圖像轉換為灰度圖像
figure(2)subplot(121)imshow(I1);title(‘LC灰度圖‘);
figure(2)subplot(122)imhist(I1);title(‘LC灰度圖直方圖‘);
I2=edge(I1‘robert‘0.08‘both‘);??%高斯濾波器方差為0.08
figure(3)imshow(I2);title(‘LCrobert算子邊緣檢測‘)
se=[1;1;1];
I3=imerode(I2se);??%圖像的腐蝕
figure(4)imshow(I3);title(‘LC腐蝕后圖像‘);
se=strel(‘rectangle‘[4040]);??%構造結構元素,以長方形構造一個se
I4=imclose(I3se);?%對圖像實現閉運算,閉運算也能平滑圖像的輪廓,但與開運算相反,它一般融合窄的缺口和細長的彎口,去掉小洞,填補輪廓上的縫隙。
figure(5)imshow(I4);title(‘LC平滑圖像的輪廓‘);
I5=bwareaopen(I42000);?%從二進制圖像中移除所有少于p像素的連接的組件(對象),產生另一個二進制圖像
figure(6)imshow(I5);title(‘LC從對象中移除小對象‘);
[yxz]=size(I5);
myI=double(I5);
tic
?Blue_y=zeros(y1);
?for?i=1:y
????for?j=1:x
?????????????if(myI(ij1)==1)?
??
????????????????Blue_y(i1)=?Blue_y(i1)+1;%藍色像素點統計?
????????????end??
?????end???????
?end
?[temp?MaxY]=max(Blue_y);%Y方向車牌區域確定
?PY1=MaxY;
?while?((Blue_y(PY11)>=1)&&(PY1>1))
????????PY1=PY1-1;
?end????
?PY2=MaxY;
?while?((Blue_y(PY21)>=1)&&(PY2 ????????PY2=PY2+1;
?end
?IY=I(PY1:PY2::);
?%%%%%%?X方向?%%%%%%%%%
?Blue_x=zeros(1x);%進一步確定x方向的車牌區域
?for?j=1:x
?????for?i=PY1:PY2
????????????if(myI(ij1)==1)
????????????????Blue_x(1j)=?Blue_x(1j)+1;???????????????
????????????end??
?????end???????
?end
??
?PX1=1;
?while?((Blue_x(1PX1)<3)&&(PX1 ???????PX1=PX1+1;
?end????
?PX2=x;
?while?((Blue_x(1PX2)<3)&&(PX2>PX1))
????????PX2=PX2-1;
?end
?PX1=PX1+30;%對車牌區域的校正
?PX2=PX2-30;
?PY1=PY1+30;
?PY2=PY2-30;
??dw=I(PY1:PY2-8PX1:PX2:);
?t=toc;?
figure(7)subplot(121)imshow(IY)title(‘LC行方向合理區域‘);
figure(7)subplot(122)imshow(dw)title(‘LC定位剪切后的彩色車牌圖像‘)
imwrite(dw‘dw.jpg‘);
[filenamefilepath]=uigetfile(‘dw.jpg‘‘輸入一個定位裁剪后的車牌圖像‘);
jpg=strcat(filepathfilename);
a=imread(‘dw.jpg‘);
b=rgb2gray(a);
imwrite(b‘1.車牌灰度圖像.jpg‘);
figure(8);subplot(321)imshow(b)title(‘1.LC車牌灰度圖像‘)
g_max=double(max(max(b)));
g_min=double(min(min(b)));
T=round(g_max-(g_max-g_min)/2);?%?T為二值化的閾值
[mn]=size(b);
d=(double(b)>=T);??%?d:二值圖像
imwrite(d‘2.車牌二值圖像.jpg‘);
figure(8);subplot(322)imshow(d)title(‘2.LC車牌二值圖像‘)
figure(8)subplot(323)imshow(d)title(‘3.LC均值濾波前‘)
%?濾波
h=fspecial(‘average‘3);
d=im2bw(round(filter2(hd)));
imwrite(d‘4.均值濾波后.jpg‘);
figure(8)subplot(324)imshow(d)title(‘4.LC均值濾波后‘)
%?某些圖像進行操作
%?膨脹或腐蝕
%?se=strel(‘square‘3);??%?使用一個3X3的正方形結果元素對象對創建的圖像進行膨脹
%?‘line‘/‘diamond‘/‘ball‘...
se=eye(2);?%?eye(n)?returns?the?n-by-n?identity?matrix?單位矩陣
[mn]=size(d);
if?bwarea(d)/m/n>=0.365
????d=imerode(dse);
elseif?bwarea(d)/m/n<=0.235
????d=imdilate(dse);
end
imwrite(d‘LC5.膨脹或腐蝕處理后.jpg‘);
figure(8)subplot(325)imshow(d)title(‘5.LC膨脹或腐蝕處理后‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????318095??2014-05-03?18:53??imageseg_車牌\1.jpg
?????文件???????6458??2014-11-24?16:23??imageseg_車牌\1.車牌灰度圖像.jpg
?????文件??????12824??2014-11-24?16:23??imageseg_車牌\2.車牌二值圖像.jpg
?????文件??????12810??2014-11-24?16:23??imageseg_車牌\4.均值濾波后.jpg
?????文件???????8546??2014-11-24?16:23??imageseg_車牌\dw.jpg
?????文件??????27036??2014-05-08?16:04??imageseg_車牌\figue3xiu.fig
?????文件???????3094??2014-05-08?16:17??imageseg_車牌\img.m
?????文件??????12810??2014-11-24?16:23??imageseg_車牌\LC5.膨脹或腐蝕處理后.jpg
?????文件?????263224??2008-11-30?22:30??imageseg_車牌\Lena.bmp
?????文件??????27046??2014-05-08?16:20??imageseg_車牌\unti
?????文件???????3072??2014-05-08?15:56??imageseg_車牌\Unti
?????文件??????19968??2014-11-24?16:55??imageseg_車牌\新建?Microsoft?Word?文檔.doc
?????目錄??????????0??2014-11-24?16:55??imageseg_車牌
-----------?---------??----------?-----??----
???????????????714983????????????????????13
- 上一篇:多相濾波數字信道化MATLAB源碼
- 下一篇:《數字信號處理matlab版》代碼
評論
共有 條評論