Skip to content
Snippets Groups Projects
Commit e79d3f27 authored by Vojtech Moravec's avatar Vojtech Moravec
Browse files

Small improvement in EntropyCalculation.

parent 675735d8
No related branches found
Tags
No related merge requests found
...@@ -9,12 +9,9 @@ import cz.it4i.qcmp.cli.functions.EntropyCalculation; ...@@ -9,12 +9,9 @@ import cz.it4i.qcmp.cli.functions.EntropyCalculation;
import cz.it4i.qcmp.compression.ImageCompressor; import cz.it4i.qcmp.compression.ImageCompressor;
import cz.it4i.qcmp.compression.ImageDecompressor; import cz.it4i.qcmp.compression.ImageDecompressor;
import cz.it4i.qcmp.fileformat.FileExtensions; import cz.it4i.qcmp.fileformat.FileExtensions;
import cz.it4i.qcmp.utilities.ColorConsole;
import cz.it4i.qcmp.utilities.Stopwatch;
import org.apache.commons.cli.*; import org.apache.commons.cli.*;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class DataCompressor { public class DataCompressor {
public static void main(final String[] args) { public static void main(final String[] args) {
...@@ -55,23 +52,28 @@ public class DataCompressor { ...@@ -55,23 +52,28 @@ public class DataCompressor {
case Compress: { case Compress: {
final String label = final String label =
compressionOptionsCLIParsed.getQuantizationType().toString() + " " + compressionOptionsCLIParsed.getQuantizationVector().toString(); compressionOptionsCLIParsed.getQuantizationType().toString() + " " + compressionOptionsCLIParsed.getQuantizationVector().toString();
final Stopwatch stopwatch = Stopwatch.startNew(); // final Stopwatch stopwatch = Stopwatch.startNew();
final ImageCompressor compressor = new ImageCompressor(compressionOptionsCLIParsed); final ImageCompressor compressor = new ImageCompressor(compressionOptionsCLIParsed);
if (!compressor.compress()) { if (!compressor.compress()) {
System.err.println("Errors occurred during compression."); System.err.println("Errors occurred during compression.");
} }
stopwatch.stop(); // stopwatch.stop();
ColorConsole.printf(ColorConsole.Color.Green, label); // ColorConsole.printf(ColorConsole.Color.Green, label);
ColorConsole.printf(ColorConsole.Color.Green, // ColorConsole.printf(ColorConsole.Color.Green,
"Compression completed in %d ms.", // "Compression completed in %d ms.",
stopwatch.getElapsedInUnit(TimeUnit.MILLISECONDS)); // stopwatch.getElapsedInUnit(TimeUnit.MILLISECONDS));
} }
break; break;
case Decompress: { case Decompress: {
// final Stopwatch stopwatch = Stopwatch.startNew();
final ImageDecompressor decompressor = new ImageDecompressor(compressionOptionsCLIParsed); final ImageDecompressor decompressor = new ImageDecompressor(compressionOptionsCLIParsed);
if (!decompressor.decompressToFile()) { if (!decompressor.decompressToFile()) {
System.err.println("Errors occurred during decompression."); System.err.println("Errors occurred during decompression.");
} }
// stopwatch.stop();
// ColorConsole.printf(ColorConsole.Color.Green,
// "Decompression completed in %d ms.",
// stopwatch.getElapsedInUnit(TimeUnit.MILLISECONDS));
} }
break; break;
...@@ -90,8 +92,9 @@ public class DataCompressor { ...@@ -90,8 +92,9 @@ public class DataCompressor {
// NOTE(Moravec): Custom function class here | // NOTE(Moravec): Custom function class here |
// V // V
//CustomFunctionBase customFunction = new MeasurePlaneErrorFunction(parsedCliOptions); //CustomFunctionBase customFunction = new MeasurePlaneErrorFunction(parsedCliOptions);
final CustomFunctionBase customFunction = new EntropyCalculation(compressionOptionsCLIParsed); // final CustomFunctionBase customFunction = new EntropyCalculation(compressionOptionsCLIParsed);
if (!customFunction.run()) { final CustomFunctionBase cf = new EntropyCalculation(compressionOptionsCLIParsed);
if (!cf.run()) {
System.err.println("Errors occurred during custom function."); System.err.println("Errors occurred during custom function.");
} }
} }
......
...@@ -6,7 +6,9 @@ import cz.it4i.qcmp.io.loader.IPlaneLoader; ...@@ -6,7 +6,9 @@ import cz.it4i.qcmp.io.loader.IPlaneLoader;
import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; import cz.it4i.qcmp.io.loader.PlaneLoaderFactory;
import cz.it4i.qcmp.utilities.Utils; import cz.it4i.qcmp.utilities.Utils;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStreamWriter;
public class EntropyCalculation extends CustomFunctionBase { public class EntropyCalculation extends CustomFunctionBase {
/** /**
...@@ -20,6 +22,7 @@ public class EntropyCalculation extends CustomFunctionBase { ...@@ -20,6 +22,7 @@ public class EntropyCalculation extends CustomFunctionBase {
@Override @Override
public boolean run() { public boolean run() {
System.out.println("Running EntropyCalculation for " + options.getInputDataInfo().getCacheFileName());
final IPlaneLoader loader; final IPlaneLoader loader;
try { try {
loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo()); loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
...@@ -28,19 +31,24 @@ public class EntropyCalculation extends CustomFunctionBase { ...@@ -28,19 +31,24 @@ public class EntropyCalculation extends CustomFunctionBase {
return false; return false;
} }
for (int planeIndex = 0; planeIndex < options.getInputDataInfo().getDimensions().getZ(); planeIndex++) { try (final FileOutputStream fos = new FileOutputStream(options.getOutputFilePath(), false);
final int[] planeData; final OutputStreamWriter reportWriter = new OutputStreamWriter(fos)) {
try {
planeData = loader.loadPlaneData(planeIndex); reportWriter.write("Plane;Entropy\n");
} catch (final IOException e) {
System.err.printf("Failed to load plane %d data. %s", planeIndex, e.getMessage()); for (int planeIndex = 0; planeIndex < options.getInputDataInfo().getDimensions().getZ(); planeIndex++) {
return false;
final int[] planeData = loader.loadPlaneData(planeIndex);
final double planeEntropy = Utils.calculateEntropy(planeData);
reportWriter.write(String.format("%d;%.4f\n", planeIndex, planeEntropy));
} }
final double planeEntropy = Utils.calculateEntropy(planeData); } catch (final IOException e) {
System.out.printf("P: %d\tE: %.4f\n", planeIndex, planeEntropy); e.printStackTrace();
return false;
} }
return true; return true;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment