문제

그레이 스케일 값 (0-255)을 RGB 값/표현으로 어떻게 변환 할 수 있습니까? Grayscale 지원이없는 것처럼 보이는 SVG 이미지에서 사용하기위한 것입니다. RGB 만 ...

참고 : 이것은 rgb-> grayscale이 아닙니다. 이미 다른 질문에서 이미 답변되었습니다. RGB를 GrayScale/Intensity로 변환합니다)

도움이 되었습니까?

해결책

빠르고 더러운 접근법은 RGB의 각 구성 요소에 대한 회색 스케일 강도를 반복하는 것입니다. 따라서 Grayscale 120이 있다면 RGB (120, 120, 120)로 변환됩니다.

효과적인 휘도는 사용중인 장치의 R, G 및 B 서브 픽셀의 실제 휘도에 달려 있기 때문에 빠르고 더럽습니다.

다른 팁

변수의 greyscale 값이 있고 0x00RRGGBB 양식으로 새 값을 생성하려면이 작업을 빠르게 수행하는 방법은 다음과 같습니다.

int rgb = grey * 0x00010101;

또는 선택한 언어와 동일합니다.

그레이 스케일을 RGB로 변환하는 것은 간단합니다. 단순히 r = g = b = 회색 값을 사용하십시오. 기본 아이디어는 (RGB 측면에서 모니터에서 볼 수 있듯이) 색상이 첨가제 시스템이라는 것입니다.

http://en.wikipedia.org/wiki/additive_color

따라서 빨간색을 녹색으로 첨가하면 노란색이 생깁니다. 해당 믹스에 동일한 양으로 파란색을 추가하면 중립적 인 색상이됩니다. [빨간색, 녹색, 파란색] = [255 255 255]가 흰색으로 생성됩니다. [0,0,0]은 검은 색을 모니터링합니다. r = g = b가 모두 동일 할 때 중간 값은 주어진 회색 수준의 명목상 중립 색상을 산출합니다.

사소한 문제는 색상을 보는 방법에 따라 다르므로 완벽하게 중립적이지 않을 수 있습니다. 이는 모니터 (또는 프린터)가 보정되는 방법에 따라 다릅니다. 이 시점에서 우리가 갈 수있는 흥미로운 색상 과학 깊이가 있습니다. 여기서 멈출 게요.

회색 규모는 모든 값이 동일한 강도를 가지고 있음을 의미합니다. 모든 채널 (RGB)을 회색 값과 동일하게 설정하면 RGB 흑백 이미지가 있습니다.

woudl은 각 픽셀에 대해 R, G 및 B를 동일한 값 (Greyscale 값)으로 설정하지 마십시오.

내 솔루션을 살펴볼 수도 있습니다 RGB8 이미지를 RGB32 이미지로 변환하는 빠른 조립 최적화 방법. 회색 채널은 다른 모든 채널에서 단순히 반복됩니다.

목적은 x86/sse를 사용하여 전환 할 수있는 금식 가능한 솔루션을 찾는 것이 었습니다.

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