Post

[CV] Computer Vision(2-2): Image Processing - Geometric Transformation

[CV] Computer Vision(2-2): Image Processing - Geometric Transformation

๐Ÿ‘“Computer Vision ์ •๋ฆฌ

Geometric Transformation


Geometric ๊ฐœ๋… ์ •๋ฆฌ


์ฃผ์˜: ์ด ์Šฌ๋ผ์ด๋“œ์— ๋‚˜์™€์žˆ๋Š” ์ ๋“ค์˜ ์ขŒํ‘œ๋“ค์€ (x-์ขŒํ‘œ,y-์ขŒํ‘œ)๋กœ ํ‘œ๊ธฐ๋˜์–ด์žˆ์Œ
์ฆ‰, computer vison์—์„œ๋Š” (y,x)๋กœ ๋ฐ”๊ฟ”์•ผํ•จ

  • Scalar: real number (only magnitude), (e.g., distance)
  • Vector: direction + magnitude
  • Point: a location in space

alt text

  • ๋ฒกํ„ฐ์˜ ํ•ฉ, ๊ณฑ ๋“ฑ๋“ฑ
  • ๋ฒกํ„ฐ + ๋ฒกํ„ฐ = ๋ฒกํ„ฐ / ๋ฒกํ„ฐ * ์Šค์นผ๋ผ = ๋ฒกํ„ฐ

Parametric Form & Affine Sum

alt text

Dot Product(๋‚ด์ )

alt text

$\vec{a}\cdot\vec{b} = 0$ โ†’ ๋‘ ๋ฒกํ„ฐ ์ˆ˜์ง

Cross Product(์™ธ์ )

alt text

๋ฐฉํ–ฅ: $\vec{a}, \vec{b}$์— ๋ชจ๋‘ ์ˆ˜์ง, ์˜ค๋ฅธ์† ๋ฒ•์น™ ๋”ฐ๋ฆ„
๊ฒฐ๊ณผ ๋ฒกํ„ฐ ํฌ๊ธฐ(axb): ํ‰ํ–‰์‚ฌ๋ณ€ํ˜• ๋„“์ด

2D Geometric Transformation


alt text

2์ฐจ์› ํฌ์ธํŠธ๋Š” $(x,y)$ or $x=\begin{bmatrix}x \\ y\end{bmatrix}$๋กœ ํ‘œํ˜„๊ฐ€๋Šฅ

  • linear transformation: ์–ด๋–ค ํ–‰๋ ฌ์„ ์ด์šฉํ•ด ๋ฒกํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

alt text

์ ์—์„œ ์ ์œผ๋กœ ๊ฐ€๋Š” mapping์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํ˜• ๋ณ€ํ™˜์„ ์‚ฌ์šฉ
2์ฐจ์›์˜ ๊ฒฝ์šฐ 2x2์„ ์ด์šฉํ•ด ๋ณ€ํ™˜
์„ ํ˜• ๋ณ€ํ™˜ ์กฐ๊ฑด:

$L(a+b) = L(a) + L(b)$
$L(sa) = sL(a)$

2D Scaling


  • Scaling: changes length (and direction)

alt text

๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์“ฐ๋ฉด ๋จ

alt text alt text

$s_x = s_y$: ๊ท ์ผ ์Šค์ผ€์ผ๋ง (uniform scaling) โ†’ ๋ชจ์–‘์€ ๊ทธ๋Œ€๋กœ ํฌ๊ธฐ๋งŒ ๋ณ€ํ•จ
$s_x \neq s_y$: ๋น„๊ท ์ผ ์Šค์ผ€์ผ๋ง (non-uniform) โ†’ ํ˜•ํƒœ๊ฐ€ ์ฐŒ๊ทธ๋Ÿฌ์งˆ ์ˆ˜ ์žˆ์Œ

2D Rotation


  • Rotation: ๋ฒกํ„ฐ๋ฅผ ๊ฐ๋„ $\theta$๋งŒํผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋Š” ๋ณ€ํ™˜

โœ… ๋ฒกํ„ฐ $a=(x_a, y_a)$๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ:

  • ์ง๊ต ์ขŒํ‘œ๊ณ„(cartesian coordinates): $(x_a, y_a)$
  • ๊ทน์ขŒํ‘œ๊ณ„(polar coordinates): $(r\cos\alpha, r\sin\alpha)$
    • $r$์€ ๋ฒกํ„ฐ์˜ ๊ธธ์ด: $r = \sqrt{(x_a^2 + y_a^2)}$
    • $\alpha$๋Š” x์ถ•๊ณผ ๋ฒกํ„ฐ๊ฐ€ ์ด๋ฃจ๋Š” ๊ฐ๋„

๋ฒกํ„ฐ a๋ฅผ ๊ฐ๋„ $\theta$๋งŒํผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚จ ๋ฒกํ„ฐ b๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • $x_b = r\cos(ฮฑ + \theta) = r\cos ฮฑ\cos\theta - r\sin ฮฑ\sin\theta$
  • $y_b = r\sin(ฮฑ + \theta) = r\sin ฮฑ\cos\theta + r\cos ฮฑ\sin\theta$
  • ์ด๋•Œ $r\cos\alpha = x_a$์™€ $r\sin\alpha = y_a$์ด๋ฏ€๋กœ
    • $x_b = x_a\cos\theta - y_a\sin\theta$
    • $y_b = y_a\cos\theta + x_a\sin\theta$

alt text

alt text

(xb, yb)๋ฅผ matrix๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์‚ฌ์ง„๊ณผ ๊ฐ™์Œ 2D rotation๋„ 2x2๋กœ ๊ณ„์‚ฐ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— linear transformation ์ด๋‹ค.

โœ… Rotation Properties

  • Orthogonal matrix(์ง๊ต ํ–‰๋ ฌ): Two columns (rows) are orthogonal(์„œ๋กœ ๋‚ด์ ‘์„ ํ–ˆ์„ ๋•Œ 0์ด ๋ ๋•Œ)
    • (cos๐œƒ,sin๐œƒ)โˆ™โˆ’(sin๐œƒ,cos๐œƒ)=0
  • inverse matrix(์—ญํ–‰๋ ฌ)
    • alt text

      R์˜ ์—ญํ–‰๋ ฌ์€ (-theta) ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ ๊ทธ๊ฒŒ ์ „์น˜ํ–‰๋ ฌ๊ณผ ๊ฐ™๋‹ค. ์ฆ‰, ์—ญํ–‰๋ ฌ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ๋ƒฅ ์ „์น˜ํ–‰๋ ฌ($R^T$)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์„œ ์œ ์šฉํ•จ

2D Shear


  • Shear: ๋ฌผ์ฒด๋ฅผ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ โ€œ๋ฐ€์–ด๋‚ด๋Š”โ€ ๋ณ€ํ™˜, ํ‰ํ–‰์‚ฌ๋ณ€ํ˜• ๋ชจํ˜•์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

X, Y ๋ฐฉํ–ฅ shear๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • shear_x(s) = $ \begin{bmatrix} 1 & s \\ 0 & 1 \end{bmatrix}$
  • shear_y(s) = $ \begin{bmatrix} 1 & 0 \\ s & 1 \end{bmatrix}$

    shear_x(s) ๋ณ€ํ™˜์ด ์  (x,y)์— ์ ์šฉ๋˜๋ฉด $xโ€™ = x+sy, yโ€™=y$ ์ฆ‰ y์ขŒํ‘œ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๊ณ , x์ขŒํ‘œ๋Š” y์ขŒํ‘œ์— ๋น„๋ก€ํ•˜์—ฌ ์ด๋™

alt text

x๋ฐฉํ–ฅ์œผ๋กœ shearingํ• ๋•Œ์˜ ์˜ˆ์‹œ

alt text

y๋ฐฉํ–ฅ์œผ๋กœ shearingํ• ๋•Œ์˜ ์˜ˆ์‹œ

2D Reflection


  • Reflection: ์ขŒํ‘œ ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌผ์ฒด๋ฅผ โ€œ๋’ค์ง‘๋Š”โ€ ๋ณ€ํ™˜

X, Y ๋ฐฉํ–ฅ Reflection๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • reflect_x = $ \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}$
  • reflect_y = $ \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}$

    reflect_x ๋ณ€ํ™˜์ด ์  (x,y)์— ์ ์šฉ๋˜๋ฉด $xโ€™ = x, yโ€™=-y$
    ์ฆ‰, y์ขŒํ‘œ๋งŒ ๋ถ€ํ˜ธ๊ฐ€ ๋ฐ”๋€๋‹ค

alt text alt text

2D Translation


  • Translation: ๋ฌผ์ฒด์˜ ๋ชจ๋“  ์ ์„ ๋™์ผํ•œ ๊ฑฐ๋ฆฌ์™€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ณ€ํ™˜

์ด๋™ ๋ณ€ํ™˜ ์ˆ˜์‹:

  • $xโ€™ = x + x_t$
  • $yโ€™ = y + y_t$

    $(x_t,y_t)$๋Š” ์ด๋™ ๋ฒกํ„ฐ

alt text

์ผ๋ฐ˜์ ์ธ 2x2ํ–‰๋ ฌ๋กœ๋Š” Translation์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋‹ค!

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ•ด์•ผํ•˜๋‚˜? โ†’ ๊ทธ๋ž˜์„œ ๋‚˜์˜จ ์ด๋ก ์ด Homogeneous Coordinate

Homogeneous Coordinate


Homogeneous Coordinate(๋™์ฐจ ์ขŒํ‘œ๊ณ„): ๋™์ฐจ ์ขŒํ‘œ๊ณ„๋Š” ๊ธฐ์กด์˜ ์ขŒํ‘œ๊ณ„๋ฅผ ํ™•์ •ํ•˜์—ฌ, ์ ,์„ ,๋ฉด ๋“ฑ์„ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

  • 2์ฐจ์›์—์„œ ์  $x = (x,y)$๋Š” ๋™์ฐจ ์ขŒํ‘œ๊ณ„์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

alt text

$\tilde{x}$๋Š” ๋™์ฐจ ์ขŒํ‘œ๊ณ„์—์„œ์˜ ์ 
$\bar{x} = (x,y,1)$์€ ์ฆ๊ฐ• ๋ฒกํ„ฐ(augmented vector)
$\tilde{w} \neq {0}$์ธ ๋ชจ๋“  $(\tilde{x},\tilde{y},\tilde{w})$๋Š” 2D ์  $\tilde{x}/\tilde{w}, \tilde{y}/\tilde{w}$๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

์ฆ‰, ๋™์ฐจ ์ขŒํ‘œ๊ณ„์—์„œ๋Š” (2,3,1), (4,6,2), (6,9,3) ๋ชจ๋‘ 2D ๊ณต๊ฐ„์—์„œ ๊ฐ™์€ ์  (2,3)์„ ๋‚˜ํƒ€๋‚ธ๋‹ค!

  • ๋งŒ์•ฝ $\tilde{x}$ = (x,y,0)(=$\tilde{w}$=0)์ด๋ฉด ์ด point๋Š” ideal point ๋˜๋Š” point at infinity๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค
    • ideal point๋Š” ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค alt text

2D Lines


Homogeneous Corrdinate์—์„œ 2D line: $\tilde{l} = (a,b,c)$

  • ์ง์„ ์˜ ๋ฐฉ์ •์‹: $\bar{x}\cdot\tilde{l} = ax + by + c = 0$
  • $\tilde{l}$์„ ์ •๊ทœํ™”:
    • $l = (\hat{n}x, \hat{n}y, d) = (\hat{n}, d), \parallel\hat{n}\parallel = 1$

      $\hat{n}$: ์ง์„ ์— ์ˆ˜์ง์ธ ๋‹จ์œ„ normal vector
      $\hat{n} = (\hat{n}x, \hat{n}y) = (\cos\theta, \sin\theta)$
      d: ์›์ ์—์„œ ์ง์„ ๊นŒ์ง€ ๊ฑฐ๋ฆฌ
      $(\theta, d)$: ๊ทน์ขŒํ‘œ๊ณ„

  • $l$ = (0,0,1): ๋ฌดํ•œ๋Œ€์— ์žˆ๋Š” ์ง์„ ์œผ๋กœ, ๋ชจ๋“  ๋ฌดํ•œ๋Œ€ ์ ๋“ค์„ ํฌํ•จํ•จ

alt text

Homogeneous Matrix


  • ๋™์ฐจ ์ขŒํ‘œ๊ณ„์—์„œ์˜ 2D ๋ณ€ํ™˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ•œ๋‹ค

alt text

์ˆœ์„œ๋Œ€๋กœ Rotation, scale, translation ๋ณ€ํ™˜

  • ์—ฌ๋Ÿฌ ๋ณ€ํ™˜์„ ์กฐํ•ฉํ•˜๋ ค๋ฉด ๊ฐ ๋ณ€ํ™˜ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค!

ํ–‰๋ ฌ์„ ๊ณฑํ•  ๋•Œ๋Š” ์ ์šฉํ•œ ํ–‰๋ ฌ์˜ ๋ฐ˜๋Œ€ ์ˆœ์„œ๋กœ ๊ณฑํ•ด์•ผํ•œ๋‹ค!

  • ๋ณตํ•ฉ ๋ณ€ํ™˜ ์˜ˆ์‹œ:

alt text alt text alt text

์˜ˆ์‹œ์—์„œ๋Š” ์›์ ์œผ๋กœ ์ด๋™ โ†’ Rotation ๋ณ€ํ™˜ โ†’ ๋‹ค์‹œ ์›๋ž˜์˜ ์œ„์น˜๋กœ ์ด๋™์ด๋ฏ€๋กœ

1
T_final = T_translation(์›๋ž˜ ์œ„์น˜๋กœ ์ด๋™) ร— T_rotation x T_translation(์›์  ์ด๋™)

๋‹ค์‹œ CV๊ด€์ ์œผ๋กœ ๋Œ์•„์™€์„œ (y,x) ์ขŒํ‘œ๊ณ„์—์„œ์˜ Homogeneous Matrix๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค alt text

  • (y,x)์ขŒํ‘œ๊ณ„์—์„œ์˜ ๋ณตํ•ฉ ์—ฐ์‚ฐ ์˜ˆ์‹œ: alt text

  • 2D Transformation์˜ ์ข…๋ฅ˜์™€ ํŠน์„ฑ: alt text

    DoF๋Š” ์ž์œ ๋„(์šฐ๋ฆฌ๊ฐ€ ๋ณ€ํ™˜ํ•˜๋Š” ์–‘)
    Similarity์—์„œ DoF: 4(์Šค์ผ€์ผ 1๊ฐœ, ํšŒ์ „ 1๊ฐœ, ์ด๋™ 2๊ฐœ)
    ์ „์น˜ํ–‰๋ ฌ T์ธ ์ด์œ ๋Š” ์‚ฌ์ง„์€ (x,y)์ด๊ธฐ ๋•Œ๋ฌธ

๊ทธ๋Ÿผ ์ด๋ฏธ์ง€์— Geometric Transformation์€ ์–ด๋–ป๊ฒŒ ์ ์šฉ์ด ๋˜๋Š”๊ฐ€?

Geometric Transformation ์ ์šฉ

alt text

  1. Foward warping:
    • ์†Œ์Šค ์ด๋ฏธ์ง€์˜ ๊ฐ ํ”ฝ์…€์„ ๋ณ€ํ™˜ํ•˜์—ฌ ๋Œ€์ƒ ์ด๋ฏธ์ง€์˜ ์œ„์น˜๋กœ ๋งคํ•‘
    • ๋ฌธ์ œ์ :
    • ์•จ๋ฆฌ์–ด์‹ฑ(aliasing) ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์†Œ์Šค ์ด๋ฏธ์ง€์˜ ํ”ฝ์…€์ด ์ •ํ™•ํžˆ ๋Œ€์ƒ ์ด๋ฏธ์ง€์˜ ํ”ฝ์…€ ๊ฒฉ์ž์— ๋งž์ง€ ์•Š์„ ์ˆ˜ ์žˆ์–ด ๋นˆ ๊ณต๊ฐ„(ํ™€)์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  2. Inverse warping:
    • ๋Œ€์ƒ ์ด๋ฏธ์ง€์˜ ๊ฐ ํ”ฝ์…€ ์œ„์น˜์— ๋Œ€ํ•ด, ์†Œ์Šค ์ด๋ฏธ์ง€์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค
    • ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋„ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ๋Œ€์ƒ ํ”ฝ์…€์ด ๊ฐ™์€ ์†Œ์Šค ํ”ฝ์…€์„ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ์•จ๋ฆฌ์–ด์‹ฑ ๋ฐœ์ƒ

์•จ๋ฆฌ์–ด์‹ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Interpolation์œผ๋กœ ๋ณด์™„ํ•œ๋‹ค

Interpolation


Interpolation: ์•Œ๋ ค์ง„ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ๊ฐ’์„ ์ถ”์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

alt text

1D Linear Interpolation๊ณผ 2D Bilinear Interpolation

  • 1D Linear Interpolation: ๋‘ ๊ฐœ์˜ ์•Œ๋ ค์ง„ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ์‚ฌ์ด์˜ ๊ฐ’์„ ์ง์„ ์œผ๋กœ ๊ทผ์‚ฌํ•˜์—ฌ ์ถ”์ •
  • 2D Bilinear Interpolation: ์•Œ๋ ค์ง„ ๋„ค ๊ฐœ์˜ ๊ฒฉ์ž์ (grid points) ์‚ฌ์ด์˜ ๊ฐ’์„ ์ถ”์ •

  • lecture 5์˜ Edge Thinning์€ ์‹œํ—˜ X
This post is licensed under CC BY 4.0 by the author.