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读取Android permission文件
Nov 01 Python
python实现折半查找和归并排序算法
Apr 14 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
python使用requests.session模拟登录
Aug 09 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python pandas对excel的操作实现示例
Jul 21 Python
python如何运行js语句
Sep 09 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 Python
Python Selenium异常处理的实例分析
Feb 28 Python
python中%格式表达式实例用法
Jun 18 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 字段类型说明
2007/04/27 PHP
php购物车实现代码
2011/10/10 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
PHP常用处理静态操作类
2015/04/03 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
Python爬虫文件下载图文教程
2018/12/23 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
C#面试题
2016/05/06 面试题
护理专业本科生自荐信
2013/10/01 职场文书
讲解员培训方案
2014/05/04 职场文书
合作经营协议书范本
2014/09/16 职场文书
个人委托书范文
2015/01/28 职场文书
红与黑读书笔记
2015/06/29 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS