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

在一個矩陣中 畫出各個角度的線

答題得分者是:richtop
walalabu
一般會員


發表:4
回覆:3
積分:1
註冊:2005-06-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-23 06:37:02 IP:140.114.xxx.xxx 未訂閱
各位板友們好 想請教一個我苦思一個晚上不得其解的問題    假設現在我要在一個paintbox中的某一個矩形區域 假設這個矩形區域中有一個binary或彩色的影像 若我想用我設定的任一角度 以一定間隔畫線對這個矩形區域做掃描 來判定每一條直線上的Pixel是否有值 請問這應該如何辦到呢? 我用小畫家示意一下 由於每個角度 應該從哪一個邊開始畫 很難判定 乘一個theta角後 最後會落在哪個邊也很難判斷 而且只能掃描矩形中的區域 又假設畫出來後 應該用直線方程式來判斷影像中是否有值嗎? 還是有其他方法可以判斷呢?
limeca
中階會員


發表:2
回覆:74
積分:60
註冊:2005-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-23 08:54:27 IP:202.145.xxx.xxx 未訂閱
您好~ 您所列的條件太少了~~ 不明白您的用意... 除了彩色影像外~~其它的地方都是黑色的嗎? 為什麼一定要用斜線?橫線或直線不行?? 至於判斷的部份~這部份就很複雜~ 較簡單是用單一個R.G.B來做是較快~但太果決有一定的失誤 將RGB轉Y也是一個方法~ 但總而言之都是得看您的影像是個什麼樣的影像
walalabu
一般會員


發表:4
回覆:3
積分:1
註冊:2005-06-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-23 09:19:45 IP:211.76.xxx.xxx 未訂閱
不好意思  我再簡述一下我的問題跟我失敗的做法好了    我將原文那張圖轉成binary影像   所以只有茶裏王的部分是1  其他部分是0 然後我希望用我指定的角度(例如30度) 畫出固定間隔的多條直線(假設160條) 對方框中的PIXELS做掃描 掃描出這些直線上  各有多少個點是1(表示有偵測到茶裏王)    EX.直線1上面  有30個boolpixels    直線2上面  有25個boolpixels    .    .    .    到直線160       然後將這些直線上各有掃描到多少點  存到一個size[160]的矩陣中       我簡述一下我失敗的做法...         如上圖 我在兩個頂點畫我想要傾斜的角度的直線 並找到兩條線的方程式 ax+y+b1=0 ax+y+b2=0 之後我在這兩條直線中 找出相同間隔且平行的160條直線 然後把binary影像的pixel[x][y]代進去這些方程式裡面 看是否符合ax+b+c=0 但這樣做以失敗告終 因為代進去幾乎不可能等於0 所以我找不到每一條直線上正確的點個數 因此想請教一下大家有什麼想法即可 coding的部分我自己可以做到
richtop
資深會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-23 10:13:09 IP:140.129.xxx.xxx 未訂閱
walalabu 您好:    有兩個建議請參考: 1. 可不可以將圖形先旋轉您要的角度(直線與水平方向的夾角),如此便能用水平(或垂直)的方式來判斷。 2. 或者就是指定角度來找出線上所有的點,其實就是指定兩端點畫一直線,只是找線的方法要自己寫,那麼您要的座標就能找出來了。    關於找線的部分,我之前有個程式您參考看能不能幫上忙? < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53803">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53803 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
limeca
中階會員


發表:2
回覆:74
積分:60
註冊:2005-05-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-23 10:15:30 IP:202.145.xxx.xxx 未訂閱
嗯~~ 那如果你考慮斜率的問題 是不是就可以了 以90度角來說~~ 斜率是1 在(0,5)(1,4)(2,3)(4,1)(5,0)產生的方程式是(x/5) (y/5)=1 在(0,10)(1,9)(2,8)(3,7)(4,6)(5,5)(4,6)(3,7)(2,8)(1,9)(10,0) 產生的方程式是(x/10) (y/10)=1 以斜率的方向來思考~~ 發表人 - limeca 於 2005/06/23 10:28:33
walalabu
一般會員


發表:4
回覆:3
積分:1
註冊:2005-06-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-23 12:12:16 IP:140.114.xxx.xxx 未訂閱
richtop兄感謝您的建議 方法一我會試試看 因為如果矩形在影像的邊緣的話 翻轉會有問題 我會試著搬到影像中間 然後翻轉後在掃 至於第二個方法其實我也試過了 您的程式我之前也看過了 主要是因為矩形長寬不一 而且角度太多 要找到線的起始點跟終點在哪個邊上也很困難 要考慮的情形太多了 另外也感謝limeca兄的回答
richtop
資深會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-23 16:27:37 IP:140.129.xxx.xxx 未訂閱
walalabu 您好:    
引言: 至於第二個方法其實我也試過了 您的程式我之前也看過了 主要是因為矩形長寬不一 而且角度太多 要找到線的起始點跟終點在哪個邊上也很困難 要考慮的情形太多了
其實問題應該沒有您想像的複雜。 可以利用截距去調每條線的位置! 簡單討論供您參考一下。 直線方程式:y=mx b, m:斜率,b:截距(與y軸的交點) 1) 與x軸(y=0)的交點:x=-b/m; 2) 與y軸(x=0)的交點:y=b; 3) 與x=w的交點:y=mw b; 4) 與y=h的交點:x=(h-b)/m; RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
walalabu
一般會員


發表:4
回覆:3
積分:1
註冊:2005-06-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-24 02:18:50 IP:140.114.xxx.xxx 未訂閱
恩 感謝richtop兄的回答 我已經用第一個方法成功掃出histogram了 至於第二個方法 我有空會試試的:P
系統時間:2024-05-05 22:19:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!