0

我可以用点画一条线,但我不知道如何画一条曲线。

这是我的代码:

clc;
clear all;
I = imread('im6f.jpg');
figure,imshow(I);

[x,y] = ginput(2);

然后我使用距离公式得到长度。

我该怎么做曲线?

4

1 回答 1

2

interp1用于插值样条曲线怎么样?假设fold = 10是您想要的分辨率的近似增加。然后,[x, y] = ginput()没有特定的积分上限。用户指定的点数是n = length(x)。然后,

t = 1 : (1/fold) : n;
xi = interp1(1 : n, x, t, 'spline');
yi = interp1(1 : n, y, t, 'spline');
plot(xi, yi, 'linewidth', 3);

为您提供以下内容,其中红色斑点标记了我单击的点。您必须按Enter停止收集坐标。

在此处输入图像描述

xi并且yifold-fold 重采样坐标x并用作插值方法y'spline'你可以看看这个以获取其他选项。

dx = xi(1 : end-1) - xi(2 : end);
dy = yi(1 : end-1) - yi(2 : end);
d = sum(sqrt(dx.^2 + dy.^2));

d大致是该样条的长度,计算为所有边的长度之和。在上图所示的情况下,d = 118.97

于 2013-11-06T05:16:45.733 回答