如果你真的只想要对角线精确到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。