顯示具有 1061448 標籤的文章。 顯示所有文章
顯示具有 1061448 標籤的文章。 顯示所有文章

2021年6月5日 星期六

s1061448 影像處理作業6

         一、作業題目: 

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

        二、開發環境: 

    作業系統:Windows 10 
    ide:pycharm,anaconda 4.4.0
    圖像處理:open-cv 4.4.0
    語言:python 3.6

        三、操作方法:


    压缩:
  1. 將圖像文件img.bmp和程式碼compress.py處在同一文件目錄下 
  2. 運行compress.py等待程式輸出跑完以後,會在該目錄下生成compress.1061448
    解压缩:
  1. 將壓縮後文件compress.1061448和程式碼decompress.py處在同一文件目錄下 
  2. 運行decompress.py等待程式輸出跑完以後,會在該目錄下生成decompress.bmp

        四、實現方法:


    压缩:
  1. 讀入img.bmp
  2. 將此圖像每一個行、列和RGB channel首尾相接視為一個一維整列
  3. 從第一個值到最後一個,記錄所有像素值連續出現的次數,整理並表示為[壓縮後陣列長度, 原圖像長, 原圖像寬, 原圖像channel數, 像素值1, 重複次數1, 像素值2, 重複次數2...]的格式。
  4. 以bw形式寫入compress.1061448中
    解压缩:
  1. 讀入compress.1061448 
  2. 提取長寬和像素值訊息
  3. 新建一個空的np陣列,並將像素值寫入
  4. 將該np陣列保存為decompress.bmp

五、最終效果:

     

   1. 壓縮前:

    解壓縮後:

    壓縮前後對比:


    2. 壓縮前:

  解壓縮後:
    
    壓縮前後對比:


    3. 壓縮前:

    解壓縮後

    壓縮前後對比:


    平均壓縮率為:
            
        100% * (8336/14322+13091/14322+7963/14322)/3 = 68.4%


2021年5月3日 星期一

s1061448 影像處理作業3

         一、作業題目: 

    請撰寫一個程式,讀取一張 256 色灰階圖像。(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。(2)對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。

        二、開發環境: 

    作業系統:Windows 10 
    ide:pycharm,anaconda 4.4.0
    圖像處理:open-cv 4.4.0
    語言:python 3.6

        三、操作方法:

  1. 將圖像文件example.png和程式碼處在同一文件目錄下 
  2. 等待程式輸出跑完以後,會在該目錄下生成result.png,即為處理過後的圖像

        四、實現方法:


    1. 以灰度圖像讀入彩色圖片檔案

        本程式用opencv讀入灰度圖像 

    2. 將圖像置入一個長(x)寬(y)均為兩倍的黑色圖像的左上角

    3. 將圖像的每個pixel乘以 (-1)^(x+y),小於零的pixel設為0

    4. 對圖像做dft,並進行中心化

    5. 對圖像dft後產生的頻譜與高斯low pass filter相乘,其中kernel大小為100X100,標準差為50

    6. 將圖像進行idft,並截取左上角的圖像。

    

五、最終效果: