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()方法