axz707 发表于 2007-10-16 10:43

请问怎么求这个图片的形心和最小外接矩形框啊

请问怎么求这个图片中人体的形心和最小外接矩形框啊,并把它们在图上标出来,拜托啊~~

eight 发表于 2007-10-16 11:50

请搜索版面,之前讨论过类似的问题

[ 本帖最后由 ChaChing 于 2010-4-18 11:54 编辑 ]

axz707 发表于 2007-10-16 12:24

可是没有给出程序啊麻烦你给出具体的程序可以吗

花如月 发表于 2007-10-16 12:29

你觉得这个程序很容易写出来么?
思路都是一样,有了思路才好写程序。何况这种问题也没有通用的程序,都是需要加些经验的成分在里边。之前论坛有一个求杯子里水高度的问题。看看别人的思路,自己慢慢摸索吧。

[ 本帖最后由 ChaChing 于 2010-4-18 15:22 编辑 ]

eight 发表于 2007-10-16 12:35

原帖由 axz707 于 2007-10-16 12:24 发表 http://www.chinavib.com/forum/images/common/back.gif
可是没有给出程序啊麻烦你给出具体的程序可以吗

help find

请多看看本版各个置顶帖,指望别人代替你完成所有东西根本不现实

[ 本帖最后由 eight 于 2007-10-16 12:52 编辑 ]

axz707 发表于 2007-10-17 10:25

求形心的这么写好像不可以啊,版主帮忙看一下啊
im=imread('b.bmp'); =size(im); sumxc=0; sumyc=0; sum=0;
for i=1:m, for j=1:n
if pic(i,j)>0
    sumxc=sumxc+pic(i,j)*i; sumyc=sumyc+pic(i,j)*j; sum=sum+pic(i,j);
end
end; end
xc=sumxc/sum; yc=sumyc/sum;
figure,imshow(im); hold on; plot(xc,yc,'r+');

[ 本帖最后由 ChaChing 于 2010-4-18 15:31 编辑 ]

eight 发表于 2007-10-17 10:51

读取出来的 im 就是图像的像素值,pic 是什么东西?

基本思想是这样子,不过在 matlab 里面,用循环做的话很慢的。建议看看置顶帖,如何进行矢量化编程

[ 本帖最后由 ChaChing 于 2010-4-18 15:24 编辑 ]

axz707 发表于 2007-10-17 12:07

哦忘了改了pic应该改成im,可是也不对啊

这个结果出来的不是人体的形心啊,到底哪错了呢

[ 本帖最后由 eight 于 2007-10-17 14:59 编辑 ]

花如月 发表于 2007-10-17 13:59

不要死套公式,那样肯定是有问题的

可以考虑这样做:找出白像素对应的所有坐标,求出所有x和y的平均值。作为行心的坐标,这样误差应该是可以接受的。

个人意见仅供参考

[ 本帖最后由 ChaChing 于 2010-4-18 15:26 编辑 ]

xjzuo 发表于 2007-10-17 15:16

这个问题以前好象讨论过: 先用edge求出轮廓,再求轮廓各点坐标,然后求形心(坐标的平均).

eight 发表于 2007-10-17 15:21

原帖由 xjzuo 于 2007-10-17 15:16 发表 http://www.chinavib.com/forum/images/common/back.gif
这个问题以前好象讨论过: 先用edge求出轮廓

其实用 find 也是可以的。这个问题之前的确讨论过,好像是飞机模型,现在只不过换了人体而已,建议楼主翻一下旧帖

axz707 发表于 2007-10-17 15:45

我不知道这两个函数啊~以前确实有过飞机模型的那个,可是没讨论出结果来啊

花如月 发表于 2007-10-17 16:20

原帖由 axz707 于 2007-10-17 15:45 发表 http://www.chinavib.com/forum/images/common/back.gif
我不知道这两个函数啊~以前确实有过飞机模型的那个,可是没讨论出结果来啊
不太可能啊,没见过以前的讨论。是按照我前边的思路,用eight说的find做的。
clear,clc;
I=imread('person.jpg');
I=rgb2gray(I);
BW=im2bw(I,graythresh(I));
=size(BW);
=find(BW);
x=round(mean(cols));y=round(mean(rows));
imshow(BW),hold on;axis on
text(x,y,'\heartsuit','Color','red','fontsize',20);
x=sort(cols);y=sort(rows);
rectangle('Position',,...
          'LineWidth',2,'Edgecolor','b');
效果还凑合,可能形心会有误差

axz707 发表于 2007-10-17 16:55

哈哈    谢谢谢谢!!!!:lol

eight 发表于 2007-10-17 16:55

回复 13楼 花如月 的帖子

形心不正确是否没有乘以坐标位置了?估计 vals 是要与 cols 和 rows 相乘的

[ 本帖最后由 ChaChing 于 2010-4-18 15:38 编辑 ]
页: [1] 2 3
查看完整版本: 请问怎么求这个图片的形心和最小外接矩形框啊