图像处理中的卷积运算

      卷积是对矩阵中的每一个元素进行的操作,卷积所实现的功能是由其卷积核的形式决定的,卷积核是一个大小固定、有数值参数构成的矩阵,矩阵的中心为参考点(anchor point)或锚点,矩阵的大小称为核支撑。

      卷积计算法:要计算一个特定点的卷积值,首先将核的参考点定位到该特定点,核的其余元素覆盖矩阵中相对应的局部周围点。对于每一个核中的的点,得到这个点的值与数组中特定点的值的乘积并求所有这些乘积的累加和,即该特定点的卷积值,用这个结果替代该特定点的值。通过在整个图像上移动卷积核,对图像的每个点重复此操作。

下图说明了一个卷积核如何在矩阵中进行运算:

 

### 图像处理中的卷积运算数学公式 在图像处理领域,卷积运算是指通过对图像应用特定的核(kernel),来达到不同的图像处理效果。对于二维连续函数 \(f(x,y)\) 和卷积核 \(C(u,v)\),其卷积定义如下: \[ g(x, y) = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty} f(\xi,\eta) C(x-\xi,y-\eta)d\xi d\eta \] 当转换到离散情况下,即针对实际数字图像时,则变为求和形式而非积分[^2]。 具体来说,在计算机视觉中更常见的是离散版本的表达方式: \[ g(i,j)=\sum_m\sum_n f(m,n)c(i-m,j-n) \] 这里\(g(i,j)\)表示输出图像的位置\((i,j)\)处像素;\(c\)代表用于操作原图\(f\)上的每一个位置的小矩阵或滤波器窗口,也称为内核(kernel)[^3]。 为了更好地理解这一过程,下面给出一段Python代码片段展示如何手动计算简单的二维数组之间的卷积: ```python import numpy as np def convolve_2d(image, kernel): # 获取输入参数尺寸 img_h, img_w = image.shape[:2] ker_h, ker_w = kernel.shape[:2] # 计算填充宽度 pad_h, pad_w = int(ker_h / 2), int(ker_w / 2) # 对原始图片进行零填充以保持大小不变 padded_image = np.pad(image, ((pad_h,pad_h),(pad_w,pad_w)), mode='constant') output = np.zeros_like(image) for i in range(img_h): for j in range(img_w): roi = padded_image[i:i+ker_h, j:j+ker_w] output[i][j] = np.sum(np.multiply(roi,kernel)) return output ``` 此段程序实现了基本的二维卷积功能,并可用于执行诸如Sobel边缘检测等任务[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值