:)
영상 데이터 구조와 표현 방법 / 영상 파일 형식과 특징 본문
영상(image)란?
- 픽셀(영상의 기본 단위)이 바둑판 모양의 격자에 나열되어 있는 형태
그레이스케일 영상(grayscale image)
- 흑백 사진처럼 색상 정보가 없이 오직 밝기 정보로만 구성된 영상
- 밝기 정보를 256 단계로 표현 [0, 255]
// c/c++에서 unsigned char로 표현(1byte) typedef unsigned char BYTE; // Windows typedef unsigned char uint8_t; // Linux typedef unsigned char uchar; // OpenCV
트루컬러 영상(truecolor image)
- 컬러 사진처럼 다양한 색상을 표현할 수 있는 영상
- RGB 색 성분을 256 단계로 표현, 256^3 색상 표현 가능
// unsigned char 자료형 3개 있는 배열 또는 구조체(3Bytes) class RGB { unsigned char R; unsigned char G; unsigned char B; };
영상 데이터 표현 방법
- 정적 2차원 배열의 생성
unsigned char a[480][640] {};
- unsigned char : 1바이트 사용
- 2차원 배열 전체 크기만큼의 메모리 공간이 연속적으로 할당됨
- 단점
- 배열의 크기를 미리 알고 있어야 함 -> 다양한 크기의 영상을 표현하기에 부적절
- Stack 영역에 메모리 할당 : 대략 1MB까지 할당 가능
동적 2차원 배열의 생성
int w = 640; int h = 480; unsigned char** p; p = new unsigned char*[h]; for(int i = 0; i < h; i++) { p[i] = new unsigned char[w] {}; }
행 단위로만 연속된 메모리 공간이 보장됨
프로그램 동작 중 다양한 크기의 영상을 생성할 수 있음
Heap 영역에 메모리 할당
동적 2차원 배열의 메모리 해제
- 동적 2차원 배열 생성의 역순을 해제
- delete 구문에서 괄호 연산자([])를 반드시 사용
비트맵(bitmap)
- 비트들의 집합 -> 픽셀의 집합
- 영상의 전체 크기에 해당하는 픽셀 정보를 그대로 저장
- 표현이 직관적이고 분석에 용이
- 메모리 용량을 많이 차지(영상의 확대/축소 시 화질 손상이 심함)
- 사진, 포토샵
벡터 그래픽스
- 점과 점을 연결해 수학적 원리로 그림을 그려 표현하는 방식
- 이미지의 크기를 확대 또는 축소해도 화질이 손상되지 않음
- 폰트, 일러스트레이터
- 픽셀 데이터
- 그레이스케일 비트맵 : RGBQUAD 배열의 인덱스 저장
- 트루컬러 비트맵 : B,G,R 순서로 픽셀 값 저장
- 일반적으로 상하가 뒤집힌 상태로 저장됨(bottom-up)
- 효율적 데이터 관리를 위해 영상의 가로 크기를 4의 배수로 저장
'컴퓨터비전' 카테고리의 다른 글
OpenCV 그리기 함수 (0) | 2022.03.18 |
---|---|
카메라와 동영상 처리 (0) | 2022.03.17 |
OpenCV 주요 클래스 (0) | 2022.03.16 |
OpenCV 영상 불러와서 출력하기 (0) | 2022.03.15 |
컴퓨터 비전 개요 (0) | 2022.03.14 |
Comments