一张图片胜过千言万语。从技术上讲,一张图片在各自的范围内以矩阵的形式值一百/千个数字。让我们验证一下。
在上面的灰度图像中,每个方框/正方形表示一个强度值在0到255之间的像素。现在,让我们再看一下RGB图像。
在RGB图像中,我们看到每个像素有三个值,分别代表红色、绿色和蓝色的值。因此,图像只不过是一个特定维度的矩阵。
内核
核实际上是具有比图像矩阵小的M×N维的矩阵。该核也称为卷积矩阵,非常适合于模糊、锐化、边缘检测和类似的图像处理任务。
在下面的图像中,我们有一个5×5灰度的图像矩阵,它是黄色的,而红色的矩阵(3×3)是用来锐化整个图像的核矩阵。对于不同的图像处理任务,核矩阵将具有不同的值。
核矩阵将通过大矩阵(即图像矩阵)从左到右和从上到下卷积,在卷积的每一步,它返回单个像素值。该单个像素值是3×3矩阵网格中相邻像素的平均值。最后,每一步返回的像素值将产生输出图像矩阵。例如,如果我们想要锐化给定的图像,那么我们可以使用定义的核矩阵来实现该任务。并且所得到的矩阵/图像将是锐化的图像。以下是定义区域(3×3)的卷积过程。convolution takes place
对于给定的图像,选择(x,y)坐标并将核矩阵的中心与(x,y)坐标对齐。对于3×3矩阵,中心应该是1×1。然后将每个核值与图像矩阵的对应值相乘,并将所有相乘的结果相加。理想情况下,它是矩阵按元素相乘的和。让我们看看它是如何工作的:
输出值(即241)将被设置为(x,y)位置处的输出图像的像素值。类似地,核矩阵将在整个图像矩阵上卷积。现在,让我们将相同的内核应用于图像,并使用OpenCV的filter2D函数来查看不同之处。filter2D
import cv2
import numpy as np
在应用给定的核之后,我们可以观察到左边的图像(即原始图像)和右边的图像(即锐化的图像)之间的差异。对于模糊、边缘检测和其他图像处理任务,内核将分别具有不同的值。这里,为了简单起见,我们考虑了3×3维的核,但是在给定M&N为奇数的情况下,核可以具有比图像矩阵更小的不同维度。它更像是一种研发,为特定的任务设计最优的核心矩阵。
要交互操作内核,请参阅setosa。一定要尝试不同的内核。setosa
感谢您的阅读!
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/04/%e5%9b%be%e5%83%8f%e6%a0%b8-2/