ハフ変換

r=xcos(θ)+ysin(θ)r = x \cos(\theta) + y \sin(\theta)

代表的なのは、上記式による直線の検出手法。

画像上の直線は、上記の形式で表せる。 θ\theta は法線の角度を表し、 rr は原点と直線の距離を表す。

ある点 (x0,y0)(x_0, y_0) を上記式に代入すると、その点を通っていた直線に対応する (r,θ)(r, \theta) 平面上の点の集合は、

r=x0cos(θ)+y0sin(θ)r \coloncolonequals x_0 \cos(\theta) + y_0 \sin(\theta)

で定義される sin\sin 的な曲線になる。 すべての画像上の点をプロットしていくと、直線に相当する部分だけこの (r,θ)(r, \theta) 平面で何回もプロットされることになる。 その点に対応する (r,θ)(r, \theta) たちが、求める直線となる。

python だと OpenCV にて実装がされている。

Related Scraps:

OpenCV

画像は、BGR 系であるとする。 一方、 Matplotlib は RGB 系を想定する。 形式変換のためには、 np.flip(img, axis=-1) を実行すると良い。

cv2.HoughLines

cv2.Houghlines(img, rho, theta, thres)
  • (rho, theta): グリッド化する (r,θ)(r, \theta) の最小単位
  • thres: 投票回数の閾値

線分検知

OpenCV においては、 Line Segment Detector と houghLinesP が割と汎用的に利用できそう。

---2022/10/06

大津の二値化法

グレースケールの画像を白黒に変換したい時などに利用。 ある閾値で2つのクラスに分割するとき、クラスの分散の加重平均を最小化する手法。

atan2

平面座標系に対して、極座標の角度を求めたくなったときに用いる関数。 他の関数を経由すると誤差を気にしなくてはならないので、それ用の関数として用意されたのがこれ。

カメラ内部パラメータ

カメラ座標(カメラの視点)からカメラ画像への各対象点の射影において、その変換を表す行列の数値。

ヒルベルト空間

内積が定義されるベクトル空間の一般化。

  • x,yH.x,y=y,x\forall x, y \in H.\,\, \langle x,y \rangle = \overline{\langle y,x \rangle}
  • x,yHa,bC.ax1+bx2,y=ax1,y+bx2,y\forall x, y \in H\,\, a, b \in \mathbb{C}.\,\, \langle ax_1 + bx_2, y \rangle = a\langle x_1, y \rangle + b \langle x_2, y \rangle
  • xH.x,x0;x,x=0    x=0\forall x \in H.\,\, \langle x, x \rangle \geq 0; \langle x, x \rangle = 0 \iff x = \bm{0}

同次座標系

並行移動なども表現できるようにするために、 N+1 次元で対象データを表現すること。

最小二乗法

ある回帰モデルの予測値が、そのモデルのパラメータに対して線形結合の形をしているとき、観測データの残差の二乗を最小化することは、凸関数の最小値を求める問題に帰着するので、微分して 0 になる点を求める行う手法。

三角関数の合成公式

acos(θ)+bsin(θ)=a2+b2sin(θ+α)a \cos(\theta) + b \sin(\theta) = \sqrt{a^2 + b^2} \sin(\theta + \alpha)

ただし、α\alphasin(α)=aa2+b2\sin(\alpha) = \frac{a}{\sqrt{a^2 + b^2}}cos(α)=ba2+b2\cos(\alpha) = \frac{b}{\sqrt{a^2 + b^2}} を満たす関数。