Java+opencv3.2.0之膨胀与腐蚀

腐蚀与膨胀是最基本的形态学操作,它们能够实现多种多样的功能,主要如下:
1) 消除噪声
2) 分割出独立的图像元素,在图像中连接相邻的元素
3) 寻找图像中的明显的极大值区域或极小值区域
4) 求出图像的梯度

膨胀是求局部最大值的操作。本质上就是将图像A与核B进行卷积。
这里写图片描述

腐蚀和膨胀相反,是求局部最小值。它也是需要图像A与核B进行卷积。
这里写图片描述

Opencv3.2.0实现膨胀的函数:Imgproc.dilate(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)
参数说明:
src:源图像
dst:目标图像
kernel:膨胀操作的核,当为Null时,表示的是使用参考点位于中心的3x3的核。我们一般使用getStructuringElement配合这个参数使用。
anchor:锚的位置,默认值为(-1,-1),表示锚位于中心
iterations:迭代使用膨胀的次数,默认为1
borderType:推断外部像素的某种边界模式,默认值为BORDER_DEFAULT
borderValue:当边界为常数时的边界值,有默认值,一般不去管它。

Opencv3.2.0中实现腐蚀的函数:Imgproc.erode(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)
参数说明:
src:源图像
dst:目标图像
kernel:膨胀操作的核,当为Null时,表示的是使用参考点位于中心的3x3的核。我们一般使用getStructuringElement配合这个参数使用。
anchor:锚的位置,默认值为(-1,-1),表示锚位于中心
iterations:迭代使用膨胀的次数,默认为1
borderType:推断外部像素的某种边界模式,默认值为BORDER_DEFAULT
borderValue:当边界为常数时的边界值,有默认值,一般不去管它。
函数Imgproc.getStructuringElement(int shape, Size ksize, Point anchor)会返回指定形状或尺寸的内核矩阵。参数shape在opencv3.2.0中有多达11种取值,这里给出三种:Imgproc.MORPH_RECT(矩形)、Imgproc.MORPH_CROSS(交叉形)、Imgproc.MORPH_ELLIPSE(椭圆形)。ksize和anchor分别代表内核的尺寸和锚点位置。

例子:

public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    Mat srcImage = Imgcodecs.imread("F:\\t01315b7884a7f706bd.jpg");

    Mat dilateImage = srcImage.clone();
    Mat erodeImage = srcImage.clone();

    Mat element = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3,3));
    //膨胀
    Imgproc.dilate(srcImage, dilateImage, element, new Point(-1, -1), 1);
    //腐蚀
    Imgproc.erode(srcImage, erodeImage, element, new Point(-1, -1), 1);

    Imgcodecs.imwrite("F:\\dilateImage.jpg", dilateImage);
    Imgcodecs.imwrite("F:\\erodeImage.jpg", erodeImage);
}

源图像:
这里写图片描述

膨胀图像:
这里写图片描述

腐蚀图像:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值