zoukankan      html  css  js  c++  java
  • 利用Perlin nosie 完毕(PS 滤镜—— 分成云彩)

    %%%% Cloud
    %%%% 利用perlin noise生成云彩
    
    clc;
    clear all;
    close all;
    
    addpath('E:PhotoShop AlgortihmImage ProcessingPS Algorithm');
    
    
    Image=imread('4.jpg');
    Image=double(Image);
    
    [row,col,layer]=size(Image);
    
    baseNoise=rand(row,col);
    
    persistance = 0.9;
    totalAmplitude = 0.0;
    
    octaveCount=10;
    
    Cloud_texture=zeros(row,col);
    
    for i=0:octaveCount
        amplitude=persistance.^(octaveCount-i);
        % amplitude=persistance.^i;
        totalAmplitude=totalAmplitude+amplitude;
        Cloud_texture=Cloud_texture+Generate_smoothnoise(baseNoise, i)*amplitude;
    end
    
    Cloud_texture=Cloud_texture/totalAmplitude;
    
    imshow(Cloud_texture);
       
    
    
    
    function SmoothNoise=Generate_smoothnoise(baseNoise, octave)
    
    SmoothNoise=baseNoise;
    
    [row, col]=size(baseNoise);
    
    samplePeriod=2.^octave;
    sampleFrequency=1/samplePeriod;
    
    for i=1:row
        sample_i0=floor((i/samplePeriod))*samplePeriod;
        sample_i1=mod(sample_i0+samplePeriod,row);
        vertical_blend = (i - sample_i0) * sampleFrequency;
        for j=1:col
            sample_j0 = floor(j / samplePeriod) * samplePeriod;
            sample_j1 = mod(sample_j0 + samplePeriod,col);
            horizontal_blend = (j - sample_j0) * sampleFrequency;
            
            if(sample_i0<1)
                sample_i0=1;
            end
            
            if(sample_i1<1)
                sample_i1=1;
            end
            
            if(sample_j1<1)
                sample_j1=1;
            end
            
            if(sample_j0<1)
                sample_j0=1;
            end
            
            % blend the top two corners
            top = Cosine_Interpolate(baseNoise(sample_i0,sample_j0),...
            baseNoise(sample_i0,sample_j1), horizontal_blend);
     
            % blend the bottom two corners
            bottom = Cosine_Interpolate(baseNoise(sample_i1,sample_j0),...
            baseNoise(sample_i1,sample_j1), horizontal_blend);
     
            % final blend
            SmoothNoise(i,j) = Cosine_Interpolate(top, bottom, vertical_blend);
        end
    end
    
    
    
    function  y=Cosine_Interpolate(x1,x2,alpha)
    
    
    ft = alpha * 3.1415927;
    f = (1 - cos(ft)) * .5;
    
    y=x1*(1-f)+x2*f;
    


    原图


    效果图


  • 相关阅读:
    记一次java程序内存溢出问题
    js 对象数据观察者实现
    requirejs和seajs使用感受
    maven根据不同的运行环境,打包不同的配置文件
    Quartz .net 一直运行失败
    Sql2008R2 日志无法收缩解决方案
    win7 64位英文版 ado驱动
    KB4284826 远程桌面发生身份验证错误,要求的函数不受支持
    Delphi System.zip patch with ZIP64 and LZMA supports
    native excel 文件已经打开的判断
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7267718.html
Copyright © 2011-2022 走看看