这篇文章的起因是因为我在做一个项目,其中的要求就是求图像的质心,这个算法初步实现了一个功能:
给出一张图片如下:
然后把这个图片保存到d:\测试.jpg目录,最后运行我的函数即可
写的思路:
对于图片,质心肯定会数值不一样,这时候可以通过这种想法,然后设定阈值,对于图片数据进行二重循环,最终找到质心那块范围的坐标,最后就能够求出质心
下面附上源代码:(一个名为centroid的matlab函数)
function y = centroid()
I = imread('d:\\测试1.jpg');
[M,N,P] = size(I);
int8 sumx ;
int8 sumy ;
int8 count ;
sumx = 0;
sumy = 0;
count = 0;
int8 R ;
int8 G ;
int8 B ;
R = 20; G = 200;B = 200;
for i = 1:1:M
for j = 1:1:N
if I(i,j,1)>=R && I(i,j,2)>=G && I(i,j,3)>=B
sumx = sumx + i;
sumy = sumy +j;
count = count + 1;
end
end
end
sumx = sumx / count; %sumx存储了x轴坐标
sumy = sumy / count; %sumy存储了y轴坐标
disp(sumx);disp(sumy);
运行效果图:
运行结果已经求出了质心