2010-01-08 2 views
1

기본적으로 이미지를 색조로 표현할 수없는 컨텍스트가 있습니다. 그러나 알파 값을 변경할 수는 있습니다. 몇 가지 실험을 통해 특정 알파 값을 사용하여 이미지의 빨강, 파랑 및 녹색 버전을 겹쳐서 다양한 색상을 만들 수 있음을 발견했습니다. 그러나,이 방법을 통해 진정한 RGB 표현을 달성 할 수 있는지 궁금합니다. 그렇다면 RGB 값을 빨강, 파랑 및 녹색 레이어의 다른 알파 값으로 변환하는 공식은 무엇입니까?알파는 빨강, 파랑 및 녹색 이미지를 블렌딩하여 모든 RGB 값으로 색조가 지정된 이미지를 생성합니까?

답변

3

알파 조합의 기본 "식"이다

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

는 실제로 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)과 계층 2는 계층 3 녹색 및 파란색 인 경우 얻을 :

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

흰색 픽셀의 경우 가능한 모든 색상을 사용할 수 있습니다. 검은 색 픽셀의 경우 검정색 이외에는 아무것도 할 수 없습니다. 다른 픽셀의 경우 R, G 및 B 값에 의해 제한됩니다.

현재 색상이 (R, G, B) 인 픽셀에서 (Rd, Gd, Bd) 당신이 선택해야 할 것입니다 :

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

문제는 알파는 일반적으로 단지 0과 1 사이가 될 수있다 따라서, 예를 들어, RD 경우> R은 당신이 할 수있는 일은 없다.

블렌딩 기능을 제어 할 수 있으면 더 잘 할 수 있습니다 (예 : Photoshop).

+1

그래서이 수식을 사용하면 달성하고자하는 단일 RGB 값에서 alpha1, alpha2 및 alpha3을 어떻게 유도 할 수 있습니까? R = 0xAA이면 alpha1 = 0xAA/0xFF입니까? – Chris

+0

내 대답을 편집했습니다. 좋은 대답이라고 생각하시면 upvoting/checking을 고려하십시오. –

+0

저는 포토샵에서 서로 위에 레이어 3 원을 실험하고 값을 연결합니다. 원은 r : 0xff0000 g : 0x00ff00 b : 0x0000ff 색으로 지정됩니다. 색 값 0xaa5588을 얻으려면 수식에 .69, .32, .78의 알파 값이 각각 지정됩니다. 그러나 이러한 레이어는 검정색 또는 흰색 배경에 상관없이 적절한 색을 생성하지 않습니다. 이것은 본질적으로 달성하려는 시나리오입니다.나는 또한 3 개의 목표 값 중 가장 낮은 값 (0x55)을 빼고 0xFF 이상의 새로운 값을 사용해 보았습니다. 이견있는 사람? – Chris

0

나는 당신을 올바르게 이해하는 한 가능하지 않다고 생각합니다.

특정 픽셀의 경우 이미지의 빨간색 값이 0.5라고하면 0.5와 같은 값을 만들기 위해 (일반) [0,1] 범위의 알파와 결합 할 수 있지만 당신은 위에 갈 수 없다. 0.6 정도를 출력값으로합니다.

0

혼합 된 3 개의 레이어를 만들려는 경우 원래 이미지에 추가 할 수 있습니다. 다음은 어려운 부분을 처리하기 위해 Paint Shop Pro에서 함수를 호출하는 Python 스크립트에 대한 링크입니다. 당신보다 자세한 내용이 필요한 경우

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

는 코멘트를 남겨 내가 나중에 기입하려고합니다.

관련 문제