發表文章

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

s1091433 作業6

圖片
  主題: Run-Length Based Image Compression 練習 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。開發環境 : MacOS + VScode+ OpenCV 4.5.4+python 1.          cv2.split() 分離圖片的 bgr 三通道並先用 flatten() 轉換成 1d array ,對他們分別做壓縮 2.          RLE 壓縮:從頭開始掃描整個 array ,如果當前的點跟前一個點的數值一樣 count++ ,不一樣就在 encode_data 中寫入紀錄的 count 跟點的資料,兩個為一組數據做儲存 3.          把 encode_data 用 savez_compressed() 存成一個 .npz 壓縮檔 4.          還原壓縮檔只要把 compress 過程反著做就可以,把點的數值照著有幾個 count 寫回去即可 5.          壓縮結果 6.          壓縮率(原文件/壓縮後) img1:14665254/1504995= 9.7443812 img2:14665254/2292707= 6.39647979 img3:14665254/1429634= 10.2580479

s1091433 作業5

圖片
  主題:膚色偵測 Skin Color Detection 利用你所學的 顏色 (Color) 的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。 ( 請用附件中的三張照片做測試 ) 開發環境 : Windows 11 + VScode+ OpenCV 4.5.4 計畫利用 HSV 與 YCrCb 兩種色域做篩選 1.           將圖片轉成 HSV 色域 cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 2.           使用 cv2.inRange() 保留特定範圍的色彩 3.           使用 cv2.morphologyEx() 作開運算,去除毛邊跟雜訊 4.           在 YCrCb 色域中重複 1 到 3 步驟 5.           將 HSV 遮罩跟 YCrCb 遮罩做 AND 運算結合成新的遮罩 6.           將最終結果的遮罩與原圖疊合過濾出皮膚範圍 7.            顏色標示出皮膚範圍  8 .            結果

s1091433 作業4

圖片
主題:影像還原練習 附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像 ( 將圖中雜 訊去除 ) 。 開發環境 : Windows 11 + Visual Studio 2019 + OpenCV 4.5.4 1. 程式執行             i. 將圖片轉換成頻譜圖可發現垂直軸上有多個雜訊            ii. 使用一張圖片與頻譜圖做相乘 , 設定遮罩與雜訊相同的地方為 0 與原圖相乘 planes 存原圖的通道 planesH 存遮罩的通道 用 mulSpectrums() 兩張圖做相乘 接著用 idft() 轉回一般圖片再做 normalize就完成          iii. 原圖                復原圖

s1091433 作業3

圖片
主題:離散傅立葉轉換 DFT 練習 撰寫傅利葉轉換程式 (Forward Fourier Transform and Inverse Fourier Transform) 將一張圖 像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還 原後圖像。 開發環境 : Windows 11 + Visual Studio 2019 + OpenCV 4.5.4 1. 程式執行             i. 將圖片拆成兩個通道 ( 實部、虛部 )             ii. magnitude() 函式計算頻率幅值 phase() 函式計算相位 做 shift 交換象限 log() 取對數即得出頻譜圖與相位圖           iii. 對原圖做 idft 轉換 分離通道 取實部 planesidft[0] 做 normalize 即可轉換為原本圖像 2. 結果圖             i. Input            ii. Spectrum          iii. Phase          iv.   IDFT

s1091433 作業2

圖片
  主題:線條自畫像( 二 值化與邊緣偵測 Image Thresholding and Edge Detection) 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 開發環境 : Windows 11 + Visual Studio 2019 + OpenCV 4.5.4 (a )利用Sobel Operators 偵測並輸出邊緣成分圖 1 .對 原圖做高斯模糊,消除雜訊,轉換為灰階圖 2 .對xy 軸做 Sobel 計算取出邊緣成分圖 3 .轉換 回 CV_8U 之後再用 addweight 對梯度值做調整後就得出完整圖片   (b )設計 一個類似素描線條的自畫像圖案。 圖片反白

s1091433 作業1

圖片
  Assignment1 圖像旋轉 功能 : 將一張圖像的 (a) 整張圖像, (b) 中心內切圓區域,旋轉一個角度 ( 逆時針旋 轉 0 度至 359 度 ) :利用一個滑動條 (trackbar) 控制旋轉角度。   開發環境 : Windows 11 + Visual Studio 2019 + OpenCV 4.5.4   (a)    旋轉整張圖像 1.      用命令函數讀取圖片位址 2.      建立 trackbar 與視窗 Rotation 為 trackbar 當前數值,用變數傳入讓後續可以持續監控數值 3.      計算旋轉矩陣 4.      利用計算出的旋轉矩陣旋轉圖片               以上步驟用 while 迴圈包起來,達成圖片能持續跟隨 trackbar 轉動的功能         (b)    旋轉中心內切圓區域 1.          畫出一張黑底上面有白色圓圈的圖做為 mask 2.          將原圖用遮罩做裁切,圖片會剩下中心圓的部分 3.          將原圖拷貝一份,將上一張內切圓作為 mask 再做一次切割,會剩下一張中心內切圓空出來的圖片 4.          將 2 的圖加上旋轉矩陣就可以達成旋轉效果 影片展示: