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

Use generalized loading method.

Also code reformatting.
parent 08549049
No related branches found
No related tags found
No related merge requests found
......@@ -58,7 +58,7 @@ public class SQBenchmark extends BenchmarkBase {
final int[] middlePlaneData;
try {
middlePlaneData = planeLoader.loadPlaneU16(middlePlaneIndex).getData();
middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex);
} catch (IOException e) {
e.printStackTrace();
System.err.println("Failed to load middle plane data.");
......@@ -73,7 +73,7 @@ public class SQBenchmark extends BenchmarkBase {
// NOTE(Moravec): Actual planeIndex is zero based.
final int[] planeData;
try {
planeData = planeLoader.loadPlaneU16(planeIndex).getData();
planeData = planeLoader.loadPlaneData(planeIndex);
} catch (IOException e) {
e.printStackTrace();
System.err.println("Failed to load plane data.");
......
......@@ -82,7 +82,8 @@ public class VQBenchmark extends BenchmarkBase {
final int middlePlaneIndex = rawImageDims.getZ() / 2;
final ImageU16 middlePlane;
try {
middlePlane = planeLoader.loadPlaneU16(middlePlaneIndex);
middlePlane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(middlePlaneIndex));
} catch (IOException e) {
e.printStackTrace();
System.err.println("Failed to load middle plane data.");
......@@ -91,9 +92,9 @@ public class VQBenchmark extends BenchmarkBase {
final int[][] refPlaneData = getPlaneVectors(middlePlane, qVector);
LBGVectorQuantizer vqInitializer = new LBGVectorQuantizer(refPlaneData,
codebookSize,
workerCount,
qVector.toV3i());
codebookSize,
workerCount,
qVector.toV3i());
final LBGResult vqResult = vqInitializer.findOptimalCodebook();
quantizer = new VectorQuantizer(vqResult.getCodebook());
System.out.println("Created quantizer from middle plane.");
......@@ -104,7 +105,7 @@ public class VQBenchmark extends BenchmarkBase {
final ImageU16 plane;
try {
plane = planeLoader.loadPlaneU16(planeIndex);
plane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(planeIndex));
} catch (IOException e) {
e.printStackTrace();
System.err.println(String.format("Failed to load plane %d data. Skipping plane.", planeIndex));
......@@ -116,9 +117,9 @@ public class VQBenchmark extends BenchmarkBase {
if (options.getCodebookType() == CompressionOptions.CodebookType.Individual) {
LBGVectorQuantizer vqInitializer = new LBGVectorQuantizer(planeData,
codebookSize,
workerCount,
qVector.toV3i());
codebookSize,
workerCount,
qVector.toV3i());
LBGResult vqResult = vqInitializer.findOptimalCodebook();
quantizer = new VectorQuantizer(vqResult.getCodebook());
System.out.println("Created plane quantizer.");
......@@ -127,8 +128,8 @@ public class VQBenchmark extends BenchmarkBase {
final String quantizedFile = String.format(QUANTIZED_FILE_TEMPLATE, planeIndex, codebookSize);
final String diffFile = String.format(DIFFERENCE_FILE_TEMPLATE, planeIndex, codebookSize);
final String absoluteDiffFile = String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE,
planeIndex,
codebookSize);
planeIndex,
codebookSize);
final int[][] quantizedData = quantizer.quantize(planeData, workerCount);
......
package azgracompress.cli.functions;
import azgracompress.cli.CustomFunctionBase;
import azgracompress.io.FileInputData;
import azgracompress.io.InputData;
import azgracompress.cli.ParsedCliOptions;
import azgracompress.data.ImageU16;
import azgracompress.data.V3i;
import azgracompress.io.FileInputData;
import azgracompress.io.loader.RawDataLoader;
import azgracompress.utilities.Utils;
......@@ -58,7 +56,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
final String folder) {
System.out.println(
String.format("runPlaneDifferenceForAllBits\n\tChannel: %d\n\tMethod: %s\n\tType: %s",
channel, type, folder));
channel, type, folder));
// final int channel = 0;
assert (channel == 0 || channel == 1);
final String comp_file = channel == 0 ? COMP_FILE_ch0 : COMP_FILE_ch1;
......@@ -131,7 +129,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
FileInputData compFileInfo = new FileInputData(compressedFile);
compFileInfo.setDimension(dims);
final RawDataLoader refPlaneloader = new RawDataLoader( refFileInfo);
final RawDataLoader refPlaneloader = new RawDataLoader(refFileInfo);
final RawDataLoader compPlaneloader = new RawDataLoader(compFileInfo);
Thread[] workers = new Thread[workerCount];
......@@ -143,18 +141,19 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
workers[wId] = new Thread(() -> {
ImageU16 originalPlane, compressedPlane, differencePlane;
int[] originalPlaneData, compressedPlaneData;
for (int planeIndex = fromIndex; planeIndex < toIndex; planeIndex++) {
try {
originalPlane = refPlaneloader.loadPlaneU16(planeIndex);
compressedPlane = compPlaneloader.loadPlaneU16(planeIndex);
originalPlaneData = refPlaneloader.loadPlaneData(planeIndex);
compressedPlaneData = compPlaneloader.loadPlaneData(planeIndex);
} catch (IOException e) {
e.printStackTrace();
break;
}
final int[] diffData = Utils.getDifference(originalPlane.getData(), compressedPlane.getData());
final int[] diffData = Utils.getDifference(originalPlaneData, compressedPlaneData);
Utils.applyAbsFunction(diffData);
final double absDiffSum = Arrays.stream(diffData).mapToDouble(v -> v).sum();
......@@ -181,9 +180,9 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
for (final PlaneError planeError : planeErrors) {
writer.write(String.format("%d\t%.4f\t%.4f\n",
planeError.getPlaneIndex(),
planeError.getAbsoluteError(),
planeError.getMeanAbsoluteError()));
planeError.getPlaneIndex(),
planeError.getAbsoluteError(),
planeError.getMeanAbsoluteError()));
}
} catch (IOException e) {
......
......@@ -2,10 +2,9 @@ package azgracompress.compression;
import azgracompress.U16;
import azgracompress.cache.QuantizationCacheManager;
import azgracompress.io.InputData;
import azgracompress.compression.exception.ImageCompressionException;
import azgracompress.data.ImageU16;
import azgracompress.huffman.Huffman;
import azgracompress.io.InputData;
import azgracompress.io.loader.IPlaneLoader;
import azgracompress.io.loader.PlaneLoaderFactory;
import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization;
......@@ -116,17 +115,16 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
writeCodebookToOutputStream(quantizer, compressStream);
} else if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) {
stopwatch.restart();
ImageU16 middlePlane = null;
int[] middlePlaneData;
final int middlePlaneIndex = getMiddlePlaneIndex();
try {
middlePlane = planeLoader.loadPlaneU16(middlePlaneIndex);
middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex);
} catch (IOException ex) {
throw new ImageCompressionException("Unable to load middle plane data.", ex);
}
reportStatusToListeners(String.format("Training scalar quantizer from middle plane %d.", middlePlaneIndex));
quantizer = trainScalarQuantizerFromData(middlePlane.getData());
quantizer = trainScalarQuantizerFromData(middlePlaneData);
huffman = createHuffmanCoder(huffmanSymbols, quantizer.getCodebook().getSymbolFrequencies());
stopwatch.stop();
......@@ -140,18 +138,16 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
for (final int planeIndex : planeIndices) {
stopwatch.restart();
ImageU16 plane = null;
int[] planeData;
try {
plane = planeLoader.loadPlaneU16(planeIndex);
planeData = planeLoader.loadPlaneData(planeIndex);
} catch (IOException ex) {
throw new ImageCompressionException("Unable to load plane data.", ex);
}
if (!hasGeneralQuantizer) {
reportStatusToListeners(String.format("Training scalar quantizer from plane %d.", planeIndex));
quantizer = trainScalarQuantizerFromData(plane.getData());
quantizer = trainScalarQuantizerFromData(planeData);
writeCodebookToOutputStream(quantizer, compressStream);
huffman = new Huffman(huffmanSymbols, quantizer.getCodebook().getSymbolFrequencies());
......@@ -161,7 +157,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
assert (quantizer != null) : "Scalar Quantizer wasn't initialized.";
assert (huffman != null) : "Huffman wasn't initialized.";
final int[] indices = quantizer.quantizeIntoIndices(plane.getData(), 1);
final int[] indices = quantizer.quantizeIntoIndices(planeData, 1);
planeDataSizes[planeCounter++] = writeHuffmanEncodedIndices(compressStream, huffman, indices);
......@@ -185,7 +181,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
if (inputDataInfo.isPlaneIndexSet()) {
try {
reportStatusToListeners("Loading single plane data.");
trainData = planeLoader.loadPlaneU16(inputDataInfo.getPlaneIndex()).getData();
trainData = planeLoader.loadPlaneData(inputDataInfo.getPlaneIndex());
} catch (IOException e) {
throw new ImageCompressionException("Failed to load plane data.", e);
}
......
package azgracompress.compression;
import azgracompress.cache.QuantizationCacheManager;
import azgracompress.data.Chunk3D;
import azgracompress.fileformat.QuantizationType;
import azgracompress.io.InputData;
import azgracompress.compression.exception.ImageCompressionException;
......@@ -130,8 +129,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
final int middlePlaneIndex = getMiddlePlaneIndex();
ImageU16 middlePlane = null;
try {
middlePlane = planeLoader.loadPlaneU16(middlePlaneIndex);
middlePlane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(middlePlaneIndex));
} catch (IOException ex) {
throw new ImageCompressionException("Unable to load reference plane data.", ex);
}
......@@ -155,7 +153,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
ImageU16 plane = null;
try {
plane = planeLoader.loadPlaneU16(planeIndex);
plane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(planeIndex));
} catch (IOException ex) {
throw new ImageCompressionException("Unable to load plane data.", ex);
}
......@@ -193,7 +191,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
private int[][] loadPlaneQuantizationVectors(final IPlaneLoader planeLoader,
final int planeIndex) throws IOException {
ImageU16 refPlane = planeLoader.loadPlaneU16(planeIndex);
ImageU16 refPlane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(planeIndex));
return refPlane.toQuantizationVectors(options.getQuantizationVector().toV2i());
}
......@@ -272,15 +270,15 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
public long[] compressVoxels(DataOutputStream compressStream) throws ImageCompressionException {
int[][] voxels;
try {
IPlaneLoader loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
final int[] data = loader.loadAllPlanesU16Data();
Chunk3D bigVoxel = new Chunk3D(options.getInputDataInfo().getDimensions(), data);
voxels = bigVoxel.divideInto3DVectors(options.getQuantizationVector());
} catch (Exception e) {
throw new ImageCompressionException("Unable to create data loader or load image data.", e);
}
// int[][] voxels;
// try {
// IPlaneLoader loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
// final int[] data = loader.loadAllPlanesU16Data();
// Chunk3D bigVoxel = new Chunk3D(options.getInputDataInfo().getDimensions(), data);
// voxels = bigVoxel.divideInto3DVectors(options.getQuantizationVector());
// } catch (Exception e) {
// throw new ImageCompressionException("Unable to create data loader or load image data.", e);
// }
return null;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment