
1) 对图像进行预处理,如滤波等,目的是使图像特征突出和便于以后处理。
2) 提取要识别的图像
3) 提取图像特征,包括频域特征、形态特征等等。
4) 根据特征进行分类识配孝蔽别(根据特征库)
在此之前还需慎败要对样本图片进行训练,获得特征库,用于第四步的识别。
1.识别静态的整个人体较难;即使识别出来结果也不可靠,所以现在主要以手势/人脸识别为主;这是因为此握搜纯手和脸上面有比较独特的特征点。你说的滤波归根结底还是要找出具有灰度跳变的高频部分作为人体;这除非背景中除了人以外没有其他突出的物体;否则光凭滤波二值法检测人体是不太现实。2 两张图片中人要是产生相对运动,检测起来就容易多了;利用帧间差分找到图像中灰度相差大的部分(森漏庆你用的滤波也是一种手段);然后二值化区域连通;要是图像中没有其他移动物体计算连通区域的变动方向就是人的运动方向。
你可以去PUDN上搜搜相关的目标检测的代码完全和你这个对应是不可能的。照你说的情况可以先建立起静态背景的模型(或者直接在没人的时候拍张);然后不断的与这个背景做差,原理和帧间差分一样。建议你先从典型的帧间差分例程开始下手(比如移动车辆的检测,这个比较多)。
你在二值化之后加上一个区域连通的步骤;即使用膨胀或者闭运算;这样你的轮廓就是连续的了;用matlab的话bwlabel可以统计连通区域里面像素的个数也就是人体面积大小。质心就是横竖坐标的平均值;取所有人体点的横竖坐标分别累加;除以坐标总数得到的x和y平均值;这个就是质心了
我以前做过用BMP重构消带图象,JPG的话可能要转虚敏换成BMP之后再处理吧,不然问题多多。下面是我读和写[256阶灰度BMP图象]的语句(处理彩色图象数据量太大,一个点至少是拿誉芦R,G,B三色,甚至还要加上亮度通道),希望为你有用。
读:
image=imread('L.bmp')%图片是L.BMP,位于程序目录下
bat=double(image(:)')%将得到的图片存入bat矩阵,每个点都是0到255的数字
写:A1=vec2mat(signal_reconstruct,64)%把图象的点连接起来存入A1矩阵
A1=uint8(A1)
A1=A1'
imwrite(A1,'Rec-L.bmp') %根据A1'重写图象
可能用处不大,希望你努力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)