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

2022年6月9日 星期四

s1073308 作業7

1. 作業說明:

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

2. 開發環境:

    • Windows 10
    • PyCharm 2019
    • OpenCV 4.5.5
    • Python 3.7

3. 實作方法:


    1.讀取照片一次一張並且以灰階形式讀取

    2.利用getStructuringElement(cv2.MORPH_ELLIPSE, size)來定義橢圓形結構元素

    3.利用threshold將圖片二值化。

    4.利用dilate()使其膨脹,再利用morphologyEx()做開運算

    5.findContours()找出其邊界並且畫出該邊界。

    6.最後,利用resize將輸出影像改成1280x720輸出

4. 實作結果:

IMG_5702: 實際: 24 / 預測: 24

IMG_5703: 實際: 31 / 預測: 34

IMG_5704: 實際: 31 / 預測: 36
                                                    

2022年5月30日 星期一

s1073308 作業6

1. 作業說明:

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

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

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

2. 開發環境:

    • Windows 10
    • PyCharm 2019
    • OpenCV 4.5.5
    • Python 3.7

3. 實作方法:

               

    Encoding:

        1.cv2.imread()讀取圖片

        2.cv2.split()切分成b,g,r通道  

        3.利flatten() 將 b,g,r 轉成一維陣列

        4.利用Run-Length編碼:

              計算連續出現的值,依序以[value , quantity]的方式存入list

              ex: [1,1,2,2,2,3,3,3,3]=>[1,2,2,3,3,4]

        5.分別將b,g,rlist串接起來且前五項存入長、寬、bgr list的長度

        6.輸出listimg_compress.dat

    Decoding:

        1.讀取壓縮檔(.dat)

        2.b,g,r資訊分別存入list

        3.利用Run-Length的方式解碼,value*quantity

             ex: [1,2,2,3,3,4]=>[1,1,2,2,2,3,3,3,3]

        4.np.array()list轉成array並改為"uint8"

        5.reshape()array轉成(長, 寬, channel)

        6.cv2.merge()b,g,r合併成img

        7.輸出圖片

4. 實作結果:


        8/14.7 * 100% = 54% (img1.bmp)
        10/14.7 * 100% = 68% (img2.bmp)
        7.5/14.7 * 100% = 51% (img3.bmp)

                                                          img1.bmp原圖,壓縮檔,還原檔


                                                          
                                                          img2.bmp原圖,壓縮檔,還原檔


  img3.bmp原圖,壓縮檔,還原檔

2022年5月19日 星期四

s1073308 作業5

 

   1. 作業說明:


  • 擷取指定圖片的黃色花瓣區域

    2. 開發環境:


    • Windows 10
    • PyCharm 2019
    • OpenCV 4.5.5
    • Python 3.7

     3. 實作方法:

          

        先利用imread將照片輸入

       •   將彩色影像轉成HSV

       •   利用upper-bound, lower-bound抓取臨界值並用inRange()

            將圖片去掉黃色以外的顏色

        •   使用bitwise_and()產生最後結果


     4. 實作結果:

彩色轉HSV之結果

利用inrange()所產生出的mask

最後結果對比圖, 左原圖, 右最後結果


2022年4月14日 星期四

s1073308 作業4

 

   1. 作業說明:


  • 離散傅立葉轉換(DFT)

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

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

(2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。


    2. 開發環境:


    • Windows 10
    • PyCharm 2019
    • OpenCV 4.5.5
    • Python 3.7

     3. 實作方法:


                

         先利用imread將照片輸入

          np.fft.fft2函式進行傅立葉轉換

          np.fft.fftshift输出的零頻率分量移到中心

           20*np.log(np.abs()):先取絕對值,表示取模,取範圍

           np.angle : 取出phase angle

           套用函數取得LPF平滑圖像


     4. 實作結果:









2022年3月24日 星期四

s1073308 作業3

 一、 作業說明

撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。

二、 作業環境

Windows 10OpenCV 4.5.5Visual Studio 2017、C++

三、  實作方法

1.首先,輸入圖片完整路徑及名稱。

2.使用GaussianBlur()函數對其圖片進行模糊處理,來減少圖像雜訊以及降低細節層次。

3.使用將圖片轉為灰階的形式

4.利用sobel function進行邊緣偵測。先個別計算出針對X方向及Y方向的一階導數Sobel圖像。

5.利用addweight將sobel X & sobel Y方向結合 並輸出結果

5.1 或者利用for迴圈將sobel X,Y方向結合,會使得線條更加清楚

6.將結果黑白顏色翻轉即可獲得素描版的圖樣

四、  實作結果

 
利用addweight 結合的結果
利用for迴圈將X,Y方向加起來的結果

2022年3月10日 星期四

s1073308 作業2

 一、 作業說明

撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋  0 度至 359 ):利用一個滑動條(trackbar)控制旋轉角度。

二、 作業環境

Windows 10OpenCV 4.5.5Visual Studio 2017

三、  實作方法

1. Input選擇你所要指定的旋轉方法數字1為整張圖選轉;數字二為中心內切圓的選轉圖

2.成功之後會跳出圖片,上方會有滑動條,可以調整角度,預設為零度,可以從0~359度,並及時出現在畫面中。

3.內切圓切割方法為先以中心為基準切出一個內切圓,切完之後會有一個內切圓還有內切圓以外的圖片,旋轉內切圓的圖片,並且合併內切圓以外的圖片,即可完成

四、執行結果

(A)整張圖像旋轉

此圖為旋轉45度

此圖為顛倒的波吉


(B)以中心內切圓旋轉

內切圓旋轉180度

內切圓旋轉90度

                                                                    


2022年2月24日 星期四

s1073308 作業1

s1073308 hw1



    1. 作業說明:



        圖像亮度調整


                  撰寫程式讀取圖片, 將每個像素值加上一個數值,改變亮度。
若為灰階圖像,需改變像素的灰階值;若為全彩圖像,只改變像素的R值。像素值介於0到255之間。


      2. 開發環境:

    • Windows 10


    • Visual Studio 2017


    • OpenCV4.5.5
        
    
     3. 實作流程:


       1. 將圖片檔放入專案並且在main function 輸入該檔案名稱ex:lennaRGB.tif
            
          2. 執行輸入調變質

          3. 判斷是否灰階圖
                若是  >  改變每個像素的灰階值          // 若不是  >  改變每個像素R質

           function:
                1. bool color(Mat image) 用來判斷是否為灰階圖片是回傳1若不是回傳0
        
       4. 執行結果:
       
左原圖與右調亮100後的對比
        
                                    
左原圖與右調暗100後的對比
                            
                                                            左原圖與右圖增加R值100後的對比


                                                            左原圖與右圖減少R值100後的對比