python?opencv圖像的高通濾波和低通濾波的示例代碼
前言
上一章我們說明了如何將圖像機(jī)娘傅里葉變換,將圖像由時(shí)域變換成頻域,并將低頻移動(dòng)至圖像中心。那么將低頻移動(dòng)中心后,就可以將圖像的低頻和高頻分開,從而進(jìn)行低通濾波和高通濾波的處理。
完整代碼
低通濾波
import cv2 import numpy as np import matplotlib.pyplot as plt # cv2.imread()在讀取圖像的時(shí)候,默認(rèn)的是讀取成RGB圖像,cv2.IMREAD_GRAYSCALE將以灰度圖的形式讀取 img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE) # 將圖像除以255是為了將圖像向數(shù)字準(zhǔn)換成fioat32數(shù)據(jù) img1 = img/255 # 進(jìn)行傅里葉變換,時(shí)域——>頻域 dtf = cv2.dft(img1, flags = cv2.DFT_COMPLEX_OUTPUT) # 移動(dòng)低頻波到中心位置 dft_shift = np.fft.fftshift(dtf) # 低通濾波 h,w = img.shape # 圖像中心點(diǎn)即低頻波所在位置 h2, w2 = h//2, w//2 mask = np.zeros((h,w,2), dtype=np.uint8) # 選取長(zhǎng)寬為100的區(qū)域的低頻部分為1,其余部分為0 mask[h2-50:h2+50,w2-50:w2+50] = 1 # 低頻部分保留,其余部分*0被濾掉 dft_shift*=mask # 傅里葉逆變換,頻域——>時(shí)域 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()在讀取圖像的時(shí)候,默認(rèn)的是讀取成RGB圖像,cv2.IMREAD_GRAYSCALE將以灰度圖的形式讀取 img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE) # 將圖像除以255是為了將圖像向數(shù)字準(zhǔn)換成fioat32數(shù)據(jù) img1 = img/255 # 進(jìn)行傅里葉變換,時(shí)域——>頻域 dtf = cv2.dft(img1, flags = cv2.DFT_COMPLEX_OUTPUT) # 移動(dòng)低頻波到中心位置 dft_shift = np.fft.fftshift(dtf) # 高通濾波 h,w = img.shape # 圖像中心點(diǎn)即低頻波所在位置 h2, w2 = h//2, w//2 # 中心點(diǎn) # 選取長(zhǎng)寬為100的區(qū)域的低頻部分為0,其余高頻部分為1 dft_shift[h2-5:h2+5,w2-5:w2+5] = 0 # 傅里葉逆變換,頻域——>時(shí)域 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
keras自動(dòng)編碼器實(shí)現(xiàn)系列之卷積自動(dòng)編碼器操作
這篇文章主要介紹了keras自動(dòng)編碼器實(shí)現(xiàn)系列之卷積自動(dòng)編碼器操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python django搭建layui提交表單,表格,圖標(biāo)的實(shí)例
今天小編就為大家分享一篇Python django搭建layui提交表單,表格,圖標(biāo)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Python Selenium中等待設(shè)置的實(shí)現(xiàn)
本文主要介紹了Python Selenium中等待設(shè)置的實(shí)現(xiàn),過詳實(shí)的示例代碼,深入介紹了顯式等待、隱式等待、自定義等待條件、多重等待條件、頁面加載狀態(tài)的等待、元素存在與可見性等待、Fluent等待以及異步JavaScript加載的等待,感興趣的可以了解一下2023-12-12使用Python爬取Json數(shù)據(jù)的示例代碼
這篇文章主要介紹了使用Python爬取Json數(shù)據(jù)的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12python:批量統(tǒng)計(jì)xml中各類目標(biāo)的數(shù)量案例
這篇文章主要介紹了python:批量統(tǒng)計(jì)xml中各類目標(biāo)的數(shù)量案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python Django 后臺(tái)管理之后臺(tái)模型屬性詳解
這篇文章主要介紹了Python Django 后臺(tái)管理之后臺(tái)模型屬性,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04python 使用re.search()篩選后 選取部分結(jié)果的方法
今天小編就為大家分享一篇python 使用re.search()篩選后 選取部分結(jié)果的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11