2013-02-07 149 views
1

我在matlab中加載圖像,並將它們作爲雙矩陣處理。提取圖像行(矩陣)

現在我想要從圖像的一個點到另一個點的直線上提取數據值。然而,這行不等於列或行(這很容易)。

我該怎麼用matlab做到這一點?

回答

4

一條線服從y=a*x+b的eq。這裏x和y是圖像的座標。所以如果你想要一個由兩個點(x1,y1) -> (x2,y2)定義的線,斜率a(y2-y1)/(x2-x1)b=y1-a*x1。因此下,在矩陣中選擇點的服從線的當量如下:

創建數據點和結束點:線路參數

m=peaks(50); 
x1=5 ; x2=42; 
y1=21; y2=29; 

計算EW:

a=(y2-y1)/(x2-x1); 
b=y1-a*x1; 

定義line:

x=x1:x2; 
y=round(a*x+b); 

使用線性索引選擇適當的矩陣元素:

ind=sub2ind(size(m),y,x) 

情節:

subplot(2,1,1) 
imagesc(m); hold on 
colormap(bone) 
line([x1 x2],[y1 y2],'Color',[1 0 0]); 

subplot(2,1,2) 
plot(m(ind)) 

enter image description here

+0

工作得非常好!然而,a的計算是錯誤的(x和y顛倒過來):'a =(y2-y1)/(x2-x1);' –

+0

已經糾正(在代碼中但不在解釋中)......感謝注意。現在糾正了。 – bla