opencv-python圖像預處理-濾波

2021-01-11 青楓流雲

為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。

使用的方法可以分為空間域處理和頻率域處理兩類。

空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。

頻率域是指從函數的頻率角度出發分析函數,對圖像進行傅立葉變換可以將圖像由圖像空間轉換到頻域空間,然後在頻率域中對圖像的頻譜作分析處理,以改變圖像的頻率特徵。

空間域與頻率域是兩種不同的技術,都可以實現對圖像的濾波、增強,只是有些處理方式更適合在空間域完成,而有些則更適合在頻率域中完成。

頻率域的理解、使用還是很很困難的,需要深厚的數學功底,我也不是特別明白,以後的示例主要是圖像在空間域的處理。

圖像濾波(模糊)

濾波也叫模糊,下面是opencv中常見的五種濾波方法,先看一下濾波前後的效果。

# -*- coding: utf-8 -*-

"""

運行環境 python==3.6 opencv-contrib-python== 4.1 win10系統

第一行 「 # -*- coding: utf-8 -*- 」 告訴Python解釋器,按照UTF-8編碼讀取原始碼

"""

dir1="lena.jpg"

img1=cv2.imread(dir1) #讀入圖片

#

#2D濾波 ,2D卷積就是自定義構造一個核

#構建一個卷積核5*5

kernel=np.ones((5,5),np.float32)/25 # 除以25是防止數值溢出

filter2D=cv2.filter2D(img1,-1,kernel)

cv2.imshow("filter2D", filter2D)

#

#中值模糊

#中值濾波法是一種非線性平滑技術,對椒鹽噪聲有很好的去燥效果

medianBlur=cv2.medianBlur(img1,5)

cv2.imshow("medianBlur", medianBlur)

#

#均值模糊

#均值濾波是典型的線性濾波算法,去隨機噪聲有很好的去噪效果

#dst=cv2.blur(img1, (1, 5)) #(1, 15)是垂直方向模糊,(15, 1)還水平方向模糊

#dst=cv2.blur(img1, (5, 1)) #(1, 15)是垂直方向模糊,(15, 1)還水平方向模糊

blur=cv2.blur(dst,(5,5)) #兩個方向模糊

cv2.imshow("blur", blur)

#

#高斯模糊

#保留圖像的主要特徵 輪廓 高斯模糊比均值模糊去噪效果好

GaussianBlur=cv2.GaussianBlur(img1,(5,5),0)

cv2.imshow("GaussianBlur", GaussianBlur)

#

#雙邊濾波 ,保留邊緣

# Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst

#src:輸入圖像

#d:過濾時周圍每個像素領域的直徑

#sigmaColor:在color space中過濾sigma。參數越大,臨近像素將會在越遠的地方mix。

#sigmaSpace:在coordinate space中過濾sigma。參數越大,那些顏色足夠相近的的顏色的影響越大。

bilateralFilter = cv2.bilateralFilter(img1,13,75,75)

cv2.imshow("bilateralFilter", bilateralFilter)

#

cv2.waitKey(0)

cv2.destroyAllWindows()

濾波方法還有很多,具體選擇哪種方法要根據實際圖像確定,參數需要不斷的調整,濾波效果好的圖像,有利於後續的圖像處理。

相關焦點

  • 【數字圖像處理系列五】圖像濾波之空間濾波:圖像平滑降噪和圖像銳化
    python版本:python3.5.4 ; opencv-python版本:opencv-python3.4.2.17
  • opencv-python獲取圖像:面向對象與面向過程
    這裡需要注意以下,opencv讀取圖片默認通道為BGR的格式,當在其他UI用戶界面顯示圖像時注意轉換一下通道順序,例如BGR轉換成RGB:Image1=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)下面讀取一張圖片並顯示
  • 基於opencv 的圖像處理入門教程
    /代碼和樣例圖片的地址:https://github.com/ccc013/CodesNotes/tree/master/opencv_noteshttps://github.com/ccc013/CodesNotes/blob/master/opencv_notes/opencv_image_process_tutorial.ipynb
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹利用OpenCV構建車輛檢測系統視頻中運動目標檢測的思想目標檢測是計算機視覺中一個引人入勝的領域。
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。
  • 如何快速簡單的安裝opencv-python
    這樣就會從清華鏡像安裝opencv-contrib-python庫。目前opencv最新版本為4.1.1 ----2019-8-28在opencv-contrib-python 版本中含有額外模塊( Extra modules ),而 opencv-python 版本中只含有基礎模塊。
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 「python opencv視覺零基礎」十、圖片效果毛玻璃
    一、學習目標了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 圖像各向異性濾波
    對圖像來說各向異性就是在每個像素點周圍四個方向上梯度變化都不一樣,濾波的時候我們要考慮圖像的各向異性對圖像的影響,而各向同性顯然是說各個方向的值都一致,常見的圖像均值或者高斯均值濾波可以看成是各向同性濾波。
  • ImagePy——UI界面支持開放插件的Python開源圖像處理框架
    ImagePy 是一款基於 imagej 等插件的圖像處理框架,它可以與 scipy.ndimage、scikit-image、opencv、simpleitk、mayavi 以及任何基於 numpy 的庫進行組合使用,其地址為 http://imagepy.org。
  • 使用Python+OpenCV進行圖像處理(二)
    圖像預處理對於整個圖像處理任務來講特別重要。如果我們沒有進行恰當的預處理,無論我們有多麼好的數據也很難得到理想的結果。本篇是視覺入門系列教程的第二篇。整個視覺入門系列內容如下:理解顏色模型與在圖像上繪製圖形(圖像處理基本操作)。基本的圖像處理與濾波技術。從特徵檢測到人臉檢測。
  • 基於OpenCv 和 Python 的手指識別及追蹤
    使用閾值處理和濾波技術來進行背景消除以獲得最佳結果。我在手指識別時遇到的挑戰之一是將手與背景區分開並識別手指的尖端。我將向您展示我用於手指跟蹤的技術,我在此項目中使用了該技術。如果想要查看手指識別和跟蹤的實際操作,請觀看我上傳的視頻。
  • 監控視頻中的圖像預處理技術
    例如,當信道變窄時,我們可以根據信道帶寬信息對輸入視頻進行一定程度的平滑濾波,減少細節,甚至進行下採樣處理、跳幀處理,使編碼視頻的碼率能與信道帶寬相匹配。當然,由於信道狀況信息的獲得比較麻煩,可以經統計學習建立信道帶寬變化的近似模型,再依據這個模型來決定預處理的方法和程度。  最早的視頻預處理是在模擬域進行的,包括對模擬視頻信號的限帶濾波、噪聲抑制、自動增益控制、白平衡以及r校正等。
  • OpenCV中的快速直線檢測
    本文範例運行環境FastLineDetectors運行必要條件FastLineDetectors屬於opencv-contrib中的模塊,需要安裝opencv-contrib-python。在python的opencv相關的安裝包中,opencv-python 包含主要模塊,opencv-contrib-python 包含主要模塊以及一些擴展模塊。但這兩個模塊並不兼容,如果已經安裝過opencv-python,需要先卸載,再安裝opencv-contrib-python。
  • 一種基於FPGA的實時紅外圖像預處理方法
    摘要:由於紅外圖像預處理算法自身的複雜性,使得紅外圖像在DSP中的預處理時間較長。針對這一問題,提出一種基於FPGA的實時紅外圖像預處理方法。
  • 基於python+OpenCV模塊的人臉識別定位技術
    本文將基於OpenCV模塊,在windows作業系統上,利用python語言,進行人臉識別技術的研究。當然OpenCV的應用領域很廣,除了人臉識別之外,它還支持圖像分割、動作識別、視頻處理等技術。代碼第1行導入opencv模塊。代碼的第3行(以上圖為準,空行也算一行),導入別人已經訓練好的臉部識別資料庫。這裡用到的數據是在github上開源的已經訓練好的分類器,如圖所示:需要將對應的數據文件(.xml文件)下載到指定目錄(代碼中的示例,展示的是與.py文件同一目錄下)。
  • OpenCV 之 霍夫變換
    Hough 變換,對圖像中直線的殘缺部分、噪聲、以及其它的共存結構不敏感,因此,具有很強的魯棒性。