Python实现PS滤镜的旋转模糊功能示例


Posted in Python onJanuary 20, 2018

本文实例讲述了Python实现PS滤镜的旋转模糊功能。分享给大家供大家参考,具体如下:

这里用 Python 实现 PS 滤镜中的旋转模糊,具体的算法原理和效果可以参考附录相关介绍。Python代码如下:

from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import numpy as np
import numpy.matlib
file_name='D:/Visual Effects/PS Algorithm/4.jpg'
img=io.imread(file_name)
img = img_as_float(img)
img_out = img.copy()
row, col, channel = img.shape
xx = np.arange (col)
yy = np.arange (row)
x_mask = numpy.matlib.repmat (xx, row, 1)
y_mask = numpy.matlib.repmat (yy, col, 1)
y_mask = np.transpose(y_mask)
center_y = (row -1) / 2.0
center_x = (col -1) / 2.0
R = np.sqrt((x_mask - center_x) **2 + (y_mask - center_y) ** 2)
angle = np.arctan2(y_mask - center_y , x_mask - center_x)
Num = 20
arr = ( np.arange(Num) + 1 ) / 100.0
for i in range (row):
  for j in range (col):
    T_angle = angle[i, j] + arr
    new_x = R[i, j] * np.cos(T_angle) + center_x
    new_y = R[i, j] * np.sin(T_angle) + center_y
    int_x = new_x.astype(int)
    int_y = new_y.astype(int)
    int_x[int_x > col-1] = col - 1
    int_x[int_x < 0] = 0
    int_y[int_y < 0] = 0
    int_y[int_y > row -1] = row -1
    img_out[i,j,0] = img[int_y, int_x, 0].sum()/Num
    img_out[i,j,1] = img[int_y, int_x, 1].sum()/Num
    img_out[i,j,2] = img[int_y, int_x, 2].sum()/Num
plt.figure(1)
plt.imshow(img)
plt.axis('off')
plt.figure(2)
plt.imshow(img_out)
plt.axis('off')
plt.show()

附:PS 滤镜——旋转模糊

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

%% spin blur
% 旋转模糊
clc;
clear all;
close all;
I=imread('4.jpg');
I=double(I);
% % % I_new=I;
% % % for kk=1:3
% % %   I_new(:,:,kk)=Spin_blur_Fun(I(:,:,kk), 30, 30);
% % % end
% % % imshow(I_new/255)
Image=I;
Image=0.2989 * I(:,:,1) + 0.5870 * I(:,:,2) + 0.1140 * I(:,:,3);
[row, col]=size(Image);
Image_new=Image;
Center_X=(col+1)/2;
Center_Y=(row+1)/2;
validPoint=1;
angle=5;
radian=angle*pi/180;
radian2=radian*radian;
Num=30;
Num2=Num*Num;
for i=1:row
  for j=1:col
    validPoint=1;
    x0=j-Center_X;
    y0=Center_Y-i;
    x1=x0;
    y1=y0;
    Sum_Pixel=Image(i,j);
    for k=1:Num
      x0=x1;
      y0=y1;
      %%% 逆时针
      % x1=x0-radian*y0/Num-radian2*x0/Num2;
      % y1=y0+radian*x0/Num-radian2*y0/Num2;
      %%% 顺时针
      x1=x0+radian*y0/Num-radian2*x0/Num2;
      y1=y0-radian*x0/Num-radian2*y0/Num2;
      x=floor(x1+Center_X);
      y=floor(Center_Y-y1);
      if(x>1 && x<col && y>1 && y<row)
        validPoint=validPoint+1;
        Sum_Pixel=Sum_Pixel+Image(y,x);
      end
    end
    Image_new(i,j)=Sum_Pixel/validPoint;
  end
end
 imshow(Image_new/255);

原图

Python实现PS滤镜的旋转模糊功能示例

效果图

Python实现PS滤镜的旋转模糊功能示例

效果图

Python实现PS滤镜的旋转模糊功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 测试实现方法
Dec 24 Python
浅谈Python中数据解析
May 05 Python
Python读取Excel的方法实例分析
Jul 11 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
matplotlib设置legend图例代码示例
Dec 19 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
python抓取文件夹的所有文件
Feb 27 Python
django主动抛出403异常的方法详解
Jan 04 Python
Python中new方法的详解
Jan 15 Python
对python字典过滤条件的实例详解
Jan 22 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
浅谈flask中的before_request与after_request
Jan 20 #Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 #Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 #Python
Python实现PS滤镜中马赛克效果示例
Jan 20 #Python
浅析python协程相关概念
Jan 20 #Python
Python实现可自定义大小的截屏功能
Jan 20 #Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 #Python
You might like
mysql建立外键
2006/11/25 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
jQuery实现本地存储
2020/12/22 jQuery
wxPython窗口的继承机制实例分析
2014/09/28 Python
Django框架模板介绍
2019/01/15 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
python 实现aes256加密
2020/11/27 Python
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
美国探亲签证邀请信
2014/02/05 职场文书
教师新年寄语
2014/04/03 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
娱乐节目策划方案
2014/06/10 职场文书
低碳环保标语
2014/06/12 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
公司人力资源管理制度
2015/08/05 职场文书
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技