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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
从零学Python之入门(四)运算
May 27 Python
Python import用法以及与from...import的区别
May 28 Python
python 写的一个爬虫程序源码
Feb 28 Python
简单易懂的python环境安装教程
Jul 13 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
python如何更新包
Jun 11 Python
Python生成器generator原理及用法解析
Jul 20 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
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
python requests库的使用
2021/01/06 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
办公自动化专业大学生职业规划书
2014/03/06 职场文书
《白鹅》教学反思
2014/04/13 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
2014年路政工作总结
2014/12/10 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
后勤个人工作总结
2015/02/28 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python