This project is a web application designed to implement the core functionalities of a 2D Content-Based Image Retrieval System with and without relevance feedback. Users can upload, manage, and search for images based on their visual content using advanced algorithms. The application supports two primary search methods: simple retrieval and advanced retrieval with Query-Point Movement relevance feedback.
- main Branch -> 2D Content-Based Image Retrieval System
- 3d Branch -> 3D object search and retrieval Application
- Upload, download, and delete single or multiple images.
- Organize images into predefined categories based on the dataset.
- Apply transformations to images, such as cropping, scaling, rotation, and flipping.
- Visualize image content descriptors including:
- Color Histogram
- Dominant Colors
- Texture Descriptors (Gabor filters)
- Hu Moments (shape descriptors)
- Average Color
- Edge Histogram
-
Simple Search:
- Compares the query image to database images using visual descriptors.
- Computes a global score by combining weighted distances for:
- Color (histograms, dominant colors, average color)
- Texture
- Shape (Hu moments, edge histogram)
- Returns the closest matches sorted by score.
-
Advanced Search with Relevance Feedback:
- Refines search results using user feedback.
- Dynamically adjusts descriptor weights based on relevant and non-relevant images.
- Implements the Query-Point Movement method to improve search results iteratively.
The application uses a hybrid architecture combining MEAN stack (MongoDB, Express.js, Angular, Node.js) and Flask for efficient functionality.
- Handles image processing and descriptor computation.
- Provides a RESTful API to:
- Calculate image descriptors.
- Perform transformations like cropping, scaling, rotation, and flipping.
- Execute both search methods.
- Serves as an intermediary between the Angular front-end and the Flask back-end.
- Manages requests for image upload, deletion, and search.
- Provides a user-friendly interface for:
- Uploading and managing images.
- Viewing computed descriptors.
- Visualizing search results.
- Stores image descriptors and metadata.
- Facilitates the categorization of images.
- Description: Robust Scene Text Image Dataset with Seven Categories.
- Categories: Resident, Forest, Industry, and more (7 categories, 400 images each).
- Total Images: 2800.
- Purpose: Used for detecting and recognizing text in real-world scenes.
- Source: RSSCN7 GitHub Repository.
- Calculates distances for:
- Color (histogram, average, dominant colors)
- Texture (Gabor filters)
- Shape (Hu moments, edge histogram)
- Combines distances with predefined weights.
- Ranks images based on the weighted scores.
- Updates weights dynamically based on:
- Scores of relevant images.
- Scores of non-relevant images.
- Normalization factors to maintain weight consistency.
- Refines search results iteratively to align with user preferences.
- Clone the repository.
git clone https://github.com/novoSoftEng/IndexationApp.git
cd IndexationApp
- Install dependencies and run Flask API (Terminal 1)
cd api
pip install -r requirements.txt
-
Install dependencies and Start the back-end and the Express.js API (Terminal 2)
cd api npm install npm start
-
Install dependencies and Run the Angular front-end (Terminal 3)
cd Client npm install npm start
-
Go to THis link :
http://localhost:4200/
-
Upload images, calculate descriptors, and explore the search functionalities.
This Project is Devloped by :
- Idriss Khattabi
- Chihab Eddine LIEFRID
- Ayman Boufarhi
Under the supervision of : MR. M'hamed AIT KBIR.