Gx
2010年1月19日 星期二
2010年1月17日 星期日
HW7

作業:梯度Sobel
主要的原理就是利用Sebel來把圖片作轉換,不過這次是考完期末考才弄這個作業的。
所以除了研究一下程式碼部分是如何做到這些之外還花了點時間看看課本到底寫了些甚麼....
在之前的作業六模糊可以從像素的週圍取平均來達成,所以銳化就可以反向思考,
用上次的程始碼加以修改來做到這次的轉換
此濾波器在課本內第一個是使用拉普拉斯轉換,但是課本說的非常的文言文
大概看了十多分鐘都看不懂就被我跳過去了(笑)
第二種是使用非線性的一階倒數作轉換,它的作法是在一個3*3的區域內做影像增強
公式是直接複製同學的(因為自己懶得照書上的畫表格)
GY = 銳利化矩陣(對Y維度的差異)*九宮格的色彩值
-1,-2,-1
+0,+0,+0
+1,+2,+1
----------
GX = 銳利化矩陣(對X維度的差異)*九宮格的色彩值
-1,0,1
-2,0,2
-1,0,1
然後對圖片作轉換就可以了
他也稱做梯度轉換,
通常在實做方面都是拿來偵測瑕疵,或是把它當作自動檢測的預處理步驟、或是用來在醫學上做檢測
hw07
↑這是在網路上找到的圖片,也就是濾波器的示意圖,原本應該放在hw6裡面,不過懶的去重新編輯,就把它放到這裡來囉
↑這是這次做梯度銳化的公式,其實梯度銳化就只是要去強調"邊界"的部分,藉由算出Gx水平差異和Gy垂直差異後,將其個別取絕對值後相加→G=|Gx| + |Gy| 後就可以得到我們要的結果。
在這之中,Gx和Gy的公式很容易搞錯......Gx是要算水平差異,所以0應該擺垂直的,這樣才能算出"左右"的差別,而不是把0擺水平......(應該是這樣子吧)。實際上寫程式的時候,因為公式的關係,最後兩個結果還是要相加,搞錯了也不會影響結果阿~~~囧
↓這是我的實作圖
其實這張圖還是有一點彩度,所以很多細節的地方看起來會很亂......
所以我就大概歸類了一下
當G >250 則 G=255
當25< G <100 則 G=50
當100< G <250 則 G=150
其他G=0之後
↓圖片就會簡單許多,看起來也比較不會覺得很雜亂
其實這次的梯度運算公式只知道個大概,反正把水平or垂直變化大的地方特別顯示出來,就可以達到銳化的效果了吧!
HW7
第七個作業是梯度Sobel , 把一張圖做邊緣偵測 (應該就是把邊緣像素
的差距明顯化..我自己的解釋) , 跟上次作業其實很像, 只是一個要銳利化
一個要模糊化 ,實作的方法就是用兩個遮罩(一個對X方向偵測 , 一個是
對Y方向的偵測)
↓下面就是使用的兩個遮罩

有兩個公式可用
G = GX + GY
G = (GX^2 + GY^2)^1/2
一開始我用 sqrt [ pow(GX,2) + pow(GY,2) ]
以為作業很簡單 , 很容易就寫出來了XD
可是同學說run出來的結果很奇怪 , 出現雜亂的顏色
我還自作聰明的給他3次方, 最後出現sqrt error ... 後來才想到3次方會有
負值 , 不可以開根號 , 最後問同學才知道自己沒有把值限制在255之間 ,
才有很奇怪的顏色出現
↓下面是最後實作出來結果

黑白影像會更明顯

再來我用 G = abs(GX) + abs(GY)
依照數學原理來說 , 應該差值會更明顯 , 可是跑出來的結果幾乎完全相同?
的差距明顯化..我自己的解釋) , 跟上次作業其實很像, 只是一個要銳利化
一個要模糊化 ,實作的方法就是用兩個遮罩(一個對X方向偵測 , 一個是
對Y方向的偵測)
↓下面就是使用的兩個遮罩

有兩個公式可用
G = GX + GY
G = (GX^2 + GY^2)^1/2
一開始我用 sqrt [ pow(GX,2) + pow(GY,2) ]
以為作業很簡單 , 很容易就寫出來了XD
可是同學說run出來的結果很奇怪 , 出現雜亂的顏色

我還自作聰明的給他3次方, 最後出現sqrt error ... 後來才想到3次方會有
負值 , 不可以開根號 , 最後問同學才知道自己沒有把值限制在255之間 ,
才有很奇怪的顏色出現
↓下面是最後實作出來結果

黑白影像會更明顯

再來我用 G = abs(GX) + abs(GY)
依照數學原理來說 , 應該差值會更明顯 , 可是跑出來的結果幾乎完全相同?
HW07
關於這次作業是用Sobel去作轉換
用兩個遮罩呈現梯度銳化的效果
分別是水平遮罩和垂直遮罩來控制整個的變化
可以看到雖然有作轉換且成功,但仔細一看會看到右半邊臉似乎有很多的紋路出現
一開始是想說會不會是我找的圖才會有這樣的效果
於是想說試著把裡面的值作一些差距上的變化,把1 ˇ -1--->0.1 ˇ -1;2ˇ-2 --->1ˇ-1
有了不一樣的感覺
有感覺到剛剛紋路的問題似乎消失了
可是整張圖卻也變得黯淡許多
於是再回到初始設定試著只把2ˇ-2 --->0.1ˇ-0.1
發現得到這樣的結果
明顯有明亮了一點,可是當min超過0.1時會有溢位的問題產生就是了
不過倒是觀察出當梯度銳化效果明顯時其值越小越好
彩色部分還是有小問題存在( 依然會有彩色出現 )
或許這一部份要在找時間好好釐清會比較瞭解一點
因為灰階圖去跑時沒有問題出現
應該是程式碼有地方想得不夠周全,要再多請教別人了!
HW7
2010年1月16日 星期六
HW7
作業~梯度Sobel
老實說拿第六個作業改蠻快的
就是兩個銳利化矩陣跟中心點的差值
公式是
GY = 銳利化矩陣(對Y維度的差異)*九宮格的色彩值
-1,-2,-1
+0,+0,+0
+1,+2,+1
----------
GX = 銳利化矩陣(對X維度的差異)*九宮格的色彩值
-1,0,1
-2,0,2
-1,0,1
原以為所謂梯度就以距離公式求出:
G = (GY^2+GX^2)^(1/2)
不過後來又看到其他同學有另一個公式
就有點搞不懂梯度的定義了@@
這個該不會表是成向量形式的吧?
G = |GY|+|GX|
=========================================================
原圖

=========================================================
套(GX^2+GY^2)^1/2

=========================================================
套(GX^2+GY^2)^1/2
+
避免溢位(超過255設255,低於0設0,把所有值設定在0~255)

=========================================================
套(GX^2+GY^2)^1/2
+
避免溢位(超過255設255,低於0設0,把所有值設定在0~255)
+
彩階轉灰階
+
設臨界值把色彩值變二元化,並將色彩值反印(0變255,255變0)

感覺上頗有慢畫的風格@@~
感覺有點溫故知新~~(彩階轉灰階)
有看到別的同學再將圖銳利化處理
使雜訊消除讓線條更明顯
當消雜訊而圖變太銳利時,說不定使用平滑也有不錯的效果
之後再做GARMMA把不明顯紋路凸顯
(不過可能要考慮要在銳利或平滑前還後執行,可能就要實做看看了@@)
覺得原來我們做作業當學越多時
應該要學以致用
=========================================================
套G = |GY|+|GX|
效果好像比較細緻一些@@

=========================================================
老實說拿第六個作業改蠻快的
就是兩個銳利化矩陣跟中心點的差值
公式是
GY = 銳利化矩陣(對Y維度的差異)*九宮格的色彩值
-1,-2,-1
+0,+0,+0
+1,+2,+1
----------
GX = 銳利化矩陣(對X維度的差異)*九宮格的色彩值
-1,0,1
-2,0,2
-1,0,1
原以為所謂梯度就以距離公式求出:
G = (GY^2+GX^2)^(1/2)
不過後來又看到其他同學有另一個公式
就有點搞不懂梯度的定義了@@
這個該不會表是成向量形式的吧?
G = |GY|+|GX|
=========================================================
原圖

=========================================================
套(GX^2+GY^2)^1/2
=========================================================
套(GX^2+GY^2)^1/2
+
避免溢位(超過255設255,低於0設0,把所有值設定在0~255)
=========================================================
套(GX^2+GY^2)^1/2
+
避免溢位(超過255設255,低於0設0,把所有值設定在0~255)
+
彩階轉灰階
+
設臨界值把色彩值變二元化,並將色彩值反印(0變255,255變0)
感覺上頗有慢畫的風格@@~
感覺有點溫故知新~~(彩階轉灰階)
有看到別的同學再將圖銳利化處理
使雜訊消除讓線條更明顯
當消雜訊而圖變太銳利時,說不定使用平滑也有不錯的效果
之後再做GARMMA把不明顯紋路凸顯
(不過可能要考慮要在銳利或平滑前還後執行,可能就要實做看看了@@)
覺得原來我們做作業當學越多時
應該要學以致用
=========================================================
套G = |GY|+|GX|
效果好像比較細緻一些@@
=========================================================
HW7 - 邊緣偵測 (Sobel operator)。
嗯,這次的作業是把一張圖片做邊緣偵測,也就是把圖片顏色梯度變化最大的地方顯現出來。實作的方法有很多種,而我是使用兩個Sobel operator的運算遮罩(一個是對x方向作用;一個是對y方向作用)來跟圖片做運算後取絕對值相加,這個方法可以讓出來的結果比較精準。而兩個Sobel operator的運算係數值如下:
對x方向作用↓

對y方向作用↓

我用的公式↓

-------------------------------------------------
M(x,y) : (x,y)這點的梯度大小。
gx : 圖片的值與對x方向作用的sobel遮罩運算結果。
gy : 圖片的值與對y方向作用的sobel遮罩運算結果。
-------------------------------------------------
這次又是因為遲到沒有聽到老師的講解,一開始當然是找陪我走過一學期的課本啦,但課本的內容並不是描述的很通順(?),在加上一拖拉庫的公式就先昏了,所以進而求救於浩瀚的宇宙,喔不,是無邊的網路。我找到了一些關於Sobel的基本定義和比較清楚的數學函意講解,在我的實作過程中都有幫助到。程式撰寫方面跟上次的作業差不多,要注意的地方就是彩色和灰階所使用的矩陣個數不同(使用channel方式也可),彩色的RGB排列方式...等,以上就簡略帶過,而套用完公式後,還要再經過一些微調,才會使邊緣更清楚俐落。那廢話不多說,來看我的實作結果吧!
彩色原圖↓

彩色圖片邊緣偵測↓

灰階原圖↓

灰階圖片邊緣偵測↓

以上就是我的實作結果,光是找圖就花了不少時間呀(汗),不過努力沒有白費,最後做出了滿意的成果!
補充 :
後來把SUBARU 的Impreza跑車轉成灰階圖片去跑邊緣偵測,覺得也滿漂亮的~給大家參考一下嚕。
灰階Impreza原圖↓

灰階Impreza邊緣偵測↓
對x方向作用↓

對y方向作用↓

我用的公式↓

-------------------------------------------------
M(x,y) : (x,y)這點的梯度大小。
gx : 圖片的值與對x方向作用的sobel遮罩運算結果。
gy : 圖片的值與對y方向作用的sobel遮罩運算結果。
-------------------------------------------------
這次又是因為遲到沒有聽到老師的講解,一開始當然是找陪我走過一學期的課本啦,但課本的內容並不是描述的很通順(?),在加上一拖拉庫的公式就先昏了,所以進而求救於浩瀚的宇宙,喔不,是無邊的網路。我找到了一些關於Sobel的基本定義和比較清楚的數學函意講解,在我的實作過程中都有幫助到。程式撰寫方面跟上次的作業差不多,要注意的地方就是彩色和灰階所使用的矩陣個數不同(使用channel方式也可),彩色的RGB排列方式...等,以上就簡略帶過,而套用完公式後,還要再經過一些微調,才會使邊緣更清楚俐落。那廢話不多說,來看我的實作結果吧!
彩色原圖↓

彩色圖片邊緣偵測↓
灰階原圖↓
灰階圖片邊緣偵測↓
以上就是我的實作結果,光是找圖就花了不少時間呀(汗),不過努力沒有白費,最後做出了滿意的成果!
補充 :
後來把SUBARU 的Impreza跑車轉成灰階圖片去跑邊緣偵測,覺得也滿漂亮的~給大家參考一下嚕。
灰階Impreza原圖↓
灰階Impreza邊緣偵測↓
訂閱:
文章 (Atom)















