zoukankan      html  css  js  c++  java
  • 查找二值图像连通区域的质心

    研究摄像头的目的,在于对运动的物体进行定位,并提取特征值为下一步的运动控制做准备,当然,这之前需要基本的确定某一静态物体的位置,很容易让我们想到确定感兴趣区域的质心。下面代码是对一幅图像进行的处理:

    image = imread('2.jpg');
    image = rgb2gray(image);
    thresh = graythresh(image);
    image = ~im2bw(image,thresh);%背景色和前景色互换
    imshow(image);
    [L,num] = bwlabel(image,8);%标记二值化图像中的连通部分
    plotx = zeros(1,1);%记录质心位置坐标的变量
    ploty = zeros(1,1);
    %%求质心
    sumx = 0;
    sumy = 0;
    area = 0;
    [height,width] = size(image);
    for i = 1 : height
    	for j = 1 : width
    		if L(i,j) == 1
    			sumx = sumx + i;
    			sumy = sumy + j;
    			area = area + 1;
    		end
    	end
    end
    
    %%质心坐标
    plotx(1) = fix(sumx / area);
    ploty(1) = fix(sumy / area);
    dis = dataset(plotx(1),ploty(1));%变量dis为质心位置坐标数据(行列)
    figure(2);
    imshow(image);
    
    hold on
    plot(ploty(1),plotx(1),'*');

    在寻找质心的过程中,刚开始是找寻的是背景色连通区域的质心,而不是感兴趣部分的质心,针对这个问题,就二值化图像而言,最好的办法就是在二值化前加反向符号,即背景色和前景色互换,就OK了。今天到这里,后天接着探究动态质心的可行性~

    下面是效果图:


  • 相关阅读:
    第一次作业
    习题3 作业
    人工智能原理及其运用习题3.8
    人工智能原理及其应用习题3.5
    人工智能第一次作业
    ASP.NET MVC 之CodeFirst 数据迁移
    实用小程序技巧
    通过Blogilo来写博客园的设置方法
    抢票应用总结
    微信开发--结对编程
  • 原文地址:https://www.cnblogs.com/iamlsj/p/3870030.html
Copyright © 2011-2022 走看看