1

我正在用 MATLAB 开发一个图像处理程序。其中一部分涉及从输入图像中以固定间隔对一些点进行采样(这基本上是具有1 像素宽边缘的二进制线图,类似于 Paint / GIMP / Photoshop 中的“铅笔”工具制作的那些),以及然后生成以采样像素为节点的三次样条曲线。

现在,我知道如何在给定一组点的情况下在 MATLAB 中生成三次样条(x, y),但问题是:图像不是真正的函数x比如x像素的行号),因为它可能有多个“值” " 在每个 x - 值是该行中所有黑色列的数量。因此,MATLAB 的spline()函数抱怨“数据站点应该是不同的”。

我该如何解决这个问题?

4

1 回答 1

2

我建议将您的函数转换为参数形式,然后在x和上执行两个样条曲线y

   y = f(x) =>   

   y(t),x(t)

在 Matlab 中,您可以通过以下方式进行操作:

  t=1:numel(x);
  xs = interp1(t,x, ti);
  ys = interp1(t,y, ti);

您要插入的点在哪里xi以及是什么。yi


这是一个示例,其中每个数据具有多个yx在此处输入图像描述

y = -10:10;
x = y.^2;
figure;plot(x,y,'rv');

t = 1:numel(x);
ti = 1:0.05:numel(x);
xi = interp1(t,x,ti );
yi = interp1(t,y,ti );

hold on ;plot(xi,yi);
于 2012-10-14T14:03:38.113 回答