2017-04-10 35 views
7

私はネイティブの英語のスピーカーではありませんので、翻訳の誤りをお許しください。RGBの色はVBでVB.net

私は実際にコーディングに問題はありません。これは概念的な問題です。

私は、画像をRGB値のリストに翻訳する同じコードを2回書いた。 (各ピクセルにつき3つの値の組み合わせ)。

私が使用してVB.netで最初のコードを書いた:その後、私はJavaで次のように書いた

Dim bmp As New Bitmap(File) 
For x As Integer = 0 To w - 1 
    For y As Integer = 0 To h - 1 
     Dim c As Color = bmp.GetPixel(x, y) 
     Dim Red as integer = c.R 
     Dim Green as integer = c.G 
     Dim Blue as integer = c.B 
    Next y 
next x 

を:

BufferedImage image = ImageIO.read(new File(File)) 
for (int i = 0; i < w; i++) { 
    for (int j = 0; j < h; j++) { 
     int pixel = image.getRGB(i,j); 
     int Red = ((pixel >> 16) & 0xff); 
     int Green = ((pixel >> 8) & 0xff); 
     int Blue = ((pixel) & 0xff); 
    } 
} 

を私の期待は両方の部品から同じ値を取得することです同じ画像を使用しているため私は写真(270x320)の上にそれを試しました。私の驚いたことに、VB.netとJavaコードの間にRGB値の小さな違いがどこにあるのかを見ました。

VB.net(赤色)とVB.net(緑色)とVB.net(緑色)とjava(青色)とを比較すると、対VB.net(青)の私は270x320x3 = 259.2kの組み合わせを比較します。

  • 差:250178(96.5%)
  • 一つの違い:7426(2.9%)
  • 二つの違いをVB.netからJavaコードから得整数間の差は以下のようにしています:1582(0.6%)
  • 三違い:14(0.0%)
  • つまたは複数の差分:0(0.0%)

この差があちこちに出番誰もが私に説明することができますm?色を読み取る方法、イメージをバッファリングする方法、またはアンチエイリアスのようなものとは関係がありますか?

他の人が述べたような理由は、事前

+0

画像処理ライブラリに色を少し変えるように指示する画像メタデータとなることがあります。あるライブラリがメタデータを尊重し、他のライブラリはそれを無視することができます。このようなメタデータの例には、ICCカラープロファイル、ガンマ補正値などが含まれます。 –

+1

ファイル拡張子とは何ですか? –

+1

私はJpeg Vs JpegとJpeg対Pngを試しました –

答えて

1

でTHXが何であるかを本当に好奇心、差がJPEGの非可逆圧縮によって引き起こされます。

これらのメソッドをロスレスフォーマットでテストする必要があります。