Android OpenCv4 高斯滤波


高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。 通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。高斯滤波是利用高斯核的一个2维的卷积算子,用于图像模糊化(去除细节和噪声)。

/**
src 待高斯滤波图像,图像可以具有任意的通道数目,但是数据类型必须为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
dst 输出图像,与输入图像src具有相同的尺寸、通道数和数据类型
ksize 高斯滤波器的尺寸,滤波器可以不为正方形,但是必须是正奇数。如果尺寸为0,则由标准偏差计算尺寸
sigmaX  X方向的高斯滤波器标准偏差
sigmaY  Y方向的高斯滤波器标准偏差; 如果输入量为0,则将其设置为等于sigmaX,如果两个轴的标准差均为0,则根据输入的高斯滤波器尺寸计算标准偏差。
borderType  像素外推法选择标志。默认参数为BORDER_DEFAULT,表示不包含边界值倒序填充。
**/
 public static void GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX, double sigmaY, int borderType)
使用
    /**
    * 高斯滤波
    * @param bitmap
    * @param iv
    */
   public static void setGauss(Bitmap bitmap, ImageView iv){
       Mat mSource = new Mat();

       Utils.bitmapToMat(bitmap, mSource);
       Mat grayMat = new Mat();
       Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图

       //高斯滤波
       Mat gauss = new Mat();
       Imgproc.GaussianBlur(grayMat, gauss,new Size(21.0, 21.0), 0);
       showImg(gauss,iv);
   }


   /**
    * 显示图像
    * @param mat
    * @param mIvSrc
    */
   private static void showImg(Mat mat, ImageView mIvSrc){

       Bitmap bitmap = Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
       Utils.matToBitmap(mat, bitmap);
       mIvSrc.setImageBitmap(bitmap);
       mat.release();
   }
   

原图像

在这里插入图片描述

高斯滤波以后

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值