Image processing with parallel computing capabilities!
A C++ command-line tool for applying sophisticated image filters with support for parallel processing. Built with modern C++ and optimized for performance using OpenMP.
- Different Filters
- Gaussian Blur with adaptive kernel sizing
- Grayscale conversion
- Kuwahara filter for edge-preserving smoothing *(parallel version in-progress)
- Others are in-progress!
- Parallel Processing Support via OpenMP for improved performance on multi-core systems
- Flexible Input/Output handling with support for common image formats (PNG, JPG, JPEG)
- Command-Line Interface designed for easy integration into image processing pipelines
- C++17 compatible compiler (GCC 7+, Clang 5+, MSVC 2017+)
- OpenMP 4.5+ for parallel processing capabilities
- CMake 3.10 or higher
- Git
- stb_image - Single-file public domain library for image reading/writing
- OpenMP - Parallel Programming framework
-
Clone the repository:
git clone https://github.com/vsavchyn-dev/imagerio.git cd imagerio -
Create a build directory and navigate into it:
mkdir build && cd build
-
Run CMake to configure the project:
cmake ..
-
Compile the project:
make
Basic Command Structure:
./imagerio [options] [input]Replace [options] with the required parameters for your application. Here are the available options:
-oor-output: Name of the output file, must include the correct file extension (e.g.,.png,.jpg,.jpeg).-f=<valid_filter>or-filter=<valid_filter>: Name of the filter to be applied to the image. Supported filters are:gaussian_blur: Applies Gaussian blur to the image.grayscale: Converts the image to grayscale.kuwahara: Applies Kuwahara filter to the image.
-hor-help: Displays the list of available commands.-ior-image: Specifies the image file name and path (e.g.,./folder/image.pngorC:\Users\WindowsUser\Pictures\image.png).-por-parallel: Enables multi-threading.
Apply Gaussian blur with parallel processing
./imagerio -i input.jpg -o output.png -f=gaussian_blur -pConvert to grayscale
./imagerio -i color.png -o gray.png -f=grayscaleApply Kuwahara filter
./imagerio -i photo.jpg -o filtered.jpg -f=kuwahara-
Basic CLI implementation -
Gaussian blur and Grayscale filters -
CMake for easier build -
Parallel implementation of Gaussian blur and Grayscale filters using OpenMP -
Default Kuwahara filter implementation - Parallel implementation of Kuwahara filter
- Additional image filters?
- Performance optimizations (for default and OMP versions of algos)
- Chaining filters feature
This project is licensed under the MIT License - see the LICENSE file for details.