我在 matlab 中加载图像并将它们作为双矩阵使用。
现在我想从图像的一个点到另一个点的直线上提取数据值。然而,这条线不等于一列或一行(这很容易)。
我怎么能用matlab做到这一点?
一条线服从该线的 eq y=a*x+b
。这里 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;
计算线参数的ew:
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))