首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >频域matlab卷积

频域matlab卷积
EN

Stack Overflow用户
提问于 2013-09-18 14:10:25
回答 1查看 2.2K关注 0票数 2

我只是偶然发现了这个问题,并试图通过实际测试来了解它的影响。

考虑一个(nxn)高斯核。选择相同的适当方差。在频域上对图像进行线性和圆形卷积。你能对结果说点什么吗?

我尝试用下面的代码在Matlab中实现上述功能。

代码语言:javascript
复制
     clc;
     close all;
     clear all;

     I = imread('my_face.jpg');
     Irez = imresize(I,[512 512]); %resize image
     figure(1);
     imshow(Irez);
     Irez = rgb2gray(Irez);

     M = 2*size(I,1)+1;
     N = 2*size(I,2)+1;

     Ifreq = fft2(I,M,N);
     gaus = fspecial('gaussian',5,0.7);

     Igaus = conv2(gaus,abs(Ifreq));
     Iface = real(ifft2(Igaus));
     Iout = Iface(1:size(I,1),1:size(I,2));
     figure(2)
     imshow(Iout);

我的问题是:

  1. 我在正确的轨道上吗?我在做问题期待我做的事吗?还是应该考虑或考虑高斯核的fft,或者在频域上有相似的高斯核?如果你们找到了实现这一目标的正确方法,请告诉我。
  2. 线性卷积的等价形式是乘法。什么是圆形卷积?

此外,上面的代码给出了以下错误:

未定义函数或方法“conv2”用于输入类型为“double”的参数和属性“完整的三维真实”

显然,对于conv2的输入,两者必须是双倍的。你能帮我实际解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-18 15:02:57

我认为您在f特殊函数中提供了正确的参数。您必须指定此函数中的列和行数。我从matlab中复制了以下几行:

H= fspecial('average',hsize)返回大小为hsize的平均滤波器h。参数hsize可以是指定h中行数和列数的向量,也可以是标量,在这种情况下,h是方阵。hsize的默认值是3 3。

代码语言:javascript
复制
gaus = fspecial('gaussian', [M N],5,0.7);

您可以在这里找到更多关于它的信息:http://www.mathworks.se/help/images/ref/fspecial.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18874530

复制
相关文章

相似问题

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