02 OpenCV 시작하기 - minho0315/OpenCV GitHub Wiki
ⅰ. 이미지 크기
ⅱ. 정밀도
ⅲ. 채널
ⅳ. 관심 영역
ⅴ. 관심 채널
ⅵ. 히스토그램
- 이미지 크기
- 정밀도
- 채널
- 이미지끼리의 연산시 일치해야한다.
- OpenCV 함수 사용시 구성 요소 중 하나이상의 요소가 함수의 요구사항과 일치해야함
- 함수의 효율적 처리를 위해 관심 영역과 관심 채널의 이미지 구성 요소에 적용해 이미지의 일부분을을 잘라내어 사용하는 경우도 있음
- 관심 영역
- 관심 채널
필드나 변수에 할당될 이미지의 너비, 높이 의미
구성 형태: 행렬
이미지의 크기 = 데이터의 크기
- 고화질의 경우 이미지의 크기도 커짐
- 데이터의 개수를 줄이는 간단한 방법은 이미지의 크기를 줄이는 것
- 이미지 크기 변경 메서드(Image Pyramid나 Resize)를 전처리 과정에서 적용
- 정확도와 연산량에 영향을 미침
이미지 크기
-
이미지 크기 속성 값 = 액자의 역할
- 필드나 변수에 설정된 이미지 크기에 따라 원본 이미지를 삽입
- 설정된 이미지와 실제 이미지의 크기가 다르면 액자에 담을 수 없음. ->원본 이미지의 크기를 변경하는 함수를 적용한 다음 변수나 필드로 불러와 사용가능
- 이미지의 크기와 변수와 필드에 설정된 크기는 별개의 속성
-
OpenCV에서의 이미지 크기 표현 방식
- 너비, 높이
- 행(가로줄의 개수), 열(세로줄의 개수)
- 너비 = 열 // 높이 = 행
-
이미지 크기 할당 방식 예제
Mat color = new Mat(new Size(width, height), MatType.CV_8UC3);
Mat gray = new Mat(rows, cols, MatType.CV_8UC1)
이미지가 얼마나 많은 생각을 표현할 수 있느냐를 의미
↑: 많은 색상을 표현할 수 있어 데이터의 폭이 넓어지고 더 자연스러운 이미지로 표시, 데이터의 처리결과도 정밀함
↓: 육안으로 확인하기 힘들정도로 이미지의 변형이 가해지며 데이터의 개수도 줄어듬
- 비트 표현
- bit = 색상의 표현 개수
- 색상표현시 n-Bit로 표현, n은 비트의 수를 의미
- 8-Bit의 경우 2^8로 표현되어 256가지 값을 가짐
- 적어도 8비트여야 유의미한 데이터를 얻게되어 색상 표현 가능, 주로 그레이스케일 메서드에서 많이 사용
- 1비트 - 이진화 이미지
- 4비트 - 저화질 의미지
- 8비트 - 이미지
- OpenCV 정밀도 표현법
- 8비트 정밀도 이미지를 표현할 때 U8의 정밀도값을 가장 많이 활용 + U8 : unsigned 8_bit integers 부호가 없는 8bit 정수형
- 정밀도 형식은 CV_<S|U|F|>C<채널 수> 형식
- MatType.CV_8UC3
- 색상 이미지와 흑백 이미지의 차이점은 채널 수가 다르다는 것.
그래픽스 이미지의 색상 정보를 담고 있다.
일반적으로 Red, Green, Blue와 추가로 Alpha로 구성된다.
이 밖에도 Hue,Saturation,Value등의 채널도 있다.
색상 표시를 할 때는 3~4 채널(다중 채널 의미)
흑백 이미지 표현시 1채널(단일 채널)
- 색상 표현
- RGB 값 중 한 채널만 따로 표시하여 보면 해당 성분이 높을수록 255에 가까워지고 0
- 하얀색일 때 255 검정일때 0에 가깝다.
- 정밀도 형식은 CV_<S|U|F|>C<채널 수> 형식
- MatType.CV_8UC3 // 채널 3개
-
필요성
- OpenCV에서는 주요 데이터로 N차원 배열 사용
- 1920X1280 비율의 색상 이미지(3채널)를 처리 시 7,372,800개의 데이터 공간 생성
- 처리해야 할 데이터의 수가 기하급수적으로 늘어나는 것을 방지하기 위해 관심 영역을 사용하여 불필요한 데이터 영역을 줄인다.
-
관심영역(Region Of Interest, ROI), 이미지를 처리할 때 객체를 탐지하거나 검출하는 영역을 명확하게 관심 영역이라고 지정
- 알고리즘의 초기 구성 단계: 이미지 전체에 대해 오브젝트 검출
- 이후 추가적인 알고리즘을 적용 시: 해당 오브젝트의 이미지 영역에서 알고리즘 적용
- 알고리즘의 초기 구성 단계: 이미지 전체에 대해 오브젝트 검출
-
예시
- 현재 시간을 확인하는 알고리즘
- 이미지에서 시계라는 객체 검출
- 관심 영역으로 지정된 시계 이미지 안에서 시간 검출
- 현재 시간을 확인하는 알고리즘
- 관심영역과 동일하게 데이터의 형태를 변형 시키는 것이 아닌 특정 영역을 불러와 연산량의 감소와 정확도를 향상시키는 데 사용, Channel Of Interest, COI라고 부른다.
- 색상이미지에 대해 채널을 분리하여 특정 채널에 대해 연산을 수행하면 산술적으로 데이터 양이 1/3으로 줄어든다.
- 채널을 모두 분리한 뒤에 동일한 알고리즘을 각각 적용하면 더 많은 결과를 얻을 수 있다.
- 특정 채널의 밝기 분포를 계산하거나 알파 혼합(투명도를 가진 두 개 이상의 이미지를 혼합해 하나의 이미지로 만드는 것) 등에 활용할 수 있다.
도수 분포표 중 하나로 데이터의 분포를 몇 개의 구간으로 나누고 각 구간에 속한 데이터를 시각적으로 표현한 막대 그래프
X축을 픽셀의 값, Y축을 해당 픽셀의 개수
히스토그램의 3가지 중요 요소
- 빈도수(BINS): 히스토그램 그래프의 X축 간격
- 0-255개로 총 256개의 범위를 갖고 있고 빈도수의 값이 8이라면 0-7, 8-15, … , 248-255의 범위로 총 32개의 막대가 생성된다.
- 차원 수(DIMS): 히스토그램을 분석할 이미지 차원
- 분석하고자하는 색상 차원, 그레이스케일은 단일채널
- 범위(RANGE): 히스토그램 그래프의 X축 범위
- 이미지에서 측정하려는 픽셀값의 범위