Skip to content

davidimre/Image-Processing-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

🖼️ Digital Image Processing Toolbox (OpenCV)

🚀 Overview

This repository contains a robust implementation of core Digital Image Processing (DIP) algorithms. Developed in C++ with OpenCV, the project provides a hands-on look at how images are manipulated at the pixel level, including spatial domain filtering, morphological analysis, and object recognition techniques.

The application features a menu-driven interface to perform over 40 different image processing operations on-the-fly.

🧠 Implemented Algorithms & Features

1. Fundamental Operations

  • Point Processing: Grayscale conversion, brightness/contrast adjustment, and Binarization (Thresholding).
  • Dithering: Implementation of the Floyd-Steinberg error diffusion algorithm for high-quality image quantization.
  • Histogram Analysis: Generation of intensity histograms and cumulative histograms to analyze image distribution.

2. Morphological Image Processing

  • Core Operations: Dilation and Erosion.
  • Compound Operations: Opening and Closing (used for noise removal and shape smoothing).
  • Iterative Processing: Multi-pass morphology for advanced structural analysis.

3. Object & Contour Analysis

  • Connected Component Labeling: Identifying and segmenting distinct objects within a binary image.
  • Border Tracing: Algorithms to follow the contours of detected objects.
  • Chain Code: Representing object boundaries as a sequence of directional codes (Freeman Chain Code) for shape analysis and reconstruction.

4. Spatial Filtering & Logic

  • Logical Operations: AND, OR, XOR operations between images.
  • Advanced Labeling: Recursive and iterative processing for complex object identification.

🛠️ Tech Stack

  • Language: C++
  • Library: OpenCV 4.x (Core, Imgproc, Highgui)
  • Environment: Visual Studio (with OpenCV configuration)

📂 Key Functionalities (Code Map)

  • labeling() / processOfLabeling(): Handles object segmentation.
  • dilation() / erosion() / opening() / closing(): Mathematical morphology suite.
  • FloydSteinberg(): Advanced dithering logic.
  • borderTracing(): Contour extraction.
  • printHistogram(): Statistical image analysis.

⚙️ How to Run

  1. Dependencies: Ensure OpenCV is correctly linked in your C++ environment.
  2. Compile: Build the project using a C++ compiler (Visual Studio recommended).
  3. Execute: Run the application. A console menu will appear; select the number corresponding to the algorithm you wish to test.
  4. Input: Provide the path to a .bmp, .jpg, or .png file when prompted.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages