GitHub - GrokImageCompression/grok: World's Leading Open Source JPEG 2000 Codec (original) (raw)
World's Leading Open Source JPEG 2000 Codec
Features
- support for new High Throughput JPEG 2000 (HTJ2K) standard
- fast random-access sub-image decoding using
TLMandPLTmarkers - full encode/decode support for
ICCcolour profiles - full encode/decode support for
XML,IPTC,XMPandEXIFmeta-data - full encode/decode support for
monochrome,sRGB,palette,YCC,extended YCC,CIELabandCMYKcolour spaces - full encode/decode support for
JPEG,PNG,BMP,TIFF,RAW,PNMandPAMimage formats - full encode/decode support for 1-16 bit precision images
- supported platforms: Linux x86-64, Linux AArch64, Windows, macOS and WebAssembly
Grok in the News
Performance
Grok can be integrated into the Geospatial Data Abstraction Layer (GDAL) software with this downstream driver. Below is a benchmark comparing decompression time performance for GDAL using JP2Grok, JP2KAK, and JP2OpenJPEG drivers.
Benchmark Details
- test system : 8 core / 16 thread CPU running
Fedora 42with6.10Linux kernel andbtrfsfile system - Grok 20.0.0, Kakadu 8.4.1 and OpenJPEG 2.5.4 were used, configured to use all 16 threads
- Grok was built in release mode using
GCC 15.2 - Linux page cache was cleared before each local file decompression
- decompress command:
gdal_translate <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mi>I</mi><mi>L</mi><mi>E</mi><mo>−</mo><mi>i</mi><mi>f</mi></mrow><annotation encoding="application/x-tex">FILE -if </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7667em;vertical-align:-0.0833em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">F</span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mord mathnormal">L</span><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span></span></span></span>DRIVER output.tif
Test Files
- Spot 6 (Network Storage): 26624 x 26624 image, 4 components, TLM, lossless, 12-bit, 2048 x 2048 tiles, 10 layers, stored on MinIO with 20 ms latency.
- Spot 6 (Local Storage): 26624 x 26624 image, 4 components, TLM, lossless, 12-bit, 2048 x 2048 tiles, 10 layers, stored locally.
- Pleiades (Region): 82704 x 81100 image, 8000 x 8000 region at (50000,50000), 1 component, TLM, lossy, 16-bit, 1024 x 1024 tiles, 15 layers, stored locally.
Results
| Workflow | JP2Grok | JP2KAK | JP2OpenJPEG |
|---|---|---|---|
| Spot 6 (Network Storage) | 35.17 s | 344 s | 85 s |
| Spot 6 (Local Storage) | 26.92 s | 30.57 s | 34.91 s |
| Pleiades (Region) | 0.74 s | 1.41 s | 4.28 s |
Library Details
Current Build Status
Contact
For more information please contact :
info@grokcompression.com