-
컴퓨터 그래픽스 정리 (4) Rasterization : 벡터 데이터에서 래스터 데이터로Computer Graphics 2021. 10. 3. 00:00728x90
Rasterization : 벡터 데이터에서 레스터 데이터로
[목차]
Rasterization
선형 보간법
점진적 계산
컴퓨터 그래픽스 단계
1) 프로그래머가 기하 물체에 대한 속성을 기술해주는 물체 좌표계에서 화면에 해당하는 윈도우 좌쵸계까지의 기하 변환
2) 눈 좌표계에서의 조명 계산과 프리미티브 조합 과정
3) 각 타임의 기하 프리미티브들에 대하여 래스터화 계산 = 각 기하 프리미티브가 투영되는 화면 상의 화소들을 찾아 적절한 색깔로 칠해주는 것!
-> 연속 공간인 3차원 좌표계를 기준으로 하여 기하 및 그에 연관된 데이터가 연속적인 형태로 표현되었는데, 이 계산 과정을 통하여 이산 공간인 래스터 공간에서의 이산적인 형태의 데이터, 즉 프레임 버퍼로 변환되어 저장된다
Rasterization (레스터화) 과정
- 그래픽스 파이프라인에서, 최종 프로젝션을 한 후, 디스플레이에서 픽셀화하는 과정을 래스터화 (Rasterization) !
- 즉, 모델의 좌표데이터(연속적인 데이터/벡터 데이터)를 받아서 픽셀의 색상 값(이산적인 데이터/래스터 데이터)을 결정하는 것!
= 연속 공간에 존재하는 다각형에 대하여 래스터 이미지 격자의 기본 단위인 화소라는 조그만 창문의 중심에 대하여 샘플링하는 과정!
- 다만, 무한한 표현 능력을 제공하는 연속 공간에서의 기하 정보를 불충분한 표현 도구라 할 수 있는 이산 공간에서의 래스터 이미지라는 격자 틀을 이용하여 표현하려고 하기 때문에, 표현 오차가 발생하는데 이는 앨리어스(alias)라고 하며 앨리어싱의 결과 발생하는 오차이기 때문이다!-> 래스터화 과정 중, 엘리어싱을 줄이기 위한 연산 방법( = 안티 앨리어싱 )으로 (1) 선형 보간법 (2) 점진적 계산!
(1) 선형 보간법 : 복잡한 함수의 효과적인 근사화
(2) 점진적 계산 : 효율적인 계산을 위한 것
선형 보간법
연속적인 것을 이산적으로 표현할 때, 해당 모델(함수)를 잘 표현하는 데이터를 Sampling한다!
-> 그리고 이렇게 Sampling한 데이터들에서 원래의 함수를 근사화할 때, 앨리어싱을 줄이는 방안으로 interpolation을 진행한다!
데이터를 보간한다 = 샘플링을 통해 구한 모든 요구 사항을 정확히 만족시켜주는 것
Interpolation(인터폴레이션, 보간)이란 알려진 지점의 값 사이(중간)에 위치한 값을 알려진 값으로부터 추정하는 것
<-> extrapolation은 알려진 값들 사이의 값이 아닌 범위를 벗어난 외부의 위치에서의 값을 추정하는 것
보간은 데이터의 양이 많아질수록 정확도가 낮아지기 때문에, 데이터가 많을 경우 한 개의 다항식을 사용하여 전체를 보간하는 것이 아니라, 전체 구간을 여러 개의 부분 구간으로 나누어 각 구간에 대해 서로 다른 다항식을 통하여 보간한다!
선형 보간법(linear interpolation)은 두 지점 사이의 값을 추정할 때 그 값을 두 지점과의 직선 거리에 따라 선형적으로 결정하는 방법! 즉 1차(=선형) 다항식을 사용한다
점진적 계산
점진적 계산 (incremental computation) : 가능한 한 불필요한 계산을 제거하기 위해, 어느 정도의 규칙성을 가지며 반복적으로 수행되는 문제를 직전의 계산 결과를 최대한 사용하여 다음 계산을 수행하는 것 !
-> 물론 반복성을 가지는 모든 계산을 점진적으로 할 순 없지만, 규칙적인 계산 과정에서 점진적인 구조를 이용할 수 있는 경우 많은 계산을 줄일 수 있음 ! => 래스터화 문제에 적용하여 효율 높인다
레스터화
Rasterization 은 두 가지 계산을 수행하는 것을 주 목적으로 한다!
(1) 윈도우 좌표계로 변환된 각 기하 프리미티브들이 화면상에서 차지하는 화소들의 위치를 찾는 것
(2) 벡터 형태의 데이터인 기하 프리미티브들이 래스터들로 변환되면ㅁ서, 각 연관 데이터들을 기하 프리미티브들의 내부에 해당하는 화소들에게 붙여줄 적절한 값 계산
=> 이런 래스터화의 결과로 생성되는 화소와 그에 연관된 정보들을 fragment라고 부르며, 4가지 정보로 구성된다!
(1) 윈도우 좌표계 공간에서의 화소의 위치와 그에 연관된 데이터
(2) 그 화소를 통해 보이는 기하 프리미티브의 해당 지점까지의 깊이 정보
(3) 그 지점의 색깔
(4) 그 지점에 매핑되는 텍스쳐 좌표
- 래스터화 이전까지의 기하 프리미티브의 연속적인 정보들은 래스터화를 통해 프래그먼트로 변환되고, 래스터화 이후엔 모든 계산이 프래그먼트 단위로 일어난다
1. 점의 래스터화
2. 선분의 래스터화
1) diamond-exit 규칙
2) DDA 알고리즘 (Digital Different Analyzer algorithm)
3) 브레즌햄 알고리즘 (Bresenham's algorithm)
* 위의 DDA 알고리즘이나 브레즌햄 알고리즘은 래스터화의 두 가지 목적 중 (1) 화소의 위치를 찾는 점진적 계산 방법
=> 여기에 선형 보간을 적용한다면 (2) 화소에 연관시킬 데이터, 즉 프리미티브 내부의 화소에 대한 데이터 값까지 계산할 수 있다!
3. 다각형의 래스터화
- 다각형의 래스터화 알고리즘들은 공통적으로 스캔 라인 변환(Scan Line Conversion) 형태의 방식을 취한다
참고:
https://darkpgmr.tistory.com/117?category=460965
https://justdoitproject.tistory.com/38
728x90'Computer Graphics' 카테고리의 다른 글
Camera Calibration 정리 (0) 2021.10.03 컴퓨터 그래픽스 정리 (2) 3차원 뷰잉 모델과 기하 파이프라인 (0) 2021.10.02 컴퓨터 그래픽스 정리 (1) 컴퓨터 그래픽스의 기본 요소와 래스터 그래픽스 시스템 (0) 2021.10.02 컴퓨터 그래픽스 기본 개념 (0) 2021.10.02 컴퓨터 그래픽스 / 영상 처리 관련 참고 자료 (0) 2021.10.02