Adding QOI compression support to ROS2#104
Open
awesomebytes wants to merge 1 commit intoros-perception:rollingfrom
Open
Adding QOI compression support to ROS2#104awesomebytes wants to merge 1 commit intoros-perception:rollingfrom
awesomebytes wants to merge 1 commit intoros-perception:rollingfrom
Conversation
The Quite OK Image format (https://qoiformat.org/) is a good substitute of PNG for lossless compression. This commit adds it as a compressed image transport thanks to Dimitri's Belopopsky (@ShadowMitia) MIT Licensed library (https://github.com/ShadowMitia/libqoi) implementing Dominic Szablewski's QOI algorithm (which is CC0 licensed, public domain).
|
Is there any momentum behind this? Br Philipp |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a sibling PR of: #103
However, note that I developed and tested these changes in ROS1. Given the similarity of the codebase I hope it just works by adding the same changes here.
The Quite OK Image format (https://qoiformat.org/) is a good substitute of PNG for lossless compression.
As per QOI's website:
This commit adds it as a compressed image transport thanks to Dimitri Belopopsky's (@ShadowMitia) MIT Licensed
library (https://github.com/ShadowMitia/libqoi) implementing Dominic Szablewski's QOI algorithm (which is
CC0 licensed, public domain).
To give context, I implemented this to practice C++ and to provide an alternative to PNG compression for when we'd like lossless compression or to have an alpha channel without framerate drop. Currently using PNG drops a 640x480 webcam stream 30fps to 3fps. With QOI it stays at 30fps.
Taking as baseline raw image publishing with video_stream_opencv, and subscribing with rqt_image_view, on my i7-10875H CPU @ 2.30GHz × 16, QOI compression adds 28% CPU usage and QOI decompression adds 13% CPU usage. Feels reasonable to me, specially compared to PNG going over 100% CPU usage and dropping most of the frames.
I would gladly appreciate help on how to eliminate the (what I think is) unnecessary copy of the image in the publisher and the subscriber.