1. 程式人生 > >OpenCV下利用傅立葉變換和逆變換實現影象卷積演算法,並附自己對於卷積核/模板核算子的理解!

OpenCV下利用傅立葉變換和逆變換實現影象卷積演算法,並附自己對於卷積核/模板核算子的理解!

學過訊號與系統的人都知道,卷積運算一般是轉化成頻率乘積再求逆來計算,因為這樣可以減少計算量,提高程式碼的效率。

影象卷積操作廣泛應用在影象濾波技術中。

影象卷積運算中一個重要概念是卷積核算子,它是模板核算子的一種,模板核算子實際上就是一個視窗矩陣,用這個視窗按畫素點滑動去計算目標影象的新值,這個新值就來源於視窗中包含的畫素值按一定的演算法計算出的結果。核算子是奇數階矩陣,通常用3階矩陣。比如卷積表示式f*g中,核算子就代表著g,所以一旦你的濾波器定了,核算子也就定了,當然,由於核算子矩陣的階數不同,核算子也會有所不同,不過通常的階數為3.之所以要取奇數是,是因為通常要取中間點作為被替換值的點,偶數階的話取不到中間的點,具體的你看下面博文中的運演算法則就清楚了。

從卷積核算子的運演算法則上很容易可以看出,以三階核算子為例,靠近邊界的兩行和兩列的元素是不能作卷積核運算的!(運演算法則我上面以博文連結的方式給出)這個問題書面話說就是下面的敘述

當處理影象邊界畫素時,卷積核與影象使用區域不能匹配,卷積核的中心與邊界畫素點對應,卷積運算將出現問題。處理辦法如下::

A 忽略邊界畫素,即處理後的影象將丟掉這些畫素。
B 保留原邊界畫素,即copy邊界畫素到處理後的影象。

PS:在OpenCV的影象平滑的各種濾波演算法中,採用的是把原影象進行適當的擴充,即擴大一點來處理這個問題的。詳情可以參考我的下下下篇博文。

影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注!
影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注!
影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注!

相關推薦

OpenCV利用變換變換實現影象演算法,自己對於/模板核算理解!

學過訊號與系統的人都知道,卷積運算一般是轉化成頻率乘積再求逆來計算,因為這樣可以減少計算量,提高程式碼的效率。 影象卷積操作廣泛應用在影象濾波技術中。 影象卷積運算中一個重要概念是卷積核算子,它是模板核算子的一種,模板核算子實際上就是一個視窗矩陣,用這個視窗按畫素點滑動去

真正理解級數變換

真正理解傅立葉級數和傅立葉變換 記得上大學的時候的機械振動還有工程測試利用的傅立葉變化,當時感覺雲裡霧裡的,感覺好難,也就沒有去搞,渾水摸魚也就過來了,然後現在到了研究生階段,發現傅立葉變換呀,卷積呀非常的重要,也是學術研究最基礎的工具。在做人臉識別的時候剛好用上,所以靜下心

opencv 中 快速變換 FFT

opencv 中 傅立葉變換 FFT,程式碼如下: void fft2(IplImage *src, IplImage *dst) { //實部、虛部 IplImage *image_Re = 0, *image_Im = 0, *Fourier = 0; //

變換變換公式的我理解意義

f(t)的傅立葉變換F(w)=∫  f(t) *e(-iwt)dt ,由於(1,sinwx,coswx,sin2wx,cos2wx,... sinnwx,cosnwx,....)是一組正交函式,傅立葉變換從公式來看就是內積,只有f(t)中含有對應w分 量才能有內積不為零,有

訊號與系統之(二)級數變換

    張三愉快地工作著,直到有一天,平靜的生活被打破。經理拿來了一個小的電子裝置,接到示波器上面,對張三說:"看,這個小裝置產生的波形根本沒法用一個簡單的函式來說明,而且,它連續不斷的發出訊號!不過幸好,這個連續訊號是每隔一段時間就重複一次的。張三,你來測試以下,連到我們的裝置上,會產生什麼輸出波形!"張三

第十七講 利用級數求特解

一,幾何變換法,求傅立葉級數: 假設是週期,的函式,求它的傅立葉級數。如圖1: 第一步,求週期的函式的傅立葉級數。如圖2: 因為是奇函式, 當,;當, 因此,前提: 第二步,將壓縮成,週期改變,變,如圖3: 的週期,,

分析影象頻譜解析

1、為什麼要進行傅立葉變換,其物理意義是什麼? 傅立葉變換是數字訊號處理領域一種很重要的演算法。要知道傅立葉變換演算法的意義,首先要了解傅立葉原理的意義。 傅立葉原理表明:任何連續測量的時序或訊號,都可以表示為不同頻率的正弦波訊號的無限疊加。而根據該原理創立的傅立葉變換演算

opencv3 離線餘弦變換變換

程式碼如下 #include<opencv.hpp> int main() { cv::Mat image; cv::Mat dctimage; image = cv::imread("F:\\ebook\\opencv\\LearningOpenCV3\\tes

0022-在OpenCV環境影象或矩陣的變換

傅立葉變換的概念在《高等數學》、《訊號與系統》、《數字訊號處理》中都有詳細的原理說明,網上也有一大堆文章解釋其原理。這裡我就不多說了,總之它是把訊號變換到三角函式系裡,實際上是域的變換,至於變換有什麼好處,其實就是從另一個角度觀察同一個訊號。對影象的傅立葉變換實際上是一個二維傅立葉變換。OpenCV

分別用OpenCV-PythonNumpy實現變換變換

Numpy實現 fft = np.fft.fft2(img) 將空間域轉化為頻率域 OpenCV實現 dft = cv2.dft(np.float32(img),flag=cv2.DFT_COMPLEX_OUTPUT) 這個函式與np.fft.fft2(img)實現相同的功能,但要注意先

Pythonopencv使用筆記(十)(影象頻域濾波與變換

前面曾經介紹過空間域濾波,空間域濾波就是用各種模板直接與影象進行卷積運算,實現對影象的處理,這種方法直接對影象空間操作,操作簡單,所以也是空間域濾波。 頻域濾波說到底最終可能是和空間域濾波實現相同的功能,比如實現影象的輪廓提取,在空間域濾波中我們使用一個拉普拉

OpenCV環境寫的灰度影象二維換,幅值計算,頻譜平移將數值歸一化到0到255區間的四個函式

影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注! 影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注! 影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋

Pythonopencv使用筆記(影象頻域濾波與變換

本文轉載自  https://blog.csdn.net/on2way/article/details/46981825首先謝謝原創博主了,這篇文章對我幫助很大,記錄下方便再次閱讀。前面曾經介紹過空間域濾波,空間域濾波就是用各種模板直接與影象進行卷積運算,實現對影象的處理,這

離散變換(DFT)快速變換(FFT)原理與實現

目錄 1、影象變換 2、離散傅立葉變換(Discrete Fourier Transform) 3、DFT性質 4、DFT與數字影象處理 5、FFT-快速傅立葉變換 6、DFT與FFT的演算法實現 1. 影象變換 — —數學領域中有很多種變換,如傅立葉變換、拉普拉斯變

變換的意義理解(通俗易懂)

這篇文章的核心思想就是:要讓讀者在不看任何數學公式的情況下理解傅立葉分析。 傅立葉分析不僅僅是一個數學工具,更是一種可以徹底顛覆一個人以前世界觀的思維模式。但不幸的是,傅立葉分析的公式看起來太複雜了,所以很多大一新生上來就懵圈並從此對它深惡痛絕。老實說,這麼有意思的東西居然成了大學裡的殺

opencv變換 FFT

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【GCN】圖網路初探——基於圖(Graph)的變換

本文為從CNN到GCN的聯絡與區別——GCN從入門到精(fang)通(qi)的閱讀筆記,文中絕大部分公式和圖片摘自原文。 文章目錄 一、CNN(卷積神經網路)中的離散卷積 二、GCN基本概念介紹 (一)圖Grap

簡述計算機三大變換的聯絡區別 (變換 拉普拉斯變換 z變換)

Q:簡述計算機三大變換的聯絡和區別 (傅立葉變換 拉普拉斯變換 z變換) (1) 傅立葉變換定義: 表示能將滿足一定條件的某個函式表示成三角函式(正弦和/或餘弦函式)或者它們的積分的線性組合。傅立葉變換是一種分析訊號的方法,它可分析訊號的成分,也可用這

matlab進行變換fftshiftfft

使用matlab進行傅立葉變換 模擬訊號進行奈奎斯特取樣後成為離散的數字訊號,時域分析不太方便,通常要進行頻域變換更好的分析訊號,matlab中的fft和shiftfft兩個函式可以快速的幫助我們進行頻譜分析。兩個函式存在一些差別。 關於fft的預備知識: 由奈奎斯特取樣定理知,

變換及其在opencv影象去噪的實現

前言 我保證這篇文章和你以前看過的所有文章都不同,這是12年還在果殼的時候寫的,但是當時沒有來得及寫 完就出國了……於是拖了兩年,嗯,我是拖延症患者…… 這篇文章的核心思想就是: 要讓讀者在不看任何數學公式的情況下理解傅立葉分析。 傅立葉分析不僅僅是一個數學工