机器视觉(硬币分割与边缘提取) | 您所在的位置:网站首页 › 对二值图像进行标记处理是对二值图像 › 机器视觉(硬币分割与边缘提取) |
硬币分割与边缘提取
本次的图像硬币分割是在Matlab平台上采用基于阈值的图像分割法实现。总体步骤分为中值滤波去噪、图像二值化、开操作、闭操作、连通区域提取、BoundingBox提取标记六步完成。 可以看到原始图像中含有一定的噪声,因此采用中值滤波算法进行降噪处理。经过代码的调试与实验结果对比,本次采用的是6*6窗口的中值滤波算法,可以很好的看到图片去噪后的效果。首先是获取原始图片的路径,然后对原始图片进行降噪处理,降噪处理就是去除图片中多余的白点噪声,为下一步的二值化处理进行先前准备工作。 通过上步降噪过程的完成,接下来就是对图像进行二值化处理。一开始采用的是用ostu方法获取默认二值化阈值,进行二值化操作,得到的效果如下图所示: 我们可以看到图片的左上角出现大块面积的噪声区域,因此得到的效果非常不理想。所以接下看我采用了另一种通过自定义调节的阈值二值化图像方法对图像重新二值化操作。具体过程是:首先通过设定一个初始化阈值,然后构造一个与图片等大的零矩阵,对每个像素点进行加255的操作使其变为白色图片,最后通过for循环将原图各点像素与阈值对比,并在对应的矩阵中使小于阈值的像素点变为黑色。最终看待的效果比较理想。运行结果如下图所示:
代码如下: clc; clear; close all; fprintf('=======中值滤波=====\n'); img=imread('E:\pictures\coin.jpg'); figure;imshow(img);title('原始图像'); % 使用[3,3]的窗口 img_med2 = medfilt2(img, [6,6]); figure;imshow(img_med2);title('6*6中值滤波'); subplot(2,2,1),imshow(img_med2),title('滤波后图像') [m,n] = size(img_med2); value = 129.01; %设定阈值 bw = zeros(m,n)+255; %与img_med2等大的全0矩阵,+255就是把所有像素值都设置成白色 for i = 2:m-1 for j = 2:n-1 if img_med2(i,j) |
CopyRight 2018-2019 实验室设备网 版权所有 |