图像腐蚀
图像腐蚀的作用是将目标图像收缩,运算效果取决于结构元素大小内容以及逻辑运算性质。腐蚀处理可以表示成用结构元素对图像进行探测,找出图像中可以放下该结构元素的区域。腐蚀是一种消除边界点,使边界点内缩的过程。可以用来消除小且无意义的目标物。
/**
src 输入的待腐蚀图像,图像的通道数可以是任意的,但是图像的数据类型必须是CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
dst 腐蚀后的输出图像,与输入图像src具有相同的尺寸和数据类型
kernel 用于腐蚀操作的结构元素,可以自己定义,也可以用getStructuringElement()函数生成
anchor 中心点在结构元素中的位置,默认参数为结构元素的几何中心点
iterations 腐蚀的次数,默认值为1
borderType 像素外推法选择标志
borderValue 使用边界不变外推法时的边界值
**/
public static void erode(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)
使用
/**
* 图像腐蚀
* @param bitmap
* @param iv
*/
public static void setErode(Bitmap bitmap, ImageView iv){
Mat mSource = new Mat();
Utils.bitmapToMat(bitmap, mSource);
Mat grayMat = new Mat();
Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图
//图像腐蚀
Mat kernel = Imgproc.getStructuringElement(CV_SHAPE_RECT,new Size(3, 3));
Mat result =new Mat();
Imgproc.erode(mSource, result, kernel, new Point(-1,-1),1);
showImg(result,iv);
}
原图
腐蚀以后
图像膨胀
图像膨胀的作用是将目标图像扩大,运算效果取决于结构元素大小内容以及逻辑运算性质。图像膨胀操作可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。
/**
src 输入的待膨胀图像,图像的通道数可以是任意的,但是图像的数据类型必须是CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
dst 膨胀后的输出图像,与输入图像src具有相同的尺寸和数据类型
kernel 用于膨胀操作的结构元素,可以自己定义,也可以用getStructuringElement()函数生成
anchor 中心点在结构元素中的位置,默认参数为结构元素的几何中心点
iterations 膨胀的次数,默认值为1
borderType 像素外推法选择标志
borderValue 使用边界不变外推法时的边界值
**/
public static void dilate(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)
使用
/**
* 图像膨胀
* @param bitmap
* @param iv
*/
public static void setErode(Bitmap bitmap, ImageView iv){
Mat mSource = new Mat();
Utils.bitmapToMat(bitmap, mSource);
Mat grayMat = new Mat();
Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图
//图像膨胀
Mat kernel = Imgproc.getStructuringElement(CV_SHAPE_RECT,new Size(3, 3));
Mat result =new Mat();
Imgproc.dilate(mSource, result, kernel, new Point(-1,-1),1);
showImg(result,iv);
}