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

2021年6月10日 星期四

s1071414 影像處理作業 7

 作業說明

請撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。

操作環境

  • macOS Big Sur 11.2.2
  • Python 3.8.5
  • OpenCV 4.5.1


實作方法

  1. 將影像讀入並轉成灰階
  2. 將影像二值化
  3. 對二值化後的影像做 opening (erosion -> dilation) -> 將圍棋間縫隙打開
  4. 找出所有 connected components
  5. 計算 connected components 數量

執行結果


IMG_5702


IMG_5703


IMG_5704



2021年6月6日 星期日

s1071414 影像處理作業6

 作業說明

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

操作環境

  • macOS Big Sur 11.2.2
  • Python 3.8.5
  • OpenCV 4.5.1


實作方法


  • RLE Encode
    • 讀入影像
    • 將其 Height, Width, Channel 作為 header,以 byte 形式寫入 .bin 檔
    • 將圖片 reshape 成一維陣列
    • 以RLE方式壓縮所有 pixel ([像素1, 像素1連續長度, ... , 像素n, 像素n連續長度] )
    • 將壓縮結果以 byte 形式寫入 .bin 檔
    • 寫入格式如下圖

  • RLE Decode
    • 讀取 .bin 檔
    • 將檔案讀成一個一維的 list
    • 將 list 中 Height, Width, Channels 以及 R, G, B 部分取出
    • 將 R, G, B 通道還原為 Height x Width 之影像
    • 合併RGB通道

執行結果

img1.bmp 壓縮還原後


img1 壓縮率 = (5.3 / 14.7)*100% = 36.05%

img2.bmp 壓縮還原後

img2 壓縮率 = (8.9 / 14.7) * 100% = 60.54%

img3.bmp 壓縮還原後

img3 壓縮率 = (5.1 / 14.7) * 100 = 34.69%

平均壓縮率 = (36.05 + 60.54 + 34.69) / 3 = 43.67%



2021年5月17日 星期一

1071414 影像處理作業5

作業說明

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

操作環境

  • macOS Big Sur 11.2.2
  • Python 3.8.5
  • OpenCV 4.5.1

實作方法

  1. 讀入.raw檔
  2. 存取前32 byte之header
  3. 將32 byte後之像素值讀出
  4. 將-99999 (invalid value) 設為 np.nan
  5. 找到像素最小以及最大值
  6. nan以0填補
  7. 將所有像素值投射至0~255之區間
  8. 將像素值以對應的顏色輸出

執行結果

02.bmp
 




08.bmp

   


10.bmp











2021年5月2日 星期日

s1071414 影像處理作業3

作業說明

請撰寫一個程式,讀取一張 256 色灰階圖像。

(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。

(2) 對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。(程式利用課本的frequency filter 步驟者可得滿分!)

操作環境

  • macOS Big Sur 11.2.2
  • Python 3.8.5
  • OpenCV 4.5.1

實作方法

  1. 讀取大小為(MxN)之灰階原圖f(x, y)  (圖一)
  2. 將填補成大小為PxQ(P = 2xM, Q = 2xN)之f'(x, y)並將其乘上(-1) ** (x + y) (圖二)
  3. 將f'(x, y)進行傅立葉轉換後得到F(u, v) (圖三)
  4. F(u, v)之頻譜 (圖四)
  5. F(u, v)之相位 (圖五)
  6. 製造一個大小為PxQ的Gaussian mask H(u, v)並將其與F(u, v)相乘後得到G(u, v) (圖五、六)
  7. 將G(u, v)進行反轉傅立葉轉換後乘上(-1) ** (x + y)並保留實數部分後可獲得Gp(x, y) (圖七)
  8. 最後將Gp(x, y)之左上角(MxN)大小取出,即為結果 (圖八)
(圖一)

(圖二)



(圖三)

(圖四)

(圖五)

(圖六)

(圖七)

(圖八)

2021年3月22日 星期一

s1071414 影像處理作業 2

 作業說明

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp .jpg 圖像格式都可, 如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基 礎,設計一個類似素描線條自畫像程式。

操作環境

  • macOS Big Sur 11.2.2
  • Python 3.8.5
  • OpenCV 4.5.1

實作方法

  1. 讀取圖片
  2. 將圖片轉為灰階
  3. 利用gaussian filter將圖片中雜訊清除
  4. 利用sobel filter取圖片之梯度
    1. Gx 為橫向梯度
    2. Gy 為縱向梯度
  5. 將Gx以及Gy合併為初始邊緣檢測結果
  6. 將初始邊緣檢測結果進行thresholding,將邊緣檢測所製造之雜訊濾除
  7. 最後將結果顏色反轉

執行結果

原圖

轉灰階以及模糊化

原圖之Gx

原圖之Gy

原圖之Gx加Gy

Threshold 後之梯度

Edge detection 結果

2021年3月3日 星期三

s1071414 影像處理作業 1

作業說明

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

操作環境

  • macOS Big Sur 11.2.2
  • Python 3.8.5
  • OpenCV 4.5.1

實作方法

  1. 讀取圖片
  2. 將照片之每個像素值加上(調亮)減掉(調暗) v
    1. 若像素值加上 v 後大於 255,將該像素值設為 255
    2. 若像素值減掉 v 後小於 0,將該像素值設為 0
  3. 輸出結果

執行結果


原圖(v=0)

調暗(v=-50)

調亮(v=50)