0

我正在尝试将拉普拉斯滤波器应用于以下文本中的图像。

cv.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

但我不确定哪个值是 alpha。

文本:

我们对图像应用 α = 0.2 的 3×3 拉普拉斯滤波器,并取其绝对值以忽略梯度的方向。对于彩色图像,我们将过滤器分别应用于每个红色、绿色和蓝色通道,然后在通道上取平均值。最后,我们将拉普拉斯图像大小调整为 100 × 100 并将图像总和归一化为 1。这使我们能够通过对每组中的所有拉普拉斯图像取平均值来轻松计算专业照片和快照的边缘空间分布。

4

1 回答 1

2

根据我的经验,使用参数(可能是 alpha)进行图像锐化通常如下进行:

result = input + alpha*Laplacian(input)

就卷积核而言

result kernel = identify kernel + alpha * Laplacian kernel

所以

result kernel = 0 0 0 + alpha *  0 -1  0
                0 1 0           -1  4 -1
                0 0 0            0 -1  0

并添加为

result kernel =    0    -alpha      0 
                -alpha 1+4*alpha -alpha
                   0    -alpha      0

以上可能需要削波,因为它可能会过冲。

所以,交替地并且可能更好的是,

result = (1-alpha)*input + alpha*Laplacian(input)

所以

result kernel = 0       0      0  +     0     -alpha      0
                0   (1-alpha)  0     -alpha   4*alpha  -alpha
                0       0      0        0     -alpha      0

并加在一起

result kernel =     0     -alpha      0
                 -alpha   1+3*alpha  -alpha
                    0     -alpha      0

所以这些将在 Python/OpenCV 中实现为 cv2.filter2D()。

请注意,通常使用拉普拉斯算子的负数。

于 2022-03-02T20:14:17.750 回答