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了。今天到这里,后天接着探究动态质心的可行性~

    下面是效果图:


  • 相关阅读:
    干货!常见的SQL面试题:经典50例!
    图解SQL基础知识,小白也能看懂的SQL文章!
    30多个Java实战项目,全部在这里了。
    Spring的@PropertySource注解使用
    20201226[java]两数相加
    1013.表-约束-唯一、主键、外键和排他
    1012.表-约束-检查
    1011.表-生成列
    1010.表默认值
    1009.表基础-初识表
  • 原文地址:https://www.cnblogs.com/iamlsj/p/3870030.html
Copyright © 2011-2022 走看看