全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4562
推到 Plurk!
推到 Facebook!

請教一個sobel影像上的問題??

答題得分者是:JerryKuo
pipii44
一般會員


發表:9
回覆:10
積分:3
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-31 15:22:02 IP:163.25.xxx.xxx 未訂閱
請問一下: 小弟之前沒處理過影像,看了很多文章,但還是想請教一下。 大部份大家Show的都是黑白圖。 如果是彩色的畫,也是分別對三個的R,G,B矩陣去做處理嗎? 那還有個疑問,那如果對第一點(0,0)來點來說,他有五點沒值,是不是要用0取代或是相鄰值的值複製過去(在處理邊緣偵測時)。 謝謝回答。
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-31 16:45:56 IP:211.76.xxx.xxx 未訂閱
pipii44 您好:    如果是彩色的畫,也是分別對三個的R,G,B矩陣去做處理嗎? 是的。 那還有個疑問,如果對第一點(0,0)來說,他有五點沒值,是不是要用0取代或是相鄰值的值複製過去(在處理邊緣偵測時)。 對於邊界部份可以不算,或者如您所說的就當成零。也可以像貼瓷磚一樣,將圖形視為相同圖形的併貼。 底下連結可以參考一下: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48292 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### 發表人 - richtop 於 2005/01/31 16:52:34
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-31 18:02:34 IP:220.135.xxx.xxx 未訂閱
引言: 大部份大家Show的都是黑白圖。 如果是彩色的畫,也是分別對三個的R,G,B矩陣去做處理嗎?
sobel的作用就是強化邊緣,如果分別用RGB做sobel,那就會有三個強化邊緣後的 結果,SobelR,SobelG,SobelB,但圖只有一個,求得三個結果似乎不能決定哪裡是 邊緣,取R,取G或取B都可能造成很大的誤差。 所以大部分的人都會先將RGB的圖先轉成YCbCr的值域或RGB取平均,變成灰階圖, 這樣參考值就只剩下一個,不再是RGB三個。將灰階圖SOBEL過後,還不能取出邊緣 位置(因為這是影像還是256灰階),要再經過二值化後,就變成只有黑(1)或白(0) 的黑白圖,此時才真正可以決定是否為邊緣。這就為什麼大部分show出來的sobel 邊緣搜尋結果都是黑白圖而沒彩色的原因。彩色的sobel結果只能拿來看,但沒有 用,不是嗎?
引言: 那還有個疑問,那如果對第一點(0,0)來點來說,他有五點沒值,是不是要用0取代或是相鄰值的值複製過去(在處理邊緣偵測時)。
這裡有兩種方法去做, 1.直接放棄影像邊邊的點,因為邊界做出來的sobel沒多大的用處。 2.pedding,意思就是邊界向外複製,以3x3 soble而言,對於邊界不存在的點,視為 與鄰近的實際點相同,這樣就能做出較好的邊界結果。不過為了這個方法,額外 要付出很多程式複雜度和coding effort,吃力不討好。會做到這樣的,需要有點 程度龜毛。
pipii44
一般會員


發表:9
回覆:10
積分:3
註冊:2004-02-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-31 19:11:10 IP:163.25.xxx.xxx 未訂閱
首先謝謝版主JerryKuo 以及richtop 的細心回答。 對於下面這段話有一些疑問。
引言: 將灰階圖SOBEL過後,還不能取出邊緣 位置(因為這是影像還是256灰階),要再經過二值化後,就變成只有黑(1)或白(0) 的黑白圖,此時才真正可以決定是否為邊緣。這就為什麼大部分show出來的sobel 邊緣搜尋結果都是黑白圖而沒彩色的原因。彩色的sobel結果只能拿來看,但沒有 用,不是嗎?
那版主大大的意思是說,先將RGB轉到YCbCr,然後變成灰階的256色。 然後再設個threshold=>讓其變成黑(1)或白(0)。(二值化??) 然後決定真的邊緣。 不過為什麼彩色的會沒有啊?是因為色彩不均勻嗎?如果用單純黑或白應該比( 這蠻明顯的) 可是用RGB弄出來的看起來也蠻清楚的,為什麼不能決定其邊緣? 是因為三色,可能有一色有邊緣,另二色沒有的情況?我是這樣子想,不知道對不對?? 以下是我對彩色圖做出來的效果,小弟第一次寫,請多指教^^
影像處理好難
一般會員


發表:2
回覆:2
積分:0
註冊:2005-01-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-31 20:23:01 IP:211.79.xxx.xxx 未訂閱
請問JerryKuo大大,看您的文章令人佩服,小弟新手上路想請問您幾個問題 1.您的意思是彩色影像可用YCbCr中的Y來作Sobel? 2.Sobel得出的edge為舌只能拿來看?不能加回去原來的Y來作edge enhance? 3.若不行,您會建議用那個方法作edge enhance? 小弟分別對RGB作Sobel或Laplacians而後分別加回原來的RGB都會遇到有的邊顏色不對的問題,是得用向量的運算法嗎?或有其他方法? 煩請JerryKuo大大指點一下,感激不盡!
pipii44
一般會員


發表:9
回覆:10
積分:3
註冊:2004-02-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-31 20:39:26 IP:163.25.xxx.xxx 未訂閱
我上面那張圖好像是做錯的。,下面這張才是對的,只是想請問一下版主大大. Sobel裏面的一個小地方,我看有人是這樣,這樣寫似乎才比較合理。 下面的code是新的圖,也是引用某一會員或版主的程式。  
                         if (Gy<0)
                                Gy=-Gy;
                        if ((Gx+Gy)/2>255)
                                m_ProcRmat[i][j]=255;
                        else
                                m_ProcRmat[i][j]=(Gx+Gy)/2;
另一篇文章有一個人這樣寫,引用某一會員,但做出來的是上一張圖,效果 不好,而且怪怪的。
                         if (Gy<0)
                                Gy=-Gy;
                        if ((Gx+Gy)>255)
                                m_ProcRmat[i][j]=255;
                        else
                                m_ProcRmat[i][j]=0;
對了,最後可能還要麻煩版主把第一次po出來的圖砍了,因為我忘記轉成.jpg,會佔空間,不好意思。
pipii44
一般會員


發表:9
回覆:10
積分:3
註冊:2004-02-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-31 21:39:19 IP:163.25.xxx.xxx 未訂閱
介紹一個站,我覺得還不錯,不過搞不好大家都知道了... http://www.csie.ntust.edu.tw/~klchung/content2s.htm 下面有程式碼可以下載,寫的還算簡單易懂,大家可以參考看看!有關RGB轉ycbcr 可是我有個問題想問一下各位大大,一般如果轉到Ycbcr,如果要變成圖Show出來的話,我聽他們說要再轉回到RGB,right??因為YCBCR畫出來的圖怪怪的!!
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-01 09:59:33 IP:220.135.xxx.xxx 未訂閱
引言: 首先謝謝版主JerryKuo 以及richtop 的細心回答。 對於下面這段話有一些疑問。
引言: 將灰階圖SOBEL過後,還不能取出邊緣 位置(因為這是影像還是256灰階),要再經過二值化後,就變成只有黑(1)或白(0) 的黑白圖,此時才真正可以決定是否為邊緣。這就為什麼大部分show出來的sobel 邊緣搜尋結果都是黑白圖而沒彩色的原因。彩色的sobel結果只能拿來看,但沒有 用,不是嗎?
那版主大大的意思是說,先將RGB轉到YCbCr,然後變成灰階的256色。 只利用Y值做sobel,做完sobel之後再二值化 然後再設個threshold=>讓其變成黑(1)或白(0)。(二值化??) 然後決定真的邊緣。 不過為什麼彩色的會沒有啊?是因為色彩不均勻嗎?如果用單純黑或白應該比( 這蠻明顯的) 可是用RGB弄出來的看起來也蠻清楚的,為什麼不能決定其邊緣? 是因為三色,可能有一色有邊緣,另二色沒有的情況?我是這樣子想,不知道對不對?? 你說的沒錯,一色有邊緣,另二色沒有的情況下,似乎沒辦法判斷是否為邊界。 所以才會轉成Y值灰階圖(RGB三色都一樣顏色)來做。另外,人眼能決定的,電腦 不一定能決定。
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-01 10:49:56 IP:220.135.xxx.xxx 未訂閱
引言: 1.您的意思是彩色影像可用YCbCr中的Y來作Sobel?是的 2.Sobel得出的edge為舌只能拿來看?不能加回去原來的Y來作edge enhance? 如果把sobel當作是特效來看,想怎麼做都沒有問題 3.若不行,您會建議用那個方法作edge enhance? 如果要讓邊緣明顯,我是會建議,RGB先轉YCbCr,再用High Boost filter 自由調整增強的幅度,最後YCbCr再轉成RGB秀在Windows的電腦螢幕上 小弟分別對RGB作Sobel或Laplacians而後分別加回原來的RGB都會遇到有的邊顏色不對的問題,是得用向量的運算法嗎?或有其他方法? 人眼看的RGB是一個顏色,電腦看的RGB是三個顏色,做完sobel或Laplacians, RGB三色並沒有同時增強或同時減弱,實際上是各奔東西,有增有減,原本是紅色 但如果R值變0,G值變255,B值維持0,顏色就會由紅變成綠,而不會是預期中的更 紅或更淺紅,這樣的結果一定會發生,但不一定是你想見到的。 小弟才疏學淺,會的就幾招而己,我只會建議你轉成灰階做,不建議RGB三色一起做
pipii44
一般會員


發表:9
回覆:10
積分:3
註冊:2004-02-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-02-01 12:57:11 IP:163.25.xxx.xxx 未訂閱
謝謝你的幫助^^ 慢慢懂蠻多東西了!
影像處理好難
一般會員


發表:2
回覆:2
積分:0
註冊:2005-01-31

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-02-01 16:45:21 IP:211.79.xxx.xxx 未訂閱
太感謝JerryKuo大大的回答! 令人有毛塞頓開的感覺, 就先試試看Y的High Boost filter! 謝謝!
系統時間:2024-05-17 10:19:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!