作者nc23nick (弄牛连)
看板MATLAB
标题[问题] 关於wiener filter 里的 psf2otf ?
时间Mon Feb 20 16:15:46 2017
想请问各位有做影像修正的大大,小弟最近在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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1487578548.A.8A9.html
1F:→ YoursEver: 如同注解所述,目的是将point spread function的中心移 02/21 02:05
2F:→ YoursEver: 到矩阵的左上角. 若实际看一下wiener deconv filter的 02/21 02:07
3F:→ YoursEver: 式子,你会看见好几个在freq. domain上的相乘,这些乘法 02/21 02:08
4F:→ YoursEver: 在实际运作时都是Hadamard prodcut,所以那道平移的程序 02/21 02:11
5F:→ YoursEver: 多半只是为了确保频域上的各个项能对齐罢了 02/21 02:11
6F:→ nc23nick: 谢谢y大,我知道wiener公式里频域相除都是点对点,只是 02/22 02:05
7F:→ nc23nick: 对移位1/2长度就能让频域对齐很好奇,y大能解释一下嘛? 02/22 02:08
8F:→ YoursEver: 为了下一行的 otf=fftn(psf); 02/22 15:54