๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸช Computer Vision

์ปดํ“จํ„ฐ ๋น„์ „ | About matrix in CV, Pixel type, Deep copy function, VideoCapture Class, imshow the resulted image

by UKHYUN22 2022. 10. 3.
728x90

์ปดํ“จํ„ฐ ๋น„์ „์—์„œ ์ž…๋ ฅ๋ฐ›๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” Matrix๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Mat์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

Pixel์˜ ํƒ€์ž…์œผ๋กœ๋Š” ์œ„์— ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์ง€๋งŒ ์œ„ 4๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด์ž. CV_8U์˜ ๊ฒฝ์šฐ 8bit unsigned ๋ผ๋Š” ๋œป์œผ๋กœ ์–‘์ˆ˜ ๋ฒ”์œ„์—์„œ 2^8์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ 0๋ถ€ํ„ฐ 255์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. CV_8S์˜ ๊ฒฝ์šฐ 8bit signed integer์ด๋ฏ€๋กœ -128 ๋ถ€ํ„ฐ 127์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๋‹ค์Œ๋„ ์ด์™€ ๊ฐ™์ด ๊ณ„์‚ฐํ•˜๋ฉด ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์€ Integer์˜ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” U (Unsigned)์™€ S(Signed)์ด์—ˆ๋‹ค๋ฉด F๋„ ์กด์žฌํ•œ๋‹ค. Floating point ์ˆซ์ž๋กœ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Matrix๋ฅผ ์„ ์–ธํ•  ๋•Œ Width์™€ Height์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๊ณผ ๋”๋ถˆ์–ด ์–ด๋–ค Type์˜ ํ”ฝ์…€์„ ํ‘œํ˜„ํ•  ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ Width์™€ Height๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹๋„ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์›๋ž˜ Mat์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด๊ฐ€๋Š” ์ˆœ์„œ๋Š” row, column ์ˆœ์„œ์ด์ง€๋งŒ Size ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด column, row ์ˆœ์„œ๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค. 

 

 

OpenCV์—์„œ๋Š” ์ƒ‰์˜ ์ˆœ์„œ๊ฐ€ BGR ์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž.

 

์–•๊ฒŒ Copyํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋Š” ์ฃผ์†Œ๋Š” ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค. ์ฆ‰ shallow copy๋ฅผ ํ•ด์„œ ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์›๋ณธ ์ด๋ฏธ์ง€๋„ ๋ณ€ํ™”๋ฅผ ๊ฒช๊ฒŒ ๋œ๋‹ค.

 

 

์–•์€ ๋ณต์‚ฌ์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ํ—˜์„ฑ์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜์—ฌ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” Deep Copy ๋ฐฉ์‹์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. clone()์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ณ , ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ  ๋  ๊ฒƒ์ด๋‹ค.

 

copyTo ํ•จ์ˆ˜๋Š” ๊นŠ์€ ๋ณต์‚ฌ์˜ ์˜ˆ์‹œ๋กœ ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ output Image๊ฐ€ ๋œ๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

๋‹ค์Œ ์ฝ”๋“œ์™€ ๊ฒฐ๊ณผ ์‚ฌ์ง„์„ ๋ณด๊ณ  ํ•œ ๋ฒˆ ๋น„๊ตํ•ด๋ณด๋ฉด ์ •๋ฆฌ๋  ๊ฒƒ์ด๋‹ค.

 

 

 

copyTo ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์œ ์˜ํ•˜๋ฉด์„œ ์‚ดํŽด๋ณด์ž.

 

 

์ด ๊ฒฝ์šฐ ํ•ด๋‹น ํ”ฝ์…€์— alpha ๋ฅผ ๊ณฑํ•˜๊ณ  beta๋ฅผ ๋”ํ•˜๋Š” Conversion์„ ์ง„ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ saturate_cast์˜ ๊ฒฝ์šฐ 255๋ณด๋‹ค ํฐ ๊ฐ’์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์„ 255๋กœ ๋‚ฎ์ถ”๊ฒŒ ๋˜๊ณ  ๋ฐ˜๋Œ€๋กœ 0๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ๋Š” 0์œผ๋กœ ๋†’ํ˜€์ฃผ๊ฒŒ ๋œ๋‹ค. 

 

 

setTo ํ•จ์ˆ˜๋Š” mask ๋ถ€๋ถ„์„ ํŠน์ • value๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

convertScaleAbs ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ๋™์ผํ•˜๊ฒŒ alpha๋ฅผ ๊ณฑํ•˜๊ณ  beta๋ฅผ ๋”ํ•˜๊ฒŒ ๋˜์ง€๋งŒ src์˜ ๊ฐ’์— ์ ˆ๋Œ“๊ฐ’์„ ์ทจํ•ด์„œ saturate_cast ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์œ ์˜ํ•˜์ž.

 

 

imread๋ฅผ ํ•  ๋•Œ ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ 0์„ ๋„ฃ๊ฒŒ ๋˜๋ฉด Gray scale ์ด๋ฏธ์ง€๋กœ ์ž…๋ ฅ ๋ฐ›๊ฒŒ ๋˜๊ณ , 1์„ ๋„ฃ๊ฒŒ ๋˜๋ฉด Color Image๋กœ ์ž…๋ ฅ๋ฐ›๊ฒŒ ๋œ๋‹ค.

 

์˜์ƒ์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์œ ์šฉํ•œ Class๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋‹ค์Œ ํด๋ž˜์Šค๋ฅผ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด์ž.

 

get ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ๊ฒŒ ๋˜๋ฉด ๊ฐ ์˜์ƒ์— ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค. 

 

๋น„๋””์˜ค์˜ Frame ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ์กด์žฌํ•œ๋‹ค.

 

VideoCapture ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๊ฐ์ฒด์˜ open ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š” ๋น„๋””์˜ค๋ฅผ ์—ด๊ฒŒ ๋œ๋‹ค. get ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ํ•จ์ˆ˜์˜ FPS๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ์€ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ด์„œ ์ถœ๋ ฅ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด imshow ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Window ์ฐฝ์˜ ์ด๋ฆ„์ด๊ณ  ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ Matrix์˜ ์ด๋ฆ„์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

 

๋‹ค์Œ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์›ํ•˜๋Š” ๋น„๋””์˜ค๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

watkey์— ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ 0์„ ์ฃผ๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ key๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ๊นŒ์ง€ ์˜์ƒ์„ ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ resizeํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ๋„ Size ํ•จ์ˆ˜๋กœ ๋Š˜๋ฆฌ๊ณ ์ž ํ•˜๋Š” ๋งŒํผ์˜ ํฌ๊ธฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ Size ํ•จ์ˆ˜์˜ row, col ์ˆœ์„œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋œ๋‹ค๊ณ  ํ–ˆ๋”๋ผ?