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 ff06d5d2b6241ce9630762a206894972e610ef8a..363dca6ec63b4cf77878358edb5e1f4335072106 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 a000184b28f18c7ef0008afd3b20404e213be1f1..a47f71c411b6e0a2f6c8148e60ce75f6c177976b 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. *