ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

2012-01-01から1年間の記事一覧

Paradigms of Artificial Intelligence Programming のKindle版は買ってはいけない

LL/ML Advent Calendar 6日目の記事です。 12/6日には完成していましたが、あなたが今記事を見ようとした瞬間に記事が文字になり、にインターネットにデータが送られました。遅延評価素晴らしいです。 以前twitterにはつぶやいたのですが、大事な話なのでま…

デジタル写真計測の話

cv

Computer Vision Advent Calendar 2012の11日目という事で、私が仕事で関わっている業界について書いてみました。 デジタル写真計測とは デジタル写真計測とは、デジタル画像を使用した測量の事です。あまり聞きなれない言葉ですが、デジタルカメラを利用し…

Conic

cv

Multiple View Geometry in Computer Vision Second Edition2章から。 Conicとは面の中で2次式で記述できる曲線を表す。ユークリッド空間では、hyperbola, ellipse, parabola の3種類に分類できる。Googleで画像検索するのがわかりやすい。 http://www.googl…

Radical distortion モデル

cv

Multiple View Geometry in Computer Vision Second Edition7章から。カメラが理想的なピンホールカメラモデルの時と違い、実際の撮影ではレンズによるゆがみが入るときがある。 Radical distortion モデル の定義 この2つの画像の対応式はこのように表現さ…

Projective カメラモデル

cv

Multiple View Geometry in Computer Vision Second Edition6章から。Projective カメラモデルは、x=PXの関係を使って、ワールド座標系の点Xを画像内のxに投影する。Pは投影変換行列なので3x4の行列で表現できる。 最初の3x3 pの最初の3列からなる3x3行列をM…

CCD カメラモデル

cv

Multiple View Geometry in Computer Vision Second Edition6章から。ピンホールカメラモデル http://d.hatena.ne.jp/natsutan/20120915/1347690881 投射行列 http://d.hatena.ne.jp/natsutan/20120916/1347780396 の続きです。 CCDセンサー 一般的なピンホ…

回転角と回転速度

cv

回転は、3次元ベクトルr=[r1,r2,r3]^Tによって、表現することもできる。ベクトルの方向が回転軸を、ベクトルの大きさが回転量を表す。 3次元回転ベクトル Mを3x3の行列とすると、次の式が成り立つ。任意の3x1ベクトルrに対して、行列[r]xを以下のように定義…

ロール・ピッチ・ヨー

cv

Z軸まわりの回転φ(ロール)、新しいY軸まわりの回転θ(ピッチ)、新しいX軸まわりの回転ψ(ヨー)の3段階の回転で実現できる。写真から作る3次元CGでは、最後の回転がZになっています。これだとオイラー角と同じなので、最後はXが正しい。

オイラー角

cv

写真から作る3次元CGから任意の回転運動は、Z軸まわりの回転α、新しいY軸まわりの回転β、新しいZ軸まわりの回転γの3段階の回転で実現できる。 このα、β、γをオイラー角といい、回転行列Rは次のように表される。回転のオイラー角による表現は唯一では無いが、…

Iterative minimization method

cv

Multiple View Geometry in Computer Vision Second Edition4章から。 直接線形方程式を解くDLTアルゴリズムに比べた、イテレーティブに最小値を求める方法の特徴。 遅い イテレーションをはじめる前に初期値が必要 収束しない可能性と、最小値でなくローカ…

Direct Linear Transform アルゴリズムを使って、投影変換の行列Hを計算する。

cv

Multiple View Geometry in Computer Vision Second Edition4章から。 対応する4つの点を使って、投影変換を表す行列Hの計算します。Direct Linear Transform (DLT) とたいそうな名前がついていますが、点同士の制約から最小二乗法を用いて行列を求めるアル…

Gauche-CVで投影変換Hを求める

投影変換Hを求めるのに必要な条件の続き。 つまり4つの点の対応が分かれば、投影変換を表す行列Hは計算できます。 この図のような変換を使って実験してみます。(変換は青→黄) 座標の対応はこのようになります。 xi x'i (5,5) (20,15) (15,5) (25,20) (15,1…

投影変換Hを求めるのに必要な条件

cv

Multiple View Geometry in Computer Vision Second Edition4章から 投影変換Hは3x3の行列だが、定数倍に関して等価なので、自由度(dof)は8 点 xi -> x'iへの対応一つにつき、2次元空間で(x, y) -> (x', y')の対応が取れるので、制約が2つつく 最低限4点の対…

2章 練習問題

cv

写真から作る3次元CGの2章練習問題。 問題1 D^-1を求めよ。D^-1はDの逆運動である。答 Dは剛体変換(rigid transformation)で、回転行列Rと並進行列tを使って以下のように表現できる。Dの定義は投射行列、もしくは2次元変換の階層のClass I Isometries transf…

射影近似

cv

写真から作る3次元CGから。 中心投影の近似の方法 弱中心投影(weak perspective projection) 疑似中心投影(paraperspective projectionb) 平行投影(orthographic projection)は、弱中心投影の特殊なケース アフィン変換は、これらの線形化射影の一般化したも…

カメラの正規化

cv

写真から作る3次元CGから。 カメラモデル カメラモデルを考える時の問題点 光学軸がどこにあるか不明 画像の両座標軸のスケールが異なる可能性がある 実際の画像の両座標軸は必ずしも直角をなさない 座標系(c,x,y)とデジタル画像座標系(o,u,v)を考える。 x軸…

投射行列

cv

写真から作る3次元CGから。 投射行列 この式は、同次座標を用いて以下の行列で表せる。 ≃はスケールを除いて等しいことを示す。この時の のPを中心投影行列と呼ぶ。 三次元空間上の座標M=(X Y Z 1)^Tと、仮想画像平面上の座標m=(x y 1)^Tの関係は、m = PM で…

Computer Vison で使う座標系

cv

ピンボールカメラモデル 測定対象物Mは、焦点面Fのレンズ中心Cを通って、画像平面I上のmに投影される。焦点面Fと画像平面の距離をfとする。 焦点面があるXYZをカメラ座標系と呼ぶ。画像平面上の座標(x,y)と3次元座標系の座標(X,Y)との関係は、以下の関係が成…

写真から作る3次元CG

cv

写真から作る3次元CG Computer Visionの本は行列式ばかりでてくるような本か、ライブラリの使い方が中心の本しか無く、アルゴリズムが分かるちょうど良い本を探していたらこの本を見つけました。ちょうど良い難易度なので、ゆっくり読んでいきます。1章から…

素数夜曲 女王陛下のLISP

素数夜曲 女王陛下のLISP読みました。簡単に感想を。 本の内容 タイトル通り数学とLispの本です。 この本は大きく前半と後半(付録)に別れています。前半は算数から数学に自然に入って行くような内容が講義形式で話が進みます。整数、最大公約数から入り、…

2次元変換の階層

cv

Multiple View Geometry in Computer Vision 2.4から。2次元の画像変換における階層構造のまとめ。座標は全て同次座標(homogeneous coordinate)。 Class I Isometries transformations 対象物の移動、再配置。 行列表現 ベクトル表現 特徴 εは±1の値を取る。…

Gauche-CVで derivative Gaussian フィルター

Sobelフィルターは簡単に輪郭を抽出できますが、フィルターの効果が画像の解像度に依存するという欠点があります。その欠点を解消したのが derivative Gaussian フィルターです。Sobelフィルターの代わりに、Gaussian フィルターの一次微分を使います。ガウ…

Gauche-CVでSobelフィルター

Gauche-CVでSobelフィルターを使う方法です。簡単に輪郭の検出ができます。 PythonでSobelフィルター Pythonでは、filter.sobelで簡単にフィルターをかけられます。 # -*- coding: utf-8 -*- # Sobelフィルター __author__ = 'Natsutani' from PIL import Im…

100 Power Tips for FPGA Designers

100 Power Tips for FPGA Designers Xilinx限定ですが、FPGA Hacksとも呼べるような本を見つけました。Kindle版なら$9.99なので、XilinxのFPGAを使いこなしたい人は今すぐ買いましょう。Hacks本と同じで、100個のネタ全てが驚く事を書いてあるわけではありま…

Gauche-CVで行列の計算を行う

Gauche-CVで簡単な行列計算をする方法です。当たり前ですがnumpyと同じ結果になります。 Python numpy で行列計算 Pythonではnumpyを使えば、簡単に行列の計算ができます。 # -*- coding: utf-8 -*- __author__ = 'Natsutani' import numpy as np a = np.arr…

FPGA入門回路図とHDLによるディジタル回路設計

すすたわりさんのFPGA入門回路図とHDLによるディジタル回路設計読みました。表紙や帯に可愛らしい絵がありますが、中身は硬派なデジタル回路の入門書です。 内容 この本は、HDLの文法やFPGAの動かし方を学ぶ本ではなく、FPGAを使ってデジタル回路を学ぶ本で…

Gauche-CVでガウシアンフィルターをかける

Gauche-CVを使って画像にぼかしをいれる方法です。 元ネタはProgramming Computer Vision With Pythonから。 Gauche-CVはaharisuのごみ箱で公開されています。 Python PILでガウシアンフィルター scipy の filters.gaussian_filter を使って、色空間毎にフィ…

Gauche-CVで画像に描画する。

Gauche-CLを使って画像に円や線を書く方法です。 元ネタはProgramming Computer Vision With Pythonから。 Gauche-CVはaharisuのごみ箱で公開されています。 Python PIL, pylab で画像に描画する pylabと合わせれば、簡単にプロットできます。 # -*- coding:…

Gauche-CVで画像のコピーアンドペースト

Gauche-CLを使って画像の一部をコピーアンドペーストする方法です。 元ネタはProgramming Computer Vision With Pythonから。 Gauche-CVはaharisuのごみ箱で公開されています。 Python PIL でコピーアンドペースト 画像の真ん中で切り取るとちょうど首の所が…