前言
算子是图像边缘检测的最重要的算子之一,在机器学习、数字媒体、计算机视觉等领域起着重要作用。由Irwin Sobel在1968年的一次博士课题讨论会上提出。本文主要介绍了Sobel算子的计算过程,python实现过程和python中相关函数的介绍。方便读者实际使用。
1.图像中卷积的概念
卷积在信号处理领域有着极其广泛的应用,也有严格的物理和数学定义。这里只讨论卷积在数字图像处理中的应用。
1.卷积定义
对图像大矩阵和滤波小矩阵对应位置元素相乘再求和的操作就叫做卷积(Convolution)或者协相关(Correlation)。二者区别在于卷积需要再计算前翻转卷积核,而协相关则不需要翻转。
2.卷积算例
这里图像大矩阵
I
为
I=⎡⎣⎢−401006061135727212765⎤⎦⎥(1)
对应的滤波小矩阵
Gx
为
Gx=⎡⎣⎢−1−2−1000121⎤⎦⎥(2)
则滤波后,两个矩阵对应元素相乘的结果为
I⋅Gx⎡⎣⎢−40−200−600007225465⎤⎦⎥(3)
元素和
sum=−40+0+72−200+0+254−600+0+65=91
进行滤波后,135会被替换为91,即矩阵
I′
为
I′=⎡⎣⎢−40100606191727212765⎤⎦⎥(4)
3.边界补充问题
在进行卷积操作时,需要对边界进行处理,常见的处理有如下的方式:
3.1 补充零填充
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢000000000000000000000000000000−401006000000061135720000007212765000000000000000000000000000000⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(5)
3.2 边界赋值填充
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢−40−40−40−4010060606060−40−40−40−4010060606060−40−40−40−4010060606060−40−40−40−401006060606061616161135727272727272727212765656565727272721276565656572727272127656565657272727212765656565 ⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(5)
3.3 镜像填充
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢65127727212765651277272135616113572721356160100−40−401006060100−4060100−40−401006060100−4072135616113572721356165127727212765651277265127727212765651277272135616113572721356160100−40−401006060100−40 ⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(6)
3.4 块填充
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢−4010060−4010060−4010060−401006061135726113572611357261135727212765721276572127657212765−4010060−4010060−4010060−401006061135726113572611357261135727212765721276572127657212765−4010060−4010060−4010060−401006061135726113572611357261135727212765721276572127657212765⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(7)