2012-01-18 3 views
3

두 개의 RGB 이미지를 서로 다른 크기로 결합하는 중, 서로 결합하면서 크기가 작아서 크기가 더 큰 두 개를 더 크게 표시하고 싶습니다. 배경, 시스루처럼. 어떤 처리를해야합니까? 지금 당장 .. 이미지를 병합하는 것은 픽셀을 대체하기 만하면됩니다. 이 투명성을 어떻게 달성 할 수 있습니까? 나는 C++을 사용하고있다.RGB 픽셀 투명도

+6

당신의 문제? – PeterT

+0

이미지에 가중치를 주려고 했습니까? 작은 이미지 * 0.5 + 큰 이미지 * 1.0을 전체 무게로 나눈다면 당신은 투명 이미지로 끝날 수도 있습니다. – Giel

+0

찾고있는 용어는 알파 블렌딩입니다. 색상 (RGB)의 각 채널은 각 픽셀의 알파 채널 비율에 따라 비례 적으로 혼합됩니다. –

답변

2

주석에서 언급했듯이 두 이미지를 혼합하는 기본 공식은 newColor = ColorTop * alpha + ColorBottom * (1-alpha)입니다.

일부 이미지는 픽셀 당 알파 값을 포함하지만 간략한 설명에서 관심있는 경우처럼 들리지는 않습니다. 전체 상단 이미지에 일정한 투명도를 적용하기 만하면됩니다. 의 당신은 예를 들어 33 %의 투명성을 원하는 가정 해 보자 : 그것은`newColor는 = ColorTop * 알파 + ColorBottom * (1 - 알파)`, 알파는 0과 1 사이의 불투명 값이고 무엇이 정확하게 글쎄 기본적으로

alpha = 0.33 
Rnew = (Rtop * alpha) + (Rbottom * (1.0 - alpha)) 
Gnew = (Gtop * alpha) + (Gbottom * (1.0 - alpha)) 
Bnew = (Btop * alpha) + (Bbottom * (1.0 - alpha)) 
+0

정답을 보내 주셔서 감사합니다. 정확하게 제가 찾고 있던 것이 었습니다. – AlexandruC