计算图像的方差

Compute variance of image

我想在不使用 opencv 的情况下计算图像的拉普拉斯方差,因为 opencv 非常庞大。所以,我想使用任何其他更小的库。

这是我当前的代码。它工作完美,但使用 opencv-python-headless:

import cv2

image = cv2.imread("images/test.png")
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

laplacian = cv2.Laplacian(image_gray, cv2.CV_64F).var()
print(laplacian)

如何使用任何其他尺寸较小的 library/libraries 获得相同的结果(相同的拉普拉斯值)?

您首先需要将图像与拉普拉斯核进行卷积:

为此,您可以使用任何可以将图像加载到二维数组中的库。 Python "Pillow"-library 可能会有用。 然后你只需要计算图像的方差。 这已在这里得到回答: ).

您可以考虑使用 scipy instead with its laplacian function

from scipy import ndimage #To compute the laplacian
import imageio #To load the image as a numpy array
import numpy as np #To convert it to gray

#A function to convert your rgb image to gray
convert_to_gray = lambda rgb : np.dot(rgb[... , :3] , [0.299 , 0.587, 0.114]) 

image = imageio.imread("images/test.png")
image_gray = convert_to_gray(image)

laplacian = ndimage.laplace(image_gray).var()
print(laplacian)