作業說明 :
撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成 線條方式呈現更佳!)
使用環境:
window10
python 3.9
numpy 1.18.5
opencv-python 4.4.0.46
方法:
1. 以灰階格式讀取圖片為img_gray
2. 將讀取的圖片img_gray copy一份存為 img_result
3. 建立sobel_x : -1 0 1 sobel_y : -1 -2 -1
-2 0 2 0 0 0
-1 0 1 1 2 1
sobel_x為測x方向的mask
sobel_y為測y方向的mask
4. img_gray除了邊緣pixel,每一個pixel都跟其鄰近的8個pixel一起與
sobel_x、sobel_y做convolution。
假設迴積後的2個值叫做 x和y,我們要的結果是 (x^2+y^2)^(1/2) = z。
給定一個threshold,如果z >= threshold,便在img_result其對應的
pixel填上0(即認定此pixel為邊緣),否則填上255。
5. 將結果存成圖片
執行結果:
原圖:
threshold = 25
threshold = 37
threshold = 50
threshold = 75
threshold = 100
沒有留言:
張貼留言