Skip to content

Instantly share code, notes, and snippets.

@kylemcdonald
Created June 30, 2012 16:30
Show Gist options
  • Save kylemcdonald/3024528 to your computer and use it in GitHub Desktop.
Save kylemcdonald/3024528 to your computer and use it in GitHub Desktop.
Processing sketch that averages together all the files in data/ using floating point precision.
int[][] sum;
int n = 0;
PImage img;
int w, h;
void setup() {
String path = sketchPath;
File dir = new File(sketchPath + "/data");
String[] names = dir.list();
println("Summing...");
for(int i = 0; i < names.length; i++) {
println("Adding " + i + "/" + names.length + ": " + names[i]);
addImage(names[i]);
}
println("Normalizing...");
int[] mins = new int[3];
int[] maxs = new int[3];
for(int i = 0; i < 3; i++) {
mins[i] = Integer.MAX_VALUE;
maxs[i] = Integer.MIN_VALUE;
}
for(int i = 0; i < sum.length; i++) {
for(int j = 0; j < 3; j++) {
if(sum[i][j] < mins[j])
mins[j] = sum[i][j];
if(sum[i][j] > maxs[j])
maxs[j] = sum[i][j];
}
}
int[] ranges = new int[3];
for(int i = 0; i < 3; i++)
ranges[i] = maxs[i] - mins[i];
println("Averaging...");
PImage out = createImage(w, h, RGB);
for(int i = 0; i < out.pixels.length; i++)
out.pixels[i] = color(
(255 * (sum[i][0] - mins[0])) / ranges[0],
(255 * (sum[i][1] - mins[1])) / ranges[1],
(255 * (sum[i][2] - mins[2])) / ranges[2]);
out.save(names.length + ".tif");
println("Done.");
}
void addImage(String filename) {
img = loadImage(filename);
if(n == 0) {
sum = new int[img.pixels.length][3];
w = img.width;
h = img.height;
}
for(int i = 0; i < img.pixels.length; i++) {
color cur = img.pixels[i];
sum[i][0] += red(cur);
sum[i][1] += green(cur);
sum[i][2] += blue(cur);
}
n++;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment