/JPEG_LS

Primary LanguageVerilogMIT LicenseMIT

JPEG-LS

7-Stage Pipelined Hardware Implementation of Lossless Image Encoding

About The Project

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

Table of Contents

Built With

  • Verilog
  • MATLAB
  • Python

Getting Started

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.

Prerequisites

User will need Python3.7, Modelsim, and MATLAB to execute this deisgn.

Installation

  1. Clone the repo
git clone https://github.com/your_username_/Project-Name.git
  1. Install Python3.7
  2. Install Modelsim
  3. Install MATLAB

Contributing

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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Grant Brown - grantb91@gmail.com