MATLAB程序,用于输出图片的多轮廓质心坐标并在图片上显示

一、在使用此程序之前,您需要将图像文件(假设命名为 your_image.jpg)与 MATLAB 程序文件放在同一个文件夹中。然后,将程序中的 your_image.jpg 替换为您自己的图像文件名。运行程序后,它将显示原始图像,并在图像上绘制出每个轮廓的质心坐标。

% 读取图片
image = imread('your_image.jpg'); % 替换为你的图片路径

% 转换为灰度图像
grayImage = rgb2gray(image);

% 二值化处理
binaryImage = imbinarize(grayImage);

% 提取轮廓
contourImage = bwperim(binaryImage);

% 标记轮廓
labeledImage = bwlabel(contourImage);

% 计算轮廓质心坐标
measurements = regionprops(labeledImage, 'Centroid');
centroids = cat(1, measurements.Centroid);

% 在图片上显示质心坐标
imshow(image);
hold on;
plot(centroids(:, 1), centroids(:, 2), 'r*');
hold off;

% 输出质心坐标
disp('质心坐标:');
disp(centroids);
  1. 读取图像:程序通过imread函数读取图像文件,将其加载到内存中。

  2. 灰度处理:为了简化处理过程,将彩色图像转换为灰度图像,使用rgb2gray函数将彩色图像转换为灰度图像。

  3. 二值化处理:通过使用graythresh函数来自动选择一个阈值,然后使用imbinarize函数将灰度图像二值化,将图像转换为黑白二值图像。这一步的目的是将图像分为目标物体和背景两部分。

  4. 寻找轮廓:使用bwlabel函数对二值化图像进行连通组件标记,为每个连通组件分配一个唯一的标签。然后,通过使用regionprops函数提取每个连通组件的属性,其中包括质心坐标。这样,我们可以获取图像中每个轮廓的质心坐标。

  5. 显示图像和轮廓:使用imshow函数显示原始图像。然后,通过使用hold onhold off函数,确保在同一图像上绘制轮廓质心坐标时不清除原始图像。使用plot函数绘制每个轮廓的质心坐标,并使用红色十字标记进行标注。

二、一步提取轮廓,可以使用 MATLAB 中的函数 bwboundaries。该函数可以从二值化图像中提取出每个连通组件的边界轮廓。

% 读取图像
image = imread('your_image.jpg');

% 转换为灰度图像
grayImage = rgb2gray(image);

% 二值化处理
threshold = graythresh(grayImage);
binaryImage = imbinarize(grayImage, threshold);

% 提取轮廓
boundaries = bwboundaries(binaryImage);

% 显示图像
imshow(image);
hold on;

% 绘制轮廓
for k = 1:length(boundaries)
    boundary = boundaries{k};
    plot(boundary(:, 2), boundary(:, 1), 'r', 'LineWidth', 2);
end

hold off;

在修改后的程序中,我们使用 bwboundaries 函数来提取二值化图像中的轮廓边界。返回的 boundaries 是一个细胞数组,每个元素表示一个轮廓的边界。然后,我们使用 plot 函数将每个轮廓边界绘制在原始图像上。

请确保将图像文件(假设命名为 your_image.jpg)与 MATLAB 程序文件放在同一个文件夹中,并替换程序中的 your_image.jpg 为您自己的图像文件名。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖釉-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值