SlideShare a Scribd company logo
1 of 30
コンピュータビジョン

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

●

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

分からない方には別スライドでインストール方法および
統合開発環境PyCharmを紹介します
目次
●

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

●

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

PIL

–

NumPy

–

Matplotlib

–

SciPy

【追記】今回のプレゼンではライブラリを1つずつ手動でインス
トール
する方法を採用しましたが、「setuptools」というパッケージ管理用
パッケージを使用したほうが簡単です。
http://www.lifewithpython.com/2012/11/Python-package-setuptools-pip.html
参考URL:
目次
●

基本的な画像処理

●

ヒストグラム平坦化

●

平坦画像

●

主成分分析

●

画像をぼかす

●

画像の微分

●

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

●

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

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を利用する
使用するライブラリ/モジュールの
インストール
●

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

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

Matplotlib
数字を使ってグラフを描いたり、画像に点や直線、曲線を
描画する時に役立つライブラリ
http://matplotlib.org/downloads.html
から対応するファイルをダウンロードしてインストールする
–

Matplotlibを利用するには依存している他のライブラリも
インストールする必要がある。自分のPCでは
●
●

–

Dateutil
Pyparsing

人によっては他のライブラリをインストールする必要があるかも
使用するライブラリ/モジュールの
インストール
●

SciPy
NumPy上に構築された数学パッケージ。
数値積分や最適化、統計、信号処理、画像処理
などの機能を提供する。
http://sourceforge.net/projects/scipy/files/scipy/ (Win32bit)
http://www.scipy.org/install.html (Mac OS & Linux)
Windows 64bit OSは例のホームページから
基本的な画像処理
●

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

●

●

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

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

●

numpyをインポートしてください
インデントに気をつけてください

3ページのプログラムを実行してください
画像に点と線の描画
●

●

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) 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)
グレーレベルの変換
●

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

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

–

表示は「imshow(imX)」です
– その後に「show()」が必要です

im = array( ・・・の次の行にgray()を記載しないと
グレースケールにならないので注意
本には.convert('L')と書けばグレースケールになるとあるが、arrayを
使用した場合は自分のPCは変な原色で表示された
画像のサイズ変更
●

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

●

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

●

●

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

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

主成分分析
–

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

–

●

●

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

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

画像処理における主成分分析とは、画像で
使用されている点の色のうち、できるだけ
見た目を維持した上で使用する点の数を減らす

14ページの関数をpca.pyという名前で
保存してください
15ページのプログラムを記載して実行して
ください 本のプログラムに加えて以下のプログラムが必要です
import imtools
imlist = imtools.get_imlist('a_thumbs')
・・・
画像をぼかす
●

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

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

–

39ページのプログラム(2つ)を実行してください
画像の微分
●

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

なぜ微分をする?
●

●

画像の輝度が大きく変化している点(境界)を探す際、
変化が大きい箇所を強調するために微分を用いる
ディジタル画像に対する処理では微分演算の代わりに
差分演算を行うことによってもエッジの検出が可能
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) =
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乗した平方根
が画素の勾配の大きさとなる
(勾配が大きいほどエッジが大きい)
1次微分(差分)によるエッジ検出
●

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

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

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

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

●

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()
まとめ
●

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

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

–

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

–

グレーレベル変換

–

画像の平均化

–

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

–

画像のぼかし

–

画像のエッジ

–

ノイズ除去
来月の読書会も頑張りましょう!

More Related Content

What's hot

Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)
TatsuyaKatayama
 

What's hot (20)

2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
 
SensorBeeでChainerをプラグインとして使う
SensorBeeでChainerをプラグインとして使うSensorBeeでChainerをプラグインとして使う
SensorBeeでChainerをプラグインとして使う
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTK
 
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 
Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extrasみんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
 
PyCharm入門
PyCharm入門PyCharm入門
PyCharm入門
 
オープンCAEとPython
オープンCAEとPythonオープンCAEとPython
オープンCAEとPython
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
テストを書こう、Unity編
テストを書こう、Unity編テストを書こう、Unity編
テストを書こう、Unity編
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践する
 

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

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
Etsuji Nakai
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
2bo 2bo
 

Similar to コンピュータビジョン 1章 (20)

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
PsychoPy Builder:モジュールの組み込みと視線計測
PsychoPy Builder:モジュールの組み込みと視線計測PsychoPy Builder:モジュールの組み込みと視線計測
PsychoPy Builder:モジュールの組み込みと視線計測
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
Puppet入門
Puppet入門Puppet入門
Puppet入門
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
 
C#で作ったプログラムのインストーラーをInnoSetupで作成(1)
C#で作ったプログラムのインストーラーをInnoSetupで作成(1)C#で作ったプログラムのインストーラーをInnoSetupで作成(1)
C#で作ったプログラムのインストーラーをInnoSetupで作成(1)
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
 
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
Producer
ProducerProducer
Producer
 
osakapy 2014.05 LT
osakapy 2014.05 LTosakapy 2014.05 LT
osakapy 2014.05 LT
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
 
Raspberry Pi しかないときのIoTハンズオンチュートリアル
Raspberry Pi しかないときのIoTハンズオンチュートリアルRaspberry Pi しかないときのIoTハンズオンチュートリアル
Raspberry Pi しかないときのIoTハンズオンチュートリアル
 
Jspmとtypescriptで開発する
Jspmとtypescriptで開発するJspmとtypescriptで開発する
Jspmとtypescriptで開発する
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Recently uploaded (12)

クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 

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