7-Stage Pipelined Hardware Implementation of Lossless Image Encoding
JPEG-LS is the standardization of the LOCO-I (LOw COmplexity LOssless COmpression for Images) algorithm at the core of the ISO/ITU T.87 standard. The ITU T.87 standard describes lossless and near-lossless compression of continuous-tone images. The algorithm is developed as a "low complexity implementation" of the standard universal context modeling paradigm.
JPEG-LS is implemented as a simple fixed context modeling machine, which can compete with more complex implementations of universal techniques for capturing high-order dependencies of contextual information (ex. CABAC). The model of JPEG-LS is tuned for optimal performance jointly with limited-length Golomb-type codes. To increase compression standards, an embedded alphabet extension for coding of low-entropy image regions is deployed.
The LOCO-I standardization of JPEG-LS attains roughly a compression ratio of 3:1, which is similar or superior to encoding algorithms obtained with state-of-the-art schemes based off complex context modeling in conjuction with arithmetic coding. Furthermore, the "low complexity implementation" of the JPEG-LS implementation makes ASIC implementation straightforward when compared to competing designs (ex. CALIC, CABAC).
JPEG-LS consists of three distinct and independent components:
1) Prediction
2) Context Modeling
3) Coding
- Verilog
- MATLAB
- Python
All of the Verilog, MATLAB, and Python files needed for full integration and testing are located witin the Design Files folder.
The top level module is JPEGLS_Final.v.
For a comprehensive design guide along with testing procedures refer to the Lossless JPEG Design Guide located in Design Files.
User will need Python3.7, Modelsim, and MATLAB to execute this deisgn.
- Clone the repo
git clone https://github.com/your_username_/Project-Name.git
- Install Python3.7
- Install Modelsim
- Install MATLAB
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
Grant Brown - grantb91@gmail.com