[CS Fundamental] PNG 포맷에서 투명을 어떻게 표현하나요?
Alpha Blending Using OpenCV (C++ / Python) | LearnOpenCV #
1) 하얀색 바탕위에 반투명 빨간색을 올리면 무슨 색이 되나요?
2) 위 대답을 수식으로 일반화할 수 있을까요?
PNG 포맷에서 투명도는 알파 채널(Alpha channel)을 사용하여 표현됩니다.
이 알파 채널은 각 픽셀의 불투명도를 나타내며, 0%는 완전히 투명하고 100%는 완전히 불투명함을 의미합니다.
알파 값이 중간일 경우 해당 픽셀은 반투명으로 표현됩니다.
1) 하얀색 바탕 위에 반투명 빨간색을 올리면 무슨 색이 될까요?
- 반투명 빨간색이 하얀색 배경에 겹쳐지면, 이 두 색상은 혼합됩니다.
이 과정은 픽셀 단위로 알파 블렌딩(Alpha Blending)을 통해 이루어집니다.
- 예를 들어, 반투명 빨간색이 알파값 0.5 (즉, 투명도 50%)인 경우, 하얀색과 빨간색이 절반씩 혼합됩니다.
하얀색(RGB 값: 255, 255, 255)과 빨간색(RGB 값: 255, 0, 0)을 50%씩 섞으면 밝은 분홍색이 됩니다.
2) 수식으로 일반화할 수 있을까요?
알파 블렌딩은 아래와 같은 수식으로 일반화할 수 있습니다:
Cout=α×Cforeground+(1−α)×CbackgroundC_{\text{out}} = \alpha \times C_{\text{foreground}} + (1 - \alpha) \times C_{\text{background}}
- CoutC_{\text{out}}: 최종 출력 색상 (RGB 값)
- α\alpha: 전경 색상의 알파 값 (투명도) [0, 1] 범위
- CforegroundC_{\text{foreground}}: 전경 색상 (RGB 값)
- CbackgroundC_{\text{background}}: 배경 색상 (RGB 값)
예를 들어, 알파값 0.5인 빨간색(255, 0, 0)을 하얀색(255, 255, 255) 배경 위에 블렌딩하는 경우:
Cout=0.5×(255,0,0)+0.5×(255,255,255)=(255,127.5,127.5)C_{\text{out}} = 0.5 \times (255, 0, 0) + 0.5 \times (255, 255, 255) = (255, 127.5, 127.5)
- RGB 값으로 표현하면 이 색상은 밝은 분홍색이 됩니다.
3) 관련 아티클
알파 블렌딩 및 PNG의 투명성에 관한 더 깊이 있는 내용은 아래 아티클을 참고하세요: