Pythonで画像処理や加工する方法を基礎の基礎から解説!

Pythonを使用すれば、さまざまな画像認識や加工などの画像処理が簡単にできます。

PythonではpillowopenCVなどの画像処理ライブラリが用意されていますが、どの処理にはどれが向いているのかわからない方もいるかもしれません。

この記事では、Pythonの画像処理について、以下の内容で解説していきます!


【基礎】画像処理とは
【基礎】画像処理の種類
【発展】openCVを使った画像処理
【発展】pillowを使った画像処理

これを機会に画像処理について学んでいきましょう!

画像処理とは

まずは画像処理とはなにかについて知っておきましょう。

画像処理とは、デジタルの画像を様々なアルゴリズムを使って加工していくことを言います。

身近なところで言えば、画像のノイズを除去する操作も画像処理の一つです。

この画像のノイズの除去は、注目するピクセルの周囲8つの色の平均値を求めて置き換えることで、実現されています。

また、Instagramなどの画像共有サービスでは、この画像処理がとても多く使われています。

画像を投稿する時のフィルタはすべて画像処理で、画像に独特な効果を生み出していますよね。

画像処理の意味と操作について、なんとなくは分かって頂けたでしょうか?

画像処理の種類

先程解説したノイズの除去以外にも、様々な画像処理の種類があります。

画像処理の基本的な種類について見ていきましょう!

またこれから使う画像は画像処理でよく使われている画像(lenna)になります。

(引用:https://en.wikipedia.org/wiki/File:Lenna_(test_image).png

グレースケール変換

みなさんが想像する画像は、たいていカラーの場合が多いと思います。

しかしカラーの画像は1ピクセル毎の情報が多く素早い計算が必要な処理には向きません

そこですべての色を256階調の白〜黒に置き換えるグレースケール変換をする必要が出てきます。

変換方法には、RGBそれぞれの数値(0〜255)を直接置き換える方法や、それぞれの値に係数を掛ける方法など、様々な方法があります。

2値化

2値化は、設定した値(しきい値)に分けて白と黒だけで画像を表現する方法です。

2値化をすることで画像の中の輪郭を抽出することが出来ます。

輪郭を抽出することが出来るというのは、画像の中の背景と対象を切り離して分析することが出来るようになります。

平滑化

平滑化は先程のノイズ除去と同じアルゴリズムで成り立っています。

先程解説したように周囲の値の平均を取ることで画像にメリハリをなくすことが出来ます。

ここでは紹介していませんが画像にシャープネスを与えた場合、ノイズが出てしまうことがあります。

その場合はこの平滑化フィルタを通すことでノイズを消しながらシャープネスを上げることが出来ます。

openCVを使った画像処理

ここからは、openCVを使った画像処理について見ていきましょう。

openCVはコンピュータビジョンライブラリで、Pythonだけではなくいろいろな言語が使うことが出来る画像処理のデファクトスタンダードになっています。

先程のようなごく簡単な画像処理はもちろん、顔の認識文字の検出物体の追跡などの様々なアルゴリズムが用意されていて、簡単に扱うことが出来ます。

詳しくはこちらをご覧ください。

Pythonで画像処理をするならOpenCVがオススメ!
更新日 : 2019年7月31日

pillowを使った画像処理

ここからは、pillowを使った画像処理について見てみましょう。

pillowは、開発が止まってしまったPILというライブラリの後継として開発されているライブラリです。

こちらはopenCVとは違ってPythonだけのライブラリになります。

pillowはopenCVほどの機能はありませんが、画像の回転やトリミングなどの基本的な機能を使いたい場合におすすめしたいライブラリです。

詳しくはこちらをご覧ください。

また、pillowで読み込んだ画像をNumpyのndarray型に格納するとNumpyの様々な関数で画像処理をすることも出来ます。

Numpyについて、詳しくはこちらの記事をご覧ください。

まとめ

この記事ではPythonの画像処理の基本的な部分について解説をしてきました。

画像処理という単語はよく見かけるけど意味がよくわからなかった方は、分かった頂けたでしょうか?

また、これから画像処理を始めたいという方も、この記事を読んで何が向いているのか分かって頂けたら幸いです。

なお、今Pythonを学習している方は以下の記事もどうぞ。

はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。

復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。

Python 入門完全攻略ガイド

 

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍テック編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー