0

編集: この最初の部分は問題ではないようです。以下を参照してください (Ted と Jim に感謝):

これは p-hash 実装の一部です。コードは正常に一貫して実行されますが、64 と 32 でコンパイルすると、一部の画像で結果がわずかに異なります。(平均値は単位です)

ulong hash = 0;
for (int i = 0; i < 64; i++)
   if (grayscale[i] >= averageValue)
       {
           hash |= (1UL << (int)(63L - i));
       }

VS2010 でコンパイルされています。実装を変更するためのアイデアはありますか?

ありがとう!

編集:問題はその部分にあるようには見えませんが、画像を読み取って凝縮することにあります。

私は自分の画像を次のように取得しています(画像は渡されたビットマップ画像です):

        // Squeeze the image into an 8x8 canvas
        Bitmap squeezed = new Bitmap(8, 8, PixelFormat.Format32bppRgb);
        Graphics canvas = Graphics.FromImage(squeezed);
        canvas.CompositingQuality = CompositingQuality.HighQuality;
        canvas.InterpolationMode = InterpolationMode.HighQualityBilinear;
        canvas.SmoothingMode = SmoothingMode.HighQuality;
        canvas.DrawImage(image, 0, 0, 8, 8);

そして、ネストされた for ループで

uint pixel = (uint)squeezed.GetPixel(x, y).ToArgb();

ただし、これらの値は異なります。

....

対:

....

4

0 に答える 0