컴퓨터 비전

영상 데이터와 파일 형식

Jagbbum 2023. 10. 16. 10:19

영상 데이터

 

영상 : 픽셀이 바둑판 모양의 격자에 나열되어 있는 형태

 

그레이스케일 영상 : 흑백 사진처럼 색상 정보없이 256 단계의 밝기 정보만으로 구성된 영상

 

트루컬러 영상 :  컬러 사진처럼 RGB 색 성분 256 단계로 표현된 영상


영상 데이터 표현 방법

 

정적 2차원 배열의 생성

unsigned char a[480][640] {};

단점 : 배열의 크기를 미리 알고 있어야 함

 

동적 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] {};
}

동적 2차원 배열의 원소 접근법

for (int y=0; y<h; y++){
	for (int x=0; x<h; x++){
    	p[y][x] = p[y][x] +10;
    }
} // 스캔

동적 2차원 배열 메모리 해제

- 생성의 역순

for (int y=0; y<h; y++) delete[] p[i];
delete[] p;

 

영상 데이터 저장 클래스

class MyImage
{
public:
	MyImage() : w(0), h(0), data(0) {}
    
    MyImage(int _w, int _h : w(_w), h(_h) {
    	data = new unsigned char[w*h] {};
    }
    
    ~MyImage() {
    	if (data) delete[] data;
   	}
    
    unsigned char& at(int x, int y) {
    	return *(data + y*w +x);
    }

public:
	int w,h;
    unsigned cahr* data;
};

영상 파일

비트맵 :  비트들의 집합 -> 픽셀의 집합

- 장치 의존 비트맵 : 출력 장치 설정에 따라 표현

- 장치 독립 비트맵 : 출력 장치가 달라도 동일하게 출력

 

BMP 파일 구조

- 비트맵 파일 헤더

- 비트맵 정보 헤더

- 색상 테이블/ 팔레트

- 픽셀 데이터

 

BMP : 픽셀 데이터를 압축하지 않고 저장

JPG : 손실 압축 -> 압축률이 좋아 용량이 크게 감소

GIF : 256 색상 이하의 영상 저장 , 무손실 압축

PNG : 무손실 압축, 알파 채널(투명도) 지원