public void add( double val ) { push(val); }
public void add( double val ) { push(val); }
@Override public void push(GrowQueue_F64 queue, double value) { queue.push(value); }
optional.push(r); meanR += r;
optional.push(r); meanR += r;
if( chisq <= chisq95) numContained++; chisqs.push(chisq);
/** * Detects and describes features inside provide images. All images are integral images. * * @param grayII Gray-scale integral image * @param colorII Color integral image */ public void detect( II grayII , Planar<II> colorII ) { orientation.setImage(grayII); describe.setImage(grayII,colorII); descriptions.reset(); featureAngles.reset(); // detect features detector.detect(grayII); // describe the found interest points foundPoints = detector.getFoundPoints(); for( int i = 0; i < foundPoints.size(); i++ ) { ScalePoint p = foundPoints.get(i); orientation.setObjectRadius(p.scale); double angle = orientation.compute(p.x,p.y); describe.describe(p.x, p.y, angle, p.scale, descriptions.grow()); featureAngles.push(angle); } }
double angle = computeAngle(index); angles.push( angle );
@Override public void detect(T input) { if( ii != null ) { ii.reshape(input.width,input.height); } // compute integral image ii = GIntegralImageOps.transform(input, ii); orientation.setImage(ii); describe.setImage(ii); features.reset(); featureAngles.reset(); // detect features detector.detect(ii); // describe the found interest points foundPoints = detector.getFoundPoints(); for( int i = 0; i < foundPoints.size(); i++ ) { ScalePoint p = foundPoints.get(i); double radius = p.scale* BoofDefaults.SURF_SCALE_TO_RADIUS; orientation.setObjectRadius(radius); double angle = orientation.compute(p.x,p.y); describe.describe(p.x,p.y, angle, p.scale, features.grow()); featureAngles.push(angle); } }
@Test public void remove_two() { GrowQueue_F64 alg = new GrowQueue_F64(10); alg.push(1); alg.push(3); alg.push(4); alg.push(5); alg.push(6); alg.remove(1,1); assertEquals(4,alg.size); assertEquals(1,alg.get(0), UtilEjml.TEST_F64); assertEquals(4,alg.get(1), UtilEjml.TEST_F64); assertEquals(5,alg.get(2), UtilEjml.TEST_F64); assertEquals(6,alg.get(3), UtilEjml.TEST_F64); alg.remove(0,1); assertEquals(2,alg.size); assertEquals(5,alg.get(0), UtilEjml.TEST_F64); assertEquals(6,alg.get(1), UtilEjml.TEST_F64); }
@Override public void detect(T input) { descs.reset(); featureRadiuses.reset(); featureAngles.reset(); location.reset(); if( orientation != null ) { orientation.setImage(input); } describe.setImage(input); detector.detect(input); int N = detector.getNumberOfFeatures(); for( int i = 0; i < N; i++ ) { Point2D_F64 p = detector.getLocation(i); double radius = detector.getRadius(i); double yaw = detector.getOrientation(i); if( orientation != null ) { orientation.setObjectRadius(radius); yaw = orientation.compute(p.x,p.y); } if( describe.process(p.x,p.y,yaw,radius,descs.grow()) ) { featureRadiuses.push(radius); featureAngles.push(yaw); location.add(p); } else { descs.removeTail(); } } }
@Test public void auto_grow() { GrowQueue_F64 alg = new GrowQueue_F64(3); assertEquals(3,alg.data.length); for( int i = 0; i < 10; i++ ) alg.push(i); assertEquals(10,alg.size); for( int i = 0; i < 10; i++ ) assertEquals(i,alg.get(i),1e-8); }