顯示具有 #1092hw2 標籤的文章。 顯示所有文章
顯示具有 #1092hw2 標籤的文章。 顯示所有文章

2021年3月28日 星期日

s1041470 影像處理作業 2

 

作業說明:

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式


開發環境:

  • Windows 10
  • Spyder
  • Python 3.8.5
  • OpenCV 4.4.0


實作:

  1. 以灰階讀取圖片(圖1)
  2. 利用Sobel對x、y方向過濾找出邊緣
  3. 再利用convertScaleAbs將圖像轉回uint8
  4. 最後利用addWeighted來合併x,y,得到圖像(圖2)
  5. 再將255-原值來達成反白的效果(圖3)

執行結果:


圖1:

圖2:
圖3:





2021年3月26日 星期五

s1061420 影像處理作業 2


作業說明:

撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像 (.bmp 或 .jpg 圖像格式都可如 全彩圖像可先將圖片由 RGB 轉換至灰階影像利用 Sobel Operators 圖像邊緣為基礎,設計一個類似素描線條自畫像程式。


開發環境:

l   Windows 10

l   Visual Studio 2019

l   Python 3.8

l   OpenCV 4.5.1


程式說明:

1.      讀取圖片並轉換成灰階圖片

2.      使用Sobel Operator 分別得到 x 方向及 y 方向的圖

3.      使用 convertScaleAbs 轉換為 uint8 格式

4.      使用 addWeighted 分別以0.5的權重合併x、y方向的圖

5.      將圖片反白

6.      將每個pixel 的值透過 f(x) = x * 41 / 51 + 50 轉換,深黑色的部分會變得更淺,使得整體的線條看起來更有鉛筆的感覺


輸出結果:


原圖

 X方向 Sobel operator轉換


Y方向 Sobel operator轉換







X、Y方向圖片合併








                    反白






        透過函式轉換



修飾使其更像素描







圖片來源:

https://forum.gamer.com.tw/C.php?bsn=7650&snA=1013445

2021年3月25日 星期四

s1071545 影像處理作業 2

主題 : 線條自畫像

題目:

    撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成 線條方式呈現更佳!)

開發環境:

    Window 10

     Anaconda

     VScode

     Python

運行說明:

    開始執行後輸入圖片的絕對位置,由於路徑可能有中文的情況,所以使用 cv2.imdecode 來讀取彩色圖片,接著使用 cv2.cvtColor 來將彩色圖片轉換為灰階圖片(第一個參數為要改變的圖片;第二是轉變的方式,而彩色轉灰階使用的是 cv2.COLOR_BGR2GRAY)。接著使用 Sobel 函數分別對X、Y方向來計算梯度,再將計算完的結果利用 cv2.bitwise_or 進行合併(參數為合併的兩個圖片,此函數為圖片的 OR)。最後使用 255 減去每一個像素之數值來達到反白的效果。

執行畫面:

原圖:


轉換為灰階後:


計算X方向梯度:


計算Y方向梯度:


X、Y梯度合併:


合併後反白:


2021年3月24日 星期三

s1071540 影像處理作業2

一、作業說明

主題: 線條自畫像 (二值化與邊緣偵測應用 Extension of Thresholding and Edge Detection) ,撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成 線條方式呈現更佳!)

二、作業環境&語言

Windows 10 + Visual Studio 2017 + OpenCV4.1.2 (Debug x64)

C++

三、方法&步驟

1.       imread讀取圖片

2.       圖片轉成灰階

3.       用Sobel分別處理x軸和y軸,生成兩種照片

4.       設兩張照片的權重一樣,再加在一起

5.       反白(255-像素值)

6.        二值化(像素值220以下為黑色,220以上設白色)

6.       imwrite另存新檔

 

五、執行結果

輸入畫面: 
 
1.原圖:

2.邊緣偵測:
       

3.結果(反白&二值化):