Hello Mat

 找回密码
 立即注册
查看: 6308|回复: 1

泊松融合

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2017-5-23 22:05:41 | 显示全部楼层 |阅读模式
泊松融合--视频分享
百度网盘链接:链接:http://pan.baidu.com/s/1skOTRul

具体链接在halcom.cn论坛,联系人QQ:3283892722
欢迎大家录制视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1


泊松融合参考链接:【1】http://cs.brown.edu/courses/csci1950-g/
【2】http://www.cnblogs.com/CVFans/p/4475885.html
  1. clc,clear,close all
  2. warning off
  3. lena = double(imread('lena.png'));
  4. girl = double(imread('girl.png'));
  5. [Lh,Lv] = imgrad(lena);  % 水平Lh和垂直梯度Lv
  6. [Gh,Gv] = imgrad(girl);  % 水平Gh和垂直梯度Gv

  7. X = lena;
  8. Fh = Lh; % 水平梯度Lh
  9. Fv = Lv; % 垂直梯度Lv

  10. % 融合的坐标位置
  11. w = 57;
  12. h = 16;
  13. LX = 123;
  14. LY = 125;
  15. GX = 89;
  16. GY = 101;

  17. % 贴图融合
  18. X(LY:LY+h,LX:LX+w,:) = girl(GY:GY+h,GX:GX+w,:);
  19. Fh(LY:LY+h,LX:LX+w,:) = Gh(GY:GY+h,GX:GX+w,:);
  20. Fv(LY:LY+h,LX:LX+w,:) = Gv(GY:GY+h,GX:GX+w,:);

  21. figure(1)
  22. subplot(231),imshow(uint8(lena),[]);xlabel('lena');
  23. subplot(232),imshow(uint8(girl),[]);xlabel('girl');
  24. subplot(233),imshow(uint8(X),[]);xlabel('X');
  25. subplot(234),imshow(im2uint8(Fh),[]);xlabel('Fh');
  26. subplot(235),imshow(im2uint8(Fv),[]);xlabel('Fv');
  27. % mask
  28. msk = zeros(size(X));
  29. msk(LY:LY+h,LX:LX+w,:) = 1;
  30. subplot(236),imshow(msk,[]);xlabel('msk');
  31. %%
  32. figure(2)
  33. tic;
  34. Y = PoissonJacobi( X, Fh, Fv, msk );
  35. subplot(121),imshow(uint8(Y),[]);xlabel('PoissonJacobi');
  36. toc

  37. tic;
  38. Y = PoissonGaussSeidel( X, Fh, Fv, msk );
  39. toc
  40. subplot(122),imshow(uint8(Y),[]);xlabel('PoissonGaussSeidel');
复制代码
梯度计算:
  1. function [Fh Fv] = imgrad(X)

  2. Kh = [ 0,-1, 1 ];
  3. Kv = [ 0;-1; 1 ];

  4. Fh = imfilter(X,Kh,'replicate');
  5. Fv = imfilter(X,Kv,'replicate');
复制代码
Poisson Image Reconstruction by Jacobi Algorithm:
  1. function dst = PoissonJacobi(src, Fh, Fv, msk, itr, th, verbose)

  2. if( nargin < 5 )
  3.     itr = 1024;
  4. end

  5. if( nargin < 6 )
  6.     th = 1E-3;
  7. end

  8. if( nargin < 7 )
  9.     verbose = false;
  10. end

  11. K=[0,1,0;1,0,1;0,1,0];
  12. p = ( msk > 0 );
  13. lap = grad2lap(Fh,Fv);

  14. df0 = 1E32;
  15. dst = src;
  16. dst0 = dst;
  17. for i = 1:itr
  18.     lpf = imfilter(dst,K,'replicate');
  19.     dst(p) = (lap(p) + lpf(p))/4;
  20.    
  21.     dif = abs(dst-dst0);
  22.     df = max(dif(:));
  23.    
  24.     if( verbose )
  25.         fprintf('%d %g %g\n',i, df, (df0 - df)/df0);
  26.     end
  27.    
  28.     if( (df0 - df)/df0 < th )
  29.         break;
  30.     end
  31.     dst0 = dst;
  32.     df0 = df;
  33. end

  34. function lap = grad2lap(Fh, Fv)
  35. lap = circshift(Fh,[0,1]) + circshift(Fv,[1,0]) - Fh - Fv;
复制代码










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
 楼主| 发表于 2017-5-23 23:47:28 | 显示全部楼层
>> A = [1 1 0 0; 1 1 0 0; 0 0 0 0; 0 0 0 0]+1

A =

     2     2     1     1
     2     2     1     1
     1     1     1     1
     1     1     1     1

>> Y1 = circshift(A,[1 1])

Y1 =

     1     1     1     1
     1     2     2     1
     1     2     2     1
     1     1     1     1

>> Y2 = circshift(A,[0 1])

Y2 =

     1     2     2     1
     1     2     2     1
     1     1     1     1
     1     1     1     1

>> Y3 = circshift(A,[1 0])

Y3 =

     1     1     1     1
     2     2     1     1
     2     2     1     1
     1     1     1     1
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-23 00:02 , Processed in 0.210420 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表