diff --git a/README.md b/README.md index 71d2f26..5657524 100644 --- a/README.md +++ b/README.md @@ -1 +1,125 @@ -# CV Toolbox +# Computer-Vision-Toolkit + +## Table of contents: + +- [Introduction](#introduction) +- [Full Project Features](#project-features) +- [Project Structure](#project-structure) +- [How to Run The Project](#run-the-project) +- [Team](#team) + +### Introduction + +Computer Vision Toolkit Application is a software solution designed to leverage the power of computer vision algorithms through an intuitive and user-friendly graphical user interface (GUI) developed using the Qt framework. This application aims to provide users with a versatile toolset for image analysis, making it suitable for a wide range of applications, including image processing, object detection,image features extraction, and more. + +### Project Features: + +This application mainly consists of 11 tabs (pages) to provide user with all needed CV algorithms, each page has certain features that are related to each other as follows: + +1. Filters, Noise and Edge Detectors page:
+ Includes 3 types of noise that user can add to gray/coloured images: + + | Uniform Noise | Guassian Noise | Salt & Pepper Noise | + | :----------------------------: | :-----------------------------: | :--------------------------------: | + | ![](samples\uniform-noise.png) | ![](samples\guassian-noise.png) | ![](samples\salt-pepper-noise.png) | + + Includes 4 edge detectors types with the ability to control kernal size and any additional option for detector: + | Sobel | Roberts | Perwitt | Canny | + | :----------------------------: | :-----------------------------: | :--------------------------------: | :--------------------------------: | + | ![](samples\sobel-detector.png) | ![](samples\roberts-detector.png) | ![](samples\perwitt-detector.png) | ![](samples\canny-detector.png) | + + Includes 3 types of filter enanling user to control kernal size: + + | Average Filter | Guassian Filter | Median Filter | + | :-----------------------------: | :------------------------------: | :----------------------------: | + | ![](samples\average-filter.png) | ![](samples\guassian-filter.png) | ![](samples\median-filter.png) | + + for more details about this page and results check [Report 1](docs\Report%201.pdf) + +2. Normalization, Equalization and Thresholding page:
+ Shows images histogram with options to normalize or equalize: + | Histogram | Normalization | Equalization | + | :----------------------------: | :-----------------------------: | :-----------------------------: | + | ![](samples\histogram.png) | ![](samples\normalization.png) | ![](samples\equalizer.png) | + + Apply both global or local thresholding on uploaded image: + | Local | Global | + | :----------------------------: | :-----------------------------: | + | ![](samples\local-thresh.png) | ![](samples\global-thresh.png) | + + for more details about this page and results check [Report 1](docs\Report%201.pdf) + +3. Frequency Domain Filters and Hybird Image: + User upload 2 different images and determine the raduis for each filter type(high pass or low pass) and then can combine the output to get hybird image. + ![](samples\hybird.png) + for more details about this page and results check [Report 1](docs\Report%201.pdf) + +4. Hough Transform Page: + This page enbles user to apply Line/ Circle / Ellipse hough transform: + | Line | Circle | Ellipse | + | :----------------------------: | :-----------------------------: | :-----------------------------: | + | ![](samples\hough-line.png) | ![](samples\hough-circle.png) | ![](samples\hough-ellipse.png) | + + for more details about this page and results check [Report 2](docs\Report%202.pdf) + +5. Active Contour Page: + User has the ability to select cirlce fro image and tune paramters to contour objects. + | Example 1 | Example 2 | + | :----------------------------: | :-----------------------------: | + | ![](samples\active-contour.png) | ![](samples\active-contour-2.png) | + + for more details about this page and results check [Report 2](docs\Report%202.pdf) + +6. Harris and Lambda Corner detector page: + User can detect corners by harris or lambda methods and change kernal size and threshold. + | Harris | Lambda | + | :----------------------------: | :-----------------------------: | + | ![](samples\harris.png) | ![](samples\lambda.png) | + + for more details about this page and results check [Report 3](docs\Report%203.pdf) + +7. Image Matching Methods page: + User can match between image template and full image with 2 methods: + | Square Sum of Differences method | Cross Correlation Method | + | :----------------------------: | :-----------------------------: | + | ![](samples\match-ssd.png) | ![](samples\match-ncc.png) | + + for more details about this page and results check [Report 3](docs\Report%203.pdf) + +8. Sift Descriptors Page: + User can upload one or two image to get SIFT Keypoints with options to tune, and then compute keypoints matching between images. +

+ +

+ + for more details about this page and results check [Report 3](docs\Report%203.pdf) + +9. Advanced Thresholding Page: + Includes Global Thresholding with 2 methods: + |Ostu Thresholding| Optimal Thresholding | + | :----------------------------: | :-----------------------------: | + | ![](samples\ostu-thresh.png) | ![](samples\optimal-thres.png) | + + Includes Local Thresholding and Multi-level Thresholding: + |Local Thresholding| Multi-level Thresholding | + | :----------------------------: | :-----------------------------: | + | ![](samples\local-thresh-2.png) | ![](samples\multi-thresh.png) | + + for more details about this page and results check [Report 4](docs\Report%204.pdf) + +10. Segmentation Methods Page: + User can segment RGB images with 4 types of segmentation: + | K-Means Segmentation | Mean Shift Segmentation | Agglomerative Segmentation | Region Growing | + | :----------------------------: | :-----------------------------: | :--------------------------------: | :--------------------------------: | + | ![](samples\k-means.png) | ![](samples\mean-shift-seg.png) | ![](samples\agg-seg.png) | ![](samples\region-growing.png) | + +for more details about this page and results check [Report 4](docs\Report%204.pdf) + +11. Face Recognition and detection page: + +- User can upload person or multi persons images and detect faces in images. +- User can upload training folder includes images named with its label. +- Once training finishes, User can upload new image to predict person in the image +- if model already exists, Then user can work dirctley without training +- For new training, user can determin number of PCA compenets to train a nearest neigbour model. +- User can upload test folder to visulaize ROC for each label. diff --git a/samples/active-contour-2.png b/samples/active-contour-2.png new file mode 100644 index 0000000..dd85879 Binary files /dev/null and b/samples/active-contour-2.png differ diff --git a/samples/active-contour.png b/samples/active-contour.png new file mode 100644 index 0000000..fe694d6 Binary files /dev/null and b/samples/active-contour.png differ diff --git a/samples/agg-seg.png b/samples/agg-seg.png new file mode 100644 index 0000000..8f2894f Binary files /dev/null and b/samples/agg-seg.png differ diff --git a/samples/average-filter.png b/samples/average-filter.png new file mode 100644 index 0000000..d791a23 Binary files /dev/null and b/samples/average-filter.png differ diff --git a/samples/canny-detector.png b/samples/canny-detector.png new file mode 100644 index 0000000..0b68eb9 Binary files /dev/null and b/samples/canny-detector.png differ diff --git a/samples/equalizer.png b/samples/equalizer.png new file mode 100644 index 0000000..346ac34 Binary files /dev/null and b/samples/equalizer.png differ diff --git a/samples/global-thresh.png b/samples/global-thresh.png new file mode 100644 index 0000000..e06757d Binary files /dev/null and b/samples/global-thresh.png differ diff --git a/samples/guassian-filter.png b/samples/guassian-filter.png new file mode 100644 index 0000000..26222d7 Binary files /dev/null and b/samples/guassian-filter.png differ diff --git a/samples/guassian-noise.png b/samples/guassian-noise.png new file mode 100644 index 0000000..14738f4 Binary files /dev/null and b/samples/guassian-noise.png differ diff --git a/samples/harris.png b/samples/harris.png new file mode 100644 index 0000000..f328987 Binary files /dev/null and b/samples/harris.png differ diff --git a/samples/high-pass.png b/samples/high-pass.png new file mode 100644 index 0000000..ffbf9fd Binary files /dev/null and b/samples/high-pass.png differ diff --git a/samples/histogram.png b/samples/histogram.png new file mode 100644 index 0000000..d54eb2f Binary files /dev/null and b/samples/histogram.png differ diff --git a/samples/hough-circle.png b/samples/hough-circle.png new file mode 100644 index 0000000..47941c0 Binary files /dev/null and b/samples/hough-circle.png differ diff --git a/samples/hough-ellipse.png b/samples/hough-ellipse.png new file mode 100644 index 0000000..d29f941 Binary files /dev/null and b/samples/hough-ellipse.png differ diff --git a/samples/hough-line.png b/samples/hough-line.png new file mode 100644 index 0000000..f2ca908 Binary files /dev/null and b/samples/hough-line.png differ diff --git a/samples/hybird.png b/samples/hybird.png new file mode 100644 index 0000000..2dbde28 Binary files /dev/null and b/samples/hybird.png differ diff --git a/samples/k-means.png b/samples/k-means.png new file mode 100644 index 0000000..002b4a1 Binary files /dev/null and b/samples/k-means.png differ diff --git a/samples/lambda.png b/samples/lambda.png new file mode 100644 index 0000000..93e9756 Binary files /dev/null and b/samples/lambda.png differ diff --git a/samples/local-thresh-2.png b/samples/local-thresh-2.png new file mode 100644 index 0000000..9bd3627 Binary files /dev/null and b/samples/local-thresh-2.png differ diff --git a/samples/local-thresh.png b/samples/local-thresh.png new file mode 100644 index 0000000..71f0d2d Binary files /dev/null and b/samples/local-thresh.png differ diff --git a/samples/low-pass.png b/samples/low-pass.png new file mode 100644 index 0000000..40d988a Binary files /dev/null and b/samples/low-pass.png differ diff --git a/samples/match-ncc.png b/samples/match-ncc.png new file mode 100644 index 0000000..2be9559 Binary files /dev/null and b/samples/match-ncc.png differ diff --git a/samples/match-ssd.png b/samples/match-ssd.png new file mode 100644 index 0000000..41892ed Binary files /dev/null and b/samples/match-ssd.png differ diff --git a/samples/mean-shift-seg.png b/samples/mean-shift-seg.png new file mode 100644 index 0000000..160bfd4 Binary files /dev/null and b/samples/mean-shift-seg.png differ diff --git a/samples/median-filter.png b/samples/median-filter.png new file mode 100644 index 0000000..652c155 Binary files /dev/null and b/samples/median-filter.png differ diff --git a/samples/multi-thresh.png b/samples/multi-thresh.png new file mode 100644 index 0000000..0bf2e0f Binary files /dev/null and b/samples/multi-thresh.png differ diff --git a/samples/normalization.png b/samples/normalization.png new file mode 100644 index 0000000..a4382d4 Binary files /dev/null and b/samples/normalization.png differ diff --git a/samples/optimal-thres.png b/samples/optimal-thres.png new file mode 100644 index 0000000..1d1dac5 Binary files /dev/null and b/samples/optimal-thres.png differ diff --git a/samples/ostu-thresh.png b/samples/ostu-thresh.png new file mode 100644 index 0000000..02f5a91 Binary files /dev/null and b/samples/ostu-thresh.png differ diff --git a/samples/perwitt-detector.png b/samples/perwitt-detector.png new file mode 100644 index 0000000..8eb2d73 Binary files /dev/null and b/samples/perwitt-detector.png differ diff --git a/samples/region-growing.png b/samples/region-growing.png new file mode 100644 index 0000000..54f9d12 Binary files /dev/null and b/samples/region-growing.png differ diff --git a/samples/roberts-detector.png b/samples/roberts-detector.png new file mode 100644 index 0000000..8004586 Binary files /dev/null and b/samples/roberts-detector.png differ diff --git a/samples/salt-pepper-noise.png b/samples/salt-pepper-noise.png new file mode 100644 index 0000000..6542a0b Binary files /dev/null and b/samples/salt-pepper-noise.png differ diff --git a/samples/sift-feat.png b/samples/sift-feat.png new file mode 100644 index 0000000..e7e7159 Binary files /dev/null and b/samples/sift-feat.png differ diff --git a/samples/sift-match.png b/samples/sift-match.png new file mode 100644 index 0000000..2a65b80 Binary files /dev/null and b/samples/sift-match.png differ diff --git a/samples/sobel-detector.png b/samples/sobel-detector.png new file mode 100644 index 0000000..21902f7 Binary files /dev/null and b/samples/sobel-detector.png differ diff --git a/samples/uniform-noise.png b/samples/uniform-noise.png new file mode 100644 index 0000000..b428a1f Binary files /dev/null and b/samples/uniform-noise.png differ