[Polycasso-commit] SF.net SVN: polycasso:[27] trunk/polycasso/src/com/mebigfatguy/polycasso/ ImageG
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2009-11-24 05:12:18
|
Revision: 27
http://polycasso.svn.sourceforge.net/polycasso/?rev=27&view=rev
Author: dbrosius
Date: 2009-11-24 05:12:11 +0000 (Tue, 24 Nov 2009)
Log Message:
-----------
rely on separated feedback class for better clarity
Modified Paths:
--------------
trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java
Modified: trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java
===================================================================
--- trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java 2009-11-24 05:09:39 UTC (rev 26)
+++ trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java 2009-11-24 05:12:11 UTC (rev 27)
@@ -25,8 +25,6 @@
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
-import java.awt.image.DataBufferByte;
-import java.awt.image.WritableRaster;
import java.util.HashSet;
import java.util.Set;
@@ -40,6 +38,7 @@
private double bestScore = Double.MAX_VALUE;
private BufferedImage targetImage;
private Dimension imageSize;
+ private Feedback feedback;
private Thread[] t = null;
private Object lock = new Object();
@@ -47,6 +46,7 @@
targetImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_4BYTE_ABGR);
Graphics g = targetImage.getGraphics();
g.drawImage(image, 0, 0, size.width, size.height, Color.WHITE, null);
+ feedback = new Feedback(targetImage);
imageSize = size;
bestData = PolygonData.randomPolys(size);
}
@@ -124,7 +124,7 @@
g2d.setComposite(saveComposite);
}
- double delta = calculateDelta(image, targetImage);
+ double delta = feedback.calculateDelta(image);
String message = null;
synchronized(lock) {
@@ -146,40 +146,4 @@
e.printStackTrace();
}
}
-
- private double calculateDelta(BufferedImage image1, BufferedImage image2) {
- WritableRaster raster1 = image1.getRaster();
- WritableRaster raster2 = image2.getRaster();
-
- DataBufferByte db1 = (DataBufferByte)raster1.getDataBuffer();
- DataBufferByte db2 = (DataBufferByte)raster2.getDataBuffer();
-
- byte[] buffer1 = db1.getData();
- byte[] buffer2 = db2.getData();
-
- int size = db1.getSize();
- double error = 0.0;
-
- for (int i = 0; i < size; i+=4) {
- int blue1 = buffer1[i+1] & 0x0FF;
- int blue2 = buffer2[i+1] & 0x0FF;
- double blueError = blue1 - blue2;
- blueError *= blueError;
-
- int green1 = buffer1[i+2] & 0x0FF;
- int green2 = buffer2[i+2] & 0x0FF;
- double greenError = green1 - green2;
- greenError *= greenError;
-
- int red1 = buffer1[i+3] & 0x0FF;
- int red2 = buffer2[i+3] & 0x0FF;
- double redError = red1 - red2;
- redError *= redError;
-
- error += redError + greenError + blueError;
- }
-
- return error;
- }
-
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|