您好,登錄后才能下訂單哦!
這篇文章主要介紹了C++ OpenCV如何實現模糊圖像,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
模糊圖像
圖像模糊是圖像處理中最常用的也是比較簡單的操作,使用該操作的原因之一就是為了給圖像預處理時隆低嗓聲.
卷積
就是疊加.卷積的重要的物理意義是:一個函數(如:單位響應)在另一個函數(如:輸入信號)上的加權疊加。
通俗的說:
在輸入信號的每個位置,疊加一個單位響應,就得到了輸出信號。
這正是單位響應是如此重要的原因。
卷積的應用
用一個模板和一幅圖像進行卷積,對于圖像上的一個點,讓模板的原點和該點重合,然后模板上的點和圖像上對應的點相乘,然后各點的積相加,就得到了該點的卷積值。對圖像上的每個點都這樣處理。由于大多數模板都是對稱的,所以模板不旋轉。卷積是一種積分運算,用來求兩個曲線重疊區域面積。可以看作加權求和,可以用來消除噪聲、特征增強。
把一個點的像素值用它周圍的點的像素值的加權平均代替。
卷積是一種線性運算,圖像處理中常見的mask運算都是卷積,廣泛應用于圖像濾波。
卷積關系最重要的一種情況,就是在信號與線性系統或數字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運算等價為頻率域的相乘運算,從而利用FFT等快速算法,實現有效的計算,節省運算代價
用圖片來說明
OpenCV中自帶了4種模糊算法:
blur(均值模糊)
GaussianBlur(高斯模糊)
medianBlur(中值模糊)
bilateralFilter(雙邊濾波)
新建項目
新建一個項目opencv-0009,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.并加載我們常用的那個圖片顯示出來
均值模糊
增加一個函數blur()
然后運行效果
高斯模糊
我們增加一個方法GaussianBlur()
我們把原來的均值模糊size改為9*9, 高斯模糊也用9*9,然后都顯示出來的效果
最后邊的是高斯模糊,圖片上看不是非常清楚,其實如果仔細看對看出對比來,右邊的高斯模糊輪廓能明顯一些.
中值模糊
中值是統計排序的濾波囂
中值對椒鹽噪聲有很好的抑制作用
中值模糊API
medianBlur(Mat src,Mat dst,ksize)
ksize大小必須是大于1而且必須是奇數
我們增加一個方法medianBlur()
我們把ksize設為9,然后看顯示出來效果
可以看出來最右邊是我們的中值模糊,整體模糊的比較平均.
雙邊模糊
雙邊模糊的特點:
均值模糊無法克服邊緣像素信息丟失缺陷,原因是均值濾波是基于平均權重.
高斯模糊部分克服了該缺陷,但是無法完全避免,因為沒有考慮像素值的不同.
高斯雙邊模糊,是邊緣保留的濾波方法,避免了邊緣信息丟失,保留了圖像輪廓不變.
雙邊模糊的API
bilateralFilter(src,dst,d=15,150,3);
15--計算的半徑,半徑之內的像數都會被納入計算,如果提供-1,則根據sigma space的參數取值.
150--sigma color,決定多少差值之內的像素會被計算
3--sigma space,如果d的值大于0則聲明無效,否則根據它來計算d值
我們增加一個方法bilateralFilter()
因為我們的原圖色差不大,所以我們把值調的大了一點,然后我們看看效果
可以看到基本樣子沒變,只是把標紅框的地方模糊了一下,輪廓還是非常明顯的
放大一點看一下
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C++ OpenCV如何實現模糊圖像”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。