{"id":18000234,"url":"https://github.com/wenszel/agh-digital-image-processing","last_synced_at":"2026-04-18T12:03:24.403Z","repository":{"id":257843119,"uuid":"868232853","full_name":"Wenszel/agh-digital-image-processing","owner":"Wenszel","description":"[V Semester] Notebooks from a course on image processing using the OpenCV library","archived":false,"fork":false,"pushed_at":"2025-01-26T21:52:00.000Z","size":26173,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T07:44:08.996Z","etag":null,"topics":["image-processing","opencv"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Wenszel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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":"2024-10-05T20:25:03.000Z","updated_at":"2025-01-26T21:52:03.000Z","dependencies_parsed_at":"2024-11-11T21:24:19.178Z","dependency_job_id":"ef163cb8-3bdc-4b16-8548-9e9c368a2e87","html_url":"https://github.com/Wenszel/agh-digital-image-processing","commit_stats":null,"previous_names":["wenszel/agh-computer-graphics-programming"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Wenszel/agh-digital-image-processing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wenszel%2Fagh-digital-image-processing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wenszel%2Fagh-digital-image-processing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wenszel%2Fagh-digital-image-processing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wenszel%2Fagh-digital-image-processing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wenszel","download_url":"https://codeload.github.com/Wenszel/agh-digital-image-processing/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wenszel%2Fagh-digital-image-processing/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269915595,"owners_count":24495742,"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","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["image-processing","opencv"],"created_at":"2024-10-29T23:10:46.327Z","updated_at":"2026-04-18T12:03:24.332Z","avatar_url":"https://github.com/Wenszel.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e Digital Image Processing - AGH Course 2024/2025 \u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/readme-images/mandril.png\" /\u003e\n\u003c/p\u003e\n\n## Lab 1 - Intro to OpenCV\nBasic operations on images: reading, displaying with different color models \n\u003c/br\u003e \n\n[Notebook](01_intro.ipynb)\n\n## Lab 2 - Pixel-wise operations\n- LUT operations - look-up table is a table that maps each pixel value to a new value \n- Logical operations on images \n- Arithmetic operations on images \n\u003c/br\u003e \n\nThis image shows the result of adding two images together:\n\n![SumExample](/readme-images/sum-example.png)\n\n[Notebook](02_point.ipynb)\n\n## Lab 3 - Histogram\n- Normalization  - method to scale the pixel values to the full possible range (0-255)\n- Histogram equalization - method to improve the contrast of an image by stretching the histogram to fill the entire intensity range\n- CLAHE - a variant of histogram equalization that limits the contrast amplification in the local areas of the image. In other words, it enhances the contrast without making noise or small details too bright in certain areas\n\u003c/br\u003e \n\nThis image shows the result of applying histogram equalization on an image to improve the contrast:\n![HistogramExample](/readme-images/equalization-example.png)\n\n[Notebook](03_histogram.ipynb)\n\n## Lab 4 - Threadsholding\nThresholding is a method to segment an image into two parts: the foreground and the background. The threshold value is a value that separates the two parts.\n\n- Based on a histogram - algorithm found the best threshold value based on the shape of the histogram\n- Otsu - is a method that automatically determines the best threshold value to separate an image into two classes: foreground and background. In other words, it finds the value that minimizes the combined variance of these two classes, making the image as distinct as possible between the two regions.\n- Adaptive - method that calculates the threshold value for each pixel based on the local neighborhood of the pixel\n\u003c/br\u003e \n\nThis image shows the result of applying thresholding on an image to segment the foreground and background:\n\n![ThresholdingExample](/readme-images/thresholding-example.png)\n\n[Notebook](04_thresholding.ipynb)\n\n## Lab 5 - Image interpolation, Resolution\nInterpolation is a method to increase the resolution of an image by adding new pixels, between the existing ones.\nExamples of interpolation methods:\n- Nearest neighbour - assigns the value of the nearest pixel to the new pixel\n- Bilinear - method that calculates the value of the new pixel based on the weighted average of the four nearest pixels\n- Bicubic - method that calculates the value of the new pixel based on the weighted average of the sixteen nearest pixels\n\u003c/br\u003e\n\nThis graph shows the difference between images saved at 5, 4, 3, 2, and 1 bits per pixel, demonstrating that the human eye can't distinguish between 8-bit and 5-bit images.\n![ResolutionExample](/readme-images/resolution-example.png)\n\n[Notebook](05_resolution.ipynb)\n\n## Lab 6 - Image filtering\nImage filtering is used to remove noise, blur the image, or detect edges. It is done by applying a convolution operation on the image with a kernel. The kernel is a small matrix that is applied to each pixel of the image. \nExamples of filters:\n- Low-pass filters: gaussian, median, averaging\n- High-pass filters: laplacian, sobel, prewitt, roberts\n\u003c/br\u003e\n\nThis image shows the result of applying a median filter on an image to remove noise:\n\n![MedianFilterExample](/readme-images/median-filter-example.png)\n\n[Notebook](06_context.ipynb)\n\n## Lab 7 - Mathematical morphology\nMathematical morphology is a method to process images based on the shape of the objects in the image. It is used to remove noise, detect edges, or segment objects in the image.\n- Erosion - method that shrinks the objects in the image by removing the pixels on the object's boundary\n- Dilation - method that expands the objects in the image by adding pixels to the object's boundary\n- Opening - method that removes small objects in the image by applying erosion followed by dilation\n- Closing - method that removes small holes in the objects in the image by applying dilation followed by erosion\n- Hit-or-miss - method that detects objects in the image based on the shape of the object\n- Morphological reconstruction - method that removes small objects in the image by applying dilation followed by erosion\n\u003c/br\u003e \n\nThis image shows the result of applying erosion and dilation on an image to remove noise:\n![Example](/readme-images/erosion-dilation-example.png)\n\n[Notebook](10_morphology.ipynb)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwenszel%2Fagh-digital-image-processing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwenszel%2Fagh-digital-image-processing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwenszel%2Fagh-digital-image-processing/lists"}