马赛克算法简介

 

          上一篇文章主要介绍了如何在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张图片

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

二、坐标系

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

马赛克算法简介_第2张图片

图2、自己设计的坐标系

三、马赛克矩形

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

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

 

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

 

马赛克算法简介_第3张图片

图4、当level=20的时候

 

马赛克算法简介_第4张图片

图5、当level=50的时候

你可能感兴趣的:(马赛克算法简介)