【圖像融合】基于剪切變換和平均亮度的圖像融合算法研究附matlab代碼
??作者簡(jiǎn)介:熱愛科研的Matlab仿真開發(fā)者,修心和技術(shù)同步精進(jìn),
完整代碼、論文復(fù)現(xiàn)、期刊合作、論文輔導(dǎo)及科研仿真合作可私信。
??個(gè)人主頁(yè):Matlab科研工作室
??個(gè)人信條:格物致知。
更多Matlab完整代碼及仿真定制內(nèi)容點(diǎn)擊??
?? ? ?? ?? ? ?? ? ? ? ?? ? ? ?
?? ? ? ? ? ? ? ?? ? ? ? ? ? ?? ?? ? ?? ?? ? ? ?
?? 內(nèi)容介紹
圖像融合是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)重要研究方向,旨在將多幅圖像融合成一幅更具信息豐富度和視覺效果的圖像。本文將介紹一種基于剪切變換和平均亮度的圖像融合算法,并詳細(xì)闡述其算法步驟。
圖像融合算法的目標(biāo)是將多幅圖像中的有用信息進(jìn)行合理的融合,以產(chǎn)生一幅更好的圖像。該算法的步驟主要包括:圖像預(yù)處理、剪切變換、亮度調(diào)整和圖像合成。
首先,進(jìn)行圖像預(yù)處理。這一步驟主要是對(duì)待融合的圖像進(jìn)行一些基本的處理,如調(diào)整圖像大小、去除噪聲等。預(yù)處理的目的是為了提高后續(xù)步驟的處理效果。
接下來(lái)是剪切變換。該步驟的目的是將待融合的圖像進(jìn)行剪切,以使它們的邊緣對(duì)齊。剪切變換可以通過(guò)尋找兩幅圖像之間的共同特征點(diǎn),并進(jìn)行相應(yīng)的變換來(lái)實(shí)現(xiàn)。這樣做的好處是能夠減少融合后圖像的失真程度,提高融合效果。
然后是亮度調(diào)整。在剪切變換之后,由于圖像的亮度可能存在差異,需要對(duì)圖像的亮度進(jìn)行調(diào)整,以使它們的亮度更加一致。常用的亮度調(diào)整方法包括直方圖均衡化和灰度拉伸等。通過(guò)亮度調(diào)整,可以使融合后的圖像更加自然和逼真。
最后是圖像合成。在經(jīng)過(guò)前面的步驟之后,可以將剪切變換和亮度調(diào)整后的圖像進(jìn)行融合。常用的圖像融合方法有加權(quán)平均法和多分辨率融合法等。加權(quán)平均法是將待融合的圖像按照一定的權(quán)重進(jìn)行加權(quán)平均,得到最終的融合圖像。多分辨率融合法是將圖像分解成不同的分辨率層次,然后對(duì)每個(gè)層次進(jìn)行融合,最后再進(jìn)行重建。這些方法可以根據(jù)實(shí)際需求選擇,以獲得最佳的融合效果。
綜上所述,基于剪切變換和平均亮度的圖像融合算法是一種有效的圖像融合方法。通過(guò)對(duì)圖像進(jìn)行剪切變換和亮度調(diào)整,以及采用合適的圖像合成方法,可以得到一幅更具信息豐富度和視覺效果的融合圖像。這種算法在計(jì)算機(jī)視覺領(lǐng)域有著廣泛的應(yīng)用前景,可以用于圖像增強(qiáng)、目標(biāo)檢測(cè)等方面,具有重要的研究和實(shí)際價(jià)值。
?? 部分代碼
addpath(genpath('ShearLab3D'))
% 讀取圖像
img1 = imread('c07_1.tif');
img2 = imread('c07_2.tif');
% 調(diào)整圖像尺寸
figure(1);
img1 = imresize(img1,[512,512]);
imshow(img1);
title('Image1');
figure(2);
img2 = imresize(img2,[512,512]);
imshow(img2);
title('Image2');
oeffs_fused,shearletSystem);
% 顯示融合圖像
figure(3);
imshow(uint8(fused_image));
title('Fused Image');
% 原圖像
original1 = double(img1);
original2 = double(img2);
% Peak Signal-to-Noise Ratio (PSNR)
% psnr1 = psnr(fused_image, original1);
% psnr2 = psnr(fused_image, original2);
psnr1 = calculate_psnr(fused_image, original1);
psnr2 = calculate_psnr(fused_image, original2);
fprintf('PSNR for image 1: %f\n', psnr1);
fprintf('PSNR for image 2: %f\n', psnr2);
% Structural Similarity Index (SSIM)
ssim1 = ssim(fused_image, original1);
ssim2 = ssim(fused_image, original2);
fprintf('SSIM for image 1: %f\n', ssim1);
fprintf('SSIM for image 2: %f\n', ssim2);
% % Mean Squared Error (MSE)
% mse1 = immse(fused_image, original1);
% mse2 = immse(fused_image, original2);
% fprintf('MSE for image 1: %f\n', mse1);
% fprintf('MSE for image 2: %f\n', mse2);
%
% % Mean Absolute Difference (MAD)
% mad1 = mean(abs(fused_image(:) - original1(:)));
% mad2 = mean(abs(fused_image(:) - original2(:)));
% fprintf('MAD for image 1: %f\n', mad1);
% fprintf('MAD for image 2: %f\n', mad2);
%
% % NCC
% ncc_value1 = NCC(fused_image, original1);
% ncc_value2 = NCC(fused_image, original2);
% fprintf('NCC for image 1: %f\n', ncc_value1);
% fprintf('NCC for image 2: %f\n', ncc_value2);
%
% % MAE
% mae_value1 = MAE(fused_image, original1);
% mae_value2 = MAE(fused_image, original2);
% fprintf('MAE for image 1: %f\n', mae_value1);
% fprintf('MAE for image 2: %f\n', mae_value2);
% Compute the standard deviation
sd_fused = std(double(fused_image(:)));
fprintf('SD of fused image: %f\n', sd_fused);
% Spatial Frequency
sf = mean(abs(diff(double(fused_image), 1, 1)), 'all') + mean(abs(diff(double(fused_image), 1, 2)), 'all');
fprintf('Spatial Frequency of fused image: %f\n', sf);
% Average Gradient
[gradX, gradY] = gradient(double(fused_image));
ag = mean(sqrt(gradX.^2 + gradY.^2), 'all');
fprintf('Average Gradient of fused image: %f\n', ag);
% Information Entropy
ie = entropy(fused_image);
fprintf('Information Entropy of fused image: %f\n', ie);
% Mutual Information
mi1 = mi(double(original1), double(fused_image));
fprintf('Mutual Information of fused image and original image 1: %f\n', mi1);
mi2 = mi(double(original2), double(fused_image));
fprintf('Mutual Information of fused image and original image 2: %f\n', mi2);
% Additional functions
function ncc = NCC(img1, img2)
? ?img1 = img1 - mean(img1(:));
? ?img2 = img2 - mean(img2(:));
? ?numerator = sum(sum(img1 .* img2));
? ?denominator = sqrt(sum(sum(img1 .^ 2)) * sum(sum(img2 .^ 2)));
? ?ncc = numerator / denominator;
end
function mae = MAE(target, reference)
? ?error = target - reference;
? ?mae = mean(abs(error(:)));
end
% Define the Mutual Information function
function h = mi(A,B)
?A = round((A - min(A(:))) / (max(A(:)) - min(A(:))) * 255);
?B = round((B - min(B(:))) / (max(B(:)) - min(B(:))) * 255);
?jointHistogram = accumarray([A(:) B(:)]+1, 1) / numel(A);
?jointEntropy = - sum(jointHistogram(jointHistogram > 0) .* log2(jointHistogram(jointHistogram > 0)));
?entropyA = entropy(uint8(A));
?entropyB = entropy(uint8(B));
?h = entropyA + entropyB - jointEntropy;
end
function psnr_val = calculate_psnr(img1, img2)
? ?img1 = double(img1);
? ?img2 = double(img2);
? ?mse = mean((img1(:) - img2(:)).^2);
? ?if mse == 0
? ? ? ?psnr_val = Inf;
? ?else
? ? ? ?maxValue = double(max(img1(:)));
? ? ? ?psnr_val = 20 * log10(maxValue/sqrt(mse));
? ?end
end
?? 運(yùn)行結(jié)果

?? 參考文獻(xiàn)
[1] 徐領(lǐng)章.基于TMS320DM6467的紅外與微光圖像融合算法研究[D].云南師范大學(xué),2016.
[2] 楊金庫(kù).基于二維經(jīng)驗(yàn)?zāi)B(tài)分解的圖像融合算法研究[D].西北工業(yè)大學(xué)[2023-10-27].DOI:CNKI:CDMD:1.1017.803623.
[3] 吳璐璐.基于小波變換域的視頻水印算法研究[D].江西理工大學(xué),2013.