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 感谢

你可能感兴趣的:(Java基于opencv实现图像数字识别(五)—腐蚀、膨胀处理)