2017-04-10 13 views
7

나는 원어민이 아니므로 모든 번역 오류는 불 가능합니다.RGB의 색상은 VB에서 VB.net로

코딩 문제가 없습니다. 그것은 개념적인 질문입니다.

이미지를 RGB 값 목록으로 변환하는 코드를 두 번 썼습니다. (각 픽셀에 대해 3 개의 값 조합 1 개). 내가 사용 VB.net에서 먼저 코드를 작성

는 :

이후
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과 자바 코드 사이의 RGB 값에 작은 차이가있는 곳을 보았습니다.

VB.net (빨간색)과 VB.net (녹색), VB.net (녹색) 및 java (파란색) VB.net (파란색)의 270x320x3 = 259.2k 조합을 비교합니다.

  • 차이 : 250,178 (96.5 %)
  • 한 가지 차이점 : 7426 (2.9 %)
  • 두 차이를 VB.net에서와 자바 코드에서받은 정수의 차이는 다음과 같습니다 : 1,582 (0.6 %)
  • 세 차이 : 14 (0.0 %)
  • 네 이상의 DIFF : 0 (0.0 %)

이 차이가 이리저리 오는 곳 아무도 나에게 설명 할 수 엠? 색상을 읽는 방법, 이미지를 버퍼링하는 방법 또는 앤티 앨리어싱과 같은 방식으로 처리 했습니까?

이유가 무엇인지 정말 궁금는, 사전에 다른 사람에 의해 언급 한 바와 같이

+0

이미지 처리 라이브러리에 색상을 약간 변경하라는 이미지 메타 데이터 일 수 있습니다. 하나의 라이브러리는 메타 데이터를 존중하고 다른 라이브러리는 무시합니다. 이러한 메타 데이터의 예로는 ICC 색상 프로파일, 감마 보정 값 등이 있습니다. –

+1

파일 확장자 란 무엇입니까? –

+1

나는 Jpeg 대 Jpeg와 Jpeg 대 Png를 시도했다 –

답변

1

에서 들으은 차이가 JPEG의 손실 압축에 의해 발생합니다.

이러한 방법을 무손실 형식으로 테스트해야합니다.