package edu.hawaii.jmotif.performance.digits.processor2; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; public class TestCropper { // data locations private static final String TEST_DATA = "data/digits/test.csv"; private static final DecimalFormat myFormatter = new DecimalFormat("000000"); private static final int THRESHOLD = 0; /** * Runnable. * * @throws Exception if error occurs. */ public static void main(String[] args) throws Exception { // Map<String, double[]> trainData = readTrainData(TRAINING_DATA); List<double[]> testData = readTestData(TEST_DATA); // for (Entry<String, double[]> e : trainData.entrySet()) { int counter = 0; int minWidth = 1000; String minwidthName = ""; for (double[] e : testData) { // System.out.println(e.getKey() + ": " + Arrays.toString(e.getValue())); // if (e.getKey().equalsIgnoreCase("1_87")) { // System.out.println(Arrays.toString(e.getValue())); // } // matrix int[][] mat = new int[28][28]; for (int i = 0; i < e.length; i++) { int row = i / 28; int col = i % 28; int value = (int) e[i]; if (value > THRESHOLD) { mat[row][col] = (int) e[i]; } else { mat[row][col] = 0; } } // write // BufferedImage img = new BufferedImage(28, 28, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < 28; ++x) { for (int y = 0; y < 28; ++y) { int grayscale = mat[y][x]; int colorValue = grayscale | grayscale << 8 | grayscale << 16; img.setRGB(x, y, colorValue); } } ImageIO.write(img, "png", new File("data/digits/test/" + myFormatter.format(counter) + "_cropped.png")); counter++; } } private static ArrayList<double[]> readTestData(String fileName) throws NumberFormatException, IOException { ArrayList<double[]> res = new ArrayList<double[]>(); BufferedReader br = new BufferedReader(new FileReader(new File(fileName))); String line = ""; while ((line = br.readLine()) != null) { if (line.trim().length() == 0) { continue; } String[] split = line.trim().split(",|\\s+"); double[] series = new double[split.length]; for (int i = 0; i < split.length; i++) { series[i] = Double.valueOf(split[i].trim()).doubleValue(); } res.add(series); } br.close(); return res; } }