您當前的位置:首頁 > 攝影

紅外和可見光影象融合演算法研究

作者:由 哄哄 發表于 攝影時間:2021-08-08

基於MATLAB的紅外和可見光影象融合系統[帶評價指標]

一、課題介紹

紅外技術作為人類認識自然、探索自然的一種新的現代工具,已經被各國普遍的應用於生物、醫學、地學等科學領域以及軍事偵察方面。紅外影象直接反映了物體表面溫度分佈情況,但由於目標的紅外輻射十分複雜,而且影響目標紅外輻射的因素很多,紅外熱影象的清晰度遠不如可檢視像。可見光影象能夠很好的描繪場景中各個物體的外形結構,具有較好的輪廓表現力,所以將紅外和可見光影象融為一體有非常好的效果。而透過影象融合是實現這一效果的有效方法,融合後的影象可信度更高,模糊較少,可理解性更好,更適合人的視覺及對源影象的進一步分析、理解以及目標檢測、識別或跟蹤。影象融合充分利用了多個被融合影象中包含的冗餘資訊和互補資訊,同時又不同於一般意義上的影象增強,它是計算機視覺、影象理解領域的一項新技術。

本文針對紅外和可見光影象融合演算法進行了研究。透過使用計算機影象處理方法,對同一場景的紅外影象和可見光影象進行融合處理,得到一副單一的融合影象,它成功包含了兩副源影象的資訊。本文主要研究了利用MATLAB軟體實現對紅外和可見光影象的處理和融合,採用對應畫素取大值、取小值、平均值,區域能量、區域對比度比較的融合方法,並且對融合結果影象使用資訊熵、標準

差、平均梯度、空間頻率的評價指標進行了分析比較。結果表明,融合結果影象

既保留了可見光影象的清晰的輪廓資訊,同時也顯示了目標物體的表面溫度分佈情況。

二、影象融合的概念

影象融合(Image Fusion)是指將多源通道所採集到的關於同一目標的影象資料經過影象處理和計算機技術等,最大限度的提取各自通道中的有利資訊,最後綜合成高質量的影象,以提高影象資訊的利用率、改善計算機解譯精度和可靠性、提升原始影象的空間解析度和光譜解析度,利於監測。影象融合示意圖如圖 1-4。待融合影象已配準好且畫素位寬一致,綜合和提取兩個或多個多源影象信

冗餘資訊

互補資訊

圖 1- 4 影象融合示意圖

息。兩幅(多幅)已配準好且畫素位寬一致的待融合源影象,如果配準不好且畫素位寬不一致,其融合效果不好。影象融合的主要目的是透過對多幅影象間的冗餘資料的處理來提高影象的可靠性,透過對多幅影象間互補資訊的處理來提高影象的清晰度。

影象融合的主要目的包括:

增加影象中有用資訊的含量,改善影象的清晰度,增強在單一感測器圖

像中無法看見或看清的某些特性;

(2) 改善影象的空間解析度,增加光譜資訊的含量,為改善檢測、分類、理解、識別效能獲取補充的影象資訊;

(3) 透過不同時刻的影象序列融合來檢測場景或目標的變化情況;

(4) 透過融合多個二維影象產生具有立體視覺的三維影象,可用於三維重建或立體投影、測量等;

(5) 利用來自其他感測器的影象來替代或彌補某一感測器影象中的丟失或故障資訊。

三、模擬結果及原始碼

Matlab是影象處理的一項重要工具,其封裝了一系列演算法函式,提高了影象處理速度和效率。因此,本文影象處理過程中,使用Matlab工具箱進行進行影象融合。

本文共使用一組可見光與紅外影象,分別透過對應畫素取大值和取小值、對應畫素取平均值和加權平均值、基於區域的能量和對比度融合方法實現影象融合,其實驗結果如下,並且根據上一節的評價方法對融合影象進行了客觀的融合質量評價,詳見表5-1。

1。對應畫素取最大值和取小值

1)對應畫素取大值:

MATLAB模擬程式:

clear all;

A=imread(‘p。jpg’); %讀取灰度影象

B=imread(‘q。jpg’); %讀取紅外影象

A1=double(A);B2=double(B); %將影象轉換為double型別

[x,y]=size(A);

for i=1:x

for j=1:y

if A(i,j)>B(i,j)

C(i,j)=A(i,j);

else C(i,j)=B(i,j);

end

end

end

subplot(2,2,1);imshow(A);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(B);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(C,[])

xlabel(‘c)對應畫素取大值融合後圖像’)

紅外和可見光影象融合演算法研究

融合結果:

圖 5- 對應畫素取最大值融合後的影象

2)對應畫素取小值:

clear all;

A=imread(‘p。jpg’); %讀取灰度影象

B=imread(‘q。jpg’); %讀取紅外影象

A1=double(A);B2=double(B); %將影象轉換為double型別

[x,y]=size(A);

for i=1:x

for j=1:y

if A1(i,j)>B2(i,j)

C(i,j)=B(i,j);

else C(i,j)=A(i,j);

end

end

end

subplot(2,2,1);imshow(A);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(B);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(C,[])

xlabel(‘c)對應畫素取小值融合後圖像’)

融合結果:

紅外和可見光影象融合演算法研究

圖 5- 對應畫素取最小值融合後的影象

2。對應畫素取平均值

MATLAB模擬程式:

clear all;

A=imread(‘p。jpg’);

B=imread(‘q。jpg’);

K=imadd(A,B,‘double’); %將兩幅影象轉換為double型,再相加

C1=imdivide(K,2);

subplot(2,2,1);imshow(A);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(B);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(C,[]);

xlabel(‘c)對應畫素取平均值融合後圖像’)

融合結果:

紅外和可見光影象融合演算法研究

圖 5- 對應畫素取平均值融合後的影象

3。對應畫素取加權平均值

MATLAB模擬程式:

clear all;

P1=imread(‘p。jpg’); %讀取灰度影象

P2=imread(‘q。jpg’); %讀取紅外影象

L1=double(P1);L2=double(P2); %將影象轉換為double型別

A=immultiply(L1,0。3);

subplot(2,2,1);imshow(P1);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(P2);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(C,[])

xlabel(‘c)對應畫素加權平均融合後圖像’)

融合影象結果:

紅外和可見光影象融合演算法研究

圖 5- 對應畫素加權平均融合後的影象

4。基於區域能量比較的融合

1)區域能量取大的融合:

MATLAB模擬程式:

clear all;

P1=imread(‘p。jpg’); %讀取灰度影象

P2=imread(‘q。jpg’); %讀取紅外影象

L1=double(P1);L2=double(P2); %將影象轉換為double型別

A=L1。^2;B=L2。^2;

[x,y]=size(P1);

for m=2:x-1

for n=2:y-1

a=m-1;b=m+1;c=n-1;d=n+1;

if sum(sum(A([a:b],[c:d])))>sum(sum(B([a:b],[c:d])));

C(m,n)=P1(m,n);

else C(m,n)=P2(m,n);

end

end

end

subplot(2,2,1);imshow(P1);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(P2);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(C,[])

xlabel(‘c)基於區域能量取大融合後圖像’)

融合結果:

紅外和可見光影象融合演算法研究

圖 5- 基於區域能量取大融合後的影象

區域能量取小的融合:

MATLAB模擬程式:

clear all;

P1=imread(‘p。jpg’); %讀取灰度影象

P2=imread(‘q。jpg’); %讀取紅外影象

L1=double(P1);L2=double(P2); %將影象轉換為double型別

A=L1。^2;B=L2。^2;

[x,y]=size(P1);

C=P1;

for m=2:x-1

for n=2:y-1

a=m-1;b=m+1

if sum(sum(A([a:b],[c:d])))

C(m,n)=P1(m,n);

else C(m,n)=P2(m,n);

end

end

end

subplot(2,2,1);imshow(P1);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(P2);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(C,[])

xlabel(‘c)基於區域能量取小融合後圖像’)

紅外和可見光影象融合演算法研究

圖 5- 基於區域能量取小融合後的影象

5。基於區域對比度比較的融合

MATLAB模擬程式:

clear all;

P1=imread(‘p。jpg’); %讀取灰度影象

P2=imread(‘q。jpg’); %讀取紅外影象

A=double(P1);B=double(P2); %將影象轉換為double型別

[x,y]=size(P1);

C1=A;C2=B;

D1=minus(A,C1);D2=minus(B,C2); %A-C1

E1=rdivide(D1,C1);E2=rdivide(D2,C2);

F=A;

for m1=2:x-1

for n1=2:y-1

a=m1-1;b=m1+1;c=n1-1;d=n1+1;

if mean(mean(E1([a:b],[c:d])))>mean(mean(E2([a:b],[c:d])))

F(m1,n1)=P1(m1,n1);

else F(m1,n1)=P2(m1,n1);

end

end

end

subplot(2,2,1);imshow(P1);

xlabel(‘a)可見光影象’)

subplot(2,2,2);imshow(P2);

xlabel(‘b)紅外影象’)

subplot(2,2,3);imshow(F,[])

xlabel(‘c)基於區域對比度取大融合後圖像’)

融合結果:

紅外和可見光影象融合演算法研究

圖 5- 基於區域對比度融合後的影象

下表列出了不同融合方法所得到的影象的評價結果

表 5- 融合結果影象評價

影象融合方法

評價標準

資訊熵E

標準差std

平均梯度

空間頻率

對應畫素取最大值

6。6948

29。5083

4。2927

9。1607

對應畫素取最小值

6。5223

23。8603

4。3085

8。4296

影象融合方法

評價標準

資訊熵E

標準差std

平均梯度

空間頻率

對應畫素取平均值

6。2178

22。2666

3。2953

6。4550

對應畫素加權平均

6。2819

21。4988

3。3771

6。6744

基於區域能量取大

6。7375

29。9311

4。6958

11。4168

基於區域能量取小

6。5445

24。3389

4。5668

9。5732

基於區域對比度

1。8530e-04

33。9577

16。2664

36。5167

由融合結果影象和上表可以看出基於區域能量的融合方法優於對應畫素的融合方法。基於區域能量取大的融合方法所得到的影象質量最好,資訊熵、標準差、平均梯度、空間頻率的值最大,融合影象所含的資訊豐富,影象清晰。

對應畫素融合的方法中,對應畫素取平均值的方法融合的結果影象質量最差,包含的資訊不夠豐富,影象模糊。對應畫素取加權平均值的方法標準差最小,色調單一均勻,看不出太多的資訊。畫素值取大和畫素值取小法所得到的融合影象,它們對影象的整體把握不好,要麼影象整體暗淡,要麼整體就偏亮,且邊緣資訊比較模糊,對比度較低。

基於區域對比度的融合方法所得到的影象模糊,資訊熵小,分析編寫程式和演算法可能是在計算過程中灰度值超出了0~255的範圍,也可能是計算的高頻分量值過小,對比度值異常過大,接近於無窮大,導致了影象區域性偏亮或者區域性暗淡,融合影象質量不夠好。

將以上實驗結果中的融合影象與原可見光影象和紅外影象作對比,不難看出,融合結果影象既有可見光影象中的邊緣特徵,同時也反映了紅外影象中目標物體或者場景的溫度分佈資訊,實現了可將光影象特點與紅外影象特徵的有效結合,能更全面並且準確地表達目標物體或者場景所包含的資訊,能夠很好地實現目標識別和監測等實際應用。

標簽: 影象  融合  畫素  imshow  xlabel