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

%%%  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);

原图

效果图

效果图

PS 滤镜—— 径向模糊的更多相关文章

  1. Python: PS滤镜--径向模糊

    本文用 Python 实现 PS 滤镜中的径向模糊特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/3 ...

  2. OpenCV——PS 滤镜, 浮雕效果

    具体的算法原理可以参考: PS 滤镜, 浮雕效果 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITH ...

  3. OpenCV——PS 滤镜, 曝光过度

    算法原理可以参考: PS 滤镜,曝光过度 #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <io ...

  4. Python: PS 滤镜--水波特效

    本文用 Python 实现 PS 滤镜中的 水波特效 import numpy as np from skimage import img_as_float import matplotlib.pyp ...

  5. Python: PS 滤镜--旋涡特效

    本文用Python 实现 PS 滤镜的旋涡特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/42215 ...

  6. Python: PS 滤镜--USM 锐化

    本文用 Python 实现 PS 滤镜中的 USM 锐化效果,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/detail ...

  7. Python: PS 滤镜--素描

    本文用 Python 实现 PS 滤镜中的素描特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/386 ...

  8. Python: PS 滤镜--表面模糊

    本文用 Python 实现 PS 滤镜中的表面模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/528 ...

  9. Python: PS 滤镜--旋转模糊

    本文用 Python 实现 PS 滤镜中的旋转模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/392 ...

随机推荐

  1. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

  2. 实现memmove函数

    分析:memmove函数是<string.h>的标准函数,其作用是把从source开始的num个字符拷贝到destination.最简单的方法是直接复制,但是由于它们可能存在内存的重叠区, ...

  3. windows平台下 c/c++进行http通信的教训

    由于需要使用c++开发一个桌面应用软件,需要用到http请求进行通讯,也是本人第一次进行网络相关的开发工作,遇到了不少坑. 由于是在windows下开发和使用的应用软件,自然而然想到了调用Window ...

  4. 抽屉效果的实现(DrawerLayout和SlidingMenu的对比)

    在做谷歌电子市场的时候用的是DrawerLayout实现的抽屉效果,在新闻客户端的时候用的是开源框架SlidingMenu来实现的,总的来说,各有个的优点,侧滑(开源框架)实现的效果更好,但是Draw ...

  5. (一二三)基于GCD的dispatch_once实现单例设计

    要实现单例,关键是要保证类的alloc和init只被调用一次,并且被自身强引用防止释放. 近日读唐巧先生的<iOS开发进阶>,受益匪浅,通过GCD实现单例就是收获之一,下面把这个方法与大家 ...

  6. springMVC源码分析--国际化实现Session和Cookie(二)

    上一篇博客springMVC源码分析--国际化LocaleResolver(一)中我们介绍了springMVC提供的国际化的解决方案,接下来我们根据springMVC提供的解决方案来简单的实现一个多语 ...

  7. Android开发学习之路--Activity之Intent

    窗外再次飘起了小雪,还有1周就过年了,2016年即将到来,来年不知道自己将身处何处,船到桥头自然直吧.还是继续学习吧,上次学习了Activity,那么如果是两个Activity之间,怎么从一个Acti ...

  8. Linux下使用两个线程协作完成一个任务的简易实现

    刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作,共同完成一个求和的任务. 打一下基础吧 本次需要使用到的知识点有: lpthread,编译的时候用到,相当于一个声明的 ...

  9. Uva - 230 - Borrowers

    AC代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cctype ...

  10. 今日成为CSDN认证专家

    认证时写的申请材料: 程序猿一枚毕业于南开工作于上海.喜欢读书,喜欢跑步,激情似火,心静如水. 喜欢编程,喜欢寻根问底各种技术,喜欢在各种新技术中汲取营养. 喜欢分享,因此以一些高质量的博文来回报各位 ...