資源簡介
一種基于亮度和顏色閾值的尾燈匹配識別算法,可用于夜間尾燈檢測
代碼片段和文件信息
clc;
clear;
fileName=‘one.avi‘;
obj=VideoReader(fileName);
nframes=get(obj‘Numberofframes‘);
mov(1:nframes)?=?struct(‘cdata‘?[]...?????????????????????
????????????????????????‘colormap‘?[]);
????????????????????
I=read(obj1);
carweideng=zeros([size(I1)?size(I2)?3?nframes]class(I));???????%?每幀數據格式
tic;
for?u=1:nframes
????????A=read(obju);???????%?存一幅600*480的彩色圖像??600*480*8*3=7Mb??如果用乒乓緩存*2=14Mb???
????????R=A(::1);
????????G=A(::2);
????????B=A(::3);
????????
????????[rowcolumn]=size(R);
????????if?u==1??????????????????????%?切割后找不到尾燈需重新整幅圖像尋找
????????%L=zeros(rowcolumn3);
????????for?i=1:row
????????????for?j=1:column???
????????%?????????if(R(ij)>220&&R(ij)-G(ij)>20&&R(ij)-B(ij)>20)????%?紅色區域條件
????????%???????????????L(ij1)=R(ij);
????????%???????????????L(ij2)=G(ij);
????????%???????????????L(ij3)=B(ij);
????????%????????????else??if(R(ij)>220&&G(ij)>220&&B(ij)>220)??????%??白色區域條件
????????
????????%找出白色高亮區域
?????????????????if(R(ij)>235&&G(ij)>235&&B(ij)>235)?
??????????????????????L(ij1)=R(ij);
??????????????????????L(ij2)=G(ij);
??????????????????????L(ij3)=B(ij);
????????????????else
???????????????????L(ij1)=0;
???????????????????L(ij2)=0;
???????????????????L(ij3)=0;
?????????%???????????end
????????????????end
????????????end
????????end
????????%?L=cat(3L1L2L3);
????????L=uint8(L);
%????????imshow(L)
????????%?形態學處理
????????bw=im2bw(Lgraythresh(L));????%?L其實就相當于黑白圖像,閾值其實可隨便取
????????bw=imclearborder(bw8);
????????D=bwareaopen(bw10);??????%??刪除白色小面積區域
????????E=bwareaopen(D1000);?????%??刪除白色大面積區域
????????Q=imsubtract(DE);
?%???????imshow(Q)
????????[L1num]=bwlabel(Q8);??????%?標記連通區域
????????
????????%?尋找白色連通區域周圍紅色像素滿足條件的標記區域
????????count=zeros(1num);
????????t=0;
????????for?k=1:num
????????????[mn]=find(L1==k);
????????????xmax=max(m);
????????????xmin=min(m);
????????????ymax=max(n);
????????????ymin=min(n);
????????????if(xmin-6<1|xmax+6>row|ymin-6<1|ymax+6>column)
????????????????count(k)=0;
????????????else
????????????????for?i=xmin-6:xmax+6?????????????%紅色區域尋找范圍選擇
????????????????????for?j=ymin-6:ymax+6??????????
????????????????????????if(R(ij)>230&&R(ij)-G(ij)>30&&R(ij)-B(ij)>30)??????%??紅色像素判斷條件
????????????????????????????count(k)=count(k)+1;???????????????????????????
????????????????????????end
????????????????????end
????????????????end
????????????end
????????????range=(xmax-xmin+12)*(ymax-ymin+12);
????????????if?count(k)/range>0.01???????????????????%紅色像素閾值
????????????????%?count(k)
????????????????t=t+1;
????????????????%?存儲數據以便后續識別和跟蹤
????????????????v(t)=k;
????????????????area(t)=length(m);????????????????%?區域面積
????????????????x(t)=fix(sum(m)/area(t));?????????%?區域質心橫坐標
????????????????y(t)=fix(sum(n)/area(t));?????????%?區域質心縱坐標
????????????????%?區域邊界坐標
????????????????xa(t)=xmax;???????????????????????
????????????????xi(t)=xmin;
????????????????ya(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????2300758??2015-03-25?23:33??colordetect\car2.avi
?????文件????27717632??2015-05-10?16:02??colordetect\car2detect.avi
?????文件?????2349834??2015-03-25?23:28??colordetect\one.avi
?????文件???????14529??2015-04-16?11:01??colordetect\tailestimate2.m
?????目錄???????????0??2015-07-23?10:11??colordetect\
- 上一篇:MATLAB提取顏色直方圖特征
- 下一篇:EOF分析matlab代碼
評論
共有 條評論