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 logging模块学习笔记
May 24 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
Python开发的实用计算器完整实例
May 10 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
Python发送邮件封装实现过程详解
May 09 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
python如何编写类似nmap的扫描工具
Nov 06 Python
python模拟点击在ios中实现的实例讲解
Nov 26 Python
django中cookiecutter的使用教程
Dec 03 Python
Python扫描端口的实现
Jan 25 Python
Python如何使用logging为Flask增加logid
Mar 30 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python中调用其他程序的方式详解
2019/08/06 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
五四青年节优秀演讲稿范文
2014/05/28 职场文书
道歉情书大全
2015/05/12 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技