private synchronized void setLevel( int level ) { // System.out.println("level "+level); if( level > 0 && ss != null ) { ImageGray small = ss.getLayer(level-1); ImageGray enlarge = GeneralizedImageOps.createSingleBand(small.getClass(), ss.getInputWidth(), ss.getInputHeight()); new FDistort(small,enlarge).interpNN().apply(); // if the size isn't the same null it so a new image will be declared if( levelImage != null && (levelImage.getWidth() != enlarge.width || levelImage.getHeight() != enlarge.height )) { levelImage = null; } levelImage = ConvertBufferedImage.convertTo(enlarge,levelImage,true); double scale = ss.getScale(level-1); levelPoints.clear(); for( ScalePoint p : points ) { if( p.scale == scale ) { levelPoints.add(p); } } } else { levelPoints.clear(); levelPoints.addAll(points); } this.activeLevel = level; }
private synchronized void setLevel( int level ) { // System.out.println("level "+level); if( level > 0 && ss != null ) { ImageGray small = (ImageGray)ss.getLayer(level-1); ImageGray enlarge = GeneralizedImageOps.createSingleBand(small.getClass(), ss.getInputWidth(), ss.getInputHeight()); new FDistort(small,enlarge).interpNN().apply(); // if the size isn't the same null it so a new image will be declared if( levelImage != null && (levelImage.getWidth() != enlarge.width || levelImage.getHeight() != enlarge.height )) { levelImage = null; } levelImage = ConvertBufferedImage.convertTo(enlarge,levelImage,true); double scale = ss.getScale(level-1); levelPoints.clear(); for( ScalePoint p : points ) { if( p.scale == scale ) { levelPoints.add(p); } } } else { levelPoints.clear(); levelPoints.addAll(points); } this.activeLevel = level; }
private synchronized void render( Rectangle visibleRect ) { if( visibleRect.width == 0 || visibleRect.height == 0 ) return; if( transformed.width != visibleRect.width || transformed.height != visibleRect.height || workImage == null ) { transformed.reshape(visibleRect.width,visibleRect.height); workImage = new BufferedImage(visibleRect.width,visibleRect.height,BufferedImage.TYPE_INT_RGB); } double x = -visibleRect.x; double y = -visibleRect.y; new FDistort(input,transformed).interpNN().affine(scale,0,0,scale,x,y).apply(); ConvertBufferedImage.convertTo(transformed,workImage,true); }
private void scaleUpLayers() { T l = pyramid.getLayer(0); if( upscale == null ) { interp = (InterpolatePixelS<T>) FactoryInterpolation.nearestNeighborPixelS(l.getClass()); upscale = (T)l.createNew(l.width,l.height); } else { upscale.reshape(l.width,l.height); } int N = pyramid.getNumLayers(); for( int i = 0; i < N; i++ ) { new FDistort(pyramid.getLayer(i),upscale).interpNN().scaleExt().apply(); BufferedImage b = ConvertBufferedImage.convertTo(upscale,null,true); if( showScales ) addImage(b,String.format("%5.2f",pyramid.getScale(i))); else addImage(b,String.format("%5.2f",pyramid.getSigma(i))); } } }
private void scaleUpLayers() { T l = pyramid.getLayer(0); if( upscale == null ) { interp = (InterpolatePixelS<T>) FactoryInterpolation.nearestNeighborPixelS(l.getClass()); upscale = (T)l.createNew(l.width,l.height); } else { upscale.reshape(l.width,l.height); } int N = pyramid.getNumLayers(); for( int i = 0; i < N; i++ ) { new FDistort(pyramid.getLayer(i),upscale).interpNN().scaleExt().apply(); BufferedImage b = ConvertBufferedImage.convertTo(upscale,null,true); if( showScales ) addImage(b,String.format("%5.2f",pyramid.getScale(i))); else addImage(b,String.format("%5.2f",pyramid.getSigma(i))); } } }
@Override public void setActiveAlgorithm(String name, Object cookie) { DerivType type = (DerivType)cookie; panel.reset(); for( int radius = 1; radius <= 40; radius += 2 ) { int maxOrder = Math.max(type.orderX,type.orderY); double sigma = FactoryKernelGaussian.sigmaForRadius(radius,maxOrder); Class typeKer1 = FactoryKernel.getKernelType(imageType,1); Kernel1D kerX = FactoryKernelGaussian.derivativeK(typeKer1,type.orderX,sigma,radius); Kernel1D kerY = FactoryKernelGaussian.derivativeK(typeKer1,type.orderY,sigma,radius); Kernel2D kernel = GKernelMath.convolve(kerY, kerX); T smallImg = GKernelMath.convertToImage(kernel); new FDistort(smallImg,largeImg).interpNN().scaleExt().apply(); double maxValue = GImageStatistics.maxAbs(largeImg); BufferedImage out = VisualizeImageData.colorizeSign(largeImg,null,maxValue); panel.addImage(out,String.format("%5d",radius)); } }
@Override public void setActiveAlgorithm(String name, Object cookie) { DisplayGaussianKernelApp.DerivType dt = (DisplayGaussianKernelApp.DerivType)cookie; // add basis SteerableKernel<K> steerable = createKernel(dt.orderX,dt.orderY); basisPanel.reset(); for( int i = 0; i < steerable.getBasisSize(); i++ ) { T smallImg = GKernelMath.convertToImage(steerable.getBasis(i)); new FDistort(smallImg,largeImg).scaleExt().interpNN().apply(); double maxValue = GImageStatistics.maxAbs(largeImg); BufferedImage out = VisualizeImageData.colorizeSign(largeImg,null,maxValue); basisPanel.addImage(out,"Basis "+i); } // add steered kernels steerPanel.reset(); for( int i = 0; i <= 20; i++ ) { double angle = Math.PI*i/20.0; K kernel = steerable.compute(angle); T smallImg = GKernelMath.convertToImage(kernel); new FDistort(smallImg,largeImg).scaleExt().interpNN().apply(); double maxValue = GImageStatistics.maxAbs(largeImg); BufferedImage out = VisualizeImageData.colorizeSign(largeImg,null,maxValue); steerPanel.addImage(out,String.format("%5d",(int)(180.0*angle/Math.PI))); } repaint(); }
new FDistort(featureImg,scaledIntensity).interpNN().scaleExt().apply();