编程中出现的像素值index超出范围
??? Attempted to access X(NaN,NaN,1); index must be a positive integer or logical.Error in ==> mean_shift at 165
R=floor(X(i,j,1)/16)+1;
Error in ==> TRACK3 at 114
=mean_shift(mov,Mark,w_t(i),h_t(i), W, HH, w_bg(i),h_bg(i),y_0(i,:),q_u(i,:),c(i),v_u(i,:));
错误代码如上所示,每次运行程序都会出现问题,在程序没有运行结束的时候提示这个错误
这个错误应该是和w_t,h_t,w_bg,h_bg这几个参数有关系的,但具体是什么关系还琢磨不明白,只是这两个值越小出现错误的帧数越早 但是我的程序就是要求这两个值比较小的情况下算的,所以急切想知道如何能解决这个问题
附有错误的代码:
=getrect2(y_0,w_t,h_t); % get a rectangular window for target
=getrect2(y_0,w_bg,h_bg); % get a rectangular window for background
for i=y1_bg:y2_bg
for j=x1_bg:x2_bg
if i<=y1_t | i>=y2_t | j<=x1_t | j>=x2_t % background region around the target
R=floor(X(i,j,1)/16)+1;
G=floor(X(i,j,2)/16)+1;
B=floor(X(i,j,3)/16)+1;
o_u(R,G,B)=o_u(R,G,B)+1; % histogram of the background in the feature space
sum_bg=sum_bg+1;
end
end
end
问题应该是w_t,h_t,w_bg,h_bg的取值问题 不知道哪位高人可以指点一下
有没有人遇到过这样的问题啊 图像处理 追踪人方面的
期待解决下 急需答案……
[ 本帖最后由 ChaChing 于 2009-8-24 21:55 编辑 ] 下标范围不当,自己调试下就行了 建议检查rect2函数,应该是该函数返回了不合法的值,比如NaN。导致i,j赋值为NaN
回复 板凳 ydlcsu 的帖子
这个应该是与getrect2函数没关系的 但出错的原因我猜想应该是与搜索的范围也就是x1_bg:x2_bg有关系的,但是具体原因还不得知,可能是超出了图像的范围……
回复 地板 sisigl 的帖子
饿,你这么认为我也没办法。。貌似x1_bg,x2_bg就是通过getrect2得到的?? R=floor(X(i,j,1)/16)+1;此行的index有问题, 就是表示i或j有问题(非正整数)!i或j有问题, 就是表示y1_bg或x1_bg为非正整数, display(), 不就知道吗?
x1_bg,y1_bg是通过getrect2得到的, 那就需LZ判断下得出非正整数是否合理, ...
页:
[1]