码迷,mamicode.com
首页 > 其他好文 > 详细

PS 滤镜— —Twirl Filter

时间:2015-08-01 11:33:58      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:photoshop   算法   

    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);
     angle=pi/2;
     centreX = 0.5;
     centreY = 0.5;
     radius=200;
     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);
                 a = atan2(dy, dx) + angle * (radius-distance) / radius;
                 x = icentreX + distance*cos(a);
                 y = icentreY + distance*sin(a);  
             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);
     imwrite(Image_new, ‘out.jpg‘);

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

原图:

技术分享

效果图:

技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

PS 滤镜— —Twirl Filter

标签:photoshop   算法   

原文地址:http://blog.csdn.net/matrix_space/article/details/46789311

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!