我有一組點,我想傳播到由二值圖像定義的形狀邊界邊緣。形狀邊界由1px寬的白色邊緣定義。Matlab - 將點正交傳播到形狀邊界的邊緣
我有這些點的座標存儲在一個2行n列矩陣。該形狀形成一個凹面邊界,其內部沒有任何孔,由大約2500點組成。我有大約80到150點,我希望在形狀邊界上傳播。
我想從正交方向上的點集合中的每個點投射射線,並檢測它在哪個點與形狀邊界相交。正交方向已經確定。對於所需目的,使用點1和點1計算點的等高線的法線。
什麼是最好的方法來做到這一點? 是否有某種可以使用的光線追蹤算法?
非常感謝您的幫助!
編輯:我試圖讓問題更清晰,並添加了描述問題的圖像。在圖像中,灰線代表形狀輪廓,紅點代表我要傳播的點,綠線代表假想的正投射線。
alt text http://img504.imageshack.us/img504/3107/orth.png
ANOTHER編輯:爲了澄清我已經發布了用於計算每個點的法線的代碼。 xt和yt是存儲每個點座標的向量。計算出正常值後,可以使用linspace函數和正交線的請求長度來傳播它。
%#derivaties of contour
dx=[xt(2)-xt(1) (xt(3:end)-xt(1:end-2))/2 xt(end)-xt(end-1)];
dy=[yt(2)-yt(1) (yt(3:end)-yt(1:end-2))/2 yt(end)-yt(end-1)];
%#normals of contourpoints
l=sqrt(dx.^2+dy.^2);
nx = -dy./l;
ny = dx./l;
normals = [nx,ny];
什麼是綠線正交?通過「正交方向已經確定」,你的意思是我們可以把它看作一個給定的部分數據嗎? – AVB 2010-04-20 14:05:27