From c919c9640172b334d04a94c5c1eb5895e41bdb02 Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Wed, 2 Dec 2020 12:11:11 +0100 Subject: [PATCH] Extend (SQ|VQ)Codebook from Codebook. --- .../qcmp/quantization/scalar/SQCodebook.java | 30 +++++++------------ .../qcmp/quantization/vector/VQCodebook.java | 28 +++++++---------- 2 files changed, 21 insertions(+), 37 deletions(-) diff --git a/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java index ff06d5d..363dca6 100644 --- a/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java +++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java @@ -1,33 +1,32 @@ package cz.it4i.qcmp.quantization.scalar; +import cz.it4i.qcmp.huffman.HuffmanNode; +import cz.it4i.qcmp.quantization.Codebook; + /** * Codebook for scalar quantizer. */ -public class SQCodebook { +public class SQCodebook extends Codebook { /** * Quantization values. */ final int[] centroids; - /** - * Absolute frequencies of quantization values. - */ - final long[] indexFrequencies; - /** * Size of the codebook. */ final int codebookSize; /** - * @param centroids Quantization values. - * @param indexFrequencies Absolute frequencies of quantization values. + * Create SQ codebook from quantization values and huffman coder. + * + * @param centroids Quantization values. + * @param huffmanRoot Root of the huffman tree. */ - public SQCodebook(final int[] centroids, final long[] indexFrequencies) { - assert (centroids.length == indexFrequencies.length); + public SQCodebook(final int[] centroids, final HuffmanNode huffmanRoot) { + super(huffmanRoot); this.centroids = centroids; - this.indexFrequencies = indexFrequencies; this.codebookSize = this.centroids.length; } @@ -40,15 +39,6 @@ public class SQCodebook { return centroids; } - /** - * Get frequencies of codebook symbols at indices. - * - * @return Frequencies of symbols. - */ - public long[] getSymbolFrequencies() { - return indexFrequencies; - } - /** * Get codebook size. * diff --git a/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java index a000184..a47f71c 100644 --- a/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java @@ -1,20 +1,18 @@ package cz.it4i.qcmp.quantization.vector; import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.huffman.HuffmanNode; +import cz.it4i.qcmp.quantization.Codebook; /** * Codebook for vector quantizer. */ -public class VQCodebook { +public class VQCodebook extends Codebook { /** * Quantization vectors. */ private final int[][] vectors; - /** - * Absolute frequencies of quantization vectors. - */ - private final long[] vectorFrequencies; /** * Size of the codebook. @@ -26,11 +24,16 @@ public class VQCodebook { */ private final V3i vectorDims; - public VQCodebook(final V3i vectorDims, final int[][] vectors, final long[] vectorFrequencies) { - //assert (vectors.length == vectorFrequencies.length); + /** + * Create vector quantization codebook from quantization vectors and huffman coder. + * + * @param vectorDims Quantization vector dimensions. + * @param vectors Quantization vectors. + * @param huffmanRoot Root of the huffman tree. + */ + public VQCodebook(final V3i vectorDims, final int[][] vectors, final HuffmanNode huffmanRoot) { this.vectorDims = vectorDims; this.vectors = vectors; - this.vectorFrequencies = vectorFrequencies; this.codebookSize = vectors.length; } @@ -43,15 +46,6 @@ public class VQCodebook { return vectors; } - /** - * Get frequencies of codebook vectors at indices. - * - * @return Frequencies of vectors. - */ - public long[] getVectorFrequencies() { - return vectorFrequencies; - } - /** * Get codebook size. * -- GitLab