2021年cvpr-Leveraging Line-point Consistence to Preserve Structures for Wide Parallax Image Stitching(LCP)这篇论文作者给的评价指标代码。
function [ rmse ] = RMSE( img, C1, C2, pts1, pts2, mesh_X, mesh_Y, off )
X_col = linspace(1,size(img,2), C2+1); % column index of cells
Y_row = linspace(1,size(img,1), C1+1); % row index of cells
x_dis = X_col(2)-X_col(1); % the width of scale-cell
y_dis = Y_row(2)-Y_row(1); % the height of scale-cell
Mesh_p = zeros(4, 2);
rmse = 0;
for i=1:size(pts1, 2)
point = [pts1(1,i), pts1(2,i)];
px = min( find(point(1)-X_col<x_dis & point(1)-X_col>=0, 1), C2); % the x index of point's position
py = min( find(point(2)-Y_row<y_dis & point(2)-Y_row>=0, 1), C1); % the y index of point's position
Mesh_p(1:4,:) = [X_col(px), Y_row(py); % v1
X_col(px+1), Y_row(py); % v2
X_col(px+1), Y_row(py+1); % v3
X_col(px), Y_row(py+1)]; % v4
coeff_mesh_p = meshGridAlign(Mesh_p, point);
v1 = [mesh_X(py, px), mesh_Y(py, px)];
v2 = [mesh_X(py, px+1), mesh_Y(py, px+1)];
v3 = [mesh_X(py+1, px+1), mesh_Y(py+1, px+1)];
v4 = [mesh_X(py+1, px), mesh_Y(py+1, px)];
warp_point = [coeff_mesh_p(1)*v1(1)+coeff_mesh_p(2)*v2(1)+coeff_mesh_p(3)*v3(1)+coeff_mesh_p(4)*v4(1),
coeff_mesh_p(1)*v1(2)+coeff_mesh_p(2)*v2(2)+coeff_mesh_p(3)*v3(2)+coeff_mesh_p(4)*v4(2)];
point_ref = [pts2(1,i); pts2(2,i)];
rmse = rmse + norm(warp_point - point_ref);
% 我认为的代码应该是
% rmse = rmse + norm(warp_point - point_ref).^2;
end
rmse = rmse/size(pts1, 2);
rmse = sqrt(rmse);
作者在求出特征点之间的距离向量的范数后,没有平方。得到的实验数据下图所示:
LCP的APAP的实验指标是直接从APAP论文里面抄的,我感觉apap的论文实验指标和他的论文指标不一样。
从他的实验指标上看,很明显SPW、LCP和APAP效果差不多,具体点LCP 比 APAP 和SPW好 。
但实际实验效果上,APAP 是明显好于 LCP 和SPW的。
可能因为直线匹配算法的问题,线匹配不管出不出错,从直线上采样特征点,很容易导致有直线的区域局部过拟合。或者是SPW的失真控制项导致重叠区的网格拟合不够好。
temple 在 APAP 的 RMSE 是2.2。
temple 在SPW 的 RMSE 是5.7。
temple 在LCP(即标题论文)中的RMSE: 3.7。
这就对多了。