inputWrapper.getF(indexInput, inputPixel);
inputWrapper.getF(indexFrame,pixelInput);
inputWrapper.getF(indexFrame,pixelInput);
int endIndexBG = indexBG + numBands; while( indexBG < endIndexBG ) { float diff = background.data[indexBG++] - inputWrapper.getF(indexInput++); sumErrorSq += diff*diff;
inputWrapper.getF(indexInput, inputPixel);
@Override public void updateBackground( T frame) { if( background.width == 1 ) { background.reshape(frame.width, frame.height); GConvertImage.convert(frame, background); return; } else { InputSanityCheck.checkSameShape(background,frame); } inputWrapper.wrap(frame); int numBands = background.getNumBands(); float minusLearn = 1.0f - learnRate; int indexBG = 0; for (int y = 0; y < frame.height; y++) { int indexInput = frame.startIndex + y*frame.stride; int end = indexInput + frame.width*numBands; while( indexInput < end ) { int endIndexBG = indexBG + numBands; while( indexBG < endIndexBG ) { float valueBG = background.data[indexBG]; background.data[indexBG] = minusLearn*valueBG + learnRate*inputWrapper.getF(indexInput); indexBG++; indexInput++; } } } }
for (int band = 0; band < numBands; band++) { float bg = pixelBack[band]; float pixelFrame = inputWrapper.getF(indexFrame + band);
inputWrapper.getF(indexFrame,pixelInput);
inputWrapper.getF(indexInput, inputPixels);
@Override public void updateBackground( Planar<T> frame) { if( background.width == 1 ) { background.reshape(frame.width, frame.height); GConvertImage.convert(frame, background); return; } else { InputSanityCheck.checkSameShape(background,frame); } inputWrapper.wrap(frame); int numBands = background.getNumBands(); float minusLearn = 1.0f - learnRate; int indexBG = 0; for (int y = 0; y < frame.height; y++) { int indexInput = frame.startIndex + y*frame.stride; int end = indexInput + frame.width; while( indexInput < end ) { inputWrapper.getF(indexInput, inputPixels); for (int band = 0; band < numBands; band++) { GrayF32 backgroundBand = background.getBand(band); backgroundBand.data[indexBG] = minusLearn*backgroundBand.data[indexBG] + learnRate*inputPixels[band]; } indexInput++; indexBG++; } } }
@Override protected void updateBackground(int x0, int y0, int x1, int y1, Planar<T> frame) { transform.setModel(worldToCurrent); interpolationInput.setImage(frame); final int numBands = frame.getNumBands(); float minusLearn = 1.0f - learnRate; for (int y = y0; y < y1; y++) { int indexBG = background.startIndex + y*background.stride + x0; for (int x = x0; x < x1; x++, indexBG++ ) { transform.compute(x,y,work); if( work.x >= 0 && work.x < frame.width && work.y >= 0 && work.y < frame.height) { interpolationInput.get(work.x,work.y, pixelInput); backgroundWrapper.getF(indexBG,pixelBack); for (int band = 0; band < numBands; band++) { float value = pixelInput[band]; float bg = pixelBack[band]; if( bg == Float.MAX_VALUE ) { pixelBack[band] = value; } else { pixelBack[band] = minusLearn*bg + learnRate*value; } } backgroundWrapper.setF(indexBG,pixelBack); } } } }
int end = indexInput + frame.width*numBands; while( indexInput < end ) { inputWrapper.getF(indexInput, inputPixel);
int end = indexInput + frame.width; while( indexInput < end ) { inputWrapper.getF(indexInput, inputPixel);