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中运行并行任务技巧
Feb 26 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
python使用递归的方式建立二叉树
Jul 03 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
python中PyQuery库用法分享
Jan 15 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实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JTrackBar水平拖动效果
2007/07/15 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Python装饰器原理与用法分析
2018/04/30 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python 导入文件过程图解
2019/10/15 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
钳工实习自我鉴定
2013/09/19 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
新学期开学标语
2014/06/30 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
铁人观后感
2015/06/16 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
python中mongodb包操作数据库
2022/04/19 Python