欢迎来到天天文库
浏览记录
ID:48369611
大小:25.50 KB
页数:2页
时间:2019-11-28
《图像特征提取matlab程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、%直接帧间差分,计算阈值并进行二值化处理(效果不好)clc;clear;Im1=double(imread('lena.TIF'));%读取背景图片Im2=double(imread('lena.TIF');%读取当前图片[XYZ]=size(Im2);%当前图片的各维度值DIma=zeros(X,Y);fori=1:Xforj=1:YDIma(i,j)=Im1(i,j)-Im2(i,j);%计算过帧间差分值endendfigure,imshow(uint8(DIma))%显示差分图像title('DIma')med=median(DIma);
2、%计算二值化阈值:差值图像中值mad=abs(mean(DIma)-med);%中值绝对差T=mean(med+3*1.4826*mad)%初始阈值Th=5*T;%调整阈值BW=DIma<=Th;%根据阈值对图像进行二值化处理figure,imshow(BW)%se=strel('disk',2);%膨胀处理%BW=imopen(BW,se);%figure,imshow(BW)%title('BW')[XXYY]=find(BW==0);%寻找有效像素点的最大边框handle=rectangle('Position',[min(YY),min
3、(XX),max(YY)-min(YY),max(XX)-min(XX)]);set(handle,'EdgeColor',[000]);hei=max(XX)-min(XX);%边框高度mark=min(YY)+1;whilemark0.1*hei%如果该列上像素点个数大于
4、边框高度的某个阈值left=j%认为找到了左边界mark=j;breakendendifleft~=0%如果找到了左边界forj=left+1:max(YY)-1%则从左边界到边框右边界寻找人体右边界ynum=0;fori=min(XX)+1:max(XX)-1ifBW(i,j)==0;ynum=ynum+1;endendifynum<0.1*hei%如果该列上像素点个数小于边框高度的某个阈值right=j%认为找到了左边界mark=j;breakendendifleft~=right%如果左右边界值不相等,即同时找到了左右边界,继续以左右边界
5、为界寻找上下边界[top,bottom]=Find_edge(BW,min(XX)+1,max(XX),left,right,0.1);handle=rectangle('Position',[left,top,right-left,bottom-top]);set(handle,'EdgeColor',[000]);%显示图像中人体有效边界endendmark=mark+1;end%while
此文档下载收益归作者所有