From 9adcedbd2b9578fd8c94723c96b08bb71b1bfeb6 Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Fri, 16 Oct 2020 11:34:08 +0200 Subject: [PATCH] Fix loading of single plane in middle plane codebook training. --- .../qcmp/compression/SQImageCompressor.java | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java index 381c250..ae5be44 100644 --- a/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java @@ -181,7 +181,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm return planeDataSizes; } - private int[] loadConfiguredPlanesData() throws ImageCompressionException { + private int[] loadConfiguredPlanesData() throws ImageCompressionException, IOException { final InputData inputDataInfo = options.getInputDataInfo(); final IPlaneLoader planeLoader; try { @@ -191,36 +191,32 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm } int[] trainData = null; - if (inputDataInfo.isPlaneIndexSet()) { - try { - reportStatusToListeners("Loading single plane data."); - trainData = planeLoader.loadPlaneData(inputDataInfo.getPlaneIndex()); - } catch (final IOException e) { - throw new ImageCompressionException("Failed to load plane data.", e); - } + if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) { + final int middlePlaneIndex = inputDataInfo.getDimensions().getZ() / 2; + reportStatusToListeners("Loading single plane data."); + trainData = planeLoader.loadPlaneData(middlePlaneIndex); + } else if (inputDataInfo.isPlaneIndexSet()) { + reportStatusToListeners("Loading single plane data."); + trainData = planeLoader.loadPlaneData(inputDataInfo.getPlaneIndex()); } else if (inputDataInfo.isPlaneRangeSet()) { reportStatusToListeners("Loading plane range data."); final int[] planes = getPlaneIndicesForCompression(options.getInputDataInfo()); - try { - trainData = planeLoader.loadPlanesU16Data(planes); - } catch (final IOException e) { - e.printStackTrace(); - throw new ImageCompressionException("Failed to load plane range data.", e); - } + trainData = planeLoader.loadPlanesU16Data(planes); } else { reportStatusToListeners("Loading all planes data."); - try { - trainData = planeLoader.loadAllPlanesU16Data(); - } catch (final IOException e) { - throw new ImageCompressionException("Failed to load all planes data.", e); - } + trainData = planeLoader.loadAllPlanesU16Data(); } return trainData; } @Override public void trainAndSaveCodebook() throws ImageCompressionException { - final int[] trainData = loadConfiguredPlanesData(); + final int[] trainData; + try { + trainData = loadConfiguredPlanesData(); + } catch (final IOException e) { + throw new ImageCompressionException("Failed to load configured plane data in SQImageCompressor."); + } final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(trainData, getCodebookSize(), -- GitLab