2021年4月30日 星期五

s1071648 影像處理作業3

作業說明:

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

環境/語言:

VisualStudio 2017
OpenCV 4.5.1
Window 10
C++

實作方法:

imread/IMREAD_GRATSCALR讀取圖片並設成灰階
glpf() funtion 高斯低通濾波處理
dft() 傅立葉轉換
split() 分離轉換後的實部及虛部
magnitude() 得到頻譜圖
Phase() 得到相位圖
Idft() 通過計算IDFT獲得濾波後的圖像


執行結果:











s1073322 影像處理作業3

 

作業說明

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


開發環境

        Windows 10/cmd/python/openCV 4.5.1

開發原理

        傅立葉/反傅立葉(Fourier):以np.fft.fft2() 快速傅立葉變換得到頻率分佈,再 
        np.fft.fftshift() 函式
        將中心位置轉移至中間,最終通過 Matplotlib顯示效果圖。
        頻譜大小(Magnitude Spectrum):以cv2.dft將輸入影像轉換成 np.float32格式,此時輸
        出的頻譜為一個複數,以cv2.magnitude(x, y, magnitude=None)將傅立葉轉換的雙通道
        結果轉換為0~255的範圍,x為浮點型X座標值,即為實部,y則是虛部浮點型Y座標值。
        Gaussian(Blurred) :以cv2.GaussianBlur(img, (5,5), 0)做轉換。其中(5,5),0表示高斯矩
        陣長寬皆為5,標準差為0,openCV即會根據高斯矩陣自己計算,矩陣尺寸越大,標準差越
        大,其模糊程度就越大
        相位角度(Phase angle):以np.angle直接根據複數的虛部和十部求出角度,默認的角度
        是弧度。
       


圖片

        傅立葉 / 反傅立葉 / Gaussian(Blurred) / 
        頻譜大小(Magnitude Spectrum) / 相位角度(Phase angle)






















s1070702 影像處理作業 3

作業說明

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

作業環境

win10 + Spyder (Python 3.7) + OpenCV 4.5.1

實作方法

1.讀入圖片並轉為灰階,輸出灰階圖
2.將轉為灰階的圖做傅立葉轉換並取出角度的數值,輸出相位圖
3.將轉為灰階的圖做傅立葉轉換並取出頻率,輸出頻譜圖
4.利用Gaussian Low-Pass filter,求得的3*3 gaussian_kernel對圖片做convolution,輸出模糊化後的圖

執行結果

原圖:


處理後的圖:






2021年4月29日 星期四

s1063514影像處理作業3

  影像處理概論作業3


作業題目:

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

使用環境:

  • Linux version 4.15.0
  • Python 3.6.9
  • opencv-python 4.5.1.48
  • numpy 1.19.15


實作方法:

    (1)透過opencv先將圖片讀入,並將圖片轉為灰階,透過mp.fft.fft2,將0~255的圖片轉為頻域,因傅立葉的特性須將圖片先做padding,但一開始並未這麼做,所以透過fft.shift,對頻域半周長的位移,將原本散布四角的頻域顯示在中間,透過np.angle將相位圖表示出來

    (2)高斯濾波對原圖做平滑化,將std設3,kernel放大,做出模糊=>平滑畫的效果

.

執行結果:

                                                            原圖


灰階

頻域

phase
平滑化







s1071816影像處理作業3

作業說明: 

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

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

方式呈現出。 

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

frequency filter 步驟者可得滿分!) 


作業環境:

Windows10

Python 

opencv 4.5.1


作業說明:

1.  imread讀取灰階圖片

2.  fft.fft2進行傅立葉轉換

3.  fftshift把中心對到中間

4.  取絕對值取模,取對數將資料範圍縮小,得到magnitude

5.  angle得到phase

6.  plt輸出三種灰階結果

7.  GaussianBlur得到blur


執行結果:

  
原圖

     

           
   
傅立葉


        
      
相位


     
模糊

    







2021年4月28日 星期三

s1051418 影像處理作業3

l   作業說明:

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

l   使用環境/語言:

n   Windows10

n   Visual Studio 2015

n   Opencv-3.4.1

n   C++


l   特殊程式片段註解/實作方法:

n  dft()進行傅立葉轉換

n  split()分離轉換後的實部及虛部

n  magnitude()生成頻譜

n   phase()生成相位圖

n   GaussianBlur()生成平滑後圖片


l   執行方式/畫面:


l   參考資料:

n   https://blog.csdn.net/zangle260/article/details/52963199

n   https://blog.csdn.net/qq_31935691/article/details/71699569

s1071405 影像處理作業3

作業說明:

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

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

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

(程式利用課本的frequency filter 步驟者可得滿分!) 

操作環境:

  • macOS Big Sur
  • Python 3.8.5
  • OpenCV 4.5.1
  • Numpy 1.19.4 

實作方法: 

  1. cv.imread( )讀取圖片並轉成灰階 
  2. np.fft.fft2( ) 得到Fourier Transform Spectrum 
  3. np.angle( )取得Phase Angle 
  4. np.fft.fftshift( ) Centralize Spectrum 
  5. 乘上Gaussian Low Pass Filter 
  6. np.fft.ifftshift( ) Decentralize Spectrum 
  7. np.fft.ifft2( ) 執行Inverse Fourier Transform得到輸出結果 

執行結果:



s1071532 影像處理作業3

  

離散傅立葉轉換 DFT 練習

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

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

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


程式語言:Python 3.7.3 64-bit


開發環境:

  • Windows 10
  • Visual Studio Code
  • OpenCV 4.5.1


實作方法與演算法:


使用 imread 把全彩圖片以灰階的方式讀進來,經過 numpy 裡面的傅立葉轉換得到了跟圖片一樣大的一個複數(complex)矩陣,再用 numpy 裡的傅立葉 shift 把最低頻率的部分從左上角移到中間。

(1) 頻率各占比的圖是把這些在矩陣裡的複數轉成實數並以 0 ~ 255 的範圍表示;相位角的圖則是運用 numpy 裡的 angle 函式。

(2) 對原灰階圖使用 opencv 裡面的 GaussianBlur 函式。


原圖


灰階


頻率大小


相位角度


after Guassian Low-Pass filter




圖片來源:


s1071242 影像處理作業3

1. 作業題目:

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

2. 開發環境 :
  • Windows 10
  • spyder
  • python 3.8
  • OpenCV 4.5.1

3. 說明:
          
  • imread讀圖片
  • 傅立葉轉換得到頻率分布,結果轉絕對值得到頻譜
  • 使用np.angle()得到相位角
  • 設定mask和頻率相乘得到平滑後圖像
  • plt.show() 秀出title跟圖片
4.執行結果:  左上到左下分別為:原圖 輸出結果 頻譜圖 相位圖
   

s1073330 影像處理作業 3

 一、作業說明:

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

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

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


二、使用環境:

       作業系統: Windows10

          編譯軟體: Visual Studio2017

          程式語言: c++/opencv 4.5.1


三、方法:

       1. imread 從路徑讀取原圖片

       2.將原圖變灰階

       3.dft() 進行傅立葉轉換

       4. split() 分離轉換後的實部及虛部 

       5. magnitude() 生成頻譜

       6. phase() 生成相位圖

       7.GaussianBlurx來生成平滑後圖片

四、執行結果:
原圖


原始傅里葉圖
傅里葉圖

相位圖

Gaussian












2021年4月27日 星期二

s1063320 影像處理作業 1

  1.作業說明:

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

2.開發環境:

Windows 10

Visual Studio 2017

C++

OpenCV 4.5.1

3.程式說明:

1. 我们使用cv :: imread加载图像,并将其保存在Mat对象中

2.执行操作

执行操作g(i,j)=f(i,j)+β我们将访问图像中的每个像素。由于我们使用BGR图像进行操作,

因此每像素(B,G,R)将有三个值,因此我们也将分别访问它们。


3.最后,我们创建窗口,并显示图像

4.輸出:

value=-100



value=0(原始圖片)



value=100


s1063320 影像處理作業 2

  1.作業說明:

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

2.開發環境:

Windows 10

Visual Studio 2017

C++

OpenCV 4.5.1

3.程式說明:

1. 我们使用imread加载图像,并将其保存在Mat对象中

2.利用COLOR_BGR2GRAY把圖片轉成灰階

3用sobel去處理X軸和Y軸

4 addWeighted給予權重將X和Y整和形成新的圖片

4.最后,我们创建窗口,并显示图像

4.輸出:

原圖:



新圖: