clear;
Irgb_a = imread('1.jpg'); %读入图片
[m, n, l] = size(Irgb_a);
Igray_a = rgb2gray(Irgb_a); %转化成灰度图
Igfft_a = fft2(Igray_a); %对灰度图进行dct变换
I1 = im2double(Irgb_a); %将数据转换成双精度格式
for i = 1:m
for j = 1:n
for k = 1:l
I(i,j+(k-1)*n) = I1(i,j,k);
end
end
end
Irfft = fft2(I);
for i = 1:m
for j = 1:n
for k = 1:l
Irifft_a(i,j,k) = I(i,j+(k-1)*n);
end
end
end
%imshow(Igray_a);
%title('原始灰度图');
%figure, imshow(log(abs(Igfft_a)),[]), colormap(jet(64)),colorbar;
%title('空间频谱图');
%figure,imshow(Irgb_a);
%title('原始彩图');
%figure,imshow(Irifft_a);
%title('复原彩图');
Irgb_b = imread('2.jpg'); %读入图片
[m, n, l] = size(Irgb_b);
Igray_b = rgb2gray(Irgb_b); %转化成灰度图
Igfft_b = fft2(Igray_b); %对灰度图进行dct变换
I1 = im2double(Irgb_b); %将数据转换成双精度格式
for i = 1:m
for j = 1:n
for k = 1:l
I(i,j+(k-1)*n) = I1(i,j,k);
end
end
end
Irfft = fft2(I);
for i = 1:m
for j = 1:n
for k = 1:l
Irifft_b(i,j,k) = I(i,j+(k-1)*n);
end
end
end
%imshow(Igray_b);
%title('原始灰度图');
%figure, imshow(log(abs(Igfft_b)),[]), colormap(jet(64)),colorbar;
%title('空间频谱图');
%figure,imshow(Irgb_b);
%title('原始彩图');
%figure,imshow(Irifft_b);
%title('复原彩图');
Irgb_c = imread('3.jpg'); %读入图片
[m, n, l] = size(Irgb_c);
Igray_c = rgb2gray(Irgb_c); %转化成灰度图
Igfft_c = fft2(Igray_c); %对灰度图进行dct变换
I1 = im2double(Irgb_c); %将数据转换成双精度格式
for i = 1:m
for j = 1:n
for k = 1:l
I(i,j+(k-1)*n) = I1(i,j,k);
end
end
end
Irfft = fft2(I);
for i = 1:m
for j = 1:n
for k = 1:l
Irifft_c(i,j,k) = I(i,j+(k-1)*n);
end
end
end
%imshow(Igray_c);
%title('原始灰度图');
%figure, imshow(log(abs(Igfft_c)),[]), colormap(jet(64)),colorbar;
%title('空间频谱图');
%figure,imshow(Irgb_c);
%title('原始彩图');
%figure,imshow(Irifft_c);
%title('复原彩图');
%叠加部分程序
a=imread('1.jpg');
%a=rgb2gray(a);
b=imread('2.jpg');
%b=rgb2gray(b);
c=imread('3.jpg');
%c=rgb2gray(c);
T=0.25; %融合的一个比例值
t=[T^2 2*T*(1-T) (1-T)^2];
result_image=a.*t(1)+b.*t(2)+c.*t(3);
%计算频谱
Irgb_r = result_image; %读入图片
[m, n, l] = size(Irgb_r);
Igray_r = rgb2gray(Irgb_r); %转化成灰度图
Igfft_r = fft2(Igray_r); %对灰度图进行dct变换
I1 = im2double(Irgb_r); %将数据转换成双精度格式
for i = 1:m
for j = 1:n
for k = 1:l
I(i,j+(k-1)*n) = I1(i,j,k);
end
end
end
Irfft = fft2(I);
for i = 1:m
for j = 1:n
for k = 1:l
Irifft_r(i,j,k) = I(i,j+(k-1)*n);
end
end
end
%imshow(Igray_r);
%title('原始灰度图');
%figure, imshow(log(abs(Igfft_r)),[]), colormap(jet(64)),colorbar;
%title('空间频谱图');
%figure,imshow(Irgb_r);
%title('原始彩图');
%figure,imshow(Irifft_r);
%title('复原彩图');
figure;
subplot(221);
imshow(Irgb_a);
title('原始彩图a');
subplot(222);
imshow(Irgb_b);
title('原始彩图b');
subplot(223);
imshow(Irgb_c);
title('原始彩图c');
subplot(224);
imshow(Irgb_r);
title('原始彩图r');
figure;
subplot(221);
imshow(log(abs(Igfft_a)),[]), colormap(jet(64)),colorbar;
title('空间频谱图a');
subplot(222);
imshow(log(abs(Igfft_b)),[]), colormap(jet(64)),colorbar;
title('空间频谱图b');
subplot(223);
imshow(log(abs(Igfft_c)),[]), colormap(jet(64)),colorbar;
title('空间频谱图c');
subplot(224);
imshow(log(abs(Igfft_r)),[]), colormap(jet(64)),colorbar;
title('空间频谱图r');
figure;
subplot(221);
imshow(log(abs(Igfft_r-Igfft_a)),[]), colormap(jet(64)),colorbar;
title('r频谱-a频谱');
subplot(222);
imshow(log(abs(Igfft_r-Igfft_b)),[]), colormap(jet(64)),colorbar;
title('r频谱-b频谱');
subplot(223);
imshow(log(abs(Igfft_r-Igfft_c)),[]), colormap(jet(64)),colorbar;
title('r频谱-c频谱');
subplot(224);
imshow(log(abs(Igfft_r-Igfft_r)),[]), colormap(jet(64)),colorbar;
title('r频谱-r频谱');
结果例:
分享到:
相关推荐
利用MATLAB生成正弦信号并利用FFT对其频谱进行分析,并比较不同情况的异同
给出了完整的FFT的C语言代码,以及MATLAB的仿真效果,主要解决了FFT计算频谱图的问题。注意大部分周期信号的最小非零频率分量就是基波,但是还有很多信号并不是这样:比如y=sin(2πx) +sin(3πx)的信号周期为2,对应...
利用MATLAB编写的关于频谱细化(Zfft)的程序,有注释。
基于MATLAB的FFT离散频谱分析.pdf
基于FFT的频谱显示MATLAB设计 基于FFT的频谱显示MATLAB设计
文中介绍了基于FFT频谱分析与频谱图显示的原理,Matlab的相关功能函数,并 给出了一个程序实例及其实验结果.实验结果表明,该法所需的编程简单,对设备硬件要求不高, 易于实现,能快速地在普通通用PC机上完成信号的频谱...
matlab 数字信号处理 FFT的频谱信号分析Matlab示例程序
FFT频谱分析
自己的课设程序,要求用matlab实现读取音频文件和声卡采集,并FFT分析频谱,提供IIR、FIR两种滤波方式(高通、低通、带通),含有打包好的exe文件,不过如果你的电脑上不是matlab2013a版的可能运行不了,可以在自己...
可用于对一些时域信号,在频域内进行转换,从频域角度对结果进一步分析
FFT频谱测试法Matlab代码.,matlab的fft频谱分析,matlab源码.zip
Matlab编程实现FFT实践及频谱分析
MATLAB中使用FFT做频谱分析时频率分辨率问题-频率分辨率.rar MATLAB中使用FFT做频谱分析时频率分辨率问题 最近做FFT时,使用的采样频率和信号长度的取舍一直没有搞清楚,后来在论坛上发了一个贴子《总结一下使用...
fft与边际谱的对比,并画出hilbert图和三维时频谱图
Matlab的系统信号FFT频谱分析与显示pdf-Matlab的系统信号FFT频谱分析与显示.rar [local]1Matlab的系统信号FFT频谱分析与显示
基于MATLAB的FM信号解调,采用正交解调,并计算FFT得到信号频谱
基于FFT的频谱信号分析Matlab示例程序
FFT频谱测试法Matlab代码 FFT频谱测试法Matlab代码
Matlab编程实现FFT实践及频谱分析-Matlab编程实现FFT实践及频谱分析.doc Matlab编程实现FFT实践及频谱分析 Matlab4.jpg 管理员提示:在发布文献的时候,请对文献做简单介绍。