zoukankan      html  css  js  c++  java
  • PS 滤镜——(扭曲)球面化 Spherize

    %%%% Spherize
    
    clc;
    clear all;
    close all;
    
    addpath('E:PhotoShop AlgortihmImage ProcessingPS Algorithm');
    
    I=imread('4.jpg');
    Image=double(I);
    
    [row, col,layer]=size(Image);
    R=floor(min(row, col)/2);
    a=row/2;
    b=col/2;
    e=a/b;
    K=pi/2;
    
    alpha=1.0;     % 控制变形程度
    
    Image_new=Image;
    for i=1:row
        for j=1:col
            y0=(row+1)/2-i;
            x0=j-(col+1)/2;
            Dis=x0.^2+y0.^2;
            if(Dis<R*R)
            % if(x0*x0/(a*a)+(y0*y0)/(b*b)<1)
                if(x0~=0)
                    beta=atan(y0/x0);
                    if(x0<0)
                        beta=beta+pi;
                    end
                else
                    beta=pi/2;
                end
                radius=asin(sqrt(Dis)/R)*R/K;
                radius=(sqrt(Dis)-radius)*(1-alpha)+radius;
                x=radius*cos(beta);
                y=radius*sin(beta);
                x=col/2+x;
                y=row/2-y;
                if(x>1 && x<col && y>1 && y<row)
                    x1=floor(x);
                    y1=floor(y);
                    p=x-x1;
                    q=y-y1;
                    for k=1:layer
                    Image_new(i,j,k)=(1-p)*(1-q)*Image(y1,x1,k)+p*(1-q)*Image(y1,x1+1,k)...
                                 +q*(1-p)*Image(y1+1,x1,k)+p*q*Image(y1+1,x1+1,k);
                    end
                end        
            end
        end
    end
    
    imshow(Image_new/255);



    原图


    效果图


  • 相关阅读:
    conda使用
    onedrive共享文件的下载
    生物信息软件安装(不定时更新)
    if 的常见问题解析
    C语言常见的误区
    流程控制
    C语言中的运算符
    scanf的具体用法
    代码的规范
    printf中的x%及用法
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412650.html
Copyright © 2011-2022 走看看