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

์ปดํ“จํ„ฐ ๋น„์ „ | Pixel access(at, ptr, data), Transformation implementation code

by UKHYUN22 2022. 10. 3.
728x90

์ด๋ฒˆ์—๋Š” ํ”ฝ์…€์— ์ ‘๊ทผ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. at ์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ ‘๊ทผํ•˜๊ธฐ ์›ํ•˜๋Š” ํ”ฝ์…€์˜ ์ขŒํ‘œ๋ฅผ ๋„ฃ๊ฒŒ ๋œ๋‹ค. Row์™€ Col์˜ ์ˆœ์„œ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

์ด๋ฏธ์ง€๋ฅผ ์ฝ๊ณ  at ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ Row = 50 Col = 100์— ์žˆ๋Š” ํ”ฝ์…€์˜ ๊ฐ’์„ value๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋„ฃ๊ฒŒ ๋œ๋‹ค. ๋งŒ์ผ Color ์ด๋ฏธ์ง€๋กœ ์ฝ์—ˆ๋‹ค๋ฉด BGR  ์ฑ„๋„๋งˆ๋‹ค ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Vec3b๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฑ„๋„ ๋ณ„๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ”ฝ์…€์— ๋” ๋นจ๋ฆฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. at ํ•จ์ˆ˜ ๋Œ€์‹  ptr ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ํ”ฝ์…€์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ฃผ์†Œ์˜ ๋ฐฐ์—ด [ ] ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ขŒํ‘œ์˜ ๊ฐ’์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

ptr ํ•จ์ˆ˜ ๋ง๊ณ  data ํ•จ์ˆ˜๋„ ์กด์žฌํ•œ๋‹ค.

 

 

์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด data ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€์˜ ์ฃผ์†Œ๋ฅผ data๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋„˜๊ธฐ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ํŠน์ • ํ”ฝ์…€์— ๋Œ€ํ•œ ์ฃผ์†Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž„์˜์˜ ํ”ฝ์…€์— ๋Œ€ํ•œ ๊ฐ’๋„ ์†์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

 

 

์•ž์„œ ํฌ์ŠคํŒ…์—์„œ ์‚ดํŽด๋ณธ ๊ฐ๊ฐ์˜ Transformation์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•  ๊ฒƒ์ด๋‹ค.

 

 

Negative Transformation์˜ ๊ฒฝ์šฐ ๋ฐ๊ธฐ์— ๋Œ€ํ•œ ๊ฐ’์„ ๋’ค์ง‘๋Š” ๊ฒƒ์ด๊ธฐ์— Gray scale ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฝ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ํ”ฝ์…€์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด 2์ค‘ for ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ๊ธฐ์˜ ์ตœ๋Œ“๊ฐ’์ธ 255์—์„œ ๊ฐ ํ”ฝ์…€์˜ ๊ฐ’์„ ๋นผ์ฃผ๊ฒŒ ๋œ๋‹ค. 

 

๊ฒฐ๊ณผ ์‚ฌ์ง„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋‹ค์Œ Log Transformation์„ ์œ„ํ•œ ์ฝ”๋“œ์ด๋‹ค. convertTo ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ Float ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. log ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” type์„ Floating point๋กœ ๋ฐ”๊ฟ”์•ผ ํ•จ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณ€๊ฒฝํ•œ img์— 1์„ ๋”ํ•ด์„œ ๋ฌด์กฐ๊ฑด 0๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์„ค์ •์„ ํ•ด์ค€๋‹ค. ์ด๋•Œ abs() ๋ฅผ ์ทจํ•ด์•ผ 0์ด ์•ˆ ๋‚˜์˜จ๋‹ค๋Š” ๋…ผ๋ฆฌ๋Š” ๋ง ์•ˆํ•ด๋„ ์•Œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ 0๋ถ€ํ„ฐ 255 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก normalize๋ฅผ ์‹œํ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  convertScaleAbs ํ•จ์ˆ˜๋ฅผ ์ทจํ•ด์„œ unsigned 8 bit ํƒ€์ž…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. 

 

๋‹ค์Œ์ด ํ•ด๋‹น ๊ฒฐ๊ณผ์ด๋‹ค.

 

Gamma transformation์€ ์ง€์ˆ˜ ๊ณ„์‚ฐ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ๋Ÿ‰์ด ํ›จ์”ฌ ๋” ๋ณต์žกํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Look up Table์„ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ๊ฐ’์— ๋Œ€์‘ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐ์—ด์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 255๋กœ ๋‚˜๋ˆˆ ๊ฐ’์œผ๋กœ ์ง€์ˆ˜ ๊ณ„์‚ฐ์„ ํ•˜๊ณ  ๋‹ค์‹œ 255๋ฅผ ๊ณฑํ•˜์—ฌ์„œ ์—ฐ์‚ฐ๋Ÿ‰์„ ์ตœ์†Œํ™” ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ฐฐ์—ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ .at ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ ์‚ฌ์ง„์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.