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

Added option to create benchmark instance from cli options.

parent 1725d18b
No related branches found
No related tags found
No related merge requests found
package azgracompress.benchmark; package azgracompress.benchmark;
import azgracompress.cli.ParsedCliOptions;
import azgracompress.data.ImageU16; import azgracompress.data.ImageU16;
import azgracompress.data.V3i; import azgracompress.data.V3i;
import azgracompress.io.RawDataIO; import azgracompress.io.RawDataIO;
...@@ -12,11 +13,19 @@ import java.io.IOException; ...@@ -12,11 +13,19 @@ import java.io.IOException;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
abstract class BenchmarkBase { abstract class BenchmarkBase {
protected final static String QUANTIZED_FILE_TEMPLATE = "%d_cb%d.raw";
protected final static String DIFFERENCE_FILE_TEMPLATE = "%d_cb%d.data";
protected final static String ABSOLUTE_DIFFERENCE_FILE_TEMPLATE = "%d_cb%d.data";
protected final String inputFile; protected final String inputFile;
protected final String outputDirectory; protected final String outputDirectory;
protected final int[] planes; protected final int[] planes;
protected final V3i rawImageDims; protected final V3i rawImageDims;
protected boolean hasReferencePlane = false;
protected int referencePlaneIndex = -1;
protected BenchmarkBase(final String inputFile, protected BenchmarkBase(final String inputFile,
final String outputDirectory, final String outputDirectory,
final int[] planes, final int[] planes,
...@@ -27,6 +36,36 @@ abstract class BenchmarkBase { ...@@ -27,6 +36,36 @@ abstract class BenchmarkBase {
this.rawImageDims = rawImageDims; this.rawImageDims = rawImageDims;
} }
protected BenchmarkBase(final ParsedCliOptions options) {
this.inputFile = options.getInputFile();
this.outputDirectory = options.getOutputFile();
this.rawImageDims = options.getImageDimension();
this.hasReferencePlane = options.hasReferencePlaneIndex();
if (this.hasReferencePlane) {
this.referencePlaneIndex = options.getReferencePlaneIndex();
}
if (options.hasPlaneIndexSet()) {
this.planes = new int[]{options.getPlaneIndex()};
} else if (options.hasPlaneRangeSet()) {
final int from = options.getFromPlaneIndex();
final int to = options.getToPlaneIndex();
final int count = to - from;
this.planes = new int[count];
for (int i = 0; i < count; i++) {
this.planes[i] = from + i;
}
} else {
final int planeCount = options.getImageDimension().getZ();
this.planes = new int[planeCount];
for (int i = 0; i < planeCount; i++) {
this.planes[i] = i;
}
}
}
/** /**
* Construct filename path to the set outputDirectory. * Construct filename path to the set outputDirectory.
* *
......
package azgracompress.benchmark; package azgracompress.benchmark;
import azgracompress.U16; import azgracompress.U16;
import azgracompress.cli.ParsedCliOptions;
import azgracompress.data.V3i; import azgracompress.data.V3i;
import azgracompress.de.DeException; import azgracompress.de.DeException;
import azgracompress.de.shade.ILShadeSolver; import azgracompress.de.shade.ILShadeSolver;
...@@ -23,6 +24,10 @@ public class ScalarQuantizationBenchmark extends BenchmarkBase { ...@@ -23,6 +24,10 @@ public class ScalarQuantizationBenchmark extends BenchmarkBase {
super(inputFile, outputDirectory, planes, rawImageDims); super(inputFile, outputDirectory, planes, rawImageDims);
} }
public ScalarQuantizationBenchmark(final ParsedCliOptions options) {
super(options);
}
@Override @Override
public void startBenchmark() { public void startBenchmark() {
...@@ -53,18 +58,19 @@ public class ScalarQuantizationBenchmark extends BenchmarkBase { ...@@ -53,18 +58,19 @@ public class ScalarQuantizationBenchmark extends BenchmarkBase {
} }
System.out.println("Scalar quantizer ready."); System.out.println("Scalar quantizer ready.");
final String method = useDiffEvolution ? "ilshade" : "lloyd"; // final String method = useDiffEvolution ? "ilshade" : "lloyd";
final String centroidsFile = String.format("p%d_cb%d%s_centroids.txt", // final String centroidsFile = String.format("p%d_cb%d%s_centroids.txt",
planeIndex, // planeIndex,
codebookSize, // codebookSize,
method); // method);
// saveCentroids(quantizer.getCentroids(), centroidsFile);
saveCentroids(quantizer.getCentroids(), centroidsFile);
final String quantizedFile = String.format("p%d_cb%d%s.raw", planeIndex, codebookSize, method); final String quantizedFile = String.format(QUANTIZED_FILE_TEMPLATE, planeIndex, codebookSize);
final String diffFile = String.format("p%d_cb%d%s_diff.raw", planeIndex, codebookSize, method); final String diffFile = String.format(DIFFERENCE_FILE_TEMPLATE, planeIndex, codebookSize);
final String absoluteDiffFile = String.format("p%d_cb%d%s_adiff.raw", planeIndex, codebookSize, method); final String absoluteDiffFile = String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE,
planeIndex,
codebookSize);
final int[] quantizedData = quantizer.quantize(planeData); final int[] quantizedData = quantizer.quantize(planeData);
......
package azgracompress.benchmark; package azgracompress.benchmark;
import azgracompress.cli.ParsedCliOptions;
import azgracompress.data.*; import azgracompress.data.*;
import azgracompress.quantization.vector.CodebookEntry; import azgracompress.quantization.vector.CodebookEntry;
import azgracompress.quantization.vector.LBGResult; import azgracompress.quantization.vector.LBGResult;
...@@ -19,6 +20,10 @@ public class VectorQuantizationBenchmark extends BenchmarkBase { ...@@ -19,6 +20,10 @@ public class VectorQuantizationBenchmark extends BenchmarkBase {
super(inputFile, outputDirectory, planes, rawImageDims); super(inputFile, outputDirectory, planes, rawImageDims);
} }
public VectorQuantizationBenchmark(final ParsedCliOptions options) {
super(options);
}
@Override @Override
public void startBenchmark() { public void startBenchmark() {
startBenchmark(DEFAULT_QVECTOR); startBenchmark(DEFAULT_QVECTOR);
...@@ -82,12 +87,12 @@ public class VectorQuantizationBenchmark extends BenchmarkBase { ...@@ -82,12 +87,12 @@ public class VectorQuantizationBenchmark extends BenchmarkBase {
VectorQuantizer quantizer = new VectorQuantizer(vqResult.getCodebook()); VectorQuantizer quantizer = new VectorQuantizer(vqResult.getCodebook());
final String quantizedFile = String.format("p%d_cb%d.raw", planeIndex, codebookSize); final String quantizedFile = String.format(QUANTIZED_FILE_TEMPLATE, planeIndex, codebookSize);
final String diffFile = String.format("p%d_cb%d_diff.raw", planeIndex, codebookSize); final String diffFile = String.format(DIFFERENCE_FILE_TEMPLATE, planeIndex, codebookSize);
final String absoluteDiffFile = String.format("p%d_cb%d_adiff.raw", planeIndex, codebookSize); final String absoluteDiffFile = String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE, planeIndex, codebookSize);
final String codebookFile = String.format("p%d_cb%d_vectors.txt", planeIndex, codebookSize); // final String codebookFile = String.format("p%d_cb%d_vectors.txt", planeIndex, codebookSize);
saveCodebook(vqResult.getCodebook(), codebookFile); // saveCodebook(vqResult.getCodebook(), codebookFile);
final int[][] quantizedData = quantizer.quantize(planeData); final int[][] quantizedData = quantizer.quantize(planeData);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment