我对matlab很陌生,如果这是一个愚蠢的问题,我很抱歉。我必须遵循矩阵:
im = imread('image.jpg'); %<370x366 double>
[y,x] = find(im); %x & y both <1280x1 double>
theta; %<370x366 double> computed from gradient of image
我目前可以像这样一次绘制一个点:
plot(x(502) + 120*cos(theta(y(502),x(502))),y(502) + 120*sin(theta(y(502),x(502))));
但是我想做的是如何增加一个累加器数组,我想在每次找到该位置的值时将 acc 的位置增加 1。
所以如果 x(502) + 120*cos(theta(y(502),x(502))),y(502) + 120*sin(theta(y(502),x(502)) = (10, 10) 然后 acc(10,10) 应该增加 1。我正在处理一个非常大的数据集,所以我想避免 for-loops 并使用这样的东西:
acc = zeros(size(im));
%increment value when point lands in that location
acc(y,x) = acc(x + 120*cos(theta(y,x)),y + 120*sin(theta(y,x)),'*b')) + 1;
如果 120 实际上也可以是另一个包含不同半径值的矩阵,那就太好了。