在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 獨家|OpenCV 1.7 離散傅里葉變換

            獨家|OpenCV 1.7 離散傅里葉變換

            發(fā)布人:數(shù)據(jù)派THU 時間:2021-08-20 來源:工程師 發(fā)布文章

            目標(biāo)

            本小節(jié)將尋求以下問題的答案:

            什么是傅立葉變換,為什么要使用傅立葉變換?

            如何在OpenCV中使用傅立葉變換?

             copyMakeBorder() , merge() , dft() , getOptimalDFTSize() , log() 和 normalize() 等函數(shù)的使用方法。

            源代碼

            可以到

            samples/cpp/tutorial_code/core/discrete_fourier_transform/discrete_fourier_transform.cpp目錄下查看OpenCV的源代碼庫。

            下面是dft()的應(yīng)用示例程序:

            1.png2.png

            代碼詳解

            傅立葉變換可以將圖像分解成正弦和余弦分量。也就是說,它將圖像從空間域變換到頻率域。其主要思想為:任何函數(shù)均可以用無限多個正弦和余弦函數(shù)之和來精確近似。傅立葉變換正是這一想法的實現(xiàn)。數(shù)學(xué)上,一張二維圖像的傅里葉變換可表示如下:

            3.png

            這里,f是圖像在空間域的圖像值, F是圖像在頻率域的圖像值,轉(zhuǎn)換后的結(jié)果為復(fù)數(shù),可以通過并且可以用實數(shù)圖和復(fù)數(shù)圖進(jìn)行表示,也可以用幅度和相位圖進(jìn)行表示。然而,對于圖像處理算法而言算法僅關(guān)注圖像的幅度信息,因為其中包含了圖像幾何結(jié)構(gòu)中的所有信息。如果想通過對復(fù)數(shù)圖像或幅度/相位圖像下的象函數(shù)進(jìn)行修改,從而間接地調(diào)整原函數(shù), 那么則需要保留象函數(shù)的值,并進(jìn)行傅里葉變換逆變換,從而獲得調(diào)整后的原函數(shù)的數(shù)值。

            在此示例中,將介紹如何計算和顯示圖像經(jīng)過傅里葉變換的幅度圖值。假設(shè)數(shù)字圖像的傅里葉變換是離散的傅里葉變換,可以在給定的域值中任取一個數(shù)值。例如,灰度圖像的像素值通常在0到255之間,那么傅立葉變換的結(jié)果也是離散型的。當(dāng)需要從幾何視角來確定圖像的結(jié)構(gòu)時,便可適用DFT。下面是離散型的傅里葉變換(DFT )的實現(xiàn)步驟(假設(shè)輸入圖像為灰度圖像I):

            將圖像展開到最佳尺寸

            DFT的性能取決于圖像的大小,當(dāng)圖像的尺寸為2,3,5 的倍數(shù)時,離散傅里葉變換(DFT )的速度最快。因此,為獲得最優(yōu)的性能,可以通過調(diào)整圖像的邊界值來獲得便于快速計算的圖像尺寸。getOptimalDFTSize()函數(shù)返回一個最優(yōu)尺寸的圖像,使用copyMakeBorder()函數(shù)擴(kuò)展圖像(將增加的像素值初始化為零)的邊界:

            4.png

            為復(fù)數(shù)的實部和虛部開辟存儲空間

            傅立葉變換的結(jié)果是復(fù)數(shù),這意味著,每個圖像對應(yīng)著兩個像素值(實部和虛部各一個分量)。此外,頻率域范圍比其對應(yīng)的空間域范圍要大得多,所以至少要用浮點(float format)的格式來存儲傅里葉變換的結(jié)果。為此,需要將輸入的圖像數(shù)據(jù)類型轉(zhuǎn)換成浮點類型,并擴(kuò)展出另一個通道來保存復(fù)數(shù)值:

            5.png

            離散傅立葉變換

            進(jìn)行原位計算(輸入數(shù)據(jù)同輸出數(shù)據(jù)):

            6.png

            將復(fù)數(shù)的實部和虛部轉(zhuǎn)換成幅度值

            復(fù)數(shù)包含實部(Re)和虛部( Im) 兩部分。DFT的結(jié)果為復(fù)數(shù),這個復(fù)數(shù)的幅度為:

            7.png

            轉(zhuǎn)換成OpenCV的代碼如下:

            8.png

            切換到對數(shù)尺寸

            由于傅里葉系數(shù)的動態(tài)范圍過大,無法在屏幕上顯示,

            一些較小和較大的變化值也無法在線性尺度下觀察到。因此,較高的數(shù)值會變成白點,而較小的數(shù)值變?yōu)楹邳c。為了便于顯示全部數(shù)值,可使用灰度值,并將線性尺寸變換成對數(shù)尺寸:

            9.png

            轉(zhuǎn)換成OpenCV代碼如下:

            10.png

            剪裁和重排

            在上述第一步中,對圖像的尺寸進(jìn)行了擴(kuò)展,在這里則需要拋棄由圖像擴(kuò)展而新引進(jìn)的像素值。為了方便可視化,對結(jié)果值的象限重新排列,使得原點(零,零)對應(yīng)圖像中心。

            11.png

            歸一化

            歸一化的目的也是為了便于可視化。經(jīng)過運(yùn)算之后,獲得了幅度值,但這些數(shù)值仍然超出了圖像的顯示范圍(從零到一),為此,利用cv::normalize()函數(shù)對幅度值進(jìn)行歸一化,取值在零到一的范圍之內(nèi)。

            12.png

            結(jié)果

            應(yīng)用傅里葉變換的主要目的是要確定圖像的幾何方向。例如,如何看出文本是水平還是垂直方向的?對于某些文字來說,文本行的排序形式是水平線,而字母則形成某種垂直線。經(jīng)傅里葉變換后,仍然可以看到文本中片段中的兩個主要部分。下面,分別用水平和旋轉(zhuǎn)圖像來描述某一文本。

            水平文本圖像:

            13.png

            旋轉(zhuǎn)文本圖像:

            14.png

            從中可以看出,頻域中影響最大的分量(幅度圖像上最亮的點)會隨著圖像的幾何位置旋轉(zhuǎn),可以根據(jù)這一點計算出偏移量,通過旋轉(zhuǎn)圖像來對位置進(jìn)行糾正。

            注:本文以C++語言代碼為例,獲取Java和python版本可在原文中查看:

            https://docs.opencv.org/4.5.2/d8/d01/tutorial_discrete_fourier_transform.html

            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

            電能表相關(guān)文章:電能表原理


            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉