發表文章

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

s1093338 Homework #7

圖片
  1122 Digital Image Processing Assignment #7 學號:1093338      姓名:簡毓臻 主題: Image Segmentation and Object Detection 影像分割及物件偵測 專案目標:   偵測出附件2張視訊照片中的所有書桌的桌面區域。 標示出每張桌子的桌面的矩形邊界框(Bounding box) 標示出偵測到桌子的桌角 開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:OpenCV version: 4.9.0, numpy 程式語言:Python 3.12.0 程式架構與功能說明: 讀取及預處理圖片 將影像放入向量 轉成 hsv  進行顏色範圍檢測桌面,建立 mask 二值化:使用 Otsu 閥值法 計算邊緣密度,調整形態學合適的 kernal 形態學處理(閉操作) 先進行膨脹,再進行侵蝕。用來填補物體的間隙或小洞,尤其是在物體邊緣附近。 檢測及篩選輪廓 畫出凸點及方形 成果展示與討論:

s1093338 Homework #6

圖片
 1122 Digital Image Processing Assignment #6  學號:1093338      姓名:簡毓臻 主題:  Run-Length Based Image Compression 影像壓縮練習 專案目標:   計算圖片中大小木榫的數量。 開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:OpenCV, numpy 程式語言:Python 3.12.0 程式架構與功能說明: 讀取及預處理圖片 轉成灰階 二值化:可提高準確性 形態學處理 先侵蝕再膨脹以去除噪聲 高斯模糊去噪:平滑邊緣 用 霍夫變換 來偵測大小圓 確認偵測到的圓 結果 繪製偵測到的圓形 計算小圓和大圓的數量 在影像上顯示圓的數量 顯示偵測結果的圖 *二值化及形態學沒做也可以完成檢測。 成果展示與討論:

s1093338 Homework #5

圖片
 1122 Digital Image Processing Assignment #5 學號:1093338      姓名:簡毓臻 主題:  Run-Length Based Image Compression 影像壓縮練習 專案目標:   撰寫一個程式來基於Run-Length的 壓縮方法,對圖檔作無失真壓縮後儲存成新檔案,並計算三張圖的平均壓縮率(compression ratio)。 開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:numpy, PIL 程式語言:Python 3.12.0 程式架構與功能說明: 讀入要壓縮的檔案及檔案大小 將原始圖片分成 R、G、B三個通道,並加起三個通道的 size 以獲得原始圖片的 size 壓縮方法:使用 Run-Length Encoding (RLE),是將連續出現的相同數據值替換為一個數據值和其出現的次數 channel.flatten() 將通道中的像素數據變成為一維數組 遍歷像素數據中的每個像素,從第二個像素開始(因為第一個像素已經作為 prev_pixel 處理過了) 如果當前像素與前一個像素相同,則增加計數器 count,直到最後一個像素 儲存通道的 value 及 count,並將其寫成 bin 檔 計算三個通道各自的 size , 並加起三個通道的 size 以獲得壓縮後的圖片的 size 計算壓縮率 將三個通道 merge 成一張圖片(decode) 計算三張圖片的壓縮率 成果展示與討論:    壓縮後圖片無失真。 img1.bmp  及壓縮後再解壓縮圖片 img2.bmp  及壓縮後再解壓縮圖片 img3.bmp  及壓縮後再解壓縮圖片 壓縮率

s1093338 Homework #4

圖片
 1122 Digital Image Processing Assignment #4 學號:1093338      姓名:簡毓臻 主題: 膚色偵測 Skin Color Detection   專案目標:   撰寫一個程式來偵測照片中的皮膚顏色區域並將其標示出來。使用附件中的 6 張照片及膚色標準答案 (Ground Truth) 做測試,並呈現所設計膚色偵測方法執行結果的IOU (Intersection Over Union) 數值 (每張圖片值及所有 6 張圖片平均值)。  開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:OpenCV version: 4.9.0, numpy, matplotlib.pyplot 程式語言:Python 3.12.0 程式架構與功能說明: 先將圖片轉成 HSV,這樣可以更準確提取出圖片的皮膚區域。 選出lower & upper 的皮膚閾值範圍。 將 hsv_image 中位於 lower_skin 和 upper_skin 之間的像素值標示為白色(255),將其他像素標示為黑色。 填充不連續區域,得到更準確的皮膚範圍。 創建一個與原始圖片大小一樣的空白圖片 result_image,將前面標記為皮膚部分的地方設為白色。 計算 IOU,IOU 越大代表程式偵測與標準答案 (Ground Truth) 越接近,代表偵測結果越好 * 嘗試過結合 HSV 及YCbCr,發現單用 HSV 效果就不錯了。 成果展示與討論: * warning 可能是因為圖片 中包含的 sRGB 色彩配置文件不正確,但不影響程式運算

s1093338 Homework #3

圖片
1122 Digital Image Processing Assignment #3 報告 學號:1093338      姓名:簡毓臻 主題: 傅立葉轉換與影像復原處理 專案目標:   使用頻域濾波技術對影像進行處理,盡可能地恢復照片原始狀態呈現較清晰的景物。 開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:OpenCV version: 4.9.0, numpy, matplotlib.pyplot 程式語言:Python 3.12.0 程式架構與功能說明:   對受損圖片先做傅立葉轉換,再用低通濾波器進行去噪,顯示原始受損圖片、傅立葉變換後的振幅頻譜、相位頻譜及修復後的圖片。   因為振幅頻譜和相位頻譜都使用了 numpy 模組,是屬於複數形式,用cv2.imshow會無法直接輸出(可以用但需要做一些轉換),所以顯示圖片改用 matplotlib.pyplot。 傅立葉轉換:使用 numpy 裡的 fft 模組,fftshift 是將傅立葉變換的結果的零頻率分量移到圖像的中心,方便觀察。 計算傅立葉轉換後的振幅頻譜及相位頻譜 設計一個低濾波器,讓受損圖片稍微平滑以及達到去噪作用 將振幅頻譜和 mask 相乘結果和相位頻譜組合成複數形式,並再進行逆傅立葉變換就可以得到修復好的圖片。 成果展示與討論:  

s1093338 Homework #2

圖片
1122 Digital Image Processing Assignment #2 報告 學號:1093338      姓名:簡毓臻 主題: 邊緣偵測與圖像二值化 專案目標:   使用者輸入檔案路徑及名稱,希望去除多餘邊緣細節,將原始圖片的景物,以黑白輪廓線條圖案呈現並存檔。 開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:OpenCV version: 4.9.0 程式語言:Python 3.12.0 程式架構與功能說明:    使用者在 console 輸入圖片路徑及檔名,會顯示出 "Original Image" 及經處理過後會出現的 "Canny Edges" 兩個視窗,在 "Original Image" 有兩個 Trackbar 可以調整 Canny 的 lower thershold 及 upper threshold。 最後按下 "s" 可以將輪廓圖存檔,按下 "q" 可關閉視窗。   完成專案目標圖片,可以透過 OpenCV 中的一些 function   cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) : 將圖片轉成灰階,因為只需要圖片中的亮度訊息,轉成灰階圖像也能減少計算及時間。 cv2.GaussianBlur(gray_img, (3, 3), 0) :再來使用高斯模糊來減少噪點,然後要確保 kernal size 是 奇數 。 edges = cv2.Canny(Blur_img, lower, upper) :找到圖片邊緣。 成果展示與討論: *threshold 都有根據圖片再調整 trackbar,初始 lower = 100、upper = 200 執行範例一: 執行範例二: 執行範例三: 執行範例四: 執行影片:

s1093338 Homework #1

圖片
1122 Digital Image Processing Assignment #1 報告 學號:1093338      姓名:簡毓臻 主題:圖像感興趣區域裁切、旋轉與縮放 專案目標:   使用者輸入目標尺寸對圖片進行裁切,透過拖拉滑桿可以旋轉與縮放圖片,並將截取圖片儲存至裝置。 開發環境: 用的作業系統:Windows 開發環境:VScode 用的套件:OpenCV version: 4.9.0 程式語言:Python 3.12.0 程式架構與功能說明:   使用者在 console 輸入圖片路徑及檔名,並設定目標圖片大小後,顯示preview window與crop window,利用 trackbar 調整 Zoom, Rotate, iniX(矩形左上角 x 座標), iniY(矩形左上角 y座標) 等參數,可以從crop window中看到選取的圖像區域,利用 trackbar 調整 Save 從 0 到 1 或按下鍵盤 's' 即可儲存截取圖片至指定路徑,並在 console 印出 "Save image successfully"。按下鍵盤 'esc' 可關閉 windows。  Zoom 可以透過 cv2.resize 來改變圖片大小,縮放比例從原圖的 0.1 ~ 1.5倍。fx 、fy 分別代表水平方向和垂直方向的缩放比例。 fx 、fy = 1,圖片大小不變 fx 、fy < 1,圖片變小 fx 、fy > 1,圖片變大 除以 10 是為了讓可調性變多,可以調到小數點的倍數。  copy_img = cv2 . resize ( img , None , fx = scale / 10 , fy = scale / 10 ) Rotate 是先找到圖片的中心點,利用  cv2. getRotationMatrix2D 以中心點旋轉, 返回一個旋轉矩陣。再利用 cv2.warpAffine, 可以 將圖片根據指定的「仿射矩陣」,輸出成轉換後的新圖片。 center = ( width // 2 , height // 2 ) #Get the center of the image   GetRotate = cv2 . getRota...