From 970c3098fd3be8582f52afecea5aaca1d57b521b Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Fri, 7 Feb 2020 11:41:54 +0100 Subject: [PATCH] Added Hack to fix bug in getEntryTrainingVectors --- .../compression/VQImageCompressor.java | 1 - .../quantization/vector/LBGVectorQuantizer.java | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java index 33cadff..695cd16 100644 --- a/src/main/java/azgracompress/compression/VQImageCompressor.java +++ b/src/main/java/azgracompress/compression/VQImageCompressor.java @@ -131,7 +131,6 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm } final int[][] planeVectors = plane.toQuantizationVectors(options.getVectorDimension()); - Log("PlaneVectorCount: %d", planeVectors.length); if (!hasGeneralQuantizer) { Log(String.format("Training vector quantizer from plane %d.", planeIndex)); diff --git a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java b/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java index 9d7e12e..70cb909 100644 --- a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java +++ b/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java @@ -693,14 +693,27 @@ public class LBGVectorQuantizer { * @return Array of training vectors. */ private TrainingVector[] getEntryTrainingVectors(final int entryIndex, final int vectorCount) { - TrainingVector[] vectors = new TrainingVector[vectorCount]; + int index = 0; + + // TrainingVector[] vectors = new TrainingVector[vectorCount]; + int count = 0; + for (final TrainingVector trainingVector : trainingVectors) { + if (trainingVector.getEntryIndex() == entryIndex) { + ++count; + } + } + TrainingVector[] vectors = new TrainingVector[count]; +// if (count > vectorCount) { +// System.err.println(String.format( +// "WARNING: got more training vectors than vectorCount! DIFF: %d", +// count - vectorCount)); +// } for (final TrainingVector trainingVector : trainingVectors) { if (trainingVector.getEntryIndex() == entryIndex) { vectors[index++] = trainingVector; } } - assert (index == vectorCount); return vectors; } -- GitLab