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 random
import numpy as np
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
half_patch =10
for i in range(half_patch, row-1-half_patch, half_patch):
  for j in range (half_patch, col-1-half_patch, half_patch):
    k1 = random.random() - 0.5
    k2 = random.random() - 0.5
    m=np.floor(k1*(half_patch*2 + 1))
    n=np.floor(k2*(half_patch*2 + 1))
    h=int((i+m) % row)
    w=int((j+n) % col)
    img_out[i-half_patch:i+half_patch, j-half_patch:j+half_patch, :] =\
            img[h, w, :]
plt.figure(1)
plt.imshow(img)
plt.axis('off')
plt.figure(2)
plt.imshow(img_out)
plt.axis('off')
plt.show()

附:PS 滤镜算法原理 ——马赛克

% method : 利用邻域的任意一点代替当前邻域所有像素点
%%%% mosaic
clc;
clear all;
addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm');
Image=imread('4.jpg');
Image=double(Image);
size_info=size(Image);
height=size_info(1);
width=size_info(2);
N=11;  % 控制邻域大小
Image_out=Image;
for i=1+N:N:height-N
  for j=1+N:N:width-N
    k1=rand()-0.5;
    k2=rand()-0.5;
    m=(k1*(N*2-1));
    n=(k2*(N*2-1));
    h=floor(mod(i+m,height));
    w=floor(mod(j+n,width));
    if w==0;
      w=width;
    end
    if h==0
      h=height;
    end
   Image_out(i-N:i+N,j-N:j+N,1)=Image(h,w,1);
   Image_out(i-N:i+N,j-N:j+N,2)=Image(h,w,2);
   Image_out(i-N:i+N,j-N:j+N,3)=Image(h,w,3);
  end
end
imshow(Image_out/255);

原图

Python实现PS滤镜中马赛克效果示例

效果图

Python实现PS滤镜中马赛克效果示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python Django模板的使用方法
Jan 14 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
python字符串查找函数的用法详解
Jul 08 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
python中xlutils库用法浅析
Dec 29 Python
浅析python协程相关概念
Jan 20 #Python
Python实现可自定义大小的截屏功能
Jan 20 #Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 #Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 #Python
Python搭建FTP服务器的方法示例
Jan 19 #Python
python re模块findall()函数实例解析
Jan 19 #Python
Python enumerate索引迭代代码解析
Jan 19 #Python
You might like
php 过滤危险html代码
2009/06/29 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
PHP 数组基础知识小结
2010/08/20 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
Django分组聚合查询实例分享
2020/04/29 Python
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
初中语文教学反思
2014/02/02 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
Python爬虫基础讲解之请求
2021/05/13 Python