← Documents Documentation/userspace-api/media/v4l/colorspaces-details.rst GitHub 원문 ↗

Linux 6.18.37 · Userspace API / Media / V4L

색공간 상세 설명

SMPTE 170M, Rec. 709, sRGB, opRGB, BT.2020, DCI-P3, 구형 방송 색공간, JPEG와 SMPTE 2084 PQ의 색도·전달 함수·Y'CbCr 수식을 설명합니다.

Source pathDocumentation/userspace-api/media/v4l/colorspaces-details.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

colorspaces-details.rst:1-775

V4L2 색공간 식별자가 실제로 뜻하는 색도 좌표, 전달 함수, Y'CbCr 행렬과 양자화 관례를 표준별로 풀어 쓴 문서입니다. 색공간 이름만 비교하지 않고 기본 V4L2 필드와 예외, 확장 색역과 HDR 절대 휘도까지 함께 확인해야 정확한 변환이 가능합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3 ********************************
4 Detailed Colorspace Descriptions
5 ********************************
6
7
8 .. _col-smpte-170m:
9
10 Colorspace SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)
11 =================================================
12
13 The :ref:`smpte170m` standard defines the colorspace used by NTSC and
14 PAL and by SDTV in general. The default transfer function is
15 ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
16 ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
17 range. The chromaticities of the primary colors and the white reference
18 are:
19
20 .. flat-table:: SMPTE 170M Chromaticities
21 :header-rows: 1
22 :stub-columns: 0
23 :widths: 1 1 2
24
25 * - Color
26 - x
27 - y
28 * - Red
29 - 0.630
30 - 0.340
31 * - Green
32 - 0.310
33 - 0.595
34 * - Blue
35 - 0.155
36 - 0.070
37 * - White Reference (D65)
38 - 0.3127
39 - 0.3290
40
41
42 The red, green and blue chromaticities are also often referred to as the
43 SMPTE C set, so this colorspace is sometimes called SMPTE C as well.
44
45 The transfer function defined for SMPTE 170M is the same as the one
46 defined in Rec. 709.
47
48 .. math::
49
50 L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le-0.018
51
52 L' = 4.5L \text{, for } -0.018 < L < 0.018
53
54 L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018
55
56 Inverse Transfer function:
57
58 .. math::
59
60 L = -\left( \frac{L' - 0.099}{-1.099} \right) ^{\frac{1}{0.45}} \text{, for } L' \le -0.081
61
62 L = \frac{L'}{4.5} \text{, for } -0.081 < L' < 0.081
63
64 L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081
65
66 The luminance (Y') and color difference (Cb and Cr) are obtained with
67 the following ``V4L2_YCBCR_ENC_601`` encoding:
68
69 .. math::
70
71 Y' = 0.2990R' + 0.5870G' + 0.1140B'
72
73 Cb = -0.1687R' - 0.3313G' + 0.5B'
74
75 Cr = 0.5R' - 0.4187G' - 0.0813B'
76
77 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
78 [-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in
79 the :ref:`itu601` standard and this colorspace is sometimes called
80 BT.601 as well, even though BT.601 does not mention any color primaries.
81
82 The default quantization is limited range, but full range is possible
83 although rarely seen.
84
85
86 .. _col-rec709:
87
88 Colorspace Rec. 709 (V4L2_COLORSPACE_REC709)
89 ============================================
90
91 The :ref:`itu709` standard defines the colorspace used by HDTV in
92 general. The default transfer function is ``V4L2_XFER_FUNC_709``. The
93 default Y'CbCr encoding is ``V4L2_YCBCR_ENC_709``. The default Y'CbCr
94 quantization is limited range. The chromaticities of the primary colors
95 and the white reference are:
96
97 .. flat-table:: Rec. 709 Chromaticities
98 :header-rows: 1
99 :stub-columns: 0
100 :widths: 1 1 2
101
102 * - Color
103 - x
104 - y
105 * - Red
106 - 0.640
107 - 0.330
108 * - Green
109 - 0.300
110 - 0.600
111 * - Blue
112 - 0.150
113 - 0.060
114 * - White Reference (D65)
115 - 0.3127
116 - 0.3290
117
118
119 The full name of this standard is Rec. ITU-R BT.709-5.
120
121 Transfer function. Normally L is in the range [0…1], but for the
122 extended gamut xvYCC encoding values outside that range are allowed.
123
124 .. math::
125
126 L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le -0.018
127
128 L' = 4.5L \text{, for } -0.018 < L < 0.018
129
130 L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018
131
132 Inverse Transfer function:
133
134 .. math::
135
136 L = -\left( \frac{L' - 0.099}{-1.099} \right)^\frac{1}{0.45} \text{, for } L' \le -0.081
137
138 L = \frac{L'}{4.5}\text{, for } -0.081 < L' < 0.081
139
140 L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081
141
142 The luminance (Y') and color difference (Cb and Cr) are obtained with
143 the following ``V4L2_YCBCR_ENC_709`` encoding:
144
145 .. math::
146
147 Y' = 0.2126R' + 0.7152G' + 0.0722B'
148
149 Cb = -0.1146R' - 0.3854G' + 0.5B'
150
151 Cr = 0.5R' - 0.4542G' - 0.0458B'
152
153 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
154 [-0.5…0.5].
155
156 The default quantization is limited range, but full range is possible
157 although rarely seen.
158
159 The ``V4L2_YCBCR_ENC_709`` encoding described above is the default for
160 this colorspace, but it can be overridden with ``V4L2_YCBCR_ENC_601``,
161 in which case the BT.601 Y'CbCr encoding is used.
162
163 Two additional extended gamut Y'CbCr encodings are also possible with
164 this colorspace:
165
166 The xvYCC 709 encoding (``V4L2_YCBCR_ENC_XV709``, :ref:`xvycc`) is
167 similar to the Rec. 709 encoding, but it allows for R', G' and B' values
168 that are outside the range [0…1]. The resulting Y', Cb and Cr values are
169 scaled and offset according to the limited range formula:
170
171 .. math::
172
173 Y' = \frac{219}{256} * (0.2126R' + 0.7152G' + 0.0722B') + \frac{16}{256}
174
175 Cb = \frac{224}{256} * (-0.1146R' - 0.3854G' + 0.5B')
176
177 Cr = \frac{224}{256} * (0.5R' - 0.4542G' - 0.0458B')
178
179 The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is
180 similar to the BT.601 encoding, but it allows for R', G' and B' values
181 that are outside the range [0…1]. The resulting Y', Cb and Cr values are
182 scaled and offset according to the limited range formula:
183
184 .. math::
185
186 Y' = \frac{219}{256} * (0.2990R' + 0.5870G' + 0.1140B') + \frac{16}{256}
187
188 Cb = \frac{224}{256} * (-0.1687R' - 0.3313G' + 0.5B')
189
190 Cr = \frac{224}{256} * (0.5R' - 0.4187G' - 0.0813B')
191
192 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
193 [-0.5…0.5] and quantized without further scaling or offsets.
194 The non-standard xvYCC 709 or xvYCC 601 encodings can be
195 used by selecting ``V4L2_YCBCR_ENC_XV709`` or ``V4L2_YCBCR_ENC_XV601``.
196 As seen by the xvYCC formulas these encodings always use limited range quantization,
197 there is no full range variant. The whole point of these extended gamut encodings
198 is that values outside the limited range are still valid, although they
199 map to R', G' and B' values outside the [0…1] range and are therefore outside
200 the Rec. 709 colorspace gamut.
201
202
203 .. _col-srgb:
204
205 Colorspace sRGB (V4L2_COLORSPACE_SRGB)
206 ======================================
207
208 The :ref:`srgb` standard defines the colorspace used by most webcams
209 and computer graphics. The default transfer function is
210 ``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
211 ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited range.
212
213 Note that the :ref:`sycc` standard specifies full range quantization,
214 however all current capture hardware supported by the kernel convert
215 R'G'B' to limited range Y'CbCr. So choosing full range as the default
216 would break how applications interpret the quantization range.
217
218 The chromaticities of the primary colors and the white reference are:
219
220 .. flat-table:: sRGB Chromaticities
221 :header-rows: 1
222 :stub-columns: 0
223 :widths: 1 1 2
224
225 * - Color
226 - x
227 - y
228 * - Red
229 - 0.640
230 - 0.330
231 * - Green
232 - 0.300
233 - 0.600
234 * - Blue
235 - 0.150
236 - 0.060
237 * - White Reference (D65)
238 - 0.3127
239 - 0.3290
240
241
242 These chromaticities are identical to the Rec. 709 colorspace.
243
244 Transfer function. Note that negative values for L are only used by the
245 Y'CbCr conversion.
246
247 .. math::
248
249 L' = -1.055(-L)^{\frac{1}{2.4} } + 0.055\text{, for }L < -0.0031308
250
251 L' = 12.92L\text{, for }-0.0031308 \le L \le 0.0031308
252
253 L' = 1.055L ^{\frac{1}{2.4} } - 0.055\text{, for }0.0031308 < L \le 1
254
255 Inverse Transfer function:
256
257 .. math::
258
259 L = -((-L' + 0.055) / 1.055) ^{2.4}\text{, for }L' < -0.04045
260
261 L = L' / 12.92\text{, for }-0.04045 \le L' \le 0.04045
262
263 L = ((L' + 0.055) / 1.055) ^{2.4}\text{, for }L' > 0.04045
264
265 The luminance (Y') and color difference (Cb and Cr) are obtained with
266 the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`:
267
268 .. math::
269
270 Y' = 0.2990R' + 0.5870G' + 0.1140B'
271
272 Cb = -0.1687R' - 0.3313G' + 0.5B'
273
274 Cr = 0.5R' - 0.4187G' - 0.0813B'
275
276 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
277 [-0.5…0.5]. This transform is identical to one defined in SMPTE
278 170M/BT.601. The Y'CbCr quantization is limited range.
279
280
281 .. _col-oprgb:
282
283 Colorspace opRGB (V4L2_COLORSPACE_OPRGB)
284 ===============================================
285
286 The :ref:`oprgb` standard defines the colorspace used by computer
287 graphics that use the opRGB colorspace. The default transfer function is
288 ``V4L2_XFER_FUNC_OPRGB``. The default Y'CbCr encoding is
289 ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
290 range.
291
292 Note that the :ref:`oprgb` standard specifies full range quantization,
293 however all current capture hardware supported by the kernel convert
294 R'G'B' to limited range Y'CbCr. So choosing full range as the default
295 would break how applications interpret the quantization range.
296
297 The chromaticities of the primary colors and the white reference are:
298
299 .. flat-table:: opRGB Chromaticities
300 :header-rows: 1
301 :stub-columns: 0
302 :widths: 1 1 2
303
304 * - Color
305 - x
306 - y
307 * - Red
308 - 0.6400
309 - 0.3300
310 * - Green
311 - 0.2100
312 - 0.7100
313 * - Blue
314 - 0.1500
315 - 0.0600
316 * - White Reference (D65)
317 - 0.3127
318 - 0.3290
319
320
321
322 Transfer function:
323
324 .. math::
325
326 L' = L ^{\frac{1}{2.19921875}}
327
328 Inverse Transfer function:
329
330 .. math::
331
332 L = L'^{(2.19921875)}
333
334 The luminance (Y') and color difference (Cb and Cr) are obtained with
335 the following ``V4L2_YCBCR_ENC_601`` encoding:
336
337 .. math::
338
339 Y' = 0.2990R' + 0.5870G' + 0.1140B'
340
341 Cb = -0.1687R' - 0.3313G' + 0.5B'
342
343 Cr = 0.5R' - 0.4187G' - 0.0813B'
344
345 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
346 [-0.5…0.5]. This transform is identical to one defined in SMPTE
347 170M/BT.601. The Y'CbCr quantization is limited range.
348
349
350 .. _col-bt2020:
351
352 Colorspace BT.2020 (V4L2_COLORSPACE_BT2020)
353 ===========================================
354
355 The :ref:`itu2020` standard defines the colorspace used by Ultra-high
356 definition television (UHDTV). The default transfer function is
357 ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
358 ``V4L2_YCBCR_ENC_BT2020``. The default Y'CbCr quantization is limited range.
359 The chromaticities of the primary colors and the white reference are:
360
361 .. flat-table:: BT.2020 Chromaticities
362 :header-rows: 1
363 :stub-columns: 0
364 :widths: 1 1 2
365
366 * - Color
367 - x
368 - y
369 * - Red
370 - 0.708
371 - 0.292
372 * - Green
373 - 0.170
374 - 0.797
375 * - Blue
376 - 0.131
377 - 0.046
378 * - White Reference (D65)
379 - 0.3127
380 - 0.3290
381
382
383
384 Transfer function (same as Rec. 709):
385
386 .. math::
387
388 L' = 4.5L\text{, for }0 \le L < 0.018
389
390 L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
391
392 Inverse Transfer function:
393
394 .. math::
395
396 L = L' / 4.5\text{, for } L' < 0.081
397
398 L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
399
400 Please note that while Rec. 709 is defined as the default transfer function
401 by the :ref:`itu2020` standard, in practice this colorspace is often used
402 with the :ref:`xf-smpte-2084`. In particular Ultra HD Blu-ray discs use
403 this combination.
404
405 The luminance (Y') and color difference (Cb and Cr) are obtained with
406 the following ``V4L2_YCBCR_ENC_BT2020`` encoding:
407
408 .. math::
409
410 Y' = 0.2627R' + 0.6780G' + 0.0593B'
411
412 Cb = -0.1396R' - 0.3604G' + 0.5B'
413
414 Cr = 0.5R' - 0.4598G' - 0.0402B'
415
416 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
417 [-0.5…0.5]. The Y'CbCr quantization is limited range.
418
419 There is also an alternate constant luminance R'G'B' to Yc'CbcCrc
420 (``V4L2_YCBCR_ENC_BT2020_CONST_LUM``) encoding:
421
422 Luma:
423
424 .. math::
425 :nowrap:
426
427 \begin{align*}
428 Yc' = (0.2627R + 0.6780G + 0.0593B)'& \\
429 B' - Yc' \le 0:& \\
430 &Cbc = (B' - Yc') / 1.9404 \\
431 B' - Yc' > 0: & \\
432 &Cbc = (B' - Yc') / 1.5816 \\
433 R' - Yc' \le 0:& \\
434 &Crc = (R' - Y') / 1.7184 \\
435 R' - Yc' > 0:& \\
436 &Crc = (R' - Y') / 0.9936
437 \end{align*}
438
439 Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the
440 range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range.
441
442
443 .. _col-dcip3:
444
445 Colorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3)
446 ==========================================
447
448 The :ref:`smpte431` standard defines the colorspace used by cinema
449 projectors that use the DCI-P3 colorspace. The default transfer function
450 is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
451 ``V4L2_YCBCR_ENC_709``. The default Y'CbCr quantization is limited range.
452
453 .. note::
454
455 Note that this colorspace standard does not specify a
456 Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this
457 default Y'CbCr encoding was picked because it is the HDTV encoding.
458
459 The chromaticities of the primary colors and the white reference are:
460
461
462 .. flat-table:: DCI-P3 Chromaticities
463 :header-rows: 1
464 :stub-columns: 0
465 :widths: 1 1 2
466
467 * - Color
468 - x
469 - y
470 * - Red
471 - 0.6800
472 - 0.3200
473 * - Green
474 - 0.2650
475 - 0.6900
476 * - Blue
477 - 0.1500
478 - 0.0600
479 * - White Reference
480 - 0.3140
481 - 0.3510
482
483
484
485 Transfer function:
486
487 .. math::
488
489 L' = L^{\frac{1}{2.6}}
490
491 Inverse Transfer function:
492
493 .. math::
494
495 L = L'^{(2.6)}
496
497 Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709.
498
499
500 .. _col-smpte-240m:
501
502 Colorspace SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)
503 =================================================
504
505 The :ref:`smpte240m` standard was an interim standard used during the
506 early days of HDTV (1988-1998). It has been superseded by Rec. 709. The
507 default transfer function is ``V4L2_XFER_FUNC_SMPTE240M``. The default
508 Y'CbCr encoding is ``V4L2_YCBCR_ENC_SMPTE240M``. The default Y'CbCr
509 quantization is limited range. The chromaticities of the primary colors
510 and the white reference are:
511
512
513 .. flat-table:: SMPTE 240M Chromaticities
514 :header-rows: 1
515 :stub-columns: 0
516 :widths: 1 1 2
517
518 * - Color
519 - x
520 - y
521 * - Red
522 - 0.630
523 - 0.340
524 * - Green
525 - 0.310
526 - 0.595
527 * - Blue
528 - 0.155
529 - 0.070
530 * - White Reference (D65)
531 - 0.3127
532 - 0.3290
533
534
535 These chromaticities are identical to the SMPTE 170M colorspace.
536
537 Transfer function:
538
539 .. math::
540
541 L' = 4L\text{, for } 0 \le L < 0.0228
542
543 L' = 1.1115L ^{0.45} - 0.1115\text{, for } 0.0228 \le L \le 1
544
545 Inverse Transfer function:
546
547 .. math::
548
549 L = \frac{L'}{4}\text{, for } 0 \le L' < 0.0913
550
551 L = \left( \frac{L' + 0.1115}{1.1115}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.0913
552
553 The luminance (Y') and color difference (Cb and Cr) are obtained with
554 the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding:
555
556 .. math::
557
558 Y' = 0.2122R' + 0.7013G' + 0.0865B'
559
560 Cb = -0.1161R' - 0.3839G' + 0.5B'
561
562 Cr = 0.5R' - 0.4451G' - 0.0549B'
563
564 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the
565 range [-0.5…0.5]. The Y'CbCr quantization is limited range.
566
567
568 .. _col-sysm:
569
570 Colorspace NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)
571 ===================================================
572
573 This standard defines the colorspace used by NTSC in 1953. In practice
574 this colorspace is obsolete and SMPTE 170M should be used instead. The
575 default transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr
576 encoding is ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is
577 limited range. The chromaticities of the primary colors and the white
578 reference are:
579
580
581 .. flat-table:: NTSC 1953 Chromaticities
582 :header-rows: 1
583 :stub-columns: 0
584 :widths: 1 1 2
585
586 * - Color
587 - x
588 - y
589 * - Red
590 - 0.67
591 - 0.33
592 * - Green
593 - 0.21
594 - 0.71
595 * - Blue
596 - 0.14
597 - 0.08
598 * - White Reference (C)
599 - 0.310
600 - 0.316
601
602
603 .. note::
604
605 This colorspace uses Illuminant C instead of D65 as the white
606 reference. To correctly convert an image in this colorspace to another
607 that uses D65 you need to apply a chromatic adaptation algorithm such as
608 the Bradford method.
609
610 The transfer function was never properly defined for NTSC 1953. The Rec.
611 709 transfer function is recommended in the literature:
612
613 .. math::
614
615 L' = 4.5L\text{, for } 0 \le L < 0.018
616
617 L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
618
619 Inverse Transfer function:
620
621 .. math::
622
623 L = \frac{L'}{4.5} \text{, for } L' < 0.081
624
625 L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
626
627 The luminance (Y') and color difference (Cb and Cr) are obtained with
628 the following ``V4L2_YCBCR_ENC_601`` encoding:
629
630 .. math::
631
632 Y' = 0.2990R' + 0.5870G' + 0.1140B'
633
634 Cb = -0.1687R' - 0.3313G' + 0.5B'
635
636 Cr = 0.5R' - 0.4187G' - 0.0813B'
637
638 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
639 [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
640 identical to one defined in SMPTE 170M/BT.601.
641
642
643 .. _col-sysbg:
644
645 Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
646 =========================================================
647
648 The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
649 in 1975. Note that this colorspace is not supported by the HDMI interface.
650 Instead :ref:`tech3321` recommends that Rec. 709 is used instead for HDMI.
651 The default transfer function is
652 ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
653 ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
654 range. The chromaticities of the primary colors and the white reference
655 are:
656
657
658 .. flat-table:: EBU Tech. 3213 Chromaticities
659 :header-rows: 1
660 :stub-columns: 0
661 :widths: 1 1 2
662
663 * - Color
664 - x
665 - y
666 * - Red
667 - 0.64
668 - 0.33
669 * - Green
670 - 0.29
671 - 0.60
672 * - Blue
673 - 0.15
674 - 0.06
675 * - White Reference (D65)
676 - 0.3127
677 - 0.3290
678
679
680
681 The transfer function was never properly defined for this colorspace.
682 The Rec. 709 transfer function is recommended in the literature:
683
684 .. math::
685
686 L' = 4.5L\text{, for } 0 \le L < 0.018
687
688 L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
689
690 Inverse Transfer function:
691
692 .. math::
693
694 L = \frac{L'}{4.5} \text{, for } L' < 0.081
695
696 L = \left(\frac{L' + 0.099}{1.099} \right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
697
698 The luminance (Y') and color difference (Cb and Cr) are obtained with
699 the following ``V4L2_YCBCR_ENC_601`` encoding:
700
701 .. math::
702
703 Y' = 0.2990R' + 0.5870G' + 0.1140B'
704
705 Cb = -0.1687R' - 0.3313G' + 0.5B'
706
707 Cr = 0.5R' - 0.4187G' - 0.0813B'
708
709 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
710 [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
711 identical to one defined in SMPTE 170M/BT.601.
712
713
714 .. _col-jpeg:
715
716 Colorspace JPEG (V4L2_COLORSPACE_JPEG)
717 ======================================
718
719 This colorspace defines the colorspace used by most (Motion-)JPEG
720 formats. The chromaticities of the primary colors and the white
721 reference are identical to sRGB. The transfer function use is
722 ``V4L2_XFER_FUNC_SRGB``. The Y'CbCr encoding is ``V4L2_YCBCR_ENC_601``
723 with full range quantization where Y' is scaled to [0…255] and Cb/Cr are
724 scaled to [-128…128] and then clipped to [-128…127].
725
726 .. note::
727
728 The JPEG standard does not actually store colorspace
729 information. So if something other than sRGB is used, then the driver
730 will have to set that information explicitly. Effectively
731 ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for
732 ``V4L2_COLORSPACE_SRGB``, ``V4L2_XFER_FUNC_SRGB``, ``V4L2_YCBCR_ENC_601``
733 and ``V4L2_QUANTIZATION_FULL_RANGE``.
734
735 ***************************************
736 Detailed Transfer Function Descriptions
737 ***************************************
738
739 .. _xf-smpte-2084:
740
741 Transfer Function SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)
742 =======================================================
743
744 The :ref:`smpte2084` standard defines the transfer function used by
745 High Dynamic Range content.
746
747 Constants:
748 m1 = (2610 / 4096) / 4
749
750 m2 = (2523 / 4096) * 128
751
752 c1 = 3424 / 4096
753
754 c2 = (2413 / 4096) * 32
755
756 c3 = (2392 / 4096) * 32
757
758 Transfer function:
759 L' = ((c1 + c2 * L\ :sup:`m1`) / (1 + c3 * L\ :sup:`m1`))\ :sup:`m2`
760
761 Inverse Transfer function:
762 L = (max(L':sup:`1/m2` - c1, 0) / (c2 - c3 *
763 L'\ :sup:`1/m2`))\ :sup:`1/m1`
764
765 Take care when converting between this transfer function and non-HDR transfer
766 functions: the linear RGB values [0…1] of HDR content map to a luminance range
767 of 0 to 10000 cd/m\ :sup:`2` whereas the linear RGB values of non-HDR (aka
768 Standard Dynamic Range or SDR) map to a luminance range of 0 to 100 cd/m\ :sup:`2`.
769
770 To go from SDR to HDR you will have to divide L by 100 first. To go in the other
771 direction you will have to multiply L by 100. Of course, this clamps all
772 luminance values over 100 cd/m\ :sup:`2` to 100 cd/m\ :sup:`2`.
773
774 There are better methods, see e.g. :ref:`colimg` for more in-depth information
775 about this.
776

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

SMPTE 170M 색공간

1-85

`V4L2_COLORSPACE_SMPTE170M`은 NTSC와 PAL, 일반적인 SDTV에 쓰이는 SMPTE 170M 색공간입니다. 기본 전달 함수는 `V4L2_XFER_FUNC_709`, 기본 Y'CbCr 인코딩은 `V4L2_YCBCR_ENC_601`, 기본 양자화는 제한 범위입니다.

SMPTE 170M 기본 정의
항목값 또는 설명
Redx=0.630, y=0.340
Greenx=0.310, y=0.595
Bluex=0.155, y=0.070
White ReferenceD65, x=0.3127, y=0.3290
Transfer functionV4L2_XFER_FUNC_709
Y'CbCr encodingV4L2_YCBCR_ENC_601
Quantization제한 범위가 기본이며 전체 범위도 가능하지만 드묾

SMPTE C라고도 부르는 색공간의 색도와 기본 V4L2 값입니다.

빨강·초록·파랑 색도 좌표 묶음은 SMPTE C set이라고도 하므로 이 색공간 자체를 SMPTE C라고 부르기도 합니다. 전달 함수는 Rec. 709와 동일한 세 구간 함수이며, 0 부근은 `L'=4.5L`, 양·음의 바깥 구간은 지수 0.45를 사용합니다.

역전달 함수는 `L'`의 경계 -0.081과 0.081을 기준으로 선형 구간과 두 지수 구간을 되돌립니다. 원문의 정방향·역방향 수식과 부호 처리는 아래 원문 블록에 그대로 보존됩니다.

`V4L2_YCBCR_ENC_601` 변환은 `Y'=0.2990R'+0.5870G'+0.1140B'`이고 Cb/Cr에는 각각 B'와 R' 계수 0.5를 사용합니다. Y'는 [0,1], Cb와 Cr은 [-0.5,0.5]로 제한됩니다. 이 변환은 ITU BT.601과 같지만 BT.601 자체는 원색 색도를 규정하지 않습니다.

.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later

********************************
Detailed Colorspace Descriptions
********************************


.. _col-smpte-170m:

Colorspace SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)
=================================================

The :ref:`smpte170m` standard defines the colorspace used by NTSC and
PAL and by SDTV in general. The default transfer function is
``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
range. The chromaticities of the primary colors and the white reference
are:

.. flat-table:: SMPTE 170M Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.630
      - 0.340
    * - Green
      - 0.310
      - 0.595
    * - Blue
      - 0.155
      - 0.070
    * - White Reference (D65)
      - 0.3127
      - 0.3290


The red, green and blue chromaticities are also often referred to as the
SMPTE C set, so this colorspace is sometimes called SMPTE C as well.

The transfer function defined for SMPTE 170M is the same as the one
defined in Rec. 709.

.. math::

    L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le-0.018

    L' = 4.5L \text{, for } -0.018 < L < 0.018

    L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018

Inverse Transfer function:

.. math::

    L = -\left( \frac{L' - 0.099}{-1.099} \right) ^{\frac{1}{0.45}} \text{, for } L' \le -0.081

    L = \frac{L'}{4.5} \text{, for } -0.081 < L' < 0.081

    L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_601`` encoding:

.. math::

    Y' = 0.2990R' + 0.5870G' + 0.1140B'

    Cb = -0.1687R' - 0.3313G' + 0.5B'

    Cr = 0.5R' - 0.4187G' - 0.0813B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in
the :ref:`itu601` standard and this colorspace is sometimes called
BT.601 as well, even though BT.601 does not mention any color primaries.

The default quantization is limited range, but full range is possible
although rarely seen.

Rec. 709 색공간과 xvYCC

86-202

`V4L2_COLORSPACE_REC709`은 HDTV의 일반 색공간인 Rec. ITU-R BT.709-5를 나타냅니다. 기본 전달 함수는 `V4L2_XFER_FUNC_709`, 기본 인코딩은 `V4L2_YCBCR_ENC_709`, 기본 양자화는 제한 범위입니다.

Rec. 709 기본 정의
항목값 또는 설명
Redx=0.640, y=0.330
Greenx=0.300, y=0.600
Bluex=0.150, y=0.060
White ReferenceD65, x=0.3127, y=0.3290
Transfer functionV4L2_XFER_FUNC_709
Y'CbCr encodingV4L2_YCBCR_ENC_709
Quantization제한 범위가 기본이며 전체 범위도 가능하지만 드묾

HDTV 색공간의 색도와 기본 V4L2 값입니다.

전달 함수는 SMPTE 170M과 같은 세 구간 함수입니다. 보통 선형 광량 L은 [0,1]이지만 확장 색역 xvYCC에서는 이 범위 밖의 값도 허용합니다.

709 행렬은 `Y'=0.2126R'+0.7152G'+0.0722B'`, `Cb=-0.1146R'-0.3854G'+0.5B'`, `Cr=0.5R'-0.4542G'-0.0458B'`입니다. Y'는 [0,1], Cb/Cr은 [-0.5,0.5]로 제한됩니다. 필요하면 `V4L2_YCBCR_ENC_601`로 BT.601 행렬을 대신 선택할 수 있습니다.

`V4L2_YCBCR_ENC_XV709`과 `V4L2_YCBCR_ENC_XV601`은 각각 709와 601 계수를 사용하되 R'G'B'의 [0,1] 바깥 값을 허용합니다. Y'에는 219/256 배율과 16/256 오프셋을, Cb/Cr에는 224/256 배율을 적용합니다.

Rec. 709 계열 확장 색역
항목값 또는 설명
V4L2_YCBCR_ENC_XV709Rec. 709 계수에 219/256·224/256 배율과 Y' 오프셋 16/256 적용
V4L2_YCBCR_ENC_XV601BT.601 계수에 219/256·224/256 배율과 Y' 오프셋 16/256 적용

두 xvYCC 선택의 행렬과 공통 양자화 특성입니다.

xvYCC 결과는 Y' [0,1], Cb/Cr [-0.5,0.5]로 제한한 뒤 추가 배율이나 오프셋 없이 양자화합니다. 두 확장 인코딩은 항상 제한 범위를 사용하며 전체 범위 변형은 없습니다.

제한 범위 밖의 코드도 xvYCC에서는 유효합니다. 이는 복원된 R'G'B'가 [0,1]을 벗어나 Rec. 709 gamut 밖의 색을 표현하도록 하는 확장 색역의 핵심입니다.

.. _col-rec709:

Colorspace Rec. 709 (V4L2_COLORSPACE_REC709)
============================================

The :ref:`itu709` standard defines the colorspace used by HDTV in
general. The default transfer function is ``V4L2_XFER_FUNC_709``. The
default Y'CbCr encoding is ``V4L2_YCBCR_ENC_709``. The default Y'CbCr
quantization is limited range. The chromaticities of the primary colors
and the white reference are:

.. flat-table:: Rec. 709 Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.640
      - 0.330
    * - Green
      - 0.300
      - 0.600
    * - Blue
      - 0.150
      - 0.060
    * - White Reference (D65)
      - 0.3127
      - 0.3290


The full name of this standard is Rec. ITU-R BT.709-5.

Transfer function. Normally L is in the range [0…1], but for the
extended gamut xvYCC encoding values outside that range are allowed.

.. math::

    L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le -0.018

    L' = 4.5L \text{, for } -0.018 < L < 0.018

    L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018

Inverse Transfer function:

.. math::

    L = -\left( \frac{L' - 0.099}{-1.099} \right)^\frac{1}{0.45} \text{, for } L' \le -0.081

    L = \frac{L'}{4.5}\text{, for } -0.081 < L' < 0.081

    L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_709`` encoding:

.. math::

    Y' = 0.2126R' + 0.7152G' + 0.0722B'

    Cb = -0.1146R' - 0.3854G' + 0.5B'

    Cr = 0.5R' - 0.4542G' - 0.0458B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5].

The default quantization is limited range, but full range is possible
although rarely seen.

The ``V4L2_YCBCR_ENC_709`` encoding described above is the default for
this colorspace, but it can be overridden with ``V4L2_YCBCR_ENC_601``,
in which case the BT.601 Y'CbCr encoding is used.

Two additional extended gamut Y'CbCr encodings are also possible with
this colorspace:

The xvYCC 709 encoding (``V4L2_YCBCR_ENC_XV709``, :ref:`xvycc`) is
similar to the Rec. 709 encoding, but it allows for R', G' and B' values
that are outside the range [0…1]. The resulting Y', Cb and Cr values are
scaled and offset according to the limited range formula:

.. math::

    Y' = \frac{219}{256} * (0.2126R' + 0.7152G' + 0.0722B') + \frac{16}{256}

    Cb = \frac{224}{256} * (-0.1146R' - 0.3854G' + 0.5B')

    Cr = \frac{224}{256} * (0.5R' - 0.4542G' - 0.0458B')

The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is
similar to the BT.601 encoding, but it allows for R', G' and B' values
that are outside the range [0…1]. The resulting Y', Cb and Cr values are
scaled and offset according to the limited range formula:

.. math::

    Y' = \frac{219}{256} * (0.2990R' + 0.5870G' + 0.1140B') + \frac{16}{256}

    Cb = \frac{224}{256} * (-0.1687R' - 0.3313G' + 0.5B')

    Cr = \frac{224}{256} * (0.5R' - 0.4187G' - 0.0813B')

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5] and quantized without further scaling or offsets.
The non-standard xvYCC 709 or xvYCC 601 encodings can be
used by selecting ``V4L2_YCBCR_ENC_XV709`` or ``V4L2_YCBCR_ENC_XV601``.
As seen by the xvYCC formulas these encodings always use limited range quantization,
there is no full range variant. The whole point of these extended gamut encodings
is that values outside the limited range are still valid, although they
map to R', G' and B' values outside the [0…1] range and are therefore outside
the Rec. 709 colorspace gamut.

sRGB 색공간

203-280

`V4L2_COLORSPACE_SRGB`은 대부분의 웹캠과 컴퓨터 그래픽에 쓰입니다. 기본 전달 함수는 `V4L2_XFER_FUNC_SRGB`, 기본 Y'CbCr 인코딩은 `V4L2_YCBCR_ENC_601`, 기본 Y'CbCr 양자화는 제한 범위입니다.

sRGB 기본 정의
항목값 또는 설명
Redx=0.640, y=0.330
Greenx=0.300, y=0.600
Bluex=0.150, y=0.060
White ReferenceD65, x=0.3127, y=0.3290
Transfer functionV4L2_XFER_FUNC_SRGB
Y'CbCr encodingV4L2_YCBCR_ENC_601
Quantization커널 지원 캡처 하드웨어와 호환되는 제한 범위

색도는 Rec. 709와 같지만 전달 함수와 사용 환경이 다릅니다.

sYCC 표준은 전체 범위 양자화를 규정하지만, 커널이 지원하는 현재 캡처 하드웨어는 R'G'B'를 제한 범위 Y'CbCr로 변환합니다. V4L2가 전체 범위를 기본으로 삼으면 기존 애플리케이션의 범위 해석을 깨뜨리므로 제한 범위를 유지합니다.

sRGB 전달 함수는 |L|이 0.0031308 이하일 때 `L'=12.92L`, 바깥에서는 지수 1/2.4를 사용합니다. 음의 L은 Y'CbCr 변환에서만 쓰며, 역함수의 신호 경계는 ±0.04045입니다.

Y'CbCr 변환은 sYCC가 정의한 BT.601 계수로 SMPTE 170M과 동일합니다. Y'는 [0,1], Cb/Cr은 [-0.5,0.5]로 제한하고 제한 범위로 양자화합니다.

.. _col-srgb:

Colorspace sRGB (V4L2_COLORSPACE_SRGB)
======================================

The :ref:`srgb` standard defines the colorspace used by most webcams
and computer graphics. The default transfer function is
``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited range.

Note that the :ref:`sycc` standard specifies full range quantization,
however all current capture hardware supported by the kernel convert
R'G'B' to limited range Y'CbCr. So choosing full range as the default
would break how applications interpret the quantization range.

The chromaticities of the primary colors and the white reference are:

.. flat-table:: sRGB Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.640
      - 0.330
    * - Green
      - 0.300
      - 0.600
    * - Blue
      - 0.150
      - 0.060
    * - White Reference (D65)
      - 0.3127
      - 0.3290


These chromaticities are identical to the Rec. 709 colorspace.

Transfer function. Note that negative values for L are only used by the
Y'CbCr conversion.

.. math::

    L' = -1.055(-L)^{\frac{1}{2.4} } + 0.055\text{, for }L < -0.0031308

    L' = 12.92L\text{, for }-0.0031308 \le L \le 0.0031308

    L' = 1.055L ^{\frac{1}{2.4} } - 0.055\text{, for }0.0031308 < L \le 1

Inverse Transfer function:

.. math::

    L = -((-L' + 0.055) / 1.055) ^{2.4}\text{, for }L' < -0.04045

    L = L' / 12.92\text{, for }-0.04045 \le L' \le 0.04045

    L = ((L' + 0.055) / 1.055) ^{2.4}\text{, for }L' > 0.04045

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`:

.. math::

    Y' = 0.2990R' + 0.5870G' + 0.1140B'

    Cb = -0.1687R' - 0.3313G' + 0.5B'

    Cr = 0.5R' - 0.4187G' - 0.0813B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5]. This transform is identical to one defined in SMPTE
170M/BT.601. The Y'CbCr quantization is limited range.

opRGB 색공간

281-349

`V4L2_COLORSPACE_OPRGB`은 opRGB를 사용하는 컴퓨터 그래픽용 색공간입니다. 기본 전달 함수는 `V4L2_XFER_FUNC_OPRGB`, 기본 Y'CbCr 인코딩은 `V4L2_YCBCR_ENC_601`, 기본 양자화는 제한 범위입니다.

opRGB 기본 정의
항목값 또는 설명
Redx=0.6400, y=0.3300
Greenx=0.2100, y=0.7100
Bluex=0.1500, y=0.0600
White ReferenceD65, x=0.3127, y=0.3290
Transfer functionV4L2_XFER_FUNC_OPRGB
Y'CbCr encodingV4L2_YCBCR_ENC_601
Quantization커널 캡처 하드웨어 호환을 위해 제한 범위

Rec. 709보다 넓은 초록 원색을 갖는 opRGB의 정의입니다.

opRGB 표준 자체는 전체 범위를 규정하지만 현재 지원되는 캡처 하드웨어는 제한 범위 Y'CbCr를 만듭니다. 따라서 sRGB와 같은 호환성 이유로 제한 범위를 기본값으로 둡니다.

전달 함수는 `L'=L^(1/2.19921875)`이고 역함수는 `L=L'^2.19921875`입니다. Y'CbCr는 BT.601 계수로 변환하며 Y' [0,1], Cb/Cr [-0.5,0.5]로 제한한 뒤 제한 범위로 양자화합니다.

.. _col-oprgb:

Colorspace opRGB (V4L2_COLORSPACE_OPRGB)
===============================================

The :ref:`oprgb` standard defines the colorspace used by computer
graphics that use the opRGB colorspace. The default transfer function is
``V4L2_XFER_FUNC_OPRGB``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
range.

Note that the :ref:`oprgb` standard specifies full range quantization,
however all current capture hardware supported by the kernel convert
R'G'B' to limited range Y'CbCr. So choosing full range as the default
would break how applications interpret the quantization range.

The chromaticities of the primary colors and the white reference are:

.. flat-table:: opRGB Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.6400
      - 0.3300
    * - Green
      - 0.2100
      - 0.7100
    * - Blue
      - 0.1500
      - 0.0600
    * - White Reference (D65)
      - 0.3127
      - 0.3290



Transfer function:

.. math::

    L' = L ^{\frac{1}{2.19921875}}

Inverse Transfer function:

.. math::

    L = L'^{(2.19921875)}

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_601`` encoding:

.. math::

    Y' = 0.2990R' + 0.5870G' + 0.1140B'

    Cb = -0.1687R' - 0.3313G' + 0.5B'

    Cr = 0.5R' - 0.4187G' - 0.0813B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5]. This transform is identical to one defined in SMPTE
170M/BT.601. The Y'CbCr quantization is limited range.

BT.2020 색공간

350-442

`V4L2_COLORSPACE_BT2020`은 UHDTV용 BT.2020 색공간입니다. 기본 전달 함수는 `V4L2_XFER_FUNC_709`, 기본 인코딩은 비상수 휘도 `V4L2_YCBCR_ENC_BT2020`, 기본 양자화는 제한 범위입니다.

BT.2020 기본 정의
항목값 또는 설명
Redx=0.708, y=0.292
Greenx=0.170, y=0.797
Bluex=0.131, y=0.046
White ReferenceD65, x=0.3127, y=0.3290
Transfer functionV4L2_XFER_FUNC_709
Y'CbCr encodingV4L2_YCBCR_ENC_BT2020
Quantization제한 범위

넓은 색역의 UHDTV 색도와 V4L2 기본값입니다.

기본 전달 함수의 정방향·역방향 수식은 Rec. 709와 같습니다. 그러나 실제 BT.2020 콘텐츠는 SMPTE ST 2084 PQ와 함께 쓰이는 경우가 많고, Ultra HD Blu-ray가 대표적인 조합입니다.

비상수 휘도 행렬은 `Y'=0.2627R'+0.6780G'+0.0593B'`, `Cb=-0.1396R'-0.3604G'+0.5B'`, `Cr=0.5R'-0.4598G'-0.0402B'`입니다. Y'와 색차를 각각 [0,1], [-0.5,0.5]로 제한하고 제한 범위로 양자화합니다.

대안인 `V4L2_YCBCR_ENC_BT2020_CONST_LUM`은 선형 R, G, B로 Yc를 만든 뒤 전달 함수를 적용해 Yc'를 얻습니다. B'-Yc'와 R'-Yc'의 부호에 따라 Cbc와 Crc의 분모를 각각 다르게 선택합니다.

BT.2020 인코딩 비교
항목값 또는 설명
V4L2_YCBCR_ENC_BT2020비선형 R'G'B'에 고정 행렬을 적용하는 Y'CbCr
V4L2_YCBCR_ENC_BT2020_CONST_LUM선형 RGB에서 Yc를 계산하고 부호별 색차 스케일을 쓰는 Yc'CbcCrc

비상수 휘도와 상수 휘도 표현의 차이입니다.

상수 휘도 수식의 Yc'는 [0,1], Cbc/Crc는 [-0.5,0.5]로 제한하며 양자화는 제한 범위입니다. Crc 분자에 `Y'`를 쓰는 로컬 v6.18.37 원문 표기를 임의로 교정하지 않고 그대로 보존했습니다.

.. _col-bt2020:

Colorspace BT.2020 (V4L2_COLORSPACE_BT2020)
===========================================

The :ref:`itu2020` standard defines the colorspace used by Ultra-high
definition television (UHDTV). The default transfer function is
``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_BT2020``. The default Y'CbCr quantization is limited range.
The chromaticities of the primary colors and the white reference are:

.. flat-table:: BT.2020 Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.708
      - 0.292
    * - Green
      - 0.170
      - 0.797
    * - Blue
      - 0.131
      - 0.046
    * - White Reference (D65)
      - 0.3127
      - 0.3290



Transfer function (same as Rec. 709):

.. math::

    L' = 4.5L\text{, for }0 \le L < 0.018

    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1

Inverse Transfer function:

.. math::

    L = L' / 4.5\text{, for } L' < 0.081

    L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081

Please note that while Rec. 709 is defined as the default transfer function
by the :ref:`itu2020` standard, in practice this colorspace is often used
with the :ref:`xf-smpte-2084`. In particular Ultra HD Blu-ray discs use
this combination.

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_BT2020`` encoding:

.. math::

    Y' = 0.2627R' + 0.6780G' + 0.0593B'

    Cb = -0.1396R' - 0.3604G' + 0.5B'

    Cr = 0.5R' - 0.4598G' - 0.0402B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5]. The Y'CbCr quantization is limited range.

There is also an alternate constant luminance R'G'B' to Yc'CbcCrc
(``V4L2_YCBCR_ENC_BT2020_CONST_LUM``) encoding:

Luma:

.. math::
    :nowrap:

    \begin{align*}
    Yc' = (0.2627R + 0.6780G + 0.0593B)'& \\
    B' - Yc' \le 0:& \\
        &Cbc = (B' - Yc') / 1.9404 \\
    B' - Yc' > 0: & \\
        &Cbc = (B' - Yc') / 1.5816 \\
    R' - Yc' \le 0:& \\
        &Crc = (R' - Y') / 1.7184 \\
    R' - Yc' > 0:& \\
        &Crc = (R' - Y') / 0.9936
    \end{align*}

Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the
range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range.

DCI-P3 색공간

443-499

`V4L2_COLORSPACE_DCI_P3`은 DCI-P3를 사용하는 영화관 프로젝터용 SMPTE 431 색공간입니다. 기본 전달 함수는 `V4L2_XFER_FUNC_DCI_P3`, 기본 Y'CbCr 인코딩은 `V4L2_YCBCR_ENC_709`, 기본 양자화는 제한 범위입니다.

DCI-P3 기본 정의
항목값 또는 설명
Redx=0.6800, y=0.3200
Greenx=0.2650, y=0.6900
Bluex=0.1500, y=0.0600
White Referencex=0.3140, y=0.3510
Transfer functionV4L2_XFER_FUNC_DCI_P3
Y'CbCr encodingV4L2_YCBCR_ENC_709, V4L2에서 선택한 호환 기본값
Quantization제한 범위

영화 상영용 색도와 V4L2의 Y'CbCr 호환 기본값입니다.

DCI-P3 표준은 본래 Y'CbCr로 인코딩하기 위한 색공간이 아니므로 Y'CbCr 행렬을 규정하지 않습니다. V4L2는 HDTV 인코딩이라는 이유로 Rec. 709 행렬을 기본값으로 선택했습니다.

전달 함수는 `L'=L^(1/2.6)`이며 역함수는 `L=L'^2.6`입니다. 이 절의 Y'CbCr 선택은 DCI-P3 표준의 일부가 아니라 V4L2 API의 기본 동작입니다.

.. _col-dcip3:

Colorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3)
==========================================

The :ref:`smpte431` standard defines the colorspace used by cinema
projectors that use the DCI-P3 colorspace. The default transfer function
is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_709``. The default Y'CbCr quantization is limited range.

.. note::

   Note that this colorspace standard does not specify a
   Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this
   default Y'CbCr encoding was picked because it is the HDTV encoding.

The chromaticities of the primary colors and the white reference are:


.. flat-table:: DCI-P3 Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.6800
      - 0.3200
    * - Green
      - 0.2650
      - 0.6900
    * - Blue
      - 0.1500
      - 0.0600
    * - White Reference
      - 0.3140
      - 0.3510



Transfer function:

.. math::

    L' = L^{\frac{1}{2.6}}

Inverse Transfer function:

.. math::

    L = L'^{(2.6)}

Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709.

SMPTE 240M 색공간

500-567

`V4L2_COLORSPACE_SMPTE240M`은 HDTV 초기인 1988~1998년에 사용된 과도기 표준으로, 현재는 Rec. 709가 대체했습니다. 기본 전달 함수와 인코딩은 각각 `V4L2_XFER_FUNC_SMPTE240M`, `V4L2_YCBCR_ENC_SMPTE240M`이며 양자화는 제한 범위입니다.

SMPTE 240M 기본 정의
항목값 또는 설명
Redx=0.630, y=0.340
Greenx=0.310, y=0.595
Bluex=0.155, y=0.070
White ReferenceD65, x=0.3127, y=0.3290
Transfer functionV4L2_XFER_FUNC_SMPTE240M
Y'CbCr encodingV4L2_YCBCR_ENC_SMPTE240M
Quantization제한 범위

색도는 SMPTE 170M과 같지만 전달 함수와 행렬이 다릅니다.

전달 함수는 L=0.0228을 경계로 `L'=4L`과 `L'=1.1115L^0.45-0.1115`를 사용합니다. 역함수의 신호 경계는 L'=0.0913입니다.

SMPTE 240M 행렬은 `Y'=0.2122R'+0.7013G'+0.0865B'`, `Cb=-0.1161R'-0.3839G'+0.5B'`, `Cr=0.5R'-0.4451G'-0.0549B'`입니다. Y'와 Cb/Cr를 표준 범위로 제한한 뒤 제한 범위로 양자화합니다.

.. _col-smpte-240m:

Colorspace SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)
=================================================

The :ref:`smpte240m` standard was an interim standard used during the
early days of HDTV (1988-1998). It has been superseded by Rec. 709. The
default transfer function is ``V4L2_XFER_FUNC_SMPTE240M``. The default
Y'CbCr encoding is ``V4L2_YCBCR_ENC_SMPTE240M``. The default Y'CbCr
quantization is limited range. The chromaticities of the primary colors
and the white reference are:


.. flat-table:: SMPTE 240M Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.630
      - 0.340
    * - Green
      - 0.310
      - 0.595
    * - Blue
      - 0.155
      - 0.070
    * - White Reference (D65)
      - 0.3127
      - 0.3290


These chromaticities are identical to the SMPTE 170M colorspace.

Transfer function:

.. math::

    L' = 4L\text{, for } 0 \le L < 0.0228

    L' = 1.1115L ^{0.45} - 0.1115\text{, for } 0.0228 \le L \le 1

Inverse Transfer function:

.. math::

    L = \frac{L'}{4}\text{, for } 0 \le L' < 0.0913

    L = \left( \frac{L' + 0.1115}{1.1115}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.0913

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding:

.. math::

    Y' = 0.2122R' + 0.7013G' + 0.0865B'

    Cb = -0.1161R' - 0.3839G' + 0.5B'

    Cr = 0.5R' - 0.4451G' - 0.0549B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the
range [-0.5…0.5]. The Y'CbCr quantization is limited range.

NTSC 1953 색공간

568-642

`V4L2_COLORSPACE_470_SYSTEM_M`은 1953년 NTSC 색공간입니다. 실무에서는 폐기된 것으로 보고 SMPTE 170M을 사용해야 합니다. 기본 전달 함수는 `V4L2_XFER_FUNC_709`, 기본 인코딩은 `V4L2_YCBCR_ENC_601`, 양자화는 제한 범위입니다.

NTSC 1953 기본 정의
항목값 또는 설명
Redx=0.67, y=0.33
Greenx=0.21, y=0.71
Bluex=0.14, y=0.08
White ReferenceIlluminant C, x=0.310, y=0.316
Transfer function표준에 명확한 정의가 없어 V4L2_XFER_FUNC_709 권장
Y'CbCr encodingV4L2_YCBCR_ENC_601
Quantization제한 범위

D65가 아닌 Illuminant C를 흰색 기준으로 사용합니다.

Illuminant C 기반 영상을 D65 기반 색공간으로 정확히 변환하려면 Bradford 방식 같은 색순응 알고리즘을 적용해야 합니다.

NTSC 1953에서 D65 색공간으로
NTSC 1953 RGB를 CIE XYZ로 변환Bradford 등의 색순응으로 Illuminant C에서 D65로 이동대상 D65 원색 좌표의 RGB로 변환

흰색 기준이 다른 색공간 사이의 변환 순서입니다.

NTSC 1953의 전달 함수는 제대로 정의된 적이 없어 문헌에서 Rec. 709 함수를 권장합니다. 원문의 정방향·역방향 수식은 709의 L=0.018, L'=0.081 경계를 사용합니다.

Y'CbCr 행렬은 BT.601/SMPTE 170M과 동일한 0.2990/0.5870/0.1140 계수입니다. Y' [0,1], Cb/Cr [-0.5,0.5]로 제한하고 제한 범위로 양자화합니다.

.. _col-sysm:

Colorspace NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)
===================================================

This standard defines the colorspace used by NTSC in 1953. In practice
this colorspace is obsolete and SMPTE 170M should be used instead. The
default transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr
encoding is ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is
limited range. The chromaticities of the primary colors and the white
reference are:


.. flat-table:: NTSC 1953 Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.67
      - 0.33
    * - Green
      - 0.21
      - 0.71
    * - Blue
      - 0.14
      - 0.08
    * - White Reference (C)
      - 0.310
      - 0.316


.. note::

   This colorspace uses Illuminant C instead of D65 as the white
   reference. To correctly convert an image in this colorspace to another
   that uses D65 you need to apply a chromatic adaptation algorithm such as
   the Bradford method.

The transfer function was never properly defined for NTSC 1953. The Rec.
709 transfer function is recommended in the literature:

.. math::

    L' = 4.5L\text{, for } 0 \le L < 0.018

    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1

Inverse Transfer function:

.. math::

    L = \frac{L'}{4.5} \text{, for } L' < 0.081

    L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_601`` encoding:

.. math::

    Y' = 0.2990R' + 0.5870G' + 0.1140B'

    Cb = -0.1687R' - 0.3313G' + 0.5B'

    Cr = 0.5R' - 0.4187G' - 0.0813B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
identical to one defined in SMPTE 170M/BT.601.

EBU Tech. 3213 색공간

643-713

`V4L2_COLORSPACE_470_SYSTEM_BG`는 1975년 PAL/SECAM용 EBU Tech. 3213 색공간입니다. HDMI 인터페이스는 이 색공간을 지원하지 않으며 EBU Tech. 3321은 HDMI에서 Rec. 709를 사용하도록 권고합니다.

EBU Tech. 3213 기본 정의
항목값 또는 설명
Redx=0.64, y=0.33
Greenx=0.29, y=0.60
Bluex=0.15, y=0.06
White ReferenceD65, x=0.3127, y=0.3290
Transfer function명확한 원 표준 정의가 없어 V4L2_XFER_FUNC_709 권장
Y'CbCr encodingV4L2_YCBCR_ENC_601
Quantization제한 범위

PAL/SECAM 색도와 V4L2 기본 선택입니다.

이 색공간도 전달 함수가 제대로 정의되지 않았으므로 문헌에서 Rec. 709 함수를 권장합니다. 수식의 선형·지수 구간과 역함수는 BT.2020 기본 전달 함수 절과 같은 709 형태입니다.

Y'CbCr 변환은 SMPTE 170M/BT.601과 동일합니다. Y'는 [0,1], Cb/Cr은 [-0.5,0.5]로 제한하며 제한 범위 양자화를 사용합니다.

.. _col-sysbg:

Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
=========================================================

The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
in 1975. Note that this colorspace is not supported by the HDMI interface.
Instead :ref:`tech3321` recommends that Rec. 709 is used instead for HDMI.
The default transfer function is
``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
range. The chromaticities of the primary colors and the white reference
are:


.. flat-table:: EBU Tech. 3213 Chromaticities
    :header-rows:  1
    :stub-columns: 0
    :widths:       1 1 2

    * - Color
      - x
      - y
    * - Red
      - 0.64
      - 0.33
    * - Green
      - 0.29
      - 0.60
    * - Blue
      - 0.15
      - 0.06
    * - White Reference (D65)
      - 0.3127
      - 0.3290



The transfer function was never properly defined for this colorspace.
The Rec. 709 transfer function is recommended in the literature:

.. math::

    L' = 4.5L\text{, for } 0 \le L < 0.018

    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1

Inverse Transfer function:

.. math::

    L = \frac{L'}{4.5} \text{, for } L' < 0.081

    L = \left(\frac{L' + 0.099}{1.099} \right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081

The luminance (Y') and color difference (Cb and Cr) are obtained with
the following ``V4L2_YCBCR_ENC_601`` encoding:

.. math::

    Y' = 0.2990R' + 0.5870G' + 0.1140B'

    Cb = -0.1687R' - 0.3313G' + 0.5B'

    Cr = 0.5R' - 0.4187G' - 0.0813B'

Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
[-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
identical to one defined in SMPTE 170M/BT.601.

JPEG 색공간

714-734

`V4L2_COLORSPACE_JPEG`은 대부분의 JPEG와 Motion-JPEG 형식에 쓰이는 관례적 색공간입니다. 원색과 흰색 색도는 sRGB와 같고 전달 함수는 `V4L2_XFER_FUNC_SRGB`, Y'CbCr 인코딩은 `V4L2_YCBCR_ENC_601`, 양자화는 전체 범위입니다.

JPEG 색공간의 실질적 구성
항목값 또는 설명
ColorspaceV4L2_COLORSPACE_SRGB
Transfer functionV4L2_XFER_FUNC_SRGB
Y'CbCr encodingV4L2_YCBCR_ENC_601
QuantizationV4L2_QUANTIZATION_FULL_RANGE

하나의 JPEG 식별자가 축약하는 네 V4L2 값입니다.

전체 범위에서 Y'는 [0,255]로 스케일하고 Cb/Cr은 [-128,128]로 스케일한 뒤 [-128,127]로 클리핑합니다.

JPEG 표준은 실제 파일에 색공간 정보를 저장하지 않습니다. sRGB 이외의 색공간을 썼다면 드라이버가 관련 필드를 명시적으로 설정해야 하며, `V4L2_COLORSPACE_JPEG`은 위 네 값의 축약형으로 이해할 수 있습니다.

.. _col-jpeg:

Colorspace JPEG (V4L2_COLORSPACE_JPEG)
======================================

This colorspace defines the colorspace used by most (Motion-)JPEG
formats. The chromaticities of the primary colors and the white
reference are identical to sRGB. The transfer function use is
``V4L2_XFER_FUNC_SRGB``. The Y'CbCr encoding is ``V4L2_YCBCR_ENC_601``
with full range quantization where Y' is scaled to [0…255] and Cb/Cr are
scaled to [-128…128] and then clipped to [-128…127].

.. note::

   The JPEG standard does not actually store colorspace
   information. So if something other than sRGB is used, then the driver
   will have to set that information explicitly. Effectively
   ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for
   ``V4L2_COLORSPACE_SRGB``, ``V4L2_XFER_FUNC_SRGB``, ``V4L2_YCBCR_ENC_601``
   and ``V4L2_QUANTIZATION_FULL_RANGE``.

SMPTE ST 2084 전달 함수

735-775

`V4L2_XFER_FUNC_SMPTE2084`는 HDR 콘텐츠에 쓰이는 SMPTE ST 2084 전달 함수, 즉 PQ를 나타냅니다.

SMPTE 2084 상수
항목값 또는 설명
m1(2610 / 4096) / 4
m2(2523 / 4096) * 128
c13424 / 4096
c2(2413 / 4096) * 32
c3(2392 / 4096) * 32

정방향과 역방향 PQ 수식에 공통으로 쓰이는 상수입니다.

정방향 함수는 L의 m1 제곱을 c1, c2, c3로 구성한 유리식에 넣고 결과를 m2 제곱합니다. 역함수는 L'의 1/m2 제곱에서 c1을 뺀 값을 0 아래로 내려가지 않게 한 뒤, 분모 `c2-c3*L'^(1/m2)`로 나누고 1/m1 제곱합니다.

HDR에서 선형 RGB [0,1]은 0~10000 cd/m² 휘도에 대응하지만 SDR의 선형 RGB [0,1]은 0~100 cd/m²에 대응합니다. 같은 정규화 값이라도 절대 휘도 의미가 100배 다릅니다.

SDR과 PQ HDR의 단순 스케일 변환
SDR에서 HDR로 갈 때 선형 L을 100으로 나눔HDR에서 SDR로 갈 때 선형 L에 100을 곱함SDR 범위를 넘는 100 cd/m² 초과 휘도는 100 cd/m²로 클리핑실제 영상에는 colimg 절의 더 나은 톤 매핑 사용

원문이 제시하는 기초 변환과 손실 지점입니다.

이 단순 배율 변환은 HDR의 밝은 세부를 잘라냅니다. 문서는 더 깊은 색 영상 처리와 톤 매핑 방법을 `colimg` 절에서 확인하도록 안내합니다.

***************************************
Detailed Transfer Function Descriptions
***************************************

.. _xf-smpte-2084:

Transfer Function SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)
=======================================================

The :ref:`smpte2084` standard defines the transfer function used by
High Dynamic Range content.

Constants:
    m1 = (2610 / 4096) / 4

    m2 = (2523 / 4096) * 128

    c1 = 3424 / 4096

    c2 = (2413 / 4096) * 32

    c3 = (2392 / 4096) * 32

Transfer function:
    L' = ((c1 + c2 * L\ :sup:`m1`) / (1 + c3 * L\ :sup:`m1`))\ :sup:`m2`

Inverse Transfer function:
    L = (max(L':sup:`1/m2` - c1, 0) / (c2 - c3 *
    L'\ :sup:`1/m2`))\ :sup:`1/m1`

Take care when converting between this transfer function and non-HDR transfer
functions: the linear RGB values [0…1] of HDR content map to a luminance range
of 0 to 10000 cd/m\ :sup:`2` whereas the linear RGB values of non-HDR (aka
Standard Dynamic Range or SDR) map to a luminance range of 0 to 100 cd/m\ :sup:`2`.

To go from SDR to HDR you will have to divide L by 100 first. To go in the other
direction you will have to multiply L by 100. Of course, this clamps all
luminance values over 100 cd/m\ :sup:`2` to 100 cd/m\ :sup:`2`.

There are better methods, see e.g. :ref:`colimg` for more in-depth information
about this.