最小二乗法とロバスト推定法

画像工学の課題をやっている。

・二次元平面上の直線について、

  1. 次のエッジ画像(BMP file) からエッジの座標を求め,それらのエッジ点から最小自乗法およびロバスト推定を用いて直線を推定せよ.
  2. 上記結果について考察する.(図示したものも添付すると良い)

画像はこれ

まず問題を一読して何をしたらいいかが全く分からなかったorz


よく考えてみる。
まず問題は画像データをどうやったら計算機のメモリ上に載せることができるのかが分かっていないことに気づいた。
画像データはバイナリのはずなので、普通に読み込んだだけでは扱えない、というようなことをちらっとどこかで聞いたことがあるような、ないような。


どうしようか、と少し考えて、そうだPythonにはPILがあるではないかと気づく。
なんかライブラリがあるでしょ、ってことで調べる。
日本語で適当に紹介してくれているようなところが見つからなかった、というか探すだけのテンションがなかったので、本家サイトのチュートリアルを見ることにする。
RELOADING...


そこにあることを読んでいくと

from PIL import Image
im = Image.open("test3.bmp")

x,y = im.size
bmpdata = list(im.getdata())

とすればx,yに画像の縦横のサイズ、bmpdataには画像をラスタ走査したときのデータが入ってるらしい。
実際やってみると、0と255のデータが入ったリストが得られた。
0と255の数の割合と元画像の関係から0が黒い部分、255が画像上の白い点を表している模様。
これをx行y列の行列に変換してやれば画像上の白い点の座標が分かるというわけですね。
Python楽だな〜


ちなみに、隣でC言語を使って云々うなっている人がいるね。
かわいそうだね。
OpenCVを勧めておいたよ。