๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿซ School/OpenCV5

HSV ์ƒ‰๊ณต๊ฐ„ Hue(์ƒ‰์ƒ), Saturation(์ฑ„๋„), Value(๋ช…๋„)1. Hue (์ƒ‰์ƒ)์˜๋ฏธ: ์ƒ‰์ƒ์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋นจ๊ฐ•, ํŒŒ๋ž‘, ๋…ธ๋ž‘ ๋“ฑ ์ƒ‰์˜ ์ข…๋ฅ˜๋ฅผ ๊ฐ๋„๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.๊ฐ’์˜ ๋ฒ”์œ„:OpenCV์—์„œ๋Š” 0 ~ 179์˜ ์ •์ˆ˜๊ฐ’์œผ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค (360๋„๋ฅผ 2๋กœ ๋‚˜๋ˆ”).์‹ค์ œ ์ƒ‰์ƒ ๋ฒ”์œ„๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:0°: ๋นจ๊ฐ•60°: ๋…ธ๋ž‘120°: ์ดˆ๋ก180°: ์ฒญ๋ก240°: ํŒŒ๋ž‘300°: ์ž์ฃผ2. Saturation (์ฑ„๋„)์˜๋ฏธ: ์ƒ‰์˜ ์ˆœ๋„(ํ˜น์€ ์„ ๋ช…๋„)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.์ฑ„๋„๊ฐ€ ๋†’์„์ˆ˜๋ก ์ƒ‰์ƒ์ด ์„ ๋ช…ํ•ด์ง€๊ณ , ๋‚ฎ์•„์งˆ์ˆ˜๋ก ํฐ์ƒ‰์— ๊ฐ€๊นŒ์›Œ์ง‘๋‹ˆ๋‹ค.์ฑ„๋„๊ฐ€ 0์ด๋ฉด ์ƒ‰์ƒ์ด ์—†๊ณ  ์™„์ „ํ•œ ํšŒ์ƒ‰(ํฐ์ƒ‰๊ณผ ๊ฒ€์ • ์‚ฌ์ด)์ด ๋ฉ๋‹ˆ๋‹ค.๊ฐ’์˜ ๋ฒ”์œ„:OpenCV์—์„œ๋Š” 0 ~ 255๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.0: ํฐ์ƒ‰(๋ฌด์ฑ„์ƒ‰)255: ๊ฐ€์žฅ ์„ ๋ช…ํ•œ ์ƒ‰์ƒ3. Value (๋ช…๋„)์˜๋ฏธ:.. 2024. 12. 11.
HSV ๋ถ„๋ฆฌ HSV๋Š” ์ƒ‰์ƒ(Hue), ์ฑ„๋„(Saturation), ๋ช…๋„(Value)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒ‰๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. cv2.createTrackbar('low_H', win_name, 110, 255, lowHue)cv2.createTrackbar('low_S', win_name, 30, 255, lowSaturation)cv2.createTrackbar('low_V', win_name, 30, 255, lowValue)cv2.createTrackbar('high_H', win_name, 130, 255, highHue)cv2.createTrackbar('high_S', win_name, 255, 255, highSaturation)cv2.createTrackbar('high_V', win_name, 255, 255, hi.. 2024. 12. 11.
๋ผํ”Œ๋ผ์‹œ์•ˆ ์—์ง€, ์ผ€๋‹ˆ ์—์ง€ ๋ผํ”Œ๋ผ์‹œ์•ˆ ์—์ง€cv2.Laplacian(src, ddepth, ksize=1, scale=1, delta=0, borderType=cv2.BORDER_DEFAULT) src:์ž…๋ ฅ ์ด๋ฏธ์ง€. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ๋กœ ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€.ddepth:์ถœ๋ ฅ ์ด๋ฏธ์ง€์˜ ๋ฐ์ดํ„ฐ ๊นŠ์ด. ์ฃผ๋กœ cv2.CV_16S ๋˜๋Š” cv2.CV_64F๋ฅผ ์‚ฌ์šฉํ•ด 2์ฐจ ๋ฏธ๋ถ„์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์Œ์ˆ˜ ๊ฐ’์„ ์ฒ˜๋ฆฌ.ksize:์ปค๋„ ํฌ๊ธฐ. ๊ธฐ๋ณธ๊ฐ’์€ 1์ด๋ฉฐ, ํฐ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ.scale:๋ผํ”Œ๋ผ์‹œ์•ˆ ๊ฒฐ๊ณผ๋ฅผ ์Šค์ผ€์ผ๋งํ•˜๋Š” ์ธ์ˆ˜. ๊ธฐ๋ณธ๊ฐ’์€ 1.delta:๊ณ„์‚ฐ๋œ ๋ผํ”Œ๋ผ์‹œ์•ˆ ๊ฐ’์— ์ถ”๊ฐ€ํ•  ๊ฐ’. ๊ธฐ๋ณธ๊ฐ’์€ 0.borderType:๊ฐ€์žฅ์ž๋ฆฌ ํ”ฝ์…€ ์ฒ˜๋ฆฌ ๋ฐฉ์‹. ๊ธฐ๋ณธ๊ฐ’์€ cv2.BORDER_DEFAULT.cv2.Laplacian(image,.. 2024. 12. 11.
์—์ง€๊ฒ€์ถœ ์—์ง€: ์œค๊ณฝ์„  ํ˜น์€ ๊ฒฝ๊ณ„์„ ์˜์ƒ์ฒ˜๋ฆฌ์—์„œ์˜ ์—์ง€: ํ™”์†Œ๊ฐ’์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ๋ถ€๋ถ„ ์ฆ‰, ํ™”์†Œ๊ฐ’์ด ๋†’์€ ๊ฐ’์—์„œ ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ๋ณ€ํ•˜๊ฑฐ๋‚˜, ๋‚ฎ์€ ๊ฐ’์—์„œ ๋†’์€ ๊ฐ’์œผ๋กœ ๋ณ€ํ•˜๋Š” ๋ถ€๋ถ„์—์ง€ ๊ฒ€์ถœ: ์—์ง€์— ํ•ด๋‹นํ•˜๋Š” ํ™”์†Œ๋“ค์„ ์ฐพ๋Š” ๊ณผ์ • 1. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”ํ™”์†Œ์˜ ์ฐจ๋ถ„์„ ์ด์šฉํ•˜์—ฌ ๊ทธ ์ฐจ๋ถ„์ด ํŠน์ • ์ž„๊ณ„๊ฐ’ ์ด์ƒ์ธ ๊ณณ์„ ์—์ง€๋กœ ์ง€์ •ํ•˜๋Š”๊ฒƒ. 2. ๋งˆ์Šคํฌ๋ฅผ ์ด์šฉํ•ด์„œ ํšŒ์„  ์ˆ˜ํ–‰** ํšŒ์„ ์ˆ˜ํ–‰ : ์ž…๋ ฅ ์ด๋ฏธ์ง€์™€ ํŠน์ • ํ–‰๋ ฌ(ํ•„ํ„ฐ ๋˜๋Š” ์ปค๋„)์„ ์—ฐ์‚ฐํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ถœ๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ • - 1์ฐจ ๋ฏธ๋ถ„ ์—ฐ์‚ฐ์ž : ๋กœ๋ฒ„์ธ  ์—์ง€, ํ”„๋ฆฌ์œ— ์—์ง€, ์†Œ๋ฒจ ์—์ง€- 2์ฐจ ๋ฏธ๋ถ„ ์—ฐ์‚ฐ์ž : ๋ผํ”Œ๋ผ์‹œ์•ˆ ์—์ง€(์žก์Œ์— ๋ฏผ๊ฐ), Log/Dog์—์ง€, ์บ๋‹ˆ ์—์ง€(๋ถˆํ•„์š”ํ•œ ์žก์Œ ์ œ๊ฑฐ) 2024. 12. 11.
OpenCV์˜ ์„ธ ๊ฐ€์ง€ ๋ธ”๋Ÿฌ๋ง ํ•จ์ˆ˜ (medianBlur, GaussianBlur, blur) noise = salt_pepper_noise(image,500)dst = cv2.medianBlur(noise, 7) #7์€ ksize = ์ปค๋„ ํฌ๊ธฐ = mask์˜ ํฌ๊ธฐ = window#kseize๋ฅผ ์˜ฌ๋ฆด์ˆ˜๋ก ๋” ์ข‹์•„์ง„๋‹คdst2 = cv2.GaussianBlur(noise, ksize=(7,7), sigmaX=10.0)#sigmaX์— 0์„ ์ฃผ๋ฉด ์ ์ด ๋ณด์ธ๋‹ค.dst3 = cv2.blur(noise, ksize=(7,7))medianBlur(): ๋žœ๋คํ•œ ํ‘๋ฐฑ ์ (๋…ธ์ด์ฆˆ)๋ฅผ ์ œ๊ฑฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค - ์•ฝ๊ฐ„ ์œ ํ™” ๋Š๋‚Œ์ด ๋‚œ๋‹ค. ๊ทธ๋ž˜์„œ salt-pepper ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ๊ฐ€ ์ œ์ผ ์ž˜๋จcv2.medianBlur(src, ksize, dst=None)src: ์ž…๋ ฅ ์ด๋ฏธ์ง€.ksize: ์ปค๋„ ํฌ๊ธฐ(ํ™€์ˆ˜๋งŒ ๊ฐ€๋Šฅ). ⇒ ์ด๊ฑธ ์˜ฌ.. 2024. 12. 11.