@Override public Number get(int x, int y) { return image.get(x,y); }
public static void vertical(Kernel1D_S32 kernel, GrayS32 input, GrayS32 output ) { final int offset = kernel.getOffset(); final int width = input.getWidth(); final int height = input.getHeight(); for (int y = 0; y < height; y++) { for( int x = 0; x < width; x++ ) { int total = 0; int 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++ ) { int v = kernel.get(i-y+offset); total += input.get(x,i)*v; weight += v; } output.set(x,y, (total+weight/2)/weight ); } } }
public static void horizontal(Kernel1D_S32 kernel, GrayS32 input, GrayS32 output ) { final int offset = kernel.getOffset(); final int width = input.getWidth(); final int height = input.getHeight(); for (int y = 0; y < height; y++) { for( int x = 0; x < width; x++ ) { int total = 0; int weight = 0; int startX = x - offset; int endX = startX+kernel.getWidth(); if( startX < 0 ) startX = 0; if( endX > width ) endX = width; for( int j = startX; j < endX; j++ ) { int v = kernel.get(j-x+offset); total += input.get(j,y)*v; weight += v; } output.set(x,y, (total+weight/2)/weight ); } } }
@Override public void mouseClicked(MouseEvent e) { if( labelImage.isInBounds(e.getX(),e.getY()) ) { int val = labelImage.get(e.getX(),e.getY()); System.out.println("Label at ("+e.getX()+","+e.getY()+") = "+val); } }
public static void convolve(Kernel2D_S32 kernel, GrayS32 input, GrayS32 output ) { final int offset = kernel.getOffset(); final int width = input.getWidth(); final int height = input.getHeight(); for (int y = 0; y < height; y++) { for( int x = 0; x < width; x++ ) { int startX = x - offset; int endX = startX + kernel.getWidth(); if( startX < 0 ) startX = 0; if( endX > width ) endX = width; int startY = y - offset; int endY = startY + kernel.getWidth(); if( startY < 0 ) startY = 0; if( endY > height ) endY = height; int total = 0; int weight = 0; for( int i = startY; i < endY; i++ ) { for( int j = startX; j < endX; j++ ) { int v = kernel.get(j-x+offset,i-y+offset); total += input.get(j,i)*v; weight += v; } } output.set(x,y, (total+weight/2)/weight ); } } }
@Override public void mouseClicked(MouseEvent e) { if( labelImage.isInBounds(e.getX(),e.getY()) ) { int val = labelImage.get(e.getX(),e.getY()); System.out.println("Label at ("+e.getX()+","+e.getY()+") = "+val); } }
public static void vertical(Kernel1D_S32 kernelX, Kernel1D_S32 kernelY, GrayS32 input, GrayI16 output ) { final int offsetX = kernelX.getOffset(); final int offsetY = kernelY.getOffset(); final int width = input.getWidth(); final int height = input.getHeight(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int total = 0; int weightY = 0; int startY = y - offsetY; int endY = startY + kernelY.getWidth(); if (startY < 0) startY = 0; if (endY > height) endY = height; for (int i = startY; i < endY; i++) { int v = kernelY.get(i - y + offsetY); total += input.get(x, i) * v; weightY += v; } int kerX0 = Math.max(0, offsetX - x); int kerX1 = Math.min(kernelX.getWidth(), width - x + offsetX); int weightX = 0; for (int i = kerX0; i < kerX1; i++) { weightX += kernelX.get(i); } int weight = weightX * weightY; output.set(x,y, (total+weight/2)/weight ); } } }
@Override protected double computeOrientation() { computeAngles(); double windowRadius = windowSize/2.0; int w = rect.x1-rect.x0; double bestScore = -1; double bestAngle = 0; double stepAngle = Math.PI*2.0/numAngles; int N = w*(rect.y1-rect.y0); for( double angle = -Math.PI; angle < Math.PI; angle += stepAngle ) { double dx = 0; double dy = 0; for( int i = 0; i < N; i++ ) { double diff = UtilAngle.dist(angle,angles[i]); if( diff <= windowRadius) { int x = rect.x0 + i % w; int y = rect.y0 + i / w; dx += derivX.get(x,y); dy += derivY.get(x,y); } } double n = dx*dx + dy*dy; if( n > bestScore) { bestAngle = Math.atan2(dy,dx); bestScore = n; } } return bestAngle; }
public static double get(ImageGray img, int x, int y) { if (img instanceof GrayI8) { return ((GrayI8) img).get(x, y); } else if (img instanceof GrayI16) { return ((GrayI16) img).get(x, y); } else if (img instanceof GrayS32) { return ((GrayS32) img).get(x, y); } else if (img instanceof GrayF32) { return ((GrayF32) img).get(x, y); } else if (img instanceof GrayF64) { return ((GrayF64) img).get(x, y); } else if (img instanceof GrayS64) { return ((GrayS64) img).get(x, y); } else { throw new IllegalArgumentException("Unknown or incompatible image type: " + img.getClass().getSimpleName()); } }
if( isLarger && xx >= input.width ) continue; scale += input.get(xx,y)*alpha[i]; if( isLarger && xx >= input.width ) continue; wavelet += input.get(xx,y)*beta[i]; if( isLarger && xx >= input.width ) continue; scale += input.get(xx,y)*alpha[i]; if( isLarger && xx >= input.width ) continue; wavelet += input.get(xx,y)*beta[i];
if( isLarger && yy >= input.height ) continue; scale += input.get(x,yy)*alpha[i]; if( isLarger && yy >= input.height ) continue; wavelet += input.get(x,yy)*beta[i]; if( isLarger && yy >= input.height ) continue; scale += input.get(x,yy)*alpha[i]; if( isLarger && yy >= input.height ) continue; wavelet += input.get(x,yy)*beta[i];
if( segmented.get(0,0) >= 0 ) throw new IllegalArgumentException("The segmented image must contain a border of -1 valued pixels. See" + " JavaDoc for important details you didn't bother to read about.");