图片相似度的判断

ZW_LM 2011-01-18 08:07:07
小弟做一个视频处理软件,使用摄像头采集视频图像,定时截取视频画面,前后两次对比图像,判断是否有变化。具体的做法是:
1、编写视频采集程序,实现视频图像采集,这点我已实现。
2、定时截取视频画面,我使用BitBlt实现了
3、对比两副图片的变化,现在没有好的办法,所以特请各位高手门帮帮忙,拜谢!!!


简单的说就是如何判断两副图片是否一样,简单高效些的。
...全文
2466 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ares1986 2011-05-11
  • 打赏
  • 举报
回复
模式匹配
niaorenzaixian 2011-01-19
  • 打赏
  • 举报
回复
楼主可以参考很多视频采集工具里面不是有个 定位格子 某个区域有东西移动 就会报警那样的。··
孤独剑_LPZ 2011-01-19
  • 打赏
  • 举报
回复
这个很难比较,如从哪个点开始相象时比较,确实需要更好的算法.下面给个理想状态下的比较供参考
Picture1和Picture2分别加载图象供比较

Dim n As Long, k As Single, b As Long
b = 100 '不必每个点都比较,跳着选取
For y = 0 To Picture1.ScaleHeight - 1
For x = 0 To Picture1.ScaleWidth - 1 Step b
'颜色接近,误差正负5
If Abs(Picture1.Point(x, y) - Picture2.Point(x, y)) < 5 then
n = n + 1
k = Round(n / (Picture1.ScaleHeight * Picture1.ScaleWidth), 4)
If k >= 0.1 / b Then
Label1.Caption = "颜色相似度:" & Round(k * 100 * b, 2) & "%"
DoEvents
End If
End If

Next x
Next y
MsgBox "比较完成,颜色相似度:" & Round(k * 100 * b, 2) & "%"
Tiger_Zhao 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zw_lm 的回复:]颜色偏差不大,我就认为OK,问题就在于怎么比较颜色相似?
[/Quote]
一个颜色值可以拆分成 RGB 三部分;两个颜色值比较就是两组 RGB 比较,如果 RGB 各自的差值都小于某个粒度,就可以认为相似。
LIXIYO 2011-01-19
  • 打赏
  • 举报
回复
我也曾做类似的问题,当时也是采用的自定义阀值 然后二值化图片,进行判断。后来发现,直接两幅图片进行比较,很容易,但是如果是视频截图的话,就会麻烦:一般情况下,你的视频截图都会有雪花点(噪点)出现,这个是不固定的,也就是说,两幅图片即使一模一样,但是由于噪点的影响,用上边我说的方法也可能会误判。高深的方法的话,肯定是要牵扯到人工智能、模糊判断方面的东西。估计一般情况下难实现。目前我还没有什么好的办法。
贝隆 2011-01-19
  • 打赏
  • 举报
回复

Private Sub tmrP_Timer()
Dim lngP As Long
Dim bytOneRed As Integer
Dim bytOneGreen As Integer
Dim bytOneBlue As Integer
Dim bytTwoRed As Integer
Dim bytTwoGreen As Integer
Dim bytTwoBlue As Integer
Dim bolP As Boolean
dim lngW as long
dim lngH as long
On Error GoTo errSub
'picS:源图像
'picOne:第一副截图
'picTwo:第二副截图
lngW=picS.Width
lngH=picS.Height
lngP = BitBlt(picTwo.hdc, 0, 0, lngW, lngH, picOne.hdc, 0, 0, SRCCOPY)
lngP = BitBlt(picOne.hdc, 0, 0, lngW, lngH, picS.hdc, 0, 0, SRCCOPY)
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


lngP = GetPixel(picOne.hdc, 50, 50)
txtColorOne.Text = lngP
bytOneRed = lngP Mod &H100
bytOneGreen = (lngP \ &H100) Mod &H100
bytOneBlue = lngP \ &H10000

lngP = GetPixel(picTwo.hdc, 50, 50)
txtColorTwo.Text = lngP
bytTwoRed = lngP Mod &H100
bytTwoGreen = (lngP \ &H100) Mod &H100
bytTwoBlue = lngP \ &H10000

txtRed.Text = Abs(bytOneRed - bytTwoRed)
txtGreen.Text = Abs(bytOneGreen - bytTwoGreen)
txtBlue.Text = Abs(bytOneRed - bytTwoRed)

If Abs(bytOneRed - bytTwoRed) < 10 And Abs(bytOneGreen - bytTwoGreen) < 10 And Abs(bytOneBlue - bytTwoBlue) < 10 Then
Me.Caption = "图像相似"
else
Me.Caption = "图像不相似"
End If
Exit Sub
errSub:
End Sub
ZW_LM 2011-01-19
  • 打赏
  • 举报
回复
比较的方案我想采用赵老虎的方案,但现在有一个问题,我想把摄像头的图像通过BitBlt复制到内存中,这个如何实现?我使用BitBlt复制图像到PictureBox中没有问题,但是想在内存中创建一个设备场景,用来存储截取的视频图像总是不成功,希望高人指点

ZW_LM 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tiger_zhao 的回复:]
引用 6 楼 zw_lm 的回复:颜色偏差不大,我就认为OK,问题就在于怎么比较颜色相似?

一个颜色值可以拆分成 RGB 三部分;两个颜色值比较就是两组 RGB 比较,如果 RGB 各自的差值都小于某个粒度,就可以认为相似。
[/Quote]
谢谢!是一个好思路。
dbcontrols 2011-01-18
  • 打赏
  • 举报
回复
颜色是否相等你随便判断,是否相似你首先需要先定义什么是相似,约束条件是什么
说个不好听的比如:大家都知道你跟你父亲面貌相似,谁也说不清楚相似在哪,身高?脸宽?
这就是人的智能
ZW_LM 2011-01-18
  • 打赏
  • 举报
回复
就一个点的颜色判断,比较两副图片中相同位置的点的颜色是否相似。
dbcontrols 2011-01-18
  • 打赏
  • 举报
回复
相似=人工智能的问题
ZW_LM 2011-01-18
  • 打赏
  • 举报
回复
颜色偏差不大,我就认为OK,问题就在于怎么比较颜色相似?
ZW_LM 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dbcontrols 的回复:]
相似度是人工智能的问题
价值不菲
[/Quote]
其实我的思路是这样的,可以取图片中的几个点相比较,如果相同就认为这两副图片相同(因为图片间变动很小,我只需要比较关键点即可),但问题的关键在于如何判断点的颜色相近,这个麻烦。
ZW_LM 2011-01-18
  • 打赏
  • 举报
回复
谢谢你的回复
图片的形状不用考虑,因为形状是一样的。
问题的关键在于两副图片可能很相似,我的要求是对两副相似的,但的确不相同的图片认为是相同的,也就是要有明显的区别的才判断认为不同。
dbcontrols 2011-01-18
  • 打赏
  • 举报
回复
相似度是人工智能的问题
价值不菲
咸清 2011-01-18
  • 打赏
  • 举报
回复
二值化后再比较的思路很简单

难点在于比较图片的形状,据说要用Snack算法。这个有点难。国内做的好的不多。IBM做的据说不错。
ZW_LM 2011-01-18
  • 打赏
  • 举报
回复
沙发我坐
添加一个小小的说明,就是当两副图片很相似时,要求认为是相同的,也就是有一个相似度的问题,这是问题的难点。
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip 通过算法提取图像的哈希序列matlab源码(可用于两张图片相似度判断,近似查找,抄袭检测).zip

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧