返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Opencv实现联合双边滤波
  • 780
分享到

Opencv实现联合双边滤波

2024-04-02 19:04:59 780人浏览 薄情痞子
摘要

本文实例为大家分享了OpenCV实现联合双边滤波的具体代码,供大家参考,具体内容如下 1.介绍 双边滤波是一种可以保边去噪的滤波器,主要是因为它的核比较特殊,公式(1)为它的调用公式

本文实例为大家分享了OpenCV实现联合双边滤波的具体代码,供大家参考,具体内容如下

1.介绍

双边滤波是一种可以保边去噪的滤波器,主要是因为它的核比较特殊,公式(1)为它的调用公式,公式(2)为它的核公式,其中,大括号左边公式为空间域小核,和高斯滤波器是一样的,而大括号右边公式为值域小核(f表示取其灰度值),而对于联合双边滤波与双边滤波的区别主要在于值域小核所用到的图片,如果所用到的图片是引入的另外一幅图像,那么就是在使用联合双边滤波。

(1)

(2)

2.代码

此代码就是用联合双边滤波简单去一个噪声


#include<opencv2/opencv.hpp>
#include<ximgproc.hpp>
 
using namespace cv;
 
 
Mat addSaltNoise(const Mat srcImage, int n)
{
 Mat dstImage = srcImage.clone();
 for (int k = 0; k < n; k++)
 {
  //随机取值行列
  int i = rand() % dstImage.rows;
  int j = rand() % dstImage.cols;
  //图像通道判定
  if (dstImage.channels() == 1)
  {
   dstImage.at<uchar>(i, j) = 255;  //盐噪声
  }
  else
  {
   dstImage.at<Vec3b>(i, j)[0] = 255;
   dstImage.at<Vec3b>(i, j)[1] = 255;
   dstImage.at<Vec3b>(i, j)[2] = 255;
  }
 }
 for (int k = 0; k < n; k++)
 {
  //随机取值行列
  int i = rand() % dstImage.rows;
  int j = rand() % dstImage.cols;
  //图像通道判定
  if (dstImage.channels() == 1)
  {
   dstImage.at<uchar>(i, j) = 0;  //椒噪声
  }
  else
  {
   dstImage.at<Vec3b>(i, j)[0] = 0;
   dstImage.at<Vec3b>(i, j)[1] = 0;
   dstImage.at<Vec3b>(i, j)[2] = 0;
  }
 }
 return dstImage;
}
 
 
int main() {
 Mat src = imread("test.png", 1);
 src = addSaltNoise(src, 3000);
 
 Mat joint = imread("test.png", 0);
 
 Mat dst;
 int64 begin = cvGetTickCount();
 ximgproc::jointBilateralFilter(joint, src, dst, -1, 3, 9);
 int64 end = cvGetTickCount();
 
 float time = (end - begin) / (cvGetTickFrequency() * 1000.);
 printf("time= %fms\n", time);
 
 
 imshow("src", src);
 imshow("joint", joint);
 imshow("jointBilateralFilter", dst);
 waiTKEy(0);
 
 return 0;
}

原图:

噪声图:

导向图片:

结果图(去噪之后的图片和原图很接近呀)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Opencv实现联合双边滤波

本文链接: https://lsjlt.com/news/137722.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Opencv实现联合双边滤波
    本文实例为大家分享了Opencv实现联合双边滤波的具体代码,供大家参考,具体内容如下 1.介绍 双边滤波是一种可以保边去噪的滤波器,主要是因为它的核比较特殊,公式(1)为它的调用公式...
    99+
    2024-04-02
  • OpenCV实现图像滤波之双边滤波
    本文实例为大家分享了opencv实现双边滤波的具体代码,供大家参考,具体内容如下 1、2D卷积 #!/usr/bin/env python3 # -*- coding: utf-...
    99+
    2024-04-02
  • OpenCV实现双边滤波算法
    本文实例为大家分享了OpenCV实现双边滤波算法的具体代码,供大家参考,具体内容如下 一、双边滤波 双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法...
    99+
    2024-04-02
  • OpenCV实现可分离滤波
    自定义滤波 无论是图像卷积还是滤波,在原图像上移动滤波器的过程中每一次的计算结果都不会影响到后面过程的计算结果,因此图像滤波是一个并行的算法,在可以提供并行计算的处理器中可以极大的加...
    99+
    2024-04-02
  • C++图像处理之双边滤波
    本文实例为大家分享了C++图像处理之双边滤波的具体代码,供大家参考,具体内容如下 1、 近期在学习双边滤波相关知识,其原理如下(以后补上): 2 、灰度图双边滤波实现C++代码如下,...
    99+
    2024-04-02
  • bilateral filter双边滤波器的实现原理是什么
    本篇文章为大家展示了bilateral filter双边滤波器的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 双边滤波(Bilateral filter)的原理双边滤波器之所以能够做...
    99+
    2023-06-06
  • openCV中值滤波和均值滤波的代码实现
    目录一.均值滤波二.中值滤波 在开始我们今天的博客之前,我们需要先了解一下什么是滤波: 首先我们看一下图像滤波的概念。图像滤波,即在尽量保留图像细节特征的条件下对目标图像的...
    99+
    2024-04-02
  • python OpenCV 实现高斯滤波详解
    目录一、高斯滤波二、C++代码三、python代码四、结果展示1、原始图像2、5x5卷积3、9x9卷积一、高斯滤波    高斯滤波是一种线性平滑滤波,适用于消...
    99+
    2024-04-02
  • python opencv图像的高通滤波和低通滤波怎么实现
    这篇文章主要介绍“python opencv图像的高通滤波和低通滤波怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python opencv图像的高通滤波和低通滤波怎么实...
    99+
    2023-07-02
  • C++实现OpenCV方框滤波的代码
    一、方框滤波    方框滤波是均值滤波的一种形式。在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和的均值,而在方框滤波中,可以自由...
    99+
    2024-04-02
  • Python 实现中值滤波、均值滤波
    Python图形界面实现中值滤波、均值滤波 红包: Lena椒盐噪声图片: # -*- coding: utf-8 -*- """ Created on Sat Oct 14 22:16:47 2017 @author: D...
    99+
    2023-01-31
    中值 均值 Python
  • OpenCV-Python实现图像梯度与Sobel滤波器
    目录图像梯度Sobel滤波器图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分,其灰度值变化较大,梯度值也较大;相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度...
    99+
    2024-04-02
  • Python+OpenCV 实现简单的高斯滤波(推荐)
    基本原理讲解:高斯模糊的算法 高斯核函数的编写:构建权重矩阵,采用高斯二维分布函数的形式进行处理。需要注意的是,这里我没有特判当sigma = 0的时候的情况。 即是实现: 1)权重...
    99+
    2024-04-02
  • C++ OpenCV实现boxfilter方框滤波的方法详解
    目录box filter简单解释1. 暴力实现——四循环2. 行列分离3. 行列分离优化版代码box filter简单解释 box filter的作用很简单,...
    99+
    2022-11-13
    C++ OpenCV boxfilter盒式滤波 C++ boxfilter盒式滤波 C++ 盒式滤波
  • OpenCV学习之图像加噪与滤波的实现详解
    目录一、实验内容二、实验环境和配置三、实验原理及操作1. 添加噪声2.噪声二值化3. 滤波处理四、实验结果2.椒盐噪声二值图与白噪声二值图3.椒盐噪声处理图经处理后图像4.白噪声处理...
    99+
    2023-02-16
    OpenCV图像加噪 滤波 OpenCV图像加噪 OpenCV图像滤波 OpenCV图像
  • OpenCV学习方框滤波实现图像处理代码示例
    目录一、方框滤波二、C++代码三、python代码四、结果展示1、原始图像2、归一化3、不归一化4、平方和求均值一、方框滤波    方框滤波是均值滤波的一种形...
    99+
    2024-04-02
  • 卡尔曼滤波的Python实现
    为了在Python编程环境下实现卡尔曼滤波算法,特编写此程序 主要用到了以下3个模块 numpy(数学计算)pandas(读取数据)matplotlib(画图展示) 代码的核心是实现了一个Kf_Params类,该类定义了卡尔曼滤波算法的相关...
    99+
    2023-09-11
    python
  • C++如何实现中值滤波
    这篇文章主要介绍了C++如何实现中值滤波的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++如何实现中值滤波文章都会有所收获,下面我们一起来看看吧。中值滤波器是一种非线性滤波器,或者叫统计排序滤波器。适用对象:...
    99+
    2023-06-30
  • python实现对图片进行均值滤波、中值滤波、高斯滤波处理及其原理和特点
    1.高斯滤波         1)原理:对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值。         2)特点:对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征。         3)代码 import ...
    99+
    2023-10-18
    python 开发语言
  • css如何实现波浪线边框
    本篇内容介绍了“css如何实现波浪线边框”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作