Opencv實現(xiàn)聯(lián)合雙邊濾波
本文實例為大家分享了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)
火車售票系統(tǒng)給我們的出行帶來了極大的方面,那么他基于編程是如何實現(xiàn)的呢?今天小編抽時間給大家分享一個使用C語言寫的一個簡單的火車票系統(tǒng),感興趣的朋友參考下2016-09-09C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)
這篇文章主要介紹了C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)
下面小編就為大家?guī)硪黄狢++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12C++實現(xiàn)LeetCode(154.尋找旋轉(zhuǎn)有序數(shù)組的最小值之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(154.尋找旋轉(zhuǎn)有序數(shù)組的最小值之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡(luò)
這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡(luò),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05