MATLAB による動画処理

用途、例、技術

一般的な用途

動画の応用では、よくみられる難しい課題があります。これらを解決するには、柔軟に解析し処理する機能が必要です。MATLAB® と Simulink® 製品を使用することで、映像安定化、モザイク処理、ターゲット検出、追跡などの一般的な動画処理の課題に対処するソリューションを開発できます。

オブジェクトの追跡

オブジェクトの追跡は、歩行者の回避、セキュリティと監視、拡張現実などのさまざまな用途で不可欠なものです。この例では、固定カメラから取得した動画に対し、動きに基づいた歩行者の追跡を実行する方法を説明します。

オブジェクトの検出とカウント

動画シーケンス内を移動するオブジェクトを検出してカウントするために、動画処理を使用できます。このケーススタディでは、オーストラリアの科学者たちがビデオ映像を使って水鳥の野生個体数を推定しています。

MATLAB を用いた動画処理

MATLAB® には、動画の表示、解析、読み取り、書き込みを行うツールやアルゴリズムが用意されています。動画処理は、以下のような用途で役立ちます。

Video processing is essential to areas such as deep learning, motion estimation, and autonomous driving. Learn how to interact, process, and analyze videos by viewing a detailed example in MATLAB.

動画処理の簡単な 4 つのステップ

MATLAB を用いた動画処理のステップは以下のとおりです。

  1. 動画の読み込み
  2. 動画の表示
  3. 動画の処理
  4. 動画の書き込み

ステップ 1.動画の読み込み

ファイルから、または直接カメラから動画を読み込むことができます。

単一の MATLAB コマンドでファイルから動画を読み込むことができます。

 >> vid = VideoReader('filename.avi') 

MATLAB は動画処理用の Web カメラをサポート しています。Image Acquisition Toolbox™ を使用すれば、さまざまな工業用カメラや科学用カメラからライブ画像を取得することも可能です。

MATLAB では、Microsoft® Windows®、Mac、Linux® 用の OS 固有のコーデックなど、さまざまなコーデックを使用して動画ファイルを読み取ることができます。

ステップ 2.動画の表示

MATLAB で動画を表示するには、次の 2 つの方法があります。

  • deployableVideoPlayer:一連のビデオフレームを効率的に表示します
  • implay:ビデオ ビューアー アプリを起動して動画を表示します

MATLAB ムービー、動画、または画像シーケンスを再生するビデオ ビューアー アプリ。このアプリでは、さまざまな速度で動画を開始、停止、再生でき、動画の特定のセクションにジャンプすることもできます。

ステップ 3.動画の処理

動画は、個々のビデオフレームまたは画像のシーケンスです。これは、画像上でエッジ検出を実行するように設計されたアルゴリズムを、動画上でエッジ検出を実行するものに迅速に変換できることを意味します。

Read single image

Read image frame from video

current_image = imread('flowers.png');
edge(current_image);

current_image = readFrame(vid);
edge(current_image);

動画処理は、エッジ検出を使用した例のように非常に単純な場合もあれば、前のフレーム内のオブジェクトの位置を考慮する必要がある追跡アルゴリズムのように、非常に複雑な場合もあります。

高度な動画処理の詳細については、以下の例を参照してください。

ステップ 4.動画の書き込み

処理の後、動画の各フレームをファイルに書き戻すことができます。次の関数を使用して動画ファイルを作成できます。

 >> vid_w = VideoWriter('newfile.avi'); >> open(vid_w)

変数 vid_w に、新しく作成したフレームを蓄積して動画を作成します。

MATLAB の詳細な例

すべてのコンポーネントをまとめて、動画の読み込み、表示、処理、書き込みの手順を示す詳細な例を見てみましょう。

%% Read and process a video into MATLAB
 
% Setup: create Video Reader and Writer
videoFileReader = VideoReader('tilted_face.avi');
myVideo = VideoWriter('myFile.avi');

% Setup: create deployable video player and face detector
depVideoPlayer = vision.DeployableVideoPlayer;
faceDetector = vision.CascadeObjectDetector();
open(myVideo);

%% Detect faces in each frame
while hasFrame(videoFileReader)

	% read video frame
	videoFrame = readFrame(videoFileReader);
	% process frame
bbox = faceDetector(videoFrame);
videoFrame = insertShape(videoFrame, 'Rectangle', bbox); 

	% Display video frame to screen
	depVideoPlayer(videoFrame);

	% Write frame to final video file
	writeVideo(myVideo, videoFrame);
	pause(1/videoFileReader.FrameRate);

end
close(myVideo)

このコードは MATLAB Central から ダウンロードできます。

高度な技術

コンピューター ビジョンのための動画処理アルゴリズム

動画処理に時間的相関関係を使用する MATLAB アルゴリズムは、「状態」の概念に基づいています。これは、アルゴリズムが現在のビデオフレームに対して機能しているだけでなく、前のフレームを使用してその出力を決定するという考えです。これは、事前の情報に基づいて将来の動作を教えるオブジェクトの追跡アルゴリズムでは非常に重要です。追跡の一般的な例として、オブジェクト内の個々のポイントを追跡してオブジェクトの位置を検出する KLT アルゴリズム が挙げられます。

動画処理アルゴリズムの開発者は、 Computer Vision System Toolbox™ のビジョン固有のアルゴリズムを使用することもできます。このアルゴリズムを使用することで、高速かつメモリ効率の良い方法で高解像度の動画を読み込み、視聴できます。このツールボックスには、3D 点群処理、ステレオビジョン、オブジェクト検出、追跡と認識、およびその他のアプリケーション用のアルゴリズムも含まれています。

動画処理の詳細

Use GPU Coder to generate CUDA code from a fog rectification algorithm written in MATLAB.
Learn the considerations, workflow, and techniques for targeting a vision processing algorithm to FPGA hardware
Learn how MATLAB addresses common challenges encountered while developing object recognition systems and see new capabilities for deep learning, machine learning, and computer vision.