%
%
% 函数功能:利用稀疏表达的方式进行图像融合测试
% 稀疏融合的步骤:1.构建DCT字典,大小64*256
% 2.对两幅图进行分割,按列重组,分别形成blocks
% 3.利用OMP算法,对重组的blocks进行求解系数,生成系数矩阵
% 4.对生成的系数矩阵取大值(绝对值大)融合规则,生成新的系数矩阵
% 5.图像重构:blocks重构和blocks到图像的重构
clc
close all
clear
%% 读取,对图像进行初始化
red=imread('E:\图片素材\红外图像.bmp');
vis=imread('E:\图片素材\可见光.bmp');
red=double(rgb2gray(red));
vis=double(rgb2gray(vis));
red=imresize(red,[225,253],'bicubic');
vis=imresize(vis,[225,253],'bicubic');
tic
%% 构建字典
bb=8;%滑动窗口的大小,也是标准字典的行数
Pn=16;% 用于构建字典
DCT=CreatDictionary(bb,Pn);
%% 对图像进行分割,按列重组
slidingDis=1;%步长
[red_blocks,red_indx]=img_im2col(red,[bb,bb],slidingDis);
[vis_blocks,vis_indx]=img_im2col(vis,[bb,bb],slidingDis);
%% 利用OMP算法对两个blocks块进行系数求解,生成系数矩阵
K=20; %稀疏度
red_coef=img_OMP(DCT,red_blocks,K);
vis_coef=img_OMP(DCT,vis_blocks,K);
%% 对系数矩阵取大值融合 能否用矩阵的方式解决??
coef=zeros(size(red_coef));
[m,n]=size(red_coef);
for i=1:m
for j=1:n
if abs(red_coef(i,j))>abs(vis_coef(i,j))
coef(i,j)=red_coef(i,j);
else
coef(i,j)=vis_coef(i,j);
end
end
end
%% blocks重构
blocks=DCT*coef;
%% blocks到图像的重构
count=1;
Weight=zeros(size(red)); %权重矩阵
img_fusion=zeros(size(red)); %
indx=red_indx; %因为red_indx和vis_indx保存的是窗口滑动过的块索引,所以这两个一致
[rows,cols]=ind2sub(size(red)-bb+1,indx); %将索引值转换成下标表示.和my_im2col函数中的一样
for i=1:length(cols)
col=cols(i);
row=rows(i);
block=reshape(blocks(:,count),[bb,bb]);%block为值均相同的8*8的矩阵.每一列还原成8*8小块
%block
img_fusion(row:row+bb-1,col:col+bb-1)=img_fusion(row:row+bb-1,col:col+bb-1)+block;%0矩阵加上图像小块,拼接图像
Weight(row:row+bb-1,col:col+bb-1)=Weight(row:row+bb-1,col:col+bb-1)+ones(bb);%%%累计加了多少个block,到最后除以累加的次数即可
% 因为滑动窗口在滑动过程中,同一位置会出现不同的窗口情况
count=count+1; %列数更新
end;
img_fusion=img_fusion./Weight;
toc
figure
subplot(1,3,1)
imshow(uint8(red))
subplot(1,3,2)
imshow(uint8(vis))
subplot(1,3,3)
imshow(uint8(img_fusion))
稀疏融合.zip_DCT字典_dct 字典_dct 融合_图像稀疏_图像融合
版权申诉
38 浏览量
2022-07-15
12:34:10
上传
评论
收藏 4KB ZIP 举报
APei
- 粉丝: 64
- 资源: 1万+
最新资源
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- MicroMsg.xlsx
- 88-520告白(520气球).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0