Pythonによる画像処理 等高線
投稿日 2015/01/30
Pythonを使用して画像処理のまねごとをやってみました。参考にしたのは「O'REILLY 実践コンピュータビジョン」jan Erik Solem著 相川愛三訳 です。Pythonは私にとっては馴染みのない言語です。上の参考本がPythonを使用していたので仕方なく使っていますので、まだ完全に理解して使っている訳ではありません。そうお断りしておいて....
今回やってみたのは、等高線化です。環境は32bit(x86) windows XP sp3、使用したPythonのバージョンは2.7.9です。参考本の説明に従いPython 3.xは避けました。ただしPythonをインストールしただけでは動きません。処理によってこれらをすべて使用するとは限りませんが、インストールしておいたほうがよさそうなものに、PIL(Pythonイメージ処理ライブラリ)とMatplotlib(グラフ描画ライブラリ)、NumPy(科学技術計算パッケージ)、SciPy(数学パッケージ)、python-dateutil(w/six)、pyparsingがあります。
次のような手順です
Python2.7.9をインストールする
環境変数のpathを設定しておく(以下を追加)
C:\python27;C:\Python27\Scripts;C:\Python27\Lib\site-packages
ez_setup.pyをC:\python27に置く
python ez_setup.pyを実行
easy_install pipを実行
numPy 1.9.1をインストール(win32 Python2.7用を選ぶ)
SciPy0.15.1をインストール(win32 Python2.7用を選ぶ)
PIL 1.1.7をインストール(pytho2.7用を選ぶ)
matplotlib 1.4.2をインストール(win32, py2.7を選ぶ)
pip install python-dateutilを実行 python-dateutilとsixがインストールされる
pip pyparsingを実行
以下のサイトを参考にインストールしました。
http://www.aoki.ecei.tohoku.ac.jp/~ito/python_windows.html (青木研究室)
http://halap.hatenablog.com/entry/2013/09/23/001520 (Think and error 試行錯誤)
(各サイトには感謝いたします。)
プログラムは、こんなに簡単です。(これが正しいかどうかは不明ですが処理はできているようです)
プログラム・ソース
#Contour line
from PIL import Image
from pylab import *
im = array(Image.open('sample.jpg').convert('L'))
figure()
gray()
contour(im, origin='image')
show()
等高線を試してみた動機は、写真のデッサン化です。
水彩画を描く手法の中には、詳細なデッサンを描いてから着色する方法がありますが、この等高線を使えば、描きたい写真の風景などを、デッサンを手で描くことなく自動化し、着色から始められるのではないかという不純な動機です。(まだ試していませんが)
細か過ぎてうるさい部分は、更なる画像処理で何とかしたいものです。
北アルプス 燕岳
高野山 金剛峯寺の蟠龍庭
高尾山ケーブルカー
飛鳥寺
今回はPILを使用した画像処理です。OpenCVは使用していません。
使用した画像はすべて私のオリジナルです。
(JF1VRR)