請教一個sobel影像上的問題?? |
答題得分者是:JerryKuo
|
pipii44
一般會員 發表:9 回覆:10 積分:3 註冊:2004-02-13 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
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 發送簡訊給我 |
引言: 大部份大家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 發送簡訊給我 |
首先謝謝版主JerryKuo 以及richtop 的細心回答。
對於下面這段話有一些疑問。
引言: 將灰階圖SOBEL過後,還不能取出邊緣 位置(因為這是影像還是256灰階),要再經過二值化後,就變成只有黑(1)或白(0) 的黑白圖,此時才真正可以決定是否為邊緣。這就為什麼大部分show出來的sobel 邊緣搜尋結果都是黑白圖而沒彩色的原因。彩色的sobel結果只能拿來看,但沒有 用,不是嗎?那版主大大的意思是說,先將RGB轉到YCbCr,然後變成灰階的256色。 然後再設個threshold=>讓其變成黑(1)或白(0)。(二值化??) 然後決定真的邊緣。 不過為什麼彩色的會沒有啊?是因為色彩不均勻嗎?如果用單純黑或白應該比( 這蠻明顯的) 可是用RGB弄出來的看起來也蠻清楚的,為什麼不能決定其邊緣? 是因為三色,可能有一色有邊緣,另二色沒有的情況?我是這樣子想,不知道對不對?? 以下是我對彩色圖做出來的效果,小弟第一次寫,請多指教^^ |
影像處理好難
一般會員 發表:2 回覆:2 積分:0 註冊:2005-01-31 發送簡訊給我 |
|
pipii44
一般會員 發表:9 回覆:10 積分:3 註冊:2004-02-13 發送簡訊給我 |
我上面那張圖好像是做錯的。,下面這張才是對的,只是想請問一下版主大大.
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 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
引言: 首先謝謝版主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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
影像處理好難
一般會員 發表:2 回覆:2 積分:0 註冊:2005-01-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |