cv2 拉普拉斯函数中的 alpha 值是哪个

发布于 2025-01-11 15:59:38 字数 362 浏览 0 评论 0原文

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

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

但我不确定哪个值是 alpha。

文本:

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

I am trying to apply Laplacian filter to image from following text.

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

But I am not sure which value is alpha.

Text:

we apply a 3×3 Laplacian filter with α = 0.2 to the image, and take its absolute value to ignore the direction of the gradients. For color images, we apply the filter to each of the red, green, and blue channels separately and then take the mean across the channels. Finally, we resize Laplacian image size to 100 × 100 and normalize the image sum to 1. This allows us to easily calculate the edge spatial distribution of the professional photos and snapshots by taking the mean across all the Laplacian images in each set.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回首观望 2025-01-18 15:59:38

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

result = input + alpha*Laplacian(input)

就卷积核而言,将

result kernel = identify kernel + alpha * Laplacian kernel

So

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)

So

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

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

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

In my experience, the use of an argument, possibly, alpha, for image sharpening is often done as follows:

result = input + alpha*Laplacian(input)

In terms of a convolution kernel that would be

result kernel = identify kernel + alpha * Laplacian kernel

So

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

and adding as

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

The above may need clipping as it may overshoot.

So, alternately and probably better would be,

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

So

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

and adding together as

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

So these would be implemented in Python/OpenCV as cv2.filter2D().

Note, that the negative of the Laplacian is typically used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文