Package org.geotools.gce.imagemosaic.processing

Source Code of org.geotools.gce.imagemosaic.processing.ArtifactsFilterTest

package org.geotools.gce.imagemosaic.processing;

import it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReaderSpi;

import java.awt.Rectangle;
import java.awt.image.RenderedImage;
import java.awt.image.renderable.RenderedImageFactory;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageReader;
import javax.imageio.stream.FileImageInputStream;
import javax.media.jai.Histogram;
import javax.media.jai.JAI;
import javax.media.jai.OperationDescriptor;
import javax.media.jai.OperationRegistry;
import javax.media.jai.ROI;
import javax.media.jai.ROIShape;
import javax.media.jai.RenderedOp;
import javax.media.jai.operator.HistogramDescriptor;
import javax.media.jai.registry.RenderedRegistryMode;

import org.geotools.test.TestData;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
*
*
* @source $URL$
*/
public class ArtifactsFilterTest extends Assert {

  @Before
  public void setup() throws IOException {
    OperationRegistry registry = JAI.getDefaultInstance().getOperationRegistry();
    try {
      final OperationDescriptor op = new ArtifactsFilterDescriptor();
      registry.registerDescriptor(op);
      final String descName = op.getName();
      final RenderedImageFactory rif = new ArtifactsFilterRIF();
      registry.registerFactory(RenderedRegistryMode.MODE_NAME, descName, "org.geotools.gce.imagemosaic.processing", rif);
    } catch (Exception e) {
     
    }
  }
 
  @Test
  public void testArtifact() throws IOException{
    TIFFImageReaderSpi spi = new TIFFImageReaderSpi();
    File file = TestData.file(this, "filter.tif");
    ImageReader reader = null;
    FileImageInputStream fis = null;
    try {
      fis = new FileImageInputStream(file);
      reader = spi.createReaderInstance();
      reader.setInput(fis);
      RenderedImage image = reader.read(0);
      RenderedOp histogramOp = HistogramDescriptor.create(image, null, Integer.valueOf(1), Integer.valueOf(1), new int[]{256}, null, null, null);
      Histogram histogram = (Histogram) histogramOp.getProperty("histogram");
      int[][] bins = histogram.getBins();
   
      assertEquals(bins[0][0],4261);
      assertEquals(bins[1][0],4261);
      assertEquals(bins[2][0],4832);
      assertEquals(bins[0][20],127); // This bin will disappear in the Histogram of the filtered image
      assertEquals(bins[1][20],127); // This bin will disappear in the Histogram of the filtered image
      assertEquals(bins[2][20],127); // This bin will disappear in the Histogram of the filtered image
      assertEquals(bins[0][180],571);
      assertEquals(bins[0][200],5041);
      assertEquals(bins[2][200],5041);
      assertEquals(bins[1][255],5612);
     
      assertEquals(bins[0][0]+bins[1][0]+bins[2][0]+bins[0][20]+bins[1][20]+bins[2][20]+bins[0][180]+bins[0][200]+bins[2][200]+bins[1][255], 100*100*3);
     
      // Image filtering
      ROI roi = new ROIShape(new Rectangle(14, 11, 75, 75));
      double [] backgroundValues = new double[]{0.0d, 0.0d, 0.0d};
      RenderedImage filtered = ArtifactsFilterDescriptor.create(image, roi, backgroundValues, 30, 3, null);
      histogramOp = HistogramDescriptor.create(filtered, null, Integer.valueOf(1), Integer.valueOf(1), new int[]{256}, null, null, null);
      histogram = (Histogram) histogramOp.getProperty("histogram");
     
      bins = histogram.getBins();
     
      assertEquals(bins[0][0],4261);
      assertEquals(bins[1][0],4261);
      assertEquals(bins[2][0],4845);
      assertEquals(bins[0][180],584);
      assertEquals(bins[0][200],5041);
      assertEquals(bins[2][200],5041);
      assertEquals(bins[1][255],5625);
     
      assertEquals(bins[0][0]+bins[1][0]+bins[2][0]+bins[0][20]+bins[1][20]+bins[2][20] +bins[0][180]+bins[0][200]+bins[2][200]+bins[1][255], 100*100*3);
    } finally {
      if (fis != null){
        try {
          fis.close();
        } catch (Throwable t){
         
        }
      }
      if (reader != null){
        try {
          reader.dispose();
        } catch (Throwable t){
         
        }
      }
    }
  }
}
TOP

Related Classes of org.geotools.gce.imagemosaic.processing.ArtifactsFilterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.