這個例子將類似於Amro's,但它是一個稍微不同的實現,應該對任意座標系工作分配給圖像...
讓我們假設您有矩陣的規則間距的x和y座標是與您的圖像相同的大小,使得像素(i,j)
的座標由(x(i,j),y(i,j))
給出。作爲一個例子,我將創建5乘5整數的組座標使用MESHGRID樣品:
>> [xGrid,yGrid] = meshgrid(1:5)
xGrid =
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
yGrid =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
接下來,我們可以定義通過爲常數和計算選擇一些值通過座標系傳遞線y = m*(x - a) + b
y
使用網格的x座標:
>> a = 0;
>> b = 1;
>> m = rand
m =
0.5469
>> y = m.*(xGrid(1,:)-a)+b
y =
1.5469 2.0938 2.6406 3.1875 3.7344
最後,我們發現在網格通過從上面計算的不同點在y點小於網格尺寸:
>> index = abs(yGrid-repmat(y,size(yGrid,1),1)) <= yGrid(2,1)-yGrid(1,1)
index =
1 0 0 0 0
1 1 1 0 0
0 1 1 1 1
0 0 0 1 1
0 0 0 0 0
,並使用該索引矩陣得到由線越過像素x和y座標:
>> xCrossed = xGrid(index);
>> yCrossed = yGrid(index);
荷銀嗨!我昨天晚上寫了一些非常相似的東西,用「bresenham算法」代替四捨五入(y = round(f(x)))。感謝您的代碼,我在代碼中發現了錯誤。非常感謝!! – zhengtonic 2009-09-16 09:23:22
事實上,舍入只是一個快速的解決方案..你可以通過沿着線插入強度值來改善這種「探測」技術 – Amro 2009-09-16 17:11:25