国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【圖像處理OpenCV(C++版)】——5.2 圖像平滑之高斯平滑

這篇具有很好參考價(jià)值的文章主要介紹了【圖像處理OpenCV(C++版)】——5.2 圖像平滑之高斯平滑。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

??????歡迎來到本博客??????

?????? 本專欄主要結(jié)合OpenCV和C++來實(shí)現(xiàn)一些基本的圖像處理算法并詳細(xì)解釋各參數(shù)含義,適用于平時(shí)學(xué)習(xí)、工作快速查詢等,隨時(shí)更新。

?????? 具體食用方式:可以點(diǎn)擊本專欄【OpenCV快速查找(更新中)】–>搜索你要查詢的算子名稱或相關(guān)知識(shí)點(diǎn),或者通過這篇博客??通俗易懂OpenCV(C++版)詳細(xì)教程——OpenCV函數(shù)快速查找(不斷更新中)]查閱你想知道的知識(shí),即可食用。

??????支持:如果覺得博主的文章還不錯(cuò)或者您用得到的話,可以悄悄關(guān)注一下博主哈,如果三連收藏支持就更好啦!這就是給予我最大的支持!??????


學(xué)習(xí)目標(biāo)

  • 了解高斯平滑含義
  • 熟悉高斯卷積核的構(gòu)建及分離
  • C++實(shí)現(xiàn)高斯平滑案例

??每一張圖像都可能包含某種程度的噪聲,噪聲可以理解為由一種或者多種原因造成的灰度值的隨機(jī)變化。
??在大多數(shù)情況下,通過平滑技術(shù)(也常稱為濾波技術(shù))進(jìn)行抑制或者去除,其中具備保持邊緣(Edge Preserving)作用的平滑技術(shù)得到了更多的關(guān)注。
??常用的平滑處理算法包括基于二維離散卷積高斯平滑、均值平滑,基于統(tǒng)計(jì)學(xué)方法的中值平滑,具備保持邊緣作用的平滑算法的雙邊濾波、導(dǎo)向?yàn)V波等。

??下面將詳細(xì)介紹高斯平滑技術(shù)原理、常見應(yīng)用及實(shí)現(xiàn)。


一、高斯卷積核的構(gòu)建及分離性

1.1 相關(guān)概念

??假設(shè)構(gòu)造寬(列數(shù))為W、高(行數(shù))為H的高斯卷積算子gaussKernelH×WWH均為奇數(shù),錨點(diǎn)(中心點(diǎn))位置為:[(H-1)/2,(w-1)/2],則:
????(1) 計(jì)算高斯矩陣

高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺
其中:
高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺
r(rows)、c(cols)代表位置索引,其中0≤c≤W-1,0≤r≤H-1,且r,c均為整數(shù)。

????(2) 計(jì)算高斯矩陣的和

高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺

????(3) 高斯矩陣除以其本身的和,即歸一化,得到的便是高斯卷積算子

高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺

1.2 高斯卷積算子是可分離卷積核

??在計(jì)算高斯矩陣過程中:

高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺

??高斯卷積核可分離成一維水平方向上的高斯核和一維垂直方向上的高斯核,或者反過來,即:

高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺

??基于這種分離性,OpenCV給出了構(gòu)建一維垂直方向上的高斯卷積核的函數(shù)

Mat cv::getGaussianKernel(int ksize,
						double 	sigma,
						int ktype = CV_64F )	
參數(shù) 解釋
ksize 一維垂直方向上高斯核的行數(shù),必須為正奇數(shù)
sigma 標(biāo)準(zhǔn)差,若不設(shè)置,即sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8
ktype 返回值的數(shù)據(jù)類型,CV_32F或者為CV_64F,默認(rèn)CV_64F

??返回值就是一個(gè)ksize×1的垂直方向上的高斯核,而對(duì)于一維水平方向上的高斯核,只需對(duì)垂直方向上的高斯核進(jìn)行轉(zhuǎn)置即可。


二、C++實(shí)現(xiàn)

??因?yàn)楦咚咕矸e核是可分離的,所以可以通過定義可分離卷積函數(shù)sepConv2D_Y_X (此處用sepFilter2D代替)來實(shí)現(xiàn)圖像的高斯平滑:

cv::Mat gaussBlur(const Mat &image,Size winsize,float sigma,int ddepth=CV_64F,Point anchor=Point(-1,-1),int boderType=BORDER_DEFAULT) {
	//卷積核的寬高須為正基數(shù)
	CV_Assert(winsize.width % 2 ==1 && winsize.height % 2 == 1);
	
	//構(gòu)建垂直方向上的高斯核
	Mat gK_y = getGaussianKernel(winsize.height,sigma,CV_64F);
	
	//構(gòu)建水平方向上的高斯核
	Mat gK_x = getGaussianKernel(winsize.width, sigma, CV_64F);
	
	//轉(zhuǎn)置
	gK_x = gK_x.t();

	//分離高斯卷積
	Mat BlurImage;
	Mat gK_y = getGaussianKernel(winsize.height,sigma,CV_64F);
	//sepConv2D_Y_X
	sepFilter2D(image,BlurImage, ddepth, gK_y, gK_x, Point(-1, -1));
	
	return BlurImage;

}

??OpenCV提供了高斯平滑函數(shù):


void cv::GaussianBlur(InputArray src,
	OutputArray dst,
	Size ksize,
	double sigmaX,
	double sigmaY = 0,
	int borderType = BORDER_DEFAULT 
)	
參數(shù) 解釋
src 輸入矩陣,支持?jǐn)?shù)據(jù)類型為:CV_8U, CV_16U, CV_16S, CV_32F or CV_64F
dst 輸出矩陣,大小與數(shù)據(jù)類型同src一致
ksize 高斯核大小,寬高均為正奇數(shù),寬高可不相同
sigmaX 一維水平方向上高斯核的標(biāo)準(zhǔn)差
sigmaY 一維垂直方向上高斯核的標(biāo)準(zhǔn)差。若sigmaY為0,則將它設(shè)置為等于 sigmaX(即:sigmaY=sigmaX);如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height計(jì)算出來(計(jì)算方式可以查閱上面getGaussianKernel(),建議指定所有參數(shù)值
borderType 邊界擴(kuò)充方式,默認(rèn)BORDER_DEFAULT

注:邊界擴(kuò)充說明

高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺

??從參數(shù)的設(shè)置可以看出,GaussianBlur()也是通過分離的高斯卷積核實(shí)現(xiàn)的,也可以令水平方向和垂直方向上的標(biāo)準(zhǔn)差不相同,但是一般會(huì)取相同的標(biāo)準(zhǔn)差。
??當(dāng)平滑窗口比較小時(shí),對(duì)標(biāo)準(zhǔn)差的變化不是很敏感,得到的高斯平滑效果差別不大;相反,當(dāng)平滑窗口較大時(shí),對(duì)標(biāo)準(zhǔn)差的變化很敏感,得到的高斯平滑效果差別較大。


三、 總結(jié)

??最后,長(zhǎng)話短說,大家看完就好好動(dòng)手實(shí)踐一下,切記不能三分鐘熱度、三天打魚,兩天曬網(wǎng)。OpenCV是學(xué)習(xí)圖像處理理論知識(shí)比較好的一個(gè)途徑,大家也可以自己嘗試寫寫博客,來記錄大家平時(shí)學(xué)習(xí)的進(jìn)度,可以和網(wǎng)上眾多學(xué)者一起交流、探討,有什么問題希望大家可以積極評(píng)論交流,我也會(huì)及時(shí)更新,來督促自己學(xué)習(xí)進(jìn)度。希望大家覺得不錯(cuò)的可以點(diǎn)贊、關(guān)注、收藏。文章來源地址http://www.zghlxwxcb.cn/news/detail-610533.html


?????? 今天的文章就到這里啦~
喜歡的話,點(diǎn)贊??、收藏??、關(guān)注??哦 ~
高斯平滑,# OpenCV(C++),opencv,圖像處理,c++,算法,計(jì)算機(jī)視覺

到了這里,關(guān)于【圖像處理OpenCV(C++版)】——5.2 圖像平滑之高斯平滑的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【圖像處理OpenCV(C++版)】——5.3 圖像平滑之均值平滑(濾波)

    【圖像處理OpenCV(C++版)】——5.3 圖像平滑之均值平滑(濾波)

    前言 : ?????? 歡迎來到本博客 ?????? ?????? 本專欄主要結(jié)合OpenCV和C++來實(shí)現(xiàn)一些基本的圖像處理算法并詳細(xì)解釋各參數(shù)含義,適用于平時(shí)學(xué)習(xí)、工作快速查詢等,隨時(shí)更新。 ?????? 具體食用方式:可以點(diǎn)擊本專欄【OpenCV快速查找(更新中)】–搜索你要查詢的算子

    2024年02月04日
    瀏覽(27)
  • 【OpenCV】第七章: 圖像平滑處理

    【OpenCV】第七章: 圖像平滑處理

    第七章: 圖像平滑處理 1、什么是圖像平滑處理 圖像平滑處理就是,將圖像中與 周圍像素點(diǎn)的像素值差異較大的像素點(diǎn) 調(diào)整成 和周圍像素點(diǎn)像素值 相近的值。 例如: 2、為什么要進(jìn)行平滑處理? 因?yàn)閳D像在采集(生成)、傳輸、處理的過程中常常會(huì)存在一定的噪聲干擾,比如

    2024年02月03日
    瀏覽(23)
  • Python-OpenCV中的圖像處理-圖像平滑

    Python-OpenCV中的圖像處理-圖像平滑

    使用低通濾波器可以達(dá)到圖像模糊的目的。這對(duì)與去除噪音很有幫助。其實(shí)就是去除圖像中的高頻成分(比如:噪音,邊界)。所以邊界也會(huì)被模糊一點(diǎn)。(當(dāng)然,也有一些模糊技術(shù)不會(huì)模糊掉邊界)。 這是由一個(gè)歸一化卷積框完成的。他只是用卷積框覆蓋區(qū)域所有像素的平

    2024年02月13日
    瀏覽(23)
  • 第五章 Opencv圖像處理框架實(shí)戰(zhàn) 5-3 圖像閾值與平滑處理

    第五章 Opencv圖像處理框架實(shí)戰(zhàn) 5-3 圖像閾值與平滑處理

    ret, dst = cv2.threshold(src, thresh, maxval, type) src: 輸入圖,只能輸入單通道圖像,通常來說為灰度圖 dst: 輸出圖 thresh: 閾值 maxval: 當(dāng)像素值超過了閾值(或者小于閾值,根據(jù)type來決定),所賦予的值 type:二值化操作的類型,包含以下5種類型: cv2.THRESH_BINARY; cv2.THRESH_BINARY

    2024年02月14日
    瀏覽(26)
  • 【OpenCV ? c++】圖像平滑處理(1) —— 線性濾波

    【OpenCV ? c++】圖像平滑處理(1) —— 線性濾波

    ??平滑處理也稱為模糊處理,是一種簡(jiǎn)單且使用頻率很高的圖像處理方法,平滑處理的用途有很多,最常見的是用來減少圖像上的噪點(diǎn)或者失真。在涉及到降低圖像分辨率時(shí),平滑處理是非常好用的方法。 ??圖像濾波指的是在盡量保留圖像細(xì)節(jié)特征的條件下對(duì)圖像的噪音

    2024年03月20日
    瀏覽(25)
  • 【圖像處理OpenCV(C++版)】——5.5 圖像平滑之雙邊濾波

    【圖像處理OpenCV(C++版)】——5.5 圖像平滑之雙邊濾波

    前言 : ?????? 歡迎來到本博客 ?????? ?????? 本專欄主要結(jié)合OpenCV和C++來實(shí)現(xiàn)一些基本的圖像處理算法并詳細(xì)解釋各參數(shù)含義,適用于平時(shí)學(xué)習(xí)、工作快速查詢等,隨時(shí)更新。 ?????? 具體食用方式:可以點(diǎn)擊本專欄【OpenCV快速查找(更新中)】–搜索你要查詢的算子

    2024年02月13日
    瀏覽(23)
  • 計(jì)算機(jī)圖形圖像技術(shù)(OpenCV核心功能、圖像變換與圖像平滑處理)

    計(jì)算機(jī)圖形圖像技術(shù)(OpenCV核心功能、圖像變換與圖像平滑處理)

    1、顯示圖像 ①功能:在指定窗口中顯示圖像。 ②參數(shù): name 為窗口的名字; image 為待顯示的圖像。 ③說明:可顯示彩色或灰度的字節(jié)圖像和浮點(diǎn)數(shù)圖像,彩色圖像數(shù)據(jù)按BGR順序存儲(chǔ)。 2、讀入圖像 ①功能:從指定文件讀入圖像。 ②參數(shù): filename 為圖像文件名,支持BMP、

    2024年02月03日
    瀏覽(32)
  • opencv-34 圖像平滑處理-雙邊濾波cv2.bilateralFilter()

    opencv-34 圖像平滑處理-雙邊濾波cv2.bilateralFilter()

    雙邊濾波(BilateralFiltering)是一種圖像處理濾波技術(shù),用于平滑圖像并同時(shí)保留邊緣信息。與其他傳統(tǒng)的線性濾波方法不同,雙邊濾波在考慮像素之間的空間距離之外,還考慮了像素之間的灰度值相似性。這使得雙邊濾波能夠有效地去除噪聲,同時(shí)保持圖像的細(xì)節(jié)和邊緣。

    2024年02月14日
    瀏覽(23)
  • opencv 31-圖像平滑處理-方框?yàn)V波cv2.boxFilter()

    opencv 31-圖像平滑處理-方框?yàn)V波cv2.boxFilter()

    方框?yàn)V波(Box Filtering)是一種簡(jiǎn)單的圖像平滑處理方法,它主要用于去除圖像中的噪聲和減少細(xì)節(jié),同時(shí)保持圖像的整體亮度分布。 方框?yàn)V波的原理很簡(jiǎn)單:對(duì)于圖像中的每個(gè)像素,將其周圍的一個(gè)固定大小的鄰域內(nèi)的像素值取平均,然后將這個(gè)平均值賦值給當(dāng)前像素。這

    2024年02月14日
    瀏覽(19)
  • opencv 30 -圖像平滑處理01-均值濾波 cv2.blur()

    opencv 30 -圖像平滑處理01-均值濾波 cv2.blur()

    圖像平滑處理(Image Smoothing)是一種圖像處理技術(shù),旨在減少圖像中的噪聲、去除細(xì)節(jié)并平滑圖像的過渡部分。這種處理常用于預(yù)處理圖像,以便在后續(xù)圖像處理任務(wù)中獲得更好的結(jié)果。 常用的圖像平滑處理方法包括: 均值濾波(Mean Filtering) :用圖像中像素周圍區(qū)域的平

    2024年02月01日
    瀏覽(88)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包