马赛克算法简介

 

          上一篇文章主要介绍了如何在iOS平台实现给图片打马赛克的效果(链接:http://www.jianshu.com/p/87fb77273f00)。现在就来简单介绍一下关于如何实现马赛克算法的。

        其实给图片打码并不是在原有的图片上添加一层“蒙版”,而是使用各个平台提供的API去操作像素点,认为的干扰了像素点,就实现了马赛克的效果,以下面两幅图为例子,介绍一下如何的去“干扰像素”。

        在图像学中,如果你想去对图片进行处理,就必须得知道一个概念什么是“位图图像”。位图图像(bitmap), 亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增大单个像素,从而使线条和形状显得参差不齐。然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。常用的位图处理软件是Photoshop和Windows系统自带的画图。详情请参考百度百科:http://baike.baidu.com/link?url=EIUNFZDvxu5DqT8U1a495yQeklabnAVvoRZOgDAFkFmKZvTGkTZ-_D61prJzf-EHPgiqnUePPJRRSNgdhNUFqukklWGytCjLgedGyROu86y

一、事例图像

假如一个图像是由6 * 9 = 72个像素组成,现将一个像素点放大到图1方块单位大小。

图1、原始图片与马赛克图片的对比

二、坐标系

       现在以左下角第一个方块为原点将图像纳入坐标系中,如下图所示。马赛克效果实际上是在原始图片的起始位置(0,8)到(2,6)其中包含了9个像素(马赛克矩形3 * 3)。

图2、自己设计的坐标系

三、马赛克矩形

      这里所说的马赛克矩形,指的是N个三位像素所组成的矩形(这里使用3*3),使每一个矩形的ARGB都和第一个矩形的ARGB相同,就达到了破坏原有图像的效果。

      在iOS中可以直接使用接口#define memcpy(dest, src, len)进行像素复制并赋值给其余像素。马赛克效果的强弱,是由变量level控制的。

 

图3、控制马赛克效果强弱的变量

 

图4、当level=20的时候

 

图5、当level=50的时候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我头像是啥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值