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生成指定尺寸缩略图的示例
May 07 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
Python获取指定字符前面的所有字符方法
May 02 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
python支持多线程的爬虫实例
Dec 21 Python
python画图常规设置方式
Mar 05 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
五分钟带你搞懂python 迭代器与生成器
Aug 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
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现发送与接收邮件的方法详解
2018/03/28 Python
实例讲解Python3中abs()函数
2019/02/19 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
高中班长自我鉴定
2013/12/20 职场文书
酒店总经理欢迎词
2014/01/08 职场文书
自荐信格式简述
2014/01/25 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
支部组织生活会方案
2014/06/10 职场文书
2014年党务工作总结
2014/11/25 职场文书
大学生创业事迹材料
2014/12/30 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书