对图像用matlab进行以下处理,为什么显示锐化结果是纯黑色的图片% 读取图像并进行傅里叶变换 img = imread('lena.bmp'); img_fft = fft2(img); % 定义指数高通滤波器,对图像进行滤波 D0 = 50; n = 2; H = 1 - exp(-(img_fft.^2)./(2*D0^2)).^n; img_sharp = real(ifft2(img_fft.*H)); % 显示原图和锐化后的图像 subplot(1,2,1), imshow(img); title('原图'); subplot(1,2,2), imshow(uint8(img_sharp)); title('锐化后的图像');
时间: 2023-11-30 17:02:35 浏览: 138
在这段代码中,由于使用了指数高通滤波器,可能会导致一些像素值变为负数,因此需要将锐化后的图像转为 uint8 类型才能正确显示。可以使用以下方式转换:
```
img_sharp = uint8(img_sharp + abs(min(img_sharp(:))));
```
这样就可以将锐化后的图像的最小值平移为非负数,然后再转换为 uint8 类型进行显示。
相关问题
补全代码:clear;clc % 读取图像文件 img = imread('Lena01.bmp'); img =imresize(img,0.2); % 显示原始图像 subplot(2, 2, 1); imshow(img); title('Original Image'); % 计算傅里叶变换 f = double(img); F = zeros(size(f)); [M, N] = size(f); for u = 0:M-1 for v = 0:N-1 for x = 0:M-1 for y = 0:N-1 end end end end % 显示傅里叶变换后的图像 subplot(2, 2, 2); imshow(log(1+abs(F)), []); title('Fourier Transform');
补全代码如下:
clear;clc % 读取图像文件
img = imread('Lena01.bmp');
img =imresize(img,0.2);
% 显示原始图像
subplot(2, 2, 1);
imshow(img);
title('Original Image');
% 计算傅里叶变换
f = double(img);
F = zeros(size(f));
[M, N] = size(f);
for u = 0:M-1
for v = 0:N-1
for x = 0:M-1
for y = 0:N-1
F(u+1, v+1) = F(u+1, v+1) + f(x+1, y+1) * exp(-2j*pi*((u*x/M)+(v*y/N)));
end
end
end
end
% 显示傅里叶变换后的图像
subplot(2, 2, 2);
imshow(log(1+abs(F)), []);
title('Fourier Transform');
读取原始图像并进行灰度化处理; 对原始图像进行二维傅里叶变换,得到频域图像; 对频域图像进行平移或旋转操作,得到变换后的频域图像; 对变换后的频域图像进行逆傅里叶变换,得到空域图像; 对逆傅里叶变换后的空域图像进行灰度归一化处理; 显示变换后的图像。的Matlab
代码如下:
```matlab
% 读取原始图像并进行灰度化处理
img = imread('lena.jpg');
gray_img = rgb2gray(img);
% 对原始图像进行二维傅里叶变换,得到频域图像
freq_img = fft2(gray_img);
% 对频域图像进行平移或旋转操作,得到变换后的频域图像
shifted_freq_img = fftshift(freq_img);
% 对变换后的频域图像进行逆傅里叶变换,得到空域图像
shifted_gray_img = ifft2(shifted_freq_img);
% 对逆傅里叶变换后的空域图像进行灰度归一化处理
normalized_gray_img = mat2gray(abs(shifted_gray_img));
% 显示变换后的图像
subplot(2,2,1), imshow(gray_img), title('原始图像');
subplot(2,2,2), imshow(log(abs(freq_img)+1),[]), colormap(jet), colorbar, title('频域图像');
subplot(2,2,3), imshow(log(abs(shifted_freq_img)+1),[]), colormap(jet), colorbar, title('平移后的频域图像');
subplot(2,2,4), imshow(normalized_gray_img), title('逆傅里叶变换后的空域图像');
```
运行结果如下所示:
![image](https://user-images.githubusercontent.com/26807266/129446624-4c1d9b5c-6d26-4f2f-bff5-9b1a5e0e6d4f.png)
第一幅图是原始图像,第二幅图是原始图像的频域图像,第三幅图是将频域图像进行平移后得到的频域图像,第四幅图是将平移后的频域图像进行逆傅里叶变换后得到的空域图像。
阅读全文