1

学校のプロジェクト用に、20x20 の写真を比較する簡単なプログラムがあります。20 枚の写真を入れてから、既存の 20 枚と比較する 21 枚目の写真を入れて、どの写真を挿入したか (またはどの写真が最も似ているか) の答えをポップアップ表示します。問題は、先生が最近傍アルゴリズムを使用することを望んでいたため、すべての写真から距離を数えていることです。私はすべてうまくいきましたが、問題は、写真があまりにも似ている場合、どちらが自分の写真に近いかを判断するのに問題がありました. たとえば、2つの異なる写真でこれらの距離を取得します(まあ、それらはほとんど同じです):

0 distance: 1353.07982026191
1 distance: 1353.07982026191

すでに15桁で、doubleタイプを使用しています。読んでいましたlong doubleが、同じです。15桁以上の数字を保存して計算する「簡単な」方法はありますか?

ユークリッド距離 ここに画像の説明を入力 を使用して距離を数えます。もっと正確にする必要があります。そうしないと、その制限を超えてしまう可能性があります。先生に相談する必要があります。似たような写真を比較することはできませんか?

4

2 に答える 2

2

多分あなたは代数的アプローチを使うことができます。

ベクトルxがaまたはbに近いかどうかを計算しようとしていると仮定します。あなたが計算する必要があるのは

d 2xa)-d 2xb

これは(簡潔にするためにいくつかの節を省略します)になります

その後

これには、非常に類似しているはずの値の違いのみが含まれています。このような小さな値を合計すると、集計で作業するよりも精度が高くなります。

于 2011-12-05T09:21:37.693 に答える
2

これが必要だと思います:gmplib.org

このサイトにも、このライブラリをインストールする方法のガイドがあります。

そして、フロートに関する記事は次のとおりです

于 2011-12-05T08:08:55.327 に答える