【问题标题】:Two pictures seem nearly identical [duplicate]两张图片看起来几乎相同[重复]
【发布时间】:2013-12-12 04:14:48
【问题描述】:

为了好玩,我试图完成这项工作: 如果我离开电脑,它应该会在几秒钟后锁定它。

所以我正在初始化一个计时器并每 3 秒拍一张照片。我计算哈希值并将其与旧图片进行比较。这是我的测试代码:

Timer _timer;
WebCam _webCam;
Bitmap _bitmap;

public CameraChecker()
{
    _webCam = new WebCam();
    _webCam.Connect();
    _timer = new Timer(TimerCb, null, 0, 3000);
}

private void TimerCb(Object stateInfo)
{
    _webCam.Update();
    Bitmap newBitmap = _webCam.CalcBitmap();
    if (_bitmap == null)
        _bitmap = newBitmap;
    else
    {
        ImageConverter conv = new ImageConverter();
        byte[] bytesNew = (byte[])conv.ConvertTo(newBitmap, typeof(byte[]));
        byte[] bytesOld = (byte[])conv.ConvertTo(_bitmap, typeof(byte[]));

        //IStructuralEquatable eqa1 = bytesNew;
        //bool eq = eqa1.Equals(bytesOld, StructuralComparisons.StructuralEqualityComparer);

        //Compute a hash for each image
        SHA256Managed shaM = new SHA256Managed();
        byte[] hash1 = shaM.ComputeHash(bytesNew);
        byte[] hash2 = shaM.ComputeHash(bytesOld);

        //Compare the hash values
        bool eq = true;
        for (int i = 0; i < hash1.Length && i < hash2.Length; i++)
        {
            if (hash1[i] != hash2[i])
            {
                eq = false;
                break;
            }
        }

        if (eq)
        {
            System.Diagnostics.Debugger.Break();
        }
        else
        {
            _bitmap = newBitmap;
        }
    }
}

我正在使用 MetriCam SDK 拍摄照片,似乎效果不错。
我的问题:永远不会发生两张图片具有完全相同的值。即使我尝试使相机变暗,它似乎也不起作用。

如您所见,我尝试使用 StructuralEquatable,但效果不佳。

我的测试项目是徒劳的吗?

像往常一样,感谢您的任何建议或提示!

【问题讨论】:

  • 如果您使用太阳作为光源,它会移动;即图片不同。
  • 这种情况类似于浮点计算,因为我们不检查两个数字之间的相等性,只检查差异低于某个阈值。
  • 因为您正在对图像进行哈希处理,所以您只需要一个像素不同,哈希值也不同。
  • 嗯没有找到其他线程,可能我正在搜索图片而不是图片。我也不确定为什么人们会使用 Facepalming,Hashing Idea 是我在网上找到的解决方案。

标签: c# image


【解决方案1】:

您制作两张完全相同的照片的机会可能为零。唯一的另一种可能性是哈希冲突,这也接近于零。所以你的代码运行良好。计算哈希值不是您的问题的解决方案。

【讨论】:

    猜你喜欢
    • 2010-10-23
    • 2019-05-01
    • 1970-01-01
    • 2015-04-16
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多