※ 本題に入る前に、必ず動画の
前回課題の補足,
連絡
を見てください。
- 画像上の座標の取得
- 射影変換
今回は、「被写体としては長方形だが、斜めに撮ったために歪んでいるものを本来の形に変形させる」プログラムを作るので、元画像の選定が重要になる。
例えばこんな写真の看板部分を長方形にしたい。
(解説動画中でこの画像を使って座標を取得して見せているので、この画像を元画像として使ってはいけない)
悪い例1 (写真の中ですでにほぼ長方形なので、プログラムの動作確認にならない)
悪い例2 (長方形の部分はあるが、小さすぎる)
悪い例3 (長方形の部分がない)
悪い例4 (長方形の部分に凹凸がある)
写真上で歪んだ形になっているエリアの頂点が、それぞれ長方形の左上・右上・右下・左下に移動するように変形させれば撮影による歪みが取れる。一般にこういう変換のことを
射影変換といい、行列で表すと
このようになる。
\(
\begin{pmatrix}
x'\\y'\\1
\end{pmatrix}
=
\begin{pmatrix}
h_{11} & h_{12} & h_{13}\\
h_{21} & h_{22} & h_{23}\\
h_{31} & h_{32} & h_{33}
\end{pmatrix}
\begin{pmatrix}
x\\y\\1
\end{pmatrix}
\)
これまでに見た拡大・縮小、回転、スキューもこのように行列を使って表せる。このような変換をまとめて
アフィン変換という。