2010-03-03 3 views
3

프레임 그래버로 채워지는 동안 알파 채널을 사용하지 않고 프레임 그래버에서 RGBA (32 비트) 출력이 있다고 가정하면 RGB (24 비트) 로의 효과적인 변환 방법이 있습니까? ?이미지 변환 : RGBA에서 RGB

5 메가 픽셀 스트리밍 이미지를 처리 ​​중이므로 속도도 중요합니다. 알파 채널의 데이터는 삭제 될 수 있습니다.

+0

정확히 * do * 의미합니까? 24 비트 RGB 구현은 32 비트를 사용하고 알파 채널을 무시하므로 변경할 필요가 없지만 알파 채널을 삭제하려는 경우에만 가능합니다. 소스 코드에서 사용하지 않을 경우 ** – aviraldg

+0

저는 회사의 하드웨어 추상화 레이어를 작성하고 있습니다. 데이터 소비자는 24 비트 RGB 만 사용하고이를 수정하는 것이 우리가 원했던 마지막 작업입니다. 그래서 나는 다른 24bit rgb 버퍼를 만들고 그 결과를 그 안에 넣을 수있는 옵션이 남아 있습니다. – YeenFei

+0

@yeenfai : 좋아요, 하드웨어마다 다를 수 있습니다 ... – aviraldg

답변

2

데이터를 복사하고 사용되지 않은 알파 바이트는 건너 뜁니다.

속도가 중요한 경우 SSE 또는 MMX를 사용하고 기본 제공 비트 셔플 링 지침을 사용할 수 있습니다. 보통 보통 C 코드보다 약간 빠릅니다.

100 메가 픽셀에서 그렇게하지 않는 한 5 메가 픽셀은 많은 양의 데이터처럼 들리지 않습니다.

3

RGB 바이트를 복사하고 알파 채널 (1 바이트)을 버리기 만하면됩니다. 가능한 최적화는 하드웨어에 따라 다릅니다. 예를 들어 Intel은 IPP library에 특별한 색상 변환 기능을 가지고 있습니다.

+0

그래, 그냥 알파 비트를 건너 뛰고 나머지는 복사하십시오. 하드웨어로 작업하고 있다면 내부 버퍼가있을 것이므로 사용하십시오. – aviraldg

관련 문제