[DIP] Histogram Stretching

2024. 10. 7. 13:14·Programming/DIP
728x90
728x90

Histogram Stretching은

  • 이미지의 contrast(명암대비) 를 개선하기 위해 : Image Enhancement
  • 히스토그램을 확장(=stretching)하는 기법임.

이 기법은

  • 이미지의 밝기값(=intensity)이 전체 범위에 걸쳐 고르게 분포되지 않고, 특정 범위에 집중된 경우(low contrast)에 적용됨.
  • 이를 통해 이미지의 밝기 범위를 넓혀 contrast(명암대비)를 강화하고, 보다 선명한 이미지를 얻을 수 있음.

이상적인 contrast의 이미지는

  • histogram이 균일하게 분포함.← High contrast
  • pixel의 intensity (혹은 density)가 histogram의 전 범위에 균일하게 분포.

오른쪽이 이상적인 contrast를 가지는 영상의 histogram과 cumulative distribution function을 보여줌.

 


관련 gist

 

https://gist.github.com/dsaint31x/678fc3c3d2d633a80056d71366209469

 

dip_histogram_stratching.ipynb의 사본

dip_histogram_stratching.ipynb의 사본. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com


1. 원리

Histogram Stretching은

  • 이미지의 최소 밝기 값과 최대 밝기 값을 기준으로
  • 히스토그램을 재조정하는 방식임.

즉, 이미지의 현재 밝기 값이 전체 범위(예: 0~255)에 걸쳐 있지 않으면, 그 범위를 늘려 모든 밝기 값이 최대한 넓은 영역에 걸쳐 분포되도록 조정함.

이를 통해 더 큰 명암 대비를 가지는 이미지로 변환됨.

기본 원리는 다음과 같음:

  1. 이미지에서 가장 어두운 픽셀 값 $I_{\text{min}}$과 가장 밝은 픽셀 값 $I_{\text{max}}$을 찾음.
  2. 각 픽셀 값 $I(x,y)$에 대해 아래 공식을 사용하여 새로운 픽셀 값 $I' (x, y)$를 계산함:

$$I'(x, y) = \frac{I(x, y) - I_{\text{min}}}{I_{\text{max}} - I_{\text{min}}} \times (I_{\text{new_max}} - I_{\text{new_min}}) + I_{\text{new_min}}$$

where:

  • $I_{\text{new_min}}$은 새로운 최소 밝기 값 (보통 0),
  • $I_{\text{new_max}}$은 새로운 최대 밝기 값 (보통 255)임.

일종의 min-max normalization임.


2. 효과

Histogram Stretching은 이미지의 밝기 범위를 전체적으로 넓히기 때문에, 어두운 부분과 밝은 부분 간의 대비가 증가함.
이로 인해 이미지의 디테일이 더 뚜렷하게 보이게 됨. 특히, 전체적으로 어둡거나 밝은 이미지를 조정할 때 효과적임.

상단에 대해 Histogram Stretching을 적용한 결과가 하단임.


3. 적용 사례

Histogram Stretching은 다음과 같은 상황에서 주로 사용됨:

  • 저대비 이미지: 이미지의 히스토그램이 특정 영역에 집중되어 있어 전체적으로 어둡거나 밝은 경우.
  • 의료 영상: MRI, X-ray 등에서 이미지의 세부 사항을 더 잘 볼 수 있도록 대비를 조정할 때.
  • 위성 영상: 대규모 지역의 명암 대비를 조정하여 중요한 지형적 특징을 더 잘 식별할 수 있게 할 때.

4. 장점과 한계

  • 장점:
    • 이 기법은 매우 간단하고 빠르며,
    • 전체적인 이미지 명암 대비를 개선하는 데 효과적임.
  • 한계:
    • Histogram Stretching은 단순히 밝기 값의 범위를 확장하는 기법이기 때문에,
    • 이미지의 히스토그램이 전반적으로 왜곡되거나 잡음이 증폭될 수 있음.
    • 이로 인해 일부 세부 정보가 손실되거나, 원치 않는 아티팩트가 발생할 수 있음.
    • 같은 간격으로 확장하기 때문에 향상의 한계가 존재함.

5. 결론

Histogram Stretching은

  • 이미지의 밝기 범위를 확장하여 contrast(명암대비)를 개선하는 매우 유용한 기법임.
  • 특히 저대비(low contrast) 이미지를 처리하는 데 효과적이며,
  • 이미지의 시각적 품질을 향상(Image Enhancement)시키는 데 도움을 줌.
  • 다만, 잡음이 있는 이미지에서는 주의가 필요함.

같이보면 좋은 자료들

https://dsaint31.me/mkdocs_site/DIP/cv2/ch02/dip_histogram/

 

BME228

Histogram Histogram은 image의 intensity (or pixel이 가지는 값)들의 분포를 보여줌. chart로 표현하기도 하지만 image에 대한 feature에 해당하는 내부적 데이터로 사용하기도함. image에서 histogram으로 변환은 비

dsaint31.me

https://dsaint31.tistory.com/837

 

[DIP] (Global) Histogram Equalization

Histogram Equalization에 대한 설명히스토그램 평활화(Histogram Equalization)는 이미지의 contrast(명암대비)를 개선하기 위한 기법 중 하나임: Image Enhancement일반적으로 이미지의 히스토그램이 특정 영역에

dsaint31.tistory.com

https://dsaint31.tistory.com/836

 

[DIP] Contrast Limited Adaptive Histogram Equalization (CLAHE)

Global Histogram Equalization의 단점.Illumination이 불균일한 경우, 이미지에서 특정 부분은 밝고 특정 부분은 어두움.이 경우, Global Processing 기반의 Histogram Equalization은 효과가 좋지 못함. 아래 그림에서

dsaint31.tistory.com


 

'Programming > DIP' 카테고리의 다른 글

[CV] 공간해상도 관련 단위: SD, HD, MP, VGA 등등  (2) 2024.10.09
[CV] Median Sensor Resolution in Consumer Cameras  (0) 2024.10.09
[DIP] (Global) Histogram Equalization  (1) 2024.10.07
[DIP] Contrast Limited Adaptive Histogram Equalization (CLAHE)  (0) 2024.10.07
[DIP] Histogram Matching: Image Enhancement  (1) 2024.10.07
'Programming/DIP' 카테고리의 다른 글
  • [CV] 공간해상도 관련 단위: SD, HD, MP, VGA 등등
  • [CV] Median Sensor Resolution in Consumer Cameras
  • [DIP] (Global) Histogram Equalization
  • [DIP] Contrast Limited Adaptive Histogram Equalization (CLAHE)
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (740)
      • Private Life (13)
      • Programming (186)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    Probability
    Programming
    math
    Convolution
    signals_and_systems
    fourier transform
    Optimization
    Python
    Term
    Vector
    function
    SS
    검사
    signal_and_system
    linear algebra
    opencv
    random
    인허가제도
    numpy
    SIGNAL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[DIP] Histogram Stretching
상단으로

티스토리툴바