RGBからYUVへの変換ツール
RGBカラーを明るさと2つの色差に分けます。オレンジの255, 128, 0はBT.601の重みでY 0.5936509804、U −0.2921263922、V 0.3564952157になります。映像や画像処理の計算確認に便利です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 抵抗(Ω)
- 255
- G
- 128
- B
- 0
- Y
- 0.5936509804
- U
- -0.2921263922
- 電圧(V)
- 0.3564952157
- 標準形
- BT.601
このRGBからYUVへの変換ツールは、赤・緑・青の整数チャンネルを固定BT.601係数によってアナログY′UVの輝度と色差へ変換します。各チャンネルに0から255を入力すると、安定した小数丸めによる正規化Y、U、Vが得られます。計算はローカルかつ決定的で、通信、乱数、時刻、無効値の自動補正を使いません。
アナログYUVの結果を理解する
RGBは赤、緑、青の各チャンネル強度で色を表します。アナログY′UVは同じ信号を、輝度に相当する1成分と2つの色差成分へ組み替えます。uとvは色差を保持し、Uは主に青との差、Vは主に赤との差を表します。
行列計算の前に各整数を255で割るため、R、G、Bは0から1に正規化されます。Yは0から1、Uはおよそ-0.436から0.436、Vはおよそ-0.615から0.615です。無彩色では色差がほぼゼロになります。
応答には検証済みの元チャンネル、丸めた3成分、規格名、範囲方式が含まれます。これは正規化アナログY′UVであり、16や128などのオフセットを持つデジタルYCbCrではありません。映像コーデックや画像ライブラリーではYCbCrを慣用的にYUVと呼ぶ場合があるため、比較時にはこの違いをご確認ください。
検証と再現可能な計算方法
r、g、bには0以上255以下の整数をご指定ください。前後の空白を除いた符号付き数字文字列は解析しますが、小数、指数表記、空値、真偽値、配列、オブジェクト、Infinity、NaNは拒否します。受理する数値は必ず範囲内の整数です。
256や-1を端の値へ制限すると、壊れた画素、誤った尺度、スキーマ不一致を隠すため、その処理は行いません。検証後、各チャンネルを255で割ります。Yは0.299R + 0.587G + 0.114B、Uは-0.14713R - 0.28886G + 0.436B、Vは0.615R - 0.51499G - 0.10001Bで計算します。
結果は小数第10位まで丸め、負のゼロは通常のゼロにします。通信、保存状態、乱数、ロケール、日付には依存しません。
メディア処理で正しく利用する
このツールは、テレビ色モデルの学習、画像式の確認、明るさと色差の分離、信号処理用の再現可能な例の作成に役立ちます。また、色差サブサンプリングを学ぶ前に、原色がY、U、Vへどう配分されるか確認できます。値と一緒に方式も保存してください。
出力は正規化された非線形RGB信号とBT.601方式のY′UV行列を使います。デジタルオフセットの追加、制限レンジ符号への量子化、色差サブサンプリング、sRGBの線形化、原色変換、動画符号化は行いません。YCbCrをYUVと呼ぶソフトウェアの結果は異なる可能性があります。
相手側がフルレンジかスタジオレンジか、整数か正規化小数か、どの行列かをご確認ください。無効チャンネルを拒否するため、後段の色処理へ入る前の厳密な検証境界としても利用できます。
活用例
輝度と色差を教材化
RGB原色が輝度と符号付き2色差軸へ異なる比率で寄与する様子を説明できます。
メディア入力を検証
決定的なRGBからYUVへの変換前に、不正形式または範囲外の8ビットチャンネルを拒否します。
よくある質問
アナログYUVですか、デジタルYCbCrですか?
BT.601由来の固定係数を使う正規化アナログY′UVです。デジタルオフセットや制限レンジ符号は加えません。
UとVが負になるのはなぜですか?
UとVは無彩色を中心とする色差信号です。符号は青差軸と赤差軸における方向を表します。
無効なチャンネルは自動制限されますか?
いいえ。 元データの誤りを隠さないよう、0未満または255超の値はエラーにします。
グレーや黒、白はどんな値になりますか?
無彩色のグレーは3つのチャンネルが等しいため、UとVが0になります。黒は0, 0, 0、白はYが1で色差はありません。
Yはどう計算しますか?
各チャンネルを255で割ってから、0.299R+0.587G+0.114Bで求めます。緑の影響が最も大きく、次が赤、最も小さいのが青です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/rgb-yuv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":0}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-yuv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-yuv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-yuv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-yuv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"r": 255,
"g": 128,
"b": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_yuv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
範囲外の値は丸め込まずinvalid_inputを返します。ブラウザーでは無料で利用でき、APIでは正常な1項目につき$0.002です。
アナログYUVの結果を理解する
yフィールドではBT.601の0.299、0.587、0.114という係数に従い、緑、赤、青の順に影響が大きくなります。
検証と再現可能な計算方法
フォームや表の列名を変更せず接続できるよう、red、green、blue、およびR、G、Bも受け付けます。固定された係数、演算順序、丸めによってJSONを再現できます。失敗時はinvalid_inputとなり、可能な場合は対象チャンネルも示します。
メディア処理で正しく利用する
ブラウザーでは同じ純粋な処理を無料で実行でき、APIの正常な1項目は$0.002です。
連携の活用例
変換テストデータを作成
単体テスト、goldenファイル、言語間比較向けに安定したBT.601アナログYUV値を生成します。
技術的な質問
RGBからYUVへの変換料金はいくらですか?
ブラウザーでは無料です。APIによる正常な変換は$0.002で、無効な入力は拒否されます。
入力できる範囲を教えてください。
r、g、bはそれぞれ0から255までの整数です。小数や範囲外の値にはinvalid_inputを返します。