日期:2014-05-18  浏览次数:21026 次

200分求圖像比較算法
背景:用攝像頭攝像,我想當圖像變化時進行拍照,這就要求我能夠判斷,當前圖像和前一張圖像是否相同,或者相似度有多少?

問題:有2個Bitmap的圖像,我想比較它們是否完全相同(比較相似度也可以),但是如果逐個像素比較的話,比較耗系統資源,但是又沒有想到別的好的方法,以下是我寫的比較方法,很菜
請求高手指點方法多謝
C# code

private bool BitMapBIjiao(Bitmap bitmap1, Bitmap bitmap2) 
{ 
    bool BSame = true; 
    if (bitmap1 == null | bitmap2 == null) { 
        return false; 
        return; 
    } 
    if (bitmap1.Width == bitmap2.Width & bitmap1.Height == bitmap2.Height) { 
        for (int i = 0; i <= bitmap1.Width - 11; i += 10) { 
            for (int j = 0; j <= bitmap1.Height - 11; j += 10) { 
                if (bitmap1.GetPixel(i, j) != bitmap2.GetPixel(i, j)) { 
                    BSame = false; 
                    break; 
                } 
            } 
        } 
    } 
    else { 
        BSame = false; 
    } 
    return BSame; 
    
} 


請高手多多指點,分不夠可以加。C#,vb.net 實現的都可以

------解决方案--------------------
http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx
------解决方案--------------------
拍照这种单纯的比较同一个位置的像素是否相等估计是得不到的,毕竟外界因素太多
应该考虑用个阀值,认为在一定范围内都是允许的,然后再去考虑计算相似度。。。
相似度计算:满足的像素点的个数/总像素点个数
个人看法。。。
------解决方案--------------------
帮顶
------解决方案--------------------
好像有这样的算法!!
http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx
------解决方案--------------------
帮顶
------解决方案--------------------

听说国外高层建筑的安保系统有人像识别技术
------解决方案--------------------
早先有这样一个想法,把图片转换成黑白,比较灰度差。
不过只是想,没有做,不知道可不可行!
------解决方案--------------------
看到这句代码“bitmap1.GetPixel(i, j)”就知道效率不高。

对于位图的逐点扫描得通过内存直接遍历才够快,参考Bitmap.LockBits()方法