s1093334 Homework #2
22 Digital Image Processing Assignment #2 報告
學號:1093334 姓名:黃芊瑜
主題:邊緣偵測與圖像二值化
專案目標:
使用者輸入彩色圖片後可透過程式生成黑白輪廓線條圖案。
開發環境:
- 用的作業系統:Windows
- 開發環境:VScode
- 用的套件:OpenCV version 4.9.0
- 程式語言:Python 3.11.0
程式架構與功能說明:
此程式先在terminal讓使用者輸入欲處理的圖片檔名,輸入檔名後產生preview window,會顯示原始圖片和提供kernelSize、low_threshold、savefile三個trackbar讓使用者調整,更改trackbar的值後會跑出window顯示調整結果。
kernelSize trackbar
用來調整GaussianBlur的kernelSize參數值,數值越大,圖片會轉換得越模糊,可以讓output圖片的躁點降低,但也可能會讓照片的細節消失。
low_threshold
用來調整邊Canny的低閾值,如果計算結果比這個閾值高則會被偵測成邊緣。當low_threshold值較大時,偵測到的邊緣數量可能會減少,強度較低的邊緣可能會不見。
整個程式主要可以分成四個部分:
1.背景設定
4.adjust
Why GaussianBlur?
opencv提供幾種模糊圖片的方式。
- 平均模糊適合簡單的模糊處理
- 高斯模糊適合平滑圖像並保留一定細節 >>此模糊方式較符合題意
- 中值模糊適合去除隨機噪聲
- 雙邊模糊適合保留圖像細節的平滑處理
Why Canny?
- Laplacian 適用於整體邊緣檢測和特徵提取
- Sobel 適用於局部邊緣檢測並且可以指定不同方向
- Canny 是一個綜合性較強的邊緣檢測方法,適合精確和高質量的邊緣檢測需求 >>此方式較符合題意
數學式:
cv2.GaussianBlur(gray_img, (kernelSize, kernelSize), 0)
透過此函數將圖片進行模糊
• gray_img為欲模糊之圖片
• kernelSize為高斯模糊中的核大小,需為奇數,大小越大,模糊程度越高
• 第三個參數為高斯核的標準差。設為 0,表示根據核大小自動計算標準差
透過此函數將圖片進行模糊
• gray_img為欲模糊之圖片
• kernelSize為高斯模糊中的核大小,需為奇數,大小越大,模糊程度越高
• 第三個參數為高斯核的標準差。設為 0,表示根據核大小自動計算標準差
cv2.Canny(blurred_img, low_threshold, low_threshold*2)
透過此函數將圖片進行邊緣偵測
• blurred_img為欲邊緣偵測之圖片
• low_threshold為邊緣偵測的低閾值,如果計算結果比這個閾值高則會被偵測成邊緣
• low_threshold*2為邊緣偵測的高閾值,如果計算結果超過高閾值,則被視為強邊緣
留言
張貼留言