void assertImagesEqual(final RenderedImage image1, final RenderedImage image2) { // Preliminar checks on image properties assertEquals(image1.getWidth(), image2.getWidth()); assertEquals(image1.getHeight(), image2.getHeight()); // pixel by pixel difference check RenderedImage int1 = FormatDescriptor.create(image1, DataBuffer.TYPE_SHORT, null); RenderedImage int2 = FormatDescriptor.create(image2, DataBuffer.TYPE_SHORT, null); RenderedImage diff = SubtractDescriptor.create(int1, int2, null); RenderedImage extremaImg = ExtremaDescriptor.create(diff, null, 1, 1, false, Integer.MAX_VALUE, null); double[][] extrema = (double[][]) extremaImg.getProperty("extrema"); for (int band = 0; band < extrema.length; band++) { assertEquals("Minimum should be 0", 0d, extrema[0][band], 1e-9); assertEquals("Maximum should be 0", 0d, extrema[1][band], 1e-9); } }
private double[][] computeExtrema(RenderedImage image1, RenderedImage image2) { RenderedImage int1 = FormatDescriptor.create(image1, DataBuffer.TYPE_SHORT, null); RenderedImage int2 = FormatDescriptor.create(image2, DataBuffer.TYPE_SHORT, null); RenderedImage diff = SubtractDescriptor.create(int1, int2, null); RenderedImage extremaImg = ExtremaDescriptor.create(diff, null, 1, 1, false, Integer.MAX_VALUE, null); double[][] extrema = (double[][]) extremaImg.getProperty("extrema"); return extrema; }
private void assertImageEquals(RenderedOp first, RenderedOp second) { // Calculation of the image difference RenderedOp difference = SubtractDescriptor.create(first, second, null); // Selection of the Statistics StatsType[] statsType = new StatsType[] { StatsType.EXTREMA }; // Calculation of the statistics RenderedOp stats = StatisticsDescriptor.create(difference, 1, 1, null, null, false, new int[] { 0, 1, 2 }, statsType, null); Statistics[][] results = (Statistics[][]) stats.getProperty(Statistics.STATS_PROPERTY); // Check if the Maximum and minimum for each band are equals for (int i = 0; i < results.length; i++) { double[] data = (double[]) results[i][0].getResult(); assertEquals(data[0], data[1], 0.0); } }
WeakReference<RenderedImage> Ixyload = new WeakReference<>(ImagePyramidCache.readImage("Ixy")); RenderedImage C = ImageOperations.doubleConvolve(Ixyload.get(), fen); RenderedImage D = SubtractDescriptor.create( MultiplyDescriptor.create(A, B, null), MultiplyDescriptor.create(C, C, null), null); BufferedImage Hdif = SubtractDescriptor.create(levelMasterImageEq, H1w, null).getAsBufferedImage();//levelMasterImageEq-H1w BufferedImage crit1 = ImageOperations.doubleConvolve(Hdif, wi); BufferedImage Hinvert = SubtractFromConstDescriptor.create( SoftReference<RenderedImage> I0I1 = new SoftReference(SubtractDescriptor.create(I0, I1w, null)); SoftReference<RenderedImage> Ixload = new SoftReference(ImagePyramidCache.readImage("Ix")); WeakReference<RenderedImage> uload = new WeakReference(ImagePyramidCache.readImage("u")); SubtractDescriptor.create( MultiplyDescriptor.create(G, B, null), MultiplyDescriptor.create(C, H, null), SubtractDescriptor.create( MultiplyDescriptor.create(A, H, null).getAsBufferedImage(), MultiplyDescriptor.create(C, G, null).getAsBufferedImage(),