diff --git a/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java index 05bb5fe80b2a0a39ef9c9965ad0b11bff89d4f88..5d04d7bba342fda0fc7f5606aed5ec94404ab25e 100644 --- a/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java @@ -306,7 +306,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm } final int[] indices = quantizeVectorsImpl(quantizer, voxelData, options.getWorkerCount()); - + voxelLayersSizes[voxelLayerIndex] = writeHuffmanEncodedIndices(compressStream, huffman, indices); stopwatch.stop(); if (options.isConsoleApplication()) { @@ -395,7 +395,10 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm int[][] loadDataForCodebookTraining(final IPlaneLoader planeLoader) throws ImageCompressionException { final int[][] trainingData; - if (options.getInputDataInfo().isPlaneIndexSet()) { + if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) { + final int middlePlaneIndex = (options.getInputDataInfo().getDimensions().getZ() / 2); + trainingData = planeLoader.loadVectorsFromPlaneRange(options, new Range<>(middlePlaneIndex, middlePlaneIndex + 1)); + } else if (options.getInputDataInfo().isPlaneIndexSet()) { reportStatusToListeners("VQ: Loading single plane data."); final int planeIndex = options.getInputDataInfo().getPlaneIndex(); trainingData = planeLoader.loadVectorsFromPlaneRange(options, new Range<>(planeIndex, planeIndex + 1));