알파가 빨간색, 파란색 및 녹색 이미지를 혼합하여 RGB 값에 착색 된 이미지를 생성합니까?

StackOverflow https://stackoverflow.com/questions/2030471

문제

기본적으로 이미지를 프로그래밍 할 수없는 컨텍스트가 있지만 알파 값을 변경할 수 있습니다. 약간의 실험을 통해 특정 알파 값으로 이미지의 빨간색, 파란색 및 녹색 버전을 넓어 다양한 색상을 생성 할 수 있음을 발견했습니다. 그러나이 방법을 통해 진정한 RGB 표현을 달성 할 수 있는지 궁금합니다. 그렇다면 RGB 값을 빨간색, 파란색 및 녹색 층의 다른 알파 값으로 변환하기위한 공식은 무엇입니까?

도움이 되었습니까?

해결책

알파 조합의 기본 "방정식"은 다음과 같습니다.

alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)

알파가있는 3 개의 레이어가 있으면 실제로 4 개의 레이어 (4 번째 층은 검은 색)를 결합하여 최종 색상은 다음과 같습니다.

alpha1 * (R1,G1,B1) + (1-alpha1) * ( 
   alpha2 * (R2,G2,B2) + (1-alpha2) * (
      alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0) ) )

각 층에 동일한 이미지가 있고 Layer1은 빨간색 채널 (G1 = B1 = 0)이고 Layer2는 녹색이고 Layer3은 파란색입니다.

(alpha1 * R, (1-alpha1)*alpha2 * G, (1-alpha1)*(1-alpha2)*alpha3 * B)

흰색 픽셀의 경우 가능한 색상을 수행 할 수 있습니다. 검은 색 픽셀의 경우 검은 색 외에는 아무것도 할 수 없습니다. 다른 픽셀의 경우 R, G 및 B의 값으로 제한됩니다.

현재 색상이 (r, g, b) 인 픽셀에서 달성하고 싶다고 가정 해 봅시다.

alpha1 = Rd/R
alpha2 = Gd/(G*(1-alpha1))
alpha3 = Bd/(B*(1-alpha1)*(1-alpha2))

문제는 알파가 일반적으로 0과 1 사이에있을 수 있다는 것입니다.

블렌딩 함수 (예 : Photoshop)를 제어 할 수 있다면 더 잘할 수 있습니다.

다른 팁

내가 당신을 올바르게 이해한다면 그것이 가능하다고 생각하지 않습니다.

특정 픽셀의 경우 이미지의 빨간색 값이 0.5 인 경우 (일반) 범위의 알파와 결합하여 [0,1]를 0.5까지 포함 할 수는 없지만 0.5를 포함 할 수는 없습니다. 예를 들어 0.6 정도를 출력 값으로 얻으려면 위로 이동하십시오.

함께 혼합 된 3 개의 레이어를 원래 이미지에 추가하려는 경우 가능합니다. 다음은 Paint Shop Pro의 기능을 호출하여 하드 부품을 수행하는 Python 스크립트에 대한 링크입니다.

http://pixelnook.home.comcast.net/~pixelnook/splittorgb.htm

그보다 더 자세한 내용이 필요한 경우 의견을 남겨 주시면 나중에 작성하려고합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top