溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++ OpenCV如何實現(xiàn)模糊圖像

發(fā)布時間:2021-11-26 10:01:59 來源:億速云 閱讀:382 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了C++ OpenCV如何實現(xiàn)模糊圖像,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

模糊圖像

圖像模糊是圖像處理中最常用的也是比較簡單的操作,使用該操作的原因之一就是為了給圖像預(yù)處理時隆低嗓聲.

卷積

就是疊加.卷積的重要的物理意義是:一個函數(shù)(如:單位響應(yīng))在另一個函數(shù)(如:輸入信號)上的加權(quán)疊加。

通俗的說:
在輸入信號的每個位置,疊加一個單位響應(yīng),就得到了輸出信號。
這正是單位響應(yīng)是如此重要的原因。

 

卷積的應(yīng)用

用一個模板和一幅圖像進(jìn)行卷積,對于圖像上的一個點(diǎn),讓模板的原點(diǎn)和該點(diǎn)重合,然后模板上的點(diǎn)和圖像上對應(yīng)的點(diǎn)相乘,然后各點(diǎn)的積相加,就得到了該點(diǎn)的卷積值。對圖像上的每個點(diǎn)都這樣處理。由于大多數(shù)模板都是對稱的,所以模板不旋轉(zhuǎn)。卷積是一種積分運(yùn)算,用來求兩個曲線重疊區(qū)域面積??梢钥醋骷訖?quán)求和,可以用來消除噪聲、特征增強(qiáng)。
把一個點(diǎn)的像素值用它周圍的點(diǎn)的像素值的加權(quán)平均代替。
卷積是一種線性運(yùn)算,圖像處理中常見的mask運(yùn)算都是卷積,廣泛應(yīng)用于圖像濾波。
卷積關(guān)系最重要的一種情況,就是在信號與線性系統(tǒng)或數(shù)字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運(yùn)算等價為頻率域的相乘運(yùn)算,從而利用FFT等快速算法,實現(xiàn)有效的計算,節(jié)省運(yùn)算代價

用圖片來說明

C++ OpenCV如何實現(xiàn)模糊圖像

OpenCV中自帶了4種模糊算法:

  • blur(均值模糊)

  • GaussianBlur(高斯模糊)

  • medianBlur(中值模糊)

  • bilateralFilter(雙邊濾波)

新建項目

新建一個項目opencv-0009,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.并加載我們常用的那個圖片顯示出來

C++ OpenCV如何實現(xiàn)模糊圖像


均值模糊

C++ OpenCV如何實現(xiàn)模糊圖像

增加一個函數(shù)blur()

C++ OpenCV如何實現(xiàn)模糊圖像

然后運(yùn)行效果

C++ OpenCV如何實現(xiàn)模糊圖像


高斯模糊

C++ OpenCV如何實現(xiàn)模糊圖像

我們增加一個方法GaussianBlur()

C++ OpenCV如何實現(xiàn)模糊圖像

我們把原來的均值模糊size改為9*9, 高斯模糊也用9*9,然后都顯示出來的效果

C++ OpenCV如何實現(xiàn)模糊圖像

最后邊的是高斯模糊,圖片上看不是非常清楚,其實如果仔細(xì)看對看出對比來,右邊的高斯模糊輪廓能明顯一些.


中值模糊

  • 中值是統(tǒng)計排序的濾波囂

  • 中值對椒鹽噪聲有很好的抑制作用

C++ OpenCV如何實現(xiàn)模糊圖像

中值模糊API

medianBlur(Mat src,Mat dst,ksize)

ksize大小必須是大于1而且必須是奇數(shù)

我們增加一個方法medianBlur()

C++ OpenCV如何實現(xiàn)模糊圖像

我們把ksize設(shè)為9,然后看顯示出來效果

C++ OpenCV如何實現(xiàn)模糊圖像

可以看出來最右邊是我們的中值模糊,整體模糊的比較平均.


雙邊模糊

雙邊模糊的特點(diǎn):

  • 均值模糊無法克服邊緣像素信息丟失缺陷,原因是均值濾波是基于平均權(quán)重.

  • 高斯模糊部分克服了該缺陷,但是無法完全避免,因為沒有考慮像素值的不同.

  • 高斯雙邊模糊,是邊緣保留的濾波方法,避免了邊緣信息丟失,保留了圖像輪廓不變.

雙邊模糊的API

bilateralFilter(src,dst,d=15,150,3); 

  • 15--計算的半徑,半徑之內(nèi)的像數(shù)都會被納入計算,如果提供-1,則根據(jù)sigma space的參數(shù)取值.

  • 150--sigma color,決定多少差值之內(nèi)的像素會被計算

  • 3--sigma space,如果d的值大于0則聲明無效,否則根據(jù)它來計算d值

我們增加一個方法bilateralFilter()

C++ OpenCV如何實現(xiàn)模糊圖像

因為我們的原圖色差不大,所以我們把值調(diào)的大了一點(diǎn),然后我們看看效果

C++ OpenCV如何實現(xiàn)模糊圖像

可以看到基本樣子沒變,只是把標(biāo)紅框的地方模糊了一下,輪廓還是非常明顯的

放大一點(diǎn)看一下

C++ OpenCV如何實現(xiàn)模糊圖像

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C++ OpenCV如何實現(xiàn)模糊圖像”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI