是否有人与Viewfinder Alignment method合作过?第一步(边缘检测)或多或少可以理解。它写成“提取边缘,我们采用四个等间隔方向的图像的平方梯度:水平,垂直和两个对角线方向。”( 1 )。然后“然后我们在垂直于梯度方向的方向上执行每个梯度图像的积分投影”( 2 )。对于水平方向,我用这种方式实现了算法:
function pl = horgrad(a)
[h,w] = size(a);
b = uint8(zeros(h,w));
for i = 1 : h
for j = 2 : w
% abs() instead of squaring
b(i,j) = abs(a(i,j) - a(i,j-1)); % (1)
end
end
pl = sum(b); % (2)
对我来说真正的问题是第二步:边缘对齐。什么意思 px [i] 1 , py [i] 1 , pu [i] 1 和 pv [i] 1 < / em>的?为什么他们等于1?我的柜台如何改变?
答案 0 :(得分:1)
据我所知,算法 px , py , pu 和 pv 是每个4个方向。因此,代码中的 px 为pl
。 px [i] 0是该向量中的每个点 - 代码中的pl(i)。 px [i] 1 是获得用于生成投影的总点数(归一化系数?)。因此,所有 px [i] 1 的总和将是图像高度h
。对于其他方向,它是相似的。
重复我对你的问题的评论,为了获得更好的性能,你应该尽量避免循环,特别是嵌套循环,特别是当它像你的情况一样简单时:
b(:,2:end)=abs(diff(a,1,2));