这图比较简单特殊,可以用个笨法子,选择红色和绿色的阈值在图像三维数组中选择性取数。可以多试试,这基本就是最好的效果了,边缘部分没法,可能会有间断。如果是任意的图像,就只能抠图了,那就别用matlab受罪了。
lot=imread('lotusjpg');
lot_1=lot;
lot_R=lot(:,:,1);
lot_G=lot(:,:,2);
lot_B=lot(:,:,3);
lot_R1=lot_R;
lot_G1=lot_G;
lot_B1=lot_B;
lot_R1(lot_R<=151&lot_G>=15)=0;
lot_G1(lot_R<=151&lot_G>=15)=0;
lot_B1(lot_R<=151&lot_G>=15)=0;
lot_1(:,:,1)=lot_R1;
lot_1(:,:,2)=lot_G1;
lot_1(:,:,3)=lot_B1;
figure(1)
imshow(lot)
figure(2)
imshow(lot_1)
从图像可知,这两条曲线分别是sin(x),cos(x)。实现这两条曲线的绘制可以这样编写其代码:
x=0:pi/10:4pi; %生成x向量组,其范围从0到4π,步长为pi/10
y1=sin(x); %计算正弦函数值
y2=cos(x); %计算余弦函数值
plot(x,y1,'--',x,y2,'-') %绘制正弦函数和余弦函数曲线图
legend("sin(x)","cos(x)"); %图例标注
xlabel('时间');ylabel('幅值'); %标注坐标轴名称
执行代码和运行结果
确定物体个数和中心的话,利用颜色值进行连通性分析,应该能确定一块相同颜色的区域,找到这块区域就能确定质心点了。要是还要判断形状还得先提取出每个形状的特征。
1识别静态的整个人体较难;即使识别出来结果也不可靠,所以现在主要以手势/人脸识别为主;这是因为手和脸上面有比较独特的特征点。你说的滤波归根结底还是要找出具有灰度跳变的高频部分作为人体;这除非背景中除了人以外没有其他突出的物体;否则光凭滤波二值法检测人体是不太现实。
2 两张中人要是产生相对运动,检测起来就容易多了;利用帧间差分找到图像中灰度相差大的部分(你用的滤波也是一种手段);然后二值化区域连通;要是图像中没有其他移动物体计算连通区域的变动方向就是人的运动方向。
先建立起静态背景的模型(或者直接在没人的时候拍张);然后不断的与这个背景做差,原理和帧间差分一样。建议你先从典型的帧间差分例程开始下手(比如移动车辆的检测,这个比较多)。
在二值化之后加上一个区域连通的步骤;即使用膨胀或者闭运算;这样轮廓就是连续的了;用matlab的话bwlabel可以统计连通区域里面像素的个数也就是人体面积大小。质心就是横竖坐标的平均值;取所有人体点的横竖坐标分别累加;除以坐标总数得到的x和y平均值;这个就是质心了。
以上就是关于matlab 一副图片 怎么只显示红色的花,另外的变为黑色全部的内容,包括:matlab 一副图片 怎么只显示红色的花,另外的变为黑色、用matlab实现这个绘图,程序是什么、关于matlab中图像识别的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)