运动检测的颜色相似度

Posted

技术标签:

【中文标题】运动检测的颜色相似度【英文标题】:Color resemblance for motion detection 【发布时间】:2015-02-16 10:40:55 【问题描述】:

给定 2 个连续帧,我如何搜索发生变化的像素? 我尝试了以下方法:

        if (old != null)
        
            for (int i = 0; i < b.Width; i++)
            
                for (int j = 0; j < b.Height; j++)
                
                    if (!b.GetPixel(i, j).Equals(old.GetPixel(i, j)))
                        s.SetPixel(i, j, b.GetPixel(i, j));
                    else
                        s.SetPixel(i, j, Color.White);
                
            
        

其中“old”是前一帧,“s”是新帧。该代码基本上将未更改的像素绘制为白色。 但由于网络摄像头产生的帧质量非常低,几乎所有像素都会发生变化。 如何消除没有“大”变化的像素?

【问题讨论】:

有很多关于运动检测的书籍和论文。我不认为几行 C# 就能解决你的问题。 您应该阅读有关此主题的更多信息。没那么简单。 【参考方案1】:

非常基本的方法是将您的颜色像素转换为基于 0 - 255 的灰度值。 因此,您可以将像素作为整数进行比较,并产生一些差异误差。

考虑这种将颜色转换为整数灰度值的方法

private static int GreyScaleRange(Color originalColor) 

  return (int)((originalColor.R * .3) + (originalColor.G * .59)
             + (originalColor.B * .11));

所以不要做同等功能,你应该做

 int deltadifference = 5 ;

 if (Math.abs((GreyScaleRange(b.GetPixel(i, j)) - (GreyScaleRange(old.GetPixel(i, j)) > deltadifference)
      s.SetPixel(i, j, b.GetPixel(i, j));
 else
      s.SetPixel(i, j, Color.White);

【讨论】:

以上是关于运动检测的颜色相似度的主要内容,如果未能解决你的问题,请参考以下文章

Matlab 运动检测使用 IP 网络摄像头给出奇怪的颜色

火灾检测基于matlab连通区域+SVM特征融合火灾检测含Matlab源码 1223期

运动对象检测和描述

运动目标检测_混合高斯背景建模

图像识别基于帧差法和颜色空间实现火灾检测matlab源码GUI

图像识别基于帧差法和颜色空间实现火灾检测matlab源码GUI