为了简单起见,我得到了两个矩阵,A (逆滤波器)和B (频域图像)。
A=ones(20,20);
B=zeros(33,33);我想把它们乘以这样的元素:
C=A.*B;为了信号处理的目的(在频域找到乘积,然后再变换回来(图像恢复)。
要做到这一点,我应该放置最小的数组,使其为A[33,33],但当我这样做时
A=padarray(A,[7,7]);这使得size(A)=(44,44);,然后像这样的东西
A=A(1:33,1:33); 我的形象不是居中的,我不可能有预期的结果。
怎样才能使图像A中心化,然后与B相乘?
发布于 2016-05-19 06:20:31
使用fftshift怎么样?
pA = fftshift(A);
pA(size(B,1),size(B,2)) = 0; %// fill with zeros, high frequencies
pA = ifftshift(pA); 发布于 2016-05-19 06:34:04
你可以和前填充和后填充一起去
A = ones(20,20);
B=zeros(33,33);
A = padarray(A,7,'symmetric','pre');
A = padarray(A',7,'symmetric','pre');
A = padarray(A,6,'symmetric','post');
A = padarray(A',6,'symmetric','post');
C = A.*B;我只是按对称做了填充物。因为A的所有元素都是1,所以根据对称性,它确实把它和其他元素放在一起。你可以尝试不同,只需要写
help padarray在命令提示符中,检查"padarray“在不同情况下的实际工作方式,也适用于您的代码,我用7填充最上面的pre,用6表示post,使其变为13。
https://stackoverflow.com/questions/37313024
复制相似问题