This project was developed as part of the Lightricks Students Home Assignment.
It showcases an image editing tool built from scratch in Python, using NumPy for core operations and implementing convolution-based filters and adjustments without any external image-processing libraries.
The system is modular, extensible, and configurable via a JSON file, and supports both saving and displaying the final result.
- Modular Design - Each operation is cleanly separated to allow for easy extension and maintenance.
- JSON-Based Configuration - Users can define image paths, filters, parameters, and save/display options using a structured input file.
- Supported Filters:
- Box Blur – Averages pixel values in an X×Y neighborhood to produce a softened effect.
- Sobel Edge Detection – Highlights image edges using horizontal and vertical gradient kernels.
- Sharpen – Enhances image details using the unsharp masking technique.
- Supported Adjustments:
- Brightness – Adjusts pixel intensity globally.
- Contrast – Stretches or compresses pixel value distribution.
- Saturation – Modifies color vibrancy (in RGB approximation).
- Sequential Layering - Applies operations in the exact order specified by the user.
- Validation & Error Handling - Provides clear messages for invalid configuration files.
- Display or Save Output - Allows visualizing the result or saving it to a file based on user input.
- CLI Integration - Run the tool via command line with a single command.
Here are a few examples of images edited using the tool and the filters described above:
To try it out locally, follow these steps:
- Clone the repository:
git clone <url> - Open the folder in your preferred code editor
- Optional: Set up a virtual environment using
python3 -m venv venv - Install dependencies:
pip install -r requirements.txt - Run the editor with:
python3 edit_image.py --config path/to/config.json



