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新手在作用域方面经常容易碰到的问题
Apr 03 Python
浅谈Python中的闭包
Jul 08 Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
Selenium元素的常用操作方法分析
Aug 10 Python
python 异或加密字符串的实例
Oct 14 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
Python 中由 yield 实现异步操作
May 04 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 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横向重复区域显示二法
2008/09/25 PHP
php桥接模式应用案例分析
2019/10/23 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
jQuery事件用法详解
2016/10/06 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
送货司机岗位职责
2013/12/11 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
食品采购员岗位职责
2014/04/14 职场文书
学校安全管理责任书
2014/07/23 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
销售业务员岗位职责
2015/02/13 职场文书
公司地址变更通知
2015/04/25 职场文书
四则混合运算教学反思
2016/02/23 职场文书