發表文章

目前顯示的是有「112hw2」標籤的文章

s1083317 作業2

圖片
一、題目 : 線條自畫像 ( 二值化與邊緣偵測 Image Thresholding and Edge Detection) 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)   (a) 利用 Sobel Operators 偵測並輸出邊緣成分圖   (b) 設計一個類似素描線條的自畫像圖案。 ( 想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條 ?) 二、環境 : Windows 10 Visual Studio 2019( 語言 python) OpenCV 4.5.5.62 三、結果圖片 : (a) (b) 四、程式碼片段解釋  : 讀取圖片並灰階化 先做平滑處理再進行 sobel operation 比較過後我自己認為高斯平滑效果好於中值模糊處理 此即為 a 小題答案 而 b 小題答案是利用 threshold 將大於 threshold 的像素變白   反之 之後再用 not 反白就完成 b 小題了

s1093705 作業二

圖片
線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection) 題目說明: 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)      (a)利用Sobel Operators 偵測並輸出邊緣成分圖      (b)設計一個類似素描線條的自畫像圖案。 開發環境: Windows 11  Visual Studio Code Python 3.11.2  Opencv 4.7.0 實作結果: Sobel Operators 偵測邊緣圖 邊緣圖轉換成素描風格圖 不同技術轉換成出的素描風格圖 實作Demo: 程式說明: 本題利用 cv2.createTrackbar() 和 cv2.getTrackbarPos() 來控制以下變數,來尋找邊緣偵測的最佳參數: A:  用  cv2.threadhold() , 將圖形顏色較淡的地方,去除小於A 的值,A 以上的值維持不變。 B:用高斯分佈進行模糊化的計算,指定模糊區域單位 BxB。 C:用  cv2.threadhold()  ,去除小於 C 的值,C 以上的值維持不變,以達到 加強邊緣線的效果。 D: (a)利用Sobel Operators 偵測並輸出邊緣成分圖 1. 先將圖形顏色較淡的地方,用  cv2.threadhold() 去除,此例是去除小於A 的值,A 以上的值維持不變, 參數介紹: ( Reference ) v2.THRESH_BINARY 如果大於 A 就等於 255,反之等於 0。 cv2.THRESH_BINARY_INV 如果大於 A 就等於 0,反之等於 255。 cv2.THRESH_TRUNC 如果大於 A 就等於 127,反之數值不變。 cv2.THRESH_TOZERO 如果大於 A 數值不變,反之數值等於 0。 cv2.THRESH_TOZERO_INV 如果大於 A 等於 0,反之數值不變。     ret , image = cv2 . threshold ( image , A , 255, cv2 . THRESH...

s1093302 作業二

圖片
主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection)  撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)  (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。 開發環境: Windows10, Spyder, opencv 4.5.4, Python3.8 功能:先使用imread讀取圖片,跟上次不同的是在後面加入係數0,這樣就能得到灰階圖片 圖片(一)灰階圖片 接著,我們 可以用sobel opreater將圖片進行處理,分別取出X和Y方向的輪廓後接著使用 convertScaleAbs對擷取結果做絕對值,然後再用addWeighted將x方向和y方向的輪廓相加後得到灰階形式的邊緣成分圖   圖片(二) 邊緣成分圖 接著要取得類似素描線條的圖像的話,最直白的方法就是將 邊緣成分圖中黑白的部分顛倒後去除雜質干擾就行了       圖片(三) 類似素描線條的圖案

s1091521 作業二

圖片
  開發環境 : Windows 11 + Python 3.9.10 in VS code + OpenCV-Python 4.6.0 使用套件 : OpenCV

s1091404 作業2

圖片
主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection)  撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)  (a)利用 Sobel Operators 偵測並輸出邊緣成分圖  (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?) 開發環境: Windows10, visual studio 2019, opencv 4.5.4, c++ 功能說明: 先用imread()將原圖以灰階形式讀取,接著再使用Sobel分別擷取x方向和y方向的輪廓 可藉由調整內核大小(通常使用3, 5, 7)和圖片格式(CV_8U, CV_16S等)來改善邊緣擷取的精確度 convertScaleAbs對擷取結果做絕對值,然後再用addWeighted將x方向和y方向的輪廓相加後得到灰階形式的邊緣成分圖 得到邊緣成分圖後為了得到仿素描筆畫出的線條,將對邊緣圖再做進一步處理。由於想過濾到太過精細的邊緣線條,因此使用threshold將邊緣圖二值化,為了不要失去太多主要的輪廓線條所以將閾值設為80。 最後用bitwise_not讓二值圖黑白反轉,營造出仿素描的線條結果圖

s1091403 作業2

圖片
主題 : 線條自畫像 ( 二值化與邊緣偵測 Image Thresholding and Edge Detection) 作業說明 : 以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) , 1.          利用 Sobel Operators 偵測並輸出邊緣成分圖 2.          設計一個類似素描線條的自畫像圖案   開發環境 : Windows10         Anaconda 3(22.9.0)         Spyder 5.4.1 Python 3.9 Opencv(4.7.0) 程式片段 ( 程式碼截圖在 readme 中 ): 使用 cv2.imread(file,cv2. cv2.IMREAD_GRAYSCALE) 輸入灰階照片,其中 cv2.IMREAD_GRAYSCALE 能直接把照片轉換成灰階。在設定對應的函式回傳的圖片與顯示的視窗,顯示之後按任意鍵會消失。 首先是 Sobel Operators 的部分,會先使用 cv2.morphologyEx() 這個形態學函式進行開運算處理 (cv2.MORPH_OPEN) ,先侵蝕再膨脹,去除雜訊 (kernel=(3,3)) ,再使用 Sobel 函數獲得經過 Sobel Operator 處裡的結果 (output) ,函式中第一個參數為要進行運算的圖片,第二個為圖片深度 (-1 表示使用與原圖相同的深度,目標圖片的深度必須大於等於原圖的深度 ) ,第三個以及第四個參數則是分別針對 x 軸與 y 軸抓取邊緣,第五第六則分別是運算區域大小與縮放比例常數,兩個都必須要是正奇數。再來則是利用 cv2.threshold() 進行二值化獲得目標圖片 (output) ,其中如果大於 127 就等於 255 ,小於 127 則等於 0(cv2.THRESH_BINARY) ...

s1081410 作業二

圖片
 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)  (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。 a: 先轉灰階 使用laplacian  接著取出X Y的Sobel偵測(這邊都是64bit) 接著轉回8bit(sobelx = np.uint8(np.absolute(sobelx))) 最後做結合(使用bitwise_or()) b: 先轉灰階 使用反白(bitwise_not) 使用高斯模糊調整 最後使用divide進行顏色減淡的效果 達成素描感(此圖高斯模糊使用size(15,15) ,50 ,50) 我調整參數後覺得比較好看的

s1091455 作業2

圖片
    題目說明:           撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)                (a)利用Sobel Operators 偵測並輸出邊緣成分圖                (b)設計一個類似素描線條的自畫像圖案。     開發環境:          environment        : Ubuntu-22.04          language                :C++ ( Visual Studio Code )          date                         :2023/03/18          package                 :OpenCV - 4.7.0         excute command :              g++ Assignment2.cpp `pkg-config --libs opencv4` `pkg-config --cflags opencv4` && ./a.out   ...

s1091506 作業2

圖片
 題目說明: 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)  (a)利用 Sobel Operators 偵測並輸出邊緣成分圖  (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?) 開發環境: Window 11 + Python 3.10 + OpenCV 4.7.0 執行結果: 程式介紹: 用高斯濾波將圖片模糊化,可使結果得到較清晰的輪廓 用Sobel提取輪廓 將圖片做二值化->圖1 將圖片黑白翻轉->圖2 最後將圖1和圖2疊加可得結果

1083504 作業2

圖片
主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection) 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?) 開發環境 OS: Windows 11 Editor: Visual Studio 2022 Language: C++ Package: OpenCV - 4.7.0 程式說明 (a)利用Sobel Operators 偵測並輸出邊緣成分圖 1.用兩次Sobel()分別計算x和y方向梯度 2.convertScaleAbs()分別計算圖像x方向、y方向梯度的絕對值 3.addWeighted()將x和y合併 (b)設計一個類似素描線條的自畫像圖案 1.cvtColor()轉為灰階影像 2.~取反運算 3.GaussianBlur()高斯模糊 4.顏色減淡合併 程式執行結果 (a)利用Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案