本文用 Python 实现 PS 的一种滤镜效果,称为万花筒。也是对图像做各种扭曲变换,最后图像呈现的效果就像从万花筒中看到的一样:

图像的效果可以参考之前的博客:

import matplotlib.pyplot as plt

from skimage import io

from skimage import img_as_float

import numpy as np

import numpy.matlib

import math

file_name='D:/Visual Effects/PS Algorithm/4.jpg';

img=io.imread(file_name)

img = img_as_float(img)

row, col, channel = img.shape

# set the parameters

radius = 100.0

angle = math.pi/3

angle2 = math.pi/4

sides = 10.0

# set the center of the circle, proportion of the image size

centerX = 0.5

centerY = 0.5

iWidth=col

iHeight=row

center_x=iWidth*centerX

center_y=iHeight*centerY

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)

xx_dif = x_mask - center_x

yy_dif = y_mask - center_y

r = np.sqrt(xx_dif * xx_dif + yy_dif * yy_dif)

theta = np.arctan2(yy_dif, xx_dif+0.0001) - angle - angle2

temp_theta=theta/math.pi*sides*0.5

temp_r = np.mod(temp_theta, 1.0)

mask_1 = temp_r < 0.5

theta = temp_r * 2 * mask_1 + (1-temp_r) * 2 * (1 - mask_1)

radius_c=radius/np.cos(theta)

temp_r = np.mod (r/radius_c, 1.0)

mask_1 = temp_r < 0.5

r = radius_c * (temp_r * 2 * mask_1 + (1-temp_r) * 2 * (1 - mask_1))

theta = theta + angle

x1_mask = r * np.cos(theta) + center_x

y1_mask = r * np.sin(theta) + center_y

mask = x1_mask < 0

x1_mask = x1_mask * (1 - mask)

mask = x1_mask > (col - 1)

x1_mask = x1_mask * (1 - mask) + (x1_mask * 0 + col -2) * mask

mask = y1_mask < 0

y1_mask = y1_mask * (1 - mask)

mask = y1_mask > (row -1)

y1_mask = y1_mask * (1 - mask) + (y1_mask * 0 + row -2) * mask

img_out = img * 1.0

int_x = np.floor (x1_mask)

int_x = int_x.astype(int)

int_y = np.floor (y1_mask)

int_y = int_y.astype(int)

p_mask = x1_mask - int_x

q_mask = y1_mask - int_y

img_out = img * 1.0

for ii in range(row):

for jj in range (col):

new_xx = int_x [ii, jj]

new_yy = int_y [ii, jj]

# p = p_mask[ii, jj]

# q = q_mask[ii, jj]

img_out[ii, jj, :] = img[new_yy, new_xx, :]

plt.figure (1)

plt.imshow (img)

plt.axis('off')

plt.figure (2)

plt.imshow (img_out)

plt.axis('off')

plt.show()

PS 滤镜— — 万花筒效果

clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

Python&colon; PS 滤镜--旋涡特效

本文用Python 实现 PS 滤镜的旋涡特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/42215 ...

Python&colon; PS 滤镜--USM 锐化

本文用 Python 实现 PS 滤镜中的 USM 锐化效果,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/detail ...

Python&colon; PS 滤镜--素描

本文用 Python 实现 PS 滤镜中的素描特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/386 ...

Python&colon; PS 滤镜--表面模糊

本文用 Python 实现 PS 滤镜中的表面模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/528 ...

Python&colon; PS 滤镜--旋转模糊

本文用 Python 实现 PS 滤镜中的旋转模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/392 ...

Python&colon; PS滤镜--径向模糊

本文用 Python 实现 PS 滤镜中的径向模糊特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/3 ...

Python&colon; PS 滤镜--马赛克

本文利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/30 ...

Python&colon; PS 滤镜--波浪特效

本文用 Python 实现 PS 滤镜的波浪特效,具体效果可以参考之前的博客 http://blog.csdn.net/matrix_space/article/details/42215221 im ...

随机推荐

谈一谈php&colon;&sol;&sol;filter的妙用

php://filter是PHP中独有的协议,利用这个协议可以创造很多"妙用",本文说几个有意思的点,剩下的大家自己下去体会.本来本文的思路我上半年就准备拿来做XDCTF2016的 ...

ThinkPHP升级指导

升级指导 http://www.kancloud.cn/manual/thinkphp5/163239 从V5.0.1升级到V5.0.2 从V5.0.1升级到V5.0.2需要注意如下事项: 下列模型属 ...

nginx作反向代理,实现负载均衡

nginx作反向代理,实现负载均衡按正常的方法安装好 ngixn,方法可参考http://www.cnblogs.com/lin3615/p/4376224.html其中作了反向代理的服务器的配置如下 ...

HDU &Tab;1037&Tab;- Keep on Truckin&&num;39&semi;

没啥可说的... #include using namespace std; ; int a,b,c; int main() { while(cin>>a ...

MySql全国省市区SQL语句

CREATE TABLE IF NOT EXISTS `province` (   `id` int(11) NOT NULL auto_increment,   `provinceID` int(1 ...

关于 Angular 跨域请求携带 Cookie 的问题

在前端开发调试接口的时候都会遇到跨域请求的问题.传统的方式是使用 Nginx 反向代理解决跨域.比如所有接口都在 a.com 的域下,通过 Nginx 将所有请求代理到 a.com 的域下即可. 使用 ...

CentOS7上手动部署入门级kubernetes

前言 翻看了很多的kubernetes的安装教程,也反复做了一些实验,深感教程之复杂,所以决定写一个极简版本的安装教程,目标在于用尽可能少的参数启动服务,并且剖析各组件关系,然后再在此基础上逐步添加参 ...

python从零开始 -- 第2篇之python版本差异

python从零开始 -- 第2篇之python版本差异 第0篇开始,咱们就说选择 python 3.x,一般来说,咱们面临选择的时候总是想了解更多一点,并且版本之间的对比能引申出很多有意思的故事和知 ...

HDU-3480 Division (四边形不等式优化DP)

题目大意:将n个数分成m组,将每组的最大值与最小值的平方差加起来,求最小和. 题目分析:先对数排序.定义状态dp(i,j)表示前 j 个数分成 i 组得到的最小和,则状态转移方程为dp(i,j)=mi ...

javaScript年份下拉列表框内容为当前年份及前后50年

javascript下拉列表框,内容为当前年份及前后50年,默认选择为当前年份

python万花筒教程_Python: PS 滤镜--万花筒效果相关推荐

  1. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  2. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

  3. python后端教程_Python学习教程(技术干货):关于前后端分离开发入门

    原标题:Python学习教程(技术干货):关于前后端分离开发入门 对于程序员来说,其实Tab和空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一 ...

  4. python教程是什么-Python基础教程_Python入门知识

    Python基础教程频道为编程初学者提供入门前的所有基础知识,必须要掌握的一些PYTHON基础语法语句,基本的数据类型. 让大家可以更快速.更容易理解的的方式掌握Python编程所需要的基础知识,灵活 ...

  5. python 3教程_Python 3 教程

    全屏 Python 3 教程 Python的3.0版本,常被称为Python 3000,或简称Py3k.相对于Python的早期版本,这是一个较大的升级.为了不带入过多的累赘,Python 3.0在设 ...

  6. python基础教程是什么-Python基础教程_Python入门知识

    Python基础教程频道为编程初学者提供入门前的所有基础知识,必须要掌握的一些PYTHON基础语法语句,基本的数据类型. 让大家可以更快速.更容易理解的的方式掌握Python编程所需要的基础知识,灵活 ...

  7. python itchat教程_Python学习教程:教你用Python通过微信来控制电脑摄像头

    原标题:Python学习教程:教你用Python通过微信来控制电脑摄像头 如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证.今天的Python学习教程就来通 ...

  8. python ctypes教程_python ctypes是什么

    ctypes是python的一个函数库,提供和C语言兼容的数据类型,可以直接调用动态链接库中的导出函数. 为了使用ctypes,必须依次完成以下步骤: ·加载动态链接库 ·将python对象转换成ct ...

  9. python信号处理教程_Python信号处理

    python信号处理教程 Welcome to python signal processing tutorial. This is going to be a very basic lesson o ...

最新文章

  1. HDU 1257 - 最少拦截系统 ( LIS / 贪心 )
  2. IntelliJ IDEA常用统一设置(Linux/Mac/Windows)
  3. 快速排名系统询火星推荐_搜狗网站快速排名系统 - 新站权重如何快速提升
  4. VS2012+7600配置驱动环境
  5. Fedora 11-Alpha试用手记
  6. JGroups:无需额外基础架构的领导人选举
  7. antd 表单域验证规则 - 只能输入数字字符,去除前导0
  8. SQL count和case when配合统计给定条件下不重复的记录数
  9. 谐波分析显著性检验matlab,关于谐波检测方法的MATLAB仿真及综合性能分析.pdf
  10. VsFTP出现500 OOPS: cannot change directory的解决办法
  11. UVA 357 - Let Me Count The Ways
  12. python stdout.write_python 中sys.stdout.write 和 print sys.stdout的区别
  13. LeetCode 67. Add Binary
  14. 商业 - 业务领先模型介绍(BLM)
  15. Android 串口开发
  16. python双重for循环 列表推导式_Python轻量级循环-列表推导式
  17. JDY-10M组网 蓝牙MESH组网
  18. 洛谷P4939 Agent2(树状数组差分)
  19. Android控制wifi开关
  20. 数据湖和数据仓库区别介绍

热门文章

  1. 深入理解计算机系统——第九章 Virtual Memory
  2. 论文分享 |基于知识追踪的学习者动态知识建构过程及认知项目难度建模
  3. 传智杯题目java_2020传智杯-区域赛B组
  4. Hadoop源码分析8: IPC流程(3)客户端的clients、connections、calls复用
  5. 分布式电源接入对配电网的影响(matlab程序) 分布式电源的接入使得配电系统从放射状无源网络变为分布有中小型电源的有源网络
  6. 《应用多元统计》计算样本均值向量,样本离差阵,样本协差阵,样本相关阵
  7. 爬取京东商城用户评论(福利)
  8. Android 应用程序的优先级和进程状态
  9. 2022年数维杯数学建模B题 大规模新型冠状病毒疫情最优应对策略研究求解全过程文档及程序
  10. 企业IT部门基本岗位配置