OpenCV图像模糊:高斯滤波、双边滤波

这篇具有很好参考价值的文章主要介绍了OpenCV图像模糊:高斯滤波、双边滤波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、高斯模糊

1.高斯滤波原理

图像处理中,高斯滤波主要可以使用两种方法实现。一种是离散化窗口滑窗卷积,另一种方法是通过傅里叶变化。离散化窗口划船卷积时主要利用的是高斯核,高斯核的大小为奇数,因为高斯卷积会在其覆盖区域的中心输出结果。常用的高斯模板有如下几种形式:
OpenCV图像模糊:高斯滤波、双边滤波
高斯模板是通过高斯函数计算出来的,公式如下:
OpenCV图像模糊:高斯滤波、双边滤波
从以上描述中我们可以看出,高斯滤波模板中最重要的参数就是高斯分布的标准差σ。它代表着数据的离散程度,如果σ较小,那么生成的模板中心系数越大,而周围的系数越小,这样对图像的平滑效果就不是很明显;相反,σ较大时,则生成的模板的各个系数相差就不是很大,比较类似于均值模板,对图像的平滑效果就比较明显。

2.GaussianBlur函数

(1)函数原型:
void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, intborderType=BORDER_DEFAULT)

参数详解如下:
src,输入图像,即源图像,填Mat类的对象即可。它可以是单独的任意通道数的图片,但需要注意,图片深度应该为CV_8U,CV_16U, CV_16S, CV_32F 以及 CV_64F之一。

dst,即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。

ksize,高斯内核的大小。其中ksize.width和ksize.height可以不同,但他们都必须为正数和奇数。或者,它们可以是零的,它们都是由sigma计算而来。若(blur1,blur2)为高斯核的大小,blur1和blur2的值可以不同。参数0表示标准差取0。当blur1=blur2=1时,相当于不对原始图像做操作。**blur1和blur2越大,图像的模糊程度越大。**但不是blur1和blur2越大越好,blur1和blur2太大,不仅会滤除噪音,还会平滑掉图像中有用的信息。所以blur的选取要进行测试。如果要进行滤波的图像的长宽比大致为1:1,那么选取blur时,一般设置blur1=blur2。如果要进行滤波的图像的长宽比大致为m:n,那么选取blur时,blur1:blur2=m:n

sigmaX,表示高斯核函数在X方向的的标准偏差。
sigmaY,表示高斯核函数在Y方向的的标准偏差。
sigma和窗口大小size是互相推算出来的。如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。如果设置size,那么sigma不起作用;如果设置size(0,0),那么通过sigma就能调节模糊效果。只设置sigmaX,不设置sigmaY那么默认sigmaY=sigmaX。

OpenCV图像模糊:高斯滤波、双边滤波

(2)调节delta参数

利用TrackBar调节delta参数

#include <iostream>
#include "opencv2\opencv.hpp"

using namespace std;
using namespace cv;

int delta1;
int delta2;
Mat src;
Mat dst;
Mat gray;
Mat gauss_mat;
Mat binary;
Mat canny;

void gauss(int b, void* userdata) {
	cvtColor(src, gray, COLOR_BGR2GRAY);  //转化成灰度图
	GaussianBlur(gray, gauss_mat, Size(1, 1), delta1, delta2);  //平滑滤波
	//threshold(gauss_mat, binary, 10, 255, THRESH_BINARY | THRESH_OTSU);  //自适应二值化
	//Canny(binary, canny, 20, 80, 3);
	imshow("gauss", gauss_mat);
}

int main() {
	src = imread("coin.jpg");
	namedWindow("gauss", WINDOW_NORMAL);

	//调节GaussianBlur的delta
	createTrackbar("gaussbar", "gauss", &delta1, 50, gauss, 0);//调节delta时不能为0,否则报异常。如果Size不为(0,0),调节delta没有任何作用。
	createTrackbar("gaussbar", "gauss", &delta2, 50, gauss, 0);

	waitKey(0);
}
(3)应用例子
//高斯模糊,中心占得比重最大
void QuickDemo::gaussian_blur_demo(Mat &image) {
	Mat dst;
	GaussianBlur(image, dst, Size(0, 0), 100);//卷积核大小必须是奇数,sigma和窗口大小是互相推算出来的。如果设置size,那么sigma不起作用;如果设置size(0,0),那么通过sigma就能调节模糊效果。
	imshow("高斯模糊", dst);
}
#include <QCoreApplication>
#include "opencv2/opencv.hpp"

using namespace cv;

int main(int argc, char *argv[])
{
    cv::Mat input;
    input = cv::imread("test1.png");
    cv::Mat org = input.clone();
    cv::namedWindow("input", WINDOW_NORMAL);
    cv::imshow("input", input);

    //GaussianBlur
    for (size_t i = 0; i < blur_times; ++i)
        cv::GaussianBlur(org, org, cv::Size(5, 5), 0, 0);
    cv::namedWindow("GaussianBlur", WINDOW_NORMAL);
    cv::imshow("GaussianBlur", org);
    cv::waitKey(0);
}

参考:https://aistudio.csdn.net/62e38a51cd38997446774bd7.html?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultOPENSEARCHactivity-1-81568844-blog-105547468.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultOPENSEARCHactivity-1-81568844-blog-105547468.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=2
参考:https://blog.csdn.net/qq_38132105/article/details/105547468

二、高斯双边模糊

相比于高斯模糊,高斯双边模糊会保存图片的细节特征

void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, douboe sigmaSpace, int borderType=BORDER_DEFAULT)

高斯双边滤波既考虑了像素位置对原来像素的影响,也考虑了像素值的原来坐标点的影响。位置越远影响越小,像素相差越多影响越小。
第四个参数:double类型的sigmaColor,颜色空间滤波器的sigma值。这个值越大,表示该像素邻域内有越宽广的颜色被混合到一起,会产生较大的半相等颜色区域。
第五个参数:double类型的sigmaSpace,坐标空间中滤波器的sigma值,坐标空间的标准方差。它的值越大,则越远的像素会相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当d>0时,d指定了邻域大小且与sigmaSpace无关。fouze,d正比于sigmaSpace。文章来源地址https://www.toymoban.com/news/detail-465836.html

void QuickDemo::bifilter_demo(Mat &image) {
	Mat dst;
	bilateralFilter(image, dst, 0, 10, 20);
	imshow("双边模糊", dst);
}

到了这里,关于OpenCV图像模糊:高斯滤波、双边滤波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像处理:推导五种滤波算法(均值、中值、高斯、双边、引导)

    目录 概论 算法原理 1、均值滤波 2、中值滤波 3、高斯滤波 4、双边滤波 5、引导滤波  手写代码 Opencv代码实现  最后的总结 参考文章         本来打算是分开推导的,但我觉得还是整个合集吧,避免有水文的嫌疑,那么因为学习的需要,会涉及到图像的滤波处理,我汇总

    2024年02月07日
    浏览(36)
  • Opencv之图像滤波:6.双边滤波(cv2.bilateralFilter)

            前面我们介绍的滤波方法都会对图像造成模糊,使得边缘信息变弱或者消失,因此需要一种能够对图像边缘信息进行保留的滤波算法,双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护 图像内的边缘信息。         之前介绍的

    2024年02月05日
    浏览(36)
  • 中值滤波,均值滤波,高斯滤波,双边滤波,联合双边滤波介绍

    看GAMES202相关课程发现闫老师讲的太好了,所以记录一下。当然文中涉及的PPT也来自闫老师的课程PPT,欢迎交流。 首先这几种都是空域的滤波方式,用于抑制图像中的噪声。它们采用的原理基本都是通过滤波核 K K K 处理含噪图像 C ~ widetilde{C} C ,得到干净的输出图 C ‾ ove

    2024年02月09日
    浏览(32)
  • 【图像处理OpenCV(C++版)】——5.5 图像平滑之双边滤波

    前言 : 😊😊😊 欢迎来到本博客 😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C++来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快速查询等,随时更新。 😊😊😊 具体食用方式:可以点击本专栏【OpenCV快速查找(更新中)】–搜索你要查询的算子

    2024年02月13日
    浏览(32)
  • opencv-34 图像平滑处理-双边滤波cv2.bilateralFilter()

    双边滤波(BilateralFiltering)是一种图像处理滤波技术,用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同,双边滤波在考虑像素之间的空间距离之外,还考虑了像素之间的灰度值相似性。这使得双边滤波能够有效地去除噪声,同时保持图像的细节和边缘。

    2024年02月14日
    浏览(27)
  • 【OpenCV Python实现图像增强:高斯模糊和运动模糊】

    【OpenCV Python实现图像增强:高斯模糊和运动模糊】 图像处理是计算机视觉领域的重要分支,它在各个领域都有广泛的应用。图像增强是其中的一个重要技术,可以帮助我们提升图像的质量和清晰度。本文将介绍如何使用Python和OpenCV库来实现两种常见的图像增强方法:高斯模

    2024年02月12日
    浏览(32)
  • Opencv-图像噪声(均值滤波、高斯滤波、中值滤波)

    图像噪声是图像处理中常见的问题,它是由于各种原因引入的不希望的随机变化或干扰,导致图像质量下降。噪声可以出现在图像的亮度、颜色和纹理等方面,对图像分析、计算机视觉和图像处理任务造成困难。为了减少或消除图像中的噪声,常常使用不同类型的滤波技术。

    2024年02月04日
    浏览(42)
  • 《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器

    本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 图像滤波是指在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制,是常用的图像处理方法。 空间滤波也称空间域滤波,滤波器规定了邻域形状与邻域

    2024年02月02日
    浏览(37)
  • 运用维纳滤波实现图像去模糊(OpenCV实现)

    目录 一、背景描述 二、技术应用 三、实际处理 (1)对运动模糊的处理 处理效果 (2)对均值模糊的处理 处理效果 (3)对高斯模糊的处理 处理效果 (4)对运动模糊+高斯噪声的处理 处理效果  四、振铃现象 五、总结 图像去模糊 是低级计算机视觉中的一个经典问题,它的

    2024年02月03日
    浏览(28)
  • 【高性能计算】opencl语法及相关概念(四):结合opencv进行图像高斯模糊处理

    高斯模糊是一种常用的图像处理技术,用于减少图像中的噪点和细节,并实现图像的平滑效果。它是基于高斯函数的卷积操作,通过对每个像素周围的邻域像素进行加权平均来实现模糊效果。 具体而言,高斯模糊通过在图像上滑动一个卷积核,将卷积核与输入图像的对应像素

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包