提醒:本文章用到的后处理基类脚本在这篇文章可以找到定义,后续会用此为基类来写:
https://blog.csdn.net/cgy56191948/article/details/100665580
下面讲述一个常见的屏幕后处理效果————边缘检测,这是描边效果的一种实现方法,边缘检测的原理是利用一些边缘检测算子对图像进行卷积操作,如下图:
先说一下什么是卷积:
一、什么是卷积
在图像处理中,卷积操作指的就是使用一个卷积核对一张图像中的每个像素进行一系列的操作。卷积核 通常是一个四方形网格结构(例如2X2、3X3的方形区域),该区域内每个方格都有一个权重值。当对图形中某个像素进行卷积时,我们会把卷积核的中心位置放置于该像素上,翻转核之后再依次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结果就是该位置的新像素值。这样的计算过程虽然简单,但可以实现多种常见的图像处理效果,例如图像模糊,边缘检测等。
二、常见的边缘检测算子
卷积操作的神奇之处在于选择的卷积核,那么用于边缘检测的卷积核(也叫边缘检测算子)应该是什么样呢?我们可以想一下边是如何形成的。如果相邻像素之间存在差别明显的颜色、亮度、纹理等属性,我们就会认为它们之间应该有一条边界。这种相邻像素之间的差值可以用梯度来表示,可以想象得到,边缘处的梯度绝对值会比较大,基于这样的理解,有几种不同的边缘检测算子被先后提了出来。
常见的3种边缘检测算子如上图所示,它们都包含了两个方向的卷积核,分别用于检测水平方向和竖直方向上的边缘信息。在进行边缘检测时,我们需要对每个像素分别进行一次卷积计算,得到两个