2019年3月31日 星期日

s1051430作業2

開發環境
    Windows 10 + Visual Studio 2017 + OpenCV 3.4.5

實作方法
    讀入圖片後,使用cvtColor()將圖片的色彩空間由RGB轉換為YCrCb
    使用split()將圖片拆成Y, Cr, Cb三個channel
    接著對Y channel中的每個像素使用sobel operator分別算出Gx及Gy
    各取絕對值後,將兩者相加(取近似值|Gx|+|Gy|)
    使用merge()將處理完成的Y channel和Cr channel, Cb channel結合
    再轉回RGB色彩空間

成果展示
    Gx
    

    Gy


    output in Y channel



    output in RGB(與原圖相比有些失真)

s1051418 作業2


一、作業要求:

邊緣偵測與製作線條自畫像 Edge Detection Contour Drawing
撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp .jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 RGB 轉換至HIS YUV, YCbCr 等色彩空間,只需對亮度 Channel IY處理,再轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成線條方式呈現更佳!)

二、使用環境/語言:
  • Windows10
  • Visual Studio 2015
  • Opencv-3.4.1
  • C++
三、特殊程式片段註解:
  • Sobel():分別對影像進行水平及垂直的運算,並得到X軸和Y軸的一階梯度
  • GaussianBlur():對圖片模糊處理,以減少雜訊
  • convertScaleAbs():將圖片轉成CV_8U
  • addWeighted():X軸和Y軸的圖片分配權重,結合在一起
  • threshold():將結合好的圖片,進行二值化
四、執行方式/畫面:


<原圖、Sobel()GaussianBlur()處理後的圖、二值化處理後的圖>

五、參考資料:
  • http://monkeycoding.com/?p=600
  • http://monkeycoding.com/?p=632


1051514 作業2

一、實作方法:

撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。

二、環境設置:
  • Windows 10 
  • Visual Studio 2017 
  • OpenCV 3.0.0
    

三、執行方式:
1. 用GaussianBlur()將圖片進行平滑化
2. 用Sobel()偵測圖像
3. 用convertScaleAbs()轉成CV_8U
4. 用addWeighted()結合垂直和水平
5. 用imwrite()存取完成後的圖片


四、執行畫面:



1051545作業2

一、實作方法:

撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!) 

二、實作環境:
    1. windows 10
    2. pyCharm
    3. opencv 3.4.5
    4. ptthon 3.7
    

三、執行方式:
1.利用GaussianBlur()去除雜訊
2.利用cvtColor()將圖片轉成彩色和灰階化
3.利用Sobel()來處理圖片的x軸跟y軸
4.利用convertScaleAbs()轉成uint8形式,
5.利用addWeighted()混合垂直和水平在一張圖片
6.利用imwrite()存儲最後完成的圖片



四、執行畫面:



執行結果


存儲完成的圖片



1051420 作業2

題目:

撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!) 

實作平台:

Visual Studio 2015 + OpenCV 3.4 +win 10

使用方法:

sobel()來處理圖像的x軸跟y軸
cvtColor()將圖片轉為灰階
convertScaleAbs()來計算圖的像素,然後轉成8位元圖
GaussianBlur()來去除影像雜質
(左為原圖,右為修改後的圖)


1053348作業2

一.作業題目:
撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)
二.作業環境:
  • Windows 10 
  • Visual Studio 2017 
  • OpenCV 3.0.0
三.實作方式
1.利用GaussianBlur()去除雜訊
2.利用cvtColor()將圖片轉成灰階化
3.再來利用Sobel(),用來對X和Y軸進行處理
4.最後利用convertScaleAbs()轉成CV_16S,和addWeighted()進行混合
5.利用imwrite()存儲最後完成的檔案
四.成果

1051435的作業2

主題:

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

實作環境:

Windows 10 +Visual Studio 2017 + OpenCV 3.4

使用函式:

GaussianBlur();---去除雜訊
Sobel();---用來對x和y軸進行處理
convertScaleAbs();---轉成CV_8U
cvtColor();---將圖片轉成灰階

實行結果:

原圖


處理後

1051527作業二

一、作業題目:

撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!) 

、執行環境:

windows 10  ,  opencv-4.0  ,  Spyder(Python-3.7)。

、程式撰寫:

一開始先請你輸入要開啟的檔名,若檔名錯誤會叫你重新輸入,檔名對了就用imread開啟圖檔(使用方法為在此資料夾找符合的檔案),之後使用Sobel()函數得到x和y(即是垂直和水平)的一階梯度,在來使用convertScaleAbs()函數將其轉回原來的uint8形式,再來使用addWeighted()把垂直和水平的合在一張圖上,就為我們要的素描圖,再利用imwrite()存成一個output.jpg檔。

四、程式展現:

(一)
輸入錯誤:








輸入正確則跑出圖檔:












(二)
輸出素描檔:

















(三)
存成output.jpg:



s1051451 作業2

作業簡介:
撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

使用環境:
visual studio 2015、opencv 3.4、windows 10

實驗內容;
使用sobel()函式分別對影像進行水平和垂直模板的運算,得到像素的梯度。

Gx用來檢測垂直邊緣,Gy用來檢查水平邊緣。
先把彩色圖片轉換成灰階,再用convertScaleAbs()函數將其轉回原來的uint8形式。最後還需要用addWeighted()函數將其組合起來。

 執行結果:



1051436的作業2

簡介:撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

使用環境:
visual studio 2017
opencv 3.4
windows 10

使用函式:
GaussianBlur():利用高斯平滑達成去雜質的效果
Sobel():分別對影像的X軸、Y軸運算出像素梯度
convertScaleAbs():進行計算
addWeighted():將運算完的平行、垂直影像進行混和

結果:


存成新檔


2019年3月30日 星期六

s1043325 的作業 2

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或 .jpg 圖像格式都可),利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像可先將圖片由 RGB 轉換至 HIS 或 YUV、YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理﹐再轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成線條方式呈現更佳!)

環境與使用套件版本

  • Windows 10
  • Python 3.7.1
    • opencv-python 4.0.0.21
    • PyQt5 5.12 

實作方法 

  1. 使用 cv2.GaussianBlur() 將圖片模糊處理,以減少雜訊
  2. 使用 cv2.Sobel() 取得 x 軸與 y 軸的梯度
  3. 使用 cv2.convertScaleAbs() 將上面取得的梯度轉回 unit8
  4. 使用 cv2.addWeighted() 將 x, y 兩個維度的圖片分配權重,並組合再一起

使用方法

Step1. 運行程式

 

Step2. 點擊 Load 按鈕,選擇想要的圖片

Step3. 修改後的圖像會顯示在右側

 

Step4. 點擊 Save 按鈕,自由選擇欲存放的檔案路徑與檔名

原圖
輸出

s1053312的作業2

題目:
撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

使用環境:visual studio 2017
opencv 3.4
windows 10

實作方法:
1.使用Sobel()分別對影像的X軸、Y軸運算出梯度
2.使用convertScaleAbs()計算
3.運用addWeighted()合併水平、垂直影像

執行結果:


2019年3月29日 星期五

1051515 HW2

一、實作方法:

先將圖片讀近來後,再將此圖片透過cvtColor從RGB轉乘YCbCr,之後透過cv2.Sobel()的function來找邊緣(垂直與水平),但Sobel()可能會導致算完後出現超出8bit(0-255)的範圍,因此要另外做些處理,最後透過addWeighted來組合垂直邊緣與水平邊緣。

二、實作環境:

Windows 10、Python 3.7、Opencv 3.4

三、執行方式:

讓使用者可以輸入檔名(必須在project內)或是完整路徑,並且可以選擇灰階或是彩色,進而得到手邊照片的邊緣線條,並且以自己想要的檔名來儲存結果。

四、執行畫面:


(1)輸入檔名、彩色或是灰階



 
(2)得到該圖之邊緣圖以及偵測到的點



(3)將圖片關掉
(4)輸入檔名以儲存此圖
(5)檔案儲存在專案資料夾

*如果輸入之檔名並未在專案內或是非完整路徑則重新輸入






1051428的作業2

主題: 邊緣偵測與製作線條自畫像 Edge Detection and Contour Drawing 
 撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!) 


實作環境
Windows 10 +Visual Studio 2017 + OpenCV 3.4

使用的函式:
GaussianBlur();//用來去除雜訊
Sobel();用來對x和y軸進行處理得到一階梯度
convertScaleAbs();//圖像增強的快速運算

實行結果:




















原圖





















處理後的結果













處理完後儲存










s1041441 的作業2


實作環境
Visual Studio 2017 + OpenCV 3.4

實作方法
1. 上網查了Sobel() 的使用方式,對圖片做邊緣檢測

2. 使用convertScaleAbs()轉成CV_8U ,不然會有問題

結果如下圖:


原圖























輸出圖