🏆 1st Place Award Winner This project was selected as the #1 project among all submissions for the Selçuk University "Image Processing" course.
IM-AGES is a comprehensive desktop application built with C# and WinForms that implements a wide array of fundamental and advanced image processing algorithms entirely from scratch. No external processing libraries (OpenCV or AForge.NET) were used; every algorithm is a clean-room implementation, demonstrating a deep, practical understanding of DIP (Digital Image Processing) theory.
This was a 4-person team project with a clear architectural vision. The primary development goal was to maintain a strict Separation of Concerns (SoC).
- UI Layer (
IM_AGES_Edit.cs): Acts as the central "controller" or "control tower," handling user interactions (button clicks, menu selections). - Logic Layer (Team Classes): The UI layer delegates all processing tasks to static methods within dedicated classes for each team member (
Furkan.cs,Ismail.cs,Mustafa.cs,Alperen.cs).
The project lead (Yusuf Furkan Umutlu) established this core architecture, defined the interfaces, and implemented the advanced morphological and geometric algorithms. Each team member was then responsible for implementing and optimizing their assigned algorithms within their own class, which were then integrated into the main editor.
Beyond the standard algorithms, IM-AGES features powerful editor tools that set it apart:
A custom picture box component was developed to allow for high-magnification zoom and panning within the editor forms.
The application maintains a visual history (similar to Photoshop's) of all applied operations. This allows the user to see the effect of each step, click on any previous state to revert (Undo), and re-apply changes, providing a non-destructive workflow.
All features listed below are implemented by manually manipulating pixel data (e.g., GetPixel, SetPixel, and bitmap locking for performance).
- Grayscale Conversion (Multiple methods)
- Image Negative (Invert)
- Brightness Adjustment
- Contrast Enhancement
- Image Flipping (Horizontal & Vertical)
- Image Mirroring
- Histogram Calculation (RGB and Grayscale)
- Histogram Equalization (To improve image contrast)
- Mean (Average) Filter (For noise reduction)
- Median Filter (Highly effective for Salt & Pepper noise)
- Gaussian Blur
- Sharpening Filter (Using a Laplacian kernel)
- Basic Edge Detection (Laplacian)
- Prewitt Operator (Detects horizontal and vertical edges)
- Sobel Operator (More robust edge detection)
- Dilation (Genişletme)
- Erosion (Aşındırma)
- Opening (Erosion followed by Dilation, removes noise)
- Closing (Dilation followed by Erosion, fills holes)
- Image Rotation (With user-defined angle)
- Image Scaling (Zoom) (Nearest-neighbor or bilinear interpolation)
- Salt & Pepper Noise (Adds random white and black pixels)
- Skeletonization (İskelet Çıkarma): A significant feature. Implements an iterative thinning algorithm (e.g., Zhang-Suen) to find the topological skeleton of a binary image.
- Language: C#
- Framework: .NET Framework
- Platform: Windows Forms (WinForms)
- Core API:
System.Drawing(Bitmap, Color)
- Clone the repository:
git clone https://github.com/yufurkan/IM-AGES.git - Open the
IM-AGES.slnsolution file in Visual Studio 2022. - Build the solution (Ctrl+Shift+B).
- Run the project (F5).
| Entry Page | Main Menu | Image Selection |
|---|---|---|
![]() |
![]() |
![]() |
- Yusuf Furkan Umutlu (Project Lead & Architect | Morphological, Geometric, & Skeletonization Algorithms)
- Mustafa Nahsan (Advanced Filtering, Edge Detection & Histograms)
- İsmail Sarıteke (Basic Filtering & Noise Algorithms)
- Alperen Atar (Point Processing & Basic Transforms)



