2 Fri

GARIGO : Face Mosaic Project

์œ ์‚ฌ๋„ Part 2.

  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ค€์œผ๋กœ ๋™์ธ ์ธ๋ฌผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ตฌํ˜„์ ์ธ ๋ถ€๋ถ„๊ณผ ํ•œ๊ณ„๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

import cv2

ex_hist = []
methods = {'CORREL': cv2.HISTCMP_CORREL, 'CHISQR': cv2.HISTCMP_CHISQR,
     'INTERSECT': cv2.HISTCMP_INTERSECT,
     'BHATTACHARYYA': cv2.HISTCMP_BHATTACHARYYA}
     
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
cv2.normalize(hist, hist, 0, 1, cv2.NORM_MINMAX)
if len(ex_hist) == 0:
    ex_hist = hist

similarity = cv2.compareHist(ex_hist, hist, methods['CORREL'])
ex_hist = hist

if similarity < 0.9:
  similarity2, _ = structural_similarity(ex_frame, image, full= True, multichannel=True)
  if similarity2 < 0.7:
    pass
  else:
    similarity = 1

ex_frame = image
  • 1 : cv2์— ์žˆ๋Š” ์œ ์‚ฌ๋„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค

  • 3 : ์ด์ „ ํ”„๋ ˆ์ž„์„ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜

  • 4: ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ์‚ฌ๋„ ๋น„๊ต ํ•จ์ˆ˜๋“ค์ด ์กด์žฌํ•œ๋‹ค. ์ด ์ค‘ ๋‘ ํ•จ์ˆ˜๋Š” 1์— ๊ฐ€๊นŒ์›Œ์•ผ ์œ ์‚ฌํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋‘ ํ•จ์ˆ˜๋Š” 0์— ๊ฐ€๊นŒ์›Œ์•ผ ์œ ์‚ฌํ•˜๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜๋ผ

  • 8~10 : ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ณ„์‚ฐํ•˜๊ณ  ์ •๊ทœํ™”ํ•œ๋‹ค

  • 11 : ์ด์ „ ์žฅ๋ฉด์ด ์—†์„ ๊ฒฝ์šฐ(์ฒซ ํ”„๋ ˆ์ž„) ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • 17 : ์œ ์‚ฌ๋„๊ฐ€ 0.9์ดํ•˜ ์ผ๊ฒฝ์šฐ ๋น„์Šทํ•œ ์ด๋ฏธ์ง€๋กœ ๊ฐ„์ฃผํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค.

  • 19 : ์•„๋ž˜์—์„œ ์„ค๋ช…

structural_similarity

  • ์ด ๋•Œ opencv ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์œ ์‚ฌ๋„๋ฅผ ๋น„๊ตํ•˜๋ฉด ๊ฐ„ํ˜น ๊ต‰์žฅํžˆ ๋น„์Šทํ•œ ์žฅ๋ฉด์ธ๋ฐ๋„ ์œ ์‚ฌ๋„๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ฌ ๋•Œ๊ฐ€ ์žˆ๋‹ค.

    • ๋งˆ์น˜ ๋”ฅํŽ˜์ดํฌ ๋ธ”๋ฝ ๊ธฐ์ˆ ๊ณผ ๋น„์Šทํ•œ๊ฑธ๊นŒ?

  • ์ด ๋•Œ ํ•œ๋ฒˆ๋” ๊ฒ€์ฆ์„ ํ•˜๊ธฐ ์œ„ํ•ด skimage.metrics ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ชจ๋“ˆ์ด ์ข€ ๋” ์ •ํ™•ํ•˜๊ณ  ์ •๋ฐ€ํ•œ ์œ ์‚ฌ๋„ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

    • ์•„๋‹ˆ ๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋ƒฅ ์ด๊ฑฐ ์“ฐ๋ฉด ๋˜์ž–์•„?

    • ๊ทธ๋งŒํผ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค. ์ƒ๋‹นํžˆ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ๋ฒˆ์งธ ์œ ์‚ฌ๋„ ๋น„๊ต์—์„œ ํƒˆ๋ฝํ–ˆ์„ ๊ฒฝ์šฐ๋งŒ ์ ์šฉํ•œ๋‹ค.

      • ์˜์ƒ์€ ๋น„์Šทํ•œ ์žฅ๋ฉด๋“ค์˜ ์—ฐ์†์ฒด์ด๋‹ค.

from skimage.metrics import structural_similarity
  • ์ด๋Š” ๊ฒฐ๊ณผ ํŒŒ์ผ์ด๋‹ค. (๋™์˜์ƒ์œผ๋กœ ๋‚˜์™”์œผ๋ฉด ๊น”๋”ํ–ˆ์„ํ…๋ฐ..)

ํ•œ๊ณ„

  • ๋ฐ”๋กœ ์ด์ „ ํ”„๋ ˆ์ž„์—๋Š” ์ ์šฉํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    • (์ธ์‹ ๋ชปํ•จ) - (๊น€์ข…๊ตญ) - (์ธ์‹ ๋ชปํ•จ) ์˜ ๊ฒฝ์šฐ์—๋Š”

    • (์ธ์‹ ๋ชปํ•จ) - (๊น€์ข…๊ตญ) - (๊น€์ข…๊ตญ) ์œผ๋กœ ๊ฐœ์„ ๋˜์ง€๋งŒ ์ด์ „ ํ”„๋ ˆ์ž„์€ ๊ฐœ์„ ๋˜์ง€ ๋ชปํ•œ๋‹ค.

  • ์ด๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ์œ ์‚ฌ๋„๊ฐ€ ๋น„์Šทํ•œ ์žฅ๋ฉด๋“ค๊ฐ„์˜ ๋ชจ๋“  ์–ผ๊ตด์ขŒํ‘œ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค.

    • ํ”„๋กœ์ ํŠธ ์™„์„ฑ ๊ธฐํ•œ์ด ๋‹ค๊ฐ€์™€์„œ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด๋‹ค.

  • ์ด๋Š” ํ•œ ์ธ๋ฌผ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์‚ฌ์ง„์„ ํ•™์Šตํ–ˆ์„ ๋•Œ์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ๋™์ผํ•œ๋ฐ, ๊ฐ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์ธ์‹ ๋ฏธ์ธ์‹ ์—ฌ๋ถ€๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ํŠน์ • threshold๊ฐ’๋ณด๋‹ค ์ธ์‹ ๋น„์œจ์ด ๋†’๋‹ค๋ฉด ์œ ์‚ฌ๋„๊ฐ€ ๋น„์Šทํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„์˜ ์–ผ๊ตด์„ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.

Last updated

Was this helpful?