「SNSに上げると色が変わる」は本当か — 実測しました
TikTokやInstagramに上げると色が変わる、と言われます。H.264の再圧縮で何が起きるかを4枚の素材×4段階のビットレートで実測したところ、色相はほとんど動かず、壊れるのは階調でした。グレインを足すと逆に悪化します。
よく言われていること
「TikTokやInstagramは暖色に寄る」「フィルムグレインを乗せると圧縮ノイズが 目立たなくなる」。どちらも海外の記事で繰り返し見かけます。 ただ、数字が一つも出てきません。 売る側が「変わります」とだけ言うのは、買う側から見ると何の情報でもありません。
そこで測りました。測ったのはH.264の再圧縮です。 各プラットフォームのアップロード処理そのものを外から観測することはできないので、 「TikTokに上げて測った」とは書きません。ただ、あの工程の中身は最終的に H.264の再圧縮なので、ここは手元で正確に再現できます。
測り方
素材4枚(夜の街/夕景/空撮/人物)を1080×1920の縦動画にして、 8・4・2・1 Mbps で再エンコードし、中央のフレームを取り出して比較しました。 静止画のJPEGではなく動画で測っています。捨てられるものが違うからです。
- 色相のズレ … 画面全体の R−B が基準からどれだけ動くか
- 平坦率 … もともとなだらかだった場所で「隣の画素と差が0」になった割合。 これが上がるほどバンディング(段差)が出ています
平坦率を測る「なだらかだった場所」は、基準画像で一度だけ決めて固定します。 画像ごとに決め直すと、グレインを足したときに母集団自体が変わってしまい、 「グレインを足すほど平坦になる」という逆の結論が出ます(最初これで間違えました)。
結果1:色相はほとんど動かない
| 素材 | 8Mbps | 4Mbps | 2Mbps | 1Mbps |
|---|---|---|---|---|
| 夜の街 | -0.02 | -0.02 | -0.02 | -0.04 |
| 夕景 | -0.01 | -0.03 | -0.10 | -0.18 |
| 空撮 | +0.00 | +0.01 | +0.04 | +0.03 |
| 人物 | -0.02 | -0.01 | -0.03 | -0.09 |
R−B の変化量です。単位は0〜255。一番動いた夕景でも 0.18で、 これは人の目には見えません。1Mbpsまで落としてもこの程度です。
つまり「圧縮されると暖色に寄る」は、少なくとも再圧縮では起きていません。 色が変わったように見えるとしたら、それは圧縮ではなく、アプリ側のフィルタや 表示プロファイルなど別の工程です。LUTを暖色/寒色に振って対策する意味はありません。
結果2:壊れるのは階調
| 素材 | 基準 | 2Mbps | 1Mbps |
|---|---|---|---|
| 夜の街 | 32.6% | 39.4% | 47.3% |
| 夕景 | 30.9% | 33.4% | 36.7% |
| 空撮 | 61.1% | 62.1% | 66.0% |
| 人物 | 20.8% | 25.1% | 32.1% |
平坦率です。夜の街で 32.6% → 47.3%、人物で 20.8% → 32.1%。 なだらかだった場所の半分近くが「段差」に変わっています。 これが「SNSに上げると汚くなった」の正体で、色ではなく階調の問題です。
被害が大きいのは暗い素材と、なだらかなグラデーションが広い素材です。 夜景・夕焼けの空・肌のハイライト。逆に空撮のように細かい模様が全面にある絵は もともと平坦部が少ないので、目立ちません。
結果3:グレインは「足せば良くなる」ものではない
| グレイン量 | 夜の街 | 人物 | 夕景 | 空撮 |
|---|---|---|---|---|
| なし | 39.7% | 24.9% | 33.2% | 62.1% |
| 弱 | 48.0% | 30.9% | 38.7% | 67.4% |
| 強 | 50.3% | 37.6% | 41.1% | 67.9% |
2Mbps固定でグレインを足したときの平坦率です。4枚すべてで悪化しました。
理由は単純で、ビットレートが決まっているからです。 粒はフレームごとにランダムなので圧縮が効かず、そこに符号量を持っていかれます。 その分だけ絵に回る情報が減ります。 「グレインが圧縮ノイズを隠す」が成り立つのはビットレートに余裕がある場合で、 上限が決まっているSNSでは逆に働きます。
では何をすればいいか
- 暗部を潰しきらない。 段差は「もう少しで同じ値」の場所に出ます。 黒を締めすぎた画は、圧縮後に階段状になります
- 書き出しのビットレートを上げる。 プラットフォーム側で再圧縮されますが、 入力がきれいなほど結果もきれいです。1Mbpsで書き出して上げるのが一番損です
- グレインは「画作りとして欲しいとき」に入れる。 画質対策として入れると逆効果です
- 色の心配はしなくていい。 上で測ったとおり色相は動きません
この検証について
測定に使ったスクリプトは商品には含まれません。IROZORAは 全ファイルに自動検査を通してから出荷しています (LUTは階調と10ルックの識別性、環境音はループの継ぎ目を実測)。 この記事の測り方も、その検査と同じ考え方です。
この記事に関係する素材
SNS LUT vol.4 — スマホ・SNS
撮って出しを「盛る」ための10ルック。黒を潰さず、肌を焼かず、スマホの映像に当たるように作ってあります。