matlab 拉普拉斯金字塔,图像拉普拉斯金字塔(laplacian pyramid)并从金字塔重建原图 matlab程序实现...

clear

inputPath ='D:\数字图像处理\研究方向\Filter Smooth\images\';

filename = [inputPath 'pai.png'];

I = im2double(imread(filename));

if size(I,3)==3

I=rgb2gray(I);

end

nlev=4;

sigma=1;

sigma_r=0.1;

f = [.05, .25, .4, .25, .05];

f = f'*f;

%构建拉普拉斯金字塔

pyr = cell(nlev,1);

J = I;

for l = 1:nlev-1

J_gauss = imfilter(J,f,'replicate');

J_gauss_down = J_gauss(1:2:size(J_gauss,1)-1,1:2:size(J_gauss,2)-1); %downsample

J_gauss_high = imresize(J_gauss_down,[size(J_gauss,1) size(J_gauss,2)],'bilinear');

pyr{l} = J-J_gauss_high;

J=J_gauss_down;

end

pyr{nlev}=J_gauss_down;

% for i=1:length(pyr)

% figure;imshow(mat2gray(pyr{i}));

% end

%从金字塔重建图像

out = pyr{nlev};

for l = nlev-1 : -1 : 1

out = pyr{l} + imresize(out,[size(pyr{l},1) size(pyr{l},2)],'bilinear');

end

figure;imshow([mat2gray(out),I]);title('重建之后图像,原图');

% figure;imshow(I);

下面是运行效果:

0818b9ca8b590ca3270a3433284dd417.png

以下是利用拉普拉斯金字塔分解图像实现可见光和红外光图像融合的 MATLAB 程序: ```matlab % 读取可见光图像和红外光图像 vis_img = imread('Visible_Image.png'); ir_img = imread('IR_Image.png'); % 将图像转换为灰度图像 vis_img_gray = rgb2gray(vis_img); ir_img_gray = rgb2gray(ir_img); % 对灰度图像进行拉普拉斯金字塔分解 n_levels = 5; vis_lap_pyramid = laplacian_pyramid(vis_img_gray, n_levels); ir_lap_pyramid = laplacian_pyramid(ir_img_gray, n_levels); % 创建拉普拉斯金字塔混合图像 mix_lap_pyramid = cell(1, n_levels); for i = 1:n_levels mix_lap_pyramid{i} = (vis_lap_pyramid{i} + ir_lap_pyramid{i}) / 2; end % 重建混合图像 mix_img = reconstruct_laplacian_pyramid(mix_lap_pyramid); % 显示混合图像 imshow(mix_img); % 拉普拉斯金字塔分解函数 function lap_pyramid = laplacian_pyramid(img, n_levels) lap_pyramid = cell(1, n_levels); for i = 1:n_levels if i == 1 % 第一层为原始图像 lap_pyramid{i} = img; else % 上采样前一层并减去下采样后一层 prev_level = lap_pyramid{i-1}; downsampled = imresize(prev_level, 0.5); upsampled = imresize(downsampled, size(prev_level)); lap_pyramid{i} = prev_level - upsampled; end end end % 拉普拉斯金字塔重建函数 function img = reconstruct_laplacian_pyramid(lap_pyramid) n_levels = length(lap_pyramid); img = lap_pyramid{n_levels}; for i = n_levels-1:-1:1 % 上采样后一层并加上当前层 upsampled = imresize(img, 2); img = lap_pyramid{i} + upsampled; end end ``` 请注意,此程序仅仅是实现了基于拉普拉斯金字塔图像融合方法,实际应用中可能需要根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值