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

2021年6月6日 星期日

s1071534 影像處理作業6

一、作業說明 

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

請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)


二、作業環境

●    Windows 10
●    Python 3.6
    opencv 4.2.0

三、實作方法

Compress
1.讀入圖片(.bmp)
2.將圖片的BGR分別提取成三個陣列
3.將每個陣列展開成一維(為了加速處理時間)
4.對每個陣列做run length壓縮資料提取
5.將壓縮資料合併,且加上檔案頭(圖片長度,圖片寬度,BGR個別的資料個數)
6.寫出壓縮檔(.omniMan)

Decompress
1.讀入壓縮檔案(.omniMan)
2.讀取檔案頭
3.依照表頭的資料讀取BGR的資料
4.依照壓縮資料重新組成原圖片
5.輸出圖片


四、執行結果

平均壓縮率 = (6.642+4.041+6.967)/3 = 5.883

五、確認圖片無損
使用imagehash.average_hash()取得原圖片與解壓縮圖片的hash值
img1.bmp


img2.bmp


img3.bmp




2021年5月17日 星期一

S1071534 影像處理作業5

 

作業說明:

  附件中的讀.row晶片設計的高度檔案,設計人員無法直接看到相關資訊。利用你所學的Color顏色的知識與處理技術,撰寫一個程式來讀取附件中的讀.row 檔案,將高度資料以圖片(顏色)視覺化呈現出來,讓設計人員可以看到高度相關資訊。

執行環境:

  • Windows10
  • Python 3.6
  • OpenCV 4.5.1

實作方式:

  • step 1 : 讀取檔案
  • step 2 : 解封Header
  • step 3 : 利用Header的長和寬讀取後續pixel
  • step 4 : 取得最大值級最小值(去除-99999)
  • step 5 : 將資料標準化至 0 to 120,並將-99999的位置設為黑色(代表HSV的H)
  • step 7 : 合成hsv
  • step 8 : 將HSV的資料轉成BGR
  • step 9 : Show images

執行結果:

依序為 02.raw 08.raw 10.raw
最高值紅色 最低藍色







02














08






10







2021年5月16日 星期日

S1071534 影像處理作業4

  一、作業說明 

利用你所學的Color顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。


二、作業環境

●    Windows 10
●    Python 3.6.13
    opencv 3.4.2

三、實作過程
一開始使用Proposed Skin Detection Algorithm實作:
其閥值公式為:
    




     執行步驟:
     1.將圖片讀取並轉換為HSV與BGR分量,在依照公式做閥值的過濾:
        
            
原圖

Proposed Skin Detection Algorithm 得到的Mask
將原圖用mask過濾的結果
    2.由於許多沙子也被判斷為皮膚,因此對閥值做修正
        此方法只對HSV做限制:
更新閥值後得到的mask
         因為得出的mask有許多的雜訊因此對其做模糊化
對maks做模糊化

將原圖使用mask過濾後的結果



    3.考慮到人體皮膚不會有快速的變化,因此對原圖先進行模糊化:
原圖沒有模糊化的結果

原圖有模糊化後的結果
                        
其他測資的結果:


























    

2021年5月2日 星期日

s1071534 影像處理作業3

 

s1071534 影像處理作業3

 一、作業說明 

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

二、作業環境

●    Windows 10
●    Python 3.6
    opencv 3.4.2
    numpy 1.19.5
    matplotlib 3.3.4


三、實作方法
1.讀取圖片並將其轉為灰階(圖一)
2.將圖片padding成兩倍長兩倍寬(圖二)
3.將圖片乘上(-1)^(x+y)。(圖三)
4.使用np.angle()取得相位 (圖四)
5.使用cv2.dft、cv2.magnitude、np.log取得頻譜圖,並將數值轉換至0到255(圖五)
7.將頻譜圖與高斯低通濾波器相乘(圖六)
8.對過濾後的頻譜作反傅立葉
9.對反傅立葉結果的實數部分乘上(-1)^(x+y),取得結果片圖。(圖七)
10.去除圖片的Padding。(圖八)

圖一
圖二
圖三


圖四

圖五
圖六
圖七
圖八




















2021年3月26日 星期五

s1071534 影像處理作業 2

 作業說明 :

        撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成 線條方式呈現更佳!)


使用環境:

  • window 10
  • anaconda Spyder 
  • numpy 1.18.5
  • OpenCV 4.0.1


方法:

    1.將圖片轉成灰階圖片

    2.使用高斯矩陣將圖片模糊化

    3.使用Canny演算法 找出邊緣

        Canny演算法步驟:

        1.透過Sobel濾波器濾出邊緣的強度及方向

          2.尋找最大梯度方向 確認實際邊緣點位置

          3.設定最大及最小閥值用來將相鄰的邊緣點連成線


 

執行結果:

原始圖片

轉成灰階

高斯模糊化

Canny演算法呈現結果



將圖片的黑與白顛倒






2021年2月26日 星期五

1071534 影像處理作業 1

影像處理概論作業1


作業題目:

        撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。


使用環境:

  • Window 10 
  • anaconda Spyder 
  • OpenCV 4.0.1


實作方法:

        使用cv2.imread讀取圖片,接著使用cv2.split將圖片的R,G,B三個陣列分離,將三個陣列內的所有值加上v(使用者輸入的數值),再使用cv2.merge合成新的圖片,最後使用cv2.imwrite儲存更改過後的檔案。

執行結果(原圖,調亮,調暗):