mos1.m
上传用户:jiangyu148
上传日期:2014-10-19
资源大小:2124k
文件大小:2k
源码类别:

图形图象

开发平台:

Matlab

  1. function I=mos1(image1,image2)
  2. L = image1;
  3. R = image2;
  4. L1 = rgb2gray(L);
  5. R1 = rgb2gray(R);
  6. [h,w] = size(L1);
  7. L = double(L);
  8. R = double(R);
  9. [row,col] =phasec(L1,R1);
  10. LL = w-col+1;
  11. dd = 1/LL;
  12.  if row < h/2
  13.     new = zeros(h-row+1,w+col-1,3);
  14.     new(:,1:col-1,1) = L(row:h,1:col-1,1) / 255;
  15.     new(:,w+1:w+col-1,1) = R(1:h-row+1,w-col+2:w,1) / 255;
  16.     for i = 1:h-row+1
  17.         for j = 1:LL
  18.             new(i,j+col-1,1) = (L(row+i-1,j+col-1, 1) * (1 - (0.5* sin (pi*j * dd - pi/2) + 0.5)) ...
  19.                                  +  R(i,j,1) * (0.5* sin (pi*j * dd - pi/2) + 0.5))/255; 
  20.         end
  21.     end
  22.     new(:,1:col-1,2) = L(row:h,1:col-1,2)/255;
  23.     new(:,w+1:w+col-1,2) = R(1:h-row+1, w-col+2:w, 2) / 255;
  24.     for i=1:h-row+1
  25.         for j = 1:LL
  26.             new(i,j+col-1,2) = ( L(row+i-1,j+col-1, 2) * (1 - (0.5* sin (pi*j * dd - pi/2) + 0.5))... 
  27.                       +  R(i,j,2) * (0.5* sin (pi*j * dd - pi/2) + 0.5)) / 255 ;
  28.         end
  29.     end
  30.     new(:,1:col-1,3)=L(row:h,1:col-1,3) / 255;
  31.     new(:,w+1:w+col-1,3)=R(1:h-row+1,w-col+2:w,3) / 255;
  32.     for i=1:h-row+1
  33.         for j = 1:LL
  34.             new(i,j+col-1,3) = ( L(row+i-1,j+col-1, 3) * (1 - (0.5* sin (pi*j * dd - pi/2) + 0.5)) ...
  35.                           + R(i,j,3) * (0.5* sin (pi*j * dd - pi/2) + 0.5)) / 255; 
  36.         end
  37.     end
  38. else
  39.     new=zeros(row,2*w-(w-col+1),3);
  40.     new(:,1:col-1,1)=L(1:row,1:col-1,1)/255;
  41.     new(:,w+1:w+col-1,1)=R(h-row+1:h,w-col+2:w,1)/255;
  42.     for i=1:row
  43.         for j = 1:LL
  44.              new(i,j+col-1,1)=( L(i,j+col-1,1) * (1 - (0.5* sin (pi*j * dd - pi/2) + 0.5)) ...
  45.                 + R(h-row+i,j,1) * (0.5* sin (pi*j * dd - pi/2) + 0.5)) / 255;                              
  46.         end
  47.     end
  48.     new(:,1:col-1,2)=L(1:row,1:col-1,2)/255;
  49.     new(:,w+1:w+col-1,2)=R(h-row+1:h,w-col+2:w,2)/255;
  50.     for i=1:row
  51.         for j = 1:LL
  52.            new(i,j+col-1,2) = ( L(i,j+col-1,2) * (1 - (0.5* sin (pi*j * dd - pi/2) + 0.5)) ...
  53.                               + R(h-row+i,j,2) * (0.5* sin (pi*j * dd - pi/2) + 0.5)) / 255; 
  54.         end
  55.     end
  56.     new(:,1:col-1,3)=L(1:row,1:col-1,3)/255;
  57.     new(:,w+1:w+col-1,3)=R(h-row+1:h,w-col+2:w,3)/255;
  58.     for i=1:row
  59.         for j = 1:LL
  60.            new(i,j+col-1,3) = ( L(i,j+col-1,3) * (1 - (0.5* sin (pi*j * dd - pi/2) + 0.5)) ...
  61.                                 + R(h-row+i,j,3) * (0.5* sin (pi*j * dd - pi/2) + 0.5)) / 255; 
  62.         end
  63.     end
  64.  end
  65. I=new;