Java基于opencv实现图像数字识别(五)—腐蚀、膨胀处理

腐蚀:去除图像表面像素,将图像逐步缩小,以达到消去点状图像的效果;作用就是将图像边缘的毛刺剔除掉

膨胀:将图像表面不断扩散以达到去除小孔的效果;作用就是将目标的边缘或者是内部的坑填掉

使用相同次数的腐蚀和膨胀,可以使目标表面更平滑;但也有场景限制,就是如果去噪不干净的话,会出现意想不到的结果,尽量别使用

大概的效果,适合降噪比较干净的图
腐蚀和膨胀

// 图像腐蚀/膨胀处理
public void erodeImg() {
	Mat outImage = new Mat();

	// size 越小,腐蚀的单位越小,图片越接近原图
	Mat structImage = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(5, 2));

	/**
	 * 图像腐蚀
	 * 腐蚀说明: 图像的一部分区域与指定的核进行卷积,
	 * 求核的最`小`值并赋值给指定区域。
	 * 腐蚀可以理解为图像中`高亮区域`的'领域缩小'。
	 * 意思是高亮部分会被不是高亮部分的像素侵蚀掉,使高亮部分越来越少。
	 */
	Imgproc.erode(mat, outImage, structImage, new Point(-1, -1), 2);
	mat = outImage;

	/**
	 * 膨胀
	 * 膨胀说明: 图像的一部分区域与指定的核进行卷积,
	 * 求核的最`大`值并赋值给指定区域。 
	 * 膨胀可以理解为图像中`高亮区域`的'领域扩大'。
	 * 意思是高亮部分会侵蚀不是高亮的部分,使高亮部分越来越多。
	 */
	Imgproc.dilate(mat, outImage, structImage , new Point(-1, -1), 2);
	mat = outImage;

}

本文章参考了很多博客,感谢;主要是跟着一个博客来实现的https://blog.csdn.net/ysc6688/article/category/2913009 感谢

原文地址:https://www.cnblogs.com/qjmnong/p/9233671.html