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 19 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
使用Python的turtle模块画图的方法
Nov 15 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
python构建基础的爬虫教学
Dec 23 Python
Python requests获取网页常用方法解析
Feb 20 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Python中文纠错的简单实现
Jul 07 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实现用户认证及管理完全源码
2007/03/11 PHP
php mysql数据库操作类
2008/06/04 PHP
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
js的回调函数详解
2015/01/05 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Python小白垃圾回收机制入门
2020/06/09 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
美国创意之家:BulbHead
2017/07/12 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
项目管理计划书
2014/01/09 职场文书
教师求职自荐信
2014/03/09 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
公司离职证明标准格式
2014/11/18 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL