Edge๋ž€ ๊ฒฝ๊ณ„์„ , ์œค๊ณฝ์„ ์„ ์˜๋ฏธํ•˜๋ฉฐ ์˜์ƒ์ฒ˜๋ฆฌ์—์„œ๋Š” ๋ฐ๊ธฐ๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ณ€ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋งํ•œ๋‹ค. 

 

ํ”ฝ์…€ ๊ฐ’์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ณ€ํ•˜๋Š” ์ง€์ ์ด Edge๋ถ€๋ถ„์ด๋ฉฐ Edge๋ฅผ ๊ฒ€์ถœํ•จ์œผ๋กœ์จ ๋ฌผ์ฒด์˜ ์˜์น˜, ๋ชจ์–‘, ํฌ๊ธฐ, ๋ฐฉํ–ฅ์„ฑ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ”ฝ์…€์€ ๊ณก์„  ๊ทธ๋ž˜ํ”„์ฒ˜๋Ÿผ ์—ฐ์† ๊ณต๊ฐ„์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ์— ๋ฏธ๋ถ„ ๊ทผ์‚ฟ๊ฐ’์œผ๋กœ Edge์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ง์€ ์„œ๋กœ ๋ถ™์–ด ์žˆ๋Š” ํ”ฝ์…€ ๊ฐ’์˜ ์ฐจ๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๐Ÿ’ก Sobel Filter

Sobel์ด ๊ณ ์•ˆํ•ด๋‚ธ ๊ฐ€์žฅ์ž๋ฆฌ ๊ฒ€์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ 3X3 ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐํ•˜์˜€์„ ๋•Œ ์ค‘์‹ฌ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ ๋ฐฉํ–ฅ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํ”ฝ์…€ ๊ฐ’์˜ ๋ณ€ํ™”๋Ÿ‰์„ ๊ฒ€์ถœํ•œ๋‹ค. 

 

X์ถ• ํ•„ํ„ฐ๋Š” ์„ธ๋กœ ์„ฑ๋ถ„์„ ๊ฒ€์ถœํ•˜๊ณ  Y์ถ• ํ•„ํ„ฐ๋Š” ๊ฐ€๋กœ ์„ฑ๋ถ„์„ ๊ฒ€์ถœํ•œ๋‹ค.

 

๋Œ€๊ฐ์„ ์„ ๊ฒ€์ถœํ•˜๋Š” Sobel filter๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Sobel Filter๋Š” ๋ชจ๋“  ๋ฐฉํ–ฅ์˜ Edge ์ถ”์ถœ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ Edge์— ๋”์šฑ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•œ๋‹ค. ๋˜ํ•œ ๋Œ์ถœํ•œ ํ™”์†Œ ๊ฐ’์„ ํ‰๊ท ํ™”ํ•˜๋ฏ€๋กœ ์žก์Œ์— ๊ฐ•ํ•˜๋‹ค.

 

 

 

์›๋ณธ ์˜์ƒ์„ ๊ฐ๊ฐ Sobel ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•ด์„œ Edge์„ ๊ฒ€์ถœํ•œ ๊ฒƒ์ด๋‹ค. ์œ„์—์„œ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ˆ˜์ง์„ ๊ฒ€์ถœํ•˜๋Š” X์ถ• ํ•„ํ„ฐ, ์ˆ˜ํ‰์„ ๊ฒ€์ถœํ•˜๋Š” Y์ถ• ํ•„ํ„ฐ, ๊ฐ๊ฐ ๋Œ€๊ฐ์„ ์„ ๊ฒ€์ถœํ•˜๋Š” ํ•„ํ„ฐ์ด๋‹ค.

 

 

๐Ÿ’ก Canny Edge

Edge ๊ฒ€์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๊ฐ€์žฅ ์‹ ๋ขฐ์„ฑ์ด ๋†’๊ณ  ๊ฐ„ํŽธํ•˜์—ฌ ๋ณดํŽธํ™”๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋„ํ˜•์˜ ์œค๊ณฝ์„ ํ•˜๋‚˜์˜ ์„ ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฏธ์ง€์˜ ํŠน์ง• ์ถ”์ถœ์„ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ๋กœ ๋งŽ์ด ํ™œ์šฉํ•œ๋‹ค.

 

โœŒ Canny Edge Detection

1๏ธโƒฃ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ : ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ ์‚ฌ์šฉ

 

2๏ธโƒฃ Edge Gradient(๊ธฐ์šธ๊ธฐ) ๊ณ„์‚ฐํ•˜์—ฌ Gradient๊ฐ’์ด ๋†’์€ ๋ถ€๋ถ„์„ ์ฐพ๊ธฐ(=Sobel filter ์‚ฌ์šฉ)

ํ•จ์ˆ˜์˜ ์ ์—์„œ ๋ฏธ๋ถ„์„ ํ•˜๋ฉด ์ ‘์„ ์˜ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋‚˜์˜ค๋ฉฐ ๊ธฐ์šธ๊ธฐ๋Š” ์—ฐ์†๋œ ํ”ฝ์…€ ๊ฐ’์˜ ์ฐจ์ด ์ฆ‰ Edge๊ฐ€ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ํ•จ์ˆ˜์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฏธ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ํ”ฝ์…€์„ Sobel Filter๋กœ Convolution ์—ฐ์‚ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

3๏ธโƒฃ ์ตœ๋Œ“๊ฐ’์ด ์•„๋‹Œ ํ”ฝ์…€์˜ ๊ฐ’์„ 0์œผ๋กœ ๋งŒ๋“ค๊ธฐ

Edge์— ๊ธฐ์—ฌ๋„๊ฐ€ ์ ์€ ํ”ฝ์…€์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ์ „์ฒด ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ์Šค์บ”ํ•˜๋ฉด์„œ ๊ธฐ์šธ๊ธฐ ๋ฐฉํ–ฅ์œผ๋กœ ๊ธฐ์šธ๊ธฐ ๊ฐ’์ด ์ตœ๋Œ“๊ฐ’์„ ๊ฐ€์ง„ ํ”ฝ์…€์„ ์ฐพ๋Š”๋‹ค.

A๋Š” ์ˆ˜์ง ๋ฐฉํ–ฅ ์œ„์˜ ์—์ง€ ์œ„์— ์žˆ๋Š” ํ”ฝ์…€์ด๋‹ค. ๊ธฐ์šธ๊ธฐ ๋ฐฉํ–ฅ์„ ์ˆ˜ํ‰์ด๊ณ  B์™€ C๋Š” ๊ธฐ์šธ๊ธฐ ๋ฐฉํ–ฅ์— ๋†“์ธ ํ”ฝ์…€์ด๋‹ค. A์ง€์ ์—์„œ ๊ธฐ์šธ๊ธฐ ๊ฐ’์ด B, C๋ณด๋‹ค ํฐ์ง€ ํ™•์ธํ•˜๋ฉฐ A๊ฐ’์ด ํฌ๋‹ค๋ฉด ๋„˜์–ด๊ฐ€๊ณ  ์•„๋‹ ๊ฒฝ์šฐ 0์œผ๋กœ ๋งŒ๋“ค์–ด ํ”ฝ์…€์„ ์–ต์ œํ•œ๋‹ค.

 

4๏ธโƒฃ Hyteresis Thresholding

๊ธฐ์šธ๊ธฐ ๊ฐ•๋„๊ฐ€ maxVal๋ณด๋‹ค ํฌ๋ฉด Edge, minVal๋ณด๋‹ค ์ž‘์œผ๋ฉด Edge๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ œ๊ฑฐํ•œ๋‹ค.

 

A๋Š” maxVal๋ณด๋‹ค ์œ„์— ์žˆ์œผ๋ฏ€๋กœ ํ™•์‹คํ•œ ์—์ง€์ด๊ณ  B๋Š” A(ํ™•์‹คํ•œ ์—์ง€)์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ œ๊ฑฐํ•œ๋‹ค. C๋Š” A์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ์— A์™€ C๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  B๋Š” ์ œ๊ฑฐํ•œ๋‹ค.

 

์œ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ ํ•จ์ˆ˜๊ฐ€ cv2.Canny() ํ•จ์ˆ˜์ด๋‹ค.

 

cv2.Canny(img, minimum thresholding value, maximum thresholding value)

 

ํ•จ์ˆ˜์˜ ์ธ์ž๋Š” ์ด๋ฏธ์ง€์™€ minVal, maxVal๋งŒ ์„ค์ •ํ•˜์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

 

Sobel filter ์ ์šฉ ํ›„
Canny Edge ์ ์šฉ ํ›„

 

๐Ÿ’ก ํ—ˆํ”„๋ณ€ํ™˜

์—ฐ๊ฒฐ ๊ด€๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์žก์Œ์œผ๋กœ ์ธํ•ด ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋Š์–ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋”ฐ๋ผ์„œ ํ—ˆํ”„ ๋ณ€ํ™˜์€ ์ „์ฒด ๊ณต๊ฐ„์„ ์กฐ์‚ฌํ•ด์„œ ์—ฐ๊ฒฐ ๊ณผ์ • ์—†์ด ๋ฐ”๋กœ ์ง์„ ์„ ๊ฒ€์ถœํ•œ๋‹ค.

 

ํ•œ ์ ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ง์„ ์€ ๋งŽ๊ธฐ์— ๊ธฐ์šธ๊ธฐ์™€ ์ ˆํŽธ์„ ๊ณ ์ •์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ [a-b] ๊ณต๊ฐ„์œผ๋กœ ๋ฐ”๋€๋‹ค๋ฉด ํ•œ ์ ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ง์„ ์„ ํ•˜๋‚˜์˜ ์ง์„ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ๋‹ค์‹œ [x-y] ๊ณต๊ฐ„์œผ๋กœ ๋ฐ”๊ฟ€ ์‹œ a, b์˜ ๋ฒ”์œ„๊ฐ€ ๋ฌดํ•œ๋Œ€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜์ƒ์—๋Š” ํ™”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋””์Šคํ”Œ๋ ˆ์ด์˜ ์„ธ๋กœ, ๊ฐ€๋กœ ๋ฒ”์œ„๊ฐ€ ์œ ํ•œํ•˜๊ธฐ์— ์˜์ƒ์—๋Š” ๋ฒ”์œ„๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋ฌดํ•œ๋Œ€๊ฐ€ ๋˜๋ฉด ์•ˆ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฒ”์œ„๊ฐ€ ์œ ํ•œํ•œ ๋ณ€์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐ„์„ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. 

[x-y] ๊ณต๊ฐ„์—์„œ [θ-r] ๊ณต๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆํ”„ ๊ณต๊ฐ„์œผ๋กœ์˜ ๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰ ์ง์„  ์œ„์— ์žˆ๋Š” ์ ์ด ๊ณก์„ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค. 

 

ํ—ˆํ”„ ๋ณ€ํ™˜์˜ OpenCVํ•จ์ˆ˜๋กœ๋Š” cv2.HoughLines๊ฐ€ ์žˆ๋‹ค.

 

cv2.HoughLines(img, rho, theta, threshold, lines, srn=0, stn=0, min_theta, max_theta)

 

์ธ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

img: ์ž…๋ ฅ ์ด๋ฏธ์ง€, 1 ์ฑ„๋„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์Šค์ผ€์ผ
rho: ๊ฑฐ๋ฆฌ ์ธก์ • ํ•ด์ƒ๋„, 0~1
theta: ๊ฐ๋„, ๋ผ๋””์•ˆ ๋‹จ์œ„ (np.pi/0~180)
threshold: ์ง์„ ์œผ๋กœ ํŒ๋‹จํ•  ์ตœ์†Œํ•œ์˜ ๋™์ผ ๊ฐœ์ˆ˜ (์ž‘์€ ๊ฐ’: ์ •ํ™•๋„ ๊ฐ์†Œ, ๊ฒ€์ถœ ๊ฐœ์ˆ˜ ์ฆ๊ฐ€ / ํฐ ๊ฐ’: ์ •ํ™•๋„ ์ฆ๊ฐ€, ๊ฒ€์ถœ ๊ฐœ์ˆ˜ ๊ฐ์†Œ)
lines: ๊ฒ€์ถœ ๊ฒฐ๊ณผ, N x 1 x 2 ๋ฐฐ์—ด (r, Θ)
srn, stn: ๋ฉ€ํ‹ฐ ์Šค์ผ€์ผ ํ—ˆํ”„ ๋ณ€ํ™˜์— ์‚ฌ์šฉ, ์„  ๊ฒ€์ถœ์—์„œ๋Š” ์‚ฌ์šฉ ์•ˆ ํ•จ
min_theta, max_theta: ๊ฒ€์ถœ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ตœ๋Œ€, ์ตœ์†Œ ๊ฐ๋„

ํ”ฝ์…€ ์ฒ˜๋ฆฌ๋Š” ๋‹จ์ผ ํ”ฝ์…€ ์ฒ˜๋ฆฌ์™€ ํ”ฝ์…€ ๊ทธ๋ฃน ์ฒ˜๋ฆฌ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  ์˜๋ฏธ ์ข…๋ฅ˜
๋‹จ์ผ ํ”ฝ์…€ ์ฒ˜๋ฆฌ ์ด์›ƒ ํ”ฝ์…€๊ณผ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ž…๋ ฅ ์˜์ƒ์˜ ๊ฐ ํ”ฝ์…€ ๊ฐ’์„ ๋ณ€ํ™˜ํ•œ ํ›„ ๊ฒฐ๊ณผ ์˜์ƒ์˜ ๋™์ผํ•œ ์œ„์น˜์— ์ถœ๋ ฅํ•˜๋Š” ์—ฐ์‚ฐ ์‚ฐ์ˆ ์—ฐ์‚ฐ, ๋…ผ๋ฆฌ์—ฐ์‚ฐ, ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ, ๊ณ ์ • ์ž„๊ณ„๊ฐ’์œผ๋กœ ์ด์ง„ํ™”
ํ”ฝ์…€ ๊ทธ๋ฃน ์ฒ˜๋ฆฌ ์ถœ๋ ฅ ์˜์ƒ์˜ ์ƒˆ๋กœ์šด ํ”ฝ์…€ ๊ฐ’์„ ๊ฒฐ์ • ํ•  ๋•Œ ๊ทธ ์ฃผ์œ„์˜ ์ด์›ƒ ํ”ฝ์…€๋“ค๋„ ํ•จ๊ป˜ ๊ณ ๋ คํ•˜๋Š” ๊ณต๊ฐ„ ์˜์—ญ ์—ฐ์‚ฐ, ์ปจ๋ณผ๋ฃจ์…˜ ์—ฐ์‚ฐ์œผ๋กœ ์ฒ˜๋ฆฌ ๋ธ”๋Ÿฌ๋ง & ์ƒคํ”„๋‹, ๊ฐ€๋ณ€ ์ž„๊ณ„๊ฐ’์œผ๋กœ ์ง€์—ญ ์ด์ง„ํ™”

 

๐Ÿ‘€ ์ปจ๋ณผ๋ฃจ์…˜ ์—ฐ์‚ฐ (Convolution, ํ•ฉ์„ฑ๊ณฑ)

์ฒ˜๋ฆฌํ•˜๊ณ  ํ•˜๋Š” ํ”ฝ์…€ ๊ฐ’์„ ์ด์›ƒ ํ”ฝ์…€๊ณผ ๊ฐ๊ฐ์— ๋Œ€์‘ํ•˜๋Š” 2์ฐจ์› ๋ฐฐ์—ด ๋‚ด์˜ ๊ฐ€์ค‘์น˜(ํ•„ํ„ฐ์˜ ๊ฐ’)๋ฅผ ๊ณฑํ•˜์—ฌ ๊ณฑํ•œ ๊ฐ’๋“ค์„ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์—ฐ์‚ฐ

 

ํ•„ํ„ฐ (Filter, Mask)

์ž…๋ ฅ๋˜๋Š” ์‹ ํ˜ธ์˜ ์ผ๋ถ€ ์„ฑ๋ถ„์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ํŠน์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ

 

โœŒ cv2.filter2D(src, ddepth, kernel)

์ปจ๋ณผ๋ฃจ์…˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋กœ src๋Š” ์ž…๋ ฅ ์˜์ƒ, ddepth๋Š” ์ถœ๋ ฅ ์˜์ƒ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ -1๋กœ ์ง€์ •ํ•˜๋ฉด ์ž…๋ ฅ ์˜์ƒ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. kernel์€ ํ•„ํ„ฐ ํ–‰๋ ฌ์˜ ๊ฐ’์ด๋‹ค.

 

 

๐Ÿ‘€ ์ด์ง„ํ™”

์–ด๋–ค ์ฃผ์–ด์ง„ ์ž„๊ณ„๊ฐ’(threshold) ๋ณด๋‹ค ๋ฐ์€ ํ”ฝ์…€๋“ค์„ ๋ชจ๋‘ ํฐ์ƒ‰์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์€ ํ”ฝ์…€๋“ค์€ ๋ชจ๋‘ ๊ฒ€์€์ƒ‰์œผ๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์ด๋‹ค.

 

1๏ธโƒฃ ์ „์—ญ ์ด์ง„ํ™”

๋‹จ์ผ ํ”ฝ์…€ ์ฒ˜๋ฆฌ์˜ ์ข…๋ฅ˜์ธ ์ „์—ญ ์ด์ง„ํ™”๋Š” ๊ฐ ํ”ฝ์…€ ๊ฐ’์ด ๊ณ ์ • ์ž„๊ณ„๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด 0, ํฌ๋ฉด 255๋กœ ํ”ฝ์…€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค. 

 

โœŒ cv2.threshold(src, thresh, maxval, type)

์ „์—ญ ์ด์ง„ํ™” ํ•จ์ˆ˜๋กœ์จ src๋Š” ์ž…๋ ฅ ์˜์ƒ, thresh๋Š” ์ž„๊ณ„๊ฐ’, maxval์€ ์ž„๊ณ„๊ฐ’๋ณด๋‹ค ํด ๋•Œ ์ ์šฉ๋˜๋Š” ์ตœ๋Œ“๊ฐ’, type์€ ์ž„๊ณ„๊ฐ’ ์ ์šฉ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ฝ”๋“œ์—์„œ์˜ ์ž„๊ณ„๊ฐ’์€ 127์ด๊ณ  maxval์€ 255, cv2.THRESH_BINARY์€ ํ”ฝ์…€ ๊ฐ’์ด thresh๋ณด๋‹ค ํฌ๋ฉด maxval, ์ž‘์œผ๋ฉด 0์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ž„๊ณ„๊ฐ’ ์ ์šฉ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ „์—ญ ์ด์ง„ํ™”๋Š” ์ž„๊ณ„๊ฐ’์ด ๊ณ ์ •๋˜์–ด์žˆ๋‹ค๋ณด๋‹ˆ ๋ฐ๊ธฐ ๋ณ€ํ™”๊ฐ€ ์‹ฌํ•œ ์˜์ƒ์—๋Š” ์ž„๊ณ„๊ฐ’ ์„ค์ •์ด ์–ด๋ ต๋‹ค.

 

2๏ธโƒฃ ์ง€์—ญ ์ด์ง„ํ™”

์ „์—ญ ์ด์ง„ํ™”์˜ ๋‹จ์ ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋ณ€ ์ž„๊ณ„๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ์ง€์—ญ ์ด์ง„ํ™”๊ฐ€ ์žˆ๋‹ค. ํ”ฝ์…€ ๊ทธ๋ฃน ๋‹จ์œ„๋งˆ๋‹ค ์ž„๊ณ„๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ๊ทธ ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด 0, ํฌ๋ฉด 255๋กœ ํ”ฝ์…€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

โœŒ cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

์ง€์—ญ ์ด์ง„ํ™” ํ•จ์ˆ˜๋กœ์จ src๋Š” ์ž…๋ ฅ ์˜์ƒ, maxvalue๋Š” ์ž„๊ณ„๊ฐ’๋ณด๋‹ค ํด ๋•Œ ์ ์šฉ๋˜๋Š” ์ตœ๋Œ“๊ฐ’, adaptiveMethod๋Š” ์ ์šฉํ•  ์ง€์—ญ ์ด์ง„ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜, thesholdType์€ ์ž„๊ณ„๊ฐ’ ์ ์šฉ ๋ฐฉ๋ฒ•, blocksize๋Š” ์ง€์—ญ ์ด์ง„ํ™”๋ฅผ ํ•  ๋•Œ ๊ณ ๋ คํ•  ์ฃผ๋ณ€ ํ”ฝ์…€ ํฌ๊ธฐ (๋ธ”๋ก ํฌ๊ธฐ), C๋Š” ๋ธ”๋ก ๋‚ด ํ‰๊ท ๊ฐ’์—์„œ ๋บ„ ๊ฐ’(์ž„๊ณ„๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ)์„ ์˜๋ฏธํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ cv2.ADAPTIVE_THRESH_MEAN_C๋Š” ์ฃผ๋ณ€ ์˜์—ญ์˜ ํ‰๊ท ๊ฐ’์œผ๋กœ ์ง€์—ญ ์ด์ง„ํ™”๋ฅผ ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

๐Ÿ’ก ๋ธ”๋Ÿฌ๋ง (Blurring)

์ด์›ƒ ํ”ฝ์…€๋“ค์˜ ์ฐจ์ด๋ฅผ ๊ฐ์†Œ์‹œ์ผœ ์˜์ƒ์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์˜์ƒ์˜ ์žก์Œ(Noise)์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ธ๋‹ค.

๋ธ”๋Ÿฌ๋ง์— ์‚ฌ์šฉ๋˜๋Š” ํ•„ํ„ฐ๋กœ๋Š” ํ‰๊ท ๊ฐ’ ํ•„ํ„ฐ, ๋ฏธ๋””์–ธ ํ•„ํ„ฐ, ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ๊ฐ€ ์žˆ๋‹ค.

 

1๏ธโƒฃ ํ‰๊ท ๊ฐ’ ํ•„ํ„ฐ

์˜์ƒ์˜ ํŠน์ • ํ”ฝ์…€๊ณผ ์ฃผ๋ณ€ ํ”ฝ์…€๋“ฑ์˜ ์‚ฐ์ˆ  ํ‰๊ท ์„ ๊ฒฐ๊ณผ ์˜์ƒ ํ”ฝ์…€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ํ•„ํ„ฐ๋กœ์จ ๊ฐ€์žฅ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ธ”๋Ÿฌ๋ง ๋ฐฉ๋ฒ•์ด๋‹ค. ํ•„ํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋” ํ๋ ค์ง„๋‹ค.

 

1. 3 X 3 ํ‰๊ท  ๊ฐ’ ํ•„ํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

2. 5 X 5 ํ‰๊ท  ๊ฐ’ ํ•„ํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

 

5 X 5 ํ‰๊ท ๊ฐ’ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์‹œ ๋” ํ๋ ค์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค โ—

 

2๏ธโƒฃ ๋ฏธ๋””์–ธ ํ•„ํ„ฐ

์ž…๋ ฅ ์˜์ƒ์—์„œ ์ฃผ๋ณ€ ํ”ฝ์…€๋“ค์˜ ๊ฐ’๋“ค์„ ์˜ค๋ฆ„ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ทธ ์ค‘์•™์— ์žˆ๋Š” ๊ฐ’์œผ๋กœ ํ”ฝ์…€ ๊ฐ’์„ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•„ํ„ฐ๋กœ ์†Œ๊ธˆ & ํ›„์ถ” ์žก์Œ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ œ๊ฑฐํ•œ๋‹ค.

 

โœŒ cv2.medianBlur(src, ksize)

src๋Š” ์ž…๋ ฅ ์˜์ƒ, ksize๋Š” ํ•„ํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ•„ํ„ฐ์˜ ํฌ๊ธฐ๋Š” 3,5,9๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

 

3๏ธโƒฃ ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ

๊ฐ€์šฐ์‹œ์•ˆ ๋ถ„ํฌ๋ฅผ ์ด์šฉํ•œ ์ •๊ทœํ™” ํ•„ํ„ฐ๋กœ์จ ๋ชจ๋“  ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ์˜ ํ•ฉ์€ 1์ด๋‹ค. ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

3 X 3์˜ ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ์™€ 5 X 5์˜ ๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜์˜€๋‹ค. ์ž์„ธํžˆ ๋ณด๋ฉด ํฌ๊ธฐ๊ฐ€ 5์ธ ํ•„ํ„ฐ๊ฐ€ ๋” ํ๋ฆฌ๋‹ค.

 

โœŒ cv2.getGaussianKernel(ksize, sigma, ktype)

๊ฐ€์šฐ์‹œ์•ˆ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜๋กœ์จ ksize๋Š” ํ•„ํ„ฐ ํฌ๊ธฐ, sigma๋Š” ๊ฐ€์šฐ์‹œ์•ˆ ํ•จ์ˆ˜ ์‹ ์ค‘ ์‹œ๊ทธ๋งˆ ๊ฐ’, ktype์€ ํ•„ํ„ฐ ํƒ€์ž…์„ ์˜๋ฏธํ•˜๋ฉฐ default ๊ฐ’์€ float64์ด๋‹ค. 

 

 

๐Ÿ’ก ์ƒคํ”„๋‹ (Sharpening)

์ด์›ƒ ํ”ฝ์…€๋“ค์˜ ์ฐจ์ด๋ฅผ ํฌ๊ฒŒ ๋งŒ๋“ค์–ด ์˜์ƒ์„ ๋‚ ์นด๋กญ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

 

์ด 3๊ฐ€์ง€์˜ ์ƒคํ”„๋‹ ํ•„ํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋”์šฑ ์ƒคํ”„๋‹ ๋œ ์‚ฌ์ง„์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

OpenCV๋ž€ Open Source Computer Vision์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์ปดํ“จํ„ฐ ๋น„์ „์„ ๋ชฉ์ ์œผ๋กœ ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

 

ํ‘๋ฐฑ ์ด๋ฏธ์ง€์˜ ๋ฐ๊ธฐ ์กฐ์ ˆ์„ ํ•ด๋ณด์ž 

 

๐Ÿ‘€ for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ๊ธฐ ์กฐ์ ˆ

 

๋จผ์ € bright๋ผ๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ 2์ฐจ์› ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ทธ๋ ˆ์ด ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ ํ”ฝ์…€ ์ˆ˜ X ์„ธ๋กœ ํ”ฝ์…€ ์ˆ˜์ธ 512 X 512 ์ธ 2์ฐจ์› ๋ฐฐ์—ด์ด๋‹ค. ๋‹ค์Œ ๊ทธ๋ ˆ์ด ์ด๋ฏธ์ง€์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ ๋ฐฐ์—ด์˜ ๊ฐ’์— 50์„ ๋”ํ•œ ๊ฒƒ์ด 255๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ตœ๋Œ€์ธ 255๋กœ ์„ค์ •ํ•˜๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์›๋ž˜์˜ ๋ฐฐ์—ด ๊ฐ’์— 50์„ ๋”ํ•ด bright ๋ฐฐ์—ด ๊ฐ’์— ์ €์žฅํ•œ๋‹ค. 

 

์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ โ“

์ด๋ฏธ์ง€์˜ ๊ฒฐ๊ณผ๊ฐ’์ด 255 ๋ณดํƒ€ ํฐ ๊ฒฝ์šฐ์— 256์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด Numpy ์—ฐ์‚ฐ์˜ ํŠน์ง•์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๋ฐ๊ฒŒ ํ•˜๋ ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ์›ํ–ˆ์ง€๋งŒ ์˜คํžˆ๋ ค ์ด๋ฏธ์ง€๊ฐ€ ์–ด๋‘์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 150 + 150์„ ๋”ํ•˜๋ฉด 300 % 256์„ ํ•  ๊ฒฝ์šฐ 44๋กœ ํ”ฝ์…€ ๊ฐ’์ด ์˜คํžˆ๋ ค ๋” ์–ด๋‘์›Œ์ง„๋‹ค.

 

 

ํ•˜์ง€๋งŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์—ฌ๋„ ํ”ฝ์…€๊ฐ’์— 50์„ ๋”ํ•œ ๊ฒƒ์€ ํ•˜์–—๊ฒŒ๋งŒ ๋‚˜์˜ค๊ณ  ์–ด๋‘ก๊ฒŒ ํ•œ ๊ฒƒ๋„ ๊ทธ๋ฆผ์ด ๋งŽ์ด ๋‚ ์•„๊ฐ”๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์•ˆ ๋‚˜์˜จ ์ด์œ ๋Š” ํ™”์†Œ ๊ฐ’์— 8-bit unsingned ๊ฐ’์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  float(์‹ค์ˆ˜) ๊ฐ’์ด ๋“ค์–ด๊ฐ”๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‹ค์ˆ˜ ๊ฐ’์ด ๋“ค์–ด๊ฐ„ ์ด์œ ๋Š” np.zeros()์˜ data-type์˜ ๋””ํดํŠธ๊ฐ’์ด float64์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

np.zerosํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ bright ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด floatํ˜•์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ •์ˆ˜๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

 

1๏ธโƒฃ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ 8 ๋น„ํŠธ ๋ถ€ํ˜ธ์—†๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ ์ง€์ •ํ•ด ์ค„ ๊ฒฝ์šฐ ํ•ด๊ฒฐ

 

2๏ธโƒฃ cv.imshow ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฒ˜๋ฆฌ

 

Winname : ์ฐฝ์ด๋ฆ„, mat : ์ด๋ฏธ์ง€ ๋ฐฐ์—ด

 

์ด๋•Œ mat์˜ data type์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฃผ๋ฉด ๋œ๋‹ค.

ํ˜„์žฌ์˜ ์ด๋ฏธ์ง€๋Š” 64๋น„ํŠธ์˜ floatํ˜•์ด๋ฏ€๋กœ ๋ฐฐ์—ด์„ 255๋กœ ๋‚˜๋ˆˆ๋‹ค.

 

โœŒ ๊ทธ๋ ˆ์ด ์ด๋ฏธ์ง€ ๋ฐ๊ธฐ ์กฐ์ ˆ ์„ฑ๊ณต

 

๐Ÿ‘€ cv.add ๋ชจ๋“ˆ ์‚ฌ์šฉ

 

add ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™”์†Ÿ๊ฐ’์ด 255๊ฐ€ ๋„˜์–ด๊ฐˆ ๊ฒฝ์šฐ ์•Œ์•„์„œ 255๋กœ ์ง€์ •ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†์ด ๊ฐ„๋‹จํžˆ ๊ทธ๋ ˆ์ด ์ด๋ฏธ์ง€ ๋ฐ๊ธฐ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์˜์ƒ์ด๋ž€ 2์ฐจ์› ํ‰๋ฉด ์œ„์— ๊ทธ๋ ค์ง„ ์‹œ๊ฐ์  ํ‘œํ˜„๋ฌผ์„ ๋งํ•˜๋ฉฐ ์‚ฌ์ง„๊ณผ ๋™์˜์ƒ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

 

๋””์ง€ํ„ธ ์˜์ƒ์€ 2์ฐจ์› ํ‰๋ฉด์œ„์— ํ™”์†Œ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์˜์ƒ์„ ๋งํ•œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ํ™”์†Œ๋ž€ ๋ฌด์—‡์ผ๊นŒ โ“

 

์˜์ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„๋กœ์จ Pixel์ด๋ผ ๋ถˆ๋ฆฐ๋‹ค. 

 

๊ฐ€๋กœ์ถ• ํ”ฝ์…€ ์ˆ˜ X ์„ธ๋กœ์ถ• ํ”ฝ์…€ ์ˆ˜๋Š” ํ•ด์ƒ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ˆซ์ž๊ฐ€ ๋†’์„์ˆ˜๋ก ํ•ด์ƒ๋„๋Š” ์„ ๋ช…ํ•˜๋ฉฐ ๋‚ฎ์„์ˆ˜๋ก ํ•ด์ƒ๋„๋Š” ๋–จ์–ด์ง„๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด 256 X 256 ๊ณผ 64 X 64์˜ ํ•ด์ƒ๋„๊ฐ€ ์žˆ๋‹ค๋ฉด 256 X 256์ด ํ•ด์ƒ๋„๊ฐ€ ๋” ๋†’๋‹ค.

 

ํ™”์†Œ๋Š” ํ™”์†Ÿ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ํ™”์†Œ์˜ ๋ช…์•”์ด๋‚˜ ์ƒ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ์ด์–ด์•ผ ํ•œ๋‹ค. 

 

์ƒ‰๊ณต๊ฐ„์ด๋ž€ ์ƒ‰ ์ฒด๊ณ„๋ฅผ 3์ฐจ์› ๊ณต๊ฐ„์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฐœ๋…์œผ๋กœ ์ปดํ“จํ„ฐ๋Š” ๋น›์˜ 3์› ์ƒ‰์ธ RGB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ๊ธฐ ์ •๋„๋ฅผ ์ˆ˜์น˜ํ™”ํ•˜๊ณ  RGB ๊ฐ๊ฐ 0~255์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. 

 

โœŒ ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ผ๋ฉด ํ•˜๋‚˜์˜ ํ”ฝ์…€์— Red, Green, Blue์˜ ๊ฐ’์ด ๊ฐ๊ฐ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ด๋ฅผ 3 Channel์ด๋ผ ๋ถ€๋ฅด๋ฉฐ ์ฝ”๋“œ์—์„œ ํ‘œํ˜„ํ•  ๊ฒฝ์šฐ 3์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋œ๋‹ค. 

 

3D matrix๋กœ ํ‘œํ˜„ํ•  ์‹œ Img[์„ธ๋กœ์ถ•][๊ฐ€๋กœ์ถ•][์ฑ„๋„]

 

ex) img [640][480][3]

img [640][480][0] - Blue์˜ ํ™”์†Œ ๊ฐ’๋“ค๋งŒ ์ถ”์ถœ

img [640][480][1] - Green์˜ ํ™”์†Œ ๊ฐ’๋“ค๋งŒ ์ถ”์ถœ

img [640][480][2] - Red์˜ ํ™”์†Œ ๊ฐ’๋“ค๋งŒ ์ถ”์ถœ

 

โœŒ ํ‘๋ฐฑ ์ด๋ฏธ์ง€๋ผ๋ฉด ํ•˜๋‚˜์˜ ํ”ฝ์…€์—๋Š” ์ƒ‰์ด ์—†์œผ๋ฏ€๋กœ RGB๊ฐ€ ์—†๊ณ  ๋ช…์•”์„ ๋‚˜ํƒ€๋‚ด๋Š” 0~255์˜ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ณ  1 Channel์ด๋‹ค. 

 

2D matrix๋กœ ํ‘œํ˜„ํ•  ์‹œ Img [์„ธ๋กœ์ถ•][๊ฐ€๋กœ์ถ•]

 

ex) img [640][480]

 

์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€์—์„œ 3 Channel ํ™”์†Œ ๊ฐ’์ด ๋ชจ๋‘ 0์ผ ๊ฒฝ์šฐ ๊ฒ€์€์ƒ‰

 

์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€์—์„œ 3 Channel ํ™”์†Œ ๊ฐ’์ด ๋ชจ๋‘ 255์ผ ๊ฒฝ์šฐ ํ•˜์–€์ƒ‰

์ฆ‰, 3์ฑ„๋„ ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€๋Š” ํ™”์†Œ๊ฐ’์ด ๊ฐ ์ฑ„๋„์˜ ์ƒ‰์ƒ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ณ  1์ฑ„๋„ ๊ทธ๋ ˆ์ด ์ด๋ฏธ์ง€๋Š” ํ”ฝ์…€๊ฐ’์ด ๋ฐ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

+ Recent posts