final int offsetR = kernelWidth-offsetL-1; final int imgWidth = output.getWidth(); final int imgHeight = output.getHeight(); final int numBands = output.getNumBands();
public static void vertical(Kernel1D_S32 kernel, ImageBorder_IL_S32 src, InterleavedI16 dst ) { final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int width = dst.getWidth(); final int height = dst.getHeight(); final int borderBottom = kernelWidth-offset-1;
public static void vertical( Kernel1D_S32 kernel, InterleavedS16 src, InterleavedI16 dst , int divisor ) { final short[] dataSrc = src.data; final short[] dataDst = dst.data; final int[] dataKer = kernel.data; final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int numBands = src.getNumBands(); final int halfDivisor = divisor/2; final int imgWidth = dst.getWidth(); final int imgHeight = dst.getHeight(); final int yEnd = imgHeight-(kernelWidth-offset-1); for( int y = offset; y < yEnd; y++ ) { int indexDst = dst.startIndex+y*dst.stride; int indexSrcStart = src.startIndex+(y-offset)*src.stride; for (int x = 0; x < imgWidth; x++) { for (int band = 0; band < numBands; band++) { int indexSrc = indexSrcStart + band; int total = 0; for (int k = 0; k < kernelWidth; k++) { total += (dataSrc[indexSrc] )* dataKer[k]; indexSrc += src.stride; } dataDst[indexDst++] = (short)((total+halfDivisor)/divisor); } indexSrcStart += numBands; } } }
public static void horizontal(Kernel1D_S32 kernel, ImageBorder_IL_S32 src, InterleavedI16 dst ) { final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int width = dst.getWidth(); final int height = dst.getHeight(); final int borderRight = kernelWidth-offset-1;
public static void vertical( Kernel1D_S32 kernel, InterleavedS16 src, InterleavedI16 dst ) { final short[] dataSrc = src.data; final short[] dataDst = dst.data; final int[] dataKer = kernel.data; final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int numBands = src.getNumBands(); final int imgWidth = dst.getWidth(); final int imgHeight = dst.getHeight(); final int yEnd = imgHeight-(kernelWidth-offset-1); for( int y = offset; y < yEnd; y++ ) { int indexDst = dst.startIndex+y*dst.stride; int indexSrcStart = src.startIndex+(y-offset)*src.stride; for (int x = 0; x < imgWidth; x++) { for (int band = 0; band < numBands; band++) { int indexSrc = indexSrcStart + band; int total = 0; for (int k = 0; k < kernelWidth; k++) { total += (dataSrc[indexSrc] )* dataKer[k]; indexSrc += src.stride; } dataDst[indexDst++] = (short)total; } indexSrcStart += numBands; } } }
public static void vertical( Kernel1D_S32 kernel, InterleavedU8 src, InterleavedI16 dst ) { final byte[] dataSrc = src.data; final short[] dataDst = dst.data; final int[] dataKer = kernel.data; final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int numBands = src.getNumBands(); final int imgWidth = dst.getWidth(); final int imgHeight = dst.getHeight(); final int yEnd = imgHeight-(kernelWidth-offset-1); for( int y = offset; y < yEnd; y++ ) { int indexDst = dst.startIndex+y*dst.stride; int indexSrcStart = src.startIndex+(y-offset)*src.stride; for (int x = 0; x < imgWidth; x++) { for (int band = 0; band < numBands; band++) { int indexSrc = indexSrcStart + band; int total = 0; for (int k = 0; k < kernelWidth; k++) { total += (dataSrc[indexSrc] & 0xFF)* dataKer[k]; indexSrc += src.stride; } dataDst[indexDst++] = (short)total; } indexSrcStart += numBands; } } }
public static void vertical( Kernel1D_S32 kernel, InterleavedS32 src, InterleavedI16 dst , int divisor ) { final int[] dataSrc = src.data; final short[] dataDst = dst.data; final int[] dataKer = kernel.data; final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int numBands = src.getNumBands(); final int halfDivisor = divisor/2; final int imgWidth = dst.getWidth(); final int imgHeight = dst.getHeight(); final int yEnd = imgHeight-(kernelWidth-offset-1); for( int y = offset; y < yEnd; y++ ) { int indexDst = dst.startIndex+y*dst.stride; int indexSrcStart = src.startIndex+(y-offset)*src.stride; for (int x = 0; x < imgWidth; x++) { for (int band = 0; band < numBands; band++) { int indexSrc = indexSrcStart + band; int total = 0; for (int k = 0; k < kernelWidth; k++) { total += (dataSrc[indexSrc] )* dataKer[k]; indexSrc += src.stride; } dataDst[indexDst++] = (short)((total+halfDivisor)/divisor); } indexSrcStart += numBands; } } }
final int offsetX1 = kernelWidthX-offsetX-1; final int imgWidth = dst.getWidth(); final int imgHeight = dst.getHeight(); final int numBands = dst.getNumBands();
public static void convolve(Kernel2D_S32 kernel, ImageBorder_IL_S32 src, InterleavedI16 dst ) { final int offsetL = kernel.getOffset(); final int offsetR = kernel.getWidth()-offsetL-1; final int width = dst.getWidth(); final int height = dst.getHeight(); final int numBands = dst.getNumBands();