一个远程图像实时传输,比如:远程屏幕监控,如果实时传jpg文件的话数据流太大,我知道有种算法能当两幅图片不同的部分找到,将后一张图片与前一张图片只传输不同的部分就行了,接收端将不同的部分与前一张图片合成就是第二张图片了。这种使用C++应该与如何实现。不说网络传输,只说说图像处理就行了。
A和B两张图片,找出B与A不同的部分,将不同的部分与A图片合成就是B图片了。不知道我说的明白不~! 

解决方案 »

  1.   

    看看directshow吧,这个是实时的,不过cpu的占用率会很高的,如果你只需定时抓几个屏幕,用jpg已经很好了啊。
    还有个什么h.264的协议好像用的也比较多。
      

  2.   

    C = A - B
    将C分成N个区块,扫描每个区块,传输C中存在非0点的对应到B上的区块。
      

  3.   

    现在大致的理论就是定型将屏幕分N块了,如果每块都比较像素值,跟不分块有什么区别。 应该有种算法能进行图像模糊匹配,对有区别的块再进行像素的异或比较就行了。这样只传输不匹配的块就行了。我还听说有人用DX效果最好,可惜咱不会呀,谁有可以发一份呀,不胜感激 [email protected]
      

  4.   

    你说的技术就是消除图像序列的“时间冗余性”技术,是现代视频编码的核心技术。视频编码技术通过消除原始图像序列的时间、空间冗余性,以及熵编码技术,将庞大的原始图像序列压缩成原先的近百分之一体积的码流序列。然后通过相应的解压缩技术,即可恢复原始的图像序列。如果你需要保留活动图像,即要求恢复后的图像序列像是看电影一样,那么就需要使用这些技术。如果你不需要活动图像,例如每隔2秒钟,拍一副图片,那么就不需要这个东西。这些视频编解码技术很复杂。但网上有源代码,当然源代码也很庞大。如果没接触过,可能比较头痛。现在的视频编码标准有mpeg1(通常说的VCD就是用的mpeg1), mpeg2(DVD), mpeg4等,还有H.261系列,现在最新的是H.264标准,非常复杂。希望对你的问题有所帮助。