iCompress is a compression algorithm suitable for image compression based on eye tracking data.
iCompress makes use of eye fixation data on individual images and video frames and constructs fixation density maps (FDMs) to segment video frames to determine the regions suitable for further compression relative to other regions.
The algorithm splits each image into macro-blocks and uses a simple JPEG encoding scheme with a weighted modified quantization table (based on the standard JPEG quantization table) on each macro-blocks with respect to the regions determined from the FDM.
The quantized Discrete Cosine Transform Coëfficients (DCTCs) then are encoded further in the entropy encoding process. The DCTCs are first ordered in a zig-zag pattern and encoded with Run-Length-Encoding. Finally, the RLE encoded DCTCs are encoded with Canonical Huffman code and saved to its own .icy
format.
To run our Jupyter Notebook (.ipynb
), we require to first run Jupyter Notebook as a web app on our localhost.
We run in a terminal:
jupyter notebook
Open a browser and go to localhost.
In case there is no .ipynb
to be found, use the upload
button and select the appropriate .ipynb
accordingly.
Due to the nature of the very large size of the unencoded .yuv
Ultra-HD videos [1], they must be downloaded separately.
The notebook only uses the one video of the dataset which can be downloaded separately from here.
[1] T. Vigier, J. Rousseau, M. Perreira Da Silva, and P. Le Callet, “A new HD and UHD video eye tracking dataset.” In 7th ACM Multimedia Systems Conference (MMSys), May 2016.