Skip to content

A C++ terminal-based application utilizing CMake for building and apply color filters, edge detection, and Gaussian blur using parallel algorithms

Notifications You must be signed in to change notification settings

audreylearns/Image_Filter

Repository files navigation

Parallel Image Processing

A terminal based application applying color filters, edge detection, and gaussian blur using parallel algorithms with OpenMP.

app_preview

  • Incorporates an image processing library, OpenCV for matrix construction, pixel channel access, loading, saving and displaying the images.
  • Applies parallel algorithm with OpenMP directives: parallel for collapse, num_threads specification, and single parallel region.

Prerequisites & Instructions

  • Download and install CMake: https://cmake.org/
  • Download and install OpenCV: https://opencv.org/releases/
  • Clone this repo, or download the .zip and unzip
  • Into the project's directory build: cmake --build .\build\ --config Release
  • Run: .\build\Release\prjname.exe

Method:

  • Pixel Channel Manipulation - setting opposing channels to 0 or 255 to intensify for the selected color
  • Grayscale - Using a single channel and calculating the luma of each pixel with sRGB values
  • Gaussian Blur Theory - Using a Gaussian kernel of 7 and sigma of 7 for blur intensity followed by calculating the weight of each neighbioring pixel
  • Edge Detection - Using Difference of Gaussians Theory with a sigma of 2 and 9, a kernel of 7 and threshold intensity of 4

Filters Available

Colorize

image

Blur

image

Edge Detection

image

Perfomance

Colorize - Primary

image

Colorize - Secondary

image

Colorize - Grayscale

image

Colorize - Complimentary Inverse

image

Blur - Gaussian Blur

image

Edge Detection - Difference of Gaussians

image

About

A C++ terminal-based application utilizing CMake for building and apply color filters, edge detection, and Gaussian blur using parallel algorithms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages