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

2021年6月7日 星期一

1071521 影像處理作業8

 

 請寫一個程式將附圖二值化後輸出黑白圖像。
目的是將文字與背景分離。

作業環境:



OS: linux ubuntu20.04
c++ version: c++11
using opencv4.5.2 (check by terminal command "pkg-config --modversion opencv4")
compile command :
    "g++ 1071521_HW8.cpp -o HW8 -std=c++11 `pkg-config --cflags --libs opencv4`"




2021年6月5日 星期六

1071521 影像處理作業7

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

作業環境:



OS: linux ubuntu20.04
c++ version: c++11
using opencv4.5.2 (check by terminal command "pkg-config --modversion opencv4")
compile command :
    "g++ 1071521_HW7.cpp -o HW7 -std=c++11 `pkg-config --cflags --libs opencv4`"

說:

將圖片以灰階方式讀入,黑白反轉,並進行二值化,再對圖片進行腐蝕膨脹,進而得到結果。
為了求取精準數值,我不壓縮圖片,等算完結果,再壓縮

5702.png
                
5703

5704


s1071521 影像處理作業6

 

作業說明:

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

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


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


作業環境:



OS: linux ubuntu20.04
c++ version: c++11
using opencv4.5.2 (check by terminal command "pkg-config --modversion opencv4")
compile command :
    "g++ 1071521_HW6.cpp -o HW6 -std=c++11 `pkg-config --cflags --libs opencv4`"

解說:

輸入檔案名稱,會根據輸入的副檔名進行判斷壓縮還是解壓縮,壓縮後會輸出 "檔案名稱.bmp_cmp" , 解壓縮會輸出 "recovery.bmp"。

把BGR分開存,經過測試,這樣可以省下許多空間
寫入壓縮檔會以二進位形式寫入
解壓縮就沒什麼特別的,只是逆向操作而已

壓縮率從1到3分別是:
    (14.7/3.2)(14.7/5.3)(14.7/3.1)
    三者平均為4.036

2021年5月23日 星期日

s1071521 影像處理作業5

 作業說明:

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

作業環境:



OS: linux ubuntu20.04
c++ version: c++11
using opencv4.5.2 (check by terminal command "pkg-config --modversion opencv4")
compile command :
    "g++ 1071521_HW5.cpp -o HW5 -std=c++11 `pkg-config --cflags --libs opencv4`"

解說:

藉由讀檔讀出前面32 Bytes 解header,得出width&height,再以4個bytes(float)讀入float指標。
從指標開頭開始讀取數值,凡是讀到-99999.0的數字,藉由0.0/0.0化為nan數值,並順便取得最大最小值。
之後再透過每(1/5)的大小區間去製作新的圖片:
nan 為 紅色
1/5 ~ 2/5 藍色
2/5 ~ 3/5 綠色
3/5 ~ 4/5 黃色
4/5 ~ 5/5 橘色
else 紅色
再將結果輸出為bmp檔案

結果輸出



2021年5月7日 星期五

1071521 作業四

 Skin Color Detection

作業説明:


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

示出。


作業環境:


OS: linux ubuntu20.04
c++ version: c++11
using opencv4.5.2 (check by terminal command "pkg-config --modversion opencv4")
compile command :
    "g++ 1071521_HW4.cpp -o 1071521_HW4 -std=c++11 `pkg-config --cflags --libs opencv4`"


程式說明:


本作業無使用任何特別function,僅使用教科書上的YCrCb公式運算。
將每個pixel作YCrCb運算,然後再運用以下條件作計算

        YCrCb膚色範圍
        135 < Cr < 180
        85 < Cb < 135
        80 < Y

在這些範圍的圖片作填白色的動作(255,255,25),其他則是填入黑色(0,0,0)。
即達到題目需求。

不過在存取是要注意channnel的問題,所以我有對col作乘以channel。





2021年5月2日 星期日

1071521 影像處理作業3

 作業説明:

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

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

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

2021年3月17日 星期三

s1071521 影像處理作業2


作業說明

圖像亮度調整

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

作業環境

OS: linux ubuntu18.04
c++ version: c++11
using opencv4.5.1 (check by terminal command "pkg-config --modversion opencv ")
compile command :
    "g++ 1071521_HW2.cpp -o 1071521_HW2 -std=c++11 `pkg-config --cflags --libs opencv`"

程式說明

imread("IMG.jpg" ,0); 此項可以讀取灰階圖片

Sobel(img, xgrad, CV_16S, 1, 0, 3);
Sobel(img, ygrad, CV_16S, 0, 1, 3); 
以上兩個指令分別是對影像做水平及垂直的運算,並得到X軸和Y軸的一階梯度。

最後再透過loop將每個xy軸的像素點做加回的動作,以及黑白反轉讓結果更好看


2021年2月26日 星期五

1071521 影像處理作業1



作業說明

圖像亮度調整

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

作業環境

OS: linux ubuntu18.04
c++ version: c++11
using opencv4.5.1 (check by terminal command "pkg-config --modversion opencv ")
compile command :
    "g++ 1071521_HW1.cpp -o 1071521_HW1 -std=c++11 `pkg-config --cflags --libs opencv`"

程式說明

引入namespace底下的cv
imread("IMG.jpg");用以讀圖,分別調整+100以及-100,且限制範圍在0~255之間.
最後使用hconcat(src, img, src);作before&after,imshow("1071521-hw1", src);作輸出.

+100                                                                   -100