亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Opencv實現(xiàn)聯(lián)合雙邊濾波

 更新時間:2021年10月11日 16:28:38   作者:時光碎了天  
這篇文章主要為大家詳細(xì)介紹了Opencv實現(xiàn)聯(lián)合雙邊濾波,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Opencv實現(xiàn)聯(lián)合雙邊濾波的具體代碼,供大家參考,具體內(nèi)容如下

1.介紹

雙邊濾波是一種可以保邊去噪的濾波器,主要是因為它的核比較特殊,公式(1)為它的調(diào)用公式,公式(2)為它的核公式,其中,大括號左邊公式為空間域小核,和高斯濾波器是一樣的,而大括號右邊公式為值域小核(f表示取其灰度值),而對于聯(lián)合雙邊濾波與雙邊濾波的區(qū)別主要在于值域小核所用到的圖片,如果所用到的圖片是引入的另外一幅圖像,那么就是在使用聯(lián)合雙邊濾波。

(1)

(2)

2.代碼

此代碼就是用聯(lián)合雙邊濾波簡單去一個噪聲

#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;
}

原圖:

噪聲圖:

導(dǎo)向圖片:

結(jié)果圖(去噪之后的圖片和原圖很接近呀)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于C語言實現(xiàn)簡單的12306火車售票系統(tǒng)

    基于C語言實現(xiàn)簡單的12306火車售票系統(tǒng)

    火車售票系統(tǒng)給我們的出行帶來了極大的方面,那么他基于編程是如何實現(xiàn)的呢?今天小編抽時間給大家分享一個使用C語言寫的一個簡單的火車票系統(tǒng),感興趣的朋友參考下
    2016-09-09
  • C++實現(xiàn)LeetCode(46.全排列)

    C++實現(xiàn)LeetCode(46.全排列)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(46.全排列),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt5代碼移植到Qt6的實現(xiàn)

    Qt5代碼移植到Qt6的實現(xiàn)

    本文主要介紹了Qt5代碼移植到Qt6的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳解C語言初階基礎(chǔ)(2)

    詳解C語言初階基礎(chǔ)(2)

    這篇文章主要介紹了C語言中的初階基礎(chǔ),介紹了其相關(guān)概念,具有一定參考價值。需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-11-11
  • C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)

    C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)

    C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)

    下面小編就為大家?guī)硪黄狢++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Qt實現(xiàn)實時鼠標(biāo)繪制圖形

    Qt實現(xiàn)實時鼠標(biāo)繪制圖形

    這篇文章主要介紹了Qt中QGraphicsView架構(gòu)下如何實現(xiàn)實時鼠標(biāo)繪制圖形,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動手試一試
    2022-02-02
  • C++實現(xiàn)LeetCode(154.尋找旋轉(zhuǎn)有序數(shù)組的最小值之二)

    C++實現(xiàn)LeetCode(154.尋找旋轉(zhuǎn)有序數(shù)組的最小值之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(154.尋找旋轉(zhuǎn)有序數(shù)組的最小值之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++中function的實現(xiàn)原理詳解

    C++中function的實現(xiàn)原理詳解

    類模版std::function是一種通用、多態(tài)的函數(shù)封裝。function的實例可以對任何可以調(diào)用的目標(biāo)實體進(jìn)行存儲、復(fù)制、和調(diào)用操作。本文主要聊聊它的實現(xiàn)原理,需要的可以參考一下
    2022-12-12
  • C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡(luò)

    C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡(luò)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡(luò),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論