首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何比较图片的差异?思路即可,无须代码. [已结贴,结贴人:terran_ye]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • terran_ye
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-08 09:44:33 楼主
    在做远程桌面协助,
    现在的思路双方建立P2P的连接,然后再每隔1秒截屏,比较前后2次图片的变化的地方,再把变化的地方发送过去

    可是如何才能最快的大体比较出2个图片的差异?  效率,时间.

    谢谢,答者有分.
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • orbit
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 09:59:351楼 得分:10
    将屏幕分成固定的若干小块,对其分别编号,分块比较,每次只传送发生改变的块
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • breakind
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 10:05:142楼 得分:10
    即使使用逐像素的比较,1S也足够了。
    比较的时候使用异或应该能加快点速度
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • stivenjia
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 10:06:483楼 得分:10
    我只知道逐个像素比较
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LBPeking
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 10:09:324楼 得分:0
    你是做图像的鉴定还是干嘛呀??????
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daidongsheng
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 10:11:545楼 得分:0
    把图片编码后传过来解码也行的吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bitxinhai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 10:18:536楼 得分:0
    可以通过两幅图像的彩色信息,灰度信息,直方图信息和一些其他的特征
    进行比较两幅图像的差异!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • csgdseed
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 11:02:477楼 得分:0
    引用 1 楼 orbit 的回复:
    将屏幕分成固定的若干小块,对其分别编号,分块比较,每次只传送发生改变的块

    这个比较好吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rover___
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 16:59:258楼 得分:10
    用差份格式建立个图象格式:发送初始图象后,其他后继图象与前者差分,只保存和发送变化数据(作为一侦图象)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • smallfishff
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 17:09:249楼 得分:10
    差份格式??是什么?
    上面所说的分块 也是需要逐像素对比的.

    基本上是要全图像逐像素扫描 然后把差异保存到数组中 只记录坐标与颜色值是不是要好些?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kewei9
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 17:30:3110楼 得分:10
    考虑效率就要对图像降采样,小波处理 处理速度不是问题 短时间内能实现传输传输是问题的关键
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzz3265
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 17:35:3111楼 得分:10
    比较直接用 memcmp , 10M以内的数据不会超过 1毫秒

    当然你不能用 GetPix, GetPix非常慢, 应该直接取出内存块来比较,


    图像压缩可以把前后两幅图像相减, 再找个压缩算法压缩相减的结果
    另外一边只要加上这个结果就是新的图像
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • terran_ye
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:20:4012楼 得分:0
    引用 11 楼 zzz3265 的回复:
    比较直接用 memcmp , 10M以内的数据不会超过 1毫秒

    当然你不能用 GetPix, GetPix非常慢, 应该直接取出内存块来比较,


    图像压缩可以把前后两幅图像相减, 再找个压缩算法压缩相减的结果
    另外一边只要加上这个结果就是新的图像


    我现在把屏幕的截图,按 16 :12的比例分成了192快,
    用 GetDIBits 得到小快的图形数据然后比较,不一样则发送,效率还不是很好,

    发送的时候我先转为jpg 然后再发送,也不理想感觉,
    你提到的图象压缩算法很有意思,试试先.

    多谢大家

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ok1234567
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 16:10:3913楼 得分:10
    可以试试:
    在被控方保存上幅图像(已经传送的)
    截取新图,与上幅图进行异或运算(可以提高下步的压缩比)
    用zlib压缩
    然后发送

    主控端作相应处理

    最好不要使用gif,jpg,直接用位图
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • terran_ye
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 18:42:4114楼 得分:0
    老大给我个思路,用mirror driver,大家可有这方面的demo?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • aa65433
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 18:54:3215楼 得分:0
    服务端只管发整图,到客户端比较不同,分块比较,然后刷不同
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • terran_ye
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 19:04:3216楼 得分:0
    引用 15 楼 aa65433 的回复:
    服务端只管发整图,到客户端比较不同,分块比较,然后刷不同


    发整图数据量超大,我现在的demo,在局域网内传送1秒截图一次,其中处理的时间就用了0.3秒多,debugview看的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljooo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 12:36:3217楼 得分:0
    引用 11 楼 zzz3265 的回复:
    比较直接用 memcmp , 10M以内的数据不会超过 1毫秒

    当然你不能用 GetPix, GetPix非常慢, 应该直接取出内存块来比较,


    图像压缩可以把前后两幅图像相减, 再找个压缩算法压缩相减的结果
    另外一边只要加上这个结果就是新的图像


    我也觉得简单的比较不会超过1毫秒。你可以考虑把你的比较代码贴出来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangk
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 13:37:3018楼 得分:10
    引用楼主 terran_ye 的帖子:
    在做远程桌面协助,
    现在的思路双方建立P2P的连接,然后再每隔1秒截屏,比较前后2次图片的变化的地方,再把变化的地方发送过去

    可是如何才能最快的大体比较出2个图片的差异?  效率,时间.

    谢谢,答者有分.


    请参考请他VNC开源项目。
    它们通常是安装钩子监视屏幕区域的变化,然后压缩传送变化的图片区。
    用判断图像变化的办法效率太低,很少被使用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • aa65433
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 18:51:1619楼 得分:10
    引用 16 楼 terran_ye 的回复:
    引用 15 楼 aa65433 的回复:
    服务端只管发整图,到客户端比较不同,分块比较,然后刷不同


    发整图数据量超大,我现在的demo,在局域网内传送1秒截图一次,其中处理的时间就用了0.3秒多,debugview看的


    保存上一张图片,抓到一张新图后,在内存中按块用memcmp比较,如果发现有不同,就发送此块,然后到客户端组装起来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • terran_ye
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 23:21:0120楼 得分:0
    引用 19 楼 aa65433 的回复:
    引用 16 楼 terran_ye 的回复:
    引用 15 楼 aa65433 的回复:
    服务端只管发整图,到客户端比较不同,分块比较,然后刷不同


    发整图数据量超大,我现在的demo,在局域网内传送1秒截图一次,其中处理的时间就用了0.3秒多,debugview看的


    保存上一张图片,抓到一张新图后,在内存中按块用memcmp比较,如果发现有不同,就发送此块,然后到客户端组装起来



    是的,我现在就是这么写的,在考虑mirror driver
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • terran_ye
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-27 00:50:0721楼 得分:0
    是的,我参考了VNC的代码,用钩子做,在LAN很快,WAN上就不怎么理想,有些局部的位置没有刷新,
    用mirror driver的话,貌似不支持dirctx 3d。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved