1.3 更多边缘检测内容(More edge detection)

图片边缘有两种渐变方式,一种是由明变暗,另一种是由暗变明。实际应用中,这两种渐变方式并不影响边缘检测结果,可以对输出图片取绝对值操作,得到同样的结果

由亮向暗

由暗向亮

下图的垂直边缘过滤器是一个3×3的区域,左边相对较亮,右边相对较暗。右图的水平边缘过滤器也是一个3×3的区域,上边相对较亮,而下方相对较暗

30(右边矩阵中绿色方框标记元素)代表了左边这块3×3的区域(左边矩阵绿色方框标记部分),这块区域是上边比较亮,下边比较暗,所以它在这里发现了一条正边缘。而-30(右边矩阵中紫色方框标记元素)代表了左边另一块区域(左边矩阵紫色方框标记部分),这块区域是底部比较亮,而上边则比较暗,所以在这里它是一条负边

10(右边矩阵中黄色方框标记元素)代表的是左边这块区域(左边6×6矩阵中黄色方框标记的部分)。这块区域左边两列是正边,右边一列是负边,正边和负边的值加在一起得到了一个中间值。但假如这是一个非常大的1000×1000大图,就不会出现亮度为10的过渡带了,因为图片尺寸很大,这些中间值就会变得非常小

对于这个3×3的过滤器来说,使用了其中的一种数字组合:

还可以使用这种:

[101202101]\begin{bmatrix}1 & 0 & - 1 \\ 2 & 0 & - 2 \\ 1 & 0 & - 1 \end{bmatrix}

叫做Sobel过滤器,优点在于增加了中间一行元素的权重,使得结果的鲁棒性会更高一些

或者:

[30310010303]\begin{bmatrix} 3& 0 & - 3 \\ 10 & 0 & - 10 \\ 3 & 0 & - 3 \end{bmatrix}

叫做Scharr过滤器,也是一种垂直边缘检测,如果将其翻转90度,就能得到对应水平边缘检测

随着深度学习的发展,如果想检测图片的各种边缘特征,而不仅限于垂直边缘和水平边缘,那么filter的数值一般需要通过模型训练得到,将矩阵的所有数字都设置为参数,通过数据反馈,让神经网络自动去学习它们,类似于标准神经网络中的权重WW一样由梯度下降算法反复迭代求得,会发现神经网络可以学习一些低级的特征,例如这些边缘的特征。CNN的主要目的就是计算出这些filter的数值,确定得到了这些filter后,CNN浅层网络也就实现了对图片所有边缘特征的检测

Last updated