zoukankan      html  css  js  c++  java
  • PS 滤镜—— 径向模糊

    这里给出灰度图像的模糊算法,彩色图像只要分别对三个通道做模糊即可。


    %%%  radiation blur
    %%%  

    clc;
    clear all;
    close all;

    I=imread('4.jpg');
    I=double(I);
    % Image=I;

    Image=0.2989 * I(:,:,1) + 0.5870 * I(:,:,2) + 0.1140 * I(:,:,3); 


    [row, col]=size(Image);
    Image_new(1:row,1:col)=255;
    Center_X=(col+1)/2;
    Center_Y=(row+1)/2;
    alpha=0.85;

    for i=1:floor(Center_Y)
        for j=floor(Center_X)+1:col
            
            % 第一象限
            x1=j-Center_X;
            y1=Center_Y-i;
            T1=Image(i,j);
            
            % 第三象限
            x3=-x1;
            y3=-y1;
            x_image=floor(Center_X+x3);
            y_image=floor(Center_Y-y3);
            i3=y_image;
            j3=x_image;
            T3=Image(y_image,x_image);
            
            % 第二象限
            x2=-x1;
            y2=y1;
            x_image=floor(Center_X+x2);
            y_image=floor(Center_Y-y2);
            i2=y_image;
            j2=x_image;
            T2=Image(y_image,x_image);
            
            %第四象限
            x4=x1;
            y4=-y1;
            x_image=floor(Center_X+x4);
            y_image=floor(Center_Y-y4);
            i4=y_image;
            j4=x_image;
            T4=Image(y_image,x_image);
            
            k=y1/x1;
            x_start=x1*alpha;
            y_start=k*x_start;
            x_end=x1;
            y_end=y1;
            x=x_start;
            y=y_start;
            
            if(x1>y1)
                Num_Pixel=floor(x_end-x_start)+1;
                for x=x_start:x_end-1
                    y0=k*(x+1);               
                    % 第一象限
                        x1=x+1;
                        y1=round(y0);
                        % y=y+1;
                        x_image=floor(Center_X+x1);
                        y_image=floor(Center_Y-y1);
                        T1=T1+Image(y_image,x_image);
                      
                     % 第三象限
                        x3=-x1;
                        y3=-y1;
                        x_image=floor(Center_X+x3);
                        y_image=floor(Center_Y-y3);
                        T3=T3+Image(y_image,x_image);
                        
                      % 第二象限
                        x2=-x1;
                        y2=y1;
                        x_image=floor(Center_X+x2);
                        y_image=floor(Center_Y-y2);
                        T2=T2+Image(y_image,x_image);
                        
                      % 第四象限
                        x4=x1;
                        y4=-y1;
                        x_image=floor(Center_X+x4);
                        y_image=floor(Center_Y-y4);
                        T4=T4+Image(y_image,x_image);
                end
            else
                Num_Pixel=floor(y_end-y_start)+1;
                for y=y_start:y_end-1
                        x0=(y+1)/k;
                        % 第一象限
                        x1=floor(x0);
                        y1=y+1;
                        x_image=floor(Center_X+x1);
                        y_image=floor(Center_Y-y1);
                        T1=T1+Image(y_image,x_image);
                      
                        % 第三象限
                        x3=-x1;
                        y3=-y1;
                        x_image=floor(Center_X+x3);
                        y_image=floor(Center_Y-y3);
                        T3=T3+Image(y_image,x_image);
                        
                        % 第二象限
                        x2=-x1;
                        y2=y1;
                        x_image=floor(Center_X+x2);
                        y_image=floor(Center_Y-y2);
                        T2=T2+Image(y_image,x_image);
                        
                        % 第四象限
                        x4=x1;
                        y4=-y1;
                        x_image=floor(Center_X+x4);
                        y_image=floor(Center_Y-y4);
                        T4=T4+Image(y_image,x_image);
                end
            end
            Image_new(i,j)=T1/Num_Pixel;
            Image_new(i2,j2)=T2/Num_Pixel;
            Image_new(i3,j3)=T3/Num_Pixel;
            Image_new(i4,j4)=T4/Num_Pixel;
        end
    end

    imshow(Image_new/255);

    原图 


    效果图 


    效果图  


  • 相关阅读:
    Python元组、列表、字典
    测试通过Word直接发布博文
    Python环境搭建(windows)
    hdu 4003 Find Metal Mineral 树形DP
    poj 1986 Distance Queries LCA
    poj 1470 Closest Common Ancestors LCA
    poj 1330 Nearest Common Ancestors LCA
    hdu 3046 Pleasant sheep and big big wolf 最小割
    poj 3281 Dining 最大流
    zoj 2760 How Many Shortest Path 最大流
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412676.html
Copyright © 2011-2022 走看看