【matlab】 matlab求图像质心算法

时间:2024-03-20 14:44:01
                     

这篇文章的起因是因为我在做一个项目,其中的要求就是求图像的质心,这个算法初步实现了一个功能:
给出一张图片如下:
【matlab】 matlab求图像质心算法

然后把这个图片保存到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    endendsumx = sumx / count;    %sumx存储了x轴坐标sumy = sumy / count;    %sumy存储了y轴坐标disp(sumx);disp(sumy);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

运行效果图:
【matlab】 matlab求图像质心算法

运行结果已经求出了质心

           
                     

这篇文章的起因是因为我在做一个项目,其中的要求就是求图像的质心,这个算法初步实现了一个功能:
给出一张图片如下:
【matlab】 matlab求图像质心算法

然后把这个图片保存到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    endendsumx = sumx / count;    %sumx存储了x轴坐标sumy = sumy / count;    %sumy存储了y轴坐标disp(sumx);disp(sumy);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

运行效果图:
【matlab】 matlab求图像质心算法

运行结果已经求出了质心