synchronized public void clearCloud() { cloudXyz.reset(); cloudColor.reset(); }
/** * Given the disparity image compute the 3D location of valid points and save pixel colors * at that point * * @param disparity Disparity image * @param color Color image of left camera */ public void process(ImageGray disparity , BufferedImage color ) { cloudRgb.setMaxSize(disparity.width*disparity.height); cloudXyz.setMaxSize(disparity.width*disparity.height*3); cloudRgb.reset(); cloudXyz.reset(); if( disparity instanceof GrayU8) process((GrayU8)disparity,color); else process((GrayF32)disparity,color); }
/** * Searches for local maximas and converts into lines. * * @return Found lines in the image. */ public FastQueue<LineParametric2D_F32> extractLines() { lines.reset(); foundLines.reset(); foundIntensity.reset(); extractor.process(transform,null, candidates,null, foundLines); for( int i = 0; i < foundLines.size(); i++ ) { Point2D_I16 p = foundLines.get(i); int x0 = p.x - originX; int y0 = p.y - originY; if( Math.abs(x0) >= minDistanceFromOrigin || Math.abs(y0) >= minDistanceFromOrigin ) { LineParametric2D_F32 l = lines.grow(); l.p.set(p.x,p.y); l.slope.set(-y0,x0); foundIntensity.push(transform.get(p.x,p.y)); } } return lines; }
/** * Searches for local maximas and converts into lines. * * @return Found lines in the image. */ public FastQueue<LineParametric2D_F32> extractLines() { lines.reset(); foundLines.reset(); foundIntensity.reset(); extractor.process(transform, null,null,null, foundLines); int w2 = transform.width/2; for( int i = 0; i < foundLines.size(); i++ ) { Point2D_I16 p = foundLines.get(i); float r = (float)(r_max*(p.x-w2)/w2); float c = tableTrig.c[p.y]; float s = tableTrig.s[p.y]; float x0 = r*c+originX; float y0 = r*s+originY; foundIntensity.push( transform.get(p.x,p.y)); LineParametric2D_F32 l = lines.grow(); l.p.set(x0,y0); l.slope.set(-s,c); Point2D_F64 p2 = new Point2D_F64(); lineToCoordinate(l,p2); } return lines; }
@Test public void reset() { GrowQueue_F32 alg = new GrowQueue_F32(10); alg.push(1); alg.push(3); alg.push(-2); assertTrue(1.0f == alg.get(0)); assertEquals(3,alg.size); alg.reset(); assertEquals(0, alg.size); }
@Test public void addAll_array() { GrowQueue_F32 queue0 = new GrowQueue_F32(2); float[] array = new float[]{3,4,5}; queue0.add(1); queue0.add(2); assertEquals(2,queue0.size); queue0.addAll(array,0,3); assertEquals(5,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+1,1e-4f); } queue0.reset(); queue0.addAll(array,1,3); assertEquals(2,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+4,1e-4f); } }
@Test public void addAll_queue() { GrowQueue_F32 queue0 = new GrowQueue_F32(2); GrowQueue_F32 queue1 = new GrowQueue_F32(3); queue0.add(1); queue0.add(2); queue1.add(3); queue1.add(4); queue1.add(5); assertEquals(2,queue0.size); queue0.addAll(queue1); assertEquals(5,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+1,1e-5); } queue0.reset(); queue0.addAll(queue1); assertEquals(3,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+3,1e-5); } }