input.get(j,y, pixel); for (int band = 0; band < numBands; band++) { total[band] += pixel[band]*v;
public static void vertical(Kernel1D_F32 kernel, InterleavedF32 input, InterleavedF32 output ) { final int offset = kernel.getOffset(); final int width = input.getWidth(); final int height = input.getHeight(); final int numBands = input.getNumBands(); final float[] pixel = new float[ numBands ]; final float[] total = new float[ numBands ]; for (int y = 0; y < height; y++) { for( int x = 0; x < width; x++ ) { Arrays.fill(total,0); float weight = 0; int startY = y - offset; int endY = startY + kernel.getWidth(); if( startY < 0 ) startY = 0; if( endY > height ) endY = height; for( int i = startY; i < endY; i++ ) { float v = kernel.get(i-y+offset); input.get(x,i, pixel); for (int band = 0; band < numBands; band++) { total[band] += pixel[band]*v; } weight += v; } for (int band = 0; band < numBands; band++) { total[band] /= weight; } output.set(x,y, total); } } }
input.get(j,i, pixel); float v = kernel.get(j-x+offset,i-y+offset); for (int band = 0; band < numBands; band++) {