このページの本文へ

前へ 1 2 3 4 5 次へ

エンコードテクニック虎の巻 第3回

表示サイズを変えて動画を軽くするテク【画面リサイズ編】

2008年05月30日 22時30分更新

文● 藤山 哲人

  • この記事をはてなブックマークに追加
  • 本文印刷

 近頃出回りはじめたハイビジョン映像。フル規格だと1980×1080ピクセルと並みの液晶パネルじゃ表示できないぐらいの大きさだ。その中にあるピクセルの数は、2,138,400(200万)画素! しかもテレビはRGBの3原色を使っているので、データとしては3倍の6,415,200(600万)画素を1秒の間に30回も描画し直しているのだ!
 標準放送なら720×480ピクセルなので、345,600画素。データに直すと1,036,800画素である。720(704)×480ピクセルの映像ならスムーズに再生できるパソコンでも、さすがに6倍データ量を扱うハイビジョンの再生となると、CPUがオーバーロードするのは当然だ。
 前回は、画質を落としてスムーズに再生するようにしていたが、今回はサイズそのものを小さくして、軽くてコンパクト!そしてスムーズに再生できるムービーを作ってみよう!

リサイズするには必ず16の倍数でサイズを指定

 色々なムービーを見慣れている人であれば、352×240、640×400、704×480などという画面サイズをよく見かけるだろう。また最近は16:9の映像が多いので1024×576、1280×720という画面サイズの映像も多く見かける。
 さて一見なんの規則性もないこれらの画面サイズだが、縦・横のサイズがピッタリ16で割り切れるのをご存知だろうか?
 352÷16=22、702÷16=44、576÷16=36という具合にすべての数字が16でピッタリ割り切れるのだ。
 実はこれにはワケがある。
 現在コーデックの主流になっているのは、MPEG-1/2やDivX、WindowsMediaVideoにH.264といったものだ。H.264はMPEG-4規格であり、エンコードの仕組みはMPEG-1や2を発展させたもの。DivXやWindowsMediaVideoは、名前や細かなチューニングこそ違えど、実はMPEG-4ベースの映像圧縮方法を使っている。つまり現在主流になっているコーデックは、MPEG映像圧縮の基礎が利用されているといっても過言じゃない。
 さてその基礎となるMPEGの圧縮方法は、画面を8×8ピクセルの「セル」と呼ばれるブロックに分解して圧縮を行なっている。

8×8ピクセルのセル

画像の圧縮は、現在主流となっているコーデックのほとんどが8×8ピクセル単位のセルで行なっている。映像のエンコード・デコード処理が間に合わないと発生するブロックノイズは、これが原因。つまり処理が間に合わず、8×8ピクセルの細かなデータを描画せず、平均的な色の8×8ピクセルのブロックを表示してその場をしのぐのである

 さらに第1回で説明した、画面中を動くものがどこに移動したか?という処理を16×16ピクセルのブロック単位で行なっているのだ。

動き検知のブロックは16×16ピクセル

画像中の物体の動き検知は、16×16ピクセル単位で行なわれる。このブロックが画面中のどこに移動したを検知するのだ

 これこそ映像サイズがすべて16で割り切れるという、からくりの種明かしである。とかく中途半場な数字が登場するパソコンだが、16で割り切れる数は、非常に処理がやりやすく、誤差も少なくなるのだ。
 したがってハイビジョン映像を小さくリサイズするには、横×縦のピクセル比が16:9となり、かつどちらも16で割り切れる数値で指定するのがベスト。この条件を満たす、組み合わせってのはかなり限られており、6パターンしかない。

コメント
512 288 ここまで小さければかなり古いパソコンでも再生OK。でもVHSの画質以下になっちゃう
768 432 オススメの解像度。このぐらいならWindowsXPの当初のパソコンでもまず再生OK
1024 576 ここらへんになるとPentium4以上じゃないと再生は辛いかも?
1280 720 こりゃもうハイビジョンの領域
1536 864 高速なCore2Duoなら再生できるかも
1792 1008 コーデックによってはCore2Duoでも厳しい再生環境だ
2048 1152 組み合わせ的にありだが、ハイビジョンスペック以上だし、拡大表示になる

でも待てよ!704×396って16:9のムービーもたくさんあるぞ!

 16:9のムービーの中では、704×396ピクセルというサイズが使われているものが多くある。でもコレ、396って16で割り切れないのだ。余りは12。しかも基本のセルとなる8で割っても余りがでる始末(笑)。
 じゃあなぜ、あまりが出るサイズなのに704×396の16:9のムービーがたくさんあるんだろうか? その答えは標準(SD)放送のキャプチャは、ほとんどが720×480でキャプチャされるためだ。
 映像の両端には、若干のノイズが入るので左右8ピクセルを切り取って、横のサイズを704ピクセルにする。

左右に発生するノイズをカット

この映像はDVカムと映像編集ソフトで編集したもの。画面右に黒い縦の線としてノイズが入っている。テレビをキャプチャした映像もこんな具合に左右にノイズが乗るので、8ピクセルずつカットして幅704ピクセルにする

 ここから16:9のピクセル比にあわせて縦を上下42ピクセル切り取って(ちょうど黒い帯の部分)396ピクセルにしている。
 こうするメリットは、映像の拡大・縮小をせずにエンコードできるから。本来であれば、768×432に拡大するか、512×288に縮小するべきところだが、こうすると拡大・縮小が行なわれ映像が劣化する。
 一方ほとんどのエンコーダは、縦横のピクセルが16で割り切れなくても画像サイズとして受け付けてくれる。端数は端数としてキッチリ内部で処理してくれるからだ。
 そこで画面全体が拡大・縮小で劣化するぐらいなら、エンコーダの内部で端数の処理が行なわれようとも縦396ピクセルでいいじゃん!という発想なのだ。しかも拡大・縮小の処理もされないから、エンコード時間も速いのだ。高画質で即アップ!(え?何のことですかねぇ?) これが704×396ピクセル映像なのだ!

(次ページへ続く)

前へ 1 2 3 4 5 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

ASCII.jpメール アキバマガジン

クルマ情報byASCII

ピックアップ