【发布时间】:2016-12-05 20:32:03
【问题描述】:
我需要对 matlab 中的图像执行以下操作:
- 加载图片。
- 计算图像的 FFT(快速傅里叶变换)。
- 将频率分量移到中心。
- 像下面这样裁剪图像(如果图像分辨率为 1000x1000,则图像所需的部分如下坐标:100,100,800,800。这是一个较小的图像。(应用过滤器去除高频的想法)。
- 反向移位。
- 傅立叶逆变换。
。 . .
我的代码如下所示:
I = imread('2.jpg'); %loading
ID = im2double(I);
FID = fft2(ID); %FFT
F = fftshift(FID); %shifting
F = imcrop(F,[100, 100, 800, 800]);
FID = ifftshift(F); %inverse of shifting
IFID = ifft2(FID); %inverse of FFT
I8 = im2uint8(IFID);
问题是当我想裁剪图像时,imcrop 函数无法裁剪类型为“complex double”的图像,我认为..
错误:
使用 imcrop 时出错>checkCData(第 410 行) 输入图像无效。
imcrop 中的错误>parseInputs(第 256 行) checkCData(a);
imcrop 中的错误(第 93 行) [x,y,a,cm,spatial_rect,h_image,placement_cancelled] = parseInputs(varargin{:});
ِ有什么帮助吗? .. 还有其他裁剪功能吗?
【问题讨论】:
-
注意,在频域裁剪图像也会减小时域图像的大小。如果您只想“移除”高频分量但保持相同的图像大小,那么您可以将这些像素归零而不是直接移除它们。
-
这是我的旧想法,但我无法应用它,你能帮帮我吗?