如果你真的只想正好45度对角线,你的像素是正方形(安全的假设与大多数标准摄像机),那么你并不真正需要做的任何坐标变换,我不认为。你可以使用这样的事实,即沿着对角线的所有点都具有例如I(ix, ix), I(1 + ix, ix)
。解决这个限制有点棘手。试试这个为“列”(左底部对角线从右上方)资金,开始在左下,连升左边缘,然后在顶部:
I = eye(5, 4);
I(4, 1) = 1;
[nrows, ncols] = size(I);
colsums = zeros(nrows + ncols - 1, 1);
% first loop over each row in the original image except the first one
for ix = nrows : -1 : 2,
JX = [0 : min(nrows - ix, min(nrows-1, ncols-1))];
for jx = JX,
colsums(nrows - ix + 1) = colsums(nrows - ix + 1) + I(ix + jx, jx + 1);
end
end
% then loop over each column in the original image
for ix = 1 : ncols,
JX = [0 : min(nrows - ix - 1, min(nrows-1, ncols-1))];
for jx = JX,
colsums(nrows + ix - 1) = colsums(nrows + ix - 1) + I(1 + jx, ix + jx);
end
end
注意,如果距离对你很重要(有点听起来好像没有),那么沿着这些对角线的距离是sqrt(2)/2
更长。
非常感谢。我认为这正是“氡”功能所做的。这帮助我理解了我在“氡”功能中不理解的东西。 – Sulla 2012-01-05 10:30:20