OpenCV3.0中的离散傅里叶变换
圖像中的離散傅里葉變換的相關(guān)理論較為簡單,頻域里面,對于一幅圖像,高頻部分代表了圖像的細(xì)節(jié)、紋理信息;低頻部分代表了圖像的輪廓信息。
這里我們直接講解OpenCV3.0中的離散傅里葉變換
1.dft()函數(shù)詳解
dft()函數(shù)的作用是對一維或者二維浮點數(shù)組進(jìn)行正向或反向離散傅里葉變換。
C++:void dft(InputArray src,OutputArray dst,int flags = 0,int nonzerRows = 0)
參數(shù)一:InputArray類型的src,輸入矩陣,可以為實數(shù)或者虛數(shù)
參數(shù)二:OutputArray類型的dst,函數(shù)調(diào)用后的運算結(jié)果存在這里,其尺寸和類型取決于標(biāo)識符,也就是第三個參數(shù)flags
參數(shù)三:int 類型的flags,轉(zhuǎn)換的標(biāo)識符,有默認(rèn)值為0,取值為下表:
參數(shù)四:int 類型的nonzeroRows,有默認(rèn)值0,當(dāng)此參數(shù)設(shè)置為非0,函數(shù)會假設(shè)只有輸入的第一個非零行包含非零元素(沒有設(shè)置DFT_INVERSE)或只有輸出矩陣的第一個非零行包含非零元素(設(shè)置了DFT_INVERSE標(biāo)識符)。
2.返回DFT最優(yōu)尺寸大小:getOptimalDFTSize()函數(shù)
getOptimalDFTSize()函數(shù)返回給定尺寸的傅里葉最優(yōu)尺寸大小。為了提高離散傅里葉變換的運行速度,需要擴(kuò)充圖像,而具體擴(kuò)充多少,就由函數(shù)來計算得到
C++:int getOptimalDFTSize(int vecsize)
參數(shù)vecsize,向量尺寸,即圖片的rows,cols
3.擴(kuò)充邊界:copyMakeBorder()函數(shù)
copyMakeBorder()函數(shù)的作用是擴(kuò)充圖像邊界
C++:void copyMakeBorder(InputArray src,OutputArray dst,int top,int bottom,int left,int right,int borderType,const Scalar& value = Scalar())
參數(shù)一:同上
參數(shù)二:函數(shù)調(diào)用后的結(jié)果存放在這里,需要和源圖片有一樣的尺寸和類型,且size應(yīng)該為Size(src.cols+left+right,src.rows+top+bottom)
接下來的四個參數(shù)top,bottom,left,right,分別表示在源圖像的四個方向上擴(kuò)充多少像素,例如top = 2,bottom = 2,left = 2,right = 2就意味著在源圖像的上下左右各擴(kuò)充兩個像素寬度的邊界
參數(shù)七:borderType類型的,邊界類型,常見的取值為BORDER_CONSTANT
參數(shù)八:有默認(rèn)的Scalar(),可以理解為有默認(rèn)值0,當(dāng)borderType取值為BORDER_CONSTANT時,這個參數(shù)表示邊界值
4.計算二維矢量的幅值:magnitude()函數(shù)
C++:void magnitude(InputArray x,InputArray y,OutputArray magnitude)
參數(shù)一:表示矢量浮點型X坐標(biāo)值,也就是實部
參數(shù)二:表示矢量浮點型Y坐標(biāo)值,也就是虛部
參數(shù)三:輸出的幅值,塔河第一個參數(shù)X有著相同的尺寸和類型
5.計算自然對數(shù):log()函數(shù)
C++:void log(InputArray src,OutputArray dst)
參數(shù)一:輸入圖像
參數(shù)二:得到的對數(shù)值
6.矩陣歸一化:normalize()函數(shù)
C++:void normalize(InputArray src,OutArray dst,double alpha = 1,double beta = 0,int norm_type = NORM_L2,int dtype = -1,InputArray mask = noArray())
參數(shù)一:輸入圖像,填Mat類的對象即可
參數(shù)二:輸出圖像,和輸入圖像有一樣的尺寸和類型
參數(shù)三:歸一化后的最大值,有默認(rèn)值1
參數(shù)四:歸一化后的最大值,有默認(rèn)值0
參數(shù)五:歸一化類型,有NORMAL_INF,NORMAL_L1,NORMAL_L2,和NORMAL_MINMAX等參數(shù)可選,默認(rèn)值是NORM_L2,、
參數(shù)六:有默認(rèn)值-1,當(dāng)此參數(shù)取值為復(fù)數(shù)時,輸出矩陣和src有相同的類型,否則和src有同樣的通道數(shù),且此時圖像深度為CV_MAT_DEPTH(dtype)
參數(shù)七:可選的操作掩膜,有默認(rèn)值noArray()
下面通過代碼詳細(xì)講解(使用的是OpenCV3.0+VS2010):
關(guān)于包含.hpp,其實質(zhì)就是將.cpp的實現(xiàn)代碼混入.h頭文件當(dāng)中,定義與實現(xiàn)都包含在同一文件,則該類的調(diào)用者只需要include該。hpp文件即可,無需再 將cpp加入到project中進(jìn)行編譯
另外關(guān)于常用的幾個頭文件:
1.core.hpp
【core】–核心功能模塊,包含以下內(nèi)容:
OpenCV基本數(shù)據(jù)結(jié)構(gòu)
動態(tài)數(shù)據(jù)結(jié)構(gòu)
繪圖函數(shù)
數(shù)組操作相關(guān)函數(shù)
輔助功能與系統(tǒng)函數(shù)和宏
與OpenGL的互操作
2.improc.hpp
【improc】–Image和Process這兩個單詞的縮寫組合,圖像處理模塊,包含:
線性和非線性的圖像濾波
圖像的幾何變換
其他(Miscellaneous)圖像轉(zhuǎn)換
直方圖相關(guān)
結(jié)構(gòu)分析和形狀描述
運動分析和對象跟蹤
特征檢測
目標(biāo)檢測等內(nèi)容
3.highgui.hpp
【highgui】–高層GUI圖形用戶界面,包含媒體的輸入輸出、視頻捕捉、圖像和視頻的編碼解碼、圖像交互界面的借口等內(nèi)容
下面為源圖像和頻譜圖像
總結(jié)
以上是生活随笔為你收集整理的OpenCV3.0中的离散傅里叶变换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程同步之关键代码段
- 下一篇: OpenCV3.0中的图像金字塔与图片尺