Opencv實(shí)現(xiàn)聯(lián)合雙邊濾波
本文實(shí)例為大家分享了Opencv實(shí)現(xiàn)聯(lián)合雙邊濾波的具體代碼,供大家參考,具體內(nèi)容如下
1.介紹
雙邊濾波是一種可以保邊去噪的濾波器,主要是因?yàn)樗暮吮容^特殊,公式(1)為它的調(diào)用公式,公式(2)為它的核公式,其中,大括號(hào)左邊公式為空間域小核,和高斯濾波器是一樣的,而大括號(hào)右邊公式為值域小核(f表示取其灰度值),而對(duì)于聯(lián)合雙邊濾波與雙邊濾波的區(qū)別主要在于值域小核所用到的圖片,如果所用到的圖片是引入的另外一幅圖像,那么就是在使用聯(lián)合雙邊濾波。
(1)
(2)
2.代碼
此代碼就是用聯(lián)合雙邊濾波簡(jiǎn)單去一個(gè)噪聲
#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++) { //隨機(jī)取值行列 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++) { //隨機(jī)取值行列 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é)果圖(去噪之后的圖片和原圖很接近呀)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12C++實(shí)現(xiàn)歸并排序(MergeSort)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)歸并排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04C語(yǔ)言 while for do while循環(huán)體詳解用法
在不少實(shí)際問題中有許多具有規(guī)律性的重復(fù)操作,因此在程序中就需要重復(fù)執(zhí)行某些語(yǔ)句。一組被重復(fù)執(zhí)行的語(yǔ)句稱之為循環(huán)體,能否繼續(xù)重復(fù),決定循環(huán)的終止條件2021-10-10C語(yǔ)言實(shí)現(xiàn)數(shù)字雨效果
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)字雨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02C++ OpenCV制作黑客帝國(guó)風(fēng)格的照片
這篇文章主要介紹了如何通過C++ OpenCV制作出黑客帝國(guó)風(fēng)格的照片,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定幫助,需要的可以參考一下2022-01-01C語(yǔ)言實(shí)現(xiàn)數(shù)組移位、前移、后移與整體移動(dòng)實(shí)例代碼
C語(yǔ)言中通??梢允褂醚h(huán)語(yǔ)句實(shí)現(xiàn)數(shù)組的移動(dòng),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言實(shí)現(xiàn)數(shù)組移位、前移、后移與整體移動(dòng)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03C++實(shí)現(xiàn)通訊錄系統(tǒng)項(xiàng)目實(shí)戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄系統(tǒng)項(xiàng)目實(shí)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06