3

找到此图像中蓝线沿 x 轴的偏移以不变的 使其与红线匹配的最佳方法是什么?结果必须看起来像这个图像转移 )。在 MATLAB 中有像 fminunc 这样的复杂函数,但我必须处理一些时间限制,所以我想知道是否有更有效的方法。

编辑:数据来自模拟环境中激光扫描的距离测量。在 x 轴上,您可以看到以弧度为单位的每次扫描的方位与在 y 轴上以米为单位测量的范围。对于红点(参考扫描),轴承确实是均匀分布的。参考扫描始终是这种情况,但当前扫描(蓝点)则不然。

编辑:红点的数据

-1.5708    6.8542
-1.3963    6.9530
-1.2217    7.2137
-1.0472    7.6592
-0.8727    8.3326
-0.6981    9.2984
-0.5236   10.6477
-0.3491   12.5060
-0.1745   15.0092
     0   18.2745
0.1745   22.3368
0.3491   27.1113
0.5236   32.4112
0.6981   38.0010

对于蓝点

-1.3963    7.0092
-1.2217    7.3112
-1.0472    7.8065
-0.8727    8.5420
-0.6981    9.5872
-0.5236   11.0407
-0.3491   13.0360
-0.1745   15.7225
     0   19.1849
0.1745   23.4301
0.3491   28.3466
0.5236   32.4114
4

2 回答 2

1

好的,这不是“最佳”方式,但如果您不知道描述曲线的正确模型,这是一种方式:

% your first plot
figure(1), clf, hold on
plot(red(:,1), red(:,2), 'ro-')
plot(blue(:,1), blue(:,2), 'bo-')

% approximate reference with splines, so it can be evaluated anywhere
ppred = spline(red(:,1),red(:,2));

% minimize the distance between the curves
f = @(x) norm( ppval(ppred, blue(:,1)+x)-blue(:,2) );    
x0 = fminsearch(f, 0);    
blue(:,1) = blue(:,1)+x0;

% pretty close to your second plot
plot(blue(:,1), blue(:,2), 'ko-')
于 2012-10-12T18:53:45.960 回答
0

为什么不只进行网格搜索?制作一个偏移可能性网格,delta_x = [0.0001:0.2:0.0001]然后只评估偏移网格中每个位置的目标函数(最小二乘?),然后选择误差最小的那个。如果您的时间太短而无法使用,fminfunc那么网格搜索可能是一个可以接受的近似值。

于 2012-10-12T12:54:00.610 回答