圖像的泊松(Poisson)編輯、泊松融合


——泊松方程的理論推導

 
這里寫圖片描述
這里寫圖片描述
這里寫圖片描述

——從物理模型跨入圖像模型以及算法詳解

這里寫圖片描述
這里寫圖片描述
這里寫圖片描述

 

本部分我們將討論算法的離散化數值實現,並給出相應的MATLAB代碼,實現結果如圖下圖(左圖)所示,可見圖像融合的效果還是非常理想。

 

 

 1 %泊松圖像融合
 2 
 3 
 4 landscape = double(imread('D:\\tmppic\\2.jpg'));
 5 man = double(imread('D:\\tmppic\\3.jpg'));
 6 sizeLand = size(landscape);
 7 sizeMan = size(man);
 8 
 9 gradient_inner = man(1:sizeMan(1)-2,2:sizeMan(2)-1,:)...
10     + man(3:sizeMan(1),2:sizeMan(2)-1,:)...
11     + man(2:sizeMan(1)-1,1:sizeMan(2)-2,:)...
12     + man(2:sizeMan(1)-1,3:sizeMan(2),:)...
13     - 4*man(2:sizeMan(1)-1,2:sizeMan(2)-1,:);
14 
15 des_x = sizeLand(1)/4;
16 des_y = sizeLand(2)/4;
17 
18 temp = mkTemp(sizeMan(1),sizeMan(2));
19 
20 
21 rebuilt = landscape(des_y:des_y+sizeMan(1)-1,des_x:des_x+sizeMan(2)-1,:);
22 origin = rebuilt;
23 rebuilt = temp.*rebuilt + (1-temp).*origin;
24 
25 Lap2 = [0,1,0;1,0,1;0,1,0];
26 
27 
28 %這是分成四次運算,擔心內存問題
29 % for n = [1:1000]
30 %     rebuilt(2:2:sizeMan(1)-1,2:2:sizeMan(2)-1,:)= ...
31 %         (rebuilt(1:2:sizeMan(1)-2 , 2:2:sizeMan(2)-1,:)...
32 %         +rebuilt(3:2:sizeMan(1) , 2:2:sizeMan(2)-1,:)...
33 %         +rebuilt(2:2:sizeMan(1)-1 , 1:2:sizeMan(2)-2,:)...
34 %         +rebuilt(2:2:sizeMan(1)-1 , 3:2:sizeMan(2),:)...
35 %         -gradient_inner(1:2:sizeMan(1)-2 , 1:2:sizeMan(2)-2,:))/4;
36 %      rebuilt(3:2:sizeMan(1)-1,3:2:sizeMan(2)-1,:)= ...
37 %         (rebuilt(2:2:sizeMan(1)-2 , 3:2:sizeMan(2)-1,:)...
38 %         +rebuilt(4:2:sizeMan(1) , 3:2:sizeMan(2)-1,:)...
39 %         +rebuilt(3:2:sizeMan(1)-1 , 2:2:sizeMan(2)-2,:)...
40 %         +rebuilt(3:2:sizeMan(1)-1 , 4:2:sizeMan(2),:)...
41 %         -gradient_inner(2:2:sizeMan(1)-2 , 2:2:sizeMan(2)-2,:))/4;
42 %      rebuilt(3:2:sizeMan(1)-1,2:2:sizeMan(2)-1,:)= ...
43 %         (rebuilt(2:2:sizeMan(1)-2 , 2:2:sizeMan(2)-1,:)...
44 %         +rebuilt(4:2:sizeMan(1) , 2:2:sizeMan(2)-1,:)...
45 %         +rebuilt(3:2:sizeMan(1)-1 , 1:2:sizeMan(2)-2,:)...
46 %         +rebuilt(3:2:sizeMan(1)-1 , 3:2:sizeMan(2),:)...
47 %         -gradient_inner(2:2:sizeMan(1)-2 , 1:2:sizeMan(2)-2,:))/4;
48 %     rebuilt(2:2:sizeMan(1)-1 , 3:2:sizeMan(2)-1,:)= ...
49 %         (rebuilt(1:2:sizeMan(1)-2 , 3:2:sizeMan(2)-1,:)...
50 %         +rebuilt(3:2:sizeMan(1) , 3:2:sizeMan(2)-1,:)...
51 %         +rebuilt(2:2:sizeMan(1)-1 , 2:2:sizeMan(2)-2,:)...
52 %         +rebuilt(2:2:sizeMan(1)-1 , 4:2:sizeMan(2),:)...
53 %         -gradient_inner(1:2:sizeMan(1)-2 , 2:2:sizeMan(2)-2,:))/4;
54 % end
55 
56 %一種寫法,不考慮內存
57 for n = [1:10000] 58     rebuilt(2:sizeMan(1)-1,2:sizeMan(2)-1,:)= ...
59         (rebuilt(1:sizeMan(1)-2 , 2:sizeMan(2)-1,:)...
60         +rebuilt(3:sizeMan(1) , 2:sizeMan(2)-1,:)...
61         +rebuilt(2:sizeMan(1)-1 , 1:sizeMan(2)-2,:)...
62         +rebuilt(2:sizeMan(1)-1 , 3:sizeMan(2),:)...
63         -gradient_inner(1:sizeMan(1)-2 , 1:sizeMan(2)-2,:))/4;
64 end
65 
66 landscape(des_y:des_y+sizeMan(1)-1,des_x:des_x+sizeMan(2)-1,:) = rebuilt;
67 figure;imshow(uint8(landscape));

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM