AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  OpenCVとは?5分で分かるOpenCVでできることまとめ

公開日:2019.09.18 [最終更新日]2019.09.17

OpenCVとは?5分で分かるOpenCVでできることまとめ

カテゴリー: AI(人工知能)の知識

OpenCVとは?5分で分かるOpenCVでできることまとめ

こんにちは三谷です。
今回は画像認識のディープラーニングで活躍するオープンソースの画像処理ライブラリ、OpenCVについてまとめてみました。
画像認識のAI(人工知能)を作りたい方は是非活用してください。

OpenCVとは?

OpenCVは、画像処理・画像解析および機械学習等の機能を持つオープンソースのライブラリです。オープンソースですので、基本的に無料で使用することができます。Pythonを始め、C/C++、Java、MATLAB用として公開されており、もともとはインテルが開発・公開しています。
OpenCVの公式Webサイトはこちらです。https://opencv.org

OpenCVのバージョンについてまとめ

現在の最新バージョンは2019年4月に公開されたOpenCV 4.1ですが、OpenCV 3系は約3年半前からマイナーバージョンアップを続けていたため、情報はOpenCV 3のほうが多くなっているかもしれません。
OpenCV 4.0.0からは、QRコードを検出する機能が標準で入ったなど、進化を続けています。

OpenCVでできること一覧

OpenCVは、できることが非常に多くあります。ここでは、機能別にどのようなことができるのかを確認してみましょう。

◆画像の読み込み・表示

みなさんが普段目にしている画像は、コンピューターから見れば数値の羅列です。画像データに含まれるピクセルごとの色情報はRGBと呼ばれる色情報として、0~255までの数値で表されます。その数値情報を読み込み、プログラム内で使用できるようにリスト化してくれる機能がOpenCVには搭載されています。

◆画像の作成・保存

読み込みだけではなく、画像を作成したり保存したりもできます。読み込んだ画像に何らかの処理を加えたり、数値情報を元に画像ファイル自体を作成したり保存(上書き保存)したりできます。

◆画像のトリミング(切り抜き)・リサイズ・重ね合わせ

画像ファイルはリスト形式で読み込まれ、その画像に対してトリミングをしたり、画像のリサイズなどをすることができます。バラバラの大きさの画像データを元に機械学習すると制度に影響があったりしますので重要な画像の前処理となります。

◆画像の回転・上下反転・左右反転

画像を元にディープラーニングをする場合、非常に多くの教師データが必要となります。一般的な教師あり学習のクラス分類問題だと1クラスごとに最低でも1,000枚以上の画像データが必要となると言われています。
そのような大量の画像を用意するのは非常に大変なため、画像をトリミングしたり、回転したり、上限反転したり、左右反転することで全く異なるピクセル配置のデータとして扱うことができ、データの水増しをすることができます。データの水増しのことをデータオーグメンテーション(Data Augmentation)といいますが、そのような処理にもOpenCVは活用されるのです。

◆グレースケール変換・色チャンネル分解・減色処理

画像データの色情報に対しての処理も行えます。
画像のディープラーニングを行なう際には、非常に多くの計算リソースが必要となることが多くあります。その際には、場合に応じて3チャンネルあるカラー情報を利用せず、一度グレースケールに変換することで計算量を減らし、演算時間を抑える事もできるようになります

◆モザイク処理・マスク処理・2枚の画像を合成

機械学習目的では多くは使われませんが、モザイク処理やマスク処理を行なうこともできます。一部にモザイク処理を行うことでデータの水増しに使われることもあります。

◆図形の描画・文字の描画

こちらも機械学習ではあまり使用されませんが、図形や文字を描画することもできます。

◆ノイズ除去・平滑化・ぼかしフィルタ・メディアンフィルタ・ガウシアンフィルタ

画像データはきれいなものばかりとは限りません。全体にノイズが乗っているような場合に機械学習の精度に影響することもあります。その場合には、様々なフィルター処理を通すことでノイズを除去するなどの作業が必要になることもあります。OpenCVにはあらかじめいくつかのフィルター処理が含まれているため、ノイズ除去の画像前処理を簡単に行えます。

◆物体検出

物体検出とは、人や車などの物体を囲む四角い領域(バウンディングボックス)の場所を特定することを目標とする処理です。この物体認識をした領域に対して、ディープラーニングで学習させたクラス分類の学習済みモデルを使用することで、ある画像のどの位置に何があるのかを認識できるようになります。物体検出の中には、顔検出・アニメ顔検出・人物検出などが含まれます。

◆テンプレートマッチング

テンプレートマッチングとは、物体の一部が写ったある画像を元に、全体の写った画像の中でどこにその一部分が該当するかを認識する方法です。部分的な画像をテンプレートとして少しずつずらしていくことで、どこに該当する部分があるのかを認識できます。

OpenCVを導入するメリットとは

◆画像の前処理に使える

ノイズのある画像の処理や、データの数を増やすデータオーグメンテーションなどで画像を編集する作業は非常に繁雑です。この作業を簡単に行えるOpenCVは、画像処理をする上では必須と言えます。

◆クラス分類のための物体検出に使える

最終的には畳込みニューラルネットワークなどを利用したクラス分類をする際にも、画像のどこに何が存在しているのか、という物体検出でOpenCVは効果を発揮します。

OpenCVを無料でインストールする方法

OpenCVをインストールする手順は、こちらの記事(画像編集用ライブラリ「OpenCV」のインストール方法)にまとめてあります。

OpenCVの使い方

OpenCVの使い方については、こちらの記事(OpenCVの使い方を徹底解説)にまとめてあります。

OpenCVをより詳しく学ぶ方法

https://ai-kenkyujo.com/seminar/
AI(人工知能)とは?という初歩の内容から、ディープラーニングを使用した画像認識についてまで体系的に学べるセミナーです。
Day5 プログラミング演習セミナーでは、OpenCVを使った画像処理のやり方や畳込みニューラルネットワークを使用したディープラーニングによる画像認識のカリキュラムを学ぶことができます。

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識


OpenCVの開発者によって書かれた本です。インターフェースはC++を元に書かれていますが、OpenCVについて最も詳しく書かれた本と言っていいでしょう。

OpenCVとPythonによる機械学習プログラミング

OpenCVの使用方法だけではなく、サポートベクターマシンやクラスタリングを使用した機械学習アルゴリズムの実装までできる書籍です。

まとめ

いかがだったでしょうか?OpenCVは画像に特化して様々な処理ができることがご理解いただけたのではないでしょうか。
画像認識というと難しい印象がありますが、意外と簡単に試してディープラーニングさせることができます。是非PythonとOpenCVをインストールして画像処理の世界に飛び込んでみてください!

タグ:


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)セミナー開催中
AI(人工知能)入門セミナー AI(人工知能)入門セミナー

AI入門ブログの中の人

AI研究所 研究スタッフ

【マサミ】

アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。


【三谷】

AIセミナー責任者、講師。AIについての幅広い知識を持ち、人に分かりやすく伝える技術を持つ。特にAIを事業や仕事に取り入れる方法について日々講義しています。

AI研究所Twitter

Facebookページ