我可以检测到故障图像的哪些特征?

What features do glitched images have that I could detect?

我正在尝试构建一个只向数据库发送“好”帧的素材过滤器。

这是我的当前评分函数:

def rateImg(img):
    try:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    except:
        gray = img
    edges = cv2.Canny(gray, 0, 255)
    countours, _ = cv2.findContours(
        edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
    num_of_countours = len(countours)
    lap = cv2.Laplacian(gray, cv2.CV_64F).var()
    lap = round(lap, 2)
    return [lap, num_of_countours]

首先,我使用拉普拉斯算子的方差来计算特定时间图像的清晰度 window。

从技术上讲,它应该为我提供一个“好”的框架,但情况并非总是如此。

我必须使用的相机不是很好,有时会像 this 那样出现故障,并且像这样的帧具有最高的拉普拉斯方差。

因此,我目前的解决方案是计算图像中的计数数量,如果图像超过特定阈值,我将其归类为“故障”。但是通过这种方法,算法将包含大量对象的图像评为“故障”。

此外,我已经尝试过 detecting squares and rectangles,但事实证明那比 countour 方法效果要差得多。

有什么方法可以检测图像中的明显故障吗? 我觉得应该有,因为作为一个人,我一眼就可以很容易地将故障图像和正常图像分类。我似乎无法确定到底是什么让它们与众不同。

有什么方法可以检测图像中的明显故障吗?

是的,但可能不适用于复杂的随机故障,看看here

这不是重复,但在那种情况下,您可以检测是否存在包含相同 RGB 值的水平区域。 (你也可以检测是否有大面积的图像包含相同的颜色。从相机拍摄的照片永远不会包含相同的 RGB 值,尽管它们看起来相似,计算机生成的图像是一个例外)

as a human I can easily classify glitched and normal images at a glance.

事实上,您无法识别出现故障的图像。您尝试识别其中的对象。当你看到一些你不认识的“奇怪”的东西时,你会认为它是一个错误的图像。除非你训练它,否则机器无法做到这一点。

Is there any way to detect obvious glitches in an image

我不认为一个人可以编写一个可以实现它的程序。

.

what exactly makes them different.

你和机器看待世界的方式。你脑子里直接接收到一张清晰的照片,你要'train'很多次才能确定照片是否正常

就试着观察这个计算机可以看到的“图像”

73 64 67 68 64 66 6e 67
73 6e 68 72 67 74 72 79
75 79 65 75 79 65 75 74
6d 6e 79 6d 65 74 75 79
65 6d 6a 74 75 6b 69 20
79 66 74 79 2c 6f 75 69
74 2c 6f 69 79 74 79 2c

我不是 ML 工程师,但我可以肯定地告诉你,我相信你甚至不会尝试这样做。

我认为不仅仅是评论,但它并没有真正回答您的问题。由于我是 Whosebug 的新手,我无法添加评论,所以我会发布这个作为答案。