Um. you didn't fix the array access.
Your still accessing an array everywhere AFAICT, you just copied it into a smaller array.
?! i was under the impression that the cost to extract a value from an primitive array is the same as from a primitive as all the array consits of is pointers.
but i guess i am incorrect! :-/ ah, well it happens enough

So you would suggest the following?:
currentPixelRed=frame[j][0];
currentPixelGreen=frame[j][1];
currentPixelBlue=frame[j][2];
The costs are the index add and the bounds check. You havent gotten rid of either.
which bound checking are you specifically talking about?
all the "##Codes[RBdiff].length >0" are needed as is the inital "if (k>-1)"
the count++ is necessary as it is used elsewhere in the program with the saving of the bit stream
basically, i cannot see any checking which i can remove without effecting the algorithm.
AFAICT
what does this mean?