程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python opencv圖像的高通濾波和低通濾波怎麼實現

編輯:Python

python opencv圖像的高通濾波和低通濾波怎麼實現

這篇文章主要介紹“python opencv圖像的高通濾波和低通濾波怎麼實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“python opencv圖像的高通濾波和低通濾波怎麼實現”文章能幫助大家解決問題。

完整代碼

低通濾波

import cv2import numpy as npimport matplotlib.pyplot as plt# cv2.imread()在讀取圖像的時候,默認的是讀取成RGB圖像,cv2.IMREAD_GRAYSCALE將以灰度圖的形式讀取img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE)  # 將圖像除以255是為了將圖像向數字准換成fioat32數據img1 = img/255 # 進行傅裡葉變換,時域——>頻域dtf = cv2.dft(img1, flags = cv2.DFT_COMPLEX_OUTPUT)  # 移動低頻波到中心位置dft_shift = np.fft.fftshift(dtf)  # 低通濾波h,w = img.shape# 圖像中心點即低頻波所在位置h3, w2 = h//2, w//2  mask = np.zeros((h,w,2), dtype=np.uint8)# 選取長寬為100的區域的低頻部分為1,其余部分為0mask[h3-50:h3+50,w2-50:w2+50] = 1  # 低頻部分保留,其余部分*0被濾掉dft_shift*=mask  # 傅裡葉逆變換,頻域——>時域ifft_shift2 = np.fft.ifftshift(dft_shift)  result = cv2.idft(ifft_shift2)# 創建顯示窗口,顯示原圖plt.figure(figsize=(12,9))plt.subplot(121)plt.imshow(img, cmap = 'gray')# 創建顯示窗口,顯示低通濾波後的圖像plt.subplot(122)plt.imshow(result[:,:,0], cmap='gray')plt.show()

高通濾波

高通濾波和低通濾波的主要區別在於,低通濾波是保留中心的低頻波去除高頻波,高通濾波是去除中心的低頻波保留高頻波。

import cv2import numpy as npimport matplotlib.pyplot as plt# cv2.imread()在讀取圖像的時候,默認的是讀取成RGB圖像,cv2.IMREAD_GRAYSCALE將以灰度圖的形式讀取img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE)  # 將圖像除以255是為了將圖像向數字准換成fioat32數據img1 = img/255 # 進行傅裡葉變換,時域——>頻域dtf = cv2.dft(img1, flags = cv2.DFT_COMPLEX_OUTPUT)  # 移動低頻波到中心位置dft_shift = np.fft.fftshift(dtf)# 高通濾波h,w = img.shape# 圖像中心點即低頻波所在位置h3, w2 = h//2, w//2  # 中心點# 選取長寬為100的區域的低頻部分為0,其余高頻部分為1dft_shift[h3-5:h3+5,w2-5:w2+5] = 0# 傅裡葉逆變換,頻域——>時域ifft_shift2 = np.fft.ifftshift(dft_shift)  result = cv2.idft(ifft_shift2)# 創建顯示窗口,顯示原圖plt.figure(figsize=(12,9))plt.subplot(121)plt.imshow(img, cmap = 'gray')# 創建顯示窗口,顯示低通濾波後的圖像plt.subplot(122)plt.imshow(result[:,:,0], cmap='gray')plt.show()

結果展示

改變濾波區域的大小可以改變濾波的程度,可以修改如圖所示的代碼中的相關部分:

低通濾波

高通濾波

關於“python opencv圖像的高通濾波和低通濾波怎麼實現”的內容就介紹到這裡了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速雲行業資訊頻道,小編每天都會為大家更新不同的知識點。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved