The libmpix is a library to work with image data on microcontrollers: pixel format conversion, debayer, blur, sharpen, color correction, resizing...
It pipelines multiple operations together, eliminating the intermediate buffers. This allows larger resolution to fit in constrained systems, without compromising performance.
It provides a C implementation of the classical operations of an imaging pipeline, and allows ports or the application alike to implement hardware-optimized operations such as ARM Helium SIMD instructions.
It is born out of a proposal for the Zephyr RTOS and is now a stand-alone project with tier-1 support for Zephyr.
Features:
- Simple zero-copy and pipelined engine, with low runtime overhead,
- Reduces memory overhead (can process 1 MB of data with only 5 kB of RAM)
- POSIX support (Linux/BSD/MacOS), Zephyr support
Upcoming:
C API:
#include <mpix/image.h>
return img.err;
int mpix_image_convert(struct mpix_image *img, uint32_t new_format)
Convert an image to a new pixel format.
int mpix_image_kernel(struct mpix_image *img, uint32_t kernel_type, int kernel_sz)
Apply a kernel operation on an image.
int mpix_image_to_buf(struct mpix_image *img, uint8_t *buf, size_t size)
Initialize an image from a memory buffer.
void mpix_image_from_buf(struct mpix_image *img, uint8_t *buf, size_t size, uint16_t width, uint16_t height, uint32_t format)
Initialize an image from a memory buffer.
@ MPIX_KERNEL_DENOISE
Definition op_kernel.h:28
@ MPIX_KERNEL_SHARPEN
Definition op_kernel.h:26
Represent the image currently being processed.
Definition image.h:18