怎么用matlab找图像的重心

怎么用matlab找图像的重心,第1张

用matlab找图像的重心可以参考以下的代码:

I = imread('1.jpg')

I = rgb2gray(I)

imshow(I)

I = double(I)

[rows,cols] = size(I)

x = ones(rows,1)*[1:cols]y = [1:rows]'*ones(1,cols)

area = sum(sum(I))

meanx = sum(sum(I.*x))/area

meany = sum(sum(I.*y))/area

hold on

plot(meanx,meany,'r+') %十字标出重心位置

扩展资料:

常用函数

fix(x):无论正负,舍去小数至相邻整数

floor(x):下取整,即舍去正小数至相邻整数

ceil(x):上取整,即加入正小数至相邻整数

rat(x):将实数x化为多项分数展开

plot:x轴和y轴均为线性刻度(Linearscale)

loglog:x轴和y轴均为对数刻度(Logarithmicscale)

semilogx:x轴为对数刻度,y轴为线性刻度

semilogy:x轴为线性刻度,y轴为对数刻度

sin(x):正弦函数

cos(x):余弦函数

tan(x):正切函数

asin(x):反正弦函数

cosh(x):双曲余弦函数

tanh(x):双曲正切函数

参考资料来源:百度百科-MATLAB

[L,num]=bwlabel(I_bw,8)%将图像分为不同的块如:1,2,3等

plot_x=zeros(1,num)%%用于记录质心位置的坐标

plot_y=zeros(1,num)

for k=1:num %%num个区域依次统计质心位置

sum_x=0sum_y=0area=0

for i=1:height

for j=1:width

if L(i,j)==k %L(i,j)=K判断图像中L(i,j)是否为第K块

sum_x=sum_x+i %计算第k 块中x的和

sum_y=sum_y+j % 计算第k 块中y的和

area=area+1

end

end

end

plot_x(k)=fix(sum_x/area) %

plot_y(k)=fix(sum_y/area) ??????

end

重心计算公式:

x=该块中x的和/该快中的像素点的个数

y=该块中y的和/该快中的像素点的个数

这样解释不知道你满意不?

朋友,我觉得这个似乎有点问题,你这些点没有质量重心法应该是:比如说求重心的x坐标,你把每个点的重量乘以他们的x坐标,然后求和,求和之后除以所有点的质量之和~~ 有了正确的算法,实现他就是一个很简单的事了~~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11804540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存