音声処理も可能?OpenCV 4.5.5の新機能について解説!
thumb_opencv455_01
音声処理も可能?OpenCV 4.5.5の新機能について解説!
アンドエンジニア編集部
2022.02.10
この記事でわかること
OpenCVの最新バージョン4.5.5が2021年末にリリースされました
OpenCVは画像/動画の解析処理に特化したライブラリで、数多くのモジュールから構成されています
最新バージョンでは、動画の音声解析機能、QRコード生成機能が追加され、深層学習処理が高速化されています

OpenCV 4.5.5がリリースされました

img_opencv455_01

画像処理に特化したライブラリ「OpenCV」の最新バージョン4.5.5が、2021年12月30日にリリースされました。本記事では既にOpenCVを使ったことがある方向けに、最新バージョンにおける過去バージョンとの変更点を何点かピックアップし、分かりやすく解説していきます。

またOpenCVを使ったことがない方向けにも、OpenCVとは何か、何ができるのかについて触れています。ぜひご一読ください。

【参考】:OpenCV

OpenCVとは?できることや活用事例について詳しく解説!

OpenCVとは?

img_opencv455_02

OpenCV(Open Source Computer Vision Library)とは、2006年にIntel社によってリリースされたオープンソースのコンピュータビジョン向けライブラリです。 具体的には、画像処理や物体検出、機械学習などの処理を実装するためのライブラリです。

動作プラットフォーム

OpenCVはマルチプラットフォームを採用しており、動作プラットフォームとして以下のものが公式でサポートされています。

・Windows ・Linux ・Mac OS ・iOS ・Android ・Raspberry Pi

難しくなった?Windows11のデフォルトブラウザ変更方法を解説
Linuxエンジニアとは?詳細や仕事内容、必要なスキルを解説!

公式サポート言語

また、OpenCVは以下の言語をサポートしています。以前のバージョンではC言語もサポートされていましたが、メジャーバージョンのOpenCV 4.0のリリース時にサポートされなくなりました。

・C++ ・Python ・Java

Pythonでできること・できないことは?活躍している分野を解説
Javaとは?人気プログラミング言語Javaの将来性やメリットについて解説

サポートされている画像形式

OpenCVは画像処理ライブラリとしての一面が強く、様々なフォーマットの画像を入出力することができます。JPEG/PNGといったメジャーなものから、TIFFやWindows bitmap、PortableImageFormatなどがサポートされています。詳細は以下の公式ドキュメントを参照してください。

【参照】:OpenCV: Image file reading and writing

OpenCVの主な機能

ここでは、4.5.5以前からも提供されている、OpenCVの主なモジュールをご紹介します。

・core OpenCVの基礎となるようなモジュールです。OpenCVの各モジュールには依存関係がありますが、ほとんどのモジュールがこのcoreモジュールに依存しています。画像・行列データ構造の提供、配列操作、基本図形描画などを行う処理が実装されています。

・imgcodecs/imgproc imagcodecsはその名の通り、画像ファイルの入出力(エンコーディング/デコーディング)を担当します。OpenCVで画像を処理する際には必ず使用されるモジュールです。

imgprocは、取得してきた画像に対して様々な加工処理を行うモジュールです。ネガティブ/ポジティブ変換などのフィルター処理や、画像の色変換を行うことができます。imgcodecsモジュールに依存しています。

・objdetect 取得してきた画像を元に、人の顔や特定の物体を自動的に検出してくれるモジュールです。画像処理を伴うため、imgprocモジュールに依存しています。

・ml 機械学習(Machine Learning)に特化したモジュールです。SVM・決定木・ブースティング・ニューラルネットワークなどの技術が用いられています。

・videoio/video ここまでは画像(静止画)を処理するモジュールだったのに対し、これら2つは動画に対する処理を行うことができるモジュールになっています。videoioは静止画におけるimgcodecsと同じく、動画の入出力処理を担当します。videoモジュールは入力された動画について、動画内での物体追跡などを行うことができます。

・highgui higuiは、エンドユーザーがより使いやすいように、画像処理結果のGUI処理を行うモジュールです。各種プラットフォームにおいて、処理対象の画像/動画をウィンドウ表示したり、マウスやトラックバーによる操作を実現することができます。

ここで挙げたモジュール以外にも、OpenCVには数多くのモジュールが存在します。システムに組み込む際には、ぜひ下記の公式ドキュメントを参考にしてみてください。

【参照】:OpenCV: Image file reading and writing

OpenCV 4.5.5における変更点・新機能

img_opencv455_03

本章では、4.5.5で新しく実装・変更された機能について解説します。以下に挙げるのは一部ですので、詳細は下記公式サイトを参照してください。

【参考】:OpenCV 4.5.5

動画解析用モジュールに音声解析機能が追加された

OpenCVの4.5.5以前のバージョンでは、OpenCVは動画の映像部分の解析機能しか持っていませんでした。これに対し、OpenCV 4..5.5ではマルチメディア解析プラットフォームである「Microsoft Media Foundation」または「GStreamer」と組み合わせることで、動画の音声解析ができるようになっています。

この機能追加により、これまでできなかった動画音声からの字幕生成や、逆に動画音声に対して特定のデータを挿入し、動画の音声を変換することがより簡単にできるようになりました。

QRコード生成機能が追加された

OpenCVのobjdetectモジュールには、以前のバージョンからQRコード読み取り機能が提供されていました。今回の4.5.5バージョンではQRコードの「生成」機能が新しく提供されています。

今までQRコードを生成するためには、Javaではzxing、Pythonではqrcodeといった言語それぞれに固有なライブラリをインストールする必要がありました。一方で、今回リリースされたOpenCV4.5.5を用いることでそれぞれの言語の違いを吸収してQRコードを生成することができるようになりました。

SuperPixelに新しいアルゴリズムが増え、性能が向上した

Superpixelとは、画像処理の手法の1つです。ある画像について、色またはテクスチャが似ている領域を小分けにする時、それぞれの小領域をSuperPixelと呼びます。画像中から物体を認識したり、画像を加工したりする際の前処理としてよく行われます。

OpenCV中で実装されてきたSuperPixelの方式として、下記があります。

・LSC (Linear Spectral Clustering) ・SEEDS(Superpixels Extracted via Energy-Driven Sampling) ・SLIC(Simple Linear Iterative Clustering)

【参考】:[OpenCV: Superpixels](https://docs.opencv.org/4.5.5/df/d6c/groupximgprocsuperpixel.html)

バージョン4.5.5ではこれらに加えて、「F-DBSCAN」という方式が追加されました。この方式を採用すると、従来のアルゴリズムよりも分割にかかる時間が短くなることがOpenCV公式のGitHubにて報告されています。

OpenCV.jsの深層学習がブラウザでも行えるようになり、高速化した

OpenCV.jsはJavaScript上でOpenCVを用いることができるライブラリです。サーバ上ではなく、ブラウザ側でOpenCVの機能を使うことができることから、広く扱われているライブラリとなっています。

OpenCV.jsにはDNN(Deep Neural Network、深層学習)を用いて物体認識を行う機能があるのですが、バージョン4.5.5からこれが高速化しました。この高速化には、WebNNという技術が用いられています。

WebNNとは、ブラウザ上で機械学習を行えるようにする取り組みまたは技術のことで、今現在APIとして標準化が進んでいます。ブラウザ上で機械学習処理を行うメリットとしては、以下のようなものがあります。

・サーバとの通信を前提としないため、低レイテンシで実行できる ・外部に通信をしないため、個人情報などのユーザデータが守られる ・オフラインでも実行できる ・サーバ環境の用意が不要なため、低コスト

【参考】:Deep Neural Networks (dnn module)

【参考】:Web Neutral Network API]Web Neural Network API

JavaScriptとは?人気のJavaScriptを5分で学ぶ

最新のOpenCVを使って、画像解析を行ってみよう 

img_opencv455_04

OpenCVは画像/動画に対する様々な処理を行うことができる、多機能なライブラリです。Webシステム内の処理に使うことはもちろん、家電など物理的な機器の中に実装される、組み込み系システムにも用いることができます。

OpenCVはオープンソースライブラリであり、今後も積極的な機能追加、バージョンアップが行われる予定です。画像/動画の処理が必要になった際には、ぜひこの記事を参考にOpenCVライブラリを利用してみてください。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT