提取图像线(矩阵)

时间:2013-02-07 08:52:24

标签: matlab matrix plot

我在matlab中加载图像并将它们用作双矩阵。

现在我想从图像的一个点到另一个点的直线上提取数据值。然而,这一行不等于列或行(这很容易)。

我怎么能用matlab做到这一点?

1 个答案:

答案 0 :(得分:5)

一条线服从线y=a*x+b的eq。这里x和y是图像的坐标。因此,如果您想要由两个点(x1,y1) -> (x2,y2)定义的线,则斜率a(y2-y1)/(x2-x1)b=y1-a*x1。接下来,选择矩阵中的点,遵循线的eq,如下所示:

创建数据和终点:

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

计算线参数的数量:

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

定义行:

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