컴퓨터비전 3-1 정리

해담·2024년 10월 3일

컴퓨터비전

목록 보기
3/13

영상처리

히스토그램

Big Data는 밑과 같은 걸로 표현할 수 있습니다.
형태, 모양 -> shape
중심 위치 -> mean
분산(산포) -> variance
이 중 위와 같은 것들을 알아보기 위해서는 Graph, Table를 통해 알아볼 수 있습니다. 그 중 사람들이 직관적으로 주어진 데이터를 알아보기 위해 사용한 것이 Graph의 histogram입니다.

도수라는 것은 사람들이 데이터를 어떤 분류로 나눈 것(양자화한 것) 을 뜻합니다. 즉, 영상처리에서의 도수는 [0~255]의 값을 가질 수 있습니다.
히스토그램을 만들기 위해서 먼저 주어진 데이터를 몇 개의 도수로 나눌 것인가가 필요합니다. 두 번째는 각 도수에 해당되는 데이터의 개수가 몇 개인지 세야 합니다. 세 번째는 가로축에 각각의 도수를 나타내고, 데이터의 개수를 막대 그래프 형태로 표현합니다.

이러한 히스토그램의 개념을 영상에 적용시켜서 주어진 영상에서의 명암값들이 어떤 형태를 가지고 있는지 나타내는 것이 영상처리에서의 히스토그램입니다.

히스토그램 계산

  • 영상이 [0, L-1] 사이의 명암값을 가지고 있을 때, 그 명암값들이 영상에 몇 번 나타나는지 표시합니다.

    (1) h(l)=(j,i)f(j,i)=lh(l) = |{(j,i)|f(j,i)=l}|
    (2) h^(l)=h(l)/M×N\hat{h}(l) = h(l) / M \times N

    (1)은 히스토그램 알고리즘이며, (2)는 히스토그램의 모든 칸을 더하면 1.0이 되도록 변환한 정규 히스토그램입니다. l은 0 ≤ l ≤ L-1 인 명암값을 뜻합니다. 수학적으로 표현하여 복잡해보이지만, 사실 해당 식의 결과는 각각의 화소의 개수를 나열할 뿐입니다.
    예를 들어 M과 N이 8이고, L=8인 영상이 있습니다. (1)식의 값이 h=(0,0,13,18,19,10,4,0)이면, 각각의 값을 MXN 값인 64로 나누어 (2)식은 h(l)=(0,0,0.203,0.281,0.297,0.156,0.063,0)으로 표현됩니다. 여기서 (2)식은 0 ≤ h^(l)\hat{h}(l) ≤ 1인 비율값으로 표현됩니다.

  • 히스토그램 알고리즘의 슈도코드 (알고리즘 2-1 pdf 필기 확인)
    입력: 명암 영상 f(j,i), 0 ≤ j ≤ M-1, 0 ≤ i ≤ N-1
    출력: 히스토그램 h(l)과 정규 히스토그램 h^(l)\hat{h}(l), 0 ≤ l ≤ L-1

    
    for (l=0 to L-1) h(l)=0;
    for (j=0 to M-1)
        for (i=0 to N-1)
                h(f(j,i))++;
    for (l=0 to L-1)
        h(l)=h(l)/(MxN)

히스토그램 용도

영상의 특성 파악

히스토그램이 왼쪽으로 치우처져 있으면 어두운 영상이며, 오른쪽으로 갈수록 밝은 영상입니다. 따라서 히스토그램의 분포를 통해, 전체적인 영상 명암값들의 분포를 알 수 있습니다.

평활화를 통한 영상 품질 개선 (예제 2-2 pdf 필기 확인)

  • 히스토그램 평활화란 히스토그램을 평평하게 만들어 주는 연산이며, 평평하게 만들어주는 방법에는 Histogram Equalization과 Histogram Straching이 있습니다.

    • Histogram Equalization: 명암값이 많이 모여 있는 부분을 중점으로 평평하게 만들어줍니다.
    • Histogram Straching: 히스토그램의 모양 자체를 골고루 양쪽으로 당겨 평평하게 만들어줍니다.
      책에서는 Histogram Equalization만을 다루고 있습니다.
  • 히스토그램 평활화(Histogram Equalization)는 명암의 동적 범위를 확장하여 영상의 품질을 향상시켜줍니다. 명암의 동적 범위란 히스토그램이 많이 모여 있는 곳으로, 즉, 특정 영역에 모여 있는 명암값들을 양쪽으로 펴서 영상 품질을 높여주는 방법입니다.

  • 명암의 동적 범위는 누적 히스토그램 c(.)의 기울기를 통해 구할 수 있습니다. 즉, 누적 히스토그램을 매핑 함수로 사용했다는 말은, 영상을 펴주는 데 있어서 누적 히스토그램에 가중치를 주어 누적 히스토그램이 많은 곳일 수록 더 많이 당겨주는 방법을 사용하겠다는 말입니다.

  • round는 반올림 연산입니다.

    lout=T(lin)=round(c(lin)×(L1)l_{out} = T(l_{in}) = round(c(l_{in}) \times (L-1)
    이때 c(lin)=l=0linh^(l)c(l_{in})=\sum\limits_{l=0}^{l_{in}} \hat{h}(l)

  • 그러나 이미 히스토그램이 골고루 펴져 있는 영상에 히스토그램 평활화를 적용하면 품질이 떨어질 수도 있습니다. 따라서 영상처리 연산은 분별력을 가지고 활용 여부를 결정해야 합니다.

히스토그램 역투영과 얼굴 검출 (알고리즘 부분은 빠르게 넘어간 느낌..)

  • 히스토그램 역투영이란, 영상으로부터 이미 알고 있는 영역 값을 가지고 이 영역과 유사한 분포값을 가지고 있는 부분을 확률값(0~1)으로 표현하는 것입니다. 물체의 모양은 무시하고 컬러 분포만으로 검출하는 방법으로, 히스토그램은 컬러 분포를 표현하는 데 사용됩니다. 예를 들어 히스토그램 역투영을 이용하여 사람의 얼굴을 찾고자 할 때, 비교 기준으로 활용할 사람의 얼굴과 그것의 2차원 히스토그램이 필요합니다. 사람의 얼굴과 히스토그램의 색이 겹치면 1, 멀어지면 0의 값을 가지게 됩니다.
  • 그러나 컬러는 조명 환경에 매우 민감하기 때문에 오류 가능성이 크고, 비슷한 색 분포를 갖는 다른 물체를 구별 못한다는 단점이 있습니다. 하지만 해당 대상의 후보 영역을 알 수 있다는 장점이 있어 상황에 따라 색 분포 정보를 보조로 사용하고 있습니다.

이진 영상

흑백 영상(gray image)이란 [0~255]의 값을 가지고 있는 것을 말합니다. 이런 흑백 영상을 0 또는 255의 값을 갖는 것으로 바꾸면 이진 영상(binary image)이 됩니다.

이진화와 오츄 알고리즘

주어진 gray image를 binary image로 만드는 것을 이진화라고 합니다. 이를 위해서는 두 구간을 가르는 임계값(Threshold)가 필요한데, 그 방법으로는 두 봉우리 사이의 게곡을 임계값 T로 결정하게 됩니다. 하지만 자연 영상에서는 계곡 지점 결정이 어렵기 때문에 나온 알고리즘이 오츄 알고리즘입니다.

오츄 알고리즘 (ppt 알고리즘식 필기 확인)

  • 임계값 T를 기준으로 화소를 두 집합(흑, 백)으로 나누었을 때, 각 집합의 명암 분포가 균일할수록 좋다는 원리에 근거합니다. 여기서 균일성은 분산으로 측정하며, 분산이 작을수록 균일성이 높습니다.
  • 알고리즘 계산 방법은 임계값 T를 기준으로 양쪽의 합과 분산을 각각 구하여 분산과 합을 곱하여(합으로 가중치를 부여) 그 둘을 더하면 됩니다. 그러나 해당 방법은 [0~L-1]의 도수를 가지고 있는 1차원 히스토그램이므로, 임계값 T가 0, 1, ..., L-1일 때의 모든 분산 값을 구하여 최소가 되는 T 값을 찾아야 한다는 단점이 있습니다.
  • 이를 효율적으로 구하기 위해 초기값(t=0)과 순환식(t>0)을 구하여, t라는 순간을 위해 계산해 놓은 값을 이용하여 그 다음 순간 t+1의 값을 빠르게 계산할 수 있도록 하였습니다. (식 자체를 자세히 보진 않으심. 실습에서도 기본적인 [0~L-1]을 가지고 실습한다 하심!! 이 부분은 잘 안 봐도 될 듯)

최종 요약 정리

  • 주어진 입력 영상을 영상 처리하는 가장 기본적인 방법, 히스토그램
  • 오츄 알고리즘 이론
profile
해담이를먹여살리기위한..

0개의 댓글