1

イメージの比較に非常に典型的な問題があり、私のグーグルが解答を明らかにしていないような気がします。どのようにして2つのイメージの長方形の領域を取得できますか?

デスクトップの静止画像をX秒ごとに送信します。現在、古いものと新しいものが1つのピクセルでも異なる場合は、新しいイメージを送信します。非常に頻繁には、時計やアイコンのような非常に小さな変更だけです、そして、私はちょうどサーバーに変更された部分を送信し、画像を更新することができます(方法は少ない帯域幅)。

私が考えている計画は、変更された領域の四角形を得ることです。たとえば、クロックが変更された場合、変更を含む最小の矩形をスクリーンキャプチャし、その(x、y)座標と共にサーバーに送信します。サーバは、指定された座標に矩形を重ねることによって古い画像を更新する。

これを実行するアルゴリズムまたはライブラリはありますか?私はそれが完璧であることを望んでいません、私はいつもすべての変更を包含する単一の矩形を送信するとします(たとえ多くの小さな矩形がより効率的であっても)。

私の他のアイデアは、一連の変換として保存された新しい画像と古い画像を比較することでした。そして、一連の変換をサーバーに送信し、これを古いイメージに適用して新しいイメージを取得します。これが可能であれば、単なる考えであるかどうかは分かりません。

アイデア?私が使用できるライブラリ?

+1

[VNC](http://en.wikipedia.org/wiki/Virtual_Network_Computing)などを使用していない理由はありますか? –

+0

ビデオを送信できない、またはVNCなどを使用することができない非常に良い理由があります。一連の画像でなければなりません。 – seibelj

答えて

4

前のフレームのすべてのピクセルを次のフレームのすべてのピクセルと比較し、どのピクセルが変更されたかを把握しますか?

あなただけのすべての変更を包含するように、単一のボックスを探しているので、あなたが実際にのみ分-Xを追跡する必要があり、MIN-Y (必ずしも同じ画素から)、MAX-X、およびmax-y。これらの4つの値は、四角形のエッジを与えます。


この仕事(2つのフレームを比較する)は本当に速いCPUよりも有意にこれを行うことがGPUにオフロードする必要があることに注意してください。

あなたがやろうとしていることは、本質的に自家製のロスレスストリーミングビデオ圧縮アルゴリズムです。既存のライブラリからのものを使用するほうがはるかに簡単になるだけでなく、おそらくもっとパフォーマンスが向上します。

0

これはアルゴリズムの観点からのものです。これが実装が簡単かどうかはわかりません。

は基本的に2枚の画像をXORし、任意の情報理論アルゴリズム(ハフマン符号化?)

0

を使用して圧縮し、私は非常に遅れて応答しています知っているが、私は今日、この質問を見つけました。

私はImage Differencingについていくつか分析しましたが、コードはjavaと書かれています。親切

How to find rectangle of difference between two images

を助けるために来て、下記のリンクに見えるコードが違いを見つけ、LinkedListの中に長方形を保持します。長方形を含むリンクされたリストを使用して、差異をベースイメージにパッチすることができます。

乾杯!

関連する問題