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)
      • 이웃 샘플들의 가중치 평균으로 픽셀 값을 결정