【发布时间】:2020-09-07 08:42:28
【问题描述】:
我试图判断图像是否像素化。我试图使用拉普拉斯方差方法来执行此操作,但我不确定它是否正常工作,因为使用我的代码返回的一个非常扭曲/像素化的图像具有非常高的 1011 方差:
import sys
import cv2
import imutils as im
csv_filename = sys.argv[1]
def variance_of_laplacian(image):
# compute the Laplacian of the image and then return the focus
# measure, which is simply the variance of the Laplacian
# image = cv2.copyMakeBorder(image, 100, 100, 100, 100, cv2.BORDER_CONSTANT, value = [255, 255, 255])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# invert gray image
gray = 255 - gray
# cv2.imshow("result", gray)
# cv2.waitKey(0)
laplacian_var = cv2.Laplacian(gray, cv2.CV_64F).var()
return laplacian_var
image = im.url_to_image(sys.argv[1])
laplacian_var = variance_of_laplacian(image)
print laplacian_var
是否有其他方法可以检测图像中的像素化或类似情况?
【问题讨论】:
-
.var()来自哪里? -
这看起来确实不是一个可以回答的问题,至少在您期望的图像类型没有更多限制的情况下并非如此。 “扭曲”和“像素化”是什么意思?例如,对于完美棋盘和“扭曲”的图像,拉普拉斯算子可能同样高。
-
@fmw42 我不确定。我使用这个site 作为拉普拉斯部分的参考。
-
@bnaecker 我将拥有的图像类型是产品图像。意味着白色背景,然后是中心的单个产品(至少理想情况下)。所以在我的例子中,一个像素化的图像将是一罐蛋黄酱,它被调整得更大,从而使文本和其他区域看起来粗糙和扭曲。对不起,如果我没有很好地解释它。
-
你能提供你的源图片吗?
标签: python opencv python-2.x