2022年3月24日 星期四

s1081416 作業3

 作業說明


撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)

(a)利用 Sobel Operators 偵測並輸出邊緣成分圖

(b)設計一個類似素描線條的自畫像圖案


開發環境


Windows10


Vscode


Opencv 4.5.5


Python 3.10.2



實作方法


邊緣成分圖


先用IMREAD_GRAYSCALE讀取需要的灰階圖片,再利用Sobal讀取x,y軸的方向梯度,最後再用 addweighted函數依等比例相加x,y的方向,完成邊緣成分圖




類似素描線條的自畫像圖案


先利用 GaussianBlur 取得雜訊,再用 addWeighted以5:-4的比例將圖片銳利化,最後使用threshold將圖片進行二值化。




s1081535 作業3

  

一、 作業說明 

線條自畫像 (二值化與邊緣偵測

以灰階模式讀取一張圖像利用 Sobel Operators 偵測並輸出邊緣成分圖,並設計一個類似素描線條的自畫像圖案。

 作業環境

  • MacOS Monterey 12.2
  • PyCharm 2019.3.3
  • Python 3.8
  • OpenCV 4.5.5

 實作功能與方法

減少雜訊和平滑圖像

使用GaussianBlur('圖像名稱', Filter_Size, 0)高斯綠波函式將圖片進行濾波操作(平滑、過濾以及去噪);Filter_Size為3x3。

邊緣偵測

以Sobel Operator索伯算子,分別以水平及垂方向取值,計算出邊緣像素。取值方式為以該Pixel為中心點,九宮格範圍內之其餘八個Pixel值做運算取得其Pixel值。

  • 垂直取法是把九宮格內的每個Pixel乘上相對應的九宮格Vertical Sobel Mask後加總成為該Pixel的新值,以算出垂直梯度Gx的邊緣偵測。
  • 水平取法是把九宮格內的每個pixel乘上相對應的九宮Horizontal Sobel Mask後加總成為該Pixel的新值,以算出水平梯度Gy的邊緣偵測。

使用cv2.Sobel('圖像名稱', 圖像深度, dx, dy, Filter_Size),計算出X(垂直)與Y(水平)方向的梯度大小。

合併特徵圖

利用addWeighted()合併X和Y方向的梯度計算結果圖,得到輸出邊緣成分圖

顏色反轉

邊緣偵測所得到的點,進行顏色反轉。讀取每個圖元值P,再將255-P寫入新的空白陣列中,得到顏色反轉圖。

影像二值化

設定cv2.threshold('圖片名稱', Thresh_Value, Maxval_Value, 處理方法),讓線條明顯呈現以達成類似素描效果。

Canny邊緣偵測

使用cv2.canny('圖片名稱', minVal, MaxVal)。Canny演算法是一個複合性的邊緣偵測演算法,結合了Gaussian Filter梯度偵測、非最大值抑制、判斷邊界四個演算法去實踐邊緣偵測。

四、 執行結果

原圖

Sobel_X


Sobel_Y

Sobel_XY(使用addWeight()疊加)


Sobel_XY(使用Sobel()函式

顏色反轉

影像二值化(使用Binary Type)


影像二值化(使用Tozero Type)





Canny邊緣偵測

Canny邊緣偵測+顏色反轉





s1073353 作業3

作業說明

以灰階模式讀取一張圖像,用Sobel Operators偵測並輸出邊緣成分圖以及負片後的類素描圖。

開發環境

  • Windows 10
  • Visual Studio 2019
  • OpenCV 4.5.5

程式說明

  1. imread讀取灰階圖片
  2. 用Soble分別對X方向和Y方向做處理
  3. X和Y的結果加總即是邊緣
  4. 將邊緣做負片就是素描效果的圖
  5. imshow秀出圖片

執行結果


 

s1081509 作業 3

 作業說明:

        撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。

環境:

Ubuntu-20.04

Vim 8.2

CMake 3.16.3

OpenCV  4.2.0

程式功能:

1.      imread()讀圖片

2.      高斯模糊去噪

3.      Sobel operator取得grad_x, grad_y,convertScaleAbs x and y,再用addWeighted合成

4 .     THRESH_BINARY_INV做二值化,再做一次高斯模糊

5.       Imshow、imwrite展示、儲存圖片


使用指令:

make ; ./hw3 picture_name.jpg






s1081411 作業3

作業說明:

線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection)
以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 
(a)利用 Sobel Operators 偵測並輸出邊緣成分圖 
(b)設計一個類似素描線條的自畫像圖案。

開發環境:

·     Windows 10

·     Visual Studio 2019

·     OpenCV 4.5.5

·     C++

實作方法:

以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) ,對灰階圖片座高斯模糊,減少雜訊,利用 Sobel Operators 對x方向,y方向處理,再將兩張圖用addweighted合併,255減去灰階值將黑白反轉,最後用threshold二值化。






s1071408 作業3

作業說明

撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 
(a)利用 Sobel Operators 偵測並輸出邊緣成分圖 
(b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?

作業環境

Windows 10 、Google Colab 、Python

實作方式

(a)

1. 讀取圖片

2. 圖片轉為灰階

3. sobel function進行邊緣偵測

(b)

1. 對img_sobel inverse

2. 對img_gray做高斯blur

3. 對img_gray和img_blur做divide

結果


(a) 原圖

(b) 灰階
(c) Sobel
        

(d) Sobel inverse
(e) 高斯blur + gray 做 divide




s1073306 作業3

 作業說明:

撰寫一個程式,以灰階模式讀取一張圖像imread(path,IMREAD_GRAYSCALE)
(a)利用Sobel Operators 偵測並輸出邊緣成分圖
(b)設計一個類似素描顯條的自畫像圖案。(想想:如何利用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?)

開發環境:

windows 10
visual studio 2017
c++
opencv-4.5.5

實作方法:

  1. 先用imread讀取圖像並轉成灰階
  2. 用Sobel讀取x跟y軸的方向梯度
  3. 用addweighted合併成邊緣成分圖
  4. 之後用2個for迴圈把圖像黑白顏色交換
  5. 最後用threshold將圖像二值化

執行結果



s1083343 作業3

             一、作業說明

                        撰寫一個程式,以灰階模式讀取一張圖像imread(path, IMREAD_GRAYSCALE)

A.           利用Sobel Operators 偵測並輸出邊緣成分圖。

B.           設計一個類似素描線條的自畫像圖案。


二 開發環境:

            Windows10

            Vscode

            Python3.9.6

            Opencv-Python_4.5.5.62

            三、實作方法

        1.     邊緣成分圖

                         i.           imread 函數、IMREAD_GRAYSCALE參數讀取灰階圖片。

                        ii.           Sobel 函數分別讀取xy軸方向梯度

                      iii.           addWeighted 函數以等比例相加xy方向,以變成邊緣成分圖。

        2.     類似素描線條的自畫像圖案

                         i.           GaussianBlur 函數取得雜訊。

                        ii.           addWeighted 函數以5:-4的比例將圖片銳利化。

                       iii.           threshold 函數將圖片二值化。

               四執行結果

(a)                                                                          (b)