clc;
clear all;
close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread('4.jpg');
I=double(I);
Image=I/255; sz=size(Image); % set the parameters
radius = 150;
angle = pi/4;
angle2=pi/4;
sides=10;
centerX = 0.5; % set the center of the circle, proportion of the image size
centerY = 0.5; iWidth=sz(2);
iHeight=sz(1); icenterX=iWidth*centerX;
icenterY=iHeight*centerY; Image_new=Image; for i=1:sz(1)
for j=1:sz(2) dx=j-icenterX;
dy=i-icenterY; r=sqrt(dy*dy+dx*dx);
theta=atan2(dy, dx)-angle-angle2; temp_theta=theta/pi*sides*0.5 ;
theta=triangle(temp_theta); if (radius)
c=cos(theta);
radius_c=radius/c;
r=radius_c * triangle(r/radius_c);
end theta=theta+angle; x=r * cos(theta)+icenterX;
y=r * sin(theta)+icenterY; if (x<=1) x=1; end
if (x>=sz(2)) x=sz(2)-1; end;
if (y>=sz(1)) y=sz(1)-1; end;
if (y<1) y=1; end; % % % if (x<=1) continue; end
% % % if (x>=sz(2)) continue; end;
% % % if (y>=sz(1)) continue; end;
% % % if (y<1) continue; end; x1=floor(x);
y1=floor(y);
p=x-x1;
q=y-y1; Image_new(i,j,:)=(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)
imwrite(Image_new, 'out.jpg');

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

原图:

PS 滤镜— — 万花筒效果-LMLPHP

效果图:

PS 滤镜— — 万花筒效果-LMLPHP

PS 滤镜— — 万花筒效果-LMLPHP

05-26 19:15