1. 程式人生 > 其它 >【影象融合】基於nsct-SR+dwt-SR+拉普拉斯金字塔演算法-SR等多種影象融合演算法matlab原始碼

【影象融合】基於nsct-SR+dwt-SR+拉普拉斯金字塔演算法-SR等多種影象融合演算法matlab原始碼

影象融合技術能充分彌補單一感測器的不足,獲得更加可靠、準確和全面的影象資料。影象融合技術已經全面的應用於遙感、軍事、醫療衛生等各個方面。目前影象融合的研究領域主要集中在基於影象稀疏表示的融合方法上,其中包括基於多尺度分解的融合方法和基於冗餘字典分解的融合方法,但是兩種方法均存在著各自的不足。因此本文將以此為出發點,尋找效能上更優的影象融合方法。其次,目前對影象融合的客觀質量評價大多依據經驗選擇,缺少關於如何合理選擇客觀評價指標集的研究,因此本文將對影象融合客觀評價指標集的遴選方法進行研究。本文提出了基於NSST和SR相結合的影象融合演算法。本文首先研究基於多尺度的影象融合方法,分別對小波(DWT)、曲線波(CVT)、非下采樣輪廓波(NSCT)和非下采樣剪下波(NSST)進行研究,通過對比實驗分析得到了基於多尺度影象融合中分解層數的選擇和濾波器的選擇標準,同時論證了NSST的影象融合在基於多尺度影象融合方法中的優勢。本文接著研究了基於分支字典的影象融合方法(SR),通過對無汙染影象、噪聲影象和失配影象的實驗,證明了SR能夠改善融合系統的魯棒性。在兩種演算法研究的基礎上,選擇NSST和SR,本文通過實驗分析對比兩種演算法的優缺點,發現了它們存在著互補特性,基於此提出了基於NSST和SR相結合的影象融合演算法。該方法首先對影象進行NSST分解,然後在低頻子帶,採用學習得到的字典對低頻影象通過SR方法進行融合,在高頻子帶以區域能量為顯著性指標進行融合,最後通過NSST逆變換得到融合結果。對於提出的演算法,本文接著通過對多聚焦影象、紅外可見光影象、以及醫學影象進行實驗驗證該演算法的優勢。本文的研究證明了基於NSST和SR相結合的影象融合演算法能夠充分保留其優勢,彌補其不足,優於NSST和SR兩種演算法本身。本文以多聚焦影象融合為應用背景,提出了一種影象融合客觀評價指標集的選擇方法。該方法首先通過影象融合客觀評價指標進行相關性分析。接著通過相關性對指標進行聚類。然後針對多聚焦影象的具體應用,分別在無汙染影象、噪聲影象、失配影象三種情況下對指標的一致性進行分析,最後結合相關性分析和一致性分析得到結果。實驗表明,通過以上方法,能夠得到相對合理的多聚焦影象融合的客觀評價指標集。

一、融合演算法介紹

1.1拉普拉斯金字塔演算法

拉普拉斯金字塔

  在高斯金字塔的運算過程中,影象經過卷積和下采樣操作會丟失部分高頻細節資訊。為描述這些高頻資訊,人們定義了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一層影象減去其上一層影象上取樣並高斯卷積之後的預測影象,得到一系列的差值影象即為 LP 分解影象。

  將Gl內插方法得到放大影象*Gl,使*Gl的尺寸與*Gl-1的尺寸相同,即放大運算元Expand。

  該式子實現兩個步驟:在偶數行和列插入0,然後使用下采樣中的高斯核進行濾波處理,得到和l-1層一樣大小的影象。

  N為拉普拉斯金字塔頂層的層號,LPl是拉普拉斯金字塔分解的第L層影象。由LP0,LP1、LP2…LPN構成的金字塔即為拉普拉斯金字塔。它的每一層L0影象是高斯金字塔本層G0影象與其高一層影象G1經內插放大後圖像*G1的差,此過程相當於帶通濾波,因此拉普拉斯金字塔又稱為帶通金字塔分解。
  
  內插方法:opencv中有實現的函式pyrup。可以得到*G1。然後在兩個函式作差,相減就可以得到拉普拉斯金字塔。

  圖解gauss、laplace金字塔的構成:

  求得每個影象的拉普拉斯金字塔後需要對相應層次的影象進行融合,具體的融合規則有,取大、取小,等等。

  重構

  對融合後的拉普拉斯金字塔,從其頂層開始逐層從上至下按下式進行遞推,可以恢復其對應的高斯金字塔,並最終可得到原影象G0。就是從最高層開始使用內插的方法。

1.2 小波變換

小波就是很小的波,小波直接把傅立葉變換的基給換了——將無限長的三角函式基換成了有限長的會衰減的小波基。這樣不僅能夠獲取頻率,還可以定位到時間了。
小波變換的公式如下

從公式可以看出,不同於傅立葉變換,變數只有頻率ω,小波變換有兩個變數:尺度a和平移量 τ。尺度a控制小波函式的伸縮,平移量 τ控制小波函式的平移。尺度就對應於頻率(反比),平移量 τ就對應於時間。
伸縮因子的作用不同的伸縮因子生成不同的頻率成分,如下圖所示。

平移因子使得小波能夠沿訊號的時間軸實現遍歷分析,如下圖所示。
多分辨分析也稱為多尺度分析,是建立在函式空間概念上的理論。它構造了一組正交基,使得尺度空間與小波空間相互正交。隨著尺度由大到小的變化,可在各尺度上由粗及精地觀察目標。這就是多解析度分析的思想。小波多分辨分析的原理圖如下。

小波分解樹如下圖所示。高頻分量稱為細節分量,頻率分量部分,稱為近似分量

小波包分析可以看作是小波分解的一種推廣方法,對多分辨分析沒有細分的高頻分量部分進行進一步的分解,小波包分解樹如下圖所示。

1.3 非下采樣輪廓波nsct演算法

NSCT是基於Nonsubsampled金字塔(NSP)和Nonsubsampled方向濾波器(NSDFB)的一種變換。首先由NSP對輸入影象進行塔形分解,分解為高通和低通兩個部分,然後由NSDFB將高頻子帶分解為多個方向子帶,低頻部分繼續進行如上分解。

  • Nonsubsampled Pyramid(NSP):

Nonsubsampled Pyramid(NSP)和Contourlet的Laplacian Pyramid(LP)多尺度分析特性不同。影象通過Nonsubsampled Pyramid(NSP)進行多尺度分解,NSP去除了上取樣和下采樣,減少了取樣在濾波器中的失真,獲得了平移不變性。NSP為具有平移不變性濾波結構的NSCT多尺度分析,可以得到與LP分解一樣的多尺度分析特性。圖2.4(a)處分為3個尺度。

  • Nonsubsampled方向濾波器(NSDFB)

Nonsubsampled方向濾波器(NSDFB)是一個雙通道的濾波器,將分佈在同方向的奇異點合成NSCT的係數。方向濾波器(DFB)是Bamberger and Smith提出的。其通過一個l層的樹狀結構的分解,有效的將訊號分成了 個子帶,其頻帶分割成為鍥形。Nonsubsampled DFB(NSDFB)為非取樣,減少了取樣在濾波器中的失真,獲得了平移不變性。並且每個尺度下的方向子圖的的大小都和原圖同樣大小,Contourlet變換為所有子帶之和等於原圖。NSCT有更多的細節得以保留,變換系數是冗餘的。下為三個尺度下對影象頻域的分割圖,其中每個尺度的方向子帶數目以2倍遞增,以在1,2,3尺度下的方向子帶數目分別為2,4,8個。
paper 125:NSCT——Nonsubsampled contourlet 變換程式(尺度不變性問題研究) - Jason.Hevey - 部落格園https://www.cnblogs.com/molakejin/p/5918976.html

【CV】NSCT:Nonsubsampled Contourlet變換演算法以及matlab實現_計算機視覺CV,影象處理,影象融合_SoaringLee_fighting的技術專欄-CSDN部落格https://blog.csdn.net/soaringlee_fighting/article/details/80150711

非下采樣Contourlet變換(Nonsubsampled contourlet transform,NSCT)採用非抽樣金字塔結構和非抽樣方向濾波器組構成,具有Contourlet變換所不具備的平移不變性、較高冗餘度等優良特性,而且能夠克服偽吉布斯現象。影象經過非下采樣Contourlet變換後分解成多尺度、多方向的細節資訊,這些細節資訊代表了影象不同頻帶不同方向的特徵,這就簡化了係數之間的關係。

1.4曲線波(CVT)

二、部分程式碼

clear all;
close all;
clc;

addpath(genpath('sparsefusion'));
addpath(genpath('dtcwt_toolbox'));
addpath(genpath('fdct_wrapping_matlab'));
addpath(genpath('nsct_toolbox'));

load('sparsefusion/Dictionary/D_100000_256_8.mat');

[imagename1 imagepath1]=uigetfile('source_images\*.jpg;*.bmp;*.png;*.tif;*.tiff;*.pgm;*.gif','Please choose the first input image');
image_input1=imread(strcat(imagepath1,imagename1));    
[imagename2 imagepath2]=uigetfile('source_images\*.jpg;*.bmp;*.png;*.tif;*.tiff;*.pgm;*.gif','Please choose the second input image');
image_input2=imread(strcat(imagepath2,imagename2));     

figure;subplot(121);imshow(image_input1);title('圖1');subplot(122);imshow(image_input2);title('圖2')

if size(image_input1)~=size(image_input2)
    error('two images are not the same size.');
end

img1=double(image_input1);
img2=double(image_input2);

overlap = 6;                    
epsilon=0.1;
level=4;

% To make a comparison, please use 
% LP-SR for medical image fusion, 
% DTCWT-SR for visible-infrared image fusion,
% NSCT-SR for multi-focus image fusion.

tic;
if size(img1,3)==1    %for gray images
    imgf = lp_sr_fuse(img1,img2,level,3,3,D,overlap,epsilon);      %LP-SR
    imgf1 = rp_sr_fuse(img1,img2,level,3,3,D,overlap,epsilon);     %RP-SR
    imgf2 = dwt_sr_fuse(img1,img2,level,D,overlap,epsilon);        %DWT-SR
    imgf3 = dtcwt_sr_fuse(img1,img2,level,D,overlap,epsilon);      %DTCWT-SR
    imgf4 = curvelet_sr_fuse(img1,img2,level+1,D,overlap,epsilon); %CVT-SR
    imgf5 = nsct_sr_fuse(img1,img2,[2,3,3,4],D,overlap,epsilon);   %NSCT-SR
else                  %for color images
    imgf=zeros(size(img1));
    imgf1=zeros(size(img1));
    imgf2=zeros(size(img1));
    imgf3=zeros(size(img1));
    imgf4=zeros(size(img1));
    imgf5=zeros(size(img1));
    for i=1:3
        imgf(:,:,i) = lp_sr_fuse(img1(:,:,i),img2(:,:,i),level,3,3,D,overlap,epsilon);      %LP-SR
        imgf1(:,:,i) = rp_sr_fuse(img1(:,:,i),img2(:,:,i),level,3,3,D,overlap,epsilon);     %RP-SR
        imgf2(:,:,i) = dwt_sr_fuse(img1(:,:,i),img2(:,:,i),level,D,overlap,epsilon);        %DWT-SR
        imgf3(:,:,i) = dtcwt_sr_fuse(img1(:,:,i),img2(:,:,i),level,D,overlap,epsilon);      %DTCWT-SR
        imgf4(:,:,i) = curvelet_sr_fuse(img1(:,:,i),img2(:,:,i),level+1,D,overlap,epsilon); %CVT-SR
        imgf5(:,:,i) = nsct_sr_fuse(img1(:,:,i),img2(:,:,i),[2,3,3,4],D,overlap,epsilon);   %NSCT-SR
    end
end
toc;

figure;;subplot(231);imshow(uint8(imgf));title('LP-SR');
subplot(232);imshow(uint8(imgf1));title('RP-SR')
subplot(233);imshow(uint8(imgf2));title('DWT-SR')
subplot(234);imshow(uint8(imgf3));title('DTCWT-SR')
subplot(235);imshow(uint8(imgf4));title('CVT-SR')
subplot(236);imshow(uint8(imgf5));title('NSCT-SR')
imwrite(uint8(imgf),'Results/fused_mstsr.tif');

三、模擬結果

四、參考文獻

[1] Ohkawa Y , Hadi C , Fukui S K . Fast Combined Separability Filter for Detecting Circular Objects[C]// Iapr Conference on Machine Vision Applications. 2011.

[1] Ohkawa, Y. , C. Hadi , and S. K. Fukui . "Fast Combined Separability Filter for Detecting Circular Objects." Iapr Conference on Machine Vision Applications 2011.