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

2021年6月13日 星期日

s1071503 影像處理作業7

  1. 作業說明

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

2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.9.2、OpenCV 4.5.1


3. 方法

            imread()讀圖--->medianBlur()模糊圖片--->threshold()做二質化

                =>getStructuringElement()選擇用橢圓形去做kernel 

                --->erode()、dilate()侵蝕多次後膨脹他讓它明顯一些

                --->findContours()偵測輪廓

        以下展示~(只有第三張做完整展示/一、二張直接上結果)

                    原圖:

                    模糊後:
                    二值化:


                    侵蝕圖片:

                    膨脹棋子:
圖一結果:
圖二結果:
計算出的棋子數:
    圖一:23/24
    圖二:29/31
    圖三:31/31











2021年6月7日 星期一

s1071503 影像處理作業8

 1. 作業說明

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

2. 結果

            


2021年6月6日 星期日

s1071503 影像處理作業6

  1. 作業說明

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

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

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

2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.9.2、OpenCV 4.5.1


3. 方法

            壓縮:

                    讀取寬度跟高度、把rgb數值用list存好

                    用struct.pack打包寫檔 先在開頭寫入長、寬,接下來逐行處理

                    該行相同顏色的紀錄column 統計顏色出現次數、顏色數量

                    打包整理後寫檔(acv_(+imgX).1503)

            解壓縮:

                    按照寫檔的順序拿出資料,然後np.zeros()做一個空白畫布

                    接下來就一點一點把顏色填上->(re_imgX)




(13.9/10.0 + 13.9/10.6 + 13.9/10.3) / 3 = 1.35




((雖然都長一樣 但還是放上來了XD




 






2021年5月22日 星期六

s1071503 影像處理作業5

  1. 作業說明

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


2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.9.2、OpenCV 4.5.1


3. 方法

            先單獨把header的部分提出來

            使用struct.unpack()轉換data

            讀出高度資料存進list

            找出除了-99999以外的最小值跟最大值 ((-99999會當藍色來用

            用兩者差當分母跟其他高度以內插法算色相角度(範圍:0 ~ 240)

            轉換成BGR 最後跟原圖用addWeighted()做疊圖

            顯示成品: **08、10的原圖太佔版面就不放了 **

                            02原圖:

                            02高度圖:
                            兩個02的疊圖成果:
                            08高度圖:
                            08的疊圖:
                            10高度圖:
                            10的疊圖:










2021年5月16日 星期日

s1071503 影像處理作業4

 1. 作業說明

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


2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.8.3、OpenCV 4.5.1


3. 方法

            imread()讀圖片

            用兩個forloop去找每一格的R,G,B值,依照公式去換成H,S,I

            

            判斷HSI值是否在膚色範圍

                我用的範圍是1.04< H <1.15 & 0.07< S <0.44 & 77< I <220

            把在範圍內的那格像素用紅色取代

            imwrite()寫檔

            imshow() Show出原圖跟偵測後的圖片

以下成果:


原圖:
        



2021年5月2日 星期日

1071503 影像處理作業3

 1.作業說明

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


2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.8.3、OpenCV 4.5.1


3.方法

        imread()讀入圖片(原圖)

        copyMakeBorder()填充一倍高一倍寬的黑色(圖一)

        padding乘上(-1)**(x+y)  (圖二)

        fft.fft2 傅立葉轉換

        fftshift()、np.log、np.abs轉換成頻波圖片顯示(圖三)

        np.angle()轉成相位角

        計算後修改範圍0~255輸出(圖A)

        gaussian lowpass filters (D0值使用3777), 計算結果顯示(圖四)

        (圖五) HF的頻譜

        inverser shift -- ifftshift() 轉回影像(圖六)

        將多餘部分割掉img.real[x起點值:保留x長度,y起點值,保留y長度] 

        real 去除虛數部分
        輸出成品(圖七)

原圖
        

圖一

        

        

        



圖二

圖三

圖四

圖五
圖六
圖七

















圖A

2021年3月27日 星期六

s1071503 影像處理作業2

 1. 作業說明

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


2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.8.3、OpenCV 4.5.1


3. 方法

            imread()讀入圖片 ((要先改檔名!

            cvtColor()轉成灰階影像

            copy灰階影像 然後做成純白image當畫布

            用sobel operator去算每個點的Gx跟Gy 解出梯度的估計值 G

            闕值的Gmax多次嘗試後設定50,G超過Gmax則在那個位置畫黑點

            (數值太高邊緣判斷的點會太少,太低圖片會很醜)

            imwrite() 寫檔newimage

            imshow() show出結果


            新舊圖對比:



2021年3月1日 星期一

s1071503 影像處理作業1

 1. 作業說明

            撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v 

   ( -255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。


 2. 使用環境

            Anaconda(conda 4.8.3)、Python 3.8.3、OpenCV 4.5.1

 3. 方法

            用imread()讀入圖片

            讓使用者輸入 v 值

            把圖片用copy()複製新的來處理圖片

            判斷圖片是彩色圖片還是灰階圖片(image.shape[2] 取image的維度)

            雙層for loop給每格像素加上 v 值(溢位直接設定255 or 0)

            寫入檔案到newimage.jpg

            顯示原圖片以及新圖片

 執行結果

            圖片的v值設定 +66 (上圖)  -66(下圖)

            左邊是原圖片 右邊是被寫入的新圖片