[컴퓨터비전] Data Acquisition with Color

나경·2024년 10월 29일
1

The primary Colors of Light

The primary Colors of Light

  • 빨강, 초록, 파랑은 빛의 기본 색상
  • 모든 색상은 R,G,B의 조합으로 나타낼 수 있다
  • 더 많은 색이 더해질수록 훨씬 더 밝아진다
  • secondary colors: 노랑, 자홍, 청록

Human Response to R,G,B

Human Response to R,G,B 빨간색, 초록색, 파란색 시신경세포가 빛을 흡수하는데, 특정 색상을 형성하는 데에 필요한 빨간색, 초록색, 파란색의 양을 나타내고 있다

Tristimulus values

특정 값을 형성하는데 필요한 빨간색, 초록색, 파란색의 양을 의미한다

x=X/(X+Y+Z)
y=X/(X+Y+Z)
z=X/(X+Y+Z)=1-x-y

CIE Color Space

  • 둥근 테두리 부분은 순색(하양, 검정, 잿빛 따위가 섞이지 않은 빛깔)을 나타낸다
  • 모든 점은 스펙트럼 색상의 혼합으로 나타내고 경계가 없다

Color Gamut(Gamut)

장치가 나타내는 색상의 범위이다
만약 8 bits quantization을 사용한다면

R은 RGB=(255,0,0)
G은 RGB=(0,255,0)
B은 RGB=(0,0,255)

Color Gamut 핑크색 부분은 빛으로 만들 수 있는 모든 색을 나타내고, 파란색 부분은 디바이스에서 볼 수 있는 색의 범위이다
파란색 부분이 클수록 자연의 모든 색을 더 잘 담을 수 있다
Color Gamut
흔히 좋은 디스플레이라고 말하는 것은 Gamut이 크다
또한 이 사진에서 알 수 있듯이 어도비의 색상과 휴대폰 화면에서의 색상이 다른 이유 또한 Gamut이 다르기 때문이다

Color temperature

Color temperature

  • 켈빈으로 측정된 온도는 비반사체(흑체)에서 방출되는 빛의 색상에 대한 것입니다.
  • 실제로 금속을 태우고 켈빈으로 금속의 온도를 측정합니다.
  • 색온도 눈금은 온도에 관계없이 다른 광원에서 방출되는 빛의 색상을 분류하는 데 사용됩니다.
    Color temperature

white Balance

  • 광원에 의해 왜곡된 흰색에서 진짜 흰색으로 만든다
  • Sampling과 Quantization의 과정으로 이루어진다
    white balance

Image Sensor with Color Filter Arrary

Image Sensor with Color Filter Arrary

  • 각 픽셀마다 color filter가 센서에 부착된다
  • 빨간색은 red color filter만 통과할 수 있다
  • 초록색은 green color filter만 통과할 수 있다
  • 파란색은 blue color filter만 통과할 수 있다
    color filter

Bayer Pattern

Bayer Pattern
Color Filter + Sampling + Quantization 후에 위의 이미지를 확인할 수 있다 이를 Bayer Pattern이라고 부른다

Demosaicing

DemosaicingBayer Pattern에서는 하나의 픽셀마다 R, G, B 중 하나만 가진다 따라서 color image를 나타낼 수 없다 따라서 demosaicing을 통해서 bayer pattern에서 각 픽셀에 대해서 R, G, B를 생성한다

Bilinear Interpolation

새롭게 만들어지는 화소의 R, G, B의 성분은 주변의 가장 가까운 화소들의 가중치를 곱한 값으로 할당하는 방법이다
Bilinear Interpolation위의 사진에서 7번째 자리에는 G만 존재하기 때문에 color image를 위해서는 R과 B가 필요하다

R7 = (R2 + R12) / 2
B7 = (B6 + B8) / 2

같은 방법으로 계산해보면 8번째 자리에 필요한 값도 쉽게 구할 수 있다

R8 = (R2 + R4 + R12 + R14) / 4
G8 = (G3 + G7 + G9 + G13) / 4

이 방법은 계산식을 보면 알 수 있듯이 간단하고 계산이 거의 필요하지 않는다 하지만 아래와 같은 artifact가 발생한다는 단점이 있다
Bilinear Interpolation

Color Format

Demosaicing을 통해서 RGB 형태의 이미지를 얻는다 일반적으로 8 bits quantization을 사용하기 때문에 RGB888이라고 부른다 다른 컬러의 format을 RGB format으로 변환할 수 있고 이 때 정보의 손실은 일어나지 않는다
Color Format

YCbCr

인간의 눈은 밝기에 더 민감하고 색상 차이에는 덜 민감하다

YCbCr은 색상을 광도(Y)와 색상 차이(Cb, Cr)로 변환한다 Cb는 청색 색차를 의미하고 Cr은 적색 색차를 의미한다 청색 색차는 파란색에서 Y를 뺀 값이고 적색 색차는 빨간색에서 Y를 뺀 값이다 즉 Cb는 파란색이 강한 정도를 나타내고 Cr은 빨간색이 강한 정도를 나타낸다
YCbCr위에서 말했듯이 Y는 광도(밝기)를 나타내기 때문에 Y성분만 사용하면 이미지가 흑백이 된다

RGB -> YCbCr

Y = 0.299R + 0.587G + 0.114B
Cb = -0.169R - 0.331G + 0.500B
Cr = 0.500R - 0.419G - 0.0813B

YCbCr -> RGB

R = 1.000Y + 1.402Cr + 0.000Cb
G = 1.000Y + 0.714Cr - 0.3444Cb
B = 1.000Y + 0.000Cr + 1.772Cb

Chroma Sampling 원리

Chroma 원리 YCbCr 4:4:4의 의미를 먼저 알아보자
4:4:4에서 맨 앞의 4는 고정값으로, 가로 픽셀 4개를 의미한다
두번째 4는 첫 번째 행의 숫자다 만약 2가 됨다면 파란색 픽셀과 진보라 픽셀은 무시하고 노란색 픽셀과 연보라색 픽셀을 이용해서 subsampling한다
세 번째 4는 두 번째 행의 숫자다 만약 2가 되면 빨간색 픽셀과 분홍색 픽셀을 이용한다 민약 0이라면 아무 픽셀도 선택하지 않는다는 의미로, 즉 샘플링하지 않는다는 의미가 된다

위의 설명을 바탕으로 이미지를 자세히 보면 YCbCr 4:2:2로 subsampling하게 되면 결과는 이렇게 된다 여기서 4:2:0으로 subsampling하면 결과는 이렇게 된다
따라서 결과적으로 YCbCr 4:4:4를 4:2:0으로 subsampling하면 아래의 결과가 나온다

YCbCr 4:4:4

YCbCr 4:4:4 Y, Cb, Cr 성분을 1:1:1 배율로 샘플링한 것이다

YCbCr 4:2:2

YCbCr 4:2:2Cb, Cr 성분을 1:2 배율로 샘플링한 것이다

YCbCr 4:2:0

YCbCr 4:2:0Cb, Cr 성분을 1:4 배율로 샘플링한 것이다

HSI

HSI
HSI에서 H는 Hue(색상), S는 Saturation(채도), I는 Intensity를 의미한다

0개의 댓글