[c++] libjpeg-turbo와 동적 범위 압축

이번에는 libjpeg-turbo를 사용하여 이미지의 동적 범위를 압축하는 방법에 대해 알아보겠습니다.

libjpeg-turbo란?

libjpeg-turbo는 JPEG 이미지를 빠르게 압축하고 해제하는 데 사용되는 라이브러리입니다. SIMD 명령어 세트를 활용하여 보다 빠른 속도를 제공합니다. 또한, libjpeg보다 더욱 빠른 JPEG 이미지 처리를 지원하며, 다양한 응용프로그램과 임베디드 시스템에서 널리 사용됩니다.

동적 범위 압축

동적 범위 또는 Dynamic Range는 이미지에서 가장 어두운 색과 가장 밝은 색 간의 차이를 나타냅니다. 동적 범위를 압축함으로써 더 넓은 범위의 명암을 배출할 수 있습니다.

libjpeg-turbo에서의 동적 범위 압축

libjpeg-turbo는 이미지를 파일로 저장할 때, 동적 범위를 압축하는 데 사용할 수 있는 여러 옵션을 제공합니다. cjpeg 또는 관련 API를 사용하여 동적 범위 압축을 설정할 수 있습니다.

struct jpeg_compress_struct cinfo;
cinfo.dct_method = JDCT_IFAST;
jpeg_set_defaults(&cinfo);
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_quality(&cinfo, 75, TRUE);
cinfo.comp_info[0].h_samp_factor = 1;
cinfo.comp_info[0].v_samp_factor = 1;
cinfo.comp_info[1].h_samp_factor = 2;
cinfo.comp_info[1].v_samp_factor = 1;
cinfo.comp_info[2].h_samp_factor = 2;
cinfo.comp_info[2].v_samp_factor = 1;
jpeg_set_colorspace(&cinfo, JCS_YCbCr);

위의 코드는 libjpeg-turbo에서의 동적 범위 압축에 대한 간단한 예시입니다.

결론

libjpeg-turbo를 사용하여 동적 범위를 압축하는 방법에 대해 알아보았습니다. 동적 범위 압축을 통해 풍부한 명암을 가진 이미지를 더욱 효과적으로 처리할 수 있습니다.

더 많은 정보는 libjpeg-turbo의 공식 문서를 참고하시기 바랍니다.

참고 문헌: