1.2--1.3卷積神經網絡筆記—邊緣檢測實例

一.如何在圖像中檢測(垂直)邊緣(計算過程):

左圖:灰度圖像6*6矩陣,(彩色圖像爲6*6*3,灰度圖像沒有RGB三通道)

中間圖:爲檢測圖形垂直邊緣,構建3*3矩陣,稱爲過濾器(或核)

右圖:用3*3過濾器對6*6矩陣進行卷積運算,輸出結果是右圖的4*4矩陣,可以理解爲另一張圖片。

卷積的計算過程:4*4矩陣的下標爲(1,1)的值如下圖所示:

將3*3矩陣與6*6矩陣相應元素相乘,再相加即可。3*1+1*1+2*1+0*0+5*0+7*0+1*-1+8*-1+2*-1=-5

4*4矩陣的下標爲(1,2)的值即將3*3濾波器矩陣向右移:

其他值同樣對3*3濾波器矩陣進行移動 :

如果用python實現這個過程用函數:conv_forward()

二.爲什麼上述過程可以做垂直邊緣檢測?

 eg1垂直邊緣檢測輸出結果矩陣的含義:


左圖:圖像矩陣,【白 灰】,中間有一條垂直的(由淺到深色)過渡線

中間圖:濾波器矩陣 ,可視化成:【白 灰 黑】

右圖:依據上述方法卷積所得結果。如果當成圖像:【灰 白 灰】(矩陣數值越大,亮度越高)

卷積所得矩陣中間是高亮區,對應所檢測圖像(左圖)中間有垂直邊緣,但維數與原圖像邊緣不同,(檢測到的結果太粗了)原因是圖片維數(6*6)太小了。

eg2垂直邊緣檢測濾波器表示明暗變化:


圖片矩陣左右翻轉,濾波矩陣不便,得到的新圖片矩陣中間值變成負值(原矩陣值得相反數),上圖正值表示從亮到暗過渡,下圖負值表示由暗到亮過渡。如果不想要這種正負提供的信息,可以將卷積所得到的矩陣取絕對值。

eg3水平邊緣檢測濾波器:


在相應邊緣有明暗變化    1 1 1     -1  -1  -1

eg4略複雜輸入圖片水平檢測的例子:


卷積所得輸出矩陣數值與輸入矩陣的綠、黃、紫(3*3)矩陣 塊相互對應,輸出矩陣的30,-30分別表示由亮到暗、由暗到亮的變化;10,-10是中間值(對應3*3矩陣塊沒有明顯邊緣變化)。但是當輸入圖片特別大的時候,不會出現10這麼大的中間值。

eg5不同的邊緣檢測濾波器矩陣:


sobel filter :增加中間行權重,也就是圖像中間的像素點,增加結果魯棒性

將垂直邊緣濾波器旋轉90,得到水平邊緣濾波器

eg6 複雜圖像的邊緣檢測:

 

複雜圖像的濾波器不再是簡單的垂直或者水平邊緣檢測,可以將濾波器矩陣設置爲9個參數,利用深度學習的反向傳播算法得到濾波器的參數。可以檢測任意角度的邊緣。






發佈了15 篇原創文章 · 獲贊 41 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章