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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
总结Python编程中三条常用的技巧
May 11 Python
Python中subprocess模块用法实例详解
May 20 Python
Python实现输出某区间范围内全部素数的方法
May 02 Python
mac 安装python网络请求包requests方法
Jun 13 Python
Python玩转PDF的各种骚操作
May 06 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
python SVM 线性分类模型的实现
Jul 19 Python
Python中socket网络通信是干嘛的
May 27 Python
python爬虫实例之获取动漫截图
May 31 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 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生成略缩图代码
2012/07/16 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
python中pass语句用法实例分析
2015/04/30 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python SocketServer源码深入解读
2019/09/17 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python字典排序的方法
2019/10/12 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
通过代码实例了解Python异常本质
2020/09/16 Python
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
经典大学生求职信范文
2014/01/06 职场文书
创先争优活动方案
2014/02/12 职场文书
节水标语大全
2014/06/11 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
综合实践活动报告
2015/02/05 职场文书
护士个人总结范文
2015/02/13 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
python获取字符串中的email
2022/03/31 Python
讲解MySQL增删改操作
2022/05/06 MySQL