关于图像处理中的矩阵卷积运算

在学习Opencv中的矩阵掩码时候遇到一个关于掩码矩阵表示的紧凑形式的问题,这里本人找了很多关于矩阵卷积的内容,大概说下比较通俗的理解:

1首先上一个叫做卷积核的矩阵

在Opencv官方文档的掩码矩阵中,我们可以看到会出现这样一个矩阵,先说说对掩码矩阵的公式的理解,对于图中一个像素点,视觉效果会收到相邻的像素点的影响,分别是上面的像素点,下面的像素点,左边的像素点和右边的像素点,我们把该像素点乘以5倍,然后分别减去这4个相邻的像素点的值,会发生以下情况,如果改像素点的值比较大,周围的像素点值比较小,那么相减之后的结果必然比该像素点的值大;反之,如果该像素点值比较小,周围像素点值比较大,那么相减之后的结果必然比该像素点值小,从而达到亮的点更加亮,暗的点更加暗,也就是锐化的效果。

那么这个卷积核矩阵就是为了实现这个功能,下面会对这个矩阵的原理做详细分析


2再看看我设定的图像输入矩阵,这里假设图像是单通道


3矩阵掩码操作

操作步骤大概就是先固定住卷积核矩阵不动,也就是上面灰色的矩阵,然后确定图像输入矩阵待求的像素点如(0,0),也就是上面图像输入矩阵的“1”;然后把这个待求点对准卷积核矩阵的中心点,也就是上图卷积核矩阵中的“5”,然后对这两个矩阵求卷积。下面先上图:

关于图像处理中的矩阵卷积运算_第1张图片

看到了吗,“1”和“5”已经对准,下面就是求卷积,求卷积的方法我大概说下我的理解,就是把图像矩阵重叠的部分与卷积核矩阵重叠部分相乘,然后不重叠的部分就是用0乘以对应卷积核矩阵的像素值,然后相加得出的结果,也就是为什么卷积核矩阵中心“5”周围的点要设置为“-1”的原因,就是为了用这些“-1”乘以图像像素点周围4个相邻像素点,不明白的话可以看我下面的计算,当然图中知识以图像矩阵中(0,0)也就是“1”为例,对于图像矩阵,我们必须把其余8个位置的像素值都算出来。

y(0,0) = 0*0 + 0*-1 + 0*0 +0*-1 +1*5 + 2*-1 + 0*0 + 4*-1 + 5*0  

从上面的计算中可以看出,对于图像矩阵中“1”这个点,和他相邻的只有“2”和“4”两个,所以计算中体现出了2*-1和4*-1

剩下图像矩阵中的8个点也是按照这个原理做卷积运算,例如我要求图像矩阵中的“5”点,就把这个“5”点和卷积核矩阵中心的“5”对齐,然后做卷积运算。






你可能感兴趣的:(计算机视觉(OpenCV))