UNIV
2022-04-16 12:06
컴퓨터그래픽스 - 6강. 그래픽스 기본요소의 속성
1. 영역 채우기
- 채우기 속성
- 균일한 색
- 색 보간
- 패턴
- 텍스쳐
- 영역의 정의
- 다각형 경계
- 불규칙한 곡선 경계
- 패턴 채우기
- 타일 붙이기
- 직사각형 배열 형태의 마스크로 패턴 정의
- 대상영역을 모두 채울 때 까지 수평 및 수직 방향으로 패턴을 반복적으로 복제
- 타일 붙이기의 기준 위치
- 윈도 원점 기준
- 도형의 경계상자 모서리 기준
- 타일 붙이기
2. 영역 채우기 알고리즘
- 주사선 다각형 채우기
- 홀-짝 규칙
- 픽셀 좌표와 픽셀 면적
- 다각형 선분 테이블
- 버킷
- 각각의 버킷에는 해당 주사선에 시작하는 선분들의 리스트가 연결됨
- 선분의 항목에 저장되는 내용
- 활동 선분 목록
- 불규칙한 경계로 정의되는 영역 채우기
- 영역 채우기 알고리즘의 종류
- 시작점
- 빨간 경계 영역 채우기
- 경계선 채우기 알고리즘
- 백색 영역 채우기
- 범람 채우기 알고리즘
- 영역 채우기 알고리즘의 종류
- 연결된 이웃의 정의
- 4방향 연결
- 8방향 연결
- 경계선 채우기 알고리즘
void boundary4Fill(int x, int y, int fCol, int bCol) {
int intCol;
intCol = getPixel(x, y); // x , y 위치의 픽셀 색을 읽음
// 경계선 색이나 채우기 색이 아닌 경우
if (intCol != bCol && intCol != fCol) {
setPixel(x, y, fCol); // 현재 위치를 채우기 색으로 그림
// 4방향 연결성에 따라 이웃 픽셀에 경계선 채우기를 적용
boundary4Fill(x + 1, y, fCol, bCol);
boundary4Fill(x - 1, y, fCol, bCol);
boundary4Fill(x, y + 1, fCol, bCol);
boundary4Fill(x, y - 1, fCol, bCol);
}
}
- 범람 채우기 알고리즘
- 동일한 색 영역을 지정된 채우기 속성에 따라 채움
// x, y 픽셀 좌표, fCol: 채우기 색, bCol: 내부 색
void flood4Fill(int x, int y, int fCol, int intCol) {
int currCol;
currCol = getPixel(x, y);
if (currCol == intCol) {
setPixel(x, y, fCol);
flood4Fill(x + 1, y, fCol, intCol);
flood4Fill(x - 1, y, fCol, intCol);
flood4Fill(x, y + 1, fCol, intCol);
flood4Fill(x, y - 1, fCol, intCol);
}
}
3. 안티 에일리어싱
- 에일리어싱의 개념
- 낮은 해상도로 인한 정보의 왜곡
- 표본화 (sampling)
- 안티 에일리어싱 기법
- 전 필터링 (prefiltering)
- 물체가 차지하는 픽셀 면적을 기준으로 픽셀 밝기를 조절하는 방법
- 영역 샘플링 (area sampling) 이라고 함
- 슈퍼 샘플링
- 하나의 픽셀을 여러 개의 작은 픽셀로 분할
- 물체 영역이 차지하는 서브픽셀의 수에 따라 픽셀 색 결정
- 후 필터링 (postfiltering)
- 이웃 샘플들의 가중치 평균으로 픽셀 값을 결정
- 전 필터링 (prefiltering)