ビット深度からグラデーションのバンディングリスクを確認
このツールは、レンダリングしたグラデーションで量子化の段差が見える可能性を推定します。チャンネルごとのビット深度、両端を含むカラーストップ数、グラデーション方向のピクセル距離を入力してください。低・中・高のリスク判定に加え、その根拠となる遷移密度と実用的な対策を返します。特定のモニター、コーデック、色空間、視聴環境を再現するものではなく、制作前に利用する決定論的な目安です。
無料で実行
制作初期の警告として判定をご利用ください
滑らかな変化を少なすぎる離散値で表現すると、次の値へ移るまで隣接する複数のピクセルが同じ符号化色になり、バンディングが発生します。このツールは、制作時に分かる3つの入力から簡潔な警告を算出します。ビット深度はチャンネルごとに利用できる値の数を決めます。カラーストップ数は、グラデーションを構成する隣接した補間区間の数を決めます。ピクセル距離は、その区間をどこまで引き伸ばすかを示します。結果では、利用可能な量子化遷移数と距離を比較します。指定したモデルで1ピクセルにつき1つ以上の遷移が使える場合は低リスク、1つの遷移が1ピクセルを超える場合は中リスク、2ピクセルを超える場合は高リスクです。ただし、これは目視確認の優先順位を決める指標であり、見え方を保証するものではありません。低リスクの素材でも、強い圧縮、不適切な色変換、表示機器の精度不足、書き出し設定によって帯が見える場合があります。一方、ディザリングで誤差を細かなノイズとして分散すれば、数学的に制約のあるグラデーションでも滑らかに見せられます。レンダリング前に結果を確認し、詳しい目視検査が必要な設定を絞り込んでください。
計算方法と前提条件をご確認ください
ビット深度を b とすると、ツールは各カラーチャンネルについて2の b 乗の階調数を求めます。そこから1を引いて階調間で可能な遷移数を算出し、隣接するストップ区間の数を掛けます。両端の2つのストップで1区間を作るため、区間数はカラーストップ数より1つ少なくなります。ピクセル距離をこの遷移予算で割った値が、主要なリスク指標である「遷移あたりのピクセル数」です。逆数の「ピクセルあたりの遷移数」も返すため、複数デザインの密度を比較できます。このモデルでは、隣接する各ストップ区間がチャンネルの全範囲を利用できると仮定しています。実際のグラデーションが狭い階調範囲しか使わない場合、有効な遷移数は減り、実際のリスクは高くなる可能性があります。また、ガンマ、知覚的均一性、アルファ合成、クロマサブサンプリング、画面校正、視聴距離、ストップに指定した正確な色は計算に含みません。これは意図した設計です。あらゆる表示工程を予測したように見せるのではなく、画像やコードを仕上げる前に通常把握できる情報から、再現可能な事前評価を提供します。
中または高リスクの場合の対策
結果が中または高の場合は、まず出力形式とレンダリング経路がより高いビット深度を維持できるかご確認ください。8ビットから10ビットへ変更すると利用可能な値は大幅に増えますが、編集、書き出し、転送、表示の全工程でその精度を保つ必要があります。意図するトーンカーブに沿って意味のあるカラーストップを追加すれば、同等の色を繰り返す場合とは異なり、補間区間を短くできます。グラデーションのピクセル長を短くする方法も、同じ遷移予算を共有するサンプル数の削減に有効です。8ビットでの配信が固定されている場合、ディザリングは構造的な輪郭を目立ちにくいノイズへ置き換えるため、実用的な対策になります。最終的に書き出した素材は、必ず代表的な機器で確認してください。高精度エディター内の元データだけを確認すると、後工程で生じた問題を見落とすことがあります。横長のデスクトップ背景、小さいモバイル用切り抜き、圧縮画像など、配信する各バリエーションで再度実行してください。API は1回 $0.002 で同じ決定論的計算を行うため、ビルド工程での素材自動検査にも組み込めます。
活用例
大きな背景グラデーションの事前確認
横長のメイン画像に広げた8ビットのグラデーションに、表示幅を満たす遷移数があるか確認できます。
書き出し精度の比較
画像や動画の配信工程を決める前に、8ビット、10ビット、それ以上の精度を比較できます。
素材への自動警告の追加
デザイントークンの検証やビルド工程で、中または高リスクのグラデーション仕様を検出できます。
よくある質問
リスク判定は何を意味しますか?
モデル上の遷移予算が1ピクセルあたり1つ以上なら低、1遷移が1ピクセルを超えると中、2ピクセルを超えると高です。
ビット深度はチャンネル単位ですか?
はい。一般的なチャンネルあたり8ビットの画像であれば、8を入力してください。
両端の色もストップ数に含めますか?
はい。両端を含む合計数を入力してください。2つのストップで1つの補間区間になります。
低リスクならバンディングは必ず発生しませんか?
保証はできません。圧縮、狭い階調範囲、色変換、表示機器の制約、視聴条件によって輪郭が見える場合があります。
ディザリングも計算に含まれますか?
含まれません。未処理の量子化リスクを推定します。ディザリングは誤差を細かなノイズとして分散し、見える帯を抑える場合があります。
API での確認料金はいくらですか?
API は1回 $0.002 です。ブラウザー版は対話的な確認のため端末内で実行されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/image/color-banding-risk-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bit_depth":8,"color_stops":2,"pixel_distance":1024}'const res = await fetch("https://api.kit.forhosting.com/image/color-banding-risk-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bit_depth": 8,
"color_stops": 2,
"pixel_distance": 1024
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-banding-risk-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bit_depth": 8,
"color_stops": 2,
"pixel_distance": 1024
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-banding-risk-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bit_depth":8,"color_stops":2,"pixel_distance":1024}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bit_depth":8,"color_stops":2,"pixel_distance":1024}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-banding-risk-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"bit_depth": 8,
"color_stops": 2,
"pixel_distance": 1024
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_banding_risk_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 15 |
max_megapixels | 12 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |