From 2c6d978179e6a4a5a9c41bcadbe38e82955b131b Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Tue, 6 Oct 2020 13:44:51 +0200 Subject: [PATCH] Rename package azgracompress -> cz.it4i.qcmp --- .gitignore | 1 + .../benchmark/CompressionBenchmark.java | 28 ----- src/main/java/azgracompress/io/RawDataIO.java | 34 ------ .../it4i/qcmp}/DataCompressor.java | 20 +-- .../it4i/qcmp}/ScifioWrapper.java | 4 +- .../{azgracompress => cz/it4i/qcmp}/U16.java | 2 +- .../it4i/qcmp}/benchmark/Benchmark.java | 62 +++++----- .../it4i/qcmp}/benchmark/BenchmarkBase.java | 42 +++---- .../qcmp/benchmark/CompressionBenchmark.java | 28 +++++ .../it4i/qcmp}/benchmark/SQBenchmark.java | 54 ++++----- .../it4i/qcmp}/benchmark/VQBenchmark.java | 14 +-- .../it4i/qcmp}/cache/CacheFileHeader.java | 10 +- .../it4i/qcmp}/cache/ICacheFile.java | 2 +- .../qcmp}/cache/QuantizationCacheManager.java | 12 +- .../it4i/qcmp}/cache/SQCacheFile.java | 4 +- .../it4i/qcmp}/cache/VQCacheFile.java | 4 +- .../it4i/qcmp}/cli/CliConstants.java | 4 +- .../cli/CompressionOptionsCLIParser.java | 61 +++++----- .../it4i/qcmp}/cli/CustomFunctionBase.java | 6 +- .../it4i/qcmp}/cli/ParseUtils.java | 10 +- .../it4i/qcmp}/cli/ProgramMethod.java | 2 +- .../cli/functions/EntropyCalculation.java | 20 +-- .../functions/MeasurePlaneErrorFunction.java | 34 +++--- .../it4i/qcmp}/cli/functions/PlaneError.java | 4 +- .../qcmp}/compression/CompressionOptions.java | 10 +- .../CompressorDecompressorBase.java | 16 +-- .../qcmp}/compression/IImageCompressor.java | 9 +- .../qcmp}/compression/IImageDecompressor.java | 8 +- .../it4i/qcmp}/compression/IListenable.java | 6 +- .../qcmp}/compression/ImageCompressor.java | 16 +-- .../qcmp}/compression/ImageDecompressor.java | 67 +++++----- .../qcmp}/compression/SQImageCompressor.java | 85 +++++++------ .../compression/SQImageDecompressor.java | 77 ++++++------ .../qcmp}/compression/VQImageCompressor.java | 36 +++--- .../compression/VQImageDecompressor.java | 28 ++--- .../exception/ImageCompressionException.java | 2 +- .../ImageDecompressionException.java | 2 +- .../listeners/IProgressListener.java | 2 +- .../listeners/IStatusListener.java | 2 +- .../it4i/qcmp}/data/Block.java | 10 +- .../it4i/qcmp}/data/ImageU16.java | 38 +++--- .../it4i/qcmp}/data/ImageU16Dataset.java | 4 +- .../it4i/qcmp}/data/Range.java | 4 +- .../it4i/qcmp}/data/V2.java | 4 +- .../it4i/qcmp}/data/V2i.java | 2 +- .../it4i/qcmp}/data/V3.java | 4 +- .../it4i/qcmp}/data/V3i.java | 2 +- .../it4i/qcmp}/data/Voxel.java | 3 +- .../it4i/qcmp}/fileformat/FileExtensions.java | 2 +- .../it4i/qcmp}/fileformat/QCMPFileHeader.java | 8 +- .../qcmp}/fileformat/QuantizationType.java | 4 +- .../it4i/qcmp}/huffman/Huffman.java | 26 ++-- .../it4i/qcmp}/huffman/HuffmanNode.java | 8 +- .../it4i/qcmp}/io/BufferInputData.java | 4 +- .../it4i/qcmp}/io/FileInputData.java | 4 +- .../it4i/qcmp}/io/FlatBufferInputData.java | 4 +- .../it4i/qcmp}/io/InBitStream.java | 2 +- .../it4i/qcmp}/io/InputData.java | 14 +-- .../it4i/qcmp}/io/MemoryOutputStream.java | 2 +- .../it4i/qcmp}/io/OutBitStream.java | 8 +- src/main/java/cz/it4i/qcmp/io/RawDataIO.java | 34 ++++++ .../it4i/qcmp}/io/loader/BasicLoader.java | 4 +- .../qcmp}/io/loader/DataWrappingStrategy.java | 2 +- .../qcmp}/io/loader/FlatBufferLoader.java | 12 +- .../it4i/qcmp}/io/loader/IPlaneLoader.java | 14 +-- .../qcmp}/io/loader/ImageJBufferLoader.java | 16 +-- .../qcmp}/io/loader/PlaneLoaderFactory.java | 10 +- .../it4i/qcmp}/io/loader/RawDataLoader.java | 12 +- .../it4i/qcmp}/io/loader/SCIFIOLoader.java | 32 ++--- .../it4i/qcmp}/kdtree/KDNode.java | 2 +- .../it4i/qcmp}/kdtree/KDTree.java | 12 +- .../it4i/qcmp}/kdtree/KDTreeBuilder.java | 8 +- .../it4i/qcmp}/kdtree/TerminalKDNode.java | 4 +- .../qcmp}/quantization/QTrainIteration.java | 4 +- .../scalar/LloydMaxU16ScalarQuantization.java | 36 +++--- .../scalar/RunnableLloydMseCalc.java | 4 +- .../qcmp}/quantization/scalar/SQCodebook.java | 2 +- .../quantization/scalar/ScalarQuantizer.java | 20 +-- .../qcmp}/quantization/vector/EntryInfo.java | 8 +- .../qcmp}/quantization/vector/LBGResult.java | 4 +- .../vector/LBGVectorQuantizer.java | 114 +++++++++--------- .../vector/LearningCodebookEntry.java | 4 +- .../quantization/vector/TrainingVector.java | 4 +- .../qcmp}/quantization/vector/VQCodebook.java | 6 +- .../vector/VectorDistanceMetric.java | 2 +- .../quantization/vector/VectorQuantizer.java | 8 +- .../it4i/qcmp}/utilities/ColorConsole.java | 2 +- .../it4i/qcmp}/utilities/Means.java | 12 +- .../it4i/qcmp}/utilities/MinMaxResult.java | 4 +- .../it4i/qcmp}/utilities/Stopwatch.java | 10 +- .../it4i/qcmp}/utilities/TypeConverter.java | 16 +-- .../it4i/qcmp}/utilities/Utils.java | 20 +-- 92 files changed, 714 insertions(+), 713 deletions(-) delete mode 100644 src/main/java/azgracompress/benchmark/CompressionBenchmark.java delete mode 100644 src/main/java/azgracompress/io/RawDataIO.java rename src/main/java/{azgracompress => cz/it4i/qcmp}/DataCompressor.java (90%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/ScifioWrapper.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/U16.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/benchmark/Benchmark.java (62%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/benchmark/BenchmarkBase.java (84%) create mode 100644 src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java rename src/main/java/{azgracompress => cz/it4i/qcmp}/benchmark/SQBenchmark.java (76%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/benchmark/VQBenchmark.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cache/CacheFileHeader.java (97%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cache/ICacheFile.java (94%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cache/QuantizationCacheManager.java (98%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cache/SQCacheFile.java (96%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cache/VQCacheFile.java (97%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/CliConstants.java (98%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/CompressionOptionsCLIParser.java (91%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/CustomFunctionBase.java (76%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/ParseUtils.java (94%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/ProgramMethod.java (84%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/functions/EntropyCalculation.java (70%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/functions/MeasurePlaneErrorFunction.java (90%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/cli/functions/PlaneError.java (78%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/CompressionOptions.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/CompressorDecompressorBase.java (94%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/IImageCompressor.java (87%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/IImageDecompressor.java (90%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/IListenable.java (77%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/ImageCompressor.java (96%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/ImageDecompressor.java (83%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/SQImageCompressor.java (79%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/SQImageDecompressor.java (74%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/VQImageCompressor.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/VQImageDecompressor.java (97%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/exception/ImageCompressionException.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/exception/ImageDecompressionException.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/listeners/IProgressListener.java (73%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/compression/listeners/IStatusListener.java (64%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/Block.java (96%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/ImageU16.java (63%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/ImageU16Dataset.java (81%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/Range.java (92%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/V2.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/V2i.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/V3.java (94%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/V3i.java (97%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/data/Voxel.java (99%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/fileformat/FileExtensions.java (84%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/fileformat/QCMPFileHeader.java (98%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/fileformat/QuantizationType.java (90%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/huffman/Huffman.java (77%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/huffman/HuffmanNode.java (87%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/BufferInputData.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/FileInputData.java (87%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/FlatBufferInputData.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/InBitStream.java (99%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/InputData.java (84%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/MemoryOutputStream.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/OutBitStream.java (92%) create mode 100644 src/main/java/cz/it4i/qcmp/io/RawDataIO.java rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/BasicLoader.java (99%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/DataWrappingStrategy.java (92%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/FlatBufferLoader.java (94%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/IPlaneLoader.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/ImageJBufferLoader.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/PlaneLoaderFactory.java (83%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/RawDataLoader.java (95%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/io/loader/SCIFIOLoader.java (84%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/kdtree/KDNode.java (97%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/kdtree/KDTree.java (91%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/kdtree/KDTreeBuilder.java (96%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/kdtree/TerminalKDNode.java (92%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/QTrainIteration.java (76%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/scalar/LloydMaxU16ScalarQuantization.java (88%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/scalar/RunnableLloydMseCalc.java (87%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/scalar/SQCodebook.java (96%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/scalar/ScalarQuantizer.java (85%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/EntryInfo.java (90%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/LBGResult.java (92%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/LBGVectorQuantizer.java (89%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/LearningCodebookEntry.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/TrainingVector.java (93%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/VQCodebook.java (92%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/VectorDistanceMetric.java (65%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/quantization/vector/VectorQuantizer.java (97%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/utilities/ColorConsole.java (98%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/utilities/Means.java (76%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/utilities/MinMaxResult.java (75%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/utilities/Stopwatch.java (90%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/utilities/TypeConverter.java (89%) rename src/main/java/{azgracompress => cz/it4i/qcmp}/utilities/Utils.java (88%) diff --git a/.gitignore b/.gitignore index b076730..e197e72 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ out/ *.raw *.qcmp *.QCMP +*.MF dc.bat diff --git a/src/main/java/azgracompress/benchmark/CompressionBenchmark.java b/src/main/java/azgracompress/benchmark/CompressionBenchmark.java deleted file mode 100644 index bc29bea..0000000 --- a/src/main/java/azgracompress/benchmark/CompressionBenchmark.java +++ /dev/null @@ -1,28 +0,0 @@ -package azgracompress.benchmark; - -import azgracompress.cli.CompressionOptionsCLIParser; - -public class CompressionBenchmark { - public static void runBenchmark(final CompressionOptionsCLIParser options) { - Benchmark benchmark = new Benchmark(options); - benchmark.startBenchmark(); -// switch (options.getQuantizationType()) { -// case Scalar: { -// SQBenchmark sqBenchmark = new SQBenchmark(options); -// sqBenchmark.startBenchmark(); -// } -// break; -// case Vector1D: -// case Vector2D: { -// VQBenchmark vqBenchmark = new VQBenchmark(options); -// vqBenchmark.startBenchmark(options.getVectorDimension()); -// } -// break; -// case Vector3D: -// case Invalid: { -// System.err.println("Unsupported benchmark type."); -// } -// break; -// } - } -} diff --git a/src/main/java/azgracompress/io/RawDataIO.java b/src/main/java/azgracompress/io/RawDataIO.java deleted file mode 100644 index ee7500c..0000000 --- a/src/main/java/azgracompress/io/RawDataIO.java +++ /dev/null @@ -1,34 +0,0 @@ -package azgracompress.io; - -import azgracompress.data.ImageU16; -import azgracompress.utilities.TypeConverter; - -import java.io.FileOutputStream; -import java.io.IOException; - -public class RawDataIO { - - public static void writeImageU16(final String rawFile, - final ImageU16 image, - final boolean littleEndian) throws IOException { - byte[] buffer = TypeConverter.unsignedShortArrayToByteArray(image.getData(), littleEndian); - writeBytesToFile(rawFile, buffer); - } - - public static void writeDataI32(String rawFile, - int[] differenceData, - final boolean littleEndian) throws IOException { - byte[] buffer = TypeConverter.intArrayToByteArray(differenceData, littleEndian); - writeBytesToFile(rawFile, buffer); - } - - public static void writeBytesToFile(String rawFile, - byte[] buffer) throws IOException { - FileOutputStream fileStream = new FileOutputStream(rawFile, false); - fileStream.write(buffer, 0, buffer.length); - fileStream.flush(); - fileStream.close(); - } - - -} diff --git a/src/main/java/azgracompress/DataCompressor.java b/src/main/java/cz/it4i/qcmp/DataCompressor.java similarity index 90% rename from src/main/java/azgracompress/DataCompressor.java rename to src/main/java/cz/it4i/qcmp/DataCompressor.java index 7cecf19..4b12ea3 100644 --- a/src/main/java/azgracompress/DataCompressor.java +++ b/src/main/java/cz/it4i/qcmp/DataCompressor.java @@ -1,14 +1,14 @@ -package azgracompress; +package cz.it4i.qcmp; -import azgracompress.benchmark.CompressionBenchmark; -import azgracompress.cache.QuantizationCacheManager; -import azgracompress.cli.CliConstants; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.cli.CustomFunctionBase; -import azgracompress.cli.functions.EntropyCalculation; -import azgracompress.compression.ImageCompressor; -import azgracompress.compression.ImageDecompressor; -import azgracompress.fileformat.FileExtensions; +import cz.it4i.qcmp.benchmark.CompressionBenchmark; +import cz.it4i.qcmp.cache.QuantizationCacheManager; +import cz.it4i.qcmp.cli.CliConstants; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.cli.CustomFunctionBase; +import cz.it4i.qcmp.cli.functions.EntropyCalculation; +import cz.it4i.qcmp.compression.ImageCompressor; +import cz.it4i.qcmp.compression.ImageDecompressor; +import cz.it4i.qcmp.fileformat.FileExtensions; import org.apache.commons.cli.*; import java.io.IOException; diff --git a/src/main/java/azgracompress/ScifioWrapper.java b/src/main/java/cz/it4i/qcmp/ScifioWrapper.java similarity index 95% rename from src/main/java/azgracompress/ScifioWrapper.java rename to src/main/java/cz/it4i/qcmp/ScifioWrapper.java index b6e7d15..37bc9c8 100644 --- a/src/main/java/azgracompress/ScifioWrapper.java +++ b/src/main/java/cz/it4i/qcmp/ScifioWrapper.java @@ -1,4 +1,4 @@ -package azgracompress; +package cz.it4i.qcmp; import io.scif.FormatException; import io.scif.Reader; @@ -36,7 +36,7 @@ public class ScifioWrapper { * @throws FormatException */ public static Reader getReader(final String path) throws IOException, FormatException { - SCIFIO scifio = getScifio(); + final SCIFIO scifio = getScifio(); // return scifio.initializer().initializeReader(new FileLocation(path)); return scifio.initializer().initializeReader(path); } diff --git a/src/main/java/azgracompress/U16.java b/src/main/java/cz/it4i/qcmp/U16.java similarity index 93% rename from src/main/java/azgracompress/U16.java rename to src/main/java/cz/it4i/qcmp/U16.java index 4f79d22..b85d7ce 100644 --- a/src/main/java/azgracompress/U16.java +++ b/src/main/java/cz/it4i/qcmp/U16.java @@ -1,4 +1,4 @@ -package azgracompress; +package cz.it4i.qcmp; public class U16 { public static final int Min = 0x0; diff --git a/src/main/java/azgracompress/benchmark/Benchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/Benchmark.java similarity index 62% rename from src/main/java/azgracompress/benchmark/Benchmark.java rename to src/main/java/cz/it4i/qcmp/benchmark/Benchmark.java index 91fb4fd..117259d 100644 --- a/src/main/java/azgracompress/benchmark/Benchmark.java +++ b/src/main/java/cz/it4i/qcmp/benchmark/Benchmark.java @@ -1,16 +1,16 @@ -package azgracompress.benchmark; - -import azgracompress.U16; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.compression.ImageCompressor; -import azgracompress.compression.ImageDecompressor; -import azgracompress.data.ImageU16Dataset; -import azgracompress.io.FileInputData; -import azgracompress.io.RawDataIO; -import azgracompress.io.loader.IPlaneLoader; -import azgracompress.io.loader.PlaneLoaderFactory; -import azgracompress.utilities.TypeConverter; -import azgracompress.utilities.Utils; +package cz.it4i.qcmp.benchmark; + +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.compression.ImageCompressor; +import cz.it4i.qcmp.compression.ImageDecompressor; +import cz.it4i.qcmp.data.ImageU16Dataset; +import cz.it4i.qcmp.io.FileInputData; +import cz.it4i.qcmp.io.RawDataIO; +import cz.it4i.qcmp.io.loader.IPlaneLoader; +import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; +import cz.it4i.qcmp.utilities.TypeConverter; +import cz.it4i.qcmp.utilities.Utils; import java.io.File; import java.io.IOException; @@ -19,33 +19,33 @@ import java.util.Optional; public class Benchmark extends BenchmarkBase { - protected Benchmark(CompressionOptionsCLIParser options) { + protected Benchmark(final CompressionOptionsCLIParser options) { super(options); } @Override public void startBenchmark() { assert (options.getInputDataInfo().isPlaneIndexSet()); - CompressionOptionsCLIParser compressOps; - CompressionOptionsCLIParser decompressOps; + final CompressionOptionsCLIParser compressOps; + final CompressionOptionsCLIParser decompressOps; try { // NOTE: This works, right? compressOps = (CompressionOptionsCLIParser) options.clone(); decompressOps = (CompressionOptionsCLIParser) options.clone(); - } catch (CloneNotSupportedException e) { + } catch (final CloneNotSupportedException e) { System.err.println(e.getMessage()); e.printStackTrace(); return; } // dirCreated is ignored. - boolean dirCreated = new File(options.getOutputFilePath()).mkdirs(); + final boolean dirCreated = new File(options.getOutputFilePath()).mkdirs(); final String qcmpFilePath = getFileNamePathIntoOutDir(String.format(COMPRESSED_FILE_TEMPLATE, - options.getInputDataInfo().getPlaneIndex(), - codebookSize)); + options.getInputDataInfo().getPlaneIndex(), + codebookSize)); compressOps.setOutputFilePath(qcmpFilePath); - ImageCompressor compressor = new ImageCompressor(compressOps); + final ImageCompressor compressor = new ImageCompressor(compressOps); if (!compressor.compress()) { System.err.println("Errors occurred during compression."); return; @@ -54,11 +54,11 @@ public class Benchmark extends BenchmarkBase { decompressOps.setInputDataInfo(new FileInputData(qcmpFilePath)); final String decompressedFile = getFileNamePathIntoOutDir(String.format(QUANTIZED_FILE_TEMPLATE, - options.getInputDataInfo().getPlaneIndex(), - codebookSize)); + options.getInputDataInfo().getPlaneIndex(), + codebookSize)); decompressOps.setOutputFilePath(decompressedFile); - ImageDecompressor decompressor = new ImageDecompressor(decompressOps); + final ImageDecompressor decompressor = new ImageDecompressor(decompressOps); final Optional<ImageU16Dataset> maybeDataset = decompressor.decompressInMemory(); if (!maybeDataset.isPresent()) { @@ -66,11 +66,11 @@ public class Benchmark extends BenchmarkBase { return; } - int[] originalData; + final int[] originalData; try { final IPlaneLoader loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo()); originalData = loader.loadPlaneData(options.getInputDataInfo().getPlaneIndex()); - } catch (Exception e) { + } catch (final Exception e) { System.err.println("Failed to get plane loader. " + e.getMessage()); e.printStackTrace(); return; @@ -86,12 +86,12 @@ public class Benchmark extends BenchmarkBase { final int[] absDifferenceData = Utils.asAbsoluteValues(diffArray); final String diffFilePath = getFileNamePathIntoOutDir(String.format(DIFFERENCE_FILE_TEMPLATE, - options.getInputDataInfo().getPlaneIndex(), - codebookSize)); + options.getInputDataInfo().getPlaneIndex(), + codebookSize)); final String absDiffFilePath = getFileNamePathIntoOutDir(String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE, - options.getInputDataInfo().getPlaneIndex(), - codebookSize)); + options.getInputDataInfo().getPlaneIndex(), + codebookSize)); try { // NOTE(Moravec): Use little endian so that gnuplot can read the array. @@ -100,7 +100,7 @@ public class Benchmark extends BenchmarkBase { RawDataIO.writeDataI32(diffFilePath, diffArray, true); System.out.println("Saved difference to: " + absDiffFilePath); - } catch (IOException e) { + } catch (final IOException e) { System.err.println("Failed to save difference."); e.printStackTrace(); } diff --git a/src/main/java/azgracompress/benchmark/BenchmarkBase.java b/src/main/java/cz/it4i/qcmp/benchmark/BenchmarkBase.java similarity index 84% rename from src/main/java/azgracompress/benchmark/BenchmarkBase.java rename to src/main/java/cz/it4i/qcmp/benchmark/BenchmarkBase.java index 43c1e2f..2e7cf83 100644 --- a/src/main/java/azgracompress/benchmark/BenchmarkBase.java +++ b/src/main/java/cz/it4i/qcmp/benchmark/BenchmarkBase.java @@ -1,13 +1,13 @@ -package azgracompress.benchmark; +package cz.it4i.qcmp.benchmark; -import azgracompress.compression.CompressionOptions; -import azgracompress.io.InputData; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.data.ImageU16; -import azgracompress.data.V3i; -import azgracompress.io.RawDataIO; -import azgracompress.quantization.QTrainIteration; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.compression.CompressionOptions; +import cz.it4i.qcmp.data.ImageU16; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.io.InputData; +import cz.it4i.qcmp.io.RawDataIO; +import cz.it4i.qcmp.quantization.QTrainIteration; +import cz.it4i.qcmp.utilities.Utils; import java.io.File; import java.io.FileOutputStream; @@ -118,12 +118,12 @@ abstract class BenchmarkBase { * @return True if file was saved. */ protected boolean saveQuantizedPlaneData(final int[] data, final String filename) { - ImageU16 img = new ImageU16(rawImageDims.getX(), rawImageDims.getY(), data); + final ImageU16 img = new ImageU16(rawImageDims.getX(), rawImageDims.getY(), data); try { // NOTE(Moravec): Use big endian so that FIJI can read the image. RawDataIO.writeImageU16(getFileNamePathIntoOutDir(filename), img, false); System.out.println(String.format("Saved %s", filename)); - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return false; } @@ -146,9 +146,9 @@ abstract class BenchmarkBase { final String diffFilePath = getFileNamePathIntoOutDir(diffFile); final String absDiffFilePath = getFileNamePathIntoOutDir(absDiffFile); - ImageU16 img = new ImageU16(rawImageDims.getX(), - rawImageDims.getY(), - absDifferenceData); + final ImageU16 img = new ImageU16(rawImageDims.getX(), + rawImageDims.getY(), + absDifferenceData); try { // NOTE(Moravec): Use little endian so that gnuplot can read the array. RawDataIO.writeImageU16(absDiffFilePath, img, true); @@ -156,7 +156,7 @@ abstract class BenchmarkBase { RawDataIO.writeDataI32(diffFilePath, differenceData, true); System.out.println("Saved difference to: " + absDiffFilePath); - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); System.err.println("Failed to save difference."); return false; @@ -174,21 +174,21 @@ abstract class BenchmarkBase { protected void saveQTrainLog(final String filename, final QTrainIteration[] trainingLog) { final String CSV_HEADER = "It;MSE;PSNR\n"; try { - FileOutputStream fileStream = new FileOutputStream(getFileNamePathIntoOutDir(filename)); - OutputStreamWriter writer = new OutputStreamWriter(fileStream); + final FileOutputStream fileStream = new FileOutputStream(getFileNamePathIntoOutDir(filename)); + final OutputStreamWriter writer = new OutputStreamWriter(fileStream); writer.write(CSV_HEADER); for (final QTrainIteration it : trainingLog) { writer.write(String.format("%d;%.5f;%.5f\n", - it.getIteration(), - it.getMse(), - it.getPSNR())); + it.getIteration(), + it.getMse(), + it.getPSNR())); } writer.flush(); fileStream.flush(); fileStream.close(); - } catch (IOException ioE) { + } catch (final IOException ioE) { ioE.printStackTrace(); System.err.println("Failed to save QTtrain log."); } diff --git a/src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java new file mode 100644 index 0000000..5370c35 --- /dev/null +++ b/src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java @@ -0,0 +1,28 @@ +package cz.it4i.qcmp.benchmark; + +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; + +public class CompressionBenchmark { + public static void runBenchmark(final CompressionOptionsCLIParser options) { + final Benchmark benchmark = new Benchmark(options); + benchmark.startBenchmark(); + // switch (options.getQuantizationType()) { + // case Scalar: { + // SQBenchmark sqBenchmark = new SQBenchmark(options); + // sqBenchmark.startBenchmark(); + // } + // break; + // case Vector1D: + // case Vector2D: { + // VQBenchmark vqBenchmark = new VQBenchmark(options); + // vqBenchmark.startBenchmark(options.getVectorDimension()); + // } + // break; + // case Vector3D: + // case Invalid: { + // System.err.println("Unsupported benchmark type."); + // } + // break; + // } + } +} diff --git a/src/main/java/azgracompress/benchmark/SQBenchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/SQBenchmark.java similarity index 76% rename from src/main/java/azgracompress/benchmark/SQBenchmark.java rename to src/main/java/cz/it4i/qcmp/benchmark/SQBenchmark.java index f423cc5..a90c39d 100644 --- a/src/main/java/azgracompress/benchmark/SQBenchmark.java +++ b/src/main/java/cz/it4i/qcmp/benchmark/SQBenchmark.java @@ -1,16 +1,16 @@ -package azgracompress.benchmark; - -import azgracompress.U16; -import azgracompress.cache.QuantizationCacheManager; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.compression.CompressionOptions; -import azgracompress.io.loader.IPlaneLoader; -import azgracompress.io.loader.PlaneLoaderFactory; -import azgracompress.quantization.QTrainIteration; -import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization; -import azgracompress.quantization.scalar.SQCodebook; -import azgracompress.quantization.scalar.ScalarQuantizer; -import azgracompress.utilities.Utils; +package cz.it4i.qcmp.benchmark; + +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.cache.QuantizationCacheManager; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.compression.CompressionOptions; +import cz.it4i.qcmp.io.loader.IPlaneLoader; +import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; +import cz.it4i.qcmp.quantization.QTrainIteration; +import cz.it4i.qcmp.quantization.scalar.LloydMaxU16ScalarQuantization; +import cz.it4i.qcmp.quantization.scalar.SQCodebook; +import cz.it4i.qcmp.quantization.scalar.ScalarQuantizer; +import cz.it4i.qcmp.utilities.Utils; import java.io.File; import java.io.FileOutputStream; @@ -25,10 +25,10 @@ public class SQBenchmark extends BenchmarkBase { @Override public void startBenchmark() { - IPlaneLoader planeLoader; + final IPlaneLoader planeLoader; try { planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo()); - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); System.err.println("Unable to create SCIFIO reader."); return; @@ -37,13 +37,13 @@ public class SQBenchmark extends BenchmarkBase { if (planes.length < 1) { return; } - boolean dirCreated = new File(this.outputDirectory).mkdirs(); + final boolean dirCreated = new File(this.outputDirectory).mkdirs(); System.out.println(String.format("|CODEBOOK| = %d", codebookSize)); ScalarQuantizer quantizer = null; if (options.getCodebookType() == CompressionOptions.CodebookType.Global) { System.out.println("Loading codebook from cache"); - QuantizationCacheManager cacheManager = new QuantizationCacheManager(cacheFolder); + final QuantizationCacheManager cacheManager = new QuantizationCacheManager(cacheFolder); final SQCodebook codebook = cacheManager.loadSQCodebook(inputFile, codebookSize); if (codebook == null) { @@ -59,7 +59,7 @@ public class SQBenchmark extends BenchmarkBase { final int[] middlePlaneData; try { middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex); - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); System.err.println("Failed to load middle plane data."); return; @@ -74,7 +74,7 @@ public class SQBenchmark extends BenchmarkBase { final int[] planeData; try { planeData = planeLoader.loadPlaneData(planeIndex); - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); System.err.println("Failed to load plane data."); return; @@ -87,8 +87,8 @@ public class SQBenchmark extends BenchmarkBase { final String quantizedFile = String.format(QUANTIZED_FILE_TEMPLATE, planeIndex, codebookSize); final String diffFile = String.format(DIFFERENCE_FILE_TEMPLATE, planeIndex, codebookSize); final String absoluteDiffFile = String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE, - planeIndex, - codebookSize); + planeIndex, + codebookSize); final String trainLogFile = String.format(TRAIN_FILE_TEMPLATE, planeIndex, codebookSize); if (options.getCodebookType() == CompressionOptions.CodebookType.Individual) { @@ -121,10 +121,10 @@ public class SQBenchmark extends BenchmarkBase { private void saveCentroids(final int[] centroids, final String centroidsFile) { final String outFile = getFileNamePathIntoOutDir(centroidsFile); try { - FileOutputStream fileStream = new FileOutputStream(outFile); - OutputStreamWriter writer = new OutputStreamWriter(fileStream); + final FileOutputStream fileStream = new FileOutputStream(outFile); + final OutputStreamWriter writer = new OutputStreamWriter(fileStream); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); for (final int entry : centroids) { @@ -137,7 +137,7 @@ public class SQBenchmark extends BenchmarkBase { writer.flush(); fileStream.flush(); fileStream.close(); - } catch (IOException ioE) { + } catch (final IOException ioE) { ioE.printStackTrace(); System.err.println("Failed to save codebook vectors."); } @@ -146,8 +146,8 @@ public class SQBenchmark extends BenchmarkBase { private ScalarQuantizer trainLloydMaxQuantizer(final int[] data, final int codebookSize, final String trainLogFile) { - LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(data, codebookSize, workerCount); - QTrainIteration[] trainingReport = lloydMax.train(); + final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(data, codebookSize, workerCount); + final QTrainIteration[] trainingReport = lloydMax.train(); if (trainLogFile != null) { saveQTrainLog(trainLogFile, trainingReport); System.out.println("Saved the train log file to: " + trainLogFile); diff --git a/src/main/java/azgracompress/benchmark/VQBenchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/VQBenchmark.java similarity index 95% rename from src/main/java/azgracompress/benchmark/VQBenchmark.java rename to src/main/java/cz/it4i/qcmp/benchmark/VQBenchmark.java index 5c9257c..33e0a36 100644 --- a/src/main/java/azgracompress/benchmark/VQBenchmark.java +++ b/src/main/java/cz/it4i/qcmp/benchmark/VQBenchmark.java @@ -1,10 +1,10 @@ -package azgracompress.benchmark; +package cz.it4i.qcmp.benchmark; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.data.Block; -import azgracompress.data.ImageU16; -import azgracompress.data.V2i; -import azgracompress.data.V3i; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.data.Block; +import cz.it4i.qcmp.data.ImageU16; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; public class VQBenchmark extends BenchmarkBase { @@ -19,7 +19,7 @@ public class VQBenchmark extends BenchmarkBase { private ImageU16 reconstructImageFromQuantizedVectors(final int[][] vectors, final V2i qVector) { - Block reconstructedChunk = new Block(new V2i(rawImageDims.getX(), rawImageDims.getY())); + final Block reconstructedChunk = new Block(new V2i(rawImageDims.getX(), rawImageDims.getY())); if (qVector.getY() > 1) { reconstructedChunk.reconstructFrom2DVectors(vectors, qVector); } else { diff --git a/src/main/java/azgracompress/cache/CacheFileHeader.java b/src/main/java/cz/it4i/qcmp/cache/CacheFileHeader.java similarity index 97% rename from src/main/java/azgracompress/cache/CacheFileHeader.java rename to src/main/java/cz/it4i/qcmp/cache/CacheFileHeader.java index d55ef41..888c0c2 100644 --- a/src/main/java/azgracompress/cache/CacheFileHeader.java +++ b/src/main/java/cz/it4i/qcmp/cache/CacheFileHeader.java @@ -1,9 +1,9 @@ -package azgracompress.cache; +package cz.it4i.qcmp.cache; -import azgracompress.data.V2i; -import azgracompress.data.V3i; -import azgracompress.fileformat.QuantizationType; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.utilities.Utils; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/cache/ICacheFile.java b/src/main/java/cz/it4i/qcmp/cache/ICacheFile.java similarity index 94% rename from src/main/java/azgracompress/cache/ICacheFile.java rename to src/main/java/cz/it4i/qcmp/cache/ICacheFile.java index e1e5191..88a441f 100644 --- a/src/main/java/azgracompress/cache/ICacheFile.java +++ b/src/main/java/cz/it4i/qcmp/cache/ICacheFile.java @@ -1,4 +1,4 @@ -package azgracompress.cache; +package cz.it4i.qcmp.cache; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/cache/QuantizationCacheManager.java b/src/main/java/cz/it4i/qcmp/cache/QuantizationCacheManager.java similarity index 98% rename from src/main/java/azgracompress/cache/QuantizationCacheManager.java rename to src/main/java/cz/it4i/qcmp/cache/QuantizationCacheManager.java index 0224eb7..52c6fee 100644 --- a/src/main/java/azgracompress/cache/QuantizationCacheManager.java +++ b/src/main/java/cz/it4i/qcmp/cache/QuantizationCacheManager.java @@ -1,10 +1,10 @@ -package azgracompress.cache; +package cz.it4i.qcmp.cache; -import azgracompress.compression.CompressionOptions; -import azgracompress.data.V3i; -import azgracompress.fileformat.QuantizationType; -import azgracompress.quantization.scalar.SQCodebook; -import azgracompress.quantization.vector.VQCodebook; +import cz.it4i.qcmp.compression.CompressionOptions; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.quantization.scalar.SQCodebook; +import cz.it4i.qcmp.quantization.vector.VQCodebook; import java.io.*; import java.util.ArrayList; diff --git a/src/main/java/azgracompress/cache/SQCacheFile.java b/src/main/java/cz/it4i/qcmp/cache/SQCacheFile.java similarity index 96% rename from src/main/java/azgracompress/cache/SQCacheFile.java rename to src/main/java/cz/it4i/qcmp/cache/SQCacheFile.java index 99b78c3..5277bba 100644 --- a/src/main/java/azgracompress/cache/SQCacheFile.java +++ b/src/main/java/cz/it4i/qcmp/cache/SQCacheFile.java @@ -1,6 +1,6 @@ -package azgracompress.cache; +package cz.it4i.qcmp.cache; -import azgracompress.quantization.scalar.SQCodebook; +import cz.it4i.qcmp.quantization.scalar.SQCodebook; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/cache/VQCacheFile.java b/src/main/java/cz/it4i/qcmp/cache/VQCacheFile.java similarity index 97% rename from src/main/java/azgracompress/cache/VQCacheFile.java rename to src/main/java/cz/it4i/qcmp/cache/VQCacheFile.java index feb842f..de10952 100644 --- a/src/main/java/azgracompress/cache/VQCacheFile.java +++ b/src/main/java/cz/it4i/qcmp/cache/VQCacheFile.java @@ -1,6 +1,6 @@ -package azgracompress.cache; +package cz.it4i.qcmp.cache; -import azgracompress.quantization.vector.VQCodebook; +import cz.it4i.qcmp.quantization.vector.VQCodebook; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/cli/CliConstants.java b/src/main/java/cz/it4i/qcmp/cli/CliConstants.java similarity index 98% rename from src/main/java/azgracompress/cli/CliConstants.java rename to src/main/java/cz/it4i/qcmp/cli/CliConstants.java index 586737b..9d32749 100644 --- a/src/main/java/azgracompress/cli/CliConstants.java +++ b/src/main/java/cz/it4i/qcmp/cli/CliConstants.java @@ -1,4 +1,4 @@ -package azgracompress.cli; +package cz.it4i.qcmp.cli; import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionGroup; @@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull; public class CliConstants { - public static final String MAIN_HELP = "azgracompress.DataCompressor [options] input"; + public static final String MAIN_HELP = "DataCompressor [options] input"; public static final String HELP_SHORT = "h"; public static final String HELP_LONG = "help"; diff --git a/src/main/java/azgracompress/cli/CompressionOptionsCLIParser.java b/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java similarity index 91% rename from src/main/java/azgracompress/cli/CompressionOptionsCLIParser.java rename to src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java index 9737e72..c36aef2 100644 --- a/src/main/java/azgracompress/cli/CompressionOptionsCLIParser.java +++ b/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java @@ -1,15 +1,15 @@ -package azgracompress.cli; - -import azgracompress.ScifioWrapper; -import azgracompress.compression.CompressionOptions; -import azgracompress.compression.CompressorDecompressorBase; -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; -import azgracompress.fileformat.FileExtensions; -import azgracompress.fileformat.QuantizationType; -import azgracompress.io.FileInputData; -import azgracompress.io.InputData; +package cz.it4i.qcmp.cli; + +import cz.it4i.qcmp.ScifioWrapper; +import cz.it4i.qcmp.compression.CompressionOptions; +import cz.it4i.qcmp.compression.CompressorDecompressorBase; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.fileformat.FileExtensions; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.io.FileInputData; +import cz.it4i.qcmp.io.InputData; import io.scif.FormatException; import io.scif.Plane; import io.scif.Reader; @@ -44,7 +44,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * * @param cmdInput Command line arguments. */ - public CompressionOptionsCLIParser(CommandLine cmdInput) { + public CompressionOptionsCLIParser(final CommandLine cmdInput) { parseCLI(cmdInput); } @@ -110,7 +110,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * @param cmd Provided command line arguments. */ private void parseCLI(final CommandLine cmd) { - StringBuilder errorBuilder = new StringBuilder("Errors:\n"); + final StringBuilder errorBuilder = new StringBuilder("Errors:\n"); parseErrorOccurred = false; parseProgramMethod(cmd, errorBuilder); @@ -140,7 +140,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C if (cmd.hasOption(CliConstants.WORKER_COUNT_LONG)) { final String wcString = cmd.getOptionValue(CliConstants.WORKER_COUNT_LONG); - Optional<Integer> pr = ParseUtils.tryParseInt(wcString); + final Optional<Integer> pr = ParseUtils.tryParseInt(wcString); if (pr.isPresent()) { setWorkerCount(pr.get()); } else { @@ -170,7 +170,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * @param inputFileArguments Input file info strings. */ - private void parseInputFilePart(StringBuilder errorBuilder, final String[] inputFileArguments) { + private void parseInputFilePart(final StringBuilder errorBuilder, final String[] inputFileArguments) { if (inputFileArguments.length < 1) { parseErrorOccurred = true; @@ -203,12 +203,12 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C } - private void parseSCIFIOFileArguments(StringBuilder errorBuilder, final String[] inputFileArguments) { + private void parseSCIFIOFileArguments(final StringBuilder errorBuilder, final String[] inputFileArguments) { getInputDataInfo().setDataLoaderType(InputData.DataLoaderType.SCIFIOLoader); - Reader reader; + final Reader reader; try { reader = ScifioWrapper.getReader(getInputDataInfo().getFilePath()); - } catch (IOException | FormatException e) { + } catch (final IOException | FormatException e) { parseErrorOccurred = true; errorBuilder.append("Failed to get SCIFIO reader for file.\n"); errorBuilder.append(e.getMessage()); @@ -228,9 +228,10 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C errorBuilder.append("Too many planes.\n"); } - long planeWidth, planeHeight; + final long planeWidth; + final long planeHeight; try { - Plane plane = reader.openPlane(0, 0); + final Plane plane = reader.openPlane(0, 0); planeWidth = plane.getLengths()[0]; planeHeight = plane.getLengths()[1]; @@ -243,7 +244,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C } - } catch (FormatException | IOException e) { + } catch (final FormatException | IOException e) { parseErrorOccurred = true; errorBuilder.append("Unable to open first plane of the first image.\n") .append(e.getMessage()); @@ -261,7 +262,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C } } - private void parseRawFileArguments(StringBuilder errorBuilder, String[] inputFileArguments) { + private void parseRawFileArguments(final StringBuilder errorBuilder, final String[] inputFileArguments) { // We require the file path and dimensions, like input.raw 1920x1080x5 // First argument is input file name. if (inputFileArguments.length < 2) { @@ -296,13 +297,13 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * @param inputFileArguments Input file arguments. * @param inputFileArgumentsOffset Offset of the plane argument. */ - private void parseInputFilePlaneOptions(StringBuilder errorBuilder, + private void parseInputFilePlaneOptions(final StringBuilder errorBuilder, final String[] inputFileArguments, final int inputFileArgumentsOffset) { - int rangeSeparatorIndex = inputFileArguments[inputFileArgumentsOffset].indexOf("-"); + final int rangeSeparatorIndex = inputFileArguments[inputFileArgumentsOffset].indexOf("-"); if (rangeSeparatorIndex != -1) { - Optional<Range<Integer>> parsedRange = + final Optional<Range<Integer>> parsedRange = ParseUtils.tryParseRange(inputFileArguments[inputFileArgumentsOffset], '-'); if (!parsedRange.isPresent()) { @@ -332,7 +333,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * @param cmd Command line arguments. * @param errorBuilder String error builder. */ - private void parseBitsPerPixel(CommandLine cmd, StringBuilder errorBuilder) { + private void parseBitsPerPixel(final CommandLine cmd, final StringBuilder errorBuilder) { if (cmd.hasOption(CliConstants.BITS_LONG)) { final String bitsString = cmd.getOptionValue(CliConstants.BITS_LONG); final Optional<Integer> parseResult = ParseUtils.tryParseInt(bitsString); @@ -365,7 +366,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * @param cmd Command line arguments. * @param errorBuilder String error builder. */ - private void parseCompressionType(CommandLine cmd, StringBuilder errorBuilder) { + private void parseCompressionType(final CommandLine cmd, final StringBuilder errorBuilder) { if (hasQuantizationType(method)) { if (cmd.hasOption(CliConstants.SCALAR_QUANTIZATION_LONG)) { setQuantizationType(QuantizationType.Scalar); @@ -418,7 +419,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C * @param cmd Command line arguments. * @param errorBuilder String error builder. */ - private void parseProgramMethod(CommandLine cmd, StringBuilder errorBuilder) { + private void parseProgramMethod(final CommandLine cmd, final StringBuilder errorBuilder) { if (cmd.hasOption(CliConstants.HELP_LONG)) { method = ProgramMethod.PrintHelp; } else if (cmd.hasOption(CliConstants.COMPRESS_LONG)) { @@ -453,7 +454,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C } public String report() { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append("Method: "); switch (method) { diff --git a/src/main/java/azgracompress/cli/CustomFunctionBase.java b/src/main/java/cz/it4i/qcmp/cli/CustomFunctionBase.java similarity index 76% rename from src/main/java/azgracompress/cli/CustomFunctionBase.java rename to src/main/java/cz/it4i/qcmp/cli/CustomFunctionBase.java index 8af8992..e5f143b 100644 --- a/src/main/java/azgracompress/cli/CustomFunctionBase.java +++ b/src/main/java/cz/it4i/qcmp/cli/CustomFunctionBase.java @@ -1,18 +1,20 @@ -package azgracompress.cli; +package cz.it4i.qcmp.cli; public abstract class CustomFunctionBase { protected final CompressionOptionsCLIParser options; /** * Base constructor with parsed CLI options. + * * @param options Parsed cli options. */ - public CustomFunctionBase(CompressionOptionsCLIParser options) { + public CustomFunctionBase(final CompressionOptionsCLIParser options) { this.options = options; } /** * Run custom function. + * * @return True if no errors occurred. */ public abstract boolean run(); diff --git a/src/main/java/azgracompress/cli/ParseUtils.java b/src/main/java/cz/it4i/qcmp/cli/ParseUtils.java similarity index 94% rename from src/main/java/azgracompress/cli/ParseUtils.java rename to src/main/java/cz/it4i/qcmp/cli/ParseUtils.java index 7ebf967..5aa279b 100644 --- a/src/main/java/azgracompress/cli/ParseUtils.java +++ b/src/main/java/cz/it4i/qcmp/cli/ParseUtils.java @@ -1,8 +1,8 @@ -package azgracompress.cli; +package cz.it4i.qcmp.cli; -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; import java.util.Optional; @@ -21,7 +21,7 @@ public abstract class ParseUtils { public static Optional<Integer> tryParseInt(final String string) { try { return Optional.of(Integer.parseInt(string)); - } catch (NumberFormatException ignored) { + } catch (final NumberFormatException ignored) { return Optional.empty(); } } diff --git a/src/main/java/azgracompress/cli/ProgramMethod.java b/src/main/java/cz/it4i/qcmp/cli/ProgramMethod.java similarity index 84% rename from src/main/java/azgracompress/cli/ProgramMethod.java rename to src/main/java/cz/it4i/qcmp/cli/ProgramMethod.java index ba97c0f..73d3abd 100644 --- a/src/main/java/azgracompress/cli/ProgramMethod.java +++ b/src/main/java/cz/it4i/qcmp/cli/ProgramMethod.java @@ -1,4 +1,4 @@ -package azgracompress.cli; +package cz.it4i.qcmp.cli; public enum ProgramMethod { Compress, diff --git a/src/main/java/azgracompress/cli/functions/EntropyCalculation.java b/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java similarity index 70% rename from src/main/java/azgracompress/cli/functions/EntropyCalculation.java rename to src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java index 1110002..d99e1b3 100644 --- a/src/main/java/azgracompress/cli/functions/EntropyCalculation.java +++ b/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java @@ -1,10 +1,10 @@ -package azgracompress.cli.functions; +package cz.it4i.qcmp.cli.functions; -import azgracompress.cli.CustomFunctionBase; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.io.loader.IPlaneLoader; -import azgracompress.io.loader.PlaneLoaderFactory; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.cli.CustomFunctionBase; +import cz.it4i.qcmp.io.loader.IPlaneLoader; +import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; +import cz.it4i.qcmp.utilities.Utils; import java.io.IOException; @@ -14,16 +14,16 @@ public class EntropyCalculation extends CustomFunctionBase { * * @param options Parsed cli options. */ - public EntropyCalculation(CompressionOptionsCLIParser options) { + public EntropyCalculation(final CompressionOptionsCLIParser options) { super(options); } @Override public boolean run() { - IPlaneLoader loader; + final IPlaneLoader loader; try { loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo()); - } catch (Exception ex) { + } catch (final Exception ex) { System.err.println("EntropyCalculation::run() - Unable to get plane loader. " + ex.getMessage()); return false; } @@ -32,7 +32,7 @@ public class EntropyCalculation extends CustomFunctionBase { final int[] planeData; try { planeData = loader.loadPlaneData(planeIndex); - } catch (IOException e) { + } catch (final IOException e) { System.err.printf("Failed to load plane %d data. %s", planeIndex, e.getMessage()); return false; } diff --git a/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java b/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java similarity index 90% rename from src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java rename to src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java index 161bc15..17fee7f 100644 --- a/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java +++ b/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java @@ -1,11 +1,11 @@ -package azgracompress.cli.functions; +package cz.it4i.qcmp.cli.functions; -import azgracompress.cli.CustomFunctionBase; -import azgracompress.cli.CompressionOptionsCLIParser; -import azgracompress.data.V3i; -import azgracompress.io.FileInputData; -import azgracompress.io.loader.RawDataLoader; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.cli.CompressionOptionsCLIParser; +import cz.it4i.qcmp.cli.CustomFunctionBase; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.io.FileInputData; +import cz.it4i.qcmp.io.loader.RawDataLoader; +import cz.it4i.qcmp.utilities.Utils; import java.io.FileOutputStream; import java.io.IOException; @@ -13,7 +13,7 @@ import java.io.OutputStreamWriter; import java.util.Arrays; public class MeasurePlaneErrorFunction extends CustomFunctionBase { - public MeasurePlaneErrorFunction(CompressionOptionsCLIParser options) { + public MeasurePlaneErrorFunction(final CompressionOptionsCLIParser options) { super(options); } @@ -122,17 +122,17 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase { final V3i dims = new V3i(1041, 996, 946); final int planePixelCount = dims.getX() * dims.getY(); - PlaneError[] planeErrors = new PlaneError[dims.getZ()]; + final PlaneError[] planeErrors = new PlaneError[dims.getZ()]; - FileInputData refFileInfo = new FileInputData(compFile); + final FileInputData refFileInfo = new FileInputData(compFile); refFileInfo.setDimension(dims); - FileInputData compFileInfo = new FileInputData(compressedFile); + final FileInputData compFileInfo = new FileInputData(compressedFile); compFileInfo.setDimension(dims); final RawDataLoader refPlaneloader = new RawDataLoader(refFileInfo); final RawDataLoader compPlaneloader = new RawDataLoader(compFileInfo); - Thread[] workers = new Thread[workerCount]; + final Thread[] workers = new Thread[workerCount]; final int workSize = dims.getZ() / workerCount; for (int wId = 0; wId < workerCount; wId++) { @@ -147,7 +147,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase { try { originalPlaneData = refPlaneloader.loadPlaneData(planeIndex); compressedPlaneData = compPlaneloader.loadPlaneData(planeIndex); - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); break; } @@ -169,12 +169,12 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase { for (int wId = 0; wId < workerCount; wId++) { workers[wId].join(); } - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); } - try (FileOutputStream fos = new FileOutputStream(reportFile, false); - OutputStreamWriter writer = new OutputStreamWriter(fos)) { + try (final FileOutputStream fos = new FileOutputStream(reportFile, false); + final OutputStreamWriter writer = new OutputStreamWriter(fos)) { writer.write("PlaneIndex\tErrorSum\tMeanError\n"); @@ -185,7 +185,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase { planeError.getMeanAbsoluteError())); } - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); } System.out.println("Finished reportPlaneDifference"); diff --git a/src/main/java/azgracompress/cli/functions/PlaneError.java b/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java similarity index 78% rename from src/main/java/azgracompress/cli/functions/PlaneError.java rename to src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java index 6b858bf..45031c9 100644 --- a/src/main/java/azgracompress/cli/functions/PlaneError.java +++ b/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java @@ -1,11 +1,11 @@ -package azgracompress.cli.functions; +package cz.it4i.qcmp.cli.functions; public class PlaneError { private final int planeIndex; private final double absoluteError; private final double meanAbsoluteError; - public PlaneError(int planeIndex, double absoluteError, double meanAbsoluteError) { + public PlaneError(final int planeIndex, final double absoluteError, final double meanAbsoluteError) { this.planeIndex = planeIndex; this.absoluteError = absoluteError; this.meanAbsoluteError = meanAbsoluteError; diff --git a/src/main/java/azgracompress/compression/CompressionOptions.java b/src/main/java/cz/it4i/qcmp/compression/CompressionOptions.java similarity index 95% rename from src/main/java/azgracompress/compression/CompressionOptions.java rename to src/main/java/cz/it4i/qcmp/compression/CompressionOptions.java index e32af40..e974e6a 100644 --- a/src/main/java/azgracompress/compression/CompressionOptions.java +++ b/src/main/java/cz/it4i/qcmp/compression/CompressionOptions.java @@ -1,9 +1,9 @@ -package azgracompress.compression; +package cz.it4i.qcmp.compression; -import azgracompress.cache.ICacheFile; -import azgracompress.data.V3i; -import azgracompress.fileformat.QuantizationType; -import azgracompress.io.InputData; +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.io.InputData; /** * Options for the compressor/decompressor. diff --git a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java b/src/main/java/cz/it4i/qcmp/compression/CompressorDecompressorBase.java similarity index 94% rename from src/main/java/azgracompress/compression/CompressorDecompressorBase.java rename to src/main/java/cz/it4i/qcmp/compression/CompressorDecompressorBase.java index 469f7b3..2df7a95 100644 --- a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java +++ b/src/main/java/cz/it4i/qcmp/compression/CompressorDecompressorBase.java @@ -1,11 +1,11 @@ -package azgracompress.compression; - -import azgracompress.compression.exception.ImageCompressionException; -import azgracompress.compression.listeners.IProgressListener; -import azgracompress.compression.listeners.IStatusListener; -import azgracompress.huffman.Huffman; -import azgracompress.io.InputData; -import azgracompress.io.OutBitStream; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.compression.exception.ImageCompressionException; +import cz.it4i.qcmp.compression.listeners.IProgressListener; +import cz.it4i.qcmp.compression.listeners.IStatusListener; +import cz.it4i.qcmp.huffman.Huffman; +import cz.it4i.qcmp.io.InputData; +import cz.it4i.qcmp.io.OutBitStream; import java.io.DataOutputStream; import java.util.ArrayList; diff --git a/src/main/java/azgracompress/compression/IImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/IImageCompressor.java similarity index 87% rename from src/main/java/azgracompress/compression/IImageCompressor.java rename to src/main/java/cz/it4i/qcmp/compression/IImageCompressor.java index a7610fa..8d8ae98 100644 --- a/src/main/java/azgracompress/compression/IImageCompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/IImageCompressor.java @@ -1,9 +1,8 @@ -package azgracompress.compression; +package cz.it4i.qcmp.compression; -import azgracompress.cache.ICacheFile; -import azgracompress.compression.exception.ImageCompressionException; -import azgracompress.data.V3i; -import azgracompress.io.InputData; +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.compression.exception.ImageCompressionException; +import cz.it4i.qcmp.io.InputData; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/compression/IImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/IImageDecompressor.java similarity index 90% rename from src/main/java/azgracompress/compression/IImageDecompressor.java rename to src/main/java/cz/it4i/qcmp/compression/IImageDecompressor.java index 8037521..175d9e5 100644 --- a/src/main/java/azgracompress/compression/IImageDecompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/IImageDecompressor.java @@ -1,8 +1,8 @@ -package azgracompress.compression; +package cz.it4i.qcmp.compression; -import azgracompress.cache.ICacheFile; -import azgracompress.compression.exception.ImageDecompressionException; -import azgracompress.fileformat.QCMPFileHeader; +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.compression.exception.ImageDecompressionException; +import cz.it4i.qcmp.fileformat.QCMPFileHeader; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/compression/IListenable.java b/src/main/java/cz/it4i/qcmp/compression/IListenable.java similarity index 77% rename from src/main/java/azgracompress/compression/IListenable.java rename to src/main/java/cz/it4i/qcmp/compression/IListenable.java index 6a1f066..72b6661 100644 --- a/src/main/java/azgracompress/compression/IListenable.java +++ b/src/main/java/cz/it4i/qcmp/compression/IListenable.java @@ -1,7 +1,7 @@ -package azgracompress.compression; +package cz.it4i.qcmp.compression; -import azgracompress.compression.listeners.IProgressListener; -import azgracompress.compression.listeners.IStatusListener; +import cz.it4i.qcmp.compression.listeners.IProgressListener; +import cz.it4i.qcmp.compression.listeners.IStatusListener; public interface IListenable { /** diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/ImageCompressor.java similarity index 96% rename from src/main/java/azgracompress/compression/ImageCompressor.java rename to src/main/java/cz/it4i/qcmp/compression/ImageCompressor.java index 2e0d000..23f5792 100644 --- a/src/main/java/azgracompress/compression/ImageCompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/ImageCompressor.java @@ -1,11 +1,11 @@ -package azgracompress.compression; - -import azgracompress.U16; -import azgracompress.cache.ICacheFile; -import azgracompress.compression.exception.ImageCompressionException; -import azgracompress.data.Range; -import azgracompress.fileformat.QCMPFileHeader; -import azgracompress.io.InputData; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.compression.exception.ImageCompressionException; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.fileformat.QCMPFileHeader; +import cz.it4i.qcmp.io.InputData; import java.io.*; import java.util.Arrays; diff --git a/src/main/java/azgracompress/compression/ImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/ImageDecompressor.java similarity index 83% rename from src/main/java/azgracompress/compression/ImageDecompressor.java rename to src/main/java/cz/it4i/qcmp/compression/ImageDecompressor.java index b8ab49d..23503fa 100644 --- a/src/main/java/azgracompress/compression/ImageDecompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/ImageDecompressor.java @@ -1,16 +1,15 @@ -package azgracompress.compression; - -import azgracompress.cache.ICacheFile; -import azgracompress.compression.exception.ImageDecompressionException; -import azgracompress.data.ImageU16Dataset; -import azgracompress.fileformat.QCMPFileHeader; -import azgracompress.fileformat.QuantizationType; -import azgracompress.utilities.Stopwatch; -import azgracompress.utilities.Utils; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.compression.exception.ImageDecompressionException; +import cz.it4i.qcmp.data.ImageU16Dataset; +import cz.it4i.qcmp.fileformat.QCMPFileHeader; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.utilities.Stopwatch; +import cz.it4i.qcmp.utilities.Utils; import org.jetbrains.annotations.Nullable; import java.io.*; -import java.util.Arrays; import java.util.Optional; @@ -44,8 +43,8 @@ public class ImageDecompressor extends CompressorDecompressorBase { * @return Decompressed file header. * @throws IOException when failed to read header. */ - private QCMPFileHeader readQCMPFileHeader(DataInputStream inputStream) throws IOException { - QCMPFileHeader header = new QCMPFileHeader(); + private QCMPFileHeader readQCMPFileHeader(final DataInputStream inputStream) throws IOException { + final QCMPFileHeader header = new QCMPFileHeader(); if (!header.readHeader(inputStream)) { // Invalid QCMPFile header. return null; @@ -59,7 +58,7 @@ public class ImageDecompressor extends CompressorDecompressorBase { * @return Correct implementation of image decompressor. */ private IImageDecompressor getImageDecompressor(final QuantizationType quantizationType) { - IImageDecompressor decompressor; + final IImageDecompressor decompressor; switch (quantizationType) { case Scalar: decompressor = new SQImageDecompressor(options); @@ -90,14 +89,14 @@ public class ImageDecompressor extends CompressorDecompressorBase { * @throws IOException When fails to read the header. */ public String inspectCompressedFile() throws IOException { - StringBuilder logBuilder = new StringBuilder(); + final StringBuilder logBuilder = new StringBuilder(); boolean validFile = true; - QCMPFileHeader header; - try (FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath()); - DataInputStream dataInputStream = new DataInputStream(fileInputStream)) { + final QCMPFileHeader header; + try (final FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath()); + final DataInputStream dataInputStream = new DataInputStream(fileInputStream)) { header = readQCMPFileHeader(dataInputStream); - } catch (IOException ioEx) { + } catch (final IOException ioEx) { ioEx.printStackTrace(); return ""; } @@ -199,8 +198,8 @@ public class ImageDecompressor extends CompressorDecompressorBase { public boolean decompressToFile() { final Stopwatch decompressionStopwatch = Stopwatch.startNew(); final long decompressedFileSize; - try (FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath()); - DataInputStream dataInputStream = new DataInputStream(fileInputStream)) { + try (final FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath()); + final DataInputStream dataInputStream = new DataInputStream(fileInputStream)) { final QCMPFileHeader header = decompressQcmpHeader(dataInputStream); if (header == null) @@ -218,17 +217,17 @@ public class ImageDecompressor extends CompressorDecompressorBase { return false; } - try (FileOutputStream fos = new FileOutputStream(options.getOutputFilePath(), false); - DataOutputStream decompressStream = new DataOutputStream(fos)) { + try (final FileOutputStream fos = new FileOutputStream(options.getOutputFilePath(), false); + final DataOutputStream decompressStream = new DataOutputStream(fos)) { imageDecompressor.decompress(dataInputStream, decompressStream, header); - } catch (ImageDecompressionException ex) { + } catch (final ImageDecompressionException ex) { System.err.println(ex.getMessage()); return false; } - } catch (IOException ioEx) { + } catch (final IOException ioEx) { ioEx.printStackTrace(); return false; } @@ -241,7 +240,7 @@ public class ImageDecompressor extends CompressorDecompressorBase { return true; } - private boolean checkInputFileSize(QCMPFileHeader header, IImageDecompressor imageDecompressor) { + private boolean checkInputFileSize(final QCMPFileHeader header, final IImageDecompressor imageDecompressor) { final long fileSize = new File(options.getInputDataInfo().getFilePath()).length(); final long dataSize = fileSize - header.getHeaderSize(); final long expectedDataSize = imageDecompressor.getExpectedDataSize(header); @@ -253,14 +252,14 @@ public class ImageDecompressor extends CompressorDecompressorBase { } public Optional<ImageU16Dataset> decompressInMemory() { - try (FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath()); - DataInputStream dataInputStream = new DataInputStream(fileInputStream)) { + try (final FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath()); + final DataInputStream dataInputStream = new DataInputStream(fileInputStream)) { final QCMPFileHeader header = decompressQcmpHeader(dataInputStream); if (header == null) return Optional.empty(); - IImageDecompressor imageDecompressor = getImageDecompressor(header.getQuantizationType()); + final IImageDecompressor imageDecompressor = getImageDecompressor(header.getQuantizationType()); if (imageDecompressor == null) { System.err.println("Unable to create correct decompressor."); return Optional.empty(); @@ -276,14 +275,14 @@ public class ImageDecompressor extends CompressorDecompressorBase { try { imageDecompressor.decompressToBuffer(dataInputStream, decompressedData, header); - } catch (ImageDecompressionException ex) { + } catch (final ImageDecompressionException ex) { System.err.println(ex.getMessage()); return Optional.empty(); } return Optional.of(new ImageU16Dataset(header.getImageDims().toV2i(), header.getImageSizeZ(), decompressedData)); - } catch (IOException ioEx) { + } catch (final IOException ioEx) { ioEx.printStackTrace(); return Optional.empty(); } @@ -291,7 +290,7 @@ public class ImageDecompressor extends CompressorDecompressorBase { public short[] decompressStream(final InputStream compressedStream, final int contentLength) throws ImageDecompressionException { - try (DataInputStream dis = new DataInputStream(new BufferedInputStream(compressedStream))) { + try (final DataInputStream dis = new DataInputStream(new BufferedInputStream(compressedStream))) { assert (dis.markSupported()); final QCMPFileHeader header = cachedHeader.copyOf(); @@ -309,7 +308,7 @@ public class ImageDecompressor extends CompressorDecompressorBase { { int toSkip = contentLength - ((4 * 2) + (chunkCount * 2)); while (toSkip > 0) { - int skipped = dis.skipBytes(toSkip); + final int skipped = dis.skipBytes(toSkip); assert (skipped > 0); toSkip -= skipped; } @@ -325,13 +324,13 @@ public class ImageDecompressor extends CompressorDecompressorBase { return cachedDecompressor.decompressStreamMode(dis, header); - } catch (IOException e) { + } catch (final IOException e) { throw new ImageDecompressionException("Unable to decompress chunk of image from stream.", e); } } @Nullable - private QCMPFileHeader decompressQcmpHeader(DataInputStream dataInputStream) throws IOException { + private QCMPFileHeader decompressQcmpHeader(final DataInputStream dataInputStream) throws IOException { final QCMPFileHeader header = readQCMPFileHeader(dataInputStream); if (header == null) { System.err.println("Failed to read QCMPFile header"); diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java similarity index 79% rename from src/main/java/azgracompress/compression/SQImageCompressor.java rename to src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java index 31fd8d6..22a8dd9 100644 --- a/src/main/java/azgracompress/compression/SQImageCompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java @@ -1,19 +1,18 @@ -package azgracompress.compression; - -import azgracompress.U16; -import azgracompress.cache.ICacheFile; -import azgracompress.cache.QuantizationCacheManager; -import azgracompress.cache.SQCacheFile; -import azgracompress.compression.exception.ImageCompressionException; -import azgracompress.data.V3i; -import azgracompress.huffman.Huffman; -import azgracompress.io.InputData; -import azgracompress.io.loader.IPlaneLoader; -import azgracompress.io.loader.PlaneLoaderFactory; -import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization; -import azgracompress.quantization.scalar.SQCodebook; -import azgracompress.quantization.scalar.ScalarQuantizer; -import azgracompress.utilities.Stopwatch; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.cache.QuantizationCacheManager; +import cz.it4i.qcmp.cache.SQCacheFile; +import cz.it4i.qcmp.compression.exception.ImageCompressionException; +import cz.it4i.qcmp.huffman.Huffman; +import cz.it4i.qcmp.io.InputData; +import cz.it4i.qcmp.io.loader.IPlaneLoader; +import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; +import cz.it4i.qcmp.quantization.scalar.LloydMaxU16ScalarQuantization; +import cz.it4i.qcmp.quantization.scalar.SQCodebook; +import cz.it4i.qcmp.quantization.scalar.ScalarQuantizer; +import cz.it4i.qcmp.utilities.Stopwatch; import java.io.DataOutputStream; import java.io.IOException; @@ -23,7 +22,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm private ScalarQuantizer cachedQuantizer; private Huffman cachedHuffman; - public SQImageCompressor(CompressionOptions options) { + public SQImageCompressor(final CompressionOptions options) { super(options); } @@ -35,15 +34,15 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm */ private ScalarQuantizer trainScalarQuantizerFromData(final int[] planeData) { - LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(planeData, - getCodebookSize(), - options.getWorkerCount()); + final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(planeData, + getCodebookSize(), + options.getWorkerCount()); lloydMax.train(); return new ScalarQuantizer(U16.Min, U16.Max, lloydMax.getCodebook()); } @Override - public void preloadGlobalCodebook(ICacheFile codebookCacheFile) { + public void preloadGlobalCodebook(final ICacheFile codebookCacheFile) { final SQCodebook cachedCodebook = ((SQCacheFile) codebookCacheFile).getCodebook(); cachedQuantizer = new ScalarQuantizer(cachedCodebook); cachedHuffman = createHuffmanCoder(createHuffmanSymbols(cachedCodebook.getCodebookSize()), cachedCodebook.getSymbolFrequencies()); @@ -57,7 +56,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm * @throws ImageCompressionException when writing to the stream fails. */ private void writeCodebookToOutputStream(final ScalarQuantizer quantizer, - DataOutputStream compressStream) throws ImageCompressionException { + final DataOutputStream compressStream) throws ImageCompressionException { final SQCodebook codebook = quantizer.getCodebook(); final int[] centroids = codebook.getCentroids(); final long[] frequencies = codebook.getSymbolFrequencies(); @@ -68,7 +67,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm for (final long symbolFrequency : frequencies) { compressStream.writeLong(symbolFrequency); } - } catch (IOException ioEx) { + } catch (final IOException ioEx) { throw new ImageCompressionException("Unable to write codebook to compress stream.", ioEx); } if (options.isVerbose()) { @@ -83,7 +82,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm * @throws ImageCompressionException when fails to read cached codebook. */ private ScalarQuantizer loadQuantizerFromCache() throws ImageCompressionException { - QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder()); + final QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder()); if (!cacheManager.doesSQCacheExists(options.getInputDataInfo().getCacheFileName(), getCodebookSize())) { trainAndSaveCodebook(); @@ -104,15 +103,15 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm * @throws ImageCompressionException When compress process fails. */ @Override - public long[] compress(DataOutputStream compressStream) throws ImageCompressionException { + public long[] compress(final DataOutputStream compressStream) throws ImageCompressionException { final InputData inputDataInfo = options.getInputDataInfo(); - Stopwatch stopwatch = new Stopwatch(); + final Stopwatch stopwatch = new Stopwatch(); final boolean hasGeneralQuantizer = options.getCodebookType() != CompressionOptions.CodebookType.Individual; final IPlaneLoader planeLoader; try { planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputDataInfo); - } catch (Exception e) { + } catch (final Exception e) { throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage()); } @@ -129,11 +128,11 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm writeCodebookToOutputStream(quantizer, compressStream); } else if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) { stopwatch.restart(); - int[] middlePlaneData; + final int[] middlePlaneData; final int middlePlaneIndex = getMiddlePlaneIndex(); try { middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex); - } catch (IOException ex) { + } catch (final IOException ex) { throw new ImageCompressionException("Unable to load middle plane data.", ex); } @@ -147,15 +146,15 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm } final int[] planeIndices = getPlaneIndicesForCompression(options.getInputDataInfo()); - long[] planeDataSizes = new long[planeIndices.length]; + final long[] planeDataSizes = new long[planeIndices.length]; int planeCounter = 0; for (final int planeIndex : planeIndices) { stopwatch.restart(); - int[] planeData; + final int[] planeData; try { planeData = planeLoader.loadPlaneData(planeIndex); - } catch (IOException ex) { + } catch (final IOException ex) { throw new ImageCompressionException("Unable to load plane data.", ex); } @@ -187,7 +186,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm final IPlaneLoader planeLoader; try { planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputDataInfo); - } catch (Exception e) { + } catch (final Exception e) { throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage()); } int[] trainData = null; @@ -196,7 +195,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm try { reportStatusToListeners("Loading single plane data."); trainData = planeLoader.loadPlaneData(inputDataInfo.getPlaneIndex()); - } catch (IOException e) { + } catch (final IOException e) { throw new ImageCompressionException("Failed to load plane data.", e); } } else if (inputDataInfo.isPlaneRangeSet()) { @@ -204,7 +203,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm final int[] planes = getPlaneIndicesForCompression(options.getInputDataInfo()); try { trainData = planeLoader.loadPlanesU16Data(planes); - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); throw new ImageCompressionException("Failed to load plane range data.", e); } @@ -212,7 +211,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm reportStatusToListeners("Loading all planes data."); try { trainData = planeLoader.loadAllPlanesU16Data(); - } catch (IOException e) { + } catch (final IOException e) { throw new ImageCompressionException("Failed to load all planes data.", e); } } @@ -221,11 +220,11 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm @Override public void trainAndSaveCodebook() throws ImageCompressionException { - int[] trainData = loadConfiguredPlanesData(); + final int[] trainData = loadConfiguredPlanesData(); - LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(trainData, - getCodebookSize(), - options.getWorkerCount()); + final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(trainData, + getCodebookSize(), + options.getWorkerCount()); reportStatusToListeners("Starting LloydMax training."); lloydMax.setStatusListener(this::reportStatusToListeners); @@ -233,18 +232,18 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm final SQCodebook codebook = lloydMax.getCodebook(); reportStatusToListeners("Finished LloydMax training."); - QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder()); + final QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder()); try { final String cacheFilePath = cacheManager.saveCodebook(options.getInputDataInfo().getCacheFileName(), codebook); reportStatusToListeners(String.format("Saved cache file to %s", cacheFilePath)); - } catch (IOException e) { + } catch (final IOException e) { throw new ImageCompressionException("Unable to write cache.", e); } reportStatusToListeners("Operation completed."); } @Override - public long[] compressStreamChunk(DataOutputStream compressStream, InputData inputData) throws ImageCompressionException { + public long[] compressStreamChunk(final DataOutputStream compressStream, final InputData inputData) throws ImageCompressionException { throw new ImageCompressionException("Not implemented yet"); } } diff --git a/src/main/java/azgracompress/compression/SQImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/SQImageDecompressor.java similarity index 74% rename from src/main/java/azgracompress/compression/SQImageDecompressor.java rename to src/main/java/cz/it4i/qcmp/compression/SQImageDecompressor.java index 49ae127..66f8d3a 100644 --- a/src/main/java/azgracompress/compression/SQImageDecompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/SQImageDecompressor.java @@ -1,16 +1,15 @@ -package azgracompress.compression; - -import azgracompress.cache.ICacheFile; -import azgracompress.cache.SQCacheFile; -import azgracompress.cache.VQCacheFile; -import azgracompress.compression.exception.ImageDecompressionException; -import azgracompress.fileformat.QCMPFileHeader; -import azgracompress.huffman.Huffman; -import azgracompress.huffman.HuffmanNode; -import azgracompress.io.InBitStream; -import azgracompress.quantization.scalar.SQCodebook; -import azgracompress.utilities.Stopwatch; -import azgracompress.utilities.TypeConverter; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.cache.SQCacheFile; +import cz.it4i.qcmp.compression.exception.ImageDecompressionException; +import cz.it4i.qcmp.fileformat.QCMPFileHeader; +import cz.it4i.qcmp.huffman.Huffman; +import cz.it4i.qcmp.huffman.HuffmanNode; +import cz.it4i.qcmp.io.InBitStream; +import cz.it4i.qcmp.quantization.scalar.SQCodebook; +import cz.it4i.qcmp.utilities.Stopwatch; +import cz.it4i.qcmp.utilities.TypeConverter; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -20,14 +19,14 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I private SQCodebook cachedCodebook = null; private Huffman cachedHuffman = null; - public SQImageDecompressor(CompressionOptions options) { + public SQImageDecompressor(final CompressionOptions options) { super(options); } - private SQCodebook readScalarQuantizationValues(DataInputStream compressedStream, + private SQCodebook readScalarQuantizationValues(final DataInputStream compressedStream, final int codebookSize) throws ImageDecompressionException { - int[] quantizationValues = new int[codebookSize]; - long[] symbolFrequencies = new long[codebookSize]; + final int[] quantizationValues = new int[codebookSize]; + final long[] symbolFrequencies = new long[codebookSize]; try { for (int i = 0; i < codebookSize; i++) { quantizationValues[i] = compressedStream.readUnsignedShort(); @@ -35,23 +34,23 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I for (int i = 0; i < codebookSize; i++) { symbolFrequencies[i] = compressedStream.readLong(); } - } catch (IOException ioEx) { + } catch (final IOException ioEx) { throw new ImageDecompressionException("Unable to read quantization values from compressed stream.", ioEx); } return new SQCodebook(quantizationValues, symbolFrequencies); } @Override - public long getExpectedDataSize(QCMPFileHeader header) { + public long getExpectedDataSize(final QCMPFileHeader header) { // Quantization value count. final int codebookSize = (int) Math.pow(2, header.getBitsPerCodebookIndex()); // Total codebook size in bytes. Also symbol frequencies for Huffman. - long codebookDataSize = ((2 * codebookSize) + (LONG_BYTES * codebookSize)) * + final long codebookDataSize = ((2 * codebookSize) + (LONG_BYTES * codebookSize)) * (header.isCodebookPerPlane() ? header.getImageSizeZ() : 1); // Indices are encoded using huffman. Plane data size is written in the header. - long[] planeDataSizes = header.getPlaneDataSizes(); + final long[] planeDataSizes = header.getPlaneDataSizes(); long totalPlaneDataSize = 0; for (final long planeDataSize : planeDataSizes) { totalPlaneDataSize += planeDataSize; @@ -61,9 +60,9 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I } @Override - public void decompress(DataInputStream compressedStream, - DataOutputStream decompressStream, - QCMPFileHeader header) throws ImageDecompressionException { + public void decompress(final DataInputStream compressedStream, + final DataOutputStream decompressStream, + final QCMPFileHeader header) throws ImageDecompressionException { final int codebookSize = (int) Math.pow(2, header.getBitsPerCodebookIndex()); final int[] huffmanSymbols = createHuffmanSymbols(codebookSize); @@ -80,7 +79,7 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I huffman = createHuffmanCoder(huffmanSymbols, codebook.getSymbolFrequencies()); } - Stopwatch stopwatch = new Stopwatch(); + final Stopwatch stopwatch = new Stopwatch(); for (int planeIndex = 0; planeIndex < planeCountForDecompression; planeIndex++) { stopwatch.restart(); if (header.isCodebookPerPlane()) { @@ -93,13 +92,13 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I reportStatusToListeners(String.format("Decompressing plane %d...", planeIndex)); byte[] decompressedPlaneData = null; final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex]; - try (InBitStream inBitStream = new InBitStream(compressedStream, - header.getBitsPerCodebookIndex(), - planeDataSize)) { + try (final InBitStream inBitStream = new InBitStream(compressedStream, + header.getBitsPerCodebookIndex(), + planeDataSize)) { inBitStream.readToBuffer(); inBitStream.setAllowReadFromUnderlyingStream(false); - int[] decompressedValues = new int[planePixelCount]; + final int[] decompressedValues = new int[planePixelCount]; final int[] quantizationValues = codebook.getCentroids(); for (int pixel = 0; pixel < planePixelCount; pixel++) { HuffmanNode currentHuffmanNode = huffman.getRoot(); @@ -115,12 +114,12 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I TypeConverter.unsignedShortArrayToByteArray(decompressedValues, false); - } catch (Exception ex) { + } catch (final Exception ex) { throw new ImageDecompressionException("SQImageDecompressor::decompress() - Unable to read indices from InBitStream.", ex); } try { decompressStream.write(decompressedPlaneData); - } catch (IOException e) { + } catch (final IOException e) { throw new ImageDecompressionException("Unable to write decompressed data to decompress stream.", e); } @@ -133,16 +132,16 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I public void preloadGlobalCodebook(final ICacheFile codebookCacheFile) { assert (codebookCacheFile instanceof SQCacheFile) : "Incorrect codebook cache file type for SQImageDecompressor"; - SQCacheFile codebookCache = (SQCacheFile) codebookCacheFile; + final SQCacheFile codebookCache = (SQCacheFile) codebookCacheFile; cachedCodebook = codebookCache.getCodebook(); cachedHuffman = createHuffmanCoder(createHuffmanSymbols(cachedCodebook.getCodebookSize()), cachedCodebook.getSymbolFrequencies()); } @Override - public void decompressToBuffer(DataInputStream compressedStream, - short[][] buffer, - QCMPFileHeader header) throws ImageDecompressionException { + public void decompressToBuffer(final DataInputStream compressedStream, + final short[][] buffer, + final QCMPFileHeader header) throws ImageDecompressionException { final int codebookSize = (int) Math.pow(2, header.getBitsPerCodebookIndex()); final int[] huffmanSymbols = createHuffmanSymbols(codebookSize); final int planeCountForDecompression = header.getImageSizeZ(); @@ -166,11 +165,11 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I assert (codebook != null && huffman != null); final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex]; - try (InBitStream inBitStream = new InBitStream(compressedStream, header.getBitsPerCodebookIndex(), planeDataSize)) { + try (final InBitStream inBitStream = new InBitStream(compressedStream, header.getBitsPerCodebookIndex(), planeDataSize)) { inBitStream.readToBuffer(); inBitStream.setAllowReadFromUnderlyingStream(false); - int[] decompressedValues = new int[planePixelCount]; + final int[] decompressedValues = new int[planePixelCount]; final int[] quantizationValues = codebook.getCentroids(); for (int pixel = 0; pixel < planePixelCount; pixel++) { HuffmanNode currentHuffmanNode = huffman.getRoot(); @@ -183,7 +182,7 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I } buffer[planeIndex] = TypeConverter.intArrayToShortArray(decompressedValues); - } catch (Exception ex) { + } catch (final Exception ex) { throw new ImageDecompressionException("SQImageDecompressor::decompressToBuffer() - Unable to read indices from " + "InBitStream.", ex); @@ -192,7 +191,7 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I } @Override - public short[] decompressStreamMode(DataInputStream compressedStream, QCMPFileHeader header) throws ImageDecompressionException { + public short[] decompressStreamMode(final DataInputStream compressedStream, final QCMPFileHeader header) throws ImageDecompressionException { throw new ImageDecompressionException("Not implemented yet."); } } diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java similarity index 95% rename from src/main/java/azgracompress/compression/VQImageCompressor.java rename to src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java index 4652ee9..2165311 100644 --- a/src/main/java/azgracompress/compression/VQImageCompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java @@ -1,21 +1,21 @@ -package azgracompress.compression; - -import azgracompress.cache.ICacheFile; -import azgracompress.cache.QuantizationCacheManager; -import azgracompress.cache.VQCacheFile; -import azgracompress.compression.exception.ImageCompressionException; -import azgracompress.data.Range; -import azgracompress.fileformat.QuantizationType; -import azgracompress.huffman.Huffman; -import azgracompress.io.InputData; -import azgracompress.io.loader.IPlaneLoader; -import azgracompress.io.loader.PlaneLoaderFactory; -import azgracompress.quantization.vector.LBGResult; -import azgracompress.quantization.vector.LBGVectorQuantizer; -import azgracompress.quantization.vector.VQCodebook; -import azgracompress.quantization.vector.VectorQuantizer; -import azgracompress.utilities.Stopwatch; -import azgracompress.utilities.Utils; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.cache.QuantizationCacheManager; +import cz.it4i.qcmp.cache.VQCacheFile; +import cz.it4i.qcmp.compression.exception.ImageCompressionException; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.huffman.Huffman; +import cz.it4i.qcmp.io.InputData; +import cz.it4i.qcmp.io.loader.IPlaneLoader; +import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; +import cz.it4i.qcmp.quantization.vector.LBGResult; +import cz.it4i.qcmp.quantization.vector.LBGVectorQuantizer; +import cz.it4i.qcmp.quantization.vector.VQCodebook; +import cz.it4i.qcmp.quantization.vector.VectorQuantizer; +import cz.it4i.qcmp.utilities.Stopwatch; +import cz.it4i.qcmp.utilities.Utils; import org.jetbrains.annotations.NotNull; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/compression/VQImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/VQImageDecompressor.java similarity index 97% rename from src/main/java/azgracompress/compression/VQImageDecompressor.java rename to src/main/java/cz/it4i/qcmp/compression/VQImageDecompressor.java index 323b82c..31920ff 100644 --- a/src/main/java/azgracompress/compression/VQImageDecompressor.java +++ b/src/main/java/cz/it4i/qcmp/compression/VQImageDecompressor.java @@ -1,17 +1,17 @@ -package azgracompress.compression; - -import azgracompress.cache.ICacheFile; -import azgracompress.cache.VQCacheFile; -import azgracompress.compression.exception.ImageDecompressionException; -import azgracompress.data.*; -import azgracompress.fileformat.QCMPFileHeader; -import azgracompress.fileformat.QuantizationType; -import azgracompress.huffman.Huffman; -import azgracompress.huffman.HuffmanNode; -import azgracompress.io.InBitStream; -import azgracompress.quantization.vector.VQCodebook; -import azgracompress.utilities.Stopwatch; -import azgracompress.utilities.TypeConverter; +package cz.it4i.qcmp.compression; + +import cz.it4i.qcmp.cache.ICacheFile; +import cz.it4i.qcmp.cache.VQCacheFile; +import cz.it4i.qcmp.compression.exception.ImageDecompressionException; +import cz.it4i.qcmp.data.*; +import cz.it4i.qcmp.fileformat.QCMPFileHeader; +import cz.it4i.qcmp.fileformat.QuantizationType; +import cz.it4i.qcmp.huffman.Huffman; +import cz.it4i.qcmp.huffman.HuffmanNode; +import cz.it4i.qcmp.io.InBitStream; +import cz.it4i.qcmp.quantization.vector.VQCodebook; +import cz.it4i.qcmp.utilities.Stopwatch; +import cz.it4i.qcmp.utilities.TypeConverter; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/compression/exception/ImageCompressionException.java b/src/main/java/cz/it4i/qcmp/compression/exception/ImageCompressionException.java similarity index 93% rename from src/main/java/azgracompress/compression/exception/ImageCompressionException.java rename to src/main/java/cz/it4i/qcmp/compression/exception/ImageCompressionException.java index 6ccb78f..65c7e0a 100644 --- a/src/main/java/azgracompress/compression/exception/ImageCompressionException.java +++ b/src/main/java/cz/it4i/qcmp/compression/exception/ImageCompressionException.java @@ -1,4 +1,4 @@ -package azgracompress.compression.exception; +package cz.it4i.qcmp.compression.exception; public class ImageCompressionException extends Exception { private final Exception innerException; diff --git a/src/main/java/azgracompress/compression/exception/ImageDecompressionException.java b/src/main/java/cz/it4i/qcmp/compression/exception/ImageDecompressionException.java similarity index 93% rename from src/main/java/azgracompress/compression/exception/ImageDecompressionException.java rename to src/main/java/cz/it4i/qcmp/compression/exception/ImageDecompressionException.java index 4ddeaa3..6093386 100644 --- a/src/main/java/azgracompress/compression/exception/ImageDecompressionException.java +++ b/src/main/java/cz/it4i/qcmp/compression/exception/ImageDecompressionException.java @@ -1,4 +1,4 @@ -package azgracompress.compression.exception; +package cz.it4i.qcmp.compression.exception; public class ImageDecompressionException extends Exception { private final Exception innerException; diff --git a/src/main/java/azgracompress/compression/listeners/IProgressListener.java b/src/main/java/cz/it4i/qcmp/compression/listeners/IProgressListener.java similarity index 73% rename from src/main/java/azgracompress/compression/listeners/IProgressListener.java rename to src/main/java/cz/it4i/qcmp/compression/listeners/IProgressListener.java index 3c9c688..c3fcca5 100644 --- a/src/main/java/azgracompress/compression/listeners/IProgressListener.java +++ b/src/main/java/cz/it4i/qcmp/compression/listeners/IProgressListener.java @@ -1,4 +1,4 @@ -package azgracompress.compression.listeners; +package cz.it4i.qcmp.compression.listeners; public interface IProgressListener { void sendProgress(final String message, final int index, final int finalIndex); diff --git a/src/main/java/azgracompress/compression/listeners/IStatusListener.java b/src/main/java/cz/it4i/qcmp/compression/listeners/IStatusListener.java similarity index 64% rename from src/main/java/azgracompress/compression/listeners/IStatusListener.java rename to src/main/java/cz/it4i/qcmp/compression/listeners/IStatusListener.java index bd549e4..e28370f 100644 --- a/src/main/java/azgracompress/compression/listeners/IStatusListener.java +++ b/src/main/java/cz/it4i/qcmp/compression/listeners/IStatusListener.java @@ -1,4 +1,4 @@ -package azgracompress.compression.listeners; +package cz.it4i.qcmp.compression.listeners; public interface IStatusListener { void sendMessage(final String message); diff --git a/src/main/java/azgracompress/data/Block.java b/src/main/java/cz/it4i/qcmp/data/Block.java similarity index 96% rename from src/main/java/azgracompress/data/Block.java rename to src/main/java/cz/it4i/qcmp/data/Block.java index cf4a42f..5165fd0 100644 --- a/src/main/java/azgracompress/data/Block.java +++ b/src/main/java/cz/it4i/qcmp/data/Block.java @@ -1,8 +1,8 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; public class Block { private final int FILL_VALUE = 0; - private int[] data; + private final int[] data; private final V2i dims; @@ -75,7 +75,7 @@ public class Block { * * @param vectors Array of 1D row vectors. */ - public void reconstructFromVectors(int[][] vectors) { + public void reconstructFromVectors(final int[][] vectors) { if (vectors.length == 0) { return; } @@ -155,7 +155,7 @@ public class Block { * @param chunkXOffset Chunk X offset. * @param chunkYOffset Chunk Y offset. */ - private void copyDataFromVector(int[] vector, + private void copyDataFromVector(final int[] vector, final V2i qVectorDims, final int chunkXOffset, final int chunkYOffset) { @@ -182,7 +182,7 @@ public class Block { * @return True if same. */ @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (obj instanceof Block) { final Block otherChunk = (Block) obj; if (data.length != otherChunk.data.length) { diff --git a/src/main/java/azgracompress/data/ImageU16.java b/src/main/java/cz/it4i/qcmp/data/ImageU16.java similarity index 63% rename from src/main/java/azgracompress/data/ImageU16.java rename to src/main/java/cz/it4i/qcmp/data/ImageU16.java index c2787c2..8326f60 100644 --- a/src/main/java/azgracompress/data/ImageU16.java +++ b/src/main/java/cz/it4i/qcmp/data/ImageU16.java @@ -1,12 +1,12 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.utilities.Utils; public class ImageU16 { private final int width; private final int height; - private int[] data; + private final int[] data; public ImageU16(final int width, final int height, final int[] data) { assert ((width * height) == data.length) : "Wrong data size in ImageU16 constructor."; @@ -54,20 +54,20 @@ public class ImageU16 { return height; } -// /** -// * Chunk the image data into quantization vectors of requested dimension. -// * -// * @param qVectorDims Quantization vector dimension. -// * @return Array of quantization vectors. -// */ -// public int[][] toQuantizationVectors(final V2i qVectorDims) { -// if (qVectorDims.getY() == 1) { -// // 1D row vectors. -// return as2dChunk().divideInto1DVectors(qVectorDims.getX()); -// } else { -// // 2D matrix vectors. -// return as2dChunk().divideInto2DVectors(qVectorDims); -// //return Chunk2D.chunksAsImageVectors(as2dChunk().divideIntoChunks(qVectorDims)); -// } -// } + // /** + // * Chunk the image data into quantization vectors of requested dimension. + // * + // * @param qVectorDims Quantization vector dimension. + // * @return Array of quantization vectors. + // */ + // public int[][] toQuantizationVectors(final V2i qVectorDims) { + // if (qVectorDims.getY() == 1) { + // // 1D row vectors. + // return as2dChunk().divideInto1DVectors(qVectorDims.getX()); + // } else { + // // 2D matrix vectors. + // return as2dChunk().divideInto2DVectors(qVectorDims); + // //return Chunk2D.chunksAsImageVectors(as2dChunk().divideIntoChunks(qVectorDims)); + // } + // } } diff --git a/src/main/java/azgracompress/data/ImageU16Dataset.java b/src/main/java/cz/it4i/qcmp/data/ImageU16Dataset.java similarity index 81% rename from src/main/java/azgracompress/data/ImageU16Dataset.java rename to src/main/java/cz/it4i/qcmp/data/ImageU16Dataset.java index 0e4d42c..da3cb46 100644 --- a/src/main/java/azgracompress/data/ImageU16Dataset.java +++ b/src/main/java/cz/it4i/qcmp/data/ImageU16Dataset.java @@ -1,11 +1,11 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; public class ImageU16Dataset { private final V2i planeDimensions; private final int planeCount; private final short[][] data; - public ImageU16Dataset(V2i planeDimensions, int planeCount, short[][] planeData) { + public ImageU16Dataset(final V2i planeDimensions, final int planeCount, final short[][] planeData) { this.planeDimensions = planeDimensions; this.planeCount = planeCount; this.data = planeData; diff --git a/src/main/java/azgracompress/data/Range.java b/src/main/java/cz/it4i/qcmp/data/Range.java similarity index 92% rename from src/main/java/azgracompress/data/Range.java rename to src/main/java/cz/it4i/qcmp/data/Range.java index a30f7a8..c309cd4 100644 --- a/src/main/java/azgracompress/data/Range.java +++ b/src/main/java/cz/it4i/qcmp/data/Range.java @@ -1,4 +1,4 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; public final class Range<T extends Comparable<T>> { /** @@ -17,7 +17,7 @@ public final class Range<T extends Comparable<T>> { * @param from Start of the interval, * @param to Inclusive end of the interval. */ - public Range(T from, T to) { + public Range(final T from, final T to) { this.from = from; this.to = to; } diff --git a/src/main/java/azgracompress/data/V2.java b/src/main/java/cz/it4i/qcmp/data/V2.java similarity index 95% rename from src/main/java/azgracompress/data/V2.java rename to src/main/java/cz/it4i/qcmp/data/V2.java index b8968af..50dd462 100644 --- a/src/main/java/azgracompress/data/V2.java +++ b/src/main/java/cz/it4i/qcmp/data/V2.java @@ -1,4 +1,4 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; /** * Template for vector with two values. @@ -71,7 +71,7 @@ public class V2<T> { * @return True if both objects are equal. */ @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (obj instanceof V2<?>) { final V2<?> other = (V2<?>) obj; return ((x == other.x) && (y == other.y)); diff --git a/src/main/java/azgracompress/data/V2i.java b/src/main/java/cz/it4i/qcmp/data/V2i.java similarity index 95% rename from src/main/java/azgracompress/data/V2i.java rename to src/main/java/cz/it4i/qcmp/data/V2i.java index ee00c8b..aca7fe5 100644 --- a/src/main/java/azgracompress/data/V2i.java +++ b/src/main/java/cz/it4i/qcmp/data/V2i.java @@ -1,4 +1,4 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; public final class V2i extends V2<Integer> { public V2i(final int x, final int y) { diff --git a/src/main/java/azgracompress/data/V3.java b/src/main/java/cz/it4i/qcmp/data/V3.java similarity index 94% rename from src/main/java/azgracompress/data/V3.java rename to src/main/java/cz/it4i/qcmp/data/V3.java index c9ae9c7..973bd9d 100644 --- a/src/main/java/azgracompress/data/V3.java +++ b/src/main/java/cz/it4i/qcmp/data/V3.java @@ -1,4 +1,4 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; /** * Template for vector with three values. @@ -49,7 +49,7 @@ public class V3<T> extends V2<T> { * @return True if both objects are equal. */ @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (obj instanceof V3<?>) { final V3<?> other = (V3<?>) obj; return ((getX() == other.getX()) && (getY() == other.getY()) && (z == other.z)); diff --git a/src/main/java/azgracompress/data/V3i.java b/src/main/java/cz/it4i/qcmp/data/V3i.java similarity index 97% rename from src/main/java/azgracompress/data/V3i.java rename to src/main/java/cz/it4i/qcmp/data/V3i.java index b8c730e..b757672 100644 --- a/src/main/java/azgracompress/data/V3i.java +++ b/src/main/java/cz/it4i/qcmp/data/V3i.java @@ -1,4 +1,4 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; public final class V3i extends V3<Integer> { diff --git a/src/main/java/azgracompress/data/Voxel.java b/src/main/java/cz/it4i/qcmp/data/Voxel.java similarity index 99% rename from src/main/java/azgracompress/data/Voxel.java rename to src/main/java/cz/it4i/qcmp/data/Voxel.java index 582a065..b41fd31 100644 --- a/src/main/java/azgracompress/data/Voxel.java +++ b/src/main/java/cz/it4i/qcmp/data/Voxel.java @@ -1,4 +1,4 @@ -package azgracompress.data; +package cz.it4i.qcmp.data; public final class Voxel { /** @@ -128,6 +128,7 @@ public final class Voxel { reconstructFromVoxels(voxelDims, voxelData, reconstructedData, 0); return new ImageU16Dataset(dims.toV2i(), dims.getZ(), reconstructedData); } + /* public short[] reconstructFromVoxelsToVoxelArray(final V3i voxelDims, final int[][] voxelData) { final short[] reconstructedVoxel = new short[(int) dims.multiplyTogether()]; diff --git a/src/main/java/azgracompress/fileformat/FileExtensions.java b/src/main/java/cz/it4i/qcmp/fileformat/FileExtensions.java similarity index 84% rename from src/main/java/azgracompress/fileformat/FileExtensions.java rename to src/main/java/cz/it4i/qcmp/fileformat/FileExtensions.java index f0f9a6c..cb8675d 100644 --- a/src/main/java/azgracompress/fileformat/FileExtensions.java +++ b/src/main/java/cz/it4i/qcmp/fileformat/FileExtensions.java @@ -1,4 +1,4 @@ -package azgracompress.fileformat; +package cz.it4i.qcmp.fileformat; public class FileExtensions { public static final String RAW = "raw"; diff --git a/src/main/java/azgracompress/fileformat/QCMPFileHeader.java b/src/main/java/cz/it4i/qcmp/fileformat/QCMPFileHeader.java similarity index 98% rename from src/main/java/azgracompress/fileformat/QCMPFileHeader.java rename to src/main/java/cz/it4i/qcmp/fileformat/QCMPFileHeader.java index 7f8ffd7..f613977 100644 --- a/src/main/java/azgracompress/fileformat/QCMPFileHeader.java +++ b/src/main/java/cz/it4i/qcmp/fileformat/QCMPFileHeader.java @@ -1,8 +1,8 @@ -package azgracompress.fileformat; +package cz.it4i.qcmp.fileformat; -import azgracompress.U16; -import azgracompress.compression.VQImageCompressor; -import azgracompress.data.V3i; +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.compression.VQImageCompressor; +import cz.it4i.qcmp.data.V3i; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/src/main/java/azgracompress/fileformat/QuantizationType.java b/src/main/java/cz/it4i/qcmp/fileformat/QuantizationType.java similarity index 90% rename from src/main/java/azgracompress/fileformat/QuantizationType.java rename to src/main/java/cz/it4i/qcmp/fileformat/QuantizationType.java index 649b926..3acce0a 100644 --- a/src/main/java/azgracompress/fileformat/QuantizationType.java +++ b/src/main/java/cz/it4i/qcmp/fileformat/QuantizationType.java @@ -1,4 +1,4 @@ -package azgracompress.fileformat; +package cz.it4i.qcmp.fileformat; public enum QuantizationType { Scalar(0), @@ -9,7 +9,7 @@ public enum QuantizationType { private final int value; - QuantizationType(int enumValue) { + QuantizationType(final int enumValue) { value = enumValue; } diff --git a/src/main/java/azgracompress/huffman/Huffman.java b/src/main/java/cz/it4i/qcmp/huffman/Huffman.java similarity index 77% rename from src/main/java/azgracompress/huffman/Huffman.java rename to src/main/java/cz/it4i/qcmp/huffman/Huffman.java index 771efbc..624fbf9 100644 --- a/src/main/java/azgracompress/huffman/Huffman.java +++ b/src/main/java/cz/it4i/qcmp/huffman/Huffman.java @@ -1,4 +1,4 @@ -package azgracompress.huffman; +package cz.it4i.qcmp.huffman; import java.util.*; @@ -9,14 +9,14 @@ public class Huffman { private final int[] symbols; private final long[] symbolFrequencies; - public Huffman(int[] symbols, long[] symbolFrequencies) { + public Huffman(final int[] symbols, final long[] symbolFrequencies) { assert (symbols.length == symbolFrequencies.length) : "Array lengths mismatch"; this.symbols = symbols; this.symbolFrequencies = symbolFrequencies; } public void buildHuffmanTree() { - PriorityQueue<HuffmanNode> queue = buildPriorityQueue(); + final PriorityQueue<HuffmanNode> queue = buildPriorityQueue(); while (queue.size() != 1) { @@ -46,7 +46,7 @@ public class Huffman { traverseSymbolCodes(root, new ArrayList<Boolean>()); } - private void traverseSymbolCodes(HuffmanNode currentNode, ArrayList<Boolean> currentCode) { + private void traverseSymbolCodes(final HuffmanNode currentNode, final ArrayList<Boolean> currentCode) { boolean inLeaf = true; final int bit = currentNode.getBit(); if (bit != -1) { @@ -54,12 +54,12 @@ public class Huffman { } if (currentNode.subNodeA != null) { - ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode); + final ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode); traverseSymbolCodes(currentNode.subNodeA, codeCopy); inLeaf = false; } if (currentNode.subNodeB != null) { - ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode); + final ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode); traverseSymbolCodes(currentNode.subNodeB, codeCopy); inLeaf = false; } @@ -68,7 +68,7 @@ public class Huffman { assert (currentNode.isLeaf()); //currentNode.setIsLeaf(true); - boolean[] finalSymbolCode = new boolean[currentCode.size()]; + final boolean[] finalSymbolCode = new boolean[currentCode.size()]; for (int i = 0; i < finalSymbolCode.length; i++) { finalSymbolCode[i] = currentCode.get(i); } @@ -84,7 +84,7 @@ public class Huffman { totalFrequency += symbolFrequency; } - PriorityQueue<HuffmanNode> queue = new PriorityQueue<>(symbols.length); + final PriorityQueue<HuffmanNode> queue = new PriorityQueue<>(symbols.length); for (int sIndex = 0; sIndex < symbols.length; sIndex++) { final double symbolProbability = (double) symbolFrequencies[sIndex] / totalFrequency; @@ -108,18 +108,18 @@ public class Huffman { return createSortedHashMap(symbolProbabilityMap); } - private HashMap<Integer, Double> createSortedHashMap(HashMap<Integer, Double> map) { - List<Map.Entry<Integer, Double>> list = new LinkedList<Map.Entry<Integer, Double>>(map.entrySet()); + private HashMap<Integer, Double> createSortedHashMap(final HashMap<Integer, Double> map) { + final List<Map.Entry<Integer, Double>> list = new LinkedList<Map.Entry<Integer, Double>>(map.entrySet()); //Custom Comparator list.sort(new Comparator<Map.Entry<Integer, Double>>() { @Override - public int compare(Map.Entry<Integer, Double> t0, Map.Entry<Integer, Double> t1) { + public int compare(final Map.Entry<Integer, Double> t0, final Map.Entry<Integer, Double> t1) { return -(t0.getValue().compareTo(t1.getValue())); } }); //copying the sorted list in HashMap to preserve the iteration order - HashMap<Integer,Double> sortedHashMap = new LinkedHashMap<Integer,Double>(); - for (Map.Entry<Integer, Double> entry : list) { + final HashMap<Integer, Double> sortedHashMap = new LinkedHashMap<Integer, Double>(); + for (final Map.Entry<Integer, Double> entry : list) { sortedHashMap.put(entry.getKey(), entry.getValue()); } return sortedHashMap; diff --git a/src/main/java/azgracompress/huffman/HuffmanNode.java b/src/main/java/cz/it4i/qcmp/huffman/HuffmanNode.java similarity index 87% rename from src/main/java/azgracompress/huffman/HuffmanNode.java rename to src/main/java/cz/it4i/qcmp/huffman/HuffmanNode.java index 4b0ea72..34d16cc 100644 --- a/src/main/java/azgracompress/huffman/HuffmanNode.java +++ b/src/main/java/cz/it4i/qcmp/huffman/HuffmanNode.java @@ -1,4 +1,4 @@ -package azgracompress.huffman; +package cz.it4i.qcmp.huffman; import org.jetbrains.annotations.NotNull; @@ -22,7 +22,7 @@ public class HuffmanNode implements Comparable<HuffmanNode> { this.leaf = true; } - public HuffmanNode(final double probability, HuffmanNode parentA, HuffmanNode parentB) { + public HuffmanNode(final double probability, final HuffmanNode parentA, final HuffmanNode parentB) { this.probability = probability; this.subNodeA = parentA; this.subNodeB = parentB; @@ -39,11 +39,11 @@ public class HuffmanNode implements Comparable<HuffmanNode> { } @Override - public int compareTo(@NotNull HuffmanNode otherNode) { + public int compareTo(@NotNull final HuffmanNode otherNode) { return Double.compare(probability, otherNode.probability); } - public void setBit(int bit) { + public void setBit(final int bit) { this.bit = bit; } diff --git a/src/main/java/azgracompress/io/BufferInputData.java b/src/main/java/cz/it4i/qcmp/io/BufferInputData.java similarity index 95% rename from src/main/java/azgracompress/io/BufferInputData.java rename to src/main/java/cz/it4i/qcmp/io/BufferInputData.java index f46dd05..3b263a2 100644 --- a/src/main/java/azgracompress/io/BufferInputData.java +++ b/src/main/java/cz/it4i/qcmp/io/BufferInputData.java @@ -1,6 +1,6 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; -import azgracompress.data.V3i; +import cz.it4i.qcmp.data.V3i; /** * Input data backed by the buffer object. diff --git a/src/main/java/azgracompress/io/FileInputData.java b/src/main/java/cz/it4i/qcmp/io/FileInputData.java similarity index 87% rename from src/main/java/azgracompress/io/FileInputData.java rename to src/main/java/cz/it4i/qcmp/io/FileInputData.java index 968fbd6..fccce4c 100644 --- a/src/main/java/azgracompress/io/FileInputData.java +++ b/src/main/java/cz/it4i/qcmp/io/FileInputData.java @@ -1,4 +1,4 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; /** * Input data backed by the file. @@ -15,7 +15,7 @@ public class FileInputData extends InputData { * * @param filePath */ - public FileInputData(String filePath) { + public FileInputData(final String filePath) { this.filePath = filePath; } diff --git a/src/main/java/azgracompress/io/FlatBufferInputData.java b/src/main/java/cz/it4i/qcmp/io/FlatBufferInputData.java similarity index 95% rename from src/main/java/azgracompress/io/FlatBufferInputData.java rename to src/main/java/cz/it4i/qcmp/io/FlatBufferInputData.java index 5e5629b..3cad98b 100644 --- a/src/main/java/azgracompress/io/FlatBufferInputData.java +++ b/src/main/java/cz/it4i/qcmp/io/FlatBufferInputData.java @@ -1,6 +1,6 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; -import azgracompress.data.V3i; +import cz.it4i.qcmp.data.V3i; /** * Input data backed by the single buffer object. diff --git a/src/main/java/azgracompress/io/InBitStream.java b/src/main/java/cz/it4i/qcmp/io/InBitStream.java similarity index 99% rename from src/main/java/azgracompress/io/InBitStream.java rename to src/main/java/cz/it4i/qcmp/io/InBitStream.java index 9293c4b..c7c5827 100644 --- a/src/main/java/azgracompress/io/InBitStream.java +++ b/src/main/java/cz/it4i/qcmp/io/InBitStream.java @@ -1,4 +1,4 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; import java.io.IOException; import java.io.InputStream; diff --git a/src/main/java/azgracompress/io/InputData.java b/src/main/java/cz/it4i/qcmp/io/InputData.java similarity index 84% rename from src/main/java/azgracompress/io/InputData.java rename to src/main/java/cz/it4i/qcmp/io/InputData.java index 0a384d2..d6a3fe3 100644 --- a/src/main/java/azgracompress/io/InputData.java +++ b/src/main/java/cz/it4i/qcmp/io/InputData.java @@ -1,7 +1,7 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; -import azgracompress.data.Range; -import azgracompress.data.V3i; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V3i; /** * Information about the input file. @@ -67,7 +67,7 @@ public abstract class InputData { return planeIndex; } - public void setPlaneIndex(Integer planeIndex) { + public void setPlaneIndex(final Integer planeIndex) { this.planeIndex = planeIndex; } @@ -75,7 +75,7 @@ public abstract class InputData { return planeRange; } - public void setPlaneRange(Range<Integer> planeRange) { + public void setPlaneRange(final Range<Integer> planeRange) { this.planeRange = planeRange; } @@ -83,7 +83,7 @@ public abstract class InputData { return dataLoaderType; } - public void setDataLoaderType(DataLoaderType dataLoaderType) { + public void setDataLoaderType(final DataLoaderType dataLoaderType) { this.dataLoaderType = dataLoaderType; } @@ -91,7 +91,7 @@ public abstract class InputData { return pixelType; } - public void setPixelType(PixelType pixelType) { + public void setPixelType(final PixelType pixelType) { this.pixelType = pixelType; } diff --git a/src/main/java/azgracompress/io/MemoryOutputStream.java b/src/main/java/cz/it4i/qcmp/io/MemoryOutputStream.java similarity index 93% rename from src/main/java/azgracompress/io/MemoryOutputStream.java rename to src/main/java/cz/it4i/qcmp/io/MemoryOutputStream.java index f23a80c..48309eb 100644 --- a/src/main/java/azgracompress/io/MemoryOutputStream.java +++ b/src/main/java/cz/it4i/qcmp/io/MemoryOutputStream.java @@ -1,4 +1,4 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; import java.io.ByteArrayOutputStream; diff --git a/src/main/java/azgracompress/io/OutBitStream.java b/src/main/java/cz/it4i/qcmp/io/OutBitStream.java similarity index 92% rename from src/main/java/azgracompress/io/OutBitStream.java rename to src/main/java/cz/it4i/qcmp/io/OutBitStream.java index 2d3b886..344f033 100644 --- a/src/main/java/azgracompress/io/OutBitStream.java +++ b/src/main/java/cz/it4i/qcmp/io/OutBitStream.java @@ -1,12 +1,12 @@ -package azgracompress.io; +package cz.it4i.qcmp.io; import java.io.IOException; import java.io.OutputStream; public class OutBitStream implements AutoCloseable { - private OutputStream outStream; + private final OutputStream outStream; - private byte[] buffer; + private final byte[] buffer; private int bufferPosition; private byte bitBuffer = 0x00; @@ -16,7 +16,7 @@ public class OutBitStream implements AutoCloseable { private long bytesWritten = 0; - public OutBitStream(OutputStream outputStream, final int bitsPerValue, final int bufferSize) { + public OutBitStream(final OutputStream outputStream, final int bitsPerValue, final int bufferSize) { outStream = outputStream; this.bitsPerValue = bitsPerValue; diff --git a/src/main/java/cz/it4i/qcmp/io/RawDataIO.java b/src/main/java/cz/it4i/qcmp/io/RawDataIO.java new file mode 100644 index 0000000..fade99a --- /dev/null +++ b/src/main/java/cz/it4i/qcmp/io/RawDataIO.java @@ -0,0 +1,34 @@ +package cz.it4i.qcmp.io; + +import cz.it4i.qcmp.data.ImageU16; +import cz.it4i.qcmp.utilities.TypeConverter; + +import java.io.FileOutputStream; +import java.io.IOException; + +public class RawDataIO { + + public static void writeImageU16(final String rawFile, + final ImageU16 image, + final boolean littleEndian) throws IOException { + final byte[] buffer = TypeConverter.unsignedShortArrayToByteArray(image.getData(), littleEndian); + writeBytesToFile(rawFile, buffer); + } + + public static void writeDataI32(final String rawFile, + final int[] differenceData, + final boolean littleEndian) throws IOException { + final byte[] buffer = TypeConverter.intArrayToByteArray(differenceData, littleEndian); + writeBytesToFile(rawFile, buffer); + } + + public static void writeBytesToFile(final String rawFile, + final byte[] buffer) throws IOException { + final FileOutputStream fileStream = new FileOutputStream(rawFile, false); + fileStream.write(buffer, 0, buffer.length); + fileStream.flush(); + fileStream.close(); + } + + +} diff --git a/src/main/java/azgracompress/io/loader/BasicLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java similarity index 99% rename from src/main/java/azgracompress/io/loader/BasicLoader.java rename to src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java index f3b7867..1ef3ccd 100644 --- a/src/main/java/azgracompress/io/loader/BasicLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java @@ -1,6 +1,6 @@ -package azgracompress.io.loader; +package cz.it4i.qcmp.io.loader; -import azgracompress.data.*; +import cz.it4i.qcmp.data.*; import java.io.IOException; diff --git a/src/main/java/azgracompress/io/loader/DataWrappingStrategy.java b/src/main/java/cz/it4i/qcmp/io/loader/DataWrappingStrategy.java similarity index 92% rename from src/main/java/azgracompress/io/loader/DataWrappingStrategy.java rename to src/main/java/cz/it4i/qcmp/io/loader/DataWrappingStrategy.java index fc2015e..2f9faaf 100644 --- a/src/main/java/azgracompress/io/loader/DataWrappingStrategy.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/DataWrappingStrategy.java @@ -1,4 +1,4 @@ -package azgracompress.io.loader; +package cz.it4i.qcmp.io.loader; /** * What to do when blocks or voxels extend outside the source image. These parameters are based on OpenGL texture wrapping options. diff --git a/src/main/java/azgracompress/io/loader/FlatBufferLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java similarity index 94% rename from src/main/java/azgracompress/io/loader/FlatBufferLoader.java rename to src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java index 58c145d..023c76d 100644 --- a/src/main/java/azgracompress/io/loader/FlatBufferLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java @@ -1,10 +1,10 @@ -package azgracompress.io.loader; +package cz.it4i.qcmp.io.loader; -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; -import azgracompress.io.FlatBufferInputData; -import azgracompress.utilities.TypeConverter; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.io.FlatBufferInputData; +import cz.it4i.qcmp.utilities.TypeConverter; import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/azgracompress/io/loader/IPlaneLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/IPlaneLoader.java similarity index 95% rename from src/main/java/azgracompress/io/loader/IPlaneLoader.java rename to src/main/java/cz/it4i/qcmp/io/loader/IPlaneLoader.java index 5db29c5..9352e1f 100644 --- a/src/main/java/azgracompress/io/loader/IPlaneLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/IPlaneLoader.java @@ -1,10 +1,10 @@ -package azgracompress.io.loader; +package cz.it4i.qcmp.io.loader; -import azgracompress.compression.CompressionOptions; -import azgracompress.compression.exception.ImageCompressionException; -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; +import cz.it4i.qcmp.compression.CompressionOptions; +import cz.it4i.qcmp.compression.exception.ImageCompressionException; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; import java.io.IOException; @@ -165,7 +165,7 @@ public interface IPlaneLoader { throw new ImageCompressionException("Invalid QuantizationType '" + options.getQuantizationType().toString() + "'"); } } - } catch (IOException e) { + } catch (final IOException e) { throw new ImageCompressionException("Unable to load vectors QuantizationType=" + options.getQuantizationType(), e); } } diff --git a/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java similarity index 93% rename from src/main/java/azgracompress/io/loader/ImageJBufferLoader.java rename to src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java index 25c1d4e..259964b 100644 --- a/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java @@ -1,11 +1,11 @@ -package azgracompress.io.loader; - -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; -import azgracompress.io.BufferInputData; -import azgracompress.io.InputData; -import azgracompress.utilities.TypeConverter; +package cz.it4i.qcmp.io.loader; + +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.io.BufferInputData; +import cz.it4i.qcmp.io.InputData; +import cz.it4i.qcmp.utilities.TypeConverter; import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/azgracompress/io/loader/PlaneLoaderFactory.java b/src/main/java/cz/it4i/qcmp/io/loader/PlaneLoaderFactory.java similarity index 83% rename from src/main/java/azgracompress/io/loader/PlaneLoaderFactory.java rename to src/main/java/cz/it4i/qcmp/io/loader/PlaneLoaderFactory.java index b34f67e..e35ff32 100644 --- a/src/main/java/azgracompress/io/loader/PlaneLoaderFactory.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/PlaneLoaderFactory.java @@ -1,9 +1,9 @@ -package azgracompress.io.loader; +package cz.it4i.qcmp.io.loader; -import azgracompress.io.BufferInputData; -import azgracompress.io.FileInputData; -import azgracompress.io.FlatBufferInputData; -import azgracompress.io.InputData; +import cz.it4i.qcmp.io.BufferInputData; +import cz.it4i.qcmp.io.FileInputData; +import cz.it4i.qcmp.io.FlatBufferInputData; +import cz.it4i.qcmp.io.InputData; public final class PlaneLoaderFactory { diff --git a/src/main/java/azgracompress/io/loader/RawDataLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java similarity index 95% rename from src/main/java/azgracompress/io/loader/RawDataLoader.java rename to src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java index 7dc0e78..b699e3a 100644 --- a/src/main/java/azgracompress/io/loader/RawDataLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java @@ -1,10 +1,10 @@ -package azgracompress.io.loader; +package cz.it4i.qcmp.io.loader; -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; -import azgracompress.io.FileInputData; -import azgracompress.utilities.TypeConverter; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.io.FileInputData; +import cz.it4i.qcmp.utilities.TypeConverter; import java.io.BufferedInputStream; import java.io.DataInputStream; diff --git a/src/main/java/azgracompress/io/loader/SCIFIOLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java similarity index 84% rename from src/main/java/azgracompress/io/loader/SCIFIOLoader.java rename to src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java index 7b4d012..aaf7e86 100644 --- a/src/main/java/azgracompress/io/loader/SCIFIOLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java @@ -1,11 +1,11 @@ -package azgracompress.io.loader; - -import azgracompress.ScifioWrapper; -import azgracompress.data.Range; -import azgracompress.data.V2i; -import azgracompress.data.V3i; -import azgracompress.io.FileInputData; -import azgracompress.utilities.TypeConverter; +package cz.it4i.qcmp.io.loader; + +import cz.it4i.qcmp.ScifioWrapper; +import cz.it4i.qcmp.data.Range; +import cz.it4i.qcmp.data.V2i; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.io.FileInputData; +import cz.it4i.qcmp.utilities.TypeConverter; import io.scif.FormatException; import io.scif.Reader; @@ -31,17 +31,17 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader { @Override public int[] loadPlaneData(final int plane) throws IOException { - byte[] planeBytes; + final byte[] planeBytes; try { planeBytes = reader.openPlane(0, plane).getBytes(); - } catch (FormatException e) { + } catch (final FormatException e) { throw new IOException("Unable to open plane with the reader. " + e.getMessage()); } return TypeConverter.unsignedShortBytesToIntArray(planeBytes); } @Override - public int[] loadPlanesU16Data(int[] planes) throws IOException { + public int[] loadPlanesU16Data(final int[] planes) throws IOException { if (planes.length < 1) { return new int[0]; } else if (planes.length == 1) { @@ -57,7 +57,7 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader { throw new IOException("Integer count is too big."); } - int[] values = new int[(int) totalValueCount]; + final int[] values = new int[(int) totalValueCount]; Arrays.sort(planes); byte[] planeBytes; @@ -66,7 +66,7 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader { try { planeBytes = reader.openPlane(0, plane).getBytes(); - } catch (FormatException e) { + } catch (final FormatException e) { throw new IOException("Unable to open plane."); } if (planeBytes.length != planeDataSize) { @@ -88,12 +88,12 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader { throw new IOException("FileSize is too big."); } - int[] values = new int[(int) dataSize]; + final int[] values = new int[(int) dataSize]; byte[] planeBytes; for (int plane = 0; plane < imageDims.getZ(); plane++) { try { planeBytes = reader.openPlane(0, plane).getBytes(); - } catch (FormatException e) { + } catch (final FormatException e) { throw new IOException("Unable to open plane."); } if (planeBytes.length != 2 * planePixelCount) { @@ -111,7 +111,7 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader { } @Override - public int[][] loadBlocks(V2i blockDim, Range<Integer> planeRange) throws IOException { + public int[][] loadBlocks(final V2i blockDim, final Range<Integer> planeRange) throws IOException { return loadBlocksImplByLoadPlaneData(blockDim, planeRange); } diff --git a/src/main/java/azgracompress/kdtree/KDNode.java b/src/main/java/cz/it4i/qcmp/kdtree/KDNode.java similarity index 97% rename from src/main/java/azgracompress/kdtree/KDNode.java rename to src/main/java/cz/it4i/qcmp/kdtree/KDNode.java index 026ca06..9f07543 100644 --- a/src/main/java/azgracompress/kdtree/KDNode.java +++ b/src/main/java/cz/it4i/qcmp/kdtree/KDNode.java @@ -1,4 +1,4 @@ -package azgracompress.kdtree; +package cz.it4i.qcmp.kdtree; public class KDNode { private final int discriminator; diff --git a/src/main/java/azgracompress/kdtree/KDTree.java b/src/main/java/cz/it4i/qcmp/kdtree/KDTree.java similarity index 91% rename from src/main/java/azgracompress/kdtree/KDTree.java rename to src/main/java/cz/it4i/qcmp/kdtree/KDTree.java index 4c286de..3f1ee40 100644 --- a/src/main/java/azgracompress/kdtree/KDTree.java +++ b/src/main/java/cz/it4i/qcmp/kdtree/KDTree.java @@ -1,4 +1,4 @@ -package azgracompress.kdtree; +package cz.it4i.qcmp.kdtree; import org.jetbrains.annotations.NotNull; @@ -53,7 +53,7 @@ public class KDTree { private final KDNode node; private final double distance; - private NodeWithDistance(KDNode node, double distance) { + private NodeWithDistance(final KDNode node, final double distance) { this.node = node; this.distance = distance; } @@ -67,7 +67,7 @@ public class KDTree { } @Override - public int compareTo(@NotNull KDTree.NodeWithDistance o) { + public int compareTo(@NotNull final KDTree.NodeWithDistance o) { return Double.compare(distance, o.distance); } } @@ -87,14 +87,14 @@ public class KDTree { public int findNearestBBF(final int[] queryVector, final int maxE) { - PriorityQueue<NodeWithDistance> priorityQueue = new PriorityQueue<>(); + final PriorityQueue<NodeWithDistance> priorityQueue = new PriorityQueue<>(); priorityQueue.add(new NodeWithDistance(root, 0.0)); - BBFSearchInfo searchInfo = new BBFSearchInfo(featureVectors); + final BBFSearchInfo searchInfo = new BBFSearchInfo(featureVectors); int tryIndex = 0; int partition, discriminator; while (!priorityQueue.isEmpty() && tryIndex < maxE) { - NodeWithDistance current = priorityQueue.remove(); + final NodeWithDistance current = priorityQueue.remove(); if (current.getNode().isTerminal()) { ((TerminalKDNode) current.getNode()).findNearestNeighborInBucket(queryVector, searchInfo); ++tryIndex; diff --git a/src/main/java/azgracompress/kdtree/KDTreeBuilder.java b/src/main/java/cz/it4i/qcmp/kdtree/KDTreeBuilder.java similarity index 96% rename from src/main/java/azgracompress/kdtree/KDTreeBuilder.java rename to src/main/java/cz/it4i/qcmp/kdtree/KDTreeBuilder.java index ace1fee..e14b883 100644 --- a/src/main/java/azgracompress/kdtree/KDTreeBuilder.java +++ b/src/main/java/cz/it4i/qcmp/kdtree/KDTreeBuilder.java @@ -1,4 +1,4 @@ -package azgracompress.kdtree; +package cz.it4i.qcmp.kdtree; import java.util.ArrayList; import java.util.Arrays; @@ -69,7 +69,7 @@ public class KDTreeBuilder { return makeTerminalNode(indices); } - int dimensionIndex = findDimensionWithGreatestVariance(indices); + final int dimensionIndex = findDimensionWithGreatestVariance(indices); final int median = calculateKeyMedian(indices, dimensionIndex); // Divide records in one method to hi and lo. @@ -87,8 +87,8 @@ public class KDTreeBuilder { * @return Divided vectors. */ private DividedRecords divideRecords(final int[] indices, final int median, final int dimension) { - ArrayList<Integer> loIndices = new ArrayList<>(); - ArrayList<Integer> hiIndices = new ArrayList<>(); + final ArrayList<Integer> loIndices = new ArrayList<>(); + final ArrayList<Integer> hiIndices = new ArrayList<>(); for (final int fVecIndex : indices) { if (featureVectors[fVecIndex][dimension] <= median) { diff --git a/src/main/java/azgracompress/kdtree/TerminalKDNode.java b/src/main/java/cz/it4i/qcmp/kdtree/TerminalKDNode.java similarity index 92% rename from src/main/java/azgracompress/kdtree/TerminalKDNode.java rename to src/main/java/cz/it4i/qcmp/kdtree/TerminalKDNode.java index 0dac9c4..8ec2f0f 100644 --- a/src/main/java/azgracompress/kdtree/TerminalKDNode.java +++ b/src/main/java/cz/it4i/qcmp/kdtree/TerminalKDNode.java @@ -1,6 +1,6 @@ -package azgracompress.kdtree; +package cz.it4i.qcmp.kdtree; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.utilities.Utils; public class TerminalKDNode extends KDNode { diff --git a/src/main/java/azgracompress/quantization/QTrainIteration.java b/src/main/java/cz/it4i/qcmp/quantization/QTrainIteration.java similarity index 76% rename from src/main/java/azgracompress/quantization/QTrainIteration.java rename to src/main/java/cz/it4i/qcmp/quantization/QTrainIteration.java index 0f6d444..2fd613f 100644 --- a/src/main/java/azgracompress/quantization/QTrainIteration.java +++ b/src/main/java/cz/it4i/qcmp/quantization/QTrainIteration.java @@ -1,4 +1,4 @@ -package azgracompress.quantization; +package cz.it4i.qcmp.quantization; public class QTrainIteration { private final int iteration; @@ -6,7 +6,7 @@ public class QTrainIteration { private final double PSNR; - public QTrainIteration(int iteration, double mse, double psnr) { + public QTrainIteration(final int iteration, final double mse, final double psnr) { this.iteration = iteration; this.mse = mse; this.PSNR = psnr; diff --git a/src/main/java/azgracompress/quantization/scalar/LloydMaxU16ScalarQuantization.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/LloydMaxU16ScalarQuantization.java similarity index 88% rename from src/main/java/azgracompress/quantization/scalar/LloydMaxU16ScalarQuantization.java rename to src/main/java/cz/it4i/qcmp/quantization/scalar/LloydMaxU16ScalarQuantization.java index 0ace21c..0dc3f31 100644 --- a/src/main/java/azgracompress/quantization/scalar/LloydMaxU16ScalarQuantization.java +++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/LloydMaxU16ScalarQuantization.java @@ -1,11 +1,11 @@ -package azgracompress.quantization.scalar; +package cz.it4i.qcmp.quantization.scalar; -import azgracompress.U16; -import azgracompress.compression.listeners.IStatusListener; -import azgracompress.quantization.QTrainIteration; -import azgracompress.utilities.MinMaxResult; -import azgracompress.utilities.Stopwatch; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.compression.listeners.IStatusListener; +import cz.it4i.qcmp.quantization.QTrainIteration; +import cz.it4i.qcmp.utilities.MinMaxResult; +import cz.it4i.qcmp.utilities.Stopwatch; +import cz.it4i.qcmp.utilities.Utils; import java.util.ArrayList; import java.util.Arrays; @@ -13,7 +13,7 @@ import java.util.Arrays; public class LloydMaxU16ScalarQuantization { private final int[] trainingData; - private int codebookSize; + private final int codebookSize; private int dataMin; private int dataMax; @@ -48,7 +48,7 @@ public class LloydMaxU16ScalarQuantization { boundaryPoints = new int[codebookSize + 1]; - MinMaxResult<Integer> minMax = Utils.getMinAndMax(trainingData); + final MinMaxResult<Integer> minMax = Utils.getMinAndMax(trainingData); dataMin = minMax.getMin(); dataMax = minMax.getMax(); final int dataSpan = dataMax - dataMin; @@ -56,7 +56,7 @@ public class LloydMaxU16ScalarQuantization { boundaryPoints[0] = dataMin; boundaryPoints[codebookSize] = dataMax; - double intervalSize = (double) (dataSpan) / (double) codebookSize; + final double intervalSize = (double) (dataSpan) / (double) codebookSize; for (int i = 0; i < codebookSize; i++) { centroids[i] = (int) Math.floor(((double) i + 0.5) * intervalSize); } @@ -87,7 +87,7 @@ public class LloydMaxU16ScalarQuantization { private void initializeCentroids() { int lowerBound, upperBound; - double[] centroidPdf = new double[codebookSize]; + final double[] centroidPdf = new double[codebookSize]; for (int centroidIndex = 0; centroidIndex < codebookSize; centroidIndex++) { lowerBound = boundaryPoints[centroidIndex]; upperBound = boundaryPoints[centroidIndex + 1]; @@ -150,8 +150,8 @@ public class LloydMaxU16ScalarQuantization { if (workerCount > 1) { final int workSize = trainingData.length / workerCount; - RunnableLloydMseCalc[] runnables = new RunnableLloydMseCalc[workerCount]; - Thread[] workers = new Thread[workerCount]; + final RunnableLloydMseCalc[] runnables = new RunnableLloydMseCalc[workerCount]; + final Thread[] workers = new Thread[workerCount]; for (int wId = 0; wId < workerCount; wId++) { final int fromIndex = wId * workSize; final int toIndex = (wId == workerCount - 1) ? trainingData.length : (workSize + (wId * workSize)); @@ -172,12 +172,12 @@ public class LloydMaxU16ScalarQuantization { addWorkerFrequencies(runnables[wId].getFrequencies()); mse += runnables[wId].getMse(); } - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); } } else { for (final int trainingDatum : trainingData) { - int quantizedValue = quantize(trainingDatum); + final int quantizedValue = quantize(trainingDatum); mse += Math.pow((double) trainingDatum - (double) quantizedValue, 2); } } @@ -206,12 +206,12 @@ public class LloydMaxU16ScalarQuantization { initializeProbabilityDensityFunction(); - double currMAE = 1.0; + final double currMAE = 1.0; double prevMse = 1.0; double currentMse = 1.0; double psnr; - ArrayList<QTrainIteration> solutionHistory = new ArrayList<>(); + final ArrayList<QTrainIteration> solutionHistory = new ArrayList<>(); recalculateBoundaryPoints(); initializeCentroids(); @@ -225,7 +225,7 @@ public class LloydMaxU16ScalarQuantization { double mseImprovement = 1; int iteration = 0; - Stopwatch stopwatch = new Stopwatch(); + final Stopwatch stopwatch = new Stopwatch(); do { stopwatch.restart(); for (int i = 0; i < RECALCULATE_N_TIMES; i++) { diff --git a/src/main/java/azgracompress/quantization/scalar/RunnableLloydMseCalc.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/RunnableLloydMseCalc.java similarity index 87% rename from src/main/java/azgracompress/quantization/scalar/RunnableLloydMseCalc.java rename to src/main/java/cz/it4i/qcmp/quantization/scalar/RunnableLloydMseCalc.java index d4bdc58..f3ead20 100644 --- a/src/main/java/azgracompress/quantization/scalar/RunnableLloydMseCalc.java +++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/RunnableLloydMseCalc.java @@ -1,4 +1,4 @@ -package azgracompress.quantization.scalar; +package cz.it4i.qcmp.quantization.scalar; public class RunnableLloydMseCalc implements Runnable { final int[] trainingData; @@ -10,7 +10,7 @@ public class RunnableLloydMseCalc implements Runnable { double mse = 0.0; final long[] frequencies; - public RunnableLloydMseCalc(int[] trainingData, int fromIndex, int toIndex, int[] centroids, int[] boundaryPoints, + public RunnableLloydMseCalc(final int[] trainingData, final int fromIndex, final int toIndex, final int[] centroids, final int[] boundaryPoints, final int codebookSize) { this.trainingData = trainingData; this.fromIndex = fromIndex; diff --git a/src/main/java/azgracompress/quantization/scalar/SQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java similarity index 96% rename from src/main/java/azgracompress/quantization/scalar/SQCodebook.java rename to src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java index f55749e..ff06d5d 100644 --- a/src/main/java/azgracompress/quantization/scalar/SQCodebook.java +++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java @@ -1,4 +1,4 @@ -package azgracompress.quantization.scalar; +package cz.it4i.qcmp.quantization.scalar; /** diff --git a/src/main/java/azgracompress/quantization/scalar/ScalarQuantizer.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/ScalarQuantizer.java similarity index 85% rename from src/main/java/azgracompress/quantization/scalar/ScalarQuantizer.java rename to src/main/java/cz/it4i/qcmp/quantization/scalar/ScalarQuantizer.java index 480b3d9..a8133f7 100644 --- a/src/main/java/azgracompress/quantization/scalar/ScalarQuantizer.java +++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/ScalarQuantizer.java @@ -1,12 +1,12 @@ -package azgracompress.quantization.scalar; +package cz.it4i.qcmp.quantization.scalar; -import azgracompress.U16; +import cz.it4i.qcmp.U16; public class ScalarQuantizer { private final int min; private final int max; private final SQCodebook codebook; - private int[] boundaryPoints; + private final int[] boundaryPoints; public ScalarQuantizer(final int min, final int max, final SQCodebook codebook) { this.codebook = codebook; @@ -21,16 +21,16 @@ public class ScalarQuantizer { this(U16.Min, U16.Max, codebook); } - public int[] quantize(int[] data) { - int[] result = new int[data.length]; + public int[] quantize(final int[] data) { + final int[] result = new int[data.length]; for (int i = 0; i < data.length; i++) { result[i] = quantize(data[i]); } return result; } - public int[] quantizeIntoIndices(int[] data, final int maxWorkerCount) { - int[] indices = new int[data.length]; + public int[] quantizeIntoIndices(final int[] data, final int maxWorkerCount) { + final int[] indices = new int[data.length]; // Speedup? if (maxWorkerCount == 1) { for (int i = 0; i < data.length; i++) { @@ -40,7 +40,7 @@ public class ScalarQuantizer { } else { // NOTE(Moravec): This function is fast enough single thread. So we use max 2 threads. final int workerCount = Math.min(maxWorkerCount, 2); - Thread[] workers = new Thread[workerCount]; + final Thread[] workers = new Thread[workerCount]; final int workSize = data.length / workerCount; for (int wId = 0; wId < workerCount; wId++) { @@ -59,7 +59,7 @@ public class ScalarQuantizer { for (int wId = 0; wId < workerCount; wId++) { workers[wId].join(); } - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); } } @@ -92,7 +92,7 @@ public class ScalarQuantizer { public double getMse(final int[] data) { double mse = 0.0; for (int i = 0; i < data.length; i++) { - int quantizedValue = quantize(data[i]); + final int quantizedValue = quantize(data[i]); mse += Math.pow(((double) data[i] - (double) quantizedValue), 2); } mse /= (double) data.length; diff --git a/src/main/java/azgracompress/quantization/vector/EntryInfo.java b/src/main/java/cz/it4i/qcmp/quantization/vector/EntryInfo.java similarity index 90% rename from src/main/java/azgracompress/quantization/vector/EntryInfo.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/EntryInfo.java index 1292179..c43f7fc 100644 --- a/src/main/java/azgracompress/quantization/vector/EntryInfo.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/EntryInfo.java @@ -1,6 +1,6 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; -import azgracompress.U16; +import cz.it4i.qcmp.U16; import java.util.Arrays; @@ -41,7 +41,7 @@ public class EntryInfo { * @return Centroid of the vectors. */ public int[] calculateCentroid() { - int[] centroid = new int[vectorSize]; + final int[] centroid = new int[vectorSize]; for (int dim = 0; dim < vectorSize; dim++) { centroid[dim] = (int) Math.round(dimensionSum[dim] / (double) vectorCount); } @@ -54,7 +54,7 @@ public class EntryInfo { * @return Perturbation vector of the vectors. */ public double[] calculatePRTVector() { - double[] prtV = new double[vectorSize]; + final double[] prtV = new double[vectorSize]; for (int dim = 0; dim < vectorSize; dim++) { prtV[dim] = ((double) max[dim] - (double) min[dim]) / LBGVectorQuantizer.PRT_VECTOR_DIVIDER; } diff --git a/src/main/java/azgracompress/quantization/vector/LBGResult.java b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGResult.java similarity index 92% rename from src/main/java/azgracompress/quantization/vector/LBGResult.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/LBGResult.java index 4b72a79..2bb63af 100644 --- a/src/main/java/azgracompress/quantization/vector/LBGResult.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGResult.java @@ -1,6 +1,6 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; -import azgracompress.data.V3i; +import cz.it4i.qcmp.data.V3i; public class LBGResult { diff --git a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGVectorQuantizer.java similarity index 89% rename from src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/LBGVectorQuantizer.java index 0ad49cf..6577004 100644 --- a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGVectorQuantizer.java @@ -1,10 +1,10 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; -import azgracompress.U16; -import azgracompress.compression.listeners.IStatusListener; -import azgracompress.data.V3i; -import azgracompress.utilities.Stopwatch; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.compression.listeners.IStatusListener; +import cz.it4i.qcmp.data.V3i; +import cz.it4i.qcmp.utilities.Stopwatch; +import cz.it4i.qcmp.utilities.Utils; import java.util.ArrayList; import java.util.Arrays; @@ -23,7 +23,7 @@ public class LBGVectorQuantizer { private final TrainingVector[] trainingVectors; private final VectorDistanceMetric metric = VectorDistanceMetric.Euclidean; - private long[] frequencies; + private final long[] frequencies; private IStatusListener statusListener = null; private double _mse = 0.0; @@ -93,7 +93,7 @@ public class LBGVectorQuantizer { reportStatus("There is only %d unique vectors. Creating codebook from unique vectors...", uniqueTrainingVectors.size()); final int[][] codebook = new int[codebookSize][vectorSize]; - int[] zeroEntry = new int[vectorSize]; + final int[] zeroEntry = new int[vectorSize]; Arrays.fill(zeroEntry, 0); for (int i = 0; i < codebookSize; i++) { if (i < uniqueVectorCount) { @@ -114,13 +114,13 @@ public class LBGVectorQuantizer { * @return Result of the search. */ public LBGResult findOptimalCodebook() { - Stopwatch stopwatch = Stopwatch.startNew("LBG::findOptimalCodebook()"); + final Stopwatch stopwatch = Stopwatch.startNew("LBG::findOptimalCodebook()"); if (uniqueVectorCount < codebookSize) { return createCodebookFromUniqueVectors(); } - LearningCodebookEntry[] codebook = initializeCodebook(); + final LearningCodebookEntry[] codebook = initializeCodebook(); reportStatus("LBG::findOptimalCodebook() - Got initial codebook. Improving it..."); LBG(codebook, EPSILON * 0.1); @@ -183,17 +183,17 @@ public class LBGVectorQuantizer { if (workerCount > 1) { // Reset the global mse _mse = 0.0; - Thread[] workers = new Thread[workerCount]; + final Thread[] workers = new Thread[workerCount]; final int workSize = trainingVectors.length / workerCount; for (int wId = 0; wId < workerCount; wId++) { final int fromIndex = wId * workSize; final int toIndex = (wId == workerCount - 1) ? trainingVectors.length : (workSize + (wId * workSize)); workers[wId] = new Thread(() -> { - long[] workerFrequencies = new long[codebook.length]; - VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions, - codebook, - frequencies)); + final long[] workerFrequencies = new long[codebook.length]; + final VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions, + codebook, + frequencies)); double threadMse = 0.0; int[] vector; @@ -224,14 +224,14 @@ public class LBGVectorQuantizer { for (int wId = 0; wId < workerCount; wId++) { workers[wId].join(); } - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); } mse = _mse / (double) workerCount; } else { - VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions, - codebook, - frequencies)); + final VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions, + codebook, + frequencies)); int qIndex; int[] qVector; for (final TrainingVector trV : trainingVectors) { @@ -256,9 +256,9 @@ public class LBGVectorQuantizer { private double[] getPerturbationVector(final TrainingVector[] vectors) { // Max is initialized to zero that is ok. - int[] max = new int[vectorSize]; + final int[] max = new int[vectorSize]; // We have to initialize min to Max values. - int[] min = new int[vectorSize]; + final int[] min = new int[vectorSize]; Arrays.fill(min, U16.Max); for (final TrainingVector v : vectors) { @@ -272,7 +272,7 @@ public class LBGVectorQuantizer { } } - double[] perturbationVector = new double[vectorSize]; + final double[] perturbationVector = new double[vectorSize]; for (int i = 0; i < vectorSize; i++) { perturbationVector[i] = ((double) max[i] - (double) min[i]) / PRT_VECTOR_DIVIDER; } @@ -285,14 +285,14 @@ public class LBGVectorQuantizer { * @return Initial codebook entry. */ private LearningCodebookEntry createInitialEntry() { - double[] vectorSum = new double[vectorSize]; + final double[] vectorSum = new double[vectorSize]; for (final TrainingVector trainingVector : trainingVectors) { for (int i = 0; i < vectorSize; i++) { vectorSum[i] += (double) trainingVector.getVector()[i]; } } - int[] result = new int[vectorSize]; + final int[] result = new int[vectorSize]; for (int i = 0; i < vectorSize; i++) { result[i] = (int) Math.round(vectorSum[i] / (double) trainingVectors.length); } @@ -311,11 +311,11 @@ public class LBGVectorQuantizer { while (currentCodebookSize != codebookSize) { int cbIndex = 0; - LearningCodebookEntry[] newCodebook = new LearningCodebookEntry[currentCodebookSize * 2]; + final LearningCodebookEntry[] newCodebook = new LearningCodebookEntry[currentCodebookSize * 2]; // Split each entry in codebook with fixed perturbation vector. for (final LearningCodebookEntry entryToSplit : codebook) { - double[] prtV; + final double[] prtV; if (codebook.length == 1) { assert (trainingVectors.length > 0) : "There are no vectors from which to create perturbation " + "vector"; @@ -339,7 +339,7 @@ public class LBGVectorQuantizer { newCodebook[cbIndex++] = entryToSplit; // Create another codebook entry from perturbation vector. - int[] entryFromPrtVecValues = new int[prtV.length]; + final int[] entryFromPrtVecValues = new int[prtV.length]; for (int i = 0; i < prtV.length; i++) { final int value = (int) Math.floor(prtV[i]); // assert (value >= 0) : "value is too low!"; @@ -360,8 +360,8 @@ public class LBGVectorQuantizer { newCodebook[cbIndex++] = entryToSplit; newCodebook[cbIndex++] = new LearningCodebookEntry(randomEntryValues); } else { - int[] left = new int[prtV.length]; - int[] right = new int[prtV.length]; + final int[] left = new int[prtV.length]; + final int[] right = new int[prtV.length]; for (int i = 0; i < prtV.length; i++) { final int lVal = (int) ((double) entryToSplit.getVector()[i] - prtV[i]); final int rVal = (int) ((double) entryToSplit.getVector()[i] + prtV[i]); @@ -399,8 +399,8 @@ public class LBGVectorQuantizer { * @return Generated random vector. */ private int[] generateRandomVector() { - int[] randomVector = new int[vectorSize]; - Random rnd = new Random(); + final int[] randomVector = new int[vectorSize]; + final Random rnd = new Random(); for (int i = 0; i < vectorSize; i++) { randomVector[i] = rnd.nextInt(U16.Max + 1); } @@ -408,8 +408,8 @@ public class LBGVectorQuantizer { } private double[] generateRandomVectorDouble() { - double[] randomVector = new double[vectorSize]; - Random rnd = new Random(); + final double[] randomVector = new double[vectorSize]; + final Random rnd = new Random(); for (int i = 0; i < vectorSize; i++) { randomVector[i] = rnd.nextInt(U16.Max + 1); } @@ -422,7 +422,7 @@ public class LBGVectorQuantizer { * * @param codebook Codebook to improve. */ - private void LBG(LearningCodebookEntry[] codebook) { + private void LBG(final LearningCodebookEntry[] codebook) { LBG(codebook, EPSILON); } @@ -432,7 +432,7 @@ public class LBGVectorQuantizer { * @param codebook Codebook to improve. * @param epsilon Epsilon value. */ - private void LBG(LearningCodebookEntry[] codebook, final double epsilon) { + private void LBG(final LearningCodebookEntry[] codebook, final double epsilon) { //this.verbose = true; double previousDistortion = Double.POSITIVE_INFINITY; int iteration = 1; @@ -446,13 +446,13 @@ public class LBGVectorQuantizer { // Calculate average distortion of the codebook. double avgDistortion = 0; - for (LearningCodebookEntry entry : codebook) { + for (final LearningCodebookEntry entry : codebook) { avgDistortion += entry.getAverageDistortion(); } avgDistortion /= codebook.length; // Calculate distortion - double distortion = (previousDistortion - avgDistortion) / avgDistortion; + final double distortion = (previousDistortion - avgDistortion) / avgDistortion; reportStatus("LBG::LBG() - Iteration: %d Distortion: %.5f", iteration++, distortion); @@ -481,7 +481,7 @@ public class LBGVectorQuantizer { * * @param codebook Vector codebook. */ - private void assignVectorsToClosestEntry(LearningCodebookEntry[] codebook) { + private void assignVectorsToClosestEntry(final LearningCodebookEntry[] codebook) { // Stopwatch stopwatch = Stopwatch.startNew("assignVectorsToClosestEntry"); if (workerCount > 1) { parallelAssignVectors(codebook); @@ -503,18 +503,18 @@ public class LBGVectorQuantizer { * * @param codebook Vector codebook. */ - private void defaultAssignVectors(LearningCodebookEntry[] codebook) { + private void defaultAssignVectors(final LearningCodebookEntry[] codebook) { double minDist; int closestEntryIndex; - for (TrainingVector trainingVector : trainingVectors) { + for (final TrainingVector trainingVector : trainingVectors) { minDist = Double.POSITIVE_INFINITY; closestEntryIndex = -1; for (int entryIndex = 0; entryIndex < codebook.length; entryIndex++) { - double entryDistance = VectorQuantizer.distanceBetweenVectors(codebook[entryIndex].getVector(), - trainingVector.getVector(), - metric); + final double entryDistance = VectorQuantizer.distanceBetweenVectors(codebook[entryIndex].getVector(), + trainingVector.getVector(), + metric); if (entryDistance < minDist) { minDist = entryDistance; @@ -537,10 +537,10 @@ public class LBGVectorQuantizer { * * @param codebook Vector codebook. */ - private void parallelAssignVectors(LearningCodebookEntry[] codebook) { - Thread[] workers = new Thread[workerCount]; + private void parallelAssignVectors(final LearningCodebookEntry[] codebook) { + final Thread[] workers = new Thread[workerCount]; final int workSize = trainingVectors.length / workerCount; - EntryInfo[][] threadEntryInfos = new EntryInfo[workerCount][codebook.length]; + final EntryInfo[][] threadEntryInfos = new EntryInfo[workerCount][codebook.length]; for (int wId = 0; wId < workerCount; wId++) { @@ -603,13 +603,13 @@ public class LBGVectorQuantizer { for (int wId = 0; wId < workerCount; wId++) { workers[wId].join(); } - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); assert (false) : "Failed parallel join"; } // Combine all thread entry infos to final array distributed to the entries. - EntryInfo[] entryInfos = new EntryInfo[codebook.length]; + final EntryInfo[] entryInfos = new EntryInfo[codebook.length]; // Assign first thread infos and we can skip it later. System.arraycopy(threadEntryInfos[0], 0, entryInfos, 0, codebook.length); @@ -624,7 +624,7 @@ public class LBGVectorQuantizer { } } - private void combine(EntryInfo finalEntryInfo, final EntryInfo threadEntryInfo) { + private void combine(final EntryInfo finalEntryInfo, final EntryInfo threadEntryInfo) { finalEntryInfo.vectorCount += threadEntryInfo.vectorCount; finalEntryInfo.distanceSum += threadEntryInfo.distanceSum; @@ -646,10 +646,10 @@ public class LBGVectorQuantizer { * * @param codebook Vector codebook. */ - private void calculateEntryProperties(LearningCodebookEntry[] codebook) { + private void calculateEntryProperties(final LearningCodebookEntry[] codebook) { int value; - EntryInfo[] entryInfos = new EntryInfo[codebook.length]; + final EntryInfo[] entryInfos = new EntryInfo[codebook.length]; for (int i = 0; i < entryInfos.length; i++) { entryInfos[i] = new EntryInfo(vectorSize); } @@ -685,7 +685,7 @@ public class LBGVectorQuantizer { * * @param codebook Vector codebook. */ - private void fixEmptyEntries(LearningCodebookEntry[] codebook) { + private void fixEmptyEntries(final LearningCodebookEntry[] codebook) { int emptyEntryIndex = -1; for (int i = 0; i < codebook.length; i++) { if (codebook[i].getVectorCount() < 2) { @@ -720,7 +720,7 @@ public class LBGVectorQuantizer { * @param codebook Vector codebook. * @param emptyEntryIndex Index of the empty entry. */ - private boolean fixSingleEmptyEntry(LearningCodebookEntry[] codebook, final int emptyEntryIndex) { + private boolean fixSingleEmptyEntry(final LearningCodebookEntry[] codebook, final int emptyEntryIndex) { // Find biggest partition. int largestEntryIndex = emptyEntryIndex; int largestEntrySize = codebook[emptyEntryIndex].getVectorCount(); @@ -745,7 +745,7 @@ public class LBGVectorQuantizer { codebook[largestEntryIndex].getVectorCount()); // Choose random trainingVector from biggest partition and set it as new entry. - int randomIndex = new Random().nextInt(largestPartitionVectors.length); + final int randomIndex = new Random().nextInt(largestPartitionVectors.length); // Plane the new entry on the index of the empty entry. codebook[emptyEntryIndex] = new LearningCodebookEntry(largestPartitionVectors[randomIndex].getVector()); @@ -753,8 +753,8 @@ public class LBGVectorQuantizer { // Speedup - speed the look for closest entry. - EntryInfo oldEntryInfo = new EntryInfo(vectorSize); - EntryInfo newEntryInfo = new EntryInfo(vectorSize); + final EntryInfo oldEntryInfo = new EntryInfo(vectorSize); + final EntryInfo newEntryInfo = new EntryInfo(vectorSize); int value, entryIndex; double oldDistance, newDistance, distance; @@ -828,7 +828,7 @@ public class LBGVectorQuantizer { ++count; } } - TrainingVector[] vectors = new TrainingVector[count]; + final TrainingVector[] vectors = new TrainingVector[count]; for (final TrainingVector trainingVector : trainingVectors) { if (trainingVector.getEntryIndex() == entryIndex) { diff --git a/src/main/java/azgracompress/quantization/vector/LearningCodebookEntry.java b/src/main/java/cz/it4i/qcmp/quantization/vector/LearningCodebookEntry.java similarity index 93% rename from src/main/java/azgracompress/quantization/vector/LearningCodebookEntry.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/LearningCodebookEntry.java index 4492e4c..cc13c66 100644 --- a/src/main/java/azgracompress/quantization/vector/LearningCodebookEntry.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/LearningCodebookEntry.java @@ -1,4 +1,4 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; public class LearningCodebookEntry { @@ -7,7 +7,7 @@ public class LearningCodebookEntry { private double averageDistortion = -1.0f; private double[] perturbationVector; - public LearningCodebookEntry(int[] codebookVector) { + public LearningCodebookEntry(final int[] codebookVector) { this.codebookVector = codebookVector; } diff --git a/src/main/java/azgracompress/quantization/vector/TrainingVector.java b/src/main/java/cz/it4i/qcmp/quantization/vector/TrainingVector.java similarity index 93% rename from src/main/java/azgracompress/quantization/vector/TrainingVector.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/TrainingVector.java index 8746cdd..95df967 100644 --- a/src/main/java/azgracompress/quantization/vector/TrainingVector.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/TrainingVector.java @@ -1,4 +1,4 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; import java.util.Arrays; @@ -11,7 +11,7 @@ public class TrainingVector { private int entryIndex = -1; private double entryDistance = Double.POSITIVE_INFINITY; - public TrainingVector(int[] vector) { + public TrainingVector(final int[] vector) { this.vector = vector; } diff --git a/src/main/java/azgracompress/quantization/vector/VQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java similarity index 92% rename from src/main/java/azgracompress/quantization/vector/VQCodebook.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java index d56fc6b..a000184 100644 --- a/src/main/java/azgracompress/quantization/vector/VQCodebook.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java @@ -1,6 +1,6 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; -import azgracompress.data.V3i; +import cz.it4i.qcmp.data.V3i; /** * Codebook for vector quantizer. @@ -14,7 +14,7 @@ public class VQCodebook { /** * Absolute frequencies of quantization vectors. */ - private long[] vectorFrequencies; + private final long[] vectorFrequencies; /** * Size of the codebook. diff --git a/src/main/java/azgracompress/quantization/vector/VectorDistanceMetric.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorDistanceMetric.java similarity index 65% rename from src/main/java/azgracompress/quantization/vector/VectorDistanceMetric.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/VectorDistanceMetric.java index 565fb93..ae2ce1b 100644 --- a/src/main/java/azgracompress/quantization/vector/VectorDistanceMetric.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorDistanceMetric.java @@ -1,4 +1,4 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; public enum VectorDistanceMetric { Manhattan, diff --git a/src/main/java/azgracompress/quantization/vector/VectorQuantizer.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorQuantizer.java similarity index 97% rename from src/main/java/azgracompress/quantization/vector/VectorQuantizer.java rename to src/main/java/cz/it4i/qcmp/quantization/vector/VectorQuantizer.java index 8806b18..6f987d8 100644 --- a/src/main/java/azgracompress/quantization/vector/VectorQuantizer.java +++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorQuantizer.java @@ -1,8 +1,8 @@ -package azgracompress.quantization.vector; +package cz.it4i.qcmp.quantization.vector; -import azgracompress.kdtree.KDTree; -import azgracompress.kdtree.KDTreeBuilder; -import azgracompress.utilities.Utils; +import cz.it4i.qcmp.kdtree.KDTree; +import cz.it4i.qcmp.kdtree.KDTreeBuilder; +import cz.it4i.qcmp.utilities.Utils; public class VectorQuantizer { diff --git a/src/main/java/azgracompress/utilities/ColorConsole.java b/src/main/java/cz/it4i/qcmp/utilities/ColorConsole.java similarity index 98% rename from src/main/java/azgracompress/utilities/ColorConsole.java rename to src/main/java/cz/it4i/qcmp/utilities/ColorConsole.java index 2117887..d41b659 100644 --- a/src/main/java/azgracompress/utilities/ColorConsole.java +++ b/src/main/java/cz/it4i/qcmp/utilities/ColorConsole.java @@ -1,4 +1,4 @@ -package azgracompress.utilities; +package cz.it4i.qcmp.utilities; public final class ColorConsole { private static final String ANSI_RESET = "\u001B[0m"; diff --git a/src/main/java/azgracompress/utilities/Means.java b/src/main/java/cz/it4i/qcmp/utilities/Means.java similarity index 76% rename from src/main/java/azgracompress/utilities/Means.java rename to src/main/java/cz/it4i/qcmp/utilities/Means.java index fc96e0d..616872e 100644 --- a/src/main/java/azgracompress/utilities/Means.java +++ b/src/main/java/cz/it4i/qcmp/utilities/Means.java @@ -1,15 +1,15 @@ -package azgracompress.utilities; +package cz.it4i.qcmp.utilities; import java.util.ArrayList; public class Means { public static double arithmeticMean(final ArrayList<Double> values) { double sum = 0.0; - for (double val : values) { + for (final double val : values) { sum += val; } - double result = sum / (double) values.size(); + final double result = sum / (double) values.size(); return result; } @@ -17,12 +17,12 @@ public class Means { double numerator = 0.0; double denominator = 0.0; - for (double val : values) { + for (final double val : values) { numerator += Math.pow(val, 2); denominator += val; } - double result = numerator / denominator; + final double result = numerator / denominator; return result; } @@ -38,7 +38,7 @@ public class Means { denominator += (weights[i] * values.get(i)); } - double result = numerator / denominator; + final double result = numerator / denominator; return result; } } diff --git a/src/main/java/azgracompress/utilities/MinMaxResult.java b/src/main/java/cz/it4i/qcmp/utilities/MinMaxResult.java similarity index 75% rename from src/main/java/azgracompress/utilities/MinMaxResult.java rename to src/main/java/cz/it4i/qcmp/utilities/MinMaxResult.java index 5a37e75..5181632 100644 --- a/src/main/java/azgracompress/utilities/MinMaxResult.java +++ b/src/main/java/cz/it4i/qcmp/utilities/MinMaxResult.java @@ -1,10 +1,10 @@ -package azgracompress.utilities; +package cz.it4i.qcmp.utilities; public class MinMaxResult<T> { private final T min; private final T max; - MinMaxResult(T min, T max) { + MinMaxResult(final T min, final T max) { this.min = min; this.max = max; } diff --git a/src/main/java/azgracompress/utilities/Stopwatch.java b/src/main/java/cz/it4i/qcmp/utilities/Stopwatch.java similarity index 90% rename from src/main/java/azgracompress/utilities/Stopwatch.java rename to src/main/java/cz/it4i/qcmp/utilities/Stopwatch.java index c7088b6..e09e195 100644 --- a/src/main/java/azgracompress/utilities/Stopwatch.java +++ b/src/main/java/cz/it4i/qcmp/utilities/Stopwatch.java @@ -1,4 +1,4 @@ -package azgracompress.utilities; +package cz.it4i.qcmp.utilities; import org.jetbrains.annotations.NotNull; @@ -13,7 +13,7 @@ public class Stopwatch { @NotNull public static Stopwatch startNew(final String name) { - Stopwatch stopwatch = new Stopwatch(name); + final Stopwatch stopwatch = new Stopwatch(name); stopwatch.start(); return stopwatch; } @@ -67,15 +67,15 @@ public class Stopwatch { double H = 0; S = MS / 1000.0; - double fS = Math.floor(S); + final double fS = Math.floor(S); MS = (S - fS) * 1000.0; M = fS / 60.0; - double fM = Math.floor(M); + final double fM = Math.floor(M); S = (M - fM) * 60.0; H = fM / 60.0; - double fH = Math.floor(H); + final double fH = Math.floor(H); M = (H - fH) * 60.0; H = fH; diff --git a/src/main/java/azgracompress/utilities/TypeConverter.java b/src/main/java/cz/it4i/qcmp/utilities/TypeConverter.java similarity index 89% rename from src/main/java/azgracompress/utilities/TypeConverter.java rename to src/main/java/cz/it4i/qcmp/utilities/TypeConverter.java index 3437885..daa4b3f 100644 --- a/src/main/java/azgracompress/utilities/TypeConverter.java +++ b/src/main/java/cz/it4i/qcmp/utilities/TypeConverter.java @@ -1,6 +1,6 @@ -package azgracompress.utilities; +package cz.it4i.qcmp.utilities; -import azgracompress.U16; +import cz.it4i.qcmp.U16; public class TypeConverter { @@ -10,7 +10,7 @@ public class TypeConverter { public static int[] unsignedShortBytesToIntArray(final byte[] bytes) { assert (bytes.length % 2 == 0); - int[] values = new int[bytes.length / 2]; + final int[] values = new int[bytes.length / 2]; int index = 0; for (int i = 0; i < bytes.length; i += 2) { @@ -21,7 +21,7 @@ public class TypeConverter { } public static int[] shortArrayToIntArray(final short[] src) { - int[] result = new int[src.length]; + final int[] result = new int[src.length]; for (int i = 0; i < src.length; i++) { // Hopefully call to shortToInt gets inlined by JVM. result[i] = shortToInt(src[i]); @@ -30,7 +30,7 @@ public class TypeConverter { } public static short[] intArrayToShortArray(final int[] src) { - short[] result = new short[src.length]; + final short[] result = new short[src.length]; for (int i = 0; i < src.length; i++) { if (src[i] < 0 || src[i] > U16.Max) { @@ -42,7 +42,7 @@ public class TypeConverter { } public static byte[] unsignedShortArrayToByteArray(final int[] data, final boolean littleEndian) { - byte[] buffer = new byte[data.length * 2]; + final byte[] buffer = new byte[data.length * 2]; int j = 0; for (final int v : data) { @@ -58,7 +58,7 @@ public class TypeConverter { } public static byte[] unsignedShortArrayToByteArray(final short[] data, final boolean littleEndian) { - byte[] buffer = new byte[data.length * 2]; + final byte[] buffer = new byte[data.length * 2]; int j = 0; for (final short v : data) { @@ -74,7 +74,7 @@ public class TypeConverter { } public static byte[] intArrayToByteArray(final int[] data, final boolean littleEndian) { - byte[] buffer = new byte[data.length * 4]; + final byte[] buffer = new byte[data.length * 4]; int j = 0; for (final int v : data) { diff --git a/src/main/java/azgracompress/utilities/Utils.java b/src/main/java/cz/it4i/qcmp/utilities/Utils.java similarity index 88% rename from src/main/java/azgracompress/utilities/Utils.java rename to src/main/java/cz/it4i/qcmp/utilities/Utils.java index 7ec9b1e..5c00075 100644 --- a/src/main/java/azgracompress/utilities/Utils.java +++ b/src/main/java/cz/it4i/qcmp/utilities/Utils.java @@ -1,7 +1,7 @@ -package azgracompress.utilities; +package cz.it4i.qcmp.utilities; -import azgracompress.U16; -import azgracompress.data.Range; +import cz.it4i.qcmp.U16; +import cz.it4i.qcmp.data.Range; import java.util.ArrayList; @@ -13,7 +13,7 @@ public class Utils { } public static double calculatePsnr(final double mse, final int signalMax) { - double psnr = 10.0 * Math.log10((Math.pow(signalMax, 2) / mse)); + final double psnr = 10.0 * Math.log10((Math.pow(signalMax, 2) / mse)); return psnr; } @@ -56,22 +56,22 @@ public class Utils { public static int[] getDifference(final int[] original, final int[] transformed) { assert (original.length == transformed.length) : "Array lengths doesn't match"; - int[] difference = new int[original.length]; + final int[] difference = new int[original.length]; for (int i = 0; i < original.length; i++) { difference[i] = (original[i] - transformed[i]); } return difference; } - public static int[] asAbsoluteValues(int[] values) { - int[] absValues = new int[values.length]; + public static int[] asAbsoluteValues(final int[] values) { + final int[] absValues = new int[values.length]; for (int i = 0; i < values.length; i++) { absValues[i] = Math.abs(values[i]); } return absValues; } - public static void applyAbsFunction(int[] values) { + public static void applyAbsFunction(final int[] values) { for (int i = 0; i < values.length; i++) { values[i] = Math.abs(values[i]); } @@ -101,7 +101,7 @@ public class Utils { * @return Pixel value frequencies. */ public static double[] calculatePixelFrequencies(final int[] data) { - double[] frequencies = new double[U16.Max + 1]; + final double[] frequencies = new double[U16.Max + 1]; for (final int pixelValue : data) { ++frequencies[pixelValue]; } @@ -123,7 +123,7 @@ public class Utils { double entropy = 0.0; - for (double pixelProbability : pixelProbabilities) { + for (final double pixelProbability : pixelProbabilities) { if (pixelProbability > 0.0) { entropy += pixelProbability * log2(pixelProbability); } -- GitLab