基於小波變換的圖像融合

  1. clc;  
  2. clear all;  
  3. close all;                        % 清理工作空間  
  4. clear  
  5. [imA,map1] = imread('A.tif');  
  6. M1 = double(imA) / 256;  
  7. [imB,map2] = imread('B.tif');  
  8. M2 = double(imB) / 256;  
  9.   
  10.   
  11. zt= 4;   
  12. wtype = 'haar';  
  13. %    M1 - input image A  
  14. %    M2 - input image B  
  15. %    wtype使用的小波類型  
  16. %    Y  - fused image     
  17. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  18. %%  
  19. %%  小波變換圖像融合  
  20. %%  
  21. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  22. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  23. %%   小波變換的絕對值大的小波係數,對應着顯著的亮度變化,也就是圖像中的顯著特徵。所以,選擇絕對值大  
  24. %%   的小波係數作爲我們需要的小波係數。【注意,前面取的是絕對值大小,而不是實際數值大小】  
  25. %%  
  26. %%   低頻部分系數採用二者求平均的方法  
  27. %%  
  28. %%  
  29. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  30.   
  31. [c0,s0] = wavedec2(M1, zt, wtype);%多尺度二維小波分解  
  32.   
  33. [c1,s1] = wavedec2(M2, zt, wtype);%多尺度二維小波分解  
  34.   
  35. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  36. %%  後面就可以進行取大進行處理。然後進行重構,得到一個圖像  
  37. %%  的小波係數,然後重構出總的圖像效果。  
  38. %%  取絕對值大的小波係數,作爲融合後的小波係數  
  39. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  40. KK = size(c1);  
  41. Coef_Fusion = zeros(1,KK(2));  
  42. Temp = zeros(1,2);  
  43. Coef_Fusion(1:s1(1,1)) = (c0(1:s1(1,1))+c1(1:s1(1,1)))/2;  %低頻係數的處理  
  44.                      %這兒,連高頻係數一起處理了,但是後面處理高頻係數的時候,會將結果覆蓋,所以沒有關係  
  45.   
  46.    %處理高頻係數  
  47.     MM1 = c0(s1(1,1)+1:KK(2));  
  48.     MM2 = c1(s1(1,1)+1:KK(2));  
  49.     mm = (abs(MM1)) > (abs(MM2));  
  50.     Y  = (mm.*MM1) + ((~mm).*MM2);  
  51.     Coef_Fusion(s1(1,1)+1:KK(2)) = Y;  
  52.     %處理高頻係數end  
  53.    
  54.  %重構  
  55.  Y = waverec2(Coef_Fusion,s0,wtype);  
  56.   
  57. %顯示圖像    
  58. subplot(2,2,1);imshow(M1);  
  59. colormap(gray);  
  60. title('input2');  
  61. axis square    
  62.    
  63. subplot(2,2,2);imshow(M2);  
  64. colormap(gray);  
  65. title('input2');  
  66. axis square    
  67.   
  68. subplot(223);imshow(Y,[]);  
  69. colormap(gray);  
  70. title('融合圖像');  
  71. axis square;  
  72. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  73.    

效果圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章