各向异性滤波

        各向异性扩散滤波主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的,和双边滤波很像。

public static void ImageAnisotropicGaussianBlur(Mat src)
{int N = 10;Mat[] mv = new Mat[3];Mat[] results = new Mat[3];Cv2.Split(src, out mv);for (int n = 0; n < mv.Count(); n++){Mat m = Mat.Zeros(src.Size(), MatType.CV_32FC1);mv[n].ConvertTo(m, MatType.CV_32FC1);results[n] = m;}int w = src.Cols;int h = src.Rows;Mat copy = Mat.Zeros(src.Size(), MatType.CV_32FC1);for (int i = 0; i < N; i++){anisotropy_demo(results[0], copy);copy.CopyTo(results[0]);anisotropy_demo(results[1], copy);copy.CopyTo(results[1]);anisotropy_demo(results[2], copy);copy.CopyTo(results[2]);}Mat output;Cv2.Normalize(results[0], results[0], 0, 255, NormTypes.MinMax);Cv2.Normalize(results[1], results[1], 0, 255, NormTypes.MinMax);Cv2.Normalize(results[2], results[2], 0, 255, NormTypes.MinMax);results[0].ConvertTo(mv[0], MatType.CV_8UC1);results[1].ConvertTo(mv[1], MatType.CV_8UC1);results[2].ConvertTo(mv[2], MatType.CV_8UC1);Mat dst = new Mat();Cv2.Merge(mv, dst);Cv2.ImShow("result", dst);
}public static void anisotropy_demo(Mat image, Mat result)
{float k = 15;float lambda = 0.25f;int width = image.Cols;int height = image.Rows;// 四邻域梯度float n = 0, s = 0, e = 0, w = 0;// 四邻域系数float nc = 0, sc = 0, ec = 0, wc = 0;float k2 = k * k;for (int row = 1; row < height - 1; row++){for (int col = 1; col < width - 1; col++){// gradientn = image.At<float>(row - 1, col) - image.At<float>(row, col);s = image.At<float>(row + 1, col) - image.At<float>(row, col);e = image.At<float>(row, col - 1) - image.At<float>(row, col);w = image.At<float>(row, col + 1) - image.At<float>(row, col);nc = (float)Math.Exp(-n * n / k2);sc = (float)Math.Exp(-s * s / k2);ec = (float)Math.Exp(-e * e / k2);wc = (float)Math.Exp(-w * w / k2);result.Set<float>(row, col, image.At<float>(row, col) + lambda * (n * nc + s * sc + e * ec + w * wc));}}
}

原图

结果图

        均值滤波

Cv2.Blur(src, dst, ksize);

        高斯滤波

Cv2.GaussianBlur(src, dst, new Size(3, 3), 0);

        加权中值滤波

OpenCvSharp.XImgProc.CvXImgProc.WeightedMedianFilter(src, mat, dst, 55, 55);

        中值滤波

        中值滤波是取卷积计算的中间值,中值滤波的好处是对图像的椒盐噪声有很好的抑制作用,因为图像的椒盐噪点,是图像某一片区域像素的极大值或者极小值,使用中值滤波可以过滤掉这些噪点。

Cv2.MedianBlur(src, dst, ksize);

原图

滤波图

        高斯低通滤波

        高斯函数由于在时域和频域其都是正态分布,所以可以做为滤波器。图像的高频信息一般代表图像的细节信息(边缘信息),所以低通滤波器一般是将图像变得更加模糊。高斯低通滤波有频域和时域;在用作光滑图像上,可以卷积,可以相乘。高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的。σ越大,高斯滤波器的频带就越宽,平滑程度就越好。

//构造kernel
Mat mx = Cv2.GetGaussianKernel(x, x);
Mat my = Cv2.GetGaussianKernel(y, y);
Mat dst = new Mat();
mat.CopyTo(dst);for (int i = 0; i < count; i++)
{Cv2.SepFilter2D(dst, dst, mat.Type(), mx, my);
}

原图(左)滤波结果(右)

        双边滤波

双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分布。

public static Bitmap denoising(Bitmap bitmap, int d) {Bitmap result = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);Mat origin = new Mat();Mat gray = new Mat();Mat bf = new Mat();Mat out = new Mat();Utils.bitmapToMat(bitmap, origin);Imgproc.cvtColor(origin, gray, Imgproc.COLOR_RGB2GRAY);// 去燥Imgproc.bilateralFilter(gray, bf, d, (double) (d * 2), (double) (d / 2));Imgproc.adaptiveThreshold(bf, out, 255.0D, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 25, 10.0D);Utils.matToBitmap(out, result);origin.release();gray.release();bf.release();out.release();return result;
}

Sigma平滑滤波器

参考网址

Win8 Metro(C#)数字图像处理--2.71Sigma平滑滤波器_Trent1985的专栏-CSDN博客_sigma滤波器[算法说明]  Sigma平滑滤波器是构造一个模板,比如3*3大小的模板,计算这个模板对应的像素的标准差d,然后根据统计学原理,得到一个置信区间v,假设3*3模板中心像素为p,则v大小范围为[p-d,p+d]。我们判断3*3模板中对应像素是否落在置信区间v内,对于在v内的像素,我们求取他们的均值,然后,当前模板对应的中心像素的滤波值就等于这个均值。图像表示如下:https://blog.csdn.net/trent1985/article/details/45312333

        最值滤波器

        参考网址

图像处理滤波器(四)——最值滤波器(Conservative Smoothing Filter)_lj695242104的专栏-CSDN博客_极值滤波描述:之所以我把它翻译成最值滤波器,因为它的原理就是在卷积核区域内,中心点的值如果大于或小于附近值的最大值或最小值时,将大于最大值的赋值为最大值,将小于最小值的赋值为最小值,这就是Conservative Smoothing Filter如下图所示:这上面的图表明中间点150要换成127,简单点讲就是大于最大值的等于最大值,小于最小值的等于最小值,在最小值和https://blog.csdn.net/lj695242104/article/details/7299389

低通、高通、带阻和带通滤波器

数字图像处理 低通、高通、带阻和带通滤波器_bashendixie5的博客-CSDN博客_数字图像处理高通滤波和低通滤波空间域和频域滤波器通常分为四种类型的滤波器——低通、高通、带阻和带通滤波器。低通滤波器:只允许通过低频细节,衰减高频细节。 示例:平滑过滤器。高通滤波器:只允许通过高频细节,衰减低频细节。 示例:锐化蒙版过滤器。带阻滤波器:衰减一定频率范围内的信号。 允许低于某个阈值和高于另一个阈值的频率通过。带通滤波器:只允许特定频带内的信号通过,衰减低于阈值和高于另一个阈值的频率通过。https://skydance.blog.csdn.net/article/details/124477680

Opencv学习笔记 各向异性滤波/均值滤波/高斯滤波/中值滤波/加权中值滤波/高斯低通滤波相关推荐

  1. OpenCV学习笔记(十七)——K均值聚类

    当我们要预测的是一个离散值时,做的工作就是"分类".机器学习模型还可以将训练集中的数据划分为若干个组,每个组被称为一个"簇(cluster)".它的重要特点是在 ...

  2. 《OpenCv视觉之眼》Python图像处理七 :Opencv图像处理之高通滤波和低通滤波原理及构造

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  4. 均值滤波计算_图像处理之低通滤波

    在图像处理或者计算机视觉应用中,在正式对图像进行分析处理前一般需要一个预处理的过程.预处理是对图像作一些诸如降维.降噪的操作,主要是为后续处理提供一个体积合适的.只包含所需信息的图像.这里通常会用到一 ...

  5. 数字图像处理笔记(七):频域低通滤波平滑图像

    1 - 傅里叶变换 在前面我们对空间滤波做了重点的研究,现在我们来介绍一下涉及频率域中的各种滤波技术.图像从空间域转换到频率域使用的是二维傅里叶变换,一个像素为M*N的图像f(x,y)进行傅里叶变换得 ...

  6. MATLAB学习——低通滤波(频域滤波(一))

    目录 1.概论 2.低通滤波 (1)理想低通滤波 代码(理想低通滤波) (2)巴特沃斯低通滤波器 代码(巴特沃斯低通滤波) (3)高斯低通滤波器 1.概论 频率域图像增强首先通过傅立叶变换将图像从空间 ...

  7. 中值滤波_图像处理之低通滤波

    在图像处理或者计算机视觉应用中,在正式对图像进行分析处理前一般需要一个预处理的过程.预处理是对图像作一些诸如降维.降噪的操作,主要是为后续处理提供一个体积合适的.只包含所需信息的图像.这里通常会用到一 ...

  8. Opencv_13 图像滤波(低通滤波图像平滑去噪)

    文章目录 一. 图像滤波简介 ① 为什么图像是波? ② 图像的频率 ③ 滤波器 二. 低通滤波之线性滤波 ① 方框滤波 ② 均值滤波 ③ 高斯滤波 三. 低通滤波之非线性滤波中值滤波 ① 中值滤波简介 ...

  9. 数字图像处理-频域滤波-高通/低通滤波

    频域滤波 频域滤波是在频率域对图像做处理的一种方法.步骤如下: 滤波器大小和频谱大小相同,相乘即可得到新的频谱. 滤波后结果显示,低通滤波去掉了高频信息,即细节信息,留下的低频信息代表了概貌.常用的例 ...

最新文章

  1. AI智能手机会是什么样?至少有这十个功能
  2. Redis实战(2)安装和试用
  3. 后台开发技术(1)--概述
  4. ALTERA产品型号命名
  5. spring源码研究
  6. CF924D. Contact ATC
  7. LeetCode 1637. 两点之间不包含任何点的最宽垂直面积
  8. 【BZOJ1607】轻拍牛头,筛一筛
  9. 兼容超大图片的处理_N年都没弄明白!PS保存的图片格式都啥意思?
  10. 计量分析类论文如何创新-化柏林
  11. 【oracle ocp知识点一】
  12. 函数模板与函数的区别
  13. ParaView Volume MHD
  14. 服务器状态 fadein,aria2-BT服务器地址的可用trackers列表(已接手)
  15. 如何通过股票量化交易接口实现盈利稳定?
  16. Nginx反向代理汇总
  17. linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机
  18. 如何做云班课上的计算机作业,云班课不分组怎么提交作业
  19. 舰船知识科普-有图有真相(附PPT)
  20. SuperNotCalledException Activity xxx did not call through to super.onCreate

热门文章

  1. 第九十章 参数关键字 - Flags
  2. 寻找数组最大递增子序列
  3. 设计模式——(装饰者模式)(组合模式)
  4. Pandas resample重采样及freq用法
  5. NVIDIA Jetson TX2 System-on-Module中文简介
  6. L1-081 今天我要赢
  7. Python代码雨版本2
  8. Swift基础——字符串简介
  9. edge使用独立显卡gpu
  10. pyecharts实战之树图