OpenCV入門 離散的傅利葉變換

2021-09-26 06:49:32 字數 2349 閱讀 3960

傅利葉變換 是指將影象拆解成正弦與余弦元素,也就是將圖由空間性轉換為頻率性。

int getoptimaldftsize(int vecsize):由輸入的向量大小取得最佳的dft(離散的傅利葉變換)大小

vecsize:輸入的向量大小

copymakeborder(inputarray src, outputarray dst, int top, int bottom, int left, int right, int bordertype, const scalar& value = scalar()):在影象外圍增加邊框

src:原影象

dst:結果影象;大小是原圖加上上下左右擴充套件的畫素數

top:向上擴充套件的畫素數

bottom:向下擴充套件的畫素數

left:向左擴充套件的畫素數

right:向右擴充套件的畫素數

value:若邊框型別是border_constant,此引數代表邊框值

dft(inputarray src, outputarray dst, int flash = 0, int nonzerorows=0):執行向前或反向的傅利葉變換值

src:輸入影象

dst:結果影象

3.flage:轉換標誌,可以為下列組合

magnitude(inputarray src, outputarray dst, double alpha = 1, double beta = 0, int norm_type = norm_l2, int dtype = -1, inputarray mask = noarray()):陣列值距或基準的正常化處理

或者:normalize(const sparsemat& src, sparsemat& dst, double alpha,

int mormtype)

stc:輸入影象

dst:輸出影象

alpha:基準正常化的基準值,或是範圍正常化的較低範圍邊界值

beta:範圍正常化的較高範圍邊界值,但不用基準正常化

norm_type:正常化型別

dtype:若為負值則輸入與輸出有相同的通道與深度

mask:可有可無的遮罩值

#include#include#include#includeusing namespace cv;

using namespace std;

int main(int argc, char** ar**)

; mat complexi;

//使用0增加到另乙個擴增面

merge(planes, 2, complexi);

//將結果大小與原圖吻合

dft(complexi, complexi);

//計算擴增值並更換成對數的刻度

split(complexi, planes);

magnitude(planes[0], planes[1], planes[0]);

mat magi = planes[0];

//更換成對數的刻度

magi += scalar::all(1);

log(magi, magi);

//如果有奇數的行或列就修剪光譜

magi = magi(rect(0, 0, magi.cols & -2, magi.rows & -2));

//安排傅利葉變換的四項區,以便原點位在圖的中間

int cx = magi.cols / 2;

int cy = magi.rows / 2;

//使每個區塊都產生圖塊

//左上

mat q0(magi, rect(0, 0, cx, cy));

//右上

mat q1(magi, rect(cx, 0, cx, cy));

//左下

mat q2(magi, rect(0, cy, cx, cy));

//右下

mat q3(magi, rect(cx, cy, cx, cy));

mat tmp;

//四象限區塊左上與右下對調

q1.copyto(tmp);

q2.copyto(q0);

tmp.copyto(q3);

//以浮點值(0-1)轉換影象到可見的圖

normalize(magi, magi, 0, 1,cv_minmax);

imshow("input image", i);

imshow("spectrum magnitude", magi);

waitkey(0);

return 0;

}

理解離散傅利葉變換(四 複數形式離散傅利葉變換)

複數形式的離散傅利葉變換非常巧妙地運用了複數的方法,使得傅利葉變換變換更加自然和簡潔,它並不是只是簡單地運用替換的方法來運用複數,而是完全從複數的角度來分析問題,這一點跟實數dft是完全不一樣的。一 把正余弦函式表示成複數的形式 通過尤拉等式可以把正余弦函式表示成複數的形式 cos x 1 2 e ...

離散週期訊號的傅利葉級數 DFS

目錄序言 引入離散週期訊號的傅利葉級數 成諧波關係的離散週期復指數序列 週期訊號的傅利葉級數表示 離散週期訊號的傅利葉級數係數及其確定過程 這篇文章的思路是按照與連續時間週期訊號的傅利葉級數一致的,看完這篇博文的基礎上,再看離散時間復指數序列的週期性質,了解了離散時間復指數序列的週期性後,就可以很簡...

傅利葉入門 動手演示波形疊加

記得以前有門課程,有這麼乙個說法 任何週期函式,都可以看作是不同振幅,不同相位正弦波的疊加。咳咳。舉個栗子,某函式有如下圖示形狀 可以由多個形狀如下的波形疊加合成。咋一看,一想,不合理呀,一種彎曲豐滿的的曲線怎麼會合成橫平豎直的直線呢?多個曲線相加莫非就是變高 變寬 變陡或變緩,也不至於平了吧。小學...