Skip to content

vsavchyn-dev/imagerio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imagerio

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.

Key Features

  • 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

Prerequisites

  • C++17 compatible compiler (GCC 7+, Clang 5+, MSVC 2017+)
  • OpenMP 4.5+ for parallel processing capabilities
  • CMake 3.10 or higher
  • Git

Dependencies

  • stb_image - Single-file public domain library for image reading/writing
  • OpenMP - Parallel Programming framework

Installation

  1. Clone the repository:

    git clone https://github.com/vsavchyn-dev/imagerio.git
    cd imagerio
  2. Create a build directory and navigate into it:

    mkdir build && cd build
  3. Run CMake to configure the project:

    cmake ..
  4. Compile the project:

    make

Usage

Basic Command Structure:

./imagerio [options] [input]

Replace [options] with the required parameters for your application. Here are the available options:

  • -o or -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.
  • -h or -help: Displays the list of available commands.
  • -i or -image: Specifies the image file name and path (e.g., ./folder/image.png or C:\Users\WindowsUser\Pictures\image.png).
  • -p or -parallel: Enables multi-threading.

Example Commands

Apply Gaussian blur with parallel processing

./imagerio -i input.jpg -o output.png -f=gaussian_blur -p

Convert to grayscale

./imagerio -i color.png -o gray.png -f=grayscale

Apply Kuwahara filter

./imagerio -i photo.jpg -o filtered.jpg -f=kuwahara

Roadmap

  • 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

Contributors

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

C++ CLI tool to apply image filters with support for parallel processing

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •