Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
コンピュータビジョン

1章 基本的な画像処理
Pythonおよび統合開発環境の
インストール
●

●

コンピュータビジョンではPythonは2.7を
使用します(3.Xは使用しません)
統合開発環境と併せてインストールしてください
–

分からない方には別スライドでインストール方法およ...
目次
●

Pythonおよび統合開発環境のインストール

●

使用するライブラリ/モジュールのインストール
–

PIL

–

NumPy

–

Matplotlib

–

SciPy

【追記】今回のプレゼンではライブラリを1つずつ...
目次
●

基本的な画像処理

●

ヒストグラム平坦化

●

平坦画像

●

主成分分析

●

画像をぼかす

●

画像の微分

●

モルフォロジー(9章で説明します )

●

ノイズ除去
使用するライブラリ/モジュールの
インストール
●

PIL
一般的な画像の取り扱いのほか、サイズ変更、
切り抜き、回転、色変換といった画像の基本
操作を多数備えている
http://www.pythonware.com/products/pi...
使用するライブラリ/モジュールの
インストール
●

PIL
mac OS にインストールしたい場合
http://pythonmac.org/packages/py25-fat/index.html
からインストーラをダウンロードして
インス...
使用するライブラリ/モジュールの
インストール
●

NumPy
Pythonを使って科学技術計算をする際用いる
パッケージで、ベクトル、行列、配列オブジェクト、
線形代数関数などが備わっている
http://sourceforge.net/p...
使用するライブラリ/モジュールの
インストール
●

Matplotlib
数字を使ってグラフを描いたり、画像に点や直線、曲線を
描画する時に役立つライブラリ
http://matplotlib.org/downloads.html
から対応す...
使用するライブラリ/モジュールの
インストール
●

SciPy
NumPy上に構築された数学パッケージ。
数値積分や最適化、統計、信号処理、画像処理
などの機能を提供する。
http://sourceforge.net/projects/sc...
基本的な画像処理
●

1ページのプログラムを実行してください
–

●

●

表示するには「pil_im.show()」

2ページのプログラムを知っておいてください
2ページから2ページに記載されている
imtools.pyを作成してくだ...
画像に点と線の描画
●

●

4ページのプログラムを実行して、
画像と点と線を描画してください
表1-1、1-2、1-3を参考にマーカーを変えて
プログラムを実行してください
画像の等高線
●

等高線
–

画像の明るさをその場所における標高と見なして
地形図と同様に表現すること
画像のヒストグラム
●

ヒストグラム(Histgram = 度数分布図)
–

画像の明暗の度合いを表した図

参考:http://www.asahi-net.or.jp/~ax2s-kmtn/ref/histogram.html
画像の等高線とヒストグラム
●

6ページに記載されているプログラムを
実行してください
インタラクティブな注釈
●

7ページに記載されているプログラムを
実行してください
配列による画像表現
●

Numpyの配列は多次元であり、ベクトルや
行列、画像を表現できる
im = array(Image.open('empire.jpg'))
print im.shape,im.dtype
=> (800,569,3)...
グレーレベルの変換
●

グレーレベル変換は、画像のピクセルごとに適用
され、全てのピクセルが個別に取り扱われ、その
値が特定の「再マッピング」ルールによって
別の値に設定される
–

9ページのプログラムを記載して実行して
ください
●

–...
画像のサイズ変更
●

Imtools.pyに1.3.3の関数を追加してください

●

同様に1.3.4の関数を追加してください
ヒストグラム平坦化
●

●

●

ヒストグラムの度数を平坦化することで、
画像にメリハリをつける

12ページのプログラムを記載して実行
してください
13ページの関数をimtools.pyに追加して
ください
画像の主成分分析
●

主成分分析
–

分かりやすく説明しているページがあった
●

–

●

●

機械学習でも少し触れましたね

http://www1.doshisha.ac.jp/~mjin/R/24/24.html

画像処理にお...
画像をぼかす
●

ガウス関数を画像の処理に応用する
–

ある点に近い画像の輝度(きど)値はその点に近く、
遠くなるほど輝度値は差が大きくなることを考慮し
平均値を計算する時にガウス関数を利用する

–

39ページのプログラム(2つ)を実行...
画像の微分
●

微分について(念のため)確認
y = x^2 → dy/dx = 2x
–

なぜ微分をする?
●

●

画像の輝度が大きく変化している点(境界)を探す際、
変化が大きい箇所を強調するために微分を用いる
ディジタル画像に対す...
1次微分(差分)によるエッジ検出
●

通常の差分演算を行うと、画面に含まれる雑音成分
にも反応してしまうめ、雑音の低減とノイズの除去
の両方を持つフィルタが提案されている
–

Prewittフィルタ

-1

-1

-1

0

0

0...
1次微分(差分)によるエッジ検出
●

Prewittフィルタの水平方向に対する使用例
6

6

4

4

3

3

3

2

2

1

6

3

3

8

3

3

6

4

9

2

3

2

6
-1
→

0

1...
1次微分(差分)によるエッジ検出
●

20ページのプログラムを実行してください
–

そのままだと出力されないので、以下のコードを
追加してください
from pylab import *
・・・
for i in (im, imx, imy...
1次微分(差分)によるエッジ検出
●

21ページのプログラムを実行してください
モルフォロジー(物体を数える)
●

時間がないので第9章で
画像のノイズ除去
●

●

25~26ページの関数denoise()を
ファイル名rof.pyで保存してください
26ページ中央のプログラムを以下のコードを
追加し、実行してください
・・・
from pylab import *
title...
まとめ
●

今回の章で以下の画像処理を会得しました
–

画像の作成、切り取り、貼り付け、注釈等
基本的な操作

–

画像のヒストグラムの取得

–

グレーレベル変換

–

画像の平均化

–

主成分分析による次元の減少

–

画像...
来月の読書会も頑張りましょう!
Upcoming SlideShare
Loading in …5
×

コンピュータビジョン 1章

6,056 views

Published on

「静岡Developers勉強会 コンピュータビジョン(1)」で使用したスライドです。

Published in: Technology
  • Be the first to comment

コンピュータビジョン 1章

  1. 1. コンピュータビジョン 1章 基本的な画像処理
  2. 2. Pythonおよび統合開発環境の インストール ● ● コンピュータビジョンではPythonは2.7を 使用します(3.Xは使用しません) 統合開発環境と併せてインストールしてください – 分からない方には別スライドでインストール方法および 統合開発環境PyCharmを紹介します
  3. 3. 目次 ● Pythonおよび統合開発環境のインストール ● 使用するライブラリ/モジュールのインストール – PIL – NumPy – Matplotlib – SciPy 【追記】今回のプレゼンではライブラリを1つずつ手動でインス トール する方法を採用しましたが、「setuptools」というパッケージ管理用 パッケージを使用したほうが簡単です。 http://www.lifewithpython.com/2012/11/Python-package-setuptools-pip.html 参考URL:
  4. 4. 目次 ● 基本的な画像処理 ● ヒストグラム平坦化 ● 平坦画像 ● 主成分分析 ● 画像をぼかす ● 画像の微分 ● モルフォロジー(9章で説明します ) ● ノイズ除去
  5. 5. 使用するライブラリ/モジュールの インストール ● PIL 一般的な画像の取り扱いのほか、サイズ変更、 切り抜き、回転、色変換といった画像の基本 操作を多数備えている http://www.pythonware.com/products/pil/ 32bit版Windows限定。64bit版Windowsを使用して いる場合は http://www.lfd.uci.edu/~gohlke/pythonlibs/ から「Pillow-2.3.0.win-amd64-py2.7.exe」を ダウンロードしてインストールする ● この後も64bit版Windowsを使用している場合このHPを利用する
  6. 6. 使用するライブラリ/モジュールの インストール ● PIL mac OS にインストールしたい場合 http://pythonmac.org/packages/py25-fat/index.html からインストーラをダウンロードして インストールする
  7. 7. 使用するライブラリ/モジュールの インストール ● NumPy Pythonを使って科学技術計算をする際用いる パッケージで、ベクトル、行列、配列オブジェクト、 線形代数関数などが備わっている http://sourceforge.net/projects/numpy/files/NumPy/1.8.0/
  8. 8. 使用するライブラリ/モジュールの インストール ● Matplotlib 数字を使ってグラフを描いたり、画像に点や直線、曲線を 描画する時に役立つライブラリ http://matplotlib.org/downloads.html から対応するファイルをダウンロードしてインストールする – Matplotlibを利用するには依存している他のライブラリも インストールする必要がある。自分のPCでは ● ● – Dateutil Pyparsing 人によっては他のライブラリをインストールする必要があるかも
  9. 9. 使用するライブラリ/モジュールの インストール ● SciPy NumPy上に構築された数学パッケージ。 数値積分や最適化、統計、信号処理、画像処理 などの機能を提供する。 http://sourceforge.net/projects/scipy/files/scipy/ (Win32bit) http://www.scipy.org/install.html (Mac OS & Linux) Windows 64bit OSは例のホームページから
  10. 10. 基本的な画像処理 ● 1ページのプログラムを実行してください – ● ● 表示するには「pil_im.show()」 2ページのプログラムを知っておいてください 2ページから2ページに記載されている imtools.pyを作成してください – – ● numpyをインポートしてください インデントに気をつけてください 3ページのプログラムを実行してください
  11. 11. 画像に点と線の描画 ● ● 4ページのプログラムを実行して、 画像と点と線を描画してください 表1-1、1-2、1-3を参考にマーカーを変えて プログラムを実行してください
  12. 12. 画像の等高線 ● 等高線 – 画像の明るさをその場所における標高と見なして 地形図と同様に表現すること
  13. 13. 画像のヒストグラム ● ヒストグラム(Histgram = 度数分布図) – 画像の明暗の度合いを表した図 参考:http://www.asahi-net.or.jp/~ax2s-kmtn/ref/histogram.html
  14. 14. 画像の等高線とヒストグラム ● 6ページに記載されているプログラムを 実行してください
  15. 15. インタラクティブな注釈 ● 7ページに記載されているプログラムを 実行してください
  16. 16. 配列による画像表現 ● Numpyの配列は多次元であり、ベクトルや 行列、画像を表現できる im = array(Image.open('empire.jpg')) print im.shape,im.dtype => (800,569,3) uint8 im = array(Image.open('empire.jpg').convert('L'),'f') print im.shape,im.dtype => (800,569) float32 – 配列の要素にはこのようにアクセスできる value = im[i,j,k] #座標i,jの色チャンネルkの値 (k=0:R 1:G 2:B)
  17. 17. グレーレベルの変換 ● グレーレベル変換は、画像のピクセルごとに適用 され、全てのピクセルが個別に取り扱われ、その 値が特定の「再マッピング」ルールによって 別の値に設定される – 9ページのプログラムを記載して実行して ください ● – 表示は「imshow(imX)」です – その後に「show()」が必要です im = array( ・・・の次の行にgray()を記載しないと グレースケールにならないので注意 本には.convert('L')と書けばグレースケールになるとあるが、arrayを 使用した場合は自分のPCは変な原色で表示された
  18. 18. 画像のサイズ変更 ● Imtools.pyに1.3.3の関数を追加してください ● 同様に1.3.4の関数を追加してください
  19. 19. ヒストグラム平坦化 ● ● ● ヒストグラムの度数を平坦化することで、 画像にメリハリをつける 12ページのプログラムを記載して実行 してください 13ページの関数をimtools.pyに追加して ください
  20. 20. 画像の主成分分析 ● 主成分分析 – 分かりやすく説明しているページがあった ● – ● ● 機械学習でも少し触れましたね http://www1.doshisha.ac.jp/~mjin/R/24/24.html 画像処理における主成分分析とは、画像で 使用されている点の色のうち、できるだけ 見た目を維持した上で使用する点の数を減らす 14ページの関数をpca.pyという名前で 保存してください 15ページのプログラムを記載して実行して ください 本のプログラムに加えて以下のプログラムが必要です import imtools imlist = imtools.get_imlist('a_thumbs') ・・・
  21. 21. 画像をぼかす ● ガウス関数を画像の処理に応用する – ある点に近い画像の輝度(きど)値はその点に近く、 遠くなるほど輝度値は差が大きくなることを考慮し 平均値を計算する時にガウス関数を利用する – 39ページのプログラム(2つ)を実行してください
  22. 22. 画像の微分 ● 微分について(念のため)確認 y = x^2 → dy/dx = 2x – なぜ微分をする? ● ● 画像の輝度が大きく変化している点(境界)を探す際、 変化が大きい箇所を強調するために微分を用いる ディジタル画像に対する処理では微分演算の代わりに 差分演算を行うことによってもエッジの検出が可能
  23. 23. 1次微分(差分)によるエッジ検出 ● 通常の差分演算を行うと、画面に含まれる雑音成分 にも反応してしまうめ、雑音の低減とノイズの除去 の両方を持つフィルタが提案されている – Prewittフィルタ -1 -1 -1 0 0 0 1 1 1 1 0 1 -1 -2 -1 -2 0 2 0 0 0 -1 0 1 1 2 1 -1 0 1 -1 0 1 -1 0 Sobelフィルタ -1 水平方向(x) = 水平方向(x) = – 垂直方向(x) = 垂直方向(x) =
  24. 24. 1次微分(差分)によるエッジ検出 ● Prewittフィルタの水平方向に対する使用例 6 6 4 4 3 3 3 2 2 1 6 3 3 8 3 3 6 4 9 2 3 2 6 -1 → 0 1 -1 0 1 -1 0 1 → 1 6 4 4 5 4 5 ● 1 -3 3 3 3 2 2 1 6 3 3 8 3 3 6 4 9 2 3 2 フィルタを用いて水平方向、垂直方向の 差分を求めた後、それぞれを2乗した平方根 が画素の勾配の大きさとなる (勾配が大きいほどエッジが大きい)
  25. 25. 1次微分(差分)によるエッジ検出 ● 20ページのプログラムを実行してください – そのままだと出力されないので、以下のコードを 追加してください from pylab import * ・・・ for i in (im, imx, imy, magnitude): figure() axis('off') gray() imshow(i) show()
  26. 26. 1次微分(差分)によるエッジ検出 ● 21ページのプログラムを実行してください
  27. 27. モルフォロジー(物体を数える) ● 時間がないので第9章で
  28. 28. 画像のノイズ除去 ● ● 25~26ページの関数denoise()を ファイル名rof.pyで保存してください 26ページ中央のプログラムを以下のコードを 追加し、実行してください ・・・ from pylab import * titles = ('original','gaussian','ROF') for i,j in enumerate((im,G,U)): subplot(1,3,i+1) title(titles[i]) gray() axis('off') imshow(j) show()
  29. 29. まとめ ● 今回の章で以下の画像処理を会得しました – 画像の作成、切り取り、貼り付け、注釈等 基本的な操作 – 画像のヒストグラムの取得 – グレーレベル変換 – 画像の平均化 – 主成分分析による次元の減少 – 画像のぼかし – 画像のエッジ – ノイズ除去
  30. 30. 来月の読書会も頑張りましょう!

×