频率域图像增强MATLAB实现
2017-11-23 11:11
363 查看
1.fft2()函数
2、fftshift()
3、ifft2()
对频谱进行处理(如log压缩舒展处理),在把频谱转换成空间域图像。
有意思的交换相位谱
4、频域滤波的步骤
5、理想低通滤波器
6、高斯低通滤波器
实际上,常用高斯低通滤波器。
应用例子:
7、高斯高通滤波器
8、拉普拉斯高通滤波器
参考:1、http://www.epubit.com.cn/book/onlinechapter/15159
2、http://whuhan2013.github.io/blog/2016/12/25/my-image-strong/
Y=fft2(X,m,n);%二维快速傅里叶操作
2、fftshift()
Ys=fftshift(Y,dim);%零频移到中间
3、ifft2()
对频谱进行处理(如log压缩舒展处理),在把频谱转换成空间域图像。
Xf=ifft2(Ys);%傅里叶反变换
有意思的交换相位谱
% c6s2.m % 读取图片 A = rgb2gray(imresize(imread('G:\0ShiJue\1.jpg'),[225,225])); B = rgb2gray(imread('G:\0ShiJue\tennisBall.jpg')); % 求傅立叶变换 Af = fft2(A); Bf = fft2(B); % 分别求幅度谱和相位谱 AfA = abs(Af); AfB = angle(Af); BfA = abs(Bf); BfB = angle(Bf); % 交换相位谱并重建复数矩阵 AfR = AfA .* cos(BfB) + AfA .* sin(BfB) .* i; BfR = BfA .* cos(AfB) + BfA .* sin(AfB) .* i; % 傅立叶反变换 AR = abs(ifft2(AfR)); BR = abs(ifft2(BfR)); % 显示图像 subplot(2,2,1); imshow(A); title('美女原图像'); subplot(2,2,2); imshow(B); title('猫的原图像'); subplot(2,2,3); imshow(AR, []); title('美女的幅度谱和猫的相位谱组合'); subplot(2,2,4); imshow(BR, []); title('猫的幅度谱和美女的相位谱组合');
4、频域滤波的步骤
If=fft2(I);%原图傅里叶变换 Is=fftshift(If);%零频移到中心 Iout=Is.*Hs;%与频域滤镜相乘 Iout=ifftshift(Iout);%零频移到左上 Iout=ifft2(Iout);%傅里叶反变换 imshow(Iout);%输出
5、理想低通滤波器
function Hs=imidealflpf(I,freq) [m n]=size(I); Hs=ones(m,n); for i=1:m forj=1:n if(sqrt((i-m/2)^2+(j-N/2)^2))>freq) Hs(i,j)=0; end end end
6、高斯低通滤波器
实际上,常用高斯低通滤波器。
function out = imgaussflpf(I, sigma) % imgaussflpf函数 构造频域高斯低通滤波器 % I参数 输入的灰度图像 % sigma参数 高斯函数的Sigma参数 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N out(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2); end end
应用例子:
I = imread('../baby_noise.bmp'); %读入原图像 % 生成滤镜 ff = imgaussflpf (I, 20); % 应用滤镜 out = imfreqfilt(I, ff); figure (1); subplot(2,2,1); imshow(I); title('Source'); % 计算FFT并显示 temp = fft2(double(I)); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,1); imshow(temp, []); title('Source'); figure (1); subplot(2,2,2); imshow(out); title('Gauss LPF, sigma=20'); % 计算FFT并显示 temp = fft2(out); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,2); imshow(temp, []); title(' Gauss LPF, sigma=20'); % 生成滤镜 ff = imgaussflpf (I, 40); % 应用滤镜 out = imfreqfilt(I, ff); figure (1); subplot(2,2,3); imshow(out); title('Gauss LPF, sigma =40'); % 计算FFT并显示 temp = fft2(out); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,3); imshow(temp, []); title(' Gauss LPF, sigma =40'); % 生成滤镜 ff = imgaussflpf (I, 60); % 应用滤镜 out = imfreqfilt(I, ff); figure (1); subplot(2,2,4); imshow(out); title('Gauss LPF, sigma =60'); % 计算FFT并显示 temp = fft2(out); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,4); imshow(temp, []); title(' Gauss LPF, sigma =60');
7、高斯高通滤波器
function out = imgaussfhpf(I, sigma) % imgaussfhpf函数 构造频域高斯高通滤波器 % I参数 输入的灰度图像 % sigma参数 高斯函数的Sigma参数 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N out(i,j) = 1 - exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2); end end
8、拉普拉斯高通滤波器
function out = imlapf(I) % imlapff函数 构造频域拉普拉斯滤波器 % I参数 输入的灰度图像 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N out(i,j) = -((i-M/2)^2+(j-N/2)^2); end end
参考:1、http://www.epubit.com.cn/book/onlinechapter/15159
2、http://whuhan2013.github.io/blog/2016/12/25/my-image-strong/
相关文章推荐
- 频率域图像增强及MATLAB实现
- 空间域图像增强及MATLAB实现
- 骨骼图像增强实验matlab实现
- 哈工大深研院数字图像处理第一次大作业:不调用Matlab函数实现图像增强
- 哈工大深研院数字图像处理第一次大作业:不调用Matlab现有库函数实现图像增强
- matlab实现图像增强
- 常用图像边缘检测、增强MATLAB实现
- (4)MATLAB 频率域图像增强
- (4)MATLAB 频率域图像增强
- 骨骼图像增强实验matlab实现
- 一种图像的曝光增强算法 MATLAB 实现
- Matlab在读取图像时怎么实现手动选择图像
- MATLAB图像增强程序举例
- (实验一) --- 彩色图像变换成灰度图像---matlab实现
- (实验二) --- 图像旋转变换---matlab实现
- 图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法
- 将CCD的RAW图像格式文件直接读入到MATLAB中实现
- 转 频率域图像增强
- 图像增强算法效果评价指标及实现
- 基于PCNN的图像分割的matlab实现