SOBEL FILTER

ChangSeong Yooยท2023๋…„ 7์›” 19์ผ
0

Vision

๋ชฉ๋ก ๋ณด๊ธฐ
4/5
post-thumbnail

๐Ÿ“์ด ํฌ์ŠคํŠธ๋Š” sobel filter์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




์ •์˜

sobel filter๋Š” ์ด๋ฏธ์ง€์—์„œ ๊ฒฝ๊ณ„(=edge)๋ฅผ ๊ฒ€์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค.
์ด ํ•„ํ„ฐ๋Š” ์ด๋ฏธ์ง€์˜ ํ”ฝ์…€ ๊ฐ’์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๋ฅผ ๊ฒ€์ถœํ•˜๊ณ , ๊ทธ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๋ฅผ ๊ณง " edge "๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋ถ„์ด๋ผ๊ณ  ํ•˜๋ฉด

f(x)=limโกhโ†’0f(x+h)โˆ’f(x)hf(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}

์˜ ๊ณต์‹์„ ๋– ์˜ฌ๋ฆฌ์‹ค ๊ฒ๋‹ˆ๋‹ค.
์ด ๋ฏธ๋ถ„๊ณต์‹์„ ์ด๋ฏธ์ง€์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. hh๊ฐ€ 0์œผ๋กœ ์ˆ˜๋ ดํ•œ๋‹คํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ์ˆ˜๋ ดํ•˜์—ฌ h=1h=1 ์— ๋„๋‹ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด h=1h=1 ๋œป์€ ์ธ์ ‘ ํ”ฝ์…€๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ f(x)f(x) ํ•จ์ˆ˜๋ฅผ ํ•ด์„ํ•ด๋ณด๋ฉด ์ธ์ ‘ ํ”ฝ์…€๊ณผ์˜ ํ”ฝ์…€๊ฐ’ ์ฐจ์ด ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด ํ™”์†Ÿ๊ฐ’์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ณ€ํ•˜๋Š” ๊ตฌ๊ฐ„์ด ๊ฒฝ๊ณ„(=edge)๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.




๋ชฉ์ 

  • ์ด๋ฏธ์ง€์˜ ๊ฐ์ฒด๋ฅผ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ฒฝ๊ณ„(= edge)๋ฅผ ๊ฒ€์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.




์›๋ฆฌ

[โˆ’101โˆ’202โˆ’101]\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}

์œ„์˜ ํ•„ํ„ฐ๋Š” ์ˆ˜ํ‰ ์†Œ๋ฒจ ํ•„ํ„ฐ๋Š” xx์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์ขŒ ์šฐ ํ”ฝ์…€ ๊ฐ„์˜ ๋ฏธ๋ถ„์„ ์ด์šฉํ•ด edge๋ฅผ ๊ตฌํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค.

[โˆ’1โˆ’2โˆ’1000121]\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix}

์œ„์˜ ํ•„ํ„ฐ๋Š” ์ˆ˜์ง ์†Œ๋ฒจ ํ•„ํ„ฐ๋Š” yy์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์ƒ ํ•˜ ํ”ฝ์…€ ๊ฐ„์˜ ๋ฏธ๋ถ„์„ ์ด์šฉํ•ด edge๋ฅผ ๊ตฌํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค.



e.g.e.g.

[โˆ’101โˆ’202โˆ’101]\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} ์ธ ์ˆ˜ํ‰ ์†Œ๋ฒจ ํ•„ํ„ฐ์™€
ํ‘๋ฐฑ ์ด๋ฏธ์ง€์˜ ์–ด๋Š ํ•œ ์ง€์  ์ค‘ ๊ฒฝ๊ณ„๊ฐ€ ์•„๋‹Œ ๋‹จ์กฐ๋กœ์šด ๋ถ€๋ถ„์˜ ํ”ฝ์…€์ด [215214213214210206216213210]\begin{bmatrix} 215 & 214 & 213 \\ 214 & 210 & 206 \\ 216 & 213 & 210 \end{bmatrix} ์ด๋ผ๊ณ  ํ•ด๋ณด์ž.

convolution์„ ์ง„ํ–‰ํ•˜์—ฌ [โˆ’101โˆ’202โˆ’101]โ‹…[215214213214210206216213210]=โˆ’215โˆ’428โˆ’216+0+0+0+213+412+210\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \\ \end{bmatrix} \cdot \begin{bmatrix} 215 & 214 & 213 \\ 214 & 210 & 206 \\ 216 & 213 & 210 \\ \end{bmatrix}=-215 -428 -216 + 0 + 0 + 0 + 213 + 412 + 210

=โˆ’24= -24 ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด๋ฒˆ์—๋Š” ํ‘๋ฐฑ ์ด๋ฏธ์ง€์˜ ์–ด๋Š ํ•œ ์ง€์  ์ค‘ ๊ฒฝ๊ณ„ ๋ถ€๋ถ„์˜ ํ”ฝ์…€ ์ด [32200251142102539213232]\begin{bmatrix} 32 & 200 & 251 \\ 14 & 210 & 253 \\ 9 & 213 & 232 \\ \end{bmatrix} ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
convolution์„ ์ง„ํ–‰ํ•˜์—ฌ [โˆ’101โˆ’202โˆ’101]โ‹…[32200251142102539213232]=โˆ’32โˆ’28โˆ’9+0+0+0+251+506+464\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \\ \end{bmatrix} \cdot \begin{bmatrix} 32 & 200 & 251 \\ 14 & 210 & 253 \\ 9 & 213 & 232 \\ \end{bmatrix}=-32 -28 -9 + 0 + 0 + 0 + 251 + 506 + 464

=1152= 1152 ์ž…๋‹ˆ๋‹ค.

โ—๏ธ์ด๋ฒˆ์—๋Š” ์ฐจ์ด๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โญ๏ธ ์ขŒ ์šฐ ๊ฐ„์˜ ํ”ฝ์…€ ์ฐจ์ด๋Š” ์ˆ˜ํ‰ ์†Œ๋ฒจ ํ•„ํ„ฐ๋ฅผ ํšจ๊ณผ๋ฅผ ๋ณด๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค
์ˆ˜์ง ์†Œ๋ฒจ ํ•„ํ„ฐ [โˆ’1โˆ’2โˆ’1000121]\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix}๋ฅผ ์ขŒ ์šฐ ๊ฐ„์˜ ํ”ฝ์…€ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ์ด๋ฏธ์ง€์˜ ๊ฒฝ๊ณ„ ๋ถ€๋ถ„์˜ ํ”ฝ์…€ [32200251142102539213232]\begin{bmatrix} 32 & 200 & 251 \\ 14 & 210 & 253 \\ 9 & 213 & 232 \\ \end{bmatrix} ๊ณผ convolution์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[โˆ’1โˆ’2โˆ’1000121]โ‹…[32200251142102539213232]=โˆ’32โˆ’400โˆ’251+0+0+0+9+426+232\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \\ \end{bmatrix} \cdot \begin{bmatrix} 32 & 200 & 251 \\ 14 & 210 & 253 \\ 9 & 213 & 232 \\ \end{bmatrix}=-32 -400 -251 + 0 + 0 + 0 + 9 + 426 + 232

=โˆ’16= -16 ์ž…๋‹ˆ๋‹ค
๊ฐ’์ด 11521152์ด์— ๋น„ํ•ด ์ž‘์€ ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๊ฒฝ๊ณ„ ๊ฒ€์ถœ์„ ํ•˜์ง€ ๋ชปํ•ด๋‚ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ดํ•ด

# ์ˆ˜ํ‰์†Œ๋ฒจํ•„ํ„ฐ
sobel_horizontal = np.array([[-1, 0, 1],
		                     [-2, 0, 2],
          		             [-1, 0, 1]])
# ์ˆ˜์ง์†Œ๋ฒจํ•„ํ„ฐ
sobel_vertical = np.array([[-1,-2,-1],
		                     [ 0, 0, 0],
          		             [ 1, 2, 1]])

์ฝ”๋“œ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›๋ณธ ์ด๋ฏธ์ง€

์ˆ˜ํ‰ ์†Œ๋ฒจ ํ•„ํ„ฐ ์ ์šฉ ์ด๋ฏธ์ง€

์ˆ˜์ง ์†Œ๋ฒจ ํ•„ํ„ฐ ์ ์šฉ ์ด๋ฏธ์ง€

ํ•„ํ„ฐ์˜ ์ฐจ์ด๋ฅผ ๋Š๋ผ์‹œ๋‚˜์š”?

๋ชจ๋“  ์—ฃ์ง€๋ฅผ ๊ฒ€์ถœํ•˜๋Š” ๋ฐฉ์‹์€ sobelhorizontal2+sobelvertical2\sqrt{{sobel_{horizontal}}^2+{sobel_{vertical}}^2}์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜์ง ์†Œ๋ฒจ ํ•„ํ„ฐ ์ ์šฉ ์ด๋ฏธ์ง€

profile
๐’ฅ๐“Š๐“ƒ๐’พโ„ด๐“‡ ๐’Ÿ๐’ถ๐“‰๐’ถ ๐’ฎ๐’ธ๐’พโ„ฏ๐“ƒ๐“‰๐’พ๐“ˆ๐“‰

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 7์›” 19์ผ

์ •๋ง ์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ