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聊天程序实例代码分享
Nov 18 Python
基于Python代码编辑器的选用(详解)
Sep 13 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
详解用python写一个抽奖程序
May 10 Python
pytorch 模型可视化的例子
Aug 17 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
python 实现定时任务的四种方式
Apr 01 Python
Python Django搭建文件下载服务器的实现
May 10 Python
python源码剖析之PyObject详解
May 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
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
Three.js基础学习之场景对象
2017/09/27 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
使用Python的判断语句模拟三目运算
2015/04/24 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
python实现日志按天分割
2019/07/22 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
大学生职业生涯规划书前言
2014/01/09 职场文书
简历的自我评价
2014/02/03 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
政风行风建设责任书
2014/07/23 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
公司文体活动总结
2015/05/07 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
在职证明书模板
2015/06/15 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android