A multi-threaded image processing application that does sharpening and edge detection on a PNG using highpass and Sobel filtering. Can be run using 1,2,4,8,16,32 threads for more efficient processing. It creates a copy of the original with the filters applied and DOES NOT alter the original image.
- Sharpen: Sharpen outlines in a PNG.
- Edge detect: Finds the boundaries of a PNG.
- Multi-Threaded: Use more threads for faster results (depending on your CPU).
-
Clone the repository:
git clone https://github.com/marwanthestudent/Image_processing_tool.git
-
Install dependencies: Ensure you have C installed with the required libraries (libpng, zlib):
For more info -> http://www.libpng.org/pub/png/libpng.html
If you have a package manager like homebrew or pacman (whatever your OS and manager is)homebrew install libpng
-
Compilation path: Ensure you have the directory libpng16 in your include path so the header file can be recognized (
include <png.h>).-I<whatever location the include directory is in>
Check Makefile for more comments.
-
Linker path: Ensure that the linker has the path to require files
-L<whatever location libpng is in> -lpng16 -lz
Check Makefile for more comments.
- Running the executable:
./image_process <relative path of image> <relative path and name desired of output> <edge, sharpen> <No of threads: 1,2,4,8,16,32 >
An example of how the output would look using the example imgs folder:
| Original PNG | Output PNG after edge detection |
|---|---|
![]() |
![]() |
| Original PNG | Output PNG after sharpening |
|---|---|
![]() |
![]() |
There is a TROFF manual I made in the manual directory so the program can feel more like a command (mainly for learning purposes)
| Screenshot from terminal |
|---|
![]() |
To display it, move image_process.1 to your manual's folder (in super user), for me it was
sudo mv image_process.1 /usr/Local/share/man/man1Then from the terminal you can display the manual by simply
man Image_process- Implement Gaussian blurring and Unsharp. I had trouble debugging so I did not include this feature in the current version.
This project is licensed under the MIT License. See the LICENSE file for details.




