2013-06-12 4 views
1

은 RGB 화소의 지각하는 밝기를 변경하는 기준 알고리즘이란. (0.299 * R + 0.587 * G + 0.114 * B) ....) 나는 RGB (120, 33, 213)를 가지고있는 경우, 지각으로 79.533을 얻습니다. 밝기를 조정할 수는 있지만 동일한 픽셀의 밝기를 80까지 올릴 수있는 방법이 없습니다. 가능한 많은 값이 있기 때문입니다.인식 감도를 변경하는 기준 알고리즘?

나는 잠시 동안 솔루션을 검색 한하지만 그것을 얻을 수 없었다. 이 같은 밝기를 계산하기 위해 몇 가지 알고리즘은 다음과 같습니다

Formula to determine brightness of RGB color

는 그러나이 알고리즘은 되돌릴 수 없습니다.

또한, 나는 누군가가 저를 해결하지 않는 한 올바른 방법으로 HSL 또는 HSV 사용을 고려하고 있지 않다?

편집 : 나는 크게 색상을 유지하면서 밝기를 제어 할 수 있어요하지만 더 나은 방법이 있다면 내가 궁금 HSL 컬러 공간을 사용.

고맙다 -

답변

2

당신은, 당신은 단지 원하는 휘도 비율을 파악해야 휘도 방정식을 반대 할 필요가 없습니다. 귀하의 예제에서

:

//target luminance = 80 

srcR = 120 
srcG = 33 
srcB = 213 
srcLum = 79.533 

destLum = 80 
ratio = (destLum/srcLum) = 1.0058717... 

destR = (srcR * ratio) = 120.705 
destG = (srcG * ratio) = 33.194 
destB = (srcB * ratio) = 214.251 
당신은 INT 값을 얻을 수를 반올림하는 방법을 결정해야 할 것이다, 그러나 그것은 일반적인 생각

. 그러나 79.5에서 80까지는 변화가별로 없으므로 많이 볼 수 없습니다. 40으로 가면 RGB (60, 17,107)가됩니다.

마크 랜섬 (Mark Ransom)이 지적한 것처럼, 일단 가치 중 하나가 255에 도달하면 선택해야합니다. 그 지점을 지나면 휘도를 높이려면 색조 또는 채도 (또는 둘 다)를 변경해야합니다. 그의 대답 here은 두 사람 사이의 차이점을 잘 보여준다. RGB 값 중 하나가 255 이상 때까지

+0

이는 다른 전략이 필요합니다, 잘 작동합니다. [이 답변] (http://stackoverflow.com/a/141943/5987)에서 도움을 얻을 수도 있지만, 다른 가중치에 대한 조정이 필요합니다. –

+0

좋은 점은 색조 나 채도가 그 지점에서 변경되어야한다는 것입니다. 편집 됨. – Geobits

+0

나는 불행히도 RGB를 매우 비합리적으로 작업 할 때 그 비율로 작업 할 때 그렇게 노력했다. 이 방법은 밝기에 대해서는 올바르게 작동하지만이 방법을 사용하면 채도 나 색조가 변하는 색상이 느슨해집니다. 나는이 옵션을 버렸고 다음 알고리즘을 사용하여 RGB에서 HSL로 변환하여 사용했습니다 : 1 - Translate RGB -> HSL 2 - L을 원하는 값으로 변경하십시오 3 - HSL -> RGB – mathsRuinedme

관련 문제