一、基于DCT變換的圖像融合算法簡介
在圖像融合過程中,最主要的就是如何提取低高頻系數以及低高頻系數的融合準則。基于DCT變換的圖像融合算法原理如圖2所示。
圖2 DCT融合算法原理
算法步驟如下。
步驟1精确配準待融合的源圖像。
步驟2采用分塊的方法将參與融合的每幅大小為M×N的源圖像分别分成m×m個小塊。
步驟3對步驟2中得到的小塊都進行DCT變換。
步驟4對通過DCT變換的小塊分别提取低頻系數和高頻系數,并對相應位置的低高頻系數根據低高頻融合準則進行融合。
步驟5對已融合的DCT系數進行IDCT,最終得到融合圖像。
2.1 低頻系數融合
對視覺最重要的資訊部分,都集中在圖像的低頻。低頻代表圖像像素之間慢變化,即圖像架構部分[11] 。為了保持圖像的可視性,保留圖像的低頻部分,低頻部分的改變有可能引起圖像較大的變動。基于DCT變換的融合圖像的低頻系數采用平均法,假設有p幅多曝光圖像,可定義為
式中Gk(i,j)是源圖像經DCT變換後提取的低頻系數;G(i,j)為融合後的低頻系數;wk是權重因子。2.2 高頻系數融合
高頻系數對應于圖像的細節資訊,如邊緣等特征。高頻系數的融合規則如下。
(1)分塊後的圖像經DCT變換後,提取它的高頻系數。
分别計算高頻系數D(i,j)以像素點(i,j)為中心的(2k+1)×(2k+1)鄰域内的圖像标準差表達式為
(2)記p幅多曝光圖像的某高頻系數的區域标準差分别為[C1(i,j),C2(i,j),…,Cp(i,j)],則提取的高頻系數對應的權重系數為
(3)由式(7)可以得出p幅多曝光圖像的權重,對它們進行比較,融合後的高頻系數D(i,j)為最大的權重系數所對應的高頻系數。如果
那麼
二、部分源代碼
%Select First Image
disp('Please Select First Image:')
[filename, pathname]= uigetfile({'*.jpg;*.png;*.tif'},'Select First Image');
path=fullfile(pathname, filename);
im1=imread(path);
disp('Great! First Image is selected')
%Select Second Image
disp('Please Select Second Image:')
[filename, pathname]= uigetfile({'*.jpg;*.png;*.tif'},'Select Second Image');
path=fullfile(pathname, filename);
im2=imread(path);
disp('Great! Second Image is selected')
if size(im1,3) == 3 % Check if the images are grayscale
im1 = rgb2gray(im1);
end
if size(im2,3) == 3
im2 = rgb2gray(im2);
end
if size(im1) ~= size(im2) % Check if the input images are of the same size
error('Size of the source images must be the same!')
三、運作結果
四、matlab版本及參考文獻
1 matlab版本
2014a