python?opencv圖像的高通濾波和低通濾波的示例代碼
前言
上一章我們說明了如何將圖像機娘傅里葉變換,將圖像由時域變換成頻域,并將低頻移動至圖像中心。那么將低頻移動中心后,就可以將圖像的低頻和高頻分開,從而進行低通濾波和高通濾波的處理。
完整代碼
低通濾波
import cv2 import numpy as np import matplotlib.pyplot as plt # cv2.imread()在讀取圖像的時候,默認的是讀取成RGB圖像,cv2.IMREAD_GRAYSCALE將以灰度圖的形式讀取 img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE) # 將圖像除以255是為了將圖像向數(shù)字準換成fioat32數(shù)據(jù) img1 = img/255 # 進行傅里葉變換,時域——>頻域 dtf = cv2.dft(img1, flags = cv2.DFT_COMPLEX_OUTPUT) # 移動低頻波到中心位置 dft_shift = np.fft.fftshift(dtf) # 低通濾波 h,w = img.shape # 圖像中心點即低頻波所在位置 h2, w2 = h//2, w//2 mask = np.zeros((h,w,2), dtype=np.uint8) # 選取長寬為100的區(qū)域的低頻部分為1,其余部分為0 mask[h2-50:h2+50,w2-50:w2+50] = 1 # 低頻部分保留,其余部分*0被濾掉 dft_shift*=mask # 傅里葉逆變換,頻域——>時域 ifft_shift2 = np.fft.ifftshift(dft_shift) result = cv2.idft(ifft_shift2) # 創(chuàng)建顯示窗口,顯示原圖 plt.figure(figsize=(12,9)) plt.subplot(121) plt.imshow(img, cmap = 'gray') # 創(chuàng)建顯示窗口,顯示低通濾波后的圖像 plt.subplot(122) plt.imshow(result[:,:,0], cmap='gray') plt.show()
高通濾波
高通濾波和低通濾波的主要區(qū)別在于,低通濾波是保留中心的低頻波去除高頻波,高通濾波是去除中心的低頻波保留高頻波。
import cv2 import numpy as np import matplotlib.pyplot as plt # cv2.imread()在讀取圖像的時候,默認的是讀取成RGB圖像,cv2.IMREAD_GRAYSCALE將以灰度圖的形式讀取 img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE) # 將圖像除以255是為了將圖像向數(shù)字準換成fioat32數(shù)據(jù) img1 = img/255 # 進行傅里葉變換,時域——>頻域 dtf = cv2.dft(img1, flags = cv2.DFT_COMPLEX_OUTPUT) # 移動低頻波到中心位置 dft_shift = np.fft.fftshift(dtf) # 高通濾波 h,w = img.shape # 圖像中心點即低頻波所在位置 h2, w2 = h//2, w//2 # 中心點 # 選取長寬為100的區(qū)域的低頻部分為0,其余高頻部分為1 dft_shift[h2-5:h2+5,w2-5:w2+5] = 0 # 傅里葉逆變換,頻域——>時域 ifft_shift2 = np.fft.ifftshift(dft_shift) result = cv2.idft(ifft_shift2) # 創(chuàng)建顯示窗口,顯示原圖 plt.figure(figsize=(12,9)) plt.subplot(121) plt.imshow(img, cmap = 'gray') # 創(chuàng)建顯示窗口,顯示低通濾波后的圖像 plt.subplot(122) plt.imshow(result[:,:,0], cmap='gray') plt.show()
結(jié)果展示
改變?yōu)V波區(qū)域的大小可以改變?yōu)V波的程度,可以修改如圖所示的代碼中的相關(guān)部分:
低通濾波
高通濾波
到此這篇關(guān)于python opencv圖像的高通濾波和低通濾波的文章就介紹到這了,更多相關(guān)python opencv圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
keras自動編碼器實現(xiàn)系列之卷積自動編碼器操作
這篇文章主要介紹了keras自動編碼器實現(xiàn)系列之卷積自動編碼器操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python django搭建layui提交表單,表格,圖標的實例
今天小編就為大家分享一篇Python django搭建layui提交表單,表格,圖標的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11使用Python爬取Json數(shù)據(jù)的示例代碼
這篇文章主要介紹了使用Python爬取Json數(shù)據(jù)的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12python:批量統(tǒng)計xml中各類目標的數(shù)量案例
這篇文章主要介紹了python:批量統(tǒng)計xml中各類目標的數(shù)量案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03python 使用re.search()篩選后 選取部分結(jié)果的方法
今天小編就為大家分享一篇python 使用re.search()篩選后 選取部分結(jié)果的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11