02 OpenCV 시작하기 - minho0315/OpenCV GitHub Wiki

목차

ⅰ. 이미지 크기
ⅱ. 정밀도
ⅲ. 채널
ⅳ. 관심 영역
ⅴ. 관심 채널
ⅵ. 히스토그램

OpenCV에서의 이미지 구성요소 데이터

  1. 이미지 크기
  2. 정밀도
  3. 채널
  • 이미지끼리의 연산시 일치해야한다.
  • OpenCV 함수 사용시 구성 요소 중 하나이상의 요소가 함수의 요구사항과 일치해야함
    • 함수의 효율적 처리를 위해 관심 영역과 관심 채널의 이미지 구성 요소에 적용해 이미지의 일부분을을 잘라내어 사용하는 경우도 있음

구성요소의 분리

  1. 관심 영역
  2. 관심 채널


ⅰ. 이미지 크기

필드나 변수에 할당될 이미지의 너비, 높이 의미
구성 형태: 행렬 이미지의 크기 = 데이터의 크기

  • 고화질의 경우 이미지의 크기도 커짐
  • 데이터의 개수를 줄이는 간단한 방법은 이미지의 크기를 줄이는 것
  • 이미지 크기 변경 메서드(Image Pyramid나 Resize)를 전처리 과정에서 적용
  • 정확도와 연산량에 영향을 미침

이미지 크기

  1. 이미지 크기 속성 값 = 액자의 역할

    • 필드나 변수에 설정된 이미지 크기에 따라 원본 이미지를 삽입
    • 설정된 이미지와 실제 이미지의 크기가 다르면 액자에 담을 수 없음. ->원본 이미지의 크기를 변경하는 함수를 적용한 다음 변수나 필드로 불러와 사용가능
    • 이미지의 크기와 변수와 필드에 설정된 크기는 별개의 속성
  2. OpenCV에서의 이미지 크기 표현 방식

    • 너비, 높이
    • 행(가로줄의 개수), 열(세로줄의 개수)
    • 너비 = 열 // 높이 = 행
  3. 이미지 크기 할당 방식 예제

Mat color = new Mat(new Size(width, height), MatType.CV_8UC3);
Mat gray = new Mat(rows, cols, MatType.CV_8UC1)


ⅱ. 정밀도

이미지가 얼마나 많은 생각을 표현할 수 있느냐를 의미
↑: 많은 색상을 표현할 수 있어 데이터의 폭이 넓어지고 더 자연스러운 이미지로 표시, 데이터의 처리결과도 정밀함
↓: 육안으로 확인하기 힘들정도로 이미지의 변형이 가해지며 데이터의 개수도 줄어듬

  1. 비트 표현
    • bit = 색상의 표현 개수
    • 색상표현시 n-Bit로 표현, n은 비트의 수를 의미
      • 8-Bit의 경우 2^8로 표현되어 256가지 값을 가짐
    • 적어도 8비트여야 유의미한 데이터를 얻게되어 색상 표현 가능, 주로 그레이스케일 메서드에서 많이 사용
      • 1비트 - 이진화 이미지
      • 4비트 - 저화질 의미지
      • 8비트 - 이미지
  2. OpenCV 정밀도 표현법
    • 8비트 정밀도 이미지를 표현할 때 U8의 정밀도값을 가장 많이 활용 + U8 : unsigned 8_bit integers 부호가 없는 8bit 정수형
    • 정밀도 형식은 CV_<S|U|F|>C<채널 수> 형식
    • MatType.CV_8UC3 0107
  • 색상 이미지와 흑백 이미지의 차이점은 채널 수가 다르다는 것.


ⅲ. 채널

그래픽스 이미지의 색상 정보를 담고 있다.
일반적으로 Red, Green, Blue와 추가로 Alpha로 구성된다.
이 밖에도 Hue,Saturation,Value등의 채널도 있다.
색상 표시를 할 때는 3~4 채널(다중 채널 의미)
흑백 이미지 표현시 1채널(단일 채널)

  1. 색상 표현
    • RGB 값 중 한 채널만 따로 표시하여 보면 해당 성분이 높을수록 255에 가까워지고 0
    • 하얀색일 때 255 검정일때 0에 가깝다.
    • 정밀도 형식은 CV_<S|U|F|>C<채널 수> 형식
      • MatType.CV_8UC3 // 채널 3개


ⅳ. 관심영역

  1. 필요성

    • OpenCV에서는 주요 데이터로 N차원 배열 사용
    • 1920X1280 비율의 색상 이미지(3채널)를 처리 시 7,372,800개의 데이터 공간 생성
    • 처리해야 할 데이터의 수가 기하급수적으로 늘어나는 것을 방지하기 위해 관심 영역을 사용하여 불필요한 데이터 영역을 줄인다.
  2. 관심영역(Region Of Interest, ROI), 이미지를 처리할 때 객체를 탐지하거나 검출하는 영역을 명확하게 관심 영역이라고 지정

    • 알고리즘의 초기 구성 단계: 이미지 전체에 대해 오브젝트 검출
    • 이후 추가적인 알고리즘을 적용 시: 해당 오브젝트의 이미지 영역에서 알고리즘 적용
  3. 예시

    • 현재 시간을 확인하는 알고리즘
    • 이미지에서 시계라는 객체 검출
    • 관심 영역으로 지정된 시계 이미지 안에서 시간 검출


ⅴ. 관심 채널

  • 관심영역과 동일하게 데이터의 형태를 변형 시키는 것이 아닌 특정 영역을 불러와 연산량의 감소와 정확도를 향상시키는 데 사용, Channel Of Interest, COI라고 부른다.
  • 색상이미지에 대해 채널을 분리하여 특정 채널에 대해 연산을 수행하면 산술적으로 데이터 양이 1/3으로 줄어든다.
  • 채널을 모두 분리한 뒤에 동일한 알고리즘을 각각 적용하면 더 많은 결과를 얻을 수 있다.
  • 특정 채널의 밝기 분포를 계산하거나 알파 혼합(투명도를 가진 두 개 이상의 이미지를 혼합해 하나의 이미지로 만드는 것) 등에 활용할 수 있다.


ⅵ. 히스토그램

도수 분포표 중 하나로 데이터의 분포를 몇 개의 구간으로 나누고 각 구간에 속한 데이터를 시각적으로 표현한 막대 그래프
X축을 픽셀의 값, Y축을 해당 픽셀의 개수
히스토그램의 3가지 중요 요소

  1. 빈도수(BINS): 히스토그램 그래프의 X축 간격
    • 0-255개로 총 256개의 범위를 갖고 있고 빈도수의 값이 8이라면 0-7, 8-15, … , 248-255의 범위로 총 32개의 막대가 생성된다.
  2. 차원 수(DIMS): 히스토그램을 분석할 이미지 차원
    • 분석하고자하는 색상 차원, 그레이스케일은 단일채널
  3. 범위(RANGE): 히스토그램 그래프의 X축 범위
    • 이미지에서 측정하려는 픽셀값의 범위
⚠️ **GitHub.com Fallback** ⚠️