2013-04-22 3 views
1

이미지의 밝기와 대비를 조정하려고합니다. 나는 HSL/HSV에서 RGB 로의 변환을 위해 wiki article을보고 다시 조정 및 변환했지만 정말 이상한 출력을 생성합니다. 그래서 지금은 other examples을보고 있는데 잘 작동하는 것 같습니다. 유일한 문제는 어떻게 밝기와 대비를 동시에 조정할 수 있습니까?이미지 처리 - 밝기 및 대비

그래서 RGB 100 100 100이라고하면 밝기를 2 배로 조정하고 반으로 조정하려면 2와 0.5를 사용하고 싶습니다. 나는 어떻게 그것에 대해 갈 것인가? 두 번째 링크에 따르면 밝기를 위해 모든 RGB 값에 100을 더한 다음이 새로운 RGB 값을 대비 공식에 연결합니다.

누구든지 아이디어가 있습니까?

P.S - 이것은 SDL 및 원시 RGB 값으로 작업하는 C입니다.

+0

이상한 결과는 무엇입니까? – LtWorf

+0

8 비트 색상 (Uint8)을 사용하고 있기 때문에 색상이 실제로 꺼져 있습니다. – Travv92

+0

정상이어야하지만 거기에 몇 가지 계산이 있기 때문에 당신은 부동 소수점을 사용해야 변환에 대한 추측, 나는 몇 가지 부문이 될거라 기대합니까? – LtWorf

답변

0

이 질문에 대한 답변이 확실하지 않지만 일반적으로 * n * 비트 색상 팔레트를 사용하거나 8 비트를 3 개의 빨간색, 3 개의 녹색, 2 개의 파란색으로 나누는 8 비트 색상 그림을 사용하고 있습니다.

팔레트를 사용한다고 가정하면 조작에 따라 색상이 변경되므로 SDL_SetPalette으로 전화해야 할 수 있습니다.

3/3/2 비트로 분할하는 경우, 빨간색에 8 개의 개별 값, 녹색에 8 개의 개별 값, 파란색에 4 개의 개별 값이 있다는 것을 명심하십시오. 이 경우 색상의 변화가 이상하게 보일 수 있습니다.

소스가 8 비트 인 경우로드 한 후 24/32 비트로 변환하는 것이 좋습니다.

0

저는 HSV와 같은 공간에서 일하고 싶습니다. 특히 가치 (V)에 관심이 있습니다. RGB에서 HSV/HSL로 변환하는 수식에 대해서는이 링크를 참조하십시오. 코드는 자바 스크립트하지만 휘도 (Y)와 루마 (Y ') 내가 보통 휘도 다음 공식을 사용하는 것입니다 그것은 고려 C. http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c

또 다른 한가지로 변환하는 초등학교입니다. V, Y, 또는 Y를 ' http://en.wikipedia.org/wiki/Luminance_%28relative%29

Y = 0.2126 R + 0.7152 G + 0.0722 B 

내가 사용하는 것이 가장 좋습니다 모르겠어요. Wiki는 "밝기 또는 가치 차원에 대한 정의는 덜 명확합니다. 표현의 목적과 목표에 따라 몇 가지 가능성이 있습니다." http://en.wikipedia.org/wiki/HSL_and_HSV#Lightness

저는 Y를 사용했습니다. Y와 Y '의 차이는 감마 보정 때문입니다. 당신이 그것을 적절히 설명하는 한, 나는 당신도 그 중 하나를 사용할 수 있다고 생각합니다. 그러나 아마도 당신은 당신의 콘트라스트와 밝기에 V를 사용할 수 있습니다.

마지막으로 감마 보정을 고려해야합니다.

편집 : 프로세스가 어떻게 진행될 것이라고 생각하는지 요약 해 드리겠습니다.

  1. 변환 색성분 (V를 다음 색 (비선형) 즉 sRGB 경우
  2. 플로트 HSV
  3. -
  4. 변환 RGB
  5. 스케일 값 (선형) RGB로 변환 할)을 눌러 밝기를 변경하십시오. 대비를 위해 채도 (S)를 변경하십시오.
  6. RGB로 변환
  7. 필요한 경우 RGB를 sRGB로 변환하십시오.
  8. 색상 구성 요소를 다시 [0,255] (으)로 변환합니다.
관련 문제