본문 바로가기

공부/컴퓨터그래픽스 이론

그래픽스 기본 요소의 속성

반응형

색 모델

1. 색의 성질

가시광선

  • 사람의 눈으로 볼 수 있는 일정 주파수 범위의 전자기파
  • 가시 영역의 모든 주파수를 포함하는 백색광이 물체에 입사되면 일부 주파수는 반사되고 나머지는 흡수됨
  • 대부분의 물체는 스스로 빛을 내는 것이 아닌 외부의 빛을 반사함

빛의 에너지 분포와 지배주파수

  • 지배 주파수: 백색광이 물체표면에서 반사되었을 때, 가장 강한 피크주파수(E_D)
  • 지배 주파수와 지배 주파수가 아닌(E_W)주파수가 같이 반사된다.

색의 3 요소

  • 색조(hue): 빛의 색을 결정하는 요소, 지배주파수에 해당하는 색 성분
  • 채도(saturation): 색이 순수한 스펙트럼 색에 얼마나 가까운가를 나타내는 요소, E_d - E_w
  • 명도(brightness, luminance): 빛의 전체적인 에너지 크기에 해당하는 요소

2. 원색(primary colors)

삼원자극이론(tri-stimulus theory)

  • 원추세포: 사람의 시각세포 중 색을 감지하는 역할을 함
  • 사람이 느끼는 색은 세 종류의 원추세포에 흡수되는 빛의 양(r,g,b)에 의해 결정
  • 두 빛에 대해 감지되는 r,g,b의 양이 서로 같다면 색을 구성하는 주파수 성분이 다르더라도 같은 색으로 인지될 수 있음

색 정합 실험

  • 기준 파장 광원을 만들어내기 위해 r,g,b 광원을 혼합하여 나온 색이 과연 완전히 같을까를 알아보기 위한 실험
  • 실험결과 특정색상은 만들어낼 수 없음(r값이 음수가 되어야 만들 수 있는 영역이 있기 때문)

CIE XYZ 색 모델

  • 인간의 시각 특성에 맞추어 정의된 X, Y, Z라는 가상의 표준 원색
  • Y는 밝기 값이 되도록 설계
  • X, Y, Z 가상 원색을 혼합하여 평균적인 인간의 눈에 보이는 모든 색을 표현할 수 있음
  • 이는 가상의 값이기 떄문에 실제 디스플레이 장치에 사용하기에는 어려움
  • 정규화된 값인 x,y만 가지고 빛의 색상을 표현할 수 있음. 이를 이용하여 CIE XYZ 색 모델을 표현함
  • 임의의 세 스펙트럼 원색을 조합하여 모든 가시광선의 색을 만들어 낼 수 없음

RGB 색 모델

  • R(빨강), G(초록), B(파랑)를 삼원색으로 하는 색 모델
  • 삼원색의 성분을 더하여 혼합색을 만듦
  • 가산 색모델, 더할수록 밝은 색이 나옴
  • 스스로 빛을 내어 색을 표현하는 출력장치에 적합한 모델

CMY 색 모델

  • C(청록), M(자홍), Y(노랑)를 삼원색으로 하는 색 모델
  • C,M,Y는 각각 R,G,B 원색의 성분을 흡수
  • 외부로부터 가해진 빛을 반사하는 형태의 출력에 적용(예: 프린터)

CMYK 색 모델

  • K(key) 성분: 회색의 농도를 결정
  • CMY 모델에 비해 회색의 표현이 용이, 가능하면 적은 잉크를 사용
  • 하프톤 방식의 CMYK 출력

HSV 색 모델

  • 사람이 생각하는 직관적인 개념에 보다 근접한 모델
  • H(hue, 색조) S(saturation, 채도), V(value, brightness, 명도)
  • RGB 모델을 기반으로 한 육각뿔 형태로 색 모델을 표현

색 속성

1. 색 속성의 지정

프레임 버퍼에 색을 저장하는 방법

  1. 프레임 버퍼에 r, g, b 색을 직접 지정 (최근 많이 사용)
  2. 색 부호를 별도의 테이블에 넣고, 그 프레임 메모리의 인덱스를 프레임 버퍼에 저장 (메모리는 아끼지만 보통 색 표현력이 떨어짐)

색 깊이

  • 하나의 픽셀을 표현하는데 사용되는 비트 수

OpenGL 에서의 색 지정

  1. 실수 자료형: 0부터 1 사이의 값을 사용
    • GLclampf : float형
    • GLclampd : double
  2. 정수 자료형: 0부터 그 자료형의 최댓값까지 사용
    • GLubyte : byte
    • GLuint : int
    • 셰이더로 전달할 때 각 성분의 값을 정규화함

2. 색 혼합

알파 성분

색의 투명도 등을 표현하기 위한 보조 데이터, 반투명한 도형의 색이 다른 도형이나 배경 등의 색과 혼합되는 효과를 내는 데 활용할 수 있음

OpenGL의 색 혼합

  • 각 채널의 목적지 색 성분과 목적지 혼합 인수를 곱한 값을 더함
  • 색 혼합 기능의 활성화 및 해제: glEnable(GL_BLEND), glDisable(GL_BLEND)
  • 색 혼합 함수: glBlendFunc(Glenum sFactor, Glenum dFactor);
  • 혼합 계수: GL_ZERO, GL_ONE, GL_ONE_MINUS_DST_ALPHA ...

점과 선의 속성

1. 점 속성

점 크기

  • 기본적으로 1개의 픽셀로 표현함
  • 큰 점의 표혐: 정사각형으로 표현, 원으로 표현

OpenGL의 점 크기 관련 함수

  • 점 크기: glPointSize(GLfloat size);
  • 안티 에일리어싱 활성화 및 해제: glEnable(GL_POINT_SMOOTH), glDisable(GL_POINT_SMOOTH)
  • 안티 에일리어싱 적용시 동그란 형태의 점 표현됨

2. 선 속성

  • 기울기 크기가 1.0이하인 경우 직선 경로의 위와 아래로 1.0보다 큰 경우 좌우로 선의 폭만큼 픽셀을 추가
  • 좀 더 정교하게 그리는 경우, 선 굵기에 해당되는 직사각형을 그리면 된다.(위 방법보다 추가적인 시간 소모)

선분 캡

  • 굵은 선분의 끝 모양을 다듬는 속성
  • 사각 캡(butt cap) -> 선분의 방향과 수직인 방향으로만 확장
  • 원형 캡(round cap)
  • 돌출 사각 캡(projecting square cap) -> 사각캡과 달리 양방향 모두 사각형으로 확장

선분 연결

  • 두 개의 굵은 선분의 연결 부분을 다듬는 방법에 대한 속성
  • 연귀 연결: 뾰족
  • 원형 연결: 원형, 부드로운
  • 사선 연결: 직선으로 메꿈

선 스타일

  • 실선, 파선, 점선
  • 일정 구간의 픽셀을 그리거나 건너뛰는 것을 반복하여 그림

영역 채우기 속성

1. 영역 채우기

채우기 속성

  • 균일한 색
  • 색 보간
  • 패턴
  • 텍스처

영역의 정의

  • 다각형 경계: 방정식으로 표현될 수 있는 기하 도형
  • 불규칙한 곡선 경계

타일 붙이기

  • 직사각형 배열 형태의 마스크로 패턴 정의
  • 대상 영역을 모두 채울 때까지 수평 및 수직 방향으로 패턴을 반복적으로 복제

2. 비트맵 패턴 채우기

타일 붙이기의 기준 위치

  • 윈도 원점 기준: 여러개의 다각형을 붙여 놓았을 때, 그 경계까 잘 보이지 않는 경우가 있음(붙어있는 한개의 도형처럼 느껴짐), 다각형 이동시 패턴이 달라짐
  • 도형의 경계상자 모서리 기준: 다각형 이동 시 패턴이 똑같음

영역 채우기 알고리즘

1. 주사선 다각형 채우기

홀-짝 규칙

  • 다각형 외부의 점에서 기준 점까지 홀수번 교차시 내부, 짝수선 교차시 외부
  • 주사선 다각형 - 주사선을 기준으로 홀-짝 규칙을 적용하여 내부/외부 검출
  • 엣지와 엣지가 만나는 부분은 신경써서 처리
  • 변이 주사선과 평행한 경우 처리(제외)
  • 제일 위의 제일 우측의 점은 제외 -> 엣지와 엣지가 만나는 부분 처리됨

다각형 선분 테이블

  • 각각의 주사선 수에 해당되는 버킷으로 구성
  • 각각의 버킷에는 해당 주사선에서 시작하는 선분들의 리스트가 연결됨(수평 선분 제외)
  • 선분 항목에 저장되는 내용: 선분 (x_!, y_1) - (x_2, y_2), y_1 < y_2
    • x_ymin, y_max, delta x, ptr

2. 불규칙한 경계로 정의되는 영역 채우기

  • 경계선 채우기: 불규칙한 경계의 안을 채움
  • 범람 채우기: 불규칙한 경계안에 특정 색으로 연결된 부분을 채움

연결된 이웃의 정의

  • 4 방향 연결: 동서남북
  • 8 방향 연결: 동서남북과 대각선 4방향

경계선 채우기

  • 경계선이 4방향인 경우 8방향 연결 방식으로 채우기 진행
  • 경계선이 8방향인 경우 4방향 연결 방식으로 채우기 진행
  • 경계선 색을 기준으로 탐색 후 boundaryFill
  • 일반적으로 교재의 boundaryFill알고리즘은 성능이 좋지 않아 x축방향으로 채우는 알고리즘을 활용

3. 범람 채우기 알고리즘

  • 동일 색 영역을 지정된 채우기 속성에 따라 채움
  • 내부 색을 기준으로 탐색 후 floodFill

안티 에일리어싱

1. 에일리어싱의 개념

낮은 해상도로 인한 정보 왜곡

  • 아날로그 신호를 표본화 시, 해상도가 너무 떨어지면 원래의 신호와 비슷하게 복원이 불가능

2. 안티 에일리어싱 기법

전 필터링(prefiltering)

  • 물체가 차지하는 픽셀 면적을 기준으로 픽셀 밝기를 조절하는 방법
  • 영역 샘플링(area sampling)

슈퍼 샘플링(supersampling)

  • 하나의 픽셀을 여러 개의 작은 픽셀로 분할
  • 물체 영역이 차지하는 서브픽셀의 수에 따라 픽셀 색 결정

후 필터링(postfiltering)

  • 이웃 샘플들의 가중치 평균으로 픽셀 값을 결정
반응형