首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab卷积算子A与伴随算子

matlab卷积算子A与伴随算子
EN

Stack Overflow用户
提问于 2014-04-29 13:11:05
回答 1查看 780关注 0票数 0

我想要计算卷积算子A和伴随算子AT,我需要计算AU =H* U,和AT(AU),其中H是核心,比图像小得多。这是我的代码,有问题吗?我不知道如何将内核扩展到和U一样的大小,谢谢!

代码语言:javascript
复制
      [M,N] = size(U);
      Mask = zeros(M,N);
      [H1,L] = size(H);
      %Mask([end+1-floor(H1/2):end,1:ceil(H1/2)],[end+1-floor(L/2):end,1:ceil(L/2)]) = H;
      Mask(1:size(h,1),1:size(h,2)) = H;  % here I am not sure!!!!
      FMask=fft2(Mask);
      AU =iff2(FMask.*(fft2(U)))  %%%  AU= H*U 
      ATAU= iff2((abs(FMask).^2).*(fft2(U))) %AT(AU) 
EN

回答 1

Stack Overflow用户

发布于 2014-04-29 21:39:51

“我不知道如何把核扩展到和U.这是一个很好的问题,它最正式地称为填充。有很多种方法来填充你的过滤器,当然,最简单的方法就是在外部添加一些零。这Q和a有一些关于零填充效应的信息。这一资源还提供了一些关于填充效果的良好信息。

下面是一个可能有帮助的小例子:

代码语言:javascript
复制
im=imread('peppers.png');
[rows,cols,bands]=size(im);
% //make the meshgrid of coordinates
x=1:cols;y=1:rows;
[X,Y] = meshgrid(x,y);

% //compute the filter in the fourier domain,
% //centered top right so we dont need to shift
filter = mvnpdf([X(:) Y(:)],[0 0]',sigma.*eye(2));
filter = reshape(filter,[rows,cols]);

% //convolution theorem
im_fft = fft2(im);
im_filt = ifft(im_fft.*repmat(filter,[1,1,bands]));

% //display
figure;subplot(1,2,1);imagesc(im);title('Original image');
subplot(1,2,2);imagesc(im_filt);title('Filtered Image');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23365669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档