版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第OpenCV半小時掌握基本操作之傅里葉變換目錄概述高頻vs低頻傅里葉變換代碼詳解輸入轉(zhuǎn)換傅里葉變換獲取幅度譜傅里葉逆變換獲取低頻獲取高頻
概述
OpenCV是一個跨平臺的計算機視覺庫,支持多語言,功能強大.今天小白就帶大家一起攜手走進OpenCV的世界.
高頻vs低頻
高頻vs低頻:
高頻:變換劇烈的灰度分量,例如邊界
低頻:變換緩慢的灰度分量,例如一片大海
濾波:
低通濾波器:只保留低頻,會使得圖像模糊
高通濾波器:只保留高頻,會使得圖像細節(jié)增強
傅里葉變換
傅里葉變化(FourierTransform)是一種分析信號的方法.傅里葉變化可分析信號的成分,也可以用這些成分合成信號.
效果:
傅里葉變換:
傅里葉逆變換:
在OpenCV中實現(xiàn)傅里葉變換的函數(shù)是cv2.dft()和cv2.idft()(傅里葉逆變化)
代碼詳解
輸入轉(zhuǎn)換
傅里葉變換支持的輸入格式是np.float32,所以我們需要先把圖像轉(zhuǎn)換到要求的格式.
代碼實現(xiàn):
importnumpyasnp
importcv2
#讀取圖片,并轉(zhuǎn)換成灰度圖
img=cv2.imread("Mona_Lisa.jpg",cv2.IMREAD_GRAYSCALE)
print(img.dtype)#unit8數(shù)據(jù)類型
#轉(zhuǎn)換成np.float32
img_float32=np.float32(img)
print(img_float32.dtype)#float32數(shù)據(jù)類型
輸出結(jié)果:
uint8
float32
傅里葉變換
格式:
cv2.dft(src,dst=None,flags=None,nonzeroRows=None)
參數(shù):
src:輸入圖像
dst:輸出圖像,默認為None
flags:轉(zhuǎn)換標志(5種)
nonezeroRows:要處理的dst行數(shù),默認為None
返回值:
實部和虛部(雙通道)
實部:代表所有的偶函數(shù)(余弦函數(shù))的部分
虛部:代表所有的奇函數(shù)(正弦函數(shù))的部分
代碼實現(xiàn):
#傅里葉變換
dft=cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT)
#中心轉(zhuǎn)換,將低頻挪到中心
dft_shift=np.fft.fftshift(dft)
獲取幅度譜
幅度譜(MagnitudeSpectrum),即從構(gòu)成波形的頻率側(cè)面看過去,每一個頻率分量都會在側(cè)面的投影,如圖:
通過```cv2.magnitude``我們可以極端二維矢量的幅值.
格式:
cv2.magnitude(x,y,magnitude=None)
參數(shù):
x:實部
y:虛部
代碼實現(xiàn):
#獲取幅度譜,映射到灰度空間[0,255]
magnitude_spectrum=20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))
#幅度譜展示
combine=np.hstack((img,magnitude_spectrum.astype(np.uint8)))
cv2.imshow("combine",combine)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結(jié)果:
傅里葉逆變換
格式:
cv2.idft(src,dst=None,flags=None,nonzeroRows=None)
參數(shù):
src:輸入圖像
dst:輸出圖像,默認為None
flags:轉(zhuǎn)換標志(5種)
nonezeroRows:要處理的dst行數(shù),默認為None
返回值:
實部和虛部(雙通道)
實部:代表所有的偶函數(shù)(余弦函數(shù))的部分
虛部:代表所有的奇函數(shù)(正弦函數(shù))的部分
代碼實現(xiàn):
#獲取中心位置
rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)
#低通濾波
mask=np.zeros((rows,cols,2),np.uint8)
mask[crow-30:crow+30,ccol-30:ccol+30]=1
#傅里葉逆變換
fshidt=dft_shift*mask
f_ishift=np.fft.ifftshift(fshidt)
img_back=cv2.idft(f_ishift)
獲取低頻
importnumpyasnp
importcv2
#讀取圖片,并轉(zhuǎn)換成灰度圖
img=cv2.imread("Mona_Lisa.jpg",cv2.IMREAD_GRAYSCALE)
print(img.dtype)#unit8數(shù)據(jù)類型
#轉(zhuǎn)換成np.float32
img_float32=np.float32(img)
print(img_float32.dtype)#float32數(shù)據(jù)類型
#傅里葉變換
dft=cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT)
#中心轉(zhuǎn)換,將低頻挪到中心
dft_shift=np.fft.fftshift(dft)
#獲取幅度譜
magnitude_spectrum=20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))
#幅度譜展示
combine=np.hstack((img,magnitude_spectrum.astype(np.uint8)))
cv2.imshow("combine",combine)
cv2.waitKey(0)
cv2.destroyAllWindows()
#獲取中心位置
rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)
#低通濾波
mask=np.zeros((rows,cols,2),np.uint8)
mask[crow-30:crow+30,ccol-30:ccol+30]=1
fshidt=dft_shift*mask
f_ishift=np.fft.ifftshift(fshidt)
#傅里葉逆變換,獲取低頻圖像
img_back=cv2.idft(f_ishift)
img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1])
#結(jié)果展示
img_back=255*cv2.normalize(img_back,None,norm_type=cv2.NORM_MINMAX,dtype=cv2.CV_32F)#標準化
result=np.hstack((img,img_back.astype(np.uint8)))
cv2.imshow("result",result)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結(jié)果:
獲取高頻
importnumpyasnp
importcv2
#讀取圖片,并轉(zhuǎn)換成灰度圖
img=cv2.imread("Mona_Lisa.jpg",cv2.IMREAD_GRAYSCALE)
print(img.dtype)#unit8數(shù)據(jù)類型
#轉(zhuǎn)換成np.float32
img_float32=np.float32(img)
print(img_float32.dtype)#float32數(shù)據(jù)類型
#傅里葉變換
dft=cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT)
#中心轉(zhuǎn)換,將低頻挪到中心
dft_shift=np.fft.fftshift(dft)
#獲取幅度譜
magnitude_spectrum=20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))
#幅度譜展示
combine=np.hstack((img,magnitude_spectrum.astype(np.uint8)))
cv2.imshow("combine",combine)
cv2.waitKey(0)
cv2.destroyAllWindows()
#獲取中心位置
rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)
#高通濾波
mask=np.ones((rows,cols,2),np.uint8)
mask[crow-30:crow+30,ccol-30:ccol+30]=0
fshidt=dft_shift*mask
f_ishift=np.fft.ifftshift(fshidt)
#傅里葉逆變換,獲取高頻圖像
img_back=cv2.idft(f_ishift)
img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1])
#結(jié)果展示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年巴州新華書店有限責(zé)任公司若羌縣分公司招聘備考題庫及一套參考答案詳解
- 2026年商丘柘城縣新城高級中學(xué)教師招聘備考題庫含答案詳解
- 2026年南安市海都醫(yī)院公開招聘編制內(nèi)衛(wèi)生類崗位9人備考題庫參考答案詳解
- 2026年廣西百色城市產(chǎn)業(yè)發(fā)展集團有限公司公開招聘員工備考題庫帶答案詳解
- 2026年宜賓國企招聘維操員大??蛇M六險二金備考題庫及1套參考答案詳解
- 2026年四川愛創(chuàng)科技有限公司安徽分公司招聘客戶經(jīng)理崗位的備考題庫及答案詳解1套
- 2026年安徽嘉優(yōu)中科豐樂種業(yè)科技有限責(zé)任公司招聘備考題庫及參考答案詳解
- 2026年東營市東凱實驗學(xué)校招聘歷史教師備考題庫含答案詳解
- 2026年天津市北辰醫(yī)院公開招聘事業(yè)單位工作人員備考題庫及參考答案詳解1套
- 2026年中國航空傳媒有限責(zé)任公司市場化人才招聘備考題庫及答案詳解參考
- 磁電感應(yīng)式傳感器課件
- 學(xué)??剌z保學(xué)工作流程及四書一表一單
- 2026屆湖南省常德市石門一中生物高二第一學(xué)期期末統(tǒng)考試題含解析
- 冷渣機調(diào)整課件
- 肺癌全程護理計劃
- 學(xué)堂在線 雨課堂 學(xué)堂云 人工智能 章節(jié)測試答案
- 工業(yè)高質(zhì)量數(shù)據(jù)集研究報告
- 2024城口縣國企招聘考試真題及答案
- 淋巴的生成和回流
- 冬季幼兒園暖氣安全培訓(xùn)課件
- 血管外科護理進修課件
評論
0/150
提交評論