적분 영상(integral image)이란 쉽게 말해서 다음 픽셀에 이전 픽셀까지의 합이 더해진 영상이다. 즉, 다음과 같은 수식으로 표현되는데

여기서 integImage(x, y)는 적분 영상이고 orgImage(x', y')는 원래 영상이다.

적분 영상의 장점은 특정 영역의 픽셀 값의 총합을 매우 쉽게 구할 수 있다는 점이다.

다음의 그림을 보면 이해가 쉬울 것이다.

8*8 크기의 임의의 1채널 영상을 예로 든 것이다. 좌측 상단이 원점이다.

왼쪽의 원래 영상에서 칠해진 영역의 넓이는

오른쪽 적분 영상에서 녹색 영역의 합과 주황색 영역의 합을 뺀 것과 같다.

(물론, 위 영상 전체의 합은 2250으로, 적분 영상에서의 마지막 값과 같다.)

이것을 수식으로 나타내면 다음과 같다.

다음의 그림을 참고하면 원리를 알 수 있다. 

D 영역의  픽셀 값을 얻기 위해서 점 d까지의 넓이에서 점 b까지의 넓이와 점 c까지의 넓이를 뺀 후

두 번 빼진 점 a 까지의 넓이를 한 번 더해줌으로써 D 영역의 넓이를 구할 수 있는 것이다.

  ( [D] = [A+B+C+D] - [A+C] - [A+B] + [A] )

이러한 적분 영상은 하나의 영상에 대해 특정 영역의 픽셀 값의 합을 여러 번 구해야 할 필요가 있을 때 유용하게 사용할 수 있다.

 

아래는 적분 영상을 구하는 C++ 함수의 예시(example)이다.

 

소스 보기 (Open)


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by Kugi

댓글을 달아 주세요

  1. 안녕하세요 2013.06.04 13:35 신고  댓글주소  수정/삭제  댓글쓰기

    유용한 정보 잘 보고 갑니다!

    수고하세요.

  2. 정진범 2013.07.11 20:36 신고  댓글주소  수정/삭제  댓글쓰기

    좋은정보에 감사합니다! 덕분에 적분이미지에 대해 이해를 했습니다~!

  3. 따옥 2014.02.06 16:24 신고  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 잘 익혔습니다!!!

  4. 체셔 2014.04.27 15:39 신고  댓글주소  수정/삭제  댓글쓰기

    마지막 부분에 ( [D] = [A+B+C+D] - [A+C] - [B+D] + [A] ) 이 식이
    D = (A+B+C+D) - (A+C) - (A+D) + A
    이렇게 돼야되는 것 아닌가요? 하여튼 쉽게 풀어 써주신 글, 잘 보고갑니다~

    • Kugi 2014.10.13 13:59 신고  댓글주소  수정/삭제

      댓글 감사합니다.
      오류가 있었네요. 정확하게는
      D = (A+B+C+D) - (A+C) - (A+B) + A
      입니다. 본문 수정하였습니다.

  5. 영상처리초보자 2016.01.21 18:34 신고  댓글주소  수정/삭제  댓글쓰기

    D = (A+B+C+D) - (A+C) - (A+B) + A 라는 식에서
    D = (A+B+C+D) - (A+C) - (B) + A라고 하면은 안되는건가요..? 하드웨어로 구현하려고해서 로직 갯수를 줄이기 위해 CSA를 이용할텐데 궁금하네요..

  6. 박민서 2017.05.22 02:21 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요? 적분영상에 관한 포스팅 관련해서 문의를 드리고 싶은것이 있어서요.
    말씀하신것 중에 "이러한 적분 영상은 하나의 영상에 대해 특정 영역의 픽셀 값의 합을 여러 번 구해야 할 필요가 있을 때 유용하게 사용할 수 있다." 라고하셨는데요 이게 이해가 안가서요. 부가적으로 설명을 좀더 해주실수있으신지요?

    • Kugi 2017.06.19 04:31 신고  댓글주소  수정/삭제

      답글이 늦었습니다. 지금은 벌써 답을 얻으셨을거라 생각하지만 그래도 간략하게 말씀드리자면, 모든 화소 위치에서 주변 화소들의 합을 각각 계산하고 싶을 때 중복된 계산을 하지 않게 해 준다는 뜻입니다.
      가령 연속된 화소 p1, p2, p3, p4, p5가 있을 때 이웃한 세 개 픽셀들의 합을 모든 위치에서 계산하고 싶다면 (양 끝은 제외합니다.) p1+p2+p3, p2+p3+p4, p3+p4+p5 를 계산하게 될 것입니다. 이 때 (p2+p3)를 두 번 계산했고 (p3+p4)를 두 번 계산하여 낭비가 발생하는 데 전체 영상과 마스크 크기가 커질수록 이런 낭비가 심해지는 것을 알 수 있습니다. 적분영상을 사용하면 어느 위치의 합을 계산하더라도 네 개의 값을 이용한 사칙연산만 하면 되므로 훨씬 효율적인 계산이 가능해집니다.

  7. 2017.08.11 17:24  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다



티스토리 툴바