最近在學習opencv相關知識,看圖像處理時提到一個重要的概念,卡住了,後悔本身數學放棄的太早了,書到用時方恨少。html
因而從新開始學習,在網上找了不少資料,可能是以數學公式及數學概念爲主,並不便於咱們理解卷積究竟是個什麼,或者說什麼現象吧。算法
今天便把本身收集的資料整理一番並分享一些想法能夠一塊兒有人有興趣能夠一塊兒討論或者來指導一下我存在誤解的地方。數組
--------------------------------------------------------------------------------------------------------------------------------------------------------------------函數
下面進入正題:性能
上圖中學習
箭頭1:表示 卷積算子(卷積核或者卷積操做數)
箭頭2:表示 時間序列(輸入序列數據,目標輸入)
箭頭3:表示 卷積核大小及採樣率
箭頭4:表示 卷積值(卷積矩陣值)
箭頭5:表示 時間序列(輸出序列數據,目標輸出).net
卷積操做是指,將卷積算子(或者叫作卷積核)在輸入序列數據上滑動,從第一個滑動至尾部,遍歷取出卷積算子及其周邊卷積核大小的數據,做爲參考樣本,通過計算獲得新的結果的過程。3d
有說法說:從數學上講,卷積就是一種運算。通俗易懂的說,卷積就是:輸出 = 輸入 * 系統htm
我理解:blog
這個系統在上圖中表明的就是採樣大小及採樣率(或者叫作權重值),
上圖卷積核大小爲3,範圍就是取第一個數列中3個元素,上圖中第一個數列 I 下面帶 * 的就是選取的樣本,第2個數列,是採樣權重,都是1/3,
通過運算即每個樣本*權重獲得了第3個數列[5/3,5/3,4/3],而後求和獲得卷積值爲14/3,成爲了輸出數列 J對應位置上的數據。這樣將卷積算子繼續滑動下一位,直到遍歷完數組。
這裏面簡單的講就是 數列(I)通過=》系統(權重)=》數列(J)這樣的一個映射關係,你能夠理解爲展開
固然系統表明的只是一個系統計算公式,並不必定是某種形式,系統指就是採樣矩陣和一個標準算法。
講源數據卷積核矩陣取出,於系統矩陣相成,獲得的結果或結果矩陣,取其中某個值賦給新的矩陣,即輸出矩陣的過程就是卷積操做,這個過程須要遍歷整個輸入數列。
以上是一維數組,將它擴展成二爲數組,是同樣的,就能夠用來處理圖形問題了。
上圖中移動卷積核至最後一位,每一次取出一個3*3的矩陣,於有圖中中間部分的卷積權重值相乘後求和獲得卷積值賦值給後面的新矩陣的這個過程就是卷積。
可一簡單的計算下驗證,每次取出卷積核矩陣,開始用矩陣的各個位置乘以權重矩陣的各個位置,在將結果求和,就能夠獲得新矩陣對應位置的結果了。
雖然它看起來只是個簡單的數學公式,可是卻有着重要的物理意義,由於天然界這樣的系統無處不在,計算一個系統的輸出最好的方法就是運用卷積。
通俗的說,看起來像把一張二維的地毯從角沿45度斜線捲起來。
卷的過程當中,若是咱們在其上作一條直線的話,x+y爲定值的一條直線,因此捲起來後那點的函數值正好爲這條直線上函數值的積分。
本質上卷積是將二元函數 U(x,y) = f(x)g(y) 捲成一元函數 V(t) ,俗稱降維打擊。
卷積就是這樣,有一個比喻我以爲很形象,你被人打了一圈,臉上腫包的過程,就是這樣一層疊一層,每一次操做疊加到下一次中。
卷積具有線性特質:其特色是穩定且平滑,具有連續性,因此能夠用來推導預測某些事物。
卷積能夠看作是矩陣和矩陣的操做,能夠快速帶入計算大大節省每次都須要循環遍歷的計算,
好比咱們去實現平均模糊於高斯模糊,若是咱們在遍歷的循環中在套上一個循環來處理累加求和數據會很慢,使用矩陣計算,則可讓這個過程變爲一次計算。性能極大的提高了。
卷積由於卷積核權重值不一樣,或則系統算法不一樣能夠用來處理不一樣的問題。
例如模糊中,卷積權重值都同樣,能夠用用來作均勻模糊,若是權重值是用高斯算法求得,結果則有不同。
這裏我不作過深的討論了,意在講清楚我對於卷積的理解和見解。若是想深刻了解的,能夠在找些資料,
本文裏提到的一些資料在下面這些連接裏能夠找到
https://www.jianshu.com/p/2a3cc736b723 什麼是卷積
https://www.cnblogs.com/sevenyuan/p/7810755.html
https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7/5450468?fr=aladdin