【初学者向け】PythonとOpenCVによる画像処理超入門①(~画像処理の基礎と画素値(ピクセル値)にアクセス~)

PythonとOpenCVによる画像処理超入門
こんにちは、都内のスタートアップでデータ分析屋をしている、やじろべえ(@yajirobe_papa)です。
私はこれまで画像処理や画像認識といった業務に携わり、またこのブログでも画像処理の記事を書いたりしてきたのですが、せっかくなので勉強したことを体系立ててまとめていこうと思いました。
初学者の方も理解しやすいように画像処理の基礎からまとめていく予定ですので、是非最後までお付き合いいただけると幸いです。
また、内容については理論的な事も書きつつも必要に応じてPythonコードも書いていきたいと思います。
使用する画像処理ライブラリは、デファクトスタンダードであるOpenCVを使っていきます。
ということで、今回の記事はその第一回目です。
✔本記事の内容
  • そもそも画像処理って何?
  • デジタル画像処理における画素(ピクセル)値の考え方
  • OpenCVを使って画素値にアクセス

 

そもそも画像処理って何?

画像処理とは、入力を画像とし、それに対して何かの処理を施すことを意味します(そのままですね)。
また、画像処理は狭義の画像処理画像解析に分けることが出来ます。
”狭義の画像処理”とは、例えば暗い画像を見やすくするために明るさやコントラスト変換をしたり、画像にボカシ処理を施したりするような処理のこと言います。
”画像解析”とは、入力画像に対してその画像に写っている興味対象について何らかの情報を抽出したり、記述を得ることを言います。
用語については厳密に決められているわけでなく、あくまで画像処理を分類すると大まかにはこの二つに分類されるという意味です。

デジタル画像処理における画素(ピクセル)値の考え方

画像を撮影するデジタルカメラは、撮影レンズを使って対象からの光を撮像素子に集光し、さらにそこから読みだした信号から画像のデジタルデータを作り出します。
世の中には様々なデジタルカメラ機器がありますが、原理は大きく変わっていません。
デジタルカメラの構成についてはこの記事では深入りはしませんが、興味ある方は専門書を参考にしていただければと思います。
撮像素子の上に結像した像は、信号処理(正確には標本化と量子化処理)をすることでデジタル画像に変換されます。
こうして変換されたデジタル画像(以下、画像と呼ぶ)は、多数の画素ピクセル)で構成されており、画素の値のことを画素値と呼びます。
つまり、画素とはデジタル画像において色情報を持つ最小要素となるわけです。
また、画像が横M個、縦N個の画素で構成されているとき、画像を構成する画素の個数はM×N個となります(これを横M画素×縦N画素の画像と呼びます)。
OpenCVでは、座標系は左上が原点となっていることに注意ください。
では、いよいよ次からはOpenCVを使って画像を読み込んで、画素値にアクセスしてみましょう。

OpenCVを使って画素値にアクセス

画像の読込み、画素値にアクセス
今回は以下の画像を使います。
OpenCVで画像を読み込むには、cv2.imread関数を使用します。
cv2.imread関数は、カラー画像を読み込むとカラーチャンネルがBGRの順番となって色情報が格納されます。
いきなりカラーチャンネルとかBGRとか出てきましたが、ここについては次回詳しく解説したいと思いますので、安心してください!
今はcv2.imreadを使えば画像が読み込めるとだけ覚えておけばOKです!
では、いよいよ画像を読み込んで画素値にアクセスしますが、まったく難しいことは無く、コードで書くと二行で終わります。
画素値の取得は、画像に対して取得したい座標(X, Y)を指定するとその座標におけるBGR値がタプルとして返されます。
座標指定の書き方は、img[y, x]でアクセス出来ます
以下では、X座標=50, Y座標=100の位置における画素値を取得しています。
import cv2
img = cv2.imread('./space-shuttle.jpg')
print(img[100, 50])
#[183 187 188]

 

また、三つ目の引数を指定することでカラーチャンネルを指定して画素値を取得することも出来ます。
img = cv2.imread('./space-shuttle.jpg')
print(img[100, 50, 2])
# 188

✔画素値へのアクセスについてのまとめ
  • img[y, x] → タプルとして(B, G, R)を取得
  • img[y, x, 2] → 整数で画素値(R)を取得

 

まとめ

今回は、画像処理の基礎から解説をして、画素の考え方そしてOpenCVを使って画素値(ピクセル値)へのアクセスまでやってみました!
次回はカラー画像とグレースケール画像までを記事にしようと思います!
では、今回はこの辺で!

参考文献

 

人気記事

タイトルとURLをコピーしました