简单的matlab哈哈镜

时间:2023-01-30 20:05:07


clc;
close all;
clear all;
 
path1 = 'e:\img\ds2.jpg'; 
 
im1 = imread(path1);
    
[m,n,c] = size(im1);
ratio = 400  / min(m,n); 
im1 = imresize(im1, ratio);
   
[m,n,c] = size(im1);

im1 = im2double(im1);
  
figure; imshow(im1); title('原图');
 
im2 = zeros(m,n,3); 
figure;  
times = 0; 
while times < 20
    times = times+1; 
    r1 = rand;
    r2 = rand;
    r3 = rand;
    r4 = rand;
    for i=1:m    
        ty = i - cos(-i*0.02 *r1*pi + r3 )*m/30; 
        ty = round(ty); 
        ty = min(ty, m); 
        ty = max(1, ty); 

        for j = 1:n
            tx = j + sin(-j*0.02 *r2*pi + r4)*n/30; 
            tx = round(tx); 
            tx = min(tx, n); 
            tx = max(1, tx); 
            im2(i, j, :) = im1(ty, tx, :); 
        end 
    end 
    imshow(im2); title('matlab哈哈镜');  
    drawnow; 
end