- clc;
- clear all;
- close all; % 清理工作空間
- clear
- [imA,map1] = imread('A.tif');
- M1 = double(imA) / 256;
- [imB,map2] = imread('B.tif');
- M2 = double(imB) / 256;
- zt= 4;
- wtype = 'haar';
- % M1 - input image A
- % M2 - input image B
- % wtype使用的小波類型
- % Y - fused image
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%
- %% 小波變換圖像融合
- %%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %% 小波變換的絕對值大的小波係數,對應着顯著的亮度變化,也就是圖像中的顯著特徵。所以,選擇絕對值大
- %% 的小波係數作爲我們需要的小波係數。【注意,前面取的是絕對值大小,而不是實際數值大小】
- %%
- %% 低頻部分系數採用二者求平均的方法
- %%
- %%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- [c0,s0] = wavedec2(M1, zt, wtype);%多尺度二維小波分解
- [c1,s1] = wavedec2(M2, zt, wtype);%多尺度二維小波分解
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %% 後面就可以進行取大進行處理。然後進行重構,得到一個圖像
- %% 的小波係數,然後重構出總的圖像效果。
- %% 取絕對值大的小波係數,作爲融合後的小波係數
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- KK = size(c1);
- Coef_Fusion = zeros(1,KK(2));
- Temp = zeros(1,2);
- Coef_Fusion(1:s1(1,1)) = (c0(1:s1(1,1))+c1(1:s1(1,1)))/2; %低頻係數的處理
- %這兒,連高頻係數一起處理了,但是後面處理高頻係數的時候,會將結果覆蓋,所以沒有關係
- %處理高頻係數
- MM1 = c0(s1(1,1)+1:KK(2));
- MM2 = c1(s1(1,1)+1:KK(2));
- mm = (abs(MM1)) > (abs(MM2));
- Y = (mm.*MM1) + ((~mm).*MM2);
- Coef_Fusion(s1(1,1)+1:KK(2)) = Y;
- %處理高頻係數end
- %重構
- Y = waverec2(Coef_Fusion,s0,wtype);
- %顯示圖像
- subplot(2,2,1);imshow(M1);
- colormap(gray);
- title('input2');
- axis square
- subplot(2,2,2);imshow(M2);
- colormap(gray);
- title('input2');
- axis square
- subplot(223);imshow(Y,[]);
- colormap(gray);
- title('融合圖像');
- axis square;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
效果圖: