2017-10-26 4 views
1

Java에서 그레이 스케일 이미지를 히스토그램 평등화하려고합니다. 설명은 다음과 같습니다. 룩업 테이블의 인덱스로 각 픽셀의 RGB의 한 밴드를 사용하여 이미지를 반복하여 이미지의 새 픽셀 값을 결정합니다. 각 픽셀의 RGB를 새 픽셀 값에 해당하는 RGB로 설정합니다.히스토그램 룩업 테이블을 사용하는 이미지의 균등화

나는 파란 착색 된 이미지를 얻을이 구현 :

[제거]

(예상 결과)

[제거] 여기

내가 지금까지 가지고있는 코드입니다 :

private void histogramEqualize(BufferedImage im, int[] lut) { 
    for (int x = 0; x < im.getWidth(); x++) { 
      for (int y = 0; y < im.getHeight(); y++) { 
       Color c = new Color(im.getRGB(x, y)); 
       Color eq = new Color(lut[c.getRed()], c.getGreen(), c.getBlue()); 
       im1.setRGB(x, y, eq.getRGB()); 
      } 
    } 
} 

public int[] getLookupTable(int[] h, int n) { 
    // h: Histogram for im1 in either the red band or luminance. 
    lut = new int[256]; 
    double sf = 255/n; 
    int sumH = 0; 
    int sk = 0; 
    for(int i=0; i<h.length; i++) { 
     sumH += h[i]; 
     sk = (int)(sf*sumH); 
     lut[i] = sk; 
    } 
    return lut; 
} 

Color eq = new Color(lut[c.getRed()], c.getGreen(), c.getBlue()); to Color eq = new Color(lut[c.getRed()], lut[c.getGreen()], lut[c.getBlue()]);하지만 검은 색 이미지가 나타납니다.

답변

0

그레이 스케일 이미지에 히스토그램 등화를 적용하고 픽셀의 RGB 색상 값을 사용한다고 언급했습니다. 그 발생을 카운트함으로써

1) 각각의 그레이 스케일 픽셀 값을 반복하고, 각 계조 레벨의 히스토그램 데이터를 생성한다 : 만약 아래 히스토그램 등화에 대한 이미지 만의 계조 레벨을 정상화 할 수 그레이 스케일 이미지에 대한

이미지에서.

2) 위의 막대 그래프의 누적 분포를 찾으십시오.

3) 원본 이미지의 각 그레이 스케일 픽셀 값을 반복하고 아래 공식을 사용하여 해당 값을 해당 정규화 값으로 바꿉니다. histogram equalization formula

where L=255, that is total gray scale levels, 
M = Image height, 
N = Image width, 
MxN to get total number of pixels in image. 
cdfmin = min value of cumulative distribution data in step 2. 

이 당신에게 새로운 표준화 된 이미지 행렬을 얻을 것이다.

RGB 이미지에 히스토그램 평준화를 적용하려면 RGB 색상 공간을 HSV 색상 공간으로 변환하고 색조 및 채도 값을 변경하지 않고 값 채널의 회색조 이미지와 동일한 단계를 적용해야합니다.

+0

감사합니다. 알았다. – user7828128