看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《fcouple (人生啊…)》之銘言: : 聲明一下,這不是我的「工作文」也不是「作業文」,所以請放心 : ,是我無聊寫程式罷了。(怕引起反感,先聲明) : 無聊看以前大學時代的作業,看完後不要命的想一件事: : 「每個人都玩黑白圖片做 sobel,我想試試彩色的會怎樣」 : sobel 基本原理我很熟,維基百科也看過了: : http://en.wikipedia.org/wiki/Sobel_operator : 我的目標是要把一個 24 bit(全彩) 的圖檔做 sobel 處理。 : 我有參考這個程式: http://www.pranaypatel.com/?page_id=112 : 我的作法: : 1.每個 3乘3 的點去乘 sobel 的 mask,得到 Gx,Gy : 2.取絕對值相加 x = abs(Gx) + abs(Gy) : 3.x超過255就給255,小於0就給0 : 4.每個相素的r、g、b都用上面1、2、3步驟 : 但經過上面的演算步驟後,得到的 sobel 都不盡理想。 : 我找到這個,這樣的彩色 sobel 才是我要的(只有圖,沒程式): : http://hwshow-ipc.blogspot.com/2010/01/hw7-sobel-operator.html : 這個人的 sobel 實在太美,我懷疑他有做「細化」「去雜訊」演 : 算法。 之前在工作上有和人合作過影像處理的經驗 不過我本身對這個領域其實不太熟. 不過你參考一下.. 1. 彩色除了轉 RGB 處理以外, 有時候可能是轉成 YUV 或其他 color space 來處理, 甚至也可能是只對其中一兩個軸運算 這個色彩學有點關係.. 細節我忘光了.. XD 2. 從範例看起來 Y = X and Sobel(Gray(X)) 你試試看先把圖轉成灰階來做 Sobel 然後再拿原圖的顏色標到圖上就是你要的吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.92.137
fcouple:方法2我有想過,手續比較多,但確實可行。 02/13 15:28
fcouple:有時在想,網路上的人倒底有沒有做假,為何他們的彩色 02/13 15:29
fcouple:sobel 與眾不同。 02/13 15:29
fcouple:打太快,補上個「謝謝」。 02/13 15:30
xam:手續比較多? 不是多呼叫兩三個函式嗎? 應該大概20行吧? 02/13 15:44
VictorTom:小弟猜主要是第一點. 簡單的說做邊緣偵測的時候要以什麼 02/13 16:53
VictorTom:樣的觀點來決定邊緣. 印象中人眼對亮度的變化比色度明顯 02/13 16:54
VictorTom:所以通常邊緣偵測多見到直接轉灰階就算下去了. 如果要以 02/13 16:55
VictorTom:顏色的"距離"來算, 可能就要轉換到合適的ColorSpace去算 02/13 16:55
VictorTom:也就是單純把RGB當三維座標XYZ計算出距離不太能反應人眼 02/13 16:59
VictorTom:對不同顏色差距的感受, 所以需要轉換. 印象中好像是 02/13 17:00
VictorTom:La*b*還是Lu*v*比較接近, 一時查不到Orz 不過這個計算量 02/13 17:00
VictorTom:值不值得, 又是另一個問題了....XD 02/13 17:00
fcouple:對啊,一般人的做法的確直接轉灰階就上,所以我才想挑戰高 02/13 18:40
fcouple:難度,卻又玩過頭,一個晚上又沒睡。 02/13 18:40
fcouple:我一直在想YUV的問題,該不會是用Y做sobel然後再拿UV去為 02/13 18:43
fcouple:邊緣上色(想破頭),至於你提的La*b*,Lu*v*小弟不才,還沒 02/13 18:44
fcouple:聽過,我先來 google 惡補一下。 02/13 18:45
VictorTom:http://www.couleur.org/ 這個網站有趣的地方在於它有 02/13 19:02
VictorTom:提供demo程式show給你看不同的ColorSpace是什麼'樣子':) 02/13 19:03
VictorTom:也有些document整理轉換工式, 有興趣自己玩玩看吧XD 02/13 19:06
fcouple:哇,做的很炫,開眼界了。 02/13 19:24