關於camera的影像校正 |
尚未結案
|
shenglin
一般會員 發表:12 回覆:6 積分:3 註冊:2004-05-02 發送簡訊給我 |
大家好:
小弟看到http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34973討論到影像扭曲的問題,影像輸入應該都是矩型的,例如附圖.
這類問題是屬於camera calibration的問題,影像通常是放射狀的變形(就座標加上一位移到新座標),我參考大部分的文章都是討論利用Tsai's algorithm(可用google找一下),上面主要的function為下式
Xu=Xd+(Xd-Cx)(K*Rd^2)
Yu=Yd+(Yd-Cy)(K*Rd^2)
(Xu,Yu)為校正後的影像,(Xd,Yd)為原始扭曲影像,(Cx,Cy)為原始影像中心,Rd^2=Xd^2+Yd^2,K為照相機的參數(我設為可自行輸入的參數)
小弟想要implement這個方法,嘗試改寫程式如下:
int r; int cx=ImgWidth/2; int cy=ImgHeight/2; int angle=StrToInt(InputBox("parameter", "K", "0.01")); BYTE *ImgLine,*ImgLines; for(int y=0;y程式有許多漏洞和不完整,請各位高手指教 還有看了原文章是用投影方式去思考,可是小弟還是不知道投影的方法是怎樣解決,效果好嗎 發表人 - shenglin 於 2004/05/03 01:04:24 發表人 - shenglin 於 2004/05/03 13:04:40 發表人 - shenglin 於 2004/05/03 15:49:30 |
johnjohn
一般會員 發表:6 回覆:59 積分:13 註冊:2004-04-20 發送簡訊給我 |
shenglin你好
首先你必須知道>率定後的影像中心>而不是<>原始影像中心>. class="code">int SrcBitmapx=(int)(x (x-cx) (r*r)*k);
int SrcBitmapy=(int)(y (x-cy) (r*r)*k);
這兩行.你把率定後的x,y坐標轉為整數,除非你是為了顯圖容易,否則並不建議這樣做.率定後的x,y坐標還是應該維持浮點數,才能達到較正的目的喔. 建議4:你的相機率定參數是如何得到的呢,是和你所要校正的影像同時得到的嗎?如果不是,建議你同時完成這兩件事(拍攝率定影像and拍攝欲校正之影像),這樣才能得到較精確的率定參數(你用的應該是數位像機吧,有原場的率定參數嗎,就算有也建議你自己重新計算這些參數). 以上這些建議,你可以先參考第4點去試試,因為率定參數的好壞才是最重要的.還有,不要自己隨便去假設率定參數喔(會不合理) >>SPATIAL INFORMATION IS COOOOL<<
|
shenglin
一般會員 發表:12 回覆:6 積分:3 註冊:2004-05-02 發送簡訊給我 |
|
johnjohn
一般會員 發表:6 回覆:59 積分:13 註冊:2004-04-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |