.net column
.NET開発者のためのブログメディア

Pythonでの画像処理はAIへの第一歩

 
Pythonでの画像処理はAIへの第一歩
SE
Pythonでも画像処理のようなことができるのですか。
PM
もちろんできます。ライブラリを利用すれば、Pythonでは初心者でも簡単に画像処理が行えます。

画像処理とは?


画像処理とは、ある画像を例えば色で分けたリして画像を加工・処理して情報を得ることをいいます。画像処理は、特に顔認証技術で知られています。

ここではPythonでの画像処理を紹介します。ライブラリが充実しているPythonがAI向きであることがよく分かるでしょう。

Pythonでの画像処理の方法

Pythonでの画像処理には、ライブラリOpenCVがよく知られています。ここではOpenCVを初めとするPythonでの画像処理でよく利用されるライブラリのインストール方法をまず説明し、その後にPythonでの画像処理を実際に行っていきます。

使用するライブラリは、OpenCVはもちろん、NumPyやMatplotlibをインストトールして画像処理を実装します。

Jupyter notebook

Pythonのソースコードをあれこれと書きながら、その結果がすぐに分かるJupyter notebookをまずインストールします。Jupyter notebookではコンパイルの必要がないので、手間が一つ省けます。

Jupyter notebookのインストール

Python3がインストールされて、パスが通っていることを前提にします。開発環境はWindows10です。PowerShellを立ち上げて次のコマンドを打ち込めばインストールできます。

次のコマンドを打ち込むとJupyter notebookがブラウザで起動します。

NumPy、Matplotlib、OpenCVのインストール

これは余談ですが、ローカル環境でPythonを走らせたい人のために画像処理に必要なライブラリをインストールしておきます。NumPy、Matplotlib、OpenCVをインストールします。
次の通りにコマンドを打ち込んでください。

画像処理

それではPythonによる画像処理を行います。ここでは公開されている画像を使ってPythonによる画像処理の一端を紹介します。

まず、次のGithubから画像をgit clone xxxxxで拾って来て下さい。
piratefsh/image-processing-101

それで始めます。

Jupyter notebookに画像をアップ

Jupyter notebookに新たにフォルダーを作り、それをrenameしてimagesにします。そこにGithubで得た画像を全てアップロードします。

次に「New」から「Python3」をクリックして、新規ノートブック「Untitled.ipynb」を作成します。

これで準備が整いました。

画像フォーマットを知る

OpenCVでは、画像はNumPy配列の3次元配列で表されます。それでは、その様子を次のソースコードで見てみましょう。

Jupyter notebookの一番下の「Untitled.ipynb」をクリックして下さい。するとコードが書き込めるページが現れます。

このソースコードを上部の「Run」をクリックして走らせると、3次元配列が下部に表示されます。

グレースケール

次にプログラムの結果の下に、次のソースコードを書き込んで下さい。すると画像がモノクロに変わります。

これで元画像が表示されます。そして、

このソースコードをJupyter notebookで走らせるとモノクロ画像に変わります。

セグメーション

画像情報を集める際に、画像の特徴ごとに分割することで画像の振り分けができます。これをセグメーションといいます。

画像のセグメーションで一番簡単な方法は閾値処理です。或る閾値以上は白のピクセルに、未満は黒のピクセルにすれば、画像の特徴が現れます。一般的には2値画像にします。グレースケールも2値画像の一例です。

次のコードを走らせて下さい。

SE
Pythonの画像処理でよく利用されるライブラリやJupyter notebookのインストールの仕方がよく分かりました。
PM
顔認証技術などAIの発展は目覚ましいものがあり、いま世界中でしのぎを削っています。Pythonの画像処理の方法を身につけて実践してみてください。

Pythonによる画像処理

この他にもまだ、Pythonの画像処理は語り尽くせないのですが、少しは参考になったでしょうか。これが発展していくと顔認証システムへと一直線です。

Pythonの画像処理に興味がある方は、色々と調べて実践してみるといいでしょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags