An image processing software designed for manipulating grayscale and RGB images with various filters and operations.
This project provides functionality similar to photo editing software, allowing users to load images, apply filters, and save modified versions. Filters include operations like converting to black and white, inverting colors, merging images, flipping, rotating, adjusting brightness, detecting edges, enlarging, shrinking, mirroring, shuffling, blurring, cropping, and skewing.
- Black and White Image: Converts the image to black and white based on average gray level.
- Invert Image: Produces the negative of the image.
- Merge Images: Creates a new image by averaging pixel values of two images.
- Flip Image: Flips the image horizontally or vertically.
- Rotate Image: Rotates the image by 90º, 180º, or 270º.
- Darken and Lighten Image: Adjusts brightness of the image.
- Detect Image Edges: Converts the image to a sketch-like version highlighting edges.
- Enlarge Image: Enlarges one quarter of the image into a new image.
- Shrink Image: Reduces image dimensions by factors of 2, 3, or 4. a. Mirror Image: Mirrors sections of the image. b. Shuffle Image: Rearranges quarters of the image based on user input. c. Blur Image: Applies a blur effect to the image. d. Crop Image: This filter allows entering an x, y position and cutting a square of length and width l, w to keep and removing the rest. e, f. Skew Horizontally / Vertically: Skews the image to the right or up.
cmake-build-debug/
: Build directory.images/
: Folder to test images in the program.bmplib.cpp
,bmplib.h
: A small library with four functions for loading the pixels of the image into a 2D or 3D array.GrayImages.cpp
: Program for filters on grayscale images.RGBImages.cpp
: Program for filters on RGB images.gray images/
: Folder containing grayscale testing images used for all filters.RGB images/
: Folder containing RGB testing images used for all filters.filtersDiagram.png
: Diagram showing each filter and their functions.
The project follows proper C++ coding standards, ensuring readability and maintainability.
To use the software, compile and run either GrayImages.cpp
for grayscale images or RGBImages.cpp
for RGB images. Ensure the necessary libraries and dependencies are installed.
Contributions are welcome!
If you want to contribute to this project, please fork the repository and submit a pull request.
For questions or feedback regarding the Gray Scale Image Processor, feel free to contact us:
- Email: yassinalilearning77076@gmail.com
- GitHub Issues: Project Issues