發表文章

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

s1093522 作業 6

圖片
  作業說明 Run-Length Based Image Compression 練習 附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。 開發環境 Windows 11 21H2 Visual Studio 2019 16.11.24 OpenCV 4.5.1 程式說明 RLE_encode(const Mat& src) 遍歷圖像的每個像素,並計算連續相同像素值的個數。用來代表連續的像素序列。 compress_image(const Mat& src, const string& compressed_filename) 將圖像分成 RGB 三個通道,並對每個通道進行獨立的 Run-Length 編碼,並將編碼後的數據寫入到壓縮文件(txt檔案)中 cal_compression_ratio(const Mat& src, const string& filename, const string& compressed_filename) 比較壓縮後數據的大小與原始圖像的大小計算壓縮率 執行結果 原始 bmp 檔和壓縮後的 txt 檔大小比較         平均壓縮率: 18.04%

s1093522 作業 5

圖片
作業說明 膚色偵測 Skin Color Detection 利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚 區域並將其標示出。(請用附件中的三張照片做測試) Write a program that detect skin color from an image. 開發環境 Google Colab Python 3.10.11 OpenCV 4.7.0 程式說明 1. 將BGR圖像轉換為RGB圖像  cv2.cvtColor 2. 判斷條件以定義⽪膚顏⾊的RGB值範圍  3. 在原始圖像上應⽤⼆進制遮罩,只保留⽪膚部分  cv2.bitwise_and 執行結果

s1093522 作業 4

圖片
作業說明 影像還原練習 附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜訊去除)。 開發環境 Google Colab Python 3.10.11 OpenCV 4.7.0 程式說明 對圖片進行傅立葉轉換 計算頻譜並對其進行二值化處理 使用點阻濾波器 執行傅立葉反轉換,並將結果轉換回原始圖像空間 調整對比度和亮度,並銳化圖像 執行結果 還原後圖片

s1093522 作業3

圖片
  作業說明 離散傅立葉轉換 DFT 練習 撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖 像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還 原後圖像。 執行環境 Windows 11 21H2 Visual Studio 2019 16.11.24 OpenCV 4.5.1 程式說明 離散傅立葉變換 DFT(Mat gray_img, int rows, int cols)                                     a. 計算傅立葉變換最佳大小 getOptimalDFTSize(rows)                                     b. 用 0 填充空圖像矩陣 Mat::zeros(rPadded, cPadded, CV_32FC1)                           c. 創建 Mat planes[2] 。其中,planes[0] 是 CV_32F1的實部矩陣(包含擴充後的原圖), planes[1] 是 CV_32F2 的虛部矩陣(大小和擴充後的原圖相同,但所有元素初始化為0)。                                                ...

s1093522 作業2

圖片
  作業說明 主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection) 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?) 開發環境 Windows 11 21H2 Visual Studio 2019 16.11.24 OpenCV 4.5.1 程式說明 將圖像轉換為灰階 cvtColor(img, gray_img, COLOR_BGR2GRAY) 進行高斯模糊 GaussianBlur(gray_img, blur, Size(5,5), 0) 抑制圖片的高頻噪聲,保留低頻特徵(邊緣和物體的輪廓)。 kernel size: 5 * 5 σ: 0 Sobel Operator 進行邊緣檢測 Sobel(blur, sobelx, CV_64F, 1, 0, 3) 混合水平和垂直方向的邊緣檢測結果 使用  addWeighted()  將水平和垂直方向的邊緣檢測結果混合在一起,並將結果存在 edge 使用邊緣偵測所得到的點結合成素描筆畫出的線條                                   執行結果