-
Vojtech Moravec authoredVojtech Moravec authored
VQBenchmark.java 6.19 KiB
package azgracompress.benchmark;
import azgracompress.cli.ParsedCliOptions;
import azgracompress.data.Block;
import azgracompress.data.ImageU16;
import azgracompress.data.V2i;
import azgracompress.data.V3i;
public class VQBenchmark extends BenchmarkBase {
public VQBenchmark(final ParsedCliOptions options) {
super(options);
}
@Override
public void startBenchmark() {
startBenchmark(options.getQuantizationVector());
}
private ImageU16 reconstructImageFromQuantizedVectors(final int[][] vectors,
final V2i qVector) {
Block reconstructedChunk = new Block(new V2i(rawImageDims.getX(), rawImageDims.getY()));
if (qVector.getY() > 1) {
reconstructedChunk.reconstructFrom2DVectors(vectors, qVector);
} else {
// 1D vector
reconstructedChunk.reconstructFromVectors(vectors);
}
return reconstructedChunk.asImageU16();
}
public void startBenchmark(final V3i qVector) {
// NOTE(Moravec): This will be enabled once we need to benchmark something.
// if (planes.length < 1) {
// return;
// }
// IPlaneLoader planeLoader;
// try {
// planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
// } catch (Exception e) {
// e.printStackTrace();
// System.err.println("Unable to create specific reader.");
// return;
// }
// if (qVector.getY() > 1) {
// System.out.println("2D qVector");
// } else {
// System.out.println("1D qVector");
// }
// boolean dirCreated = new File(this.outputDirectory).mkdirs();
// System.out.printf("|CODEBOOK| = %d%n", codebookSize);
// VectorQuantizer quantizer = null;
//
// if (options.getCodebookType() == CompressionOptions.CodebookType.Global) {
// System.out.println("Loading codebook from cache");
// QuantizationCacheManager cacheManager = new QuantizationCacheManager(cacheFolder);
// final VQCodebook codebook = cacheManager.loadVQCodebook(inputFile, codebookSize, qVector);
// if (codebook == null) {
// System.err.println("Failed to read quantization vectors from cache.");
// return;
// }
// quantizer = new VectorQuantizer(codebook);
// System.out.println("Created quantizer from cache");
//
// } else if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) {
// final int middlePlaneIndex = rawImageDims.getZ() / 2;
// int[][] refPlaneData;
// try {
// refPlaneData = planeLoader.loadVectorsFromPlaneRange(options, Utils.singlePlaneRange(middlePlaneIndex));
// } catch (ImageCompressionException e) {