通过使用GLSL语言我们可以实现图片滤镜的各种效果。当然想要实现一些酷炫的滤镜效果,你需要有强大的数学能力。马赛克也属于图片的一种滤镜相对其他来说滤镜的算法来说还是相对简单一些。本文中推荐2种马赛克的算法和实现原理。
首先我们要了解一下马赛克滤镜的原理。马赛克效果就是把图片的一个相当大小的区域用同一个点的颜色来表示。可以认为是大规模的降低图像的分辨率,而让图片的一些细节隐藏起来。
1.正方形马赛克。正方形马赛克就是在获取像素点颜色的时候不去获取当前像素点的颜色,而是使用周边的颜色对这个像素点进行覆盖。如图所示:
图中有1234 四个像素点。在我们进行马赛克处理的时候。会用2号色块的颜色去覆盖134号色块的颜色。其次在我们进行马赛克处理的时候覆盖的颜色 不是凭空产生的 是通过像素点中原有的色块进行覆盖。正方形马赛克片元着色器代码如下:
2.六边形马赛克,六边形马赛克 顾名思义。就是马赛克的图形是一个六边形组成。我们再获取像素点的颜色的时候 是已这个像素点距离六边形中心点距离更近的那一个像素点的颜色。如图所示:
在此图中。由于红色的点距离中间绿色的那个中心点更近。所以在做马赛克的时候红色的像素点要用中心点的绿色的颜色值进行覆盖。具体代码如下:
网友评论