본문 바로가기
Computer vision

[Computer vision] 04. 히스토그램

by @__100.s 2021. 9. 13.
반응형

히스토그램 계산

히스토그램

  • [0, L-1] 사이의 명암 값 각각이 영상에 몇 번 나타나는지 표시
  • 히스토그램 h와 정규화 히스토그램
  • 0부터 255의 명암값을 가지고 있는 영상으로부터 각각의 도수에 해당되는 것이 몇 개의 화소를 가지고 있는지를 표현하는 것이 히스토그램이다.
  • 즉 쉽게 이야기하면, m*n 크기의 2차원 영상이 있는데 이들은 각각 [0~255]에 해당하는 명암 값을 가지고 있다고 하자. 2차원 영상에서 0에 해당하는 명암 값을 가진 픽셀을 세어본다. 그다음은 1.... 255까지 카운팅 한 뒤 막대그래프의 형태로 표현한 것이 히스토그램이다.
  • 각각의 값들을 m*n으로 나누므로써 0≤h^(l)≤1이 된다. 이는 각각의 히스토그램 값들을 비율 값으로 나타낸 것이다.
  • h^을 통해 정규화된 히스토그램으로 나타내므로써 명암 값들이 전체 영상에 어떤 분포로 퍼져있는지를 알아볼 수 있다.
  • ex) 히스토그램이 왼쪽으로 치우쳐있으면 영상을 보지 않아도 전체적으로 어두운 영상임을 알 수 있다.

명암 영상에서 히스토그램 계산

  • M, N, L = 8
  • h = (0, 0, 13, 18, 19, 10, 4, 0)
  • h^(l) = (0, 0, 0.203, 0.281, 0.297, 0.156, 0.063, 0)

히스토그램의 용도

영상의 특성 파악

  • 영상을 모르더라도 히스토그램을 통해 영상의 특성을 파악할 수 있다.

영상 품질 향상

히스토그램 평활화 (Histogram Equalization)

  • 히스토그램을 평평하게 만들어 주는 연산
  • 명암의 동적 범위를 확장하여 영상의 품질을 향상시켜줌. 선명해짐.
  • 누적 히스토그램 c(.)를 매핑 함수로 사용

  • 히스토그램에 대한 분포로 영상처리를 하는 방법에는 히스토그램 평활화와 히스토그램 스트레칭 두 가지 방법이 있다.
  • 히스토그램 영상처리는 특정한 값에 모여있는 명암값들을 양쪽 방향으로 펴서 분포를 평평하게 만드는 것이다. 이런 조작을 통해 영상 품질을 개선하겠다는 것이다.
  • 하지만 히스토그램 평활화와 히스토그램 스트레칭의 영상처리 방법이 약간 다르다.
  • 히스토그램 스트레칭은 우리가 최소값과 최댓값을 가지고 골고루 펴주는 반면에 히스토그램 평활화는 명암 값들의 분포가 높은 곳을 중점으로 펴준다.
  • 명암의 분포가 높은 곳을 어떻게 구하는가? 누적 히스토그램을 봤을 때 기울기 값이 많이 변하는 곳을 찾으면 된다.
  • 누적 히스토그램을 통해 명암값이 어디에 많이 모여있는지 알 수 있다. 누적 히스토그램을 가중치값으로 두고 누적 히스토그램 값이 높으면 많이 당겨주고, 적으면 살짝 당겨주는 방법을 통해 전체적으로 영상이 골고루 퍼질 수 있도록 한다.

히스토그램 평활화 예제

히스토그램 평활화를 적용해 품질이 향상된 예

  • 히스토그램 평활화 진행 후 얼룩말의 줄무늬가 훨씬 선명하고 숲에 있는 나무도 훨씬 잘 보인다.
  • 하지만 상황과 목적에 따라 품질 개선에 공헌할 수도 있고 그 반대일 수도 있으니 분별력을 가지고 활용 여부를 따져야 한다.
  • 명암의 분포가 골고루 퍼져 있는 영상에 대해서 히스토그램 평활화를 사용하면 시각적 느낌이 나빠진다.
  • ex) 어두운 영역을 다 펴서 지나치게 밝아짐. → Saturation 되었다.

히스토그램 역투영과 얼굴 검출

히스토그램 역투영

  • 역투영이란 관심 영역의 히스토그램과 유사한 히스토그램을 갖는 영역을 찾아내는 기법
  • 히스토그램을 매핑 함수로 사용하여, 화소값을 신뢰도 값으로 변환

얼굴 검출 예 : 모델 얼굴과 2차원 히스토그램

  • 주어진 영상으로부터 피부색 명암 값이 [127~156]이라고 했을 때, 각각의 입력 영상 화솟값을 이 범위 안에 들어가면 높은 신뢰도 값으로, 들어가지 않으면 낮은 신뢰도 값으로 변환시킨다.

2차원 히스토그램

얼굴 검출

  • 모델 얼굴에서 구한 히스토그램 hm은 화소의 컬러 값을 얼굴에 해당하는 신뢰도 값으로 변환해줌
  • 실제로는 비율 히스토그램 hr을 사용

  • h^m (j, i) → 모델, hi^(j, i) →입력으로, 모델과 입력 간의 유사도를 비교하면 얼굴을 검출할 수 있을 것이다.

히스토그램 역투영 알고리즘

  • 우리가 주어진 영상으로부터 어느 정도의 확률값을 가지고 있는지에 대해서 먼저 표현
  • 각각에 들어오는 영상을 읽어서, 내가 이미 만들어놓은 확률 모델과 비교해서, 0과 1 값으로 만들어놓으면 이와 같이 표현할 수 있지 않을까 하는 것.

히스토그램 역투영 결과

  • 얼굴 영역은 높은 신뢰도 값, 손 영역도 높은 값
  • 한계: 비슷한 색 분포를 갖는 다른 물체 구별 못함. 검출 대상이 여러 색 분포를 갖는 경우
    오류 가능성
  • 장점: 배경을 조정할 수 있는 상황에 적합 (이동과 회전에 불변, 가림 occlusion에 강인)

  • 이미 내가 알고 있는 모델에 대한 확률값을 기반으로, 그 모델과 유사도가 높은 값은 1, 유사도가 낮은 값은 0의 확률값을 준다.
  • 사람의 피부 값에 대한 모델을 만들어놓고, 주어진 영상을 읽었을 때, 그 읽어놓은 화소값에 대한 유사도를 나타내면 우리가 원하는 컬러값과 유사한 정보를 뽑을 수 있다.
  • 히스토그램을 기반으로 관심 영역의 색상과 비슷한 물체를 추출하므로, 관심 영역의 색상과 비슷한 다른 물체가 뒤섞여 있을 때는 효과가 떨어질 수 있다.

참고

반응형