產品分類

      當前位置: 首頁 > 工業電氣產品 > 高低壓電器 > 電加熱器 > 電阻加熱器

      類型分類:
      科普知識
      數據分類:
      電阻加熱器

      OpenCV-Python系列之線性濾波

      發布日期:2022-10-18 點擊率:53

      本次教程將介紹幾種OpenCV常用的濾波器,將介紹它們詳細的原理,圖像濾波對于OpenCV圖像處理來說是至關重要的一環,它在整個OpenCV中的分量是舉足輕重的,我們必須完全掌握它。

      圖像濾波,即在盡量保留圖像細節特征的條件下對目標圖像的噪聲進行抑制,是圖像預處理中不可缺少的操作,其處理效果的好壞將直接影響到后續圖像處理和分析的有效性和可靠性。
        消除圖像中的噪聲成分叫作圖像的平滑化或濾波操作。信號或圖像的能量大部分集中在幅度譜的低頻和中頻段是很常見的,而在較高頻段,感興趣的信息經常被噪聲淹沒。因此一個能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。

      圖像濾波的目的有兩個:

      一是抽出對象的特征作為圖像識別的特征模式;

      另一個是為適應圖像處理的要求,消除圖像數字化時所混入的噪聲。
      而對濾波處理的要求也有兩條:

      一是不能損壞圖像的輪廓及邊緣等重要信息;

      二是使圖像清晰視覺效果好。
      平滑濾波是低頻增強的空間域濾波技術。它的目的有兩類:

      一類是模糊;

      一類是消除噪音。
        空間域的平滑濾波一般采用簡單平均法進行,就是求鄰近像元點的平均亮度值。鄰域的大小與平滑的效果直接相關,鄰域越大平滑的效果越好,但鄰域過大,平滑會使邊緣信息損失的越大,從而使輸出的圖像變得模糊,因此需合理選擇鄰域的大小。
        關于濾波器,一種形象的比喻法是:我們可以把濾波器想象成一個包含加權系數的窗口,當使用這個濾波器平滑處理圖像時,就把這個窗口放到圖像之上,透過這個窗口來看我們得到的圖像。

      原理

      鄰域算子(局部算子)是利用給定像素周圍的像素值的決定此像素的最終輸出值的一種算子。而線性鄰域濾波是一種常用的鄰域算子,像素的輸出值取決于輸入像素的加權和,具體過程如下圖:

      射頻, RF, 濾波

      左邊圖像與中間圖像的卷積產生右邊圖像。目標圖像中藍色標記的像素是利用原圖像中紅色標記的像素計算得到的。

      鄰域算子除了用于局部色調調整以外,還可以用于圖像濾波,實現圖像的平滑和銳化,圖像邊緣增強或者圖像噪聲的去除。本篇文章,我們介紹的主角是線性鄰域濾波算子,即用不同的權重去結合一個小鄰域內的像素,來得到應有的處理效果。

      線性濾波處理的輸出像素值射頻, RF, 濾波是輸入像素值<img alt="射頻," rf,="" 濾波"="" data-cke-saved-src="https://upload.semidata.info/sns.eefocus.com/rf/article/media/2022/08/05/360411.png" src="https://upload.semidata.info/sns.eefocus.com/rf/article/media/2022/08/05/360411.png">的加權和 :

      射頻, RF, 濾波

      其中的加權和我們稱其為“核”,濾波器的加權系數,即濾波器的“濾波系數”。

      上面的式子可以簡單寫作:

      射頻, RF, 濾波

      其中f表示輸入像素值,h表示加權系數“核“,g表示輸出像素值

      在新版本的OpenCV中,提供了如下三種常用的線性濾波操作,他們分別被封裝在單獨的函數中,使用起來非常方便: 

      1     均值濾波——blur函數

      2     方框濾波——boxblur函數

      3     高斯濾波——GaussianBlur函數

      均值濾波器

      均值濾波器是一種低通濾波器,也是線性濾波器。對于一幅圖像,我們都知道其像素值在0-255,通常來講,濾波器所用的一個濾波模板都為奇數,這里我們以3*3為例:

      射頻, RF, 濾波

      中間黃色部分即為濾波器的模板(卷積核),其將用于與圖像進行卷積進而濾波,對于均值濾波器,顧名思義,其像素點為中間九個像素值的均值,從而將整個圖像的像素用這個均值像素代替:

      射頻, RF, 濾波

      函數原型:
             dst=cv.blur(src,ksize [,dst [,anchor [,borderType]]])

      其中第一個參數為輸入的圖像,第二個參數為卷積核的大小,后面的我們都采用默認值就可以。

      給出示例代碼:

       

      view plaincopy to clipboardprint?

      import cv2  

       

      import matplotlib.pyplot as plt  

      import numpy as np  

        

      img = cv2.imread("cat.jpg")  

      blur = cv2.blur(img,(5,5))  

      cv2.imshow("org",img)  

      cv2.imshow("result", blur)  

      cv2.waitKey(0)  

      cv2.destroyAllWindows()  

      射頻, RF, 濾波

      缺陷:均值濾波本身存在著固有的缺陷,即它不能很好地保護圖像細節,在圖像去噪的同時也破壞了圖像的細節部分,從而使圖像變得模糊,不能很好地去除噪聲點。特別是椒鹽噪聲

      方框濾波器

      事實上,方框濾波器與均值濾波器是基本上一樣的,我們直接看源碼:

       

      view plaincopy to clipboardprint?

      import cv2  

       

      import matplotlib.pyplot as plt  

      import numpy as np  

        

      img = cv2.imread("shu.jpg")  

      blur = cv2.boxFilter(img,-1,(3,3),normalize=False)  

      cv2.imshow("org",img)  

      cv2.imshow("result", blur)  

      cv2.waitKey(0)  

      cv2.destroyAllWindows()  

       

      boxFilter則為i方框濾波函數,當

       

      view plaincopy to clipboardprint?

      normalize=True  

       

      它就完全相當于是一個均值濾波器,濾波像素值計算方法也是均值計算,如圖:

      射頻, RF, 濾波

      但是當

       

      view plaincopy to clipboardprint?

      normalize=False  

       

      其并非均值,而是卷積核中所有的像素值相加,不除9,那么對于大于255的值,它會全取255進行代替,如圖:

      射頻, RF, 濾波

      高斯濾波

      高斯濾波是一種線性平滑濾波,適用于消除高斯噪聲,廣泛應用于圖像處理的減噪過程。通俗的講,高斯濾波就是對整幅圖像進行加權平均的過程,每一個像素點的值,都由其本身和鄰域內的其他像素值經過加權平均后得到。高斯濾波的具體操作是:用一個模板(或稱卷積、掩模)掃描圖像中的每一個像素,用模板確定的鄰域內像素的加權平均灰度值去替代模板中心像素點的值

      先來了解一下高斯函數,高斯分布函數指的就是概率論中的正態分布的概率密度函數,均值μ=0時的一維形式和二維形式如下。 其中σ為正態分布的標準偏差,其值決定了函數的衰減快慢。

      射頻, RF, 濾波

      射頻, RF, 濾波

      從這兩個公式不難看出,二維公式其實等于兩個一維函數相乘。從概率論角度看,因為隨機變量X,Y是相互獨立的,那么他們的聯合概率密度就等于邊緣概率密度之積。這個特性是非常重要的,現在讓我們先看一下高斯函數的圖像分布與二維高斯卷積核的樣子:

      射頻, RF, 濾波

      射頻, RF, 濾波

      圖像上,靠近原點的位置地勢高,距離原點越遠則地勢越低。相應地,卷積核也是中心數值最大,并向四周減小,減小的幅度并不是隨意的,而是要求整個卷積核近似高斯函數的圖像。由于高斯濾波實質是一種加權平均濾波,為了實現平均,核還帶有一個系數,例如上圖中的十六分之一、八十四分之一,這些系數等于矩陣中所有數值之和的倒數。

      可能有人看不太懂,我簡單解釋一下高斯濾波的原理,以下面那個數字圖為例:

      射頻, RF, 濾波

      假設中間的204為中心點,高斯濾波的原理就是距離中心點最近其權重系數越大,就類似這樣一個圖:

      射頻, RF, 濾波

      那么距離204越近則其權重系數越大,它跟均值濾波還是有很大不同的,均值濾波對于204周圍的75和24這兩個較小值非常的不友好,會導致誤差較大。但是高斯濾波表示,離我近的,吃嘛嘛香,離我遠的,說話分量就沒有那么重了,不管你值有多大或者多小。我們看一下函數原型:

      GaussianBlur(src,ksize,sigmaX [,dst [,sigmaY [,borderType]]])-> dst

      ——src輸入圖像;圖像可以具有任意數量的通道,這些通道可以獨立處理,但深度應為CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。

      ——dst輸出圖像的大小和類型與src相同。

      ——ksize高斯內核大小。 ksize.width和ksize.height可以不同,但它們都必須為正數和奇數,也可以為零,然后根據sigma計算得出。

      ——sigmaX X方向上的高斯核標準偏差。

      ——sigmaY Y方向上的高斯核標準差;如果sigmaY為零,則將其設置為等于sigmaX;如果兩個sigmas為零,則分別從ksize.width和ksize.height計算得出;為了完全控制結果,而不管將來可能對所有這些語義進行的修改,建議指定所有ksize,sigmaX和sigmaY。

      我們來看代碼:

       

      view plaincopy to clipboardprint?

      import cv2  

       

      import matplotlib.pyplot as plt  

      import numpy as np  

        

      img = cv2.imread("shu.jpg")  

      blur =  cv2.GaussianBlur(img,(3,3),0)  

      cv2.imshow("org",img)  

      cv2.imshow("result", blur)  

      cv2.waitKey(0)  

      cv2.destroyAllWindows()  

      射頻, RF, 濾波

      我們可以看到,三種線性濾波器都無法很好的去除圖片中的椒鹽噪聲,而要想去除椒鹽噪聲,我們需要用非線性濾波器,這將在下次介紹。現在我們來總結一下這三種濾波器:

      射頻, RF, 濾波

       

      下一篇: PLC、DCS、FCS三大控

      上一篇: 一款應用于Wi-Fi?6E設

      推薦產品

      更多
      主站蜘蛛池模板: 91久久精品国产免费一区| 成人影片一区免费观看| 亚洲V无码一区二区三区四区观看| 国产精品99精品一区二区三区| 波多野结衣电影区一区二区三区 | 日本一区二区在线免费观看| 日本在线视频一区二区| 免费播放一区二区三区| 国产高清不卡一区二区| 本免费AV无码专区一区| 中文字幕在线播放一区| 亚洲AⅤ无码一区二区三区在线 | 国产精品福利一区二区| 亚洲一区中文字幕久久| 人妻少妇精品视频一区二区三区 | 国产一区二区在线观看麻豆| 亚洲另类无码一区二区三区| 中文字幕无码不卡一区二区三区| 无码毛片视频一区二区本码| 日本在线不卡一区| 国产精品日本一区二区不卡视频| 久久se精品一区精品二区| 亚洲国产综合无码一区| 国产综合一区二区在线观看| 久久久久一区二区三区| 精品视频一区二区三区在线观看| 国产一区二区中文字幕| 无码一区二区三区视频| 亚洲一区中文字幕在线观看| 精品人妻一区二区三区浪潮在线| 2018高清国产一区二区三区 | 国偷自产一区二区免费视频| 少妇激情AV一区二区三区| 中文字幕一区二区三区5566| 亚洲欧美日韩一区二区三区在线| 亚洲av色香蕉一区二区三区蜜桃 | 日本一区二区视频| 狠狠综合久久av一区二区| 亚洲AV永久无码精品一区二区国产 | 无码日韩精品一区二区免费| 成人毛片无码一区二区|