[問題] 關於wiener filter 裡的 psf2otf ?

看板MATLAB作者 (弄牛連)時間7年前 (2017/02/20 16:15), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
想請問各位有做影像修正的大大,小弟最近在lab裡解決如何deconv加雜訊了訊號 讀了paper試了幾種deconv方法,像Jansson、Wiener、L-R等等在study wiener時 發現,內建deconvwnr指令一開始有執行一行指令 H = psf2otf(PSF, sizeI) 從名稱來看是轉換psf函數成otf函數,查了一下定義otf函數是psf函數的頻域 再把psf2otf打開看,發現中間有段... -------------------------------------------------------------------- % Circularly shift otf so that the "center" of the PSF is at the % (1,1) element of the array. psf = circshift(psf,-floor(psfSize/2)); % Compute the OTF otf = fftn(psf); --------------------------------------------------------------------- 它把輸入訊號psf做循環移位1/2長度,結果似乎在消除出輸出輸入之間的phase delay?小弟這種理解不知有無錯誤,有人知道為何要如此位移嘛?謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.90.130 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1487578548.A.8A9.html

02/21 02:05, , 1F
如同註解所述,目的是將point spread function的中心移
02/21 02:05, 1F

02/21 02:07, , 2F
到矩陣的左上角. 若實際看一下wiener deconv filter的
02/21 02:07, 2F

02/21 02:08, , 3F
式子,你會看見好幾個在freq. domain上的相乘,這些乘法
02/21 02:08, 3F

02/21 02:11, , 4F
在實際運作時都是Hadamard prodcut,所以那道平移的程序
02/21 02:11, 4F

02/21 02:11, , 5F
多半只是為了確保頻域上的各個項能對齊罷了
02/21 02:11, 5F

02/22 02:05, , 6F
謝謝y大,我知道wiener公式裡頻域相除都是點對點,只是
02/22 02:05, 6F

02/22 02:08, , 7F
對移位1/2長度就能讓頻域對齊很好奇,y大能解釋一下嘛?
02/22 02:08, 7F

02/22 15:54, , 8F
為了下一行的 otf=fftn(psf);
02/22 15:54, 8F
文章代碼(AID): #1OggMqYf (MATLAB)