MATLAB插值和排序点有助于实现

时间:2012-11-19 16:56:30

标签: matlab image-processing interpolation

我现在必须使用MATLAB进行图像处理。但我几乎不知道MATLAB的任何内容,它可能是我唯一一次使用MATLAB(我希望)。所以我想接受你的帮助。以下是我到目前为止所做的事情:

我成功地从.trk文件中读取了数据并解析了它的标题和正文。现在我必须应用插值。在此之前,这是有关我的变量的信息:

我有tracks <1x110470 struct>。在轨道结构下,我有两个向量。它们是nPointsmatrixnPoints包含向量matrix中存在的点数。

例如,如果我选择曲目(1,95607),nPoints = 3和matrix = {(1.2323,1.4441,2.345),(2.333,4.555,4.123),(1.22,2.33,3.44)}

nPoints不是固定数字。它甚至可以是100等。但矩阵是nPoints*3向量。我总是有3个坐标。

现在我要做的是基本插值,比如占用一半边界并添加新点。让我假设,在轨道(1,2)下我有三个点a,b,c,d然后我需要添加点(a + b)/ 2和(b + c)/ 2和(c + d)/ 2。

首先,我甚至无法编写成功的算法。请你帮助我好吗? (插值将应用于所有轨道。但我不会进行任何插值,例如轨道(1,1)和轨道(1,2)之间我将仅应用于轨道内的点,并且轨道中的点也是没有排序。)

其次,我想知道的是:是否有可能有一个参数化插值的算法。我的意思是:

假设我的观点是:a,b

如果参数= 1,那么我只想添加(a + b)/ 2

如果参数= 2,那么除了参数= 1 <时,我还想要(a +(a + b)/ 2)/ 2和((a + b)/ 2)+ b)/ 2 / p>

.. .. ..

我希望它像那样迭代。有可能吗?

我编码好几个小时,现在我开始筋疲力尽了。我将非常感谢你的帮助。

亲切的问候, Amadeus的

2 个答案:

答案 0 :(得分:1)

我无法弄清楚你真正想要的“参数化插值”,我把这个最好的猜测放在这里。

我想你想在某个时刻进行[a b c d] -> [a (a+b)/2 b (b+c)/2 c (c+d)/2 d]转换,可能需要多次迭代。

对于那个问题,我的解决方案是

ret = function interp(v, rounds)
    n=length(v);
    avg = (v(1:n-1)+v(2:n))./2;
    temp = [v(1:n-1); avg];
    ret = [temp(:), v(n)];
    if rounds>1
        ret = interp(ret, rounds-1);
    end
end

[a b c d] -> [a (a+b)/2 b (b+c)/2 c (c+d)/2 d]转换由
给出 interp([a b c d], 1)

其他示例:interp([1 2], 2) - &gt; [1 1.25 1.5 1.75 2]

答案 1 :(得分:0)

查看Signal Processing和官方Matlab帮助(F1)。