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()

 

等高線を試してみた動機は、写真のデッサン化です。

水彩画を描く手法の中には、詳細なデッサンを描いてから着色する方法がありますが、この等高線を使えば、描きたい写真の風景などを、デッサンを手で描くことなく自動化し、着色から始められるのではないかという不純な動機です。(まだ試していませんが)

 

細か過ぎてうるさい部分は、更なる画像処理で何とかしたいものです。

python_image_1.jpg
python_image_2.jpg

北アルプス 燕岳

python_image_3.jpg
python_image_4.jpg

高野山 金剛峯寺の蟠龍庭

python_image_5.jpg
python_image_6.jpg

高尾山ケーブルカー

python_image_7.jpg
python_image_8.jpg

飛鳥寺

 

 

今回はPILを使用した画像処理です。OpenCVは使用していません。

 

使用した画像はすべて私のオリジナルです。

 

 

 

 

(JF1VRR)