sisigl 发表于 2009-8-24 08:46

编程中出现的像素值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 编辑 ]

花如月 发表于 2009-8-24 17:16

下标范围不当,自己调试下就行了

ydlcsu 发表于 2009-8-24 20:12

建议检查rect2函数,应该是该函数返回了不合法的值,比如NaN。导致i,j赋值为NaN

sisigl 发表于 2009-8-25 21:01

回复 板凳 ydlcsu 的帖子

这个应该是与getrect2函数没关系的 但出错的原因我猜想应该是与搜索的范围也就是x1_bg:x2_bg
有关系的,但是具体原因还不得知,可能是超出了图像的范围……

ydlcsu 发表于 2009-8-25 23:23

回复 地板 sisigl 的帖子

饿,你这么认为我也没办法。。貌似x1_bg,x2_bg就是通过getrect2得到的??

ChaChing 发表于 2009-8-26 08:24

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]
查看完整版本: 编程中出现的像素值index超出范围