MATLAB图像重心计算

图像重心(或质心)计算是计算机视觉和图像处理领域

应用领域广泛:包括医疗,生物,动画,机器人等。

该文章通过灰度转换->二值化->质心计算

以下是代码中涉及的一些数学概念和公式:

  1. 灰度转换

    • 从RGB到灰度的转换通常是通过加权平均的方式完成的,公式如下: Igray=0.2989⋅R+0.5870⋅G+0.1140⋅BIgray=0.2989⋅R+0.5870⋅G+0.1140⋅B 这里 RR, GG, BB 分别是红、绿、蓝三个颜色通道的强度,IgrayIgray 是转换后的灰度值。
  2. 二值化

    • imbinarize 函数会将灰度图像转换成二值图像,通常基于一个阈值 TT,如果像素值大于 TT 则设置为 1(白色),否则设置为 0(黑色)。这个过程可以用以下伪代码表示:

      复制代码
      if I_gray(x, y) > T then
          binaryImage(x, y) = 1;
      else
          binaryImage(x, y) = 0;
      end
    • 阈值 TT 可以通过不同的算法自动计算,例如Otsu方法。

3.计算

代码示例

Matlab 复制代码
​​​​clc
clear
image = imread('1.png');
grayImage = rgb2gray(image);
binaryImage = imbinarize(grayImage);
binaryImage = ~binaryImage;
stats = regionprops('table', binaryImage, 'Centroid', 'Area');
centroids = stats.Centroid;
areas = stats.Area;
% 选择面积最大的轮廓
[~, largestIdx] = max(areas);
centroid = centroids(largestIdx, :);
% 显示结果
figure;
imshow(image); % 显示原始图像
hold on;
plot(centroid(1), centroid(2), 'r*', 'MarkerSize', 10, 'LineWidth', 2); % 绘制重心
title('Detected Centroid');
hold off;
% 输出重心坐标
disp(['重心坐标: (', num2str(centroid(1)), ', ', num2str(centroid(2)), ')']);

实验测试

相关推荐
2zcode4 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
jiushiapwojdap5 小时前
LU分解法求解线性方程组Matlab实现
数据结构·其他·算法·matlab
MATLAB代码顾问7 小时前
改进遗传算法(IGA)求解作业车间调度问题(JSSP)——附MATLAB代码
开发语言·matlab
米饭不加菜7 小时前
机器人矩阵运算MATLAB计算
matlab·矩阵·机器人
机器学习之心8 小时前
多智能体遗传算法(MAGA)优化最优投影方向的投影寻踪聚类评价,MATLAB代码
matlab·聚类·投影寻踪聚类评价
MATLAB代码顾问8 小时前
多种群协同进化算法(MPCE)求解大规模作业车间调度问题——附MATLAB代码
开发语言·算法·matlab
Evand J10 小时前
【MATLAB绘图教程】空间误差场图的概念及其应用,附代码
matlab·平面·绘图·定位
alphageek810 小时前
Matlab linspace函数完全指南:从基础用法到进阶技巧
开发语言·其他·matlab
xrgs_shz10 小时前
MATLAB 纹理特征提取:一文读懂 graycomatrix 与 graycoprops
人工智能·计算机视觉·matlab
2zcode12 小时前
基于MATLAB的深度学习工业表面缺陷多分类检测系统设计与实现(GUI界面+数据集+训练代码)
深度学习·matlab·分类