2022年5月30日 星期一

s1073308 作業6

1. 作業說明:

附件中為三張利用將晶片高度以色彩視覺化後的圖片。

請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。

部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率

2. 開發環境:

    • Windows 10
    • PyCharm 2019
    • OpenCV 4.5.5
    • Python 3.7

3. 實作方法:

               

    Encoding:

        1.cv2.imread()讀取圖片

        2.cv2.split()切分成b,g,r通道  

        3.利flatten() 將 b,g,r 轉成一維陣列

        4.利用Run-Length編碼:

              計算連續出現的值,依序以[value , quantity]的方式存入list

              ex: [1,1,2,2,2,3,3,3,3]=>[1,2,2,3,3,4]

        5.分別將b,g,rlist串接起來且前五項存入長、寬、bgr list的長度

        6.輸出listimg_compress.dat

    Decoding:

        1.讀取壓縮檔(.dat)

        2.b,g,r資訊分別存入list

        3.利用Run-Length的方式解碼,value*quantity

             ex: [1,2,2,3,3,4]=>[1,1,2,2,2,3,3,3,3]

        4.np.array()list轉成array並改為"uint8"

        5.reshape()array轉成(長, 寬, channel)

        6.cv2.merge()b,g,r合併成img

        7.輸出圖片

4. 實作結果:


        8/14.7 * 100% = 54% (img1.bmp)
        10/14.7 * 100% = 68% (img2.bmp)
        7.5/14.7 * 100% = 51% (img3.bmp)

                                                          img1.bmp原圖,壓縮檔,還原檔


                                                          
                                                          img2.bmp原圖,壓縮檔,還原檔


  img3.bmp原圖,壓縮檔,還原檔

沒有留言:

張貼留言