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同时向控制台和文件输出日志logging的方法
May 26 Python
Python smallseg分词用法实例分析
May 28 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
tensorflow实现加载mnist数据集
Sep 08 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
Python实现的文轩网爬虫完整示例
May 16 Python
python判断无向图环是否存在的示例
Nov 22 Python
django实现日志按日期分割
May 21 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 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下pdo的mysql事务处理用法实例
2014/12/27 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
今天是星期几的4种JS代码写法
2013/09/17 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
独特的python循环语句
2016/11/20 Python
python 统计代码行数简单实例
2017/05/04 Python
Python实现Event回调机制的方法
2019/02/13 Python
详解Python 函数如何重载?
2019/04/23 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
移交协议书
2014/08/19 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
北京英文导游词
2015/02/12 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书