一、项目简介
基于传统图像处理的计数方法利用传统的图像处理算法,例如边缘检测、霍夫变换等,提取硬币的轮廓信息,然后根据轮廓面积、形状等特征识别硬币并进行计数。不过,这种方法简单易懂,但对图像质量要求较高,且难以处理复杂的场景。也可以采用形态学处理方法,首先将彩色图像转换为灰度图,然后进行滤波去除噪声。接着,通过形态学操作,估计并去除图像背景,从而增强硬币与背景的对比度。滤波的主要作用是去除图像中的高频噪声,而形态学操作则帮助进一步分离目标区域和背景区域
二、部分源码
function pushbutton1_Callback(hObject, eventdata, handles)
global I %定义一个全局变量im
[filename,pathname]=…
uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'select picture'); %选择图片路径
str=[pathname filename]; %合成路径+文件名
I=imread(str); %读取图片
axes(handles.axes1); %使用第一个axes
imshow(I);
function pushbutton3_Callback(hObject, eventdata, handles)
tic
global g
global I
axes(handles.axes1)
imshow(I);%原图
f = rgb2gray(I);%将图像灰度化
f = medfilt2(f);
axes(handles.axes2)
imshow(f);%灰度图
Im=medfilt2(f,[3,3]);%取得图象的全局域值
axes(handles.axes3)
imshow(Im); %滤波图像
thre = graythresh(f);%将灰度图二值化
t = ~im2bw(f,thre);
axes(handles.axes4)
imshow(t);
三、运行结果


四、总结
该系统通过数码相机获取平铺无重叠堆积的硬币图像,经过一系列处理步骤统计硬币数目。在处理过程中,首先将彩色图像转换为灰度图,然后进行滤波去除高频噪声,接着通过形态学操作估计并去除图像背景,增强硬币与背景的对比度,进一步分离目标区域和背景区域。之后采用OTSU方法确定最佳阈值进行二值化处理,以减少噪点。最后将计数结果显示在原始图像上,并可视化硬币的位置,可使用MATLAB的相关函数实现这一步骤。
五、代码获取
接matlab程序定制和论文设计,程序包运行成功,零基础的可以远程帮你运行。
作为初学者,遇见不会的问题是非常正常的事情,具体代码仿真 私信博主。





