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利用装饰器进行运算的实例分析
Aug 04 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
Python中turtle库的使用实例
Sep 09 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
Python模块的制作方法实例分析
Dec 21 Python
python with (as)语句实例详解
Feb 04 Python
Python数据结构dict常用操作代码实例
Mar 12 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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
apache和PHP如何整合在一起
2015/10/12 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
Python httplib模块使用实例
2015/04/11 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
Python错误的处理方法
2020/06/23 Python
Python读写压缩文件的方法
2020/07/30 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
公务员培训自我鉴定
2014/02/01 职场文书
商务经理岗位职责
2014/07/30 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
MySQL kill不掉线程的原因
2021/05/07 MySQL
Python爬取某拍短视频
2021/06/11 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python