MALTLAB硬币计数

读取图像:加载想要处理的图像。

图像预处理:将图像转换为灰度图像,并可能应用滤波器来平滑图像,以便更好地处理。

边缘检测:使用例如 Canny 边缘检测器来找到硬币的边界。

圆形检测:使用霍夫圆变换来识别图像中的圆形(即硬币)。

计数硬币:计算检测到的圆形数量。并将其显示在图片的左上角。

标注几何中心:用*标注了硬币的几何中心

代码:

originalImage = imread('D:\图像处理\image\硬币.jpg');

imshow(originalImage);

hold on; % 保持当前图像,以便在其上绘制。

title('Original Image');

% 转换为灰度图像

grayImage = rgb2gray(originalImage);

% 直方图均衡化

equalizedImage = histeq(grayImage);

% 边缘检测

edges = edge(equalizedImage, 'canny', [], 2); % 可以调整阈值和Sigma值

% 霍夫圆变换来识别圆形

[centers, radii] = imfindcircles(edges, [20 100], 'ObjectPolarity', 'bright', 'Sensitivity', 0.92); % 调整半径和敏感度

% 绘制检测到的硬币

viscircles(centers, radii);

% 绘制每个硬币的几何中心

plot(centers(:,1), centers(:,2), 'r*');

% 计数硬币

numberOfCoins = numel(radii);

disp(['硬币个数 : ', num2str(numberOfCoins)]);

% 在图像上显示计数结果

text(10, 10, ['硬币个数: ', num2str(numberOfCoins)], 'Color', 'black', 'FontSize', 10);

hold off; % 结束在同一图像上的绘制。

结果图:

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值