@Override public boolean isInBounds(int x, int y) { return imageRed.isInBounds(x,y); }
@Override public boolean isInBounds(int x, int y) { return image.isInBounds(x,y); }
@Override public boolean isInBounds(int x, int y) { return imageRed.isInBounds(x,y); }
@Override public void processBorder( int c_x , int c_y , TupleDesc_B feature ) { Arrays.fill(feature.data, 0); int index = image.startIndex + image.stride*c_y + c_x; for( int i = 0; i < definition.compare.length; i += 32 ) { int end = Math.min(definition.compare.length,i+32); int desc = 0; for( int j = i; j < end; j++ ) { Point2D_I32 c = definition.compare[j]; Point2D_I32 p_a = definition.samplePoints[c.x]; Point2D_I32 p_b = definition.samplePoints[c.y]; desc *= 2; if( image.isInBounds(p_a.x + c_x , p_a.y + c_y) && image.isInBounds(p_b.x + c_x , p_b.y + c_y) ){ int valA = image.data[index + offsetsA[j]]& 0xFF; int valB = image.data[index + offsetsB[j]]& 0xFF; if( valA < valB ) { desc += 1; } } } feature.data[ i/32 ] = desc; } }
/** * If a point is inside the image true is returned if its value is not zero, otherwise true is returned. */ public static boolean getT(GrayU8 image, int x, int y) { if (image.isInBounds(x, y)) { return image.get(x, y) != 0; } else { return true; } }
/** * If a point is inside the image true is returned if its value is not zero, otherwise false is returned. */ public static boolean getF(GrayU8 image, int x, int y) { if (image.isInBounds(x, y)) { return image.get(x, y) != 0; } else { return false; } } }
private void check( int x , int y , int color0 , int indexA, GrayU8 input , FastQueue<Edge> edges ) { if( !input.isInBounds(x,y) ) return; int indexSrc = input.startIndex + y*input.stride + x; int indexB = + y*input.width + x; int colorN = input.data[indexSrc]& 0xFF; Edge e1 = edges.grow(); e1.sortValue = (float)Math.abs(color0-colorN); e1.indexA = indexA; e1.indexB = indexB; }
private void check( int x , int y , int color0 , int indexA, GrayU8 input , FastQueue<Edge> edges ) { if( !input.isInBounds(x,y) ) return; int indexSrc = input.startIndex + y*input.stride + x; int indexB = + y*input.width + x; int colorN = input.data[indexSrc]& 0xFF; Edge e1 = edges.grow(); e1.sortValue = (float)Math.abs(color0-colorN); e1.indexA = indexA; e1.indexB = indexB; }