Subject: [21] What if I need more than 8-bit precision?

Baseline JPEG stores images with 8 bits per color sample, in other words

24 bits per pixel for RGB images
8 bits/pixel for grayscale,
32 bits/pixel for CMYK, etc.

There is an extension that stores 12 bits/sample for applications that need higher accuracy.
Medical images, for example, are often 12-bit grayscale.  The 12-bit extension is not very widely supported,
however.  One package that does support it is the free IJG source code (see part 2, item 15).

For lossless JPEG, the standard permits any data precision between 2 and 16 bits per sample,
but high-precision lossless JPEG is even less widely supported than high-precision lossy JPEG.
The Stanford PVRG codec (see part 2, item 15) reportedly supports up to 16 bits/sample for lossless JPEG.

[링크 :]


struct jpeg_decompress_struct {
  JDIMENSION image_width;    /* nominal image width (from SOF marker) */
  JDIMENSION image_height;    /* nominal image height */
  int num_components;        /* # of color components in JPEG image */
  J_COLOR_SPACE out_color_space; /* colorspace for output */
  UINT16 X_density;        /* Horizontal pixel density */
  UINT16 Y_density;        /* Vertical pixel density */

typedef enum {
    JCS_UNKNOWN,        /* error/unspecified */
    JCS_GRAYSCALE,        /* monochrome */
    JCS_RGB,        /* red/green/blue */
    JCS_YCbCr,        /* Y/Cb/Cr (also known as YUV) */
    JCS_CMYK,        /* C/M/Y/K */
    JCS_YCCK        /* Y/Cb/Cr/K */

순서는 조금 뒤바뀌지만, 윈도우에서 출력되는 데이터는 위의 6개로 거의 표기가 가능하다.
Posted by 구차니

댓글을 달아 주세요

  1. 근데 libjpeg에서 읽으면 메모리에 저장된 놈은 걍 RGB 구조로 만들어주지 않나요?
    jpeg_color_space는 JCS_YCbCr이라도
    out_color_space는 언제나 JCS_RGB인 것 같더군요.

    (표현이 애매하지만, 질문입니다. 이거 딱 하루밖에 안 쓰고 하나 만들었어니 어색... ㅠ.ㅠ)

    2009.09.03 02:33 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • jconfig.h 파일이었던거 같은데..
      거기 보면은 RGB로 할지 BGR로 할지설정이 있고, 기본값은 BGR이었던것으로 기억합니다(jpeg6b 기준)

      그리고 그러한 설정값들은
      jpeg_start_decompress 이전에 jpeg_decompress_struct 구조체에 설정을 해주어야 합니다.

      2009.09.03 09:25 신고 [ ADDR : EDIT/ DEL ]
  2. было полезно прочесть, thanks

    2013.05.14 00:13 신고 [ ADDR : EDIT/ DEL : REPLY ]