[CV] Color Image(4) - Color Adjustment and Corrections

Yeontachi·2025년 8월 6일

Computer Vision Note

목록 보기
14/47
post-thumbnail

컬러 이미지 조정과 보정은 주로 색의 정확성 향상, 시각적 품질 개선, 특정 색상 강조를 목표로 한다. 이 과정에서는 색 공간 변환, 톤 조절, 색상 균형 맞춤, 특정 색상의 강조나 제거 등이 포함된다.

Color Transformations

컬러 변환은 입력 컬러 이미지의 색 표현을 변경하거나 조정하는 과정으로, 일반적으로 색 공간 변환, 색상 강조, 톤 조정 등이 포함된다. 이 과정은 디지털 이미지 처리에서 색상의 균형을 맞추거나 특정 색상 정보를 분석할 때 필수적이다.

일반적 수식

g(x,y)=T[f(x,y)]g(x, y) = T[f(x, y)]
  • f(x,y)f(x, y) : 입력 컬러 이미지(원본 이미지)
  • g(x,y)g(x, y) : 변환된 컬러 이미지(출력 결과)
  • TT : 변환 연산자(픽셀 기반 또는 지역적 연산)
  • 변환된 픽셀마다 독립적으로 적용되거나, 공간적 이웃(neighborhood)을 고려할 수도 있다.
    CMYK 색 공간 분리(Cyan, Magenta, Yellow, Black)는 감산 혼합 모델로, 각 채널은 RGB의 보색 관계를 나타낸다. Black(K)은 전체 명암을 조절하는 요소로, 프린팅에서 잉크 절약과 선명도 향상을 위해 사용된다.

RGB 색 공간 분리(Red, Green, Blue)는 빛의 가산 혼합을 기반으로 하며, 디스플레이에서 표준적으로 사용한다. 각 채널은 해당 색상의 강도를 나타내며, 특정 색상(예: 딸기의 빨강)은 Red 채널에서 가장 밝게 표시된다.

HSI 색 공간 분리(Hue, Saturation, Intensity)에서 Hue는 색의 종류를 표현하며, Saturation은 채도를 표현한다. Intensity는 명도, RGB 값의 평균을 의미한다. 이 분리는 객체 추적, 색상 기반 이미지 분할, 화이트 밸런스 등에서 유리하다.

위 그림은 Color Transformations를 이용한 명도(Intensity) 조정 예제를 보여준다.

(a)는 Original Image, (b)는 Adjust Image로 명도를 30% 줄인 결과이다. k=0.7\to k=0.7 적용(즉, 원래 값의 70%로 축소)

그래프는, Transformation Funtions 그래프로, 색 공간별로 명도를 줄이는 방법을 나타낸다. 수식은 아래와 같다.

g(x,y)=kf(x,y)g(x, y) = kf(x, y)


R,G,B 그래프는 (0,0)에서 (1,1)까지 직선이며, 기울기는 k이다. (명도를 줄이면 기울기 < 1)

R=kR,G=kG,B=kBR' = kR, G'= kG, B'=kB

C,M,Y 그래프의 기울기 또한 k이며 y절편이 0이 아닌 (1-k)이다. 이것은 감산 혼합 모델 특성을 반영한 것으로, 출력값이 단순히 곱셈으로 줄어들면 색상이 이상해질 수 있으므로 절편 보정을 포함한다.

C=(1k)+kC,M,Y동일C' = (1-k) + kC, \,\,\,M',Y' 동일

I(Intensity) 또한 기울기 k를 가지며, H, S는 변화가 없다(기울기 = 1)

I=kII' = kI

위 그림을 통해 왜 색상 조정이나 톤 보정에서 색 공간 선택이 중요한지를 잘 보여준다. RGB에서 명도를 조절하면 전체 색상이 균일하게 변화하지만, 색상의 자연스러움은 HSI에서 더 잘 유지된다.

Color Complements

색상 보색(Complementary Colors)은 색상환에서 서로 마주보는 색을 의미한다. 보색은 한 색을 강조하거나 대조 효과를 극대화하는 데 사용되며, 영상 보정, 예술적 표현, 컬러 필터링 등 다양한 응용에 활용된다.

보색 변환의 원리

  • RGB 공간에서 보색 변환
    픽셀 값이 [0, 1]로 정규화된 경우
    R=1R,G=1G,B=1BR' = 1-R, G'=1-G, B'=1-B
    채널 값을 반전하여 색상이 반대 색으로 변환
  • HSI 공간에서 보색 변환
    Hue를 180°180\degree 이동시켜 반대 색상으로 변환
    H=(H+180°)mod360°,S=S,I=IH'=(H+180\degree)\,\,\,mod \,\,\,360\degree, \,S' = S, I' = I
    채도(S)와 명도(I)는 그대로 유지

명도(Intensity) 기울기 반전 이유
RGB 공간에서 보색 변환 공식은 아래와 같다.

R=1R,G=1G,B=1BR' = 1-R, G'=1-G, B'=1-B

이때, Intensity I는 보통 RGB 평균으로 계산된다.

I=R+G+B3I=\frac{R+G+B}{3}

위 공식에 따르면, 보색 변환 후

I=(1R)+(1G)+(1B)3=1R+G+B3I' = \frac{(1-R)+(1-G)+(1-B)}{3}=1-\frac{R+G+B}{3}

즉, 명도(Intensity)도 반전된다.

Color Slicing

Color Slicing은 이미지에서 특정 색상 범위를 강조하여 관심 있는 색을 배경과 구분하는 기법이다. 이를 통해 중요한 물체나 영역을 부각시키고, 이후 세분화된 처리(예: 객체 검출, 세그멘테이션)에 활용할 수 있다.

Color Slicing의 기본 아이디어는 관심 있는 색상 영역을 컬러 공간에서 정의하고, 그 영역 안에 포함되는 픽셀을 강조하는 것이다. 이때, 나머지 픽셀은 흐리게 처리하거나 무채색으로 변환하여 대비를 높인다. 강조된 색상 영역은 이후 마스크(mask)로 활용될 수 있어, 특정 객체만 추출하거나 추가적인 분석을 수행하는 기반이된다.

실행 원리
컬러 슬라이싱은 컬러 공간에서 특정 범위를 정의하는 방식으로 구현된다. 일반적으로 RGB와 같은 3차원 색 공간을 사용하며, 관심 영역을 나타내는 두 가지 주요 방법이 있다.

1. Hypercube 방식
관심 색상을 중심으로 하는 n차원 큐브(3D에서는 박스 형태)를 설정한다.

  • 중심 좌표 : (a1,a2,...,an)(a_1, a_2,...,a_n)(예: RGB에서 (0.7, 0.3, 0.2)
si={0.5,if rjaj>W2 for any 1jnri,otherwise,i=1,2,,ns_i = \begin{cases} 0.5, & \text{if } \left| r_j - a_j \right| > \dfrac{W}{2} \text{ for any } 1 \leq j \leq n \\ r_i, & \text{otherwise} \end{cases} ,\quad i = 1, 2, \dots, n
  • sis_i : 출력 픽셀의 i번째 채널 값(예: R, G, B)
  • rir_i : 입력 픽셀의 i번째 채널 값
  • aja_j : 관심 있는 색상 범위의 중심점(j번째 채널 값)
  • WW : 허용 폭(색상 범위)
  • nn : 채널 개수(RGB에서는 n=3)

즉, 픽셀의 각 채널 값이 rjr_j가 중심점 aja_j로부터 얼마나 떨어져 있는지 확인하고, 하나라도 범위를 벗어난 채널이 있으면, 이 픽셀은 관심 색상 범위에 포함되지 않는다.

범위를 벗어난 경우 si=0.5s_i = 0.5 즉, 해당 픽셀의 모든 채널 값을 중립값으로 설정하고(대비 강화), 관심 색상 범위 내에 있으면 원래 색상을 유지한다.

2. 구형(Spherical) 방식
큐브 대신 구 형태로 관심 영역을 정의하여 보다 자연스러운 결과를 얻는다.

si={0.5,if j=1n(rjaj)2>R02ri,otherwise,i=1,2,,ns_i = \begin{cases} 0.5, & \text{if } \displaystyle \sum_{j=1}^n (r_j - a_j)^2 > R_0^2 \\ r_i, & \text{otherwise} \end{cases} ,\quad i = 1, 2, \dots, n
  • sis_i : 출력 픽셀의 i번째 채널 값(예: R, G, B)
  • rir_i : 입력 픽셀의 i번째 채널 값
  • aja_j : 관심 있는 색상 범위의 중심점(j번째 채널 값)
  • R0R_0 : 관심 영역의 반지름(허용 거리)
  • nn : 채널 개수(RGB에서는 n=3)

거리 > R02R_0^2 \to 관심 색상 범위 밖 \to 픽셀을 중립값(0.5)으로 설정

거리 ≤ R02R_0^2 \to 범위 안 \to 원래 값 유지

즉, 관심 색상 영역을 구 형태로 정의하고, 그 안의 픽셀만 강조한다.

구 형태는 큐브 방식보다 자연스러운 강조 효과를 제공하며, 색상 공간에서 중심 색상과의 실제 거리 기반으로 판단하기 때문에 색 조합의 유사성을 더 정확하게 반영할 수 있다.

왼쪽 이미지가 Hypercube 방식, 두 번째 이미지가 Sphere 방식이다.

Tone and Color Corrections

Tone and Color Corrections는 이미지의 밝기(Brightness), 대비(Contrast), 톤 곡선(Tone Curve)을 조정하여 시각적인 품질을 개선하는 과정이다. 이 과정에서 색상 자체는 유지하면서, 명도와 채도를 조절해 세부 정보를 최대한 보존하는 것이 목표이다. 이러한 보정은 일반적으로 대화형(Interactive) 방식으로 수행되며, 사용자가 실험적으로 최적 값을 선택한다.

톤 및 색상 보정 과정에서는 색상(Hue)은 그대로 유지한 채, 주로 밝기(Intensity)와 대비(Contrast)를 조절한다.

이때 자주 사용하는 방법 중 하나는 히스토그램 기반 조정으로, 픽셀 값의 분포를 분석하여 명암 범위를 확장하거나 압축함으로써 전체적인 대비를 개선한다. 또한, 톤 매핑(Tone Mapping) 기법을 적용하면 특정 톤을 강조할 수 있으며, 지나치게 어두운 영역이나 밝은 영역에서 손실된 디테일을 복원하는 데 효과적이다.

결과적으로 이러한 보정은 이미지의 자연스러운 색조는 그대로 유지하면서도, 명암 구조를 최적화하여 정보 전달력과 시각적 선명도를 높이는 데 목적이 있다.

일반적인 처리 기법

1. Linear Intensity Scaling(선형 명도 조정)

g(x,y)=αf(x,y)+βg(x,y) = \alpha \cdot f(x,y) + \beta
  • α>1\alpha > 1 : 대비 향상
  • α<1\alpha < 1 : 대비 감소
  • β\beta : 밝기 조절

2. Histogram Equalization(히스토그램 균등화)
픽셀 값의 누적 분포 함수를 사용하여 명암 대비를 자동으로 조절한다. 색상 공간 변환(HIS or HSV) 후 Intensity 채널에 적용하면 색상 왜곡을 최소화할 수 있다.

3. Gamma Correction(감마 보정)

s=crγs = c \cdot r^{\gamma}
  • γ<1\gamma < 1 : 어두운 영역 강조(사진 밝게)
  • γ>1\gamma > 1 : 밝은 영역 억제(사진 어둡게)

색상 유지 조건

RGB 공간에서 직접 보정 시 색상이 왜곡될 가능성이 있다. 그러므로 HSI 색 공간에서 Intensity(I) 채널만 조절하는 것이 바람직하다.

I=kI(H,S그대로유지)I' = k \cdot I\,\,\,(H,S 그대로 유지)

Examples

그래프를 보면(x축: 입력값, 명도 y축: 출력 값, 보정된 명도) S자 형태의 곡선을 확인할 수 있다. 이는 중간 톤 영역의 기울기를 높여 대비를 강화하여, 보정된 이미지가 더 깊이감 있는 색상과 선명한 디테일을 확보함을 확인할 수 있다.

추가적으로, 너무 어두운 부분과 너무 밝은 부분에서는 변화가 완만하게 설계가 됨을 볼 수 있는데, 어두운 영역에서 변화가 급격하면, 세부 구조가 검게 뭉개져서 디테일이 사라지고, 밝은 영역에서의 변화가 크면, 밝은 부분이 모두 흰색으로 날아가면서 디테일이 손실된다. 즉, 양 끝단 0과 1부근에서 곡선을 완만하게 만들어 세부 정보 손실을 방지한다.

위 그림은 톤 보정(Tone Correction)에서 밝은 이미지(High-Key Image)를 어떻게 개선하는지를 보여준다.

밝은 영역이 많은 이미지는 색상 디테일이 손실되기 쉬우므로, 감마 값(γ>1\gamma > 1)을 적용해 톤 곡선을 위에서 눌러주면, 밝은 영역(하이라이트)은 변화가 완만해져 디테일이 유지되며, 중간 톤과 어두운 영역은 더 어둡게 하여 전체 대비를 강화시킨다.

결과적으로 색상은 그대로 유지하면서, 밝기의 다이내믹 레인지가 확대되어 깊이감 있는 이미지가 된다.

다음, 위 그림은 톤 보정(Tonal Correction)을 어두운 이미지(Low-Key Image)에 적용한 예시이다.

어두운 이미지(Low-Key Image)는 어두운 영역이 대부분을 차지하므로, 감마 보정(γ<1\gamma < 1)을 사용하여 밝은 쪽으로 톤을 끌어올린다.

조정 이후 어두운 부분은 더 밝게 변화하여 숨겨진 디테일이 복원되고, 밝은 부분은 변화가 완만하여 하이라이트 영역이 유지된다.

결과적으로 이미지가 더 선명해지고 깊이감이 생긴다.(Hue는 변화 없음)


위 이미지는 CMYK 색 공간에서 색상 밸런스(Color Balance) 보정을 설명하는 예시이다. 여기서는 각 채널의 강약을 조절하여 색 왜곡을 보정하는 과정을 시각적으로 보여준다.

  • Original/Corrected: 첫 번째는 원본 이미지(또는 보정 기준 이미지).

  • 다양한 변형 예시:

    • Heavy in Black: 검정(K) 채널 값이 과도 → 이미지 전체가 어둡고 명암 대비가 낮음.
    • Weak in Black: 검정(K) 부족 → 이미지가 밝고 색이 약해짐.
    • Heavy in Cyan: 이미지가 청록색으로 치우침.
    • Weak in Cyan: 청록 부족 → 반대색(적색) 계열이 강해짐.
    • Heavy in Magenta: 자홍색이 과도 → 붉은 톤 강해짐.
    • Weak in Magenta: 자홍 부족 → 녹색 계열 강조.
    • Heavy in Yellow: 노란색 과다 → 이미지가 따뜻한 톤.
    • Weak in Yellow: 노란색 부족 → 이미지가 차가운 톤.

CMYK 밸런스 조정은 이미지 전체의 색조(Hue) 변화 없이 색상 균형을 맞추는 작업이다. 각 채널을 독립적으로 조절이 가능하며 색상 왜곡이 발생했을 때, 부족한 색을 보충하거나 과도한 색을 줄이는 원리로 동작한다. 인쇄용 이미지 최적화에 적합하다.

위 이미지는 HSI 색 공간에서의 히스토그램 균등화와 채도 조정 과정을 보여준다. RGB에서 직접 히스토그램 균등화를 적용하면 색상이 왜곡될 수 있기 때문에, HSI 색 공간에서 Intensity(I) 채널만 보정하는 것이 이상적이다.

HSI에서 I만 보정하면 색상(H)와 채도(S)는 그대로 유지되어 원본 색조를 보존 가능하며, 히스토그램 균등화 후, 채도(S)를 약간 향상시켜 시각적으로 더 생생한 이미지 제공이 가능하다.

References

Images from Rafael C. Gonzalez and Richard E.
Wood, Digital Image Processing, 2nd Edition.

profile
기초를 다지는 중입니다.📚🧑‍💻

0개의 댓글