読者です 読者をやめる 読者になる 読者になる

粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

Pythonで始めるコンピュータビジョン ( #1 環境設定と基礎的なプログラムについて)

(注) このメモはしばらく執筆中の状態で放置されることと思います。
(注) Programなどは[実践コンピュータビジョン Jan Erik Solem ]を元にしています。著作権云々で警告を受けた場合前触れ無く記事を削除する予定です。あちらもWebにいろいろ公開してる(後述)ので何も言われないと思いますが。

記事のシリーズ化について

正直、これからの記事は先ほどの本の内容のメモになる予定ですので、
よくWebである丁寧な講座形式みたいにはしない予定です。(あの手のサイトはすごく手間がかかっています。作者様には頭が上がりませんね。)


ほれほれ〜買うんじゃ〜。
https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5-%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3-Jan-Erik-Solem/dp/4873116074www.amazon.co.jp

なお、悪い本ではないですがOpenCVなどの高度な機能を用いたプログラムを書くとなるとこの内容はやや物足りないと言わざるを得ないです。
それでもすべてコードが公開されていてコンピュータビジョンの基礎がわからずとりあえず試してみる場合には結構いい本ではないかと思います。

すべてのサンプルプログラムを下記に置いていてくれています。
Programming Computer Vision with Python
日本語で説明しているサイトもあったりして。
実践コンピュータビジョン サンプルプログラム
この点だけで素晴らしいと思ってしまいます。(買った人的には特別感ないかもしれませんがねw)


基本的な環境のSetup

まず、今回は前提としてLinuxDebian環境でやることにします。
まずは以下の過去記事などを参照してOpenCVなどのセットアップをしてください。
自分はUbuntu16.04上で進めていきたいと思います。
ossyaritoori.hatenablog.com
ossyaritoori.hatenablog.com

これらの記事が終了した時点で、

  • OpenCV
  • Python2 (今回のコードはすべてPython2で書かれます!)
  • Numpy
  • PIL (OpenCVがある時点でいらない気もしないではない)

なんかの環境が整っていることかと思います。

本にあるとおり追加でMatplotlibとScipyをインストールしたいので以下のコマンドを打ちましょう。

sudo apt-get install python-matplotlib python-scipy

Numpy、PILなんかが怪しい場合は上に加えてNumpyなどと書けばよいです。apt-get最高。

PILとOpencvについて

PILはpythonを触れるにあたって初めて知ったんですが、画像の入出力のライブラリらしいです。
そう、正直OpenCVと仕事領域がかぶります。

本ではPILを使ってますが、正直OpenCVを使いたいことが多々あるのでうまく使い分ける感じでしょうか。
正直今後どっちを使うか決めかねていますが、とりあえずはPILで書いて後にOpenCV仕様にしようかなと思ってます。

両者の相互変換については以下のブログがわかりやすかったです。RGBとBGRが変わるんですね。
tatabox.hatenablog.com

サンプルコード:ヒストグラム正規化

サンプルコードの中でも最も現実的に使い勝手の良さそうな奴をチョイス。
正規化は機械学習でも行いますもんね。今回は輝度の正規化です。