您的位置:首页 > 其它

PS 滤镜— —水波效果

2015-08-25 15:55 369 查看
clc;
clear all;
close all;

addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm');

I=imread('4.jpg');
I=double(I);
Image=I/255;
[height, width, depth]=size(Image);

wavelength = 20;
amplitude = 10;
phase = 0;
centreX = 0.5;
centreY = 0.5;
radius = 0;

if (radius==0)
radius=min(height, width)/2;
end

icentreX=width*centreX;
icentreY=height*centreY;
radius2=radius*radius;
Image_new=Image;

for ii=1:height
for jj=1:width

dx=jj-icentreX;
dy=ii-icentreY;

distance2=dx*dx+dy*dy;

if (distance2>radius2)
x=jj;
y=ii;
else
distance=sqrt(distance2);
amount=amplitude * sin(distance / wavelength * 2*pi - phase);
amount =amount* (radius-distance)/radius;
amount=amount*wavelength/(distance+0.0001);

x =jj + dx*amount;
y = ii + dy*amount;

end

% %         if (x<=1)     x=1;  end
% %         if (x>=width)   x=width-1; end;
% %         if (y>=height)  y=height-1; end;
% %         if (y<1)  y=1;     end;

if (x<=1)     continue;  end
if (x>=width)   continue; end;
if (y>=height)  continue; end;
if (y<1)  continue;     end;

x1=floor(x);
y1=floor(y);
p=x-x1;
q=y-y1;

Image_new(ii,jj,:)=(1-p)*(1-q)*Image(y1,x1,:)+p*(1-q)*Image(y1,x1+1,:)...
+q*(1-p)*Image(y1+1,x1,:)+p*q*Image(y1+1,x1+1,:);

end
end

imshow(Image_new);


参考来源:http://www.jhlabs.com/index.html

原图:



效果图:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: