|
PACS System 0.1.0
PACS DICOM system library
|
High-Throughput JPEG 2000 (HTJ2K) codec implementation. More...
#include <htj2k_codec.h>


Public Member Functions | |
| htj2k_codec (bool lossless=true, bool use_rpcl=false, float compression_ratio=kDefaultCompressionRatio, int resolution_levels=kDefaultResolutionLevels) | |
| Constructs an HTJ2K codec instance. | |
| ~htj2k_codec () override | |
| htj2k_codec (const htj2k_codec &)=delete | |
| htj2k_codec & | operator= (const htj2k_codec &)=delete |
| htj2k_codec (htj2k_codec &&) noexcept | |
| htj2k_codec & | operator= (htj2k_codec &&) noexcept |
Codec Information | |
| std::string_view | transfer_syntax_uid () const noexcept override |
| Returns the Transfer Syntax UID supported by this codec. | |
| std::string_view | name () const noexcept override |
| Returns a human-readable name for the codec. | |
| bool | is_lossy () const noexcept override |
| Checks if this codec produces lossy compression. | |
| bool | can_encode (const image_params ¶ms) const noexcept override |
| Checks if this codec supports the given image parameters. | |
| bool | can_decode (const image_params ¶ms) const noexcept override |
| Checks if this codec can decode data with given parameters. | |
Configuration | |
| bool | is_lossless_mode () const noexcept |
| Checks if this codec is configured for lossless mode. | |
| bool | is_rpcl_mode () const noexcept |
| Checks if RPCL progression order is enabled. | |
| float | compression_ratio () const noexcept |
| Gets the current compression ratio setting. | |
| int | resolution_levels () const noexcept |
| Gets the number of DWT resolution levels. | |
Compression Operations | |
| codec_result | encode (std::span< const uint8_t > pixel_data, const image_params ¶ms, const compression_options &options={}) const override |
| Compresses pixel data to HTJ2K format. | |
| codec_result | decode (std::span< const uint8_t > compressed_data, const image_params ¶ms) const override |
| Decompresses HTJ2K data. | |
Public Member Functions inherited from kcenon::pacs::encoding::compression::compression_codec | |
| virtual | ~compression_codec ()=default |
Static Public Attributes | |
| static constexpr std::string_view | kTransferSyntaxUIDLossless |
| DICOM Transfer Syntax UID for HTJ2K Lossless Only. | |
| static constexpr std::string_view | kTransferSyntaxUIDRPCL |
| DICOM Transfer Syntax UID for HTJ2K with RPCL Options (Lossless Only) | |
| static constexpr std::string_view | kTransferSyntaxUIDLossy |
| DICOM Transfer Syntax UID for HTJ2K (Lossy) | |
| static constexpr float | kDefaultCompressionRatio = 20.0f |
| Default compression ratio for lossy mode (20:1) | |
| static constexpr int | kDefaultResolutionLevels = 6 |
| Default number of resolution levels. | |
Private Attributes | |
| bool | lossless_ |
| bool | use_rpcl_ |
| float | compression_ratio_ |
| int | resolution_levels_ |
Additional Inherited Members | |
Protected Member Functions inherited from kcenon::pacs::encoding::compression::compression_codec | |
| compression_codec ()=default | |
| compression_codec (const compression_codec &)=default | |
| compression_codec & | operator= (const compression_codec &)=default |
| compression_codec (compression_codec &&)=default | |
| compression_codec & | operator= (compression_codec &&)=default |
High-Throughput JPEG 2000 (HTJ2K) codec implementation.
Implements DICOM Transfer Syntaxes defined in Supplement 235:
HTJ2K provides 10-50x faster decoding than legacy JPEG 2000 while maintaining comparable compression ratios. Uses the Part 15 (HTJ2K) block coder which enables highly parallelizable decoding.
Supported Features:
Thread Safety:
Definition at line 47 of file htj2k_codec.h.
|
explicit |
Constructs an HTJ2K codec instance.
| lossless | If true, use lossless mode (Transfer Syntax .201 or .202). If false, use lossy mode (Transfer Syntax .203). |
| use_rpcl | If true, use RPCL progression order (Transfer Syntax .202). Only meaningful in lossless mode. Enables progressive resolution decoding for streaming use cases. |
| compression_ratio | Target compression ratio for lossy mode (ignored in lossless). Higher values = smaller files but lower quality. |
| resolution_levels | Number of DWT resolution levels (1-32, default: 6). |
Definition at line 20 of file htj2k_codec.cpp.
|
overridedefault |
|
delete |
|
defaultnoexcept |
|
nodiscardoverridevirtualnoexcept |
Checks if this codec can decode data with given parameters.
| params | The image parameters |
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 68 of file htj2k_codec.cpp.
|
nodiscardoverridevirtualnoexcept |
Checks if this codec supports the given image parameters.
| params | The image parameters to check |
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 52 of file htj2k_codec.cpp.
|
nodiscardnoexcept |
Gets the current compression ratio setting.
Definition at line 80 of file htj2k_codec.cpp.
References compression_ratio_.
|
nodiscardoverridevirtual |
Decompresses HTJ2K data.
| compressed_data | HTJ2K compressed data |
| params | Image parameters (width/height for validation) |
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 427 of file htj2k_codec.cpp.
References kcenon::pacs::error_codes::decompression_error, and kcenon::pacs::pacs_error().

|
nodiscardoverridevirtual |
Compresses pixel data to HTJ2K format.
| pixel_data | Uncompressed pixel data (8/12/16-bit, grayscale or color) |
| params | Image parameters |
| options | Compression options |
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 418 of file htj2k_codec.cpp.
References kcenon::pacs::error_codes::compression_error, and kcenon::pacs::pacs_error().
Referenced by kcenon::pacs::web::dicomweb::render_dicom_image().


|
nodiscardnoexcept |
Checks if this codec is configured for lossless mode.
Definition at line 72 of file htj2k_codec.cpp.
References lossless_.
|
nodiscardoverridevirtualnoexcept |
Checks if this codec produces lossy compression.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 48 of file htj2k_codec.cpp.
References lossless_.
|
nodiscardnoexcept |
Checks if RPCL progression order is enabled.
Definition at line 76 of file htj2k_codec.cpp.
References use_rpcl_.
|
nodiscardoverridevirtualnoexcept |
Returns a human-readable name for the codec.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 41 of file htj2k_codec.cpp.
|
delete |
|
defaultnoexcept |
|
nodiscardnoexcept |
Gets the number of DWT resolution levels.
Definition at line 84 of file htj2k_codec.cpp.
References resolution_levels_.
|
nodiscardoverridevirtualnoexcept |
Returns the Transfer Syntax UID supported by this codec.
Implements kcenon::pacs::encoding::compression::compression_codec.
Definition at line 34 of file htj2k_codec.cpp.
|
private |
Definition at line 170 of file htj2k_codec.h.
Referenced by compression_ratio().
|
staticconstexpr |
Default compression ratio for lossy mode (20:1)
Definition at line 62 of file htj2k_codec.h.
|
staticconstexpr |
Default number of resolution levels.
Definition at line 65 of file htj2k_codec.h.
|
staticconstexpr |
DICOM Transfer Syntax UID for HTJ2K Lossless Only.
Definition at line 50 of file htj2k_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
staticconstexpr |
DICOM Transfer Syntax UID for HTJ2K (Lossy)
Definition at line 58 of file htj2k_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
staticconstexpr |
DICOM Transfer Syntax UID for HTJ2K with RPCL Options (Lossless Only)
Definition at line 54 of file htj2k_codec.h.
Referenced by kcenon::pacs::encoding::compression::codec_factory::create().
|
private |
Definition at line 168 of file htj2k_codec.h.
Referenced by is_lossless_mode(), is_lossy(), and name().
|
private |
Definition at line 171 of file htj2k_codec.h.
Referenced by resolution_levels().
|
private |
Definition at line 169 of file htj2k_codec.h.
Referenced by is_rpcl_mode(), and name().