github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/image/color/ycbcr.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package color 6 7 // RGBToYCbCrは、RGBトリプルをY'CbCrトリプルに変換します。 8 func RGBToYCbCr(r, g, b uint8) (uint8, uint8, uint8) 9 10 // YCbCrToRGBは、Y'CbCrトリプルをRGBトリプルに変換します。 11 func YCbCrToRGB(y, cb, cr uint8) (uint8, uint8, uint8) 12 13 // YCbCrは、完全に不透明な24ビットのY'CbCr色を表し、 14 // 1つの輝度成分と2つの色差成分のそれぞれに8ビットずつを持っています。 15 // 16 // JPEG、VP8、MPEGファミリー、その他のコーデックはこのカラーモデルを使用します。 17 // これらのコーデックはしばしばYUVとY'CbCrを同義語として使用しますが、 18 // 厳密には、YUVという用語はアナログビデオ信号にのみ適用され、 19 // Y'(ルーマ)はガンマ補正を適用した後のY(輝度)です。 20 // 21 // RGBとY'CbCr間の変換は損失を伴い、両者間の変換には少し異なる複数の公式があります。 22 // このパッケージは、https://www.w3.org/Graphics/JPEG/jfif3.pdf のJFIF仕様に従います。 23 type YCbCr struct { 24 Y, Cb, Cr uint8 25 } 26 27 func (c YCbCr) RGBA() (uint32, uint32, uint32, uint32) 28 29 // YCbCrModelはY'CbCr色の [Model] です。 30 var YCbCrModel Model = ModelFunc(yCbCrModel) 31 32 // NYCbCrAは、アルファ非乗算のY'CbCr-with-alpha色を表し、 33 // 1つの輝度成分、2つの色差成分、1つのアルファ成分それぞれに8ビットずつを持っています。 34 type NYCbCrA struct { 35 YCbCr 36 A uint8 37 } 38 39 func (c NYCbCrA) RGBA() (uint32, uint32, uint32, uint32) 40 41 // NYCbCrAModelは、アルファ非乗算のY'CbCr-with-alpha色の [Model] です。 42 var NYCbCrAModel Model = ModelFunc(nYCbCrAModel) 43 44 // RGBToCMYKは、RGBトリプルをCMYK四重奏に変換します。 45 func RGBToCMYK(r, g, b uint8) (uint8, uint8, uint8, uint8) 46 47 // CMYKToRGBは、[CMYK] 四重奏をRGBトリプルに変換します。 48 func CMYKToRGB(c, m, y, k uint8) (uint8, uint8, uint8) 49 50 // CMYKは、シアン、マゼンタ、イエロー、ブラックの各色に8ビットずつ持つ、完全に不透明なCMYK色を表します。 51 // 52 // それは特定のカラープロファイルに関連付けられていません。 53 type CMYK struct { 54 C, M, Y, K uint8 55 } 56 57 func (c CMYK) RGBA() (uint32, uint32, uint32, uint32) 58 59 // CMYKModelはCMYK色の [Model] です。 60 var CMYKModel Model = ModelFunc(cmykModel)