【影象融合】基於四叉樹的加權聚焦多聚焦影象融合含Matlab原始碼

語言: CN / TW / HK

1 簡介

四叉樹分解演算法將待分解的源影象 A 和源影象 B 定義為一對影象塊組,若源影象塊組中影象數量較多,則稱之為影象塊序列,最先進行分解的影象塊組( 源影象) 稱為四叉樹的根節點,由根節點開始對影象塊進行分解,每次分解為 4 個葉子節點,以此類推,直至分解條件結束。對每一次分解結果進行聚焦度測算,若符合 RPCA 判定條件閾值,則本節點停止分解,其餘葉子節點繼續分解,下面詳細闡述本演算法流程:首先,假定兩種情況作為影象塊分解的基礎實施條件,

情況 1: 被分解出的塊為全聚焦塊。

情況 2:被分解出的塊含有聚焦部分和非聚焦部分。其次將含有 m( m ≥ 2) 幅源影象的影象序列輸入四叉樹結果的根節點,對於根節點塊序列,若其在 RPCA 檢測中符合情況 1,則本塊不需要繼續分解,否則符合情況 2,需要進行第二級的四叉樹分解,持續進行本過程,直到所有的聚焦區域被找出,或者已持續進行至四叉樹的分解的最大級數。本文最終將源影象分解為 2 × 2 大小的影象塊,其對應的分解級為最大分解級( max level) ,最大分解級的計算方式如下式所示:

其中 M × N 為源影象尺寸,lg 為對數運算子。

在進行四叉樹分解前,輸入至根節點的源影象需要進行正方形對映處理,以便分解至最終形態。假設源影象作為四叉樹分解的第一級,最終分解的影象塊大小為 2 × 2,那麼影象的分解層數應該為log{ max( M - 1,N - 1) } + 1 的整數部分,當分解進行至最大級數時,可以認為這種情況下的聚焦度探測到達了最精確的情況,本文所使用的源影象塊大小為 512×512。

2 部分程式碼

% -------------------------------------------------------------------------
% Clear history and memory
clc; clear; close all;
%--------------------- Configurating the parameters -----------------------
% Initialise the maximum split level
level = 0;
% image set name string, default: 'clock'. All image sets:
% clock'|'lab'|'pepsi'|'OpenGL'|'flower'|'disk'|'toy'
name = 'clock';
% Set the image type.
type = '.bmp';
% Set the image number: the number of images in image set toy is 3, 
% and the image number of the other sets is 2.
num = 2; 
%--------------------- Quadtree based image fusion -----------------------
[fimg, decision_map] = Quadtree_Fusion(name, type, num, level);
%------------------------- Show the fusion image -------------------------
subplot(133);imshow(fimg);title('融合後的圖')

3 模擬結果

4 參考文獻

Xiangzhi Bai, Yu Zhang, Fugen Zhou, and Bindang Xue. Quadtree-based multi-focus image fusion using a weighted focus-measure[J]. Information Fusion, 2015, 22: 105-118.

博主簡介:擅長智慧優化演算法、神經網路預測、訊號處理、元胞自動機、影象處理、路徑規劃、無人機等多種領域的Matlab模擬,相關matlab程式碼問題可私信交流。

部分理論引用網路文獻,若有侵權聯絡博主刪除。