發表文章

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

s1091444 作業 6

圖片
同步發布於 titaliu1224.github.io 功課要求 附件中為三張利用將晶片高度以色彩視覺化後的圖片。  請設計一個基於Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。    部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。 成果 開發環境 Windows 10  Visual Studio Code  Python 3.9.16  OpenCV 4.5.4 實作 使用的 libraries 如下: import cv2 , os import matplotlib . pyplot as plt import numpy as np 1/ 利用迴圈讀入三張圖片 建立一個儲存三張圖片路徑的 list ,使用迴圈讀入圖片並送至 compress(original_img, compress_file)  進行壓縮,取得壓縮率並儲存在  compress_ratio[i]  中。 2/ 壓縮圖片 2.1/ 計算圖片大小 使用  os.path.getsize(filename)  取得圖片大小,並使用  with open(compress_file, "w") as file  寫入壓縮檔案中,做為解壓縮時建立 array 的參考。 2.2/ 將二維的圖片轉為一維 三個 channel 的值不會一樣,所以三個通道必須分開儲存。 一維的圖片比較好操控,而且能夠增加壓縮的效率,所以使用  flatten()  將二維的矩陣轉換至一維。 2.3/ Run-Length Encoding 遍歷矩陣中所有的 pixel ,如果當前 pixel 和上一個 pixel 相等,數量就 + 1,不相等就將當前 pixel 的值和數量寫入 .dat 檔中。 並且利用  \n  來分隔每個 channel 的資料。 2.4/ 計算壓縮率 首先,利用  os.path.getsize(filename)  取得檔案大小。 壓縮率的計算為 原檔案大小 / 壓縮檔案大小,相除之後使用 formatted...

s1091532 作業6

圖片
 一、 作業說明 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。 二、  開發環境 OS: Windows11 Editor: Visual Studio Code Language: Python Package: opencv- 4.7.0 三、程式碼說明 1. 需使用函式庫 2. 在main function 先將步驟寫好 將input的圖片、壓縮後及解壓縮後的檔案先命名好,壓縮檔命名為.npz檔 對每一張圖片使用compress_image function進行壓縮 做RLE編碼 做解壓縮還原圖片測試 計算壓縮率 3. 原始檔案 vs 壓縮檔 4. 壓縮後圖片 5. 錄影

s1081402 作業6

圖片
開發環境:Python 3.9.13, macOS 13.2.1, OpenCV 4.7.0 功能:附件中為三張利用將晶片高度色彩視覺化後的圖片。請設計一個基於Run Length 的壓縮方法,對圖檔座無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。 說明: 首先,讀取照片並使用split()函數將其分離為R、G、B三個通道。並將每個通道轉換為NumPy數組,並將數據展平為一維數組。 得到了展平後的R、G、B通道數組(r_data、g_data、b_data),可以使用RLE算法對這些數組做encode進行壓縮。 再將壓縮後的數據做decode,並取得原圖的圖片長寬,最後再將decode後的數據重新組合成圖片並轉成PIL圖片儲存。 最後,輸出圖片大小並計算平均壓縮量。 split function encode/decode function 成果: img1.bmp:14665254 image_out1.jpg:124927 壓縮率:0.8518570493221597% img2.bmp:14665254 image_out2.jpg:133195 壓縮率:0.9082352068365129% img3.bmp:14665254 image_out3.jpg:139285 壓縮率:0.9497619338880868%