๐Ÿ“˜ Programming/OpenCV

[์˜์ƒ ์ฒ˜๋ฆฌ] ํ™”์†Œ ์  ์ฒ˜๋ฆฌ - ๋””์ง€ํ„ธ ์˜์ƒ์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ๊ณผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• (Clamping, Wrapping)

ํ•œ์ฝ”๋”ฉ 2020. 12. 29. 21:22
728x90
728x90

ํ™”์†Œ ์  ์ฒ˜๋ฆฌ

ํ™”์†Œ ์  ์ฒ˜๋ฆฌ๋Š” ์›๋ž˜ ํ™”์†Œ์˜ ๊ฐ’์ด๋‚˜ ์œ„์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹จ์ผ ํ™”์†Œ ๊ฐ’์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ™”์†Œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ , ๋‹จ์ˆœํžˆ ํ™”์†Œ ์ ์˜ ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํŠธ ์ฒ˜๋ฆฌ๋ผ๊ณ ๋„ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

์‚ฐ์ˆ , ๋…ผ๋ฆฌ, ๋ฐ˜์ „, ๊ด‘๋„ ๋ณด์ •, ํžˆ์Šคํ† ๊ทธ๋žจ ํ‰ํ™œํ™”, ๋ช…์•” ๋Œ€๋น„ ์ŠคํŠธ๋ ˆ์นญ ๋“ฑ ๊ธฐ๋ฒ•์ด ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

1) ์‚ฐ์ˆ  ์—ฐ์‚ฐ

ํ™”์†Œ์˜ ๋ฐ๊ธฐ ์กฐ์ •, ๋Œ€๋น„ ๋ณ€๊ฒฝ

โ€‹

2) ๋…ผ๋ฆฌ ์—ฐ์‚ฐ

์ฐธ, ๊ฑฐ์ง“์„ ํŒ๋ณ„ํ•˜๋Š” ๋…ผ๋ฆฌ ์—ฐ์‚ฐ(AND, OR, XOR, NOT)์œผ๋กœ ๋””์ง€ํ„ธ ์˜์ƒ์—์„œ ์ฐจํ, ํŠน์ง• ์ถ”์ถœ, ํ˜•ํƒœ ๋ถ„์„์„ ์ˆ˜ํ–‰

โ€‹

3) ํžˆ์Šคํ† ๊ทธ๋žจ (๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„)

๊ด€์ธกํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ„ํฌ๋œ ํŠน์ง•์„ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„

๊ฐ€๋กœ์ถ• - ๋ ˆ๋ฒจ(์˜์ƒ์˜ ๋ฐ๊ธฐ), ์„ธ๋กœ์ถ• - ๋นˆ๋„ ์ˆ˜(๋ฐ๊ธฐ ๊ฐ’์— ๋Œ€์‘ํ•˜๋Š” ํ™”์†Œ ์ˆ˜)

โ€‹

ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ ์€ ํ‰ํ™œํ™”์™€ ๋ช…์„ธํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

3-1) ํžˆ์Šคํ† ๊ทธ๋žจ ํ‰ํ™œํ™”

ํŽธํ–ฅ๋œ ๋””์ง€ํ„ธ ์˜์ƒ์˜ ํžˆ์Šคํ† ๊ทธ๋žจ ๊ฐ’์„ ๊ณจ๊ณ ๋ฃจ ๋ถ„์‚ฐ์‹œ์ผœ์„œ, ๋ช…์•” ๋Œ€๋น„๋ฅผ ๋†’ํž˜

โ€‹

3-2) ํžˆ์Šคํ† ๊ทธ๋žจ ๋ช…์„ธํ™”

๋””์ง€ํ„ธ ์˜์ƒ์˜ ํŠน์ • ๋ถ€๋ถ„์˜ ๋ช…์•” ๋Œ€๋น„๋ฅผ ๋†’ํž˜

์‚ฐ์ˆ  ์—ฐ์‚ฐ ์ ์šฉ

1) ์˜์ƒ ๋ถ„ํ• (Image Segmentation)

ํŠน์ • ์˜์—ญ์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์€ ๊ฒƒ์„ ๋” ๋ฐ๊ฒŒ! ์–ด๋‘์šด ๊ฒƒ์€ ๋” ์–ด๋‘ก๊ฒŒ! ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด๋กœ์จ, ๋ช…์•” ๋Œ€๋น„๊ฐ€ ๋”์šฑ ์ปค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โ€‹

2) ์ฐจ ์˜์ƒ(Different Image)

์›€์ง์ž„์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 1์ดˆ ์ „ ์˜์ƒ๊ณผ 1์ดˆ ํ›„ ์˜์ƒ์˜ ํ™”์†Œ ๊ฐ’์„ ๋นผ๋ฉด ๋ฌผ์ฒด๊ฐ€ ์›€์ง์ธ ๊ณณ์— ํ”ฝ์…€ ์ฐจ์ด๋Š” 0์ด ์•„๋‹Œ ๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ์›€์ง์ž„์„ ํŒ๋ณ„ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

3) ํ•ฉ์„ฑ ์˜์ƒ

์˜์ƒ A์™€ ์˜์ƒ B๋ฅผ ํ•ฉ์นฉ๋‹ˆ๋‹ค.

๋””์ง€ํ„ธ ์˜์ƒ์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ - ๋ง์…ˆ, ๋บ„์…ˆ

ํ™”์†Œ์˜ ๋ฐ๊ธฐ ๋‹จ๊ณ„ ์ˆ˜๋Š” ์–‘์žํ™” ๋น„ํŠธ์ˆ˜๊ฐ€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

๊ทธ๋ ˆ์ด ๋ ˆ๋ฒจ ์˜์ƒ์—์„œ๋Š” ์ƒ‰์ด ์—†๊ณ  ๋ฐ๊ธฐ๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ™”์†Œ๋Š” ๋ฐ๊ธฐ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์—, ์ปฌ๋Ÿฌ ์˜์ƒ์—์„œ๋Š” ์ƒ‰์˜ ์ •๋ณด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™”์†Œ๋Š” ์ƒ‰์˜ ๋ฐ๊ธฐ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

๋””์ง€ํ„ธ ์˜์ƒ์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์€ ์ด 4๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

โ€‹

1) ํ™”์†Œ ๊ฐ’ ๋ง์…ˆ ์—ฐ์‚ฐ

ํ™”์†Œ์˜ ๋ฐ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

ํ™”์†Œ์˜ ์ตœ๋Œ€ ๊ฐ’์„ ๋„˜์œผ๋ฉด ์ตœ๋Œ€ ๊ฐ’์œผ๋กœ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 255๋ฅผ ๋„˜๋Š” 270์ด์–ด๋„ 255๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ( ํด๋žจํ•‘ )

โ€‹

2) ํ™”์†Œ ๊ฐ’ ๋บ„์…ˆ ์—ฐ์‚ฐ

ํ™”์†Œ์˜ ๋ฐ๊ธฐ๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํ™”์†Œ์˜ ์ตœ์†Œ ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ตœ์†Œ ๊ฐ’์œผ๋กœ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์Œ์ˆ˜๋ฉด 0์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

โ€‹

์ด๋Ÿฌํ•œ ํ™”์†Œ ๊ฐ’์˜ ์ฐจ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜์ƒ ๋‚ด์˜ ๋ฌผ์ฒด์˜ ์›€์ง์ž„ ๊ฐ์ง€(Motion Tracking)๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ๊ฒ€์€์ƒ‰ ์‚ฌ๊ฐํ˜•์ด ์›€์ง์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ๋‘ ์˜์ƒ์˜ ํ™”์†Œ ๊ฐ’์„ ๋ณผ๊นŒ์š”?

โ€‹

์•„๋ž˜๋ฅผ ๋ณด๋ฉด ๊ฒ€์€์ƒ‰ ์‚ฌ๊ฐํ˜•์ด ์œ„์น˜ํ•œ ๊ณณ์—๋Š” ํ™”์†Œ ๊ฐ’์ด 0์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์‚ฌ๊ฐํ˜•์ด ์ด๋™ํ–ˆ๋‹ค๋ฉด ์ด๋™ํ•œ ์‚ฌ๊ฐํ˜•์ด ์œ„์น˜ํ•œ ํ™”์†Œ ๊ฐ’์ด 0์ด๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์‚ฌ๊ฐํ˜•์ด ์žˆ๋˜ ์ž๋ฆฌ๋Š” 255๋ผ๋Š” ๋ฐ์€ ๊ฐ’์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์ด๋•Œ, ์ด ๋‘ ์˜์ƒ์˜ ์ฐจ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

โ€‹

โ€‹

๋‘ ์˜์ƒ์˜ ํ™”์†Œ ๊ฐ’์„ ๋บ€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋ฌผ์ด ์›๋ž˜ ์žˆ๋˜ ์ž๋ฆฌ์— ๊ฐ’์€ -255๊ฐ€ ๋˜์—ˆ๊ณ , ์‚ฌ๋ฌผ์ด ์›€์ง์ธ ๊ณณ์— ๊ฐ’์€ 255๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒน์น˜๋Š” ์ž๋ฆฌ๋Š” 0์ด ๋˜๋ฉด์„œ, ์˜์ƒ ๋‚ด์˜ ๋ฌผ์ฒด๊ฐ€ ์–ผ๋งŒํผ ์ด๋™ํ–ˆ๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์ง€ํ„ธ ์˜์ƒ์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ - ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ

๋ช…์•” ๋Œ€๋น„(Contrast)๋Š” ์˜์ƒ์˜ ๊ฐ€์žฅ ๋ฐ์€ ๊ฐ’๊ณผ ๊ฐ€์žฅ ์–ด๋‘์šด ๊ฐ’์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.

์˜์ƒ์˜ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๋†’์€ ๋Œ€๋น„๋ฅผ ๊ฐ€์ง„ ๋””์ง€ํ„ธ ์˜์ƒ์€ ๋ช…๋„์˜ ์ฐจ์ด๊ฐ€ ์ปค์„œ ์‹œ๊ฐ์ ์œผ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ช…์•”์˜ ์ตœ์†Œ ๊ฐ’๊ณผ ์ตœ๋Œ€ ๊ฐ’์˜ ์ฐจ์ด๊ฐ€ ํฐ ์˜์ƒ์ด๋ฏ€๋กœ, ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์œผ๋กœ ์ฐจ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

๋ฐ˜๋ฉด์—, ๋‚ฎ์€ ๋Œ€๋น„๋ฅผ ๊ฐ€์ง„ ๋””์ง€ํ„ธ ์˜์ƒ์€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์ƒ๋Œ€์ ์ธ ๋ช…์•” ๊ฐ’์˜ ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š์€ ์˜์ƒ์ด๋ฏ€๋กœ, ๊ณฑ์…ˆ ์—ฐ์‚ฐ์œผ๋กœ ์ฐจ์ด๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

โ€‹

3) ํ™”์†Œ ๊ฐ’ ๊ณฑ์…ˆ ์—ฐ์‚ฐ

ํ™”์†Œ์˜ ๋ฐ๊ธฐ ๊ฐ’์— ์ƒ์ˆ˜๋ฅผ ๊ณฑํ•ด ์ „์ฒด์ ์œผ๋กœ ํ™”์†Œ์˜ ๋ฐ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.

์ฆ‰, ๋ฐ์€ ๋ถ€๋ถ„์€ ๋”์šฑ ๋ฐ์•„์ง€๊ณ , ์–ด๋‘์šด ๋ถ€๋ถ„์€ ์•ฝ๊ฐ„ ๋ฐ์•„์ง€๋ฉด์„œ ๋ฐ๊ธฐ์˜ ์ฐจ์ด๊ฐ€ ๋šœ๋ ทํ•ด์ง‘๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์˜์ƒ์˜ ์„ ๋ช…๋„๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

4) ํ™”์†Œ ๊ฐ’ ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ

ํ™”์†Œ์˜ ๋ฐ๊ธฐ ๊ฐ’์— ์ƒ์ˆ˜๋ฅผ ๋‚˜๋ˆ  ์ „์ฒด์ ์œผ๋กœ ํ™”์†Œ์˜ ๋ฐ๊ธฐ๋ฅผ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค.

์ฆ‰, ๋ฐ์€ ๋ถ€๋ถ„์€ ๋งŽ์ด ์–ด๋‘์›Œ์ง€๊ณ , ์–ด๋‘์šด ๋ถ€๋ถ„์€ ์•ฝ๊ฐ„ ์–ด๋‘์›Œ์ง€๋ฉด์„œ ๋ฐ๊ธฐ์˜ ์ฐจ์ด๊ฐ€ ํฌ๋ฏธํ•ด์ง‘๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์˜์ƒ์˜ ์„ ๋ช…๋„๊ฐ€ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

์‚ฐ์ˆ  ์—ฐ์‚ฐ์—์„œ ๊ฐ’์„ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ ํ•ด๊ฒฐํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•

๋ช…์•”๋„ ์˜์ƒ(ํ‘๋ฐฑ ์˜์ƒ)์€ ํ•œ ํ™”์†Œ ๋‹น 8bit ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ํ™”์†Œ ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0~255๋กœ ์ด 256๊ฐœ์˜ ๊ฐ’์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

์—ฌ๊ธฐ์„œ, ๋ช…์•” ๊ฐ’์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒฝ์šฐ์— ํ™”์†Œ ๊ฐ’์˜ ๋ฒ”์œ„ 0~255๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

1) ํด๋žจํ•‘ ๊ธฐ๋ฒ• (Clamping)

0์ดํ•˜์˜ ๊ฐ’์„ ๋ชจ๋‘ 0์œผ๋กœ, 255 ์ด์ƒ์˜ ๊ฐ’์„ 255๋กœ ๊ณ ์ •

โ€‹

2) ๋žฉํ•‘ ๊ธฐ๋ฒ• (Wrapping)

255 = 255

256 = 0

257 = 1

258 = 2

์ด์™€ ๊ฐ™์ด ์ดˆ๊ณผํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜์ „ ํ˜„์ƒ์„ ์ฃผ์–ด ๋ช…์•”์˜ ๋ถˆ๊ท ๋“ฑ์„ ์ฃผ์–ด ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•