{"id":27949263,"url":"https://github.com/haleshot/image_processing","last_synced_at":"2025-05-07T15:21:12.812Z","repository":{"id":168520368,"uuid":"644245180","full_name":"Haleshot/Image_Processing","owner":"Haleshot","description":"A project on Image Processing, leveraging PyQt5 for a user-friendly GUI and implementing essential operations like Low Pass Filter, Downsampling, Upsampling, Thresholding, and Negative Image Generation. It offers a visually engaging experience while exploring the realm of image processing techniques.","archived":false,"fork":false,"pushed_at":"2024-11-21T15:39:02.000Z","size":6734,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-21T16:35:18.181Z","etag":null,"topics":["blurring","cv2","downsampling","gaussian-filter","image","image-analysis","image-classification","image-manipulation","image-processing","image-recognition","lowpass-filter","python","qt","thresholding","upsampling"],"latest_commit_sha":null,"homepage":"https://haleshot.github.io/Image_Processing/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Haleshot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-23T05:59:20.000Z","updated_at":"2024-11-21T15:31:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"41f80f2c-4d66-4c60-b71a-dcfb44329d94","html_url":"https://github.com/Haleshot/Image_Processing","commit_stats":{"total_commits":327,"total_committers":3,"mean_commits":109.0,"dds":"0.23853211009174313","last_synced_commit":"e1822229d4dcd165660ebfd107427521069feaf0"},"previous_names":["haleshot/image_processing"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Haleshot%2FImage_Processing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Haleshot%2FImage_Processing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Haleshot%2FImage_Processing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Haleshot%2FImage_Processing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Haleshot","download_url":"https://codeload.github.com/Haleshot/Image_Processing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252902718,"owners_count":21822288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blurring","cv2","downsampling","gaussian-filter","image","image-analysis","image-classification","image-manipulation","image-processing","image-recognition","lowpass-filter","python","qt","thresholding","upsampling"],"created_at":"2025-05-07T15:21:11.981Z","updated_at":"2025-05-07T15:21:12.804Z","avatar_url":"https://github.com/Haleshot.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e Image Processing Project \u003c/h1\u003e\r\n\r\n\u003cdetails open=\"open\"\u003e\r\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\r\n  \u003col\u003e\r\n    \u003cli\u003e\u003ca href=\"#Installation\"\u003e Installation \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Introduction\"\u003e Introduction \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Objectives and scope\"\u003e  Objectives and scope \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Methodology\"\u003e  Methodology \u003c/a\u003e\u003c/li\u003e\r\n    \u003cul\u003e\r\n    \u003cli\u003e\u003ca href=\"#Down Sampling\"\u003e  Down Sampling \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Up Sampling\"\u003e  Up Sampling \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Negative of an Image\"\u003e  Negative of an Image \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Thresholding\"\u003e  Thresholding \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Blurring\"\u003e  Blurring \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Low Pass Filtering (LPF)\"\u003e  Low Pass Filtering (LPF) \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Gaussian Noise\"\u003e  Gaussian Noise \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Facial Feature Detection\"\u003e  Facial Feature Detection \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Laplacian Edge Detection\"\u003e  Laplacian Filter \u003c/a\u003e\u003c/li\u003e\r\n    \u003c/ul\u003e\r\n    \u003cli\u003e\u003ca href=\"#Conclusion\"\u003e Conclusion \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Contributing\"\u003e  Contributing \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#ToDo\"\u003e  To Do \u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#Video Demos\"\u003e  Video Demos \u003c/a\u003e\u003c/li\u003e\r\n\r\n  \u003c/ol\u003e\r\n\u003c/details\u003e\r\n\u003chr\u003e\r\n\u003c!--![-----------------------------------------------------](https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png) --\u003e\r\n\r\n\u003c!-- Installation --\u003e\r\n\u003ch2 id=\"Installation\"\u003e 📦: Installation \u003c/h2\u003e\r\n\r\nSee [the contributing guide](CONTRIBUTING.md) for detailed instructions on how to get started with our project.\r\n\u003cp align=\"justify\"\u003e\r\n\r\n1. Obtain a copy of [Python 3.9](https://www.python.org/downloads/release/python-3913/)\r\n2. [Create a virtual environment](https://docs.python.org/3/library/venv.html) \u0026 activate it.\r\n3. Run the following in the venv...\r\n\r\n```sh\r\npip install cmake\r\npip install -r requirements.txt\r\n```\r\n\r\n4. You can run the program in the venv\r\n\r\n```sh\r\ncd (install path)\\Image_Processing\\All_Project_Files\\Final_Project_Files\r\npython .\\Image_Processing_Options.py\r\n```\r\n\r\n\u003c/p\u003e\r\n\u003chr\u003e\r\n\r\n\u003c!-- Introduction --\u003e\r\n\u003ch2 id=\"Introduction\"\u003e :pencil: Introduction \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n  Edge detection is an essential part of image processing that involves finding the boundaries of objects\r\nwithin an image. This process can be used to extract useful information from an image, such as object\r\nrecognition or feature detection. One of the most common techniques for edge detection is the\r\nLaplacian filter, which is a second-order derivative filter used to detect changes in the intensity of the\r\nimage.\r\n\r\nIn this project, we will explore edge detection using the Laplacian filter and other image processing\r\ntechniques such as low pass filtering (LPF), high pass filtering (HPF), and thresholding. LPF and HPF\r\nare commonly used to enhance images and remove noise, while thresholding is used to binarize an\r\nimage into black and white pixels based on a certain threshold value.\r\n\r\nThe project will involve implementing these techniques and applying them to various\r\ntest images to demonstrate their effectiveness in edge detection. The results will be analyzed and\r\ncompared to determine the most effective approach for edge detection in different scenarios.\r\nThe objectives of this project are to gain a deeper understanding of image processing techniques,\r\nspecifically edge detection using the Laplacian filter, LPF, HPF, and thresholding, and to demonstrate\r\nthe practical applications of these techniques in real-world scenarios.\r\n\r\n  Through this project, we hope to\r\nenhance our skills in image processing and analysis, as well as gain insights into the challenges and\r\nlimitations of edge detection techniques.\r\n\r\n\u003c/p\u003e\r\n\u003chr\u003e\r\n\r\n\u003c!-- Objectives and Scope --\u003e\r\n\u003ch2 id=\"Objectives and Scope\"\u003e :cloud: Objectives and Scope\u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n  Utilizing image processing techniques such as low-pass filtering (LPF), blurring, and other such\r\ntechniques to reduce noise and improve the overall quality of the images, as well as using edge\r\ndetection to define boundaries for the images' borders.\r\n\r\nA number of different methods, including thresholding and edge detection, are utilised in the\r\nprocess of segmenting and extracting information from images.\r\n\r\nThe distinction between the different subcategories can be seen through the employment of a\r\nvariety of user-defined functions as well as built-in functions (LPF, Edge detection, etc).\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Methodology --\u003e\r\n\u003ch2 id=\"Methodology\"\u003e :cloud: Methodology \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n  The methodology for this project involved several steps, including image acquisition, image preprocessing, edge detection using the Laplacian filter, LPF, HPF, and thresholding, and analysis of the\r\nresults.\r\nThe first step in the methodology was to acquire test images to be used in the project. These images\r\nwere chosen based on their complexity and variability to test the effectiveness of the different edge\r\ndetection techniques.\r\n\r\nThe second step was image pre-processing, which involved applying noise reduction techniques such\r\nas median filtering and histogram equalization to enhance the quality of the images. This was done to\r\nensure that the edge detection techniques were applied to clear and high-quality images.\r\n\r\nThe third step was edge detection using the Laplacian filter, LPF, HPF, and thresholding techniques.\r\nThe Laplacian filter was applied to detect edges by finding changes in the intensity of the image,\r\nwhile LPF and HPF were used to remove noise and enhance the edges. Thresholding was used to\r\nbinarize the image into black and white pixels based on a certain threshold value.\r\n\r\nFinally, the results were analyzed and compared to determine the most effective approach for edge\r\ndetection in different scenarios. This involved visually comparing the different edge detection\r\ntechniques and evaluating their accuracy in detecting edges.\r\n\r\nOverall, the methodology for this project was a combination of image acquisition, pre-processing,\r\nedge detection using the Laplacian filter, LPF, HPF, and thresholding, and analysis of the results to\r\ndetermine the effectiveness of each technique in edge detection.\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Down Sampling --\u003e\r\n\u003ch2 id=\"Down Sampling\"\u003e :small_orange_diamond: Down Sampling \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n  Down Sampling:\r\n\r\n• The process of resampling in a multi-rate digital signal processing system is referred to as\r\ndown sampling, compression, and decimation in digital signal processing.\r\n\r\n• Both down sampling and decimation can refer to the full process of bandwidth reduction\r\n(filtering) and sample-rate reduction, or they can be used interchangeably with the term\r\ncompression.\r\n\r\n• The technique produces an estimate of the sequence that would have been generated by\r\nsampling the signal at a lower rate when applied to a sequence of samples of a signal or a\r\ncontinuous function (or density, as in the case of a photograph).\r\n\r\n• In down-sampling technique, the number of pixels in the given image is reduced depending\r\non the sampling frequency. Due to this, resolution and size of the image decreases.\r\n\r\n• Output:\r\n\r\n ![image](https://github.com/Haleshot/Projects/assets/57552973/3411e8eb-9375-4527-9724-441978892c61)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Up Sampling --\u003e\r\n\u003ch2 id=\"Up Sampling\"\u003e :small_orange_diamond: Up Sampling \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n  Up Sampling:\r\n\r\n• Up sampling, expansion, and interpolation are terminologies used to describe the resampling\r\nprocedure in a mult-irate digital signal processing system.\r\n\r\n• Up sampling can refer to either expansion or the full expansion and filtering process\r\n(interpolation).\r\n\r\n• Up-sampling technique increases the resolution as well as the size of the image.\r\n• Some commonly used up-sampling techniques are:\r\n\r\n  · Nearest neighbour interpolation\r\n  · Bilinear interpolation\r\n  · Cubic interpolation\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/ef7a1644-8d8f-4642-a0ee-725156ccd550)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Negative of an Image --\u003e\r\n\u003ch2 id=\"Negative of an Image\"\u003e :small_orange_diamond: Negative of an Image \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nNegative of an Image:\r\n\r\n• Photographic negative in which the light areas of the subject are reproduced as dark and the\r\ndark areas as light.\r\n\r\n• Negatives typically take the form of a transparent material, such glass or plastic.\r\n\r\n• These tones are reversed and result in a positive photographic print when sensitised paper is\r\nexposed through a negative, which can be achieved either by placing the negative and paper\r\nin close proximity or by projecting a negative image onto the paper.\r\n\r\n• s = (L-1) – r, where L= number of gray levels\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/6ddca68e-e229-441f-8915-858e52232082)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Thresholding --\u003e\r\n\u003ch2 id=\"Thresholding\"\u003e :small_orange_diamond: Thresholding \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nThresholding:\r\n\r\n• Thresholding is a type of image segmentation, where we change the pixels of an image to\r\nmake the image easier to analyze.\r\n\r\n• In thresholding, we convert an image from colour or grayscale into a binary image, i.e., one\r\nthat is simply black and white.\r\n\r\n• Image thresholding is a simple, yet effective, way of partitioning an image into a foreground\r\nand background.\r\n\r\n• We use two types of thresholding i.e. with and without background.\r\n\r\n• Output:\r\n\r\n  Thresholding with background:\r\n        ![image](https://github.com/Haleshot/Projects/assets/57552973/5d894d79-0800-4ed3-a44b-ce07cba33eb1)\r\n\r\n  Thresholding without background:\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/137a155c-6d6b-4797-b099-8135cfed17aa)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Blurring --\u003e\r\n\u003ch2 id=\"Blurring\"\u003e :small_orange_diamond: Blurring \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nBlurring an image makes the image look less sharp.\r\n\r\n• This can be done by smoothing the color transition between the pixels.\r\n\r\n• When we blur an image, we make the colour transition from one side of an edge in the image\r\nto another smooth rather than sudden.\r\n\r\n• The effect is to average out rapid changes in pixel intensity.\r\n\r\n• We subtract the maximum pixel value(255) from the given image's matrix.\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/3b5820f7-efdf-42ba-acc9-45fff8bc9e3d)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- LPF --\u003e\r\n\u003ch2 id=\"Low Pass Filtering (LPF)\"\u003e :small_orange_diamond: Low Pass Filtering (LPF) \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nLow Pass Filtering (LPF):\r\n\r\n• It is also known as a smoothing filter. It removes the high frequency content from the image.\r\n\r\n• Example of Low pass averaging filter mask is as shown:\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/68c8097f-1528-4471-87cf-c87e13f720f7)\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/3317e1ee-b827-45e1-b71f-349d4b5e29cf)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Gaussian Noise --\u003e\r\n\u003ch2 id=\"Gaussian Noise\"\u003e :small_orange_diamond: Gaussian Noise \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nGaussian Noise:\r\n\r\n• A Gaussian Filter is a low pass filter used for reducing noise (high frequency components)\r\nand blurring regions of an image.\r\n\r\n• The filter is implemented as an Odd sized Symmetric Kernel (DIP version of a Matrix) which\r\nis passed through each pixel of the Region of Interest to get the desired effect.\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/2877adbe-2b77-4092-bf7f-17e45edfd45b)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Facial Feature Detection --\u003e\r\n\u003ch2 id=\"Facial Feature Detection\"\u003e :small_orange_diamond: Facial Feature Detection \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nFacial Feature Detection:\r\n\r\nFacial feature detection is a computer vision technique that identifies and locates the key features of a human face in an image, such as eyes, nose, mouth, eyebrows, etc. It can be used for various applications such as face recognition, emotion analysis, face editing, and more. This python program performs facial feature detection using the following steps:\r\n\r\n- Load an image file as input\r\n- Convert the image to grayscale\r\n- Detect faces in the image using a pre-trained Haar cascade classifier\r\n- For each detected face, draw a bounding box around it.\r\n- Detects facial features in each face using a pre-trained shape predictor model (eye haarcasacade classifier).\r\n- Display the output image with the detected faces and facial features highlighted.\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/eee541da-74ec-4fdc-801b-06fea5cb5166)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Laplace Edge Detection --\u003e\r\n\u003ch2 id=\"Laplacian Edge Detection\"\u003e :small_orange_diamond: Laplacian Filter \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nLaplacian Filter:\r\n\r\n• A Laplacian filter is an edge detector used to compute the second derivatives of an image,\r\nmeasuring the rate at which the first derivatives change. This determines if a change in\r\nadjacent pixel values is from an edge or continuous progression.\r\n\r\n• Laplacian filter kernels usually contain negative values in a cross pattern, centered within the\r\narray. The corners are either zero or positive values. The center value can be either negative or\r\npositive.\r\n\r\n• Output:\r\n\r\n  ![image](https://github.com/Haleshot/Projects/assets/57552973/d200434b-1fe1-4c32-8627-e324e872a690)\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Conclusion --\u003e\r\n\u003ch2 id=\"Conclusion\"\u003e :small_orange_diamond: Conclusion \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\nConclusion:\r\n\r\n• In conclusion, the project demonstrated the effectiveness of edge detection techniques using the\r\nLaplacian filter, LPF, HPF, and thresholding.\r\n\r\n  • The results showed that the Laplacian filter was the most\r\n    effective technique for edge detection, with high accuracy in detecting edges in various test images.\r\n    LPF and HPF were also effective in enhancing the edges and removing noise, respectively, which\r\n    resulted in more accurate edge detection using the Laplacian filter. Thresholding was found to be less\r\n    effective in detecting edges, but was still useful in binarizing the image for further analysis.\r\n\r\n  • The project also highlighted the importance of image pre-processing in edge detection, as the quality\r\n    of the input image significantly impacted the accuracy of the results. The application of preprocessing techniques such as median filtering and histogram equalization was found to be critical in improving the quality of the images.\r\n\r\n  • Overall, the project provided valuable insights into the practical applications of edge detection\r\n    techniques in image processing and analysis. The results demonstrate the potential of these techniques\r\n    for a range of applications, from object recognition to feature detection. The limitations and\r\n    challenges of these techniques were also discussed, providing insights for future research and\r\n    development in this area.\r\n\r\n\u003c/p\u003e\r\n\r\n\u003chr\u003e\r\n\r\n\u003c!-- Contributing --\u003e\r\n\u003ch2 id=\"Contributing\"\u003e Contributing \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n\r\nSee [the contributing guide](CONTRIBUTING.md) for detailed instructions on how to get started with our project.\r\n\r\nIf you're looking for a way to contribute, you can scan through our [existing issues](https://github.com/Haleshot/Image_Processing/issues) for something to work on. When ready, check out [Getting Started with Contributing](CONTRIBUTING.md) for detailed instructions.\r\n\r\nClick on these badges to see how you might be able to help:\r\n\r\n\u003cdiv align=\"center\" markdown=\"1\"\u003e\r\n\r\n[![GitHub repo Issues](https://img.shields.io/github/issues/Haleshot/Image_Processing?style=flat\u0026logo=github\u0026logoColor=red\u0026label=Issues)](https://github.com/Haleshot/Image_Processing/issues) [![GitHub repo PRs](https://img.shields.io/github/issues-pr/Haleshot/Image_Processing?style=flat\u0026logo=github\u0026logoColor=orange\u0026label=PRs)](https://github.com/Haleshot/Image_Processing/pulls) [![GitHub repo Merged PRs](https://img.shields.io/github/issues-search/Haleshot/Image_Processing?style=flat\u0026logo=github\u0026logoColor=green\u0026label=Merged%20PRs\u0026query=is%3Amerged)](https://github.com/Haleshot/Image_Processing/pulls?q=is%3Apr+is%3Amerged)\r\n\r\n\u003c/div\u003e\r\n\r\nSimple terms:\r\n\r\n1. `Fork` this repository\r\n2. Create a `branch`\r\n3. `Commit` your changes\r\n4. `Push` your `commits` to the `branch`\r\n5. Submit a `pull request`\r\n\r\n\u003c/p\u003e\r\n\u003chr\u003e\r\n\r\n\u003c!-- To Do --\u003e\r\n\u003ch2 id=\"ToDo\"\u003e To Do \u003c/h2\u003e\r\n\r\n\u003cp align=\"justify\"\u003e\r\n\r\n- [ ] Refine UI more, add Video processing and Erosion/Dilation features (Feature Request).\r\n- [ ] Improve Documentation, refine Sphinx structure and docs.\r\n- [ ] Add [Dep Tree visualization](https://dep-tree-explorer.vercel.app/)\r\n- [ ] Try creating a Release if possible, explore PyQt5 .exe format export.\r\n\r\n### In Progress\r\n\r\n- [ ] Showing user, which file to run as main file - portraying user flow.\r\n- [ ] Update documentation and make it relevant to sphinx comment format.\r\n- [ ] Show directory structure of the project.\r\n\r\n### Done ✓\r\n\r\n- [x] Add exceptions to prevent program from crashing when user opens window to select input image but clicks on the close button of the window; same with Save as button.\r\n- [x] Add Facial Feature Detection Button.\r\n- [x] Add a Video demo in the form of Gif Link for viewers to easily see the working.\r\n- [x] Adding Save as button\r\n- [x] Improve README guides, contributing guides, etc.\r\n\r\n\u003c/p\u003e\r\n\u003chr\u003e\r\n\r\n\u003c!-- Video Demo --\u003e\r\n\u003ch2 id=\"Video Demos\"\u003e Video Demos \u003c/h2\u003e\r\n\r\n\u003c!-- \r\n\u003cp align=\"center\"\u003e \u003cimg src=\"https://media.tenor.com/hB9OTbewrikAAAAi/work-work-in-progress.gif\" width=\"200\" height=\"300\" /\u003e \u003c/p\u003e --\u003e\r\n\r\nThe entire project demo can be seen here - https://youtu.be/O-x44AT6ylU\r\n\r\n\u003cli\u003e\u003ca href=\"##Down Sampling\"\u003e Down Sampling \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Up Sampling\"\u003e Up Sampling \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Negative of an Image\"\u003e Negative of an Image \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Thresholding With Background\"\u003e Thresholding With Background \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Thresholding Without Background\"\u003e Thresholding Without Background \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Blurring\"\u003e Blurring \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Low Pass Filtering (LPF)\"\u003e Low Pass Filtering (LPF) \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Gaussian Noise\"\u003e Gaussian Noise \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Facial Feature Detection\"\u003e Facial Feature Detection \u003c/a\u003e\u003c/li\u003e\r\n\u003cli\u003e\u003ca href=\"##Laplacian Edge Detection\"\u003e Laplacian Filter \u003c/a\u003e\u003c/li\u003e\r\n\r\n\u003ch3 id=\"#Down Sampling\"\u003e Down Sampling \u003c/h3\u003e\r\n\r\n![Down_Sampling_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/382ed130-5229-4f8b-8df5-1a02af4e71ed)\r\n\r\n\u003ch3 id=\"#Up Sampling\"\u003e Up Sampling \u003c/h3\u003e\r\n\r\n![Up_Sampling_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/00875f15-96bf-4644-a8f9-ead2a79441b5)\r\n\r\n\u003ch3 id=\"#Negative of an Image\"\u003e Negative of an Image \u003c/h3\u003e\r\n\r\n![Negative_Image_Sampling_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/5646e806-2f16-4db0-b39b-e2035c4d8292)\r\n\r\n\u003ch3 id=\"#Thresholding With Background\"\u003e Thresholding With Background \u003c/h3\u003e\r\n\r\n![Thresholding_With_Background_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/d1acc2cc-148c-4815-872c-8563376e395f)\r\n\r\n\u003ch3 id=\"#Thresholding Without Background\"\u003e Thresholding Without Background \u003c/h3\u003e\r\n\r\n![Thresholding_Without_Background_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/f6c14cf6-ca6a-47e4-85c0-884db070a56e)\r\n\r\n\u003ch3 id=\"#Blurring\"\u003e Blurring \u003c/h3\u003e\r\n\r\n![Blurring_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/6040b8f9-efa2-47a8-8563-594603b1e9f6)\r\n\r\n\u003ch3 id=\"#Low Pass Filtering (LPF)\"\u003e Low Pass Filtering (LPF) \u003c/h3\u003e\r\n\r\n![LPF_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/a78b0123-a14a-4353-8585-077001bde157)\r\n\r\n\u003ch3 id=\"#Gaussian Noise\"\u003e Gaussian Noise \u003c/h3\u003e\r\n\r\n![Gaussian_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/c0284caf-6092-4182-a36a-e92d20832bf7)\r\n\r\n\u003ch3 id=\"#Facial Feature Detection\"\u003e Facial Feature Detection \u003c/h3\u003e\r\n\r\n![Facial_Feature_Detection_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/1eb2dfcd-7310-45d3-a4af-141575447767)\r\n\r\n\u003ch3 id=\"#Laplacian Edge Detection\"\u003e Laplacian Edge Detection \u003c/h3\u003e\r\n\r\n![Laplace_Edge_Detection_Demo](https://github.com/Haleshot/Image_Processing/assets/57552973/eed16965-d6d1-4760-b51f-64b9231d17f9)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaleshot%2Fimage_processing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaleshot%2Fimage_processing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaleshot%2Fimage_processing/lists"}