public static void vertical3(Kernel1D_S32 kernel , GrayU8 image, GrayI8 dest , int divisor ) { final byte[] dataSrc = image.data; final byte[] dataDst = dest.data; final int k1 = kernel.data[0]; final int k2 = kernel.data[1]; final int k3 = kernel.data[2]; final int radius = kernel.getRadius(); final int imgWidth = dest.getWidth(); final int imgHeight = dest.getHeight(); final int halfDivisor = divisor/2; final int yEnd = imgHeight-radius; for( int y = radius; y < yEnd; y++ ) { int indexDst = dest.startIndex+y*dest.stride; int i = image.startIndex + (y-radius)*image.stride; final int iEnd = i+imgWidth; for( ; i < iEnd; i++ ) { int indexSrc = i; int total = (dataSrc[indexSrc]& 0xFF) * k1; indexSrc += image.stride; total += (dataSrc[indexSrc]& 0xFF)*k2; indexSrc += image.stride; total += (dataSrc[indexSrc]& 0xFF)*k3; dataDst[indexDst++] = ( byte )((total+halfDivisor)/divisor); } } }
final int imgHeight = dest.getHeight(); final int halfDivisor = divisor/2;
final int imgHeight = dest.getHeight(); final int halfDivisor = divisor/2;
final int imgHeight = dest.getHeight(); final int halfDivisor = divisor/2;
final int imgHeight = dest.getHeight(); final int halfDivisor = divisor/2;
public static void vertical( Kernel1D_S32 kernel, GrayU16 image, GrayI8 dest , int divisor ) { final short[] dataSrc = image.data; final byte[] dataDst = dest.data; final int[] dataKer = kernel.data; final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int halfDivisor = divisor/2; final int imgWidth = dest.getWidth(); final int imgHeight = dest.getHeight(); final int yEnd = imgHeight-(kernelWidth-offset-1); for( int y = offset; y < yEnd; y++ ) { int indexDst = dest.startIndex+y*dest.stride; int i = image.startIndex + (y-offset)*image.stride; final int iEnd = i+imgWidth; for( ; i < iEnd; i++ ) { int total = 0; int indexSrc = i; for( int k = 0; k < kernelWidth; k++ ) { total += (dataSrc[indexSrc] & 0xFFFF)* dataKer[k]; indexSrc += image.stride; } dataDst[indexDst++] = (byte)((total+halfDivisor)/divisor); } } }
public static void vertical( Kernel1D_S32 kernel, GrayU8 image, GrayI8 dest , int divisor ) { final byte[] dataSrc = image.data; final byte[] dataDst = dest.data; final int[] dataKer = kernel.data; final int offset = kernel.getOffset(); final int kernelWidth = kernel.getWidth(); final int halfDivisor = divisor/2; final int imgWidth = dest.getWidth(); final int imgHeight = dest.getHeight(); final int yEnd = imgHeight-(kernelWidth-offset-1); for( int y = offset; y < yEnd; y++ ) { int indexDst = dest.startIndex+y*dest.stride; int i = image.startIndex + (y-offset)*image.stride; final int iEnd = i+imgWidth; for( ; i < iEnd; i++ ) { int total = 0; int indexSrc = i; for( int k = 0; k < kernelWidth; k++ ) { total += (dataSrc[indexSrc] & 0xFF)* dataKer[k]; indexSrc += image.stride; } dataDst[indexDst++] = (byte)((total+halfDivisor)/divisor); } } }
final int imgHeight = output.getHeight();
final int imgHeight = output.getHeight();