ο£Ώ Apple Lover Developer & Artist

μ˜μ†μ μΈ λ””μžμΈμ— ν˜„λŒ€μ˜ 곡감을 μ±„μ›Œλ„£λŠ” κ³΅λ°©μž…λ‹ˆλ‹€

πŸ–₯ Computer Science/Computer Vision

[Computer Vision] Hough Transform

singularis7 2021. 9. 24. 10:57
λ°˜μ‘ν˜•

Overview

  • κ²€μΆœλœ 엣지λ₯Ό μ—¬λŸ¬κ°€μ§€ λΆ„μ•Όμ—μ„œ ν™œμš©ν•˜λŠ” 방법을 λ°°μš΄λ‹€.
  • 엣지λ₯Ό κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆλŠ” 방법을 λ°°μš΄λ‹€.
  • 엣지λ₯Ό 톡해 μ„ λΆ„μ΄λ‚˜ 원을 μ°ΎλŠ” 방법을 λ°°μš΄λ‹€.

엣지 μ—°κ²°κ³Ό μ„ λΆ„ 근사

μ—£μ§€μ˜ ν‘œν˜„ 방법

  • μœ„ μ΄λ―Έμ§€μ—λŠ” 16 x 8 이미지가 μžˆλ‹€.
  • μ˜μƒμ—μ„œ 엣지가 μ°¨μ§€ν•˜λŠ” μ˜μ—­μ΄ 적기 λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ μ‚¬μš© μΈ‘λ©΄μ—μ„œ λΉ„νš¨μœ¨μ μ΄λ‹€.
  • λ©”λͺ¨λ¦¬λ₯Ό μ€„μ΄λ©΄μ„œ 효율적으둜 μ—£μ§€μ˜ μœ„μΉ˜λ₯Ό μΆ”μ ν•˜λŠ” 방법듀이 μžˆλ‹€.
  • 첫번째 방법은 μ²΄μΈμ½”λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀.

  • μ˜μƒμ˜ ν™”μ†Œλ₯Ό μ­‰ ν›‘λ‹€κ°€ 처음 λ§Œλ‚˜λŠ” 점을 κΈ°μ€€μœΌλ‘œ 였λ₯Έμͺ½ λ°©ν–₯을 0 κΈ°μ€€μœΌλ‘œ μž‘μ•„μ„œ 8μ—°κ²°μ„±μœΌλ‘œ μ‚΄νŽ΄λ³Έλ‹€.
  • μ²΄μΈμ½”λ“œλŠ” μœ„μ™€ 같은 8 μ—°κ²°μ„±μ—μ„œ μ–΄λ–»κ²Œ μ—°κ²°λ˜μ–΄ μžˆλŠ”μ§€ ν‘œν˜„ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
  • μ˜μƒμ—μ„œ 엣지 성뢄듀은 λ‹€μŒκ³Ό 같이 λΆ„λ₯˜ν•΄λ³Ό 수 μžˆλ‹€.@ (끝점) : edgeκ°€ λλ‚˜λŠ” 점, edgeλ₯Ό κΈ°μ€€μœΌλ‘œ 8연결성을 μ‚΄νŽ΄λ³΄μ•˜μ„ λ•Œ ν•œκ°œμ˜ edge μ„±λΆ„λ§Œ 있음
  • + (뢄기점) : edgeκ°€ 두가지 λ°©ν–₯으둜 μ—°κ²°λ˜λŠ” 점, edgeλ₯Ό κΈ°μ€€μœΌλ‘œ 8연결성을 μ‚΄νŽ΄λ³΄μ•˜μ„ λ•Œ μ΅œμ†Œ 3개 이상 μ—°κ²°
  • O (톡과점) : edge μ„±λΆ„μ˜ 8연결성을 μ‚΄νŽ΄λ³΄μ•˜μ„ λ•Œ 2개의 edge 정보가 μžˆλŠ” 경우

  • 끝점과 뢄기점, 뢄기점과 톡과점, 뢄기점과 λΆ„κΈ°μ μœΌλ‘œ λ‚˜λ‰œ 지점을 ν† λ§‰μœΌλ‘œ λ‚˜λˆ„μ–΄ λ³Ό 수 μžˆλ‹€.

  • 각 토막에 ν•΄λ‹Ήλ˜λŠ” μ˜μƒμ—μ„œμ˜ μ’Œν‘œκ°’μ„ μ‚¬μš©ν•˜λ©΄ 더 적은 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‘œν˜„ν•  수 μžˆλ‹€.
  • μ²΄μΈμ½”λ“œλŠ” μ‹œμž‘μ§€μ  μ’Œν‘œκ°’μœΌλ‘œ μ‹œμž‘ν•˜μ—¬ λ°©ν–₯만 남겨주어 더 νš¨μœ¨μ μœΌλ‘œλ„ ν‘œν˜„ν•  수 μžˆλ‹€.

μ„ λΆ„ 근사

  • A점과 B점을 μ΄μ–΄μ£ΌλŠ” μ§μ„ μœΌλ‘œλΆ€ν„° κ°€μž₯먼점 hκ°€ μžˆμ„ λ•Œ μ„ λΆ„ 뢄할을 μž¬κ·€μ μœΌλ‘œ λ°˜λ³΅ν•΄μ„œ 엣지 성뢄을 ꡬ해본닀.
  • λ‹€μŒκ³Ό 같은 곑선 λͺ¨μ–‘μ˜ 엣지 성뢄을 κ·Όμ‚¬μ μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλŠ” 방법을 μƒκ°ν•΄λ³΄λŠ” 것이닀.

  • A, B 끝 점을 μ—°κ²°ν•˜λŠ” μ§μ„ μ˜ 방정식을 λ§Œλ“€μ–΄ λ³΄μ•˜μ§€λ§Œ 엣지 성뢄을 λŒ€ν‘œν•˜κΈ°μ— 거리가 μžˆλ‹€.
  • 곑선과 직선 사이에 κ°€μž₯ 거리가 λ¨Ό 지점을 A'을 μ„ νƒν•˜μ—¬ μž¬κ·€μ μœΌλ‘œ 직선을 κ΅¬ν•΄λ‚˜κ°„λ‹€.

  • μœ„μ—μ„œ μ–ΈκΈ‰λœ 과정을 μž¬κ·€μ μœΌλ‘œ κ³„μ‚°ν•˜μ—¬ μ§μ„ μ˜ 방정식을 엣지 성뢄에 κ·Όμ‚¬μ‹œν‚¬ 수 μžˆλ‹€. 
  • κ·Όμ‚¬λœ λͺ¨μ–‘은 λ‹€μŒκ³Ό κ°™λ‹€.


ν—ˆν”„ λ³€ν™˜

  • 엣지λ₯Ό 톡해 μ„ λΆ„, 원을 κ²€μΆœν•˜λŠ” 방법
  • Hough Transform : 차원(μ’Œν‘œκ³„)의 λ³€ν™˜

  • 2차원 μ˜μƒμ—μ„œ 엣지λ₯Ό ν‘œν˜„ν•  λ•Œ λ„ˆλ¬΄ λ§Žμ€ λ©”λͺ¨λ¦¬κ°€ μš”κ΅¬λ˜μ—ˆλ‹€.
  • 아이디어: x, y μ’Œν‘œκ³„λ₯Ό λ³€ν™˜μ‹œν‚€λ©΄ x, yλ₯Ό 효율적으둜 κ²€μΆœν•  수 μžˆμ§€μ•Šμ„κΉŒ?

  • μ—£μ§€μ˜ μ—°κ²° κ³Όμ • 없이 선뢄을 κ²€μΆœν•œλ‹€.
  • 엣지λ₯Ό κ΅¬μ„±ν•˜λŠ” 픽셀값을 κ°–κ³  μ–΄λ–€ νŠΉμ„±μ„ κ°–κ³  μžˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λ³Έλ‹€.
  • x, yμ’Œν‘œκ³„μ—μ„œλŠ” μ’Œν‘œκ°’μ„ ν•˜λ‚˜ ν•˜λ‚˜ μ‚΄νŽ΄λ³΄λŠ”λ° λ©”λͺ¨λ¦¬λ₯Ό λΉ„νš¨μœ¨μ μœΌλ‘œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— b-a μ’Œν‘œκ³„λ‘œ λ³€ν™˜μ‹œν‚¨λ‹€.
  • 이 λ•Œ μ˜μƒ 곡간 y-xλ₯Ό 기울기 절편 곡간 b-a둜 λ³€ν™˜μ‹œν‚¨λ‹€.
  • μ •λ¦¬ν•˜μžλ©΄ y-x κ³΅κ°„μ—μ„œ μ„Έ 점을 μ΄μ–΄μ£ΌλŠ” μ§μ„ μ˜ 방정식을 κ³„μ‚°ν•œ 후에 κΈ°μšΈκΈ°μ™€ 절편만 μ•Œκ³  μžˆλ‹€λ©΄ κ·Έ μœ„μ˜ λͺ¨λ“  μ’Œν‘œλ₯Ό μ„€λͺ…ν•΄λ‚Ό 수 μžˆλ‹€.
  • μ•„μ£Ό 쉽고 극적인 λ©”λͺ¨λ¦¬ νš¨μœ¨μ„ 보일 수 μžˆλ‹€!!!!

 

  • 기울기 값이 λ¬΄ν•œλŒ€μΈ 경우 μ’Œν‘œκ³„ λ³€ν™˜μ— ν•œκ³„κ°€ 있기 λ•Œλ¬Έμ— κ·Ήμ’Œν‘œκ³„λ₯Ό ν™œμš©ν•œλ‹€.
  • μ›μœΌλ‘œ ν‘œν˜„λœ 것을 각도가 변함에 λ”°λ₯Έ p값을 보여쀀닀.
  • νŠΉμ • κ°λ„μ—μ„œ ν•˜λ‚˜μ˜ μ μ—μ„œ λ§Œλ‚˜λŠ” 것을 확인할 수 μžˆλ‹€.
  • μ •λ¦¬ν•˜μžλ©΄ y-xμ’Œν‘œκ³„μ˜ 3개의 점을 νŠΉμ • (p, 각도) κ°’μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆμ–΄μ„œ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.
  • λ°˜λŒ€λ‘œ λ§ν•˜μžλ©΄ (p, 각도)을 μ•Œκ³  μžˆμ„ λ•Œ μ—­μœΌλ‘œ y-x μ’Œν‘œκ³„μ—μ„œμ˜ μ§μ„ μ˜ 방정식을 ꡬ할 수 μžˆλ‹€.

 

Voting Scheme

  • μ˜μƒμ€ 이산적이기 λ•Œλ¬Έμ— μ§μ„ μ˜ 방정식을 λ²—μ–΄λ‚  κ°€λŠ₯성이 μ‘΄μž¬ν•œλ‹€.
  • κ·Έλ‚˜λ§ˆ κ°€μž₯ 많이 μ§€λ‚˜κ°€λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 곳을 κ·Ή μ’Œν‘œκ³„μ˜ μ€‘μ‹¬μ μœΌλ‘œ κ°€μ •ν•  ν•„μš”κ°€ μžˆλ‹€.
  • 직선과 κ°€κΉŒμš΄ μœ„μΉ˜μ— Voting이 λ˜λŠ”픽셀을 μ§€λ‚˜λŠ” κ·Ή μ’Œν‘œκ³„μ—μ„œμ˜ μ§μ„ μ˜ 방정식을 μ°Ύμ•„λ³΄μž!

  • μ§μ„ μ˜ 기울기: C, μ§μ„ μ˜ x절편 : a, μ§μ„ μ˜ y 절편 : b
  • μ§μ„ μ˜ 방정식 y = -(b/a)x + b
  • μ§μ„ μ˜ 방정식에 λŒ€ν•œ κ·Ήμ’Œν‘œλ₯Ό ꡬ해보면?
  • μ›μ μœΌλ‘œλΆ€ν„° 직선과 μ§κ΅ν•˜λŠ” 선뢄을 κΈ‹λŠ”λ‹€.
  • xμΆ•κ³Ό μ΄λ£¨λŠ” 각 (세타), 원점과 직선 μ‚¬μ΄μ˜ 거리 (r)
  • λͺ©ν‘œ: (x-yμ’Œν‘œκ³„) => y = -(b/a)x + b λ₯Ό (κ·Ή μ’Œν‘œκ³„) => (세타, r)둜 λ‚˜νƒ€λ‚΄μ–΄λ³΄μž!
  • κΈ°μšΈκΈ°μ™€ 세타, y절편과 rκ°’κ³Όμ˜ 관계λ₯Ό μ΄μš©ν•œλ‹€.

  • μœ„μ™€ 같이 μ—¬λŸ¬κ°œμ˜ μ‚Όκ°ν˜•μ„ 찾을 수 μžˆλ‹€. μš°μ„  νŒŒλž‘μƒ‰μœΌλ‘œ ν‘œμ‹œλœ 큰 μ‚Όκ°ν˜•μ„ κΈ°μ€€μœΌλ‘œ λ³Έλ‹€.
  • 큰 μ‚Όκ°ν˜•μ„ κΈ°μ€€μœΌλ‘œ sin, cos값을 계산할 수 μžˆλ‹€.
  • 기울기 값을 κ³„μ‚°ν•˜κΈ°μœ„ν•΄ cos세타 / sin 세타λ₯Ό κ³„μ‚°ν•˜λ©΄ - (b/a)λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

  • yμ ˆνŽΈμ€ λΉ¨κ°„μƒ‰μœΌλ‘œ ν‘œν˜„λœ λΆ€λΆ„ μ‚Όκ°ν˜•μ„ ν™œμš©ν•˜μ—¬ κ³„μ‚°ν•œλ‹€.
  • sin 세타 = r / b λ₯Ό λ§Œμ‘±ν•˜κΈ° λ•Œλ¬Έμ—
  • y절편 b = r / sinμ„Ένƒ€λ‘œ 계산할 수 μžˆλ‹€. μ •λ¦¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  • μœ„ 관계λ₯Ό μ‚¬μš©ν•˜μ—¬ x-yμ’Œν‘œκ³„μ—μ„œμ˜ λͺ¨λ“  μ’Œν‘œλ₯Ό κ·Ήμ’Œν‘œλ‘œ ν‘œν˜„ν•  수 있게 λœλ‹€.

  • μœ„μ—μ„œ μ†Œκ°œν•œ 관계식에 따라 x, y 값을 μ•Œκ³  μžˆμ„ λ•Œ 각 세타에 λŒ€μ‘λ˜λŠ” p값을 계산할 수 μžˆλ‹€.
  • x-yμ’Œν‘œκ°’λ“€μ„ λͺ¨λ‘ p, μ„Ένƒ€λ‘œ λ³€ν™˜μ‹œμΌœμ„œ κ°€μž₯ 많이 선택(Voting)λ˜λŠ” 점 p와 세타λ₯Ό μ„ νƒν•œλ‹€.
  • λ¬΄ν•œλŒ€μΈ κ²½μš°κ°€ 있기 λ•Œλ¬Έμ— κ·Ήμ’Œν‘œκ³„λ₯Ό ν†΅ν•œ ν‘œν˜„λ²•μ΄ νš¨μœ¨μ μ΄λ‹€.

 

Algorithm outline

  • HλΌλŠ” 값을 λͺ¨λ‘ 0으둜 μ΄ˆκΈ°ν™”ν•œλ‹€. HλŠ” 세타값에 λ”°λ₯Έ p λˆ„μ κ°’μ„ κΈ°λ‘ν•˜λŠ” ν—ˆν”„λ§Œ 곡간이닀.
  • 각 엣지 ν¬μΈνŠΈμ— λŒ€ν•΄ 세타값을 0~180κΉŒμ§€ λ³€κ²½ν•΄κ°€λ©΄μ„œ λ‹€μŒμ„ κ³„μ‚°ν•œλ‹€.
  • p = x * cos세타 + y*sin세타, H(세타, p) += 1
  • κ°€μž₯ 많이 Voting된 μ’Œν‘œλ₯Ό μ°ΎλŠ”λ‹€.
  • κ·Ήμ’Œν‘œμ— λŒ€ν•΄ μ‹€μ œλ‘œ Visualize ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  • Votingλ˜λŠ” 점을 톡해 μ§μ„ μ˜ λ°©μ •μ‹μ˜ 개수λ₯Ό μ˜ˆμΈ‘ν•˜κ±°λ‚˜ λͺ¨μ–‘ 같은 것을 μ˜ˆμΈ‘ν•  수 μžˆλ‹€.

  • 엣지 μ„±λΆ„λ“€ μ€‘μ—μ„œ νŠΉμ • μ—£μ§€λ§Œμ„ 뽑아낼 수 μžˆλ‹€.

  • 자율 μ£Όν–‰ μ°¨λŸ‰μ—μ„œλŠ” 차선을 κ²€μΆœν•  λ•Œ ν—ˆν”„λ§Œ λ³€ν™˜μ„ μ‚¬μš©ν•œλ‹€.

  • μ˜μƒμ— 작음이 λΌμ–΄μžˆλ”λΌλ„ μ°¨μ„ κ³Ό 같이 직선이 κΈ΄ κ²½μš°μ—λŠ” 직선에 λŒ€μ‘λ˜λŠ” κ·Ήμ’Œν‘œκ°’μ˜ λˆ„μ κ°’μ΄ λ‹€λ₯Έ μž‘μŒλ³΄λ‹€ μ›”λ“±ν•˜κ²Œ λ†’κΈ° λ•Œλ¬Έμ΄λ‹€.
  • λ”°λΌμ„œ μ›ν•˜λŠ” λ„λ‘œ μ°¨μ„ λ§Œ μž‘μ„ 수 μžˆλ‹€.

 

Effect of noise

  • μ •ν™•ν•˜κ²Œ μ§μ„ μ˜ 방정식을 μ΄λ£¨λŠ” 경우 κ·Ήμ’Œν‘œλ‘œ λ³€ν™˜ν•˜λ©΄ ν•œμ μœΌλ‘œ Votingλœλ‹€.
  • ν•˜μ§€λ§Œ noiseκ°€ λΌμ–΄μžˆλŠ” 경우 ν•˜λ‚˜μ˜ 점으둜 Voting이 λ˜μ§€ μ•ŠλŠ”λ‹€. 이 λ•Œμ—λŠ” μ–΄λ–»κ²Œ 직선을 μ°Ύμ•„λ‚Ό 것인가?

  • μž‘μŒμ„ λŒ€ν‘œν•˜λŠ” μ§μ„ μ˜ 방정식을 μ°Ύμ•„λ³Ό 수 μžˆμ„ 것이닀. μ–΄λ–»κ²Œ ν‘œν˜„ν•  수 μžˆμ„κΉŒ?

  • λ„ˆλ¬΄ λ„λŸ΄ν•˜κ²Œ ν˜Ήμ€ μ •κ΅ν•˜κ²Œ noiseλ₯Ό 닀루면 μ›ν•˜λŠ” μ§μ„ μ˜ 방정식을 λ„μΆœν•˜μ§€ λͺ»ν•  수 μžˆλ‹€.
  • 이 λ¬Έμ œμ— κ΄€ν•˜μ—¬ μ†”λ£¨μ…˜μ€ RANSAC μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.

 

Hough transform for circles

  • ν—ˆν”„ λ³€ν™˜μ„ 톡해 원을 μ°ΎλŠ” μ‘μš©μ„ ν•΄λ³Έλ‹€.

  • 2차원 μ˜μƒμ—μ„œ 원 λͺ¨μ–‘μ˜ 엣지 성뢄이 μžˆμ„λ•Œ μ›μ˜ λ°˜μ§€λ¦„ r값을 μ•Œκ³ μžˆλ‹€κ³  κ°€μ •ν•œλ‹€.
  • μ›μœ„μ˜ 점에 λŒ€ν•΄ μ§κ΅ν•˜λŠ” λ°©ν–₯으둜 뽑닀보면 원 내뢀와 μ™ΈλΆ€μ—μ„œ ν•˜λ‚˜μ˜ 점씩 λ½‘νž 것이닀.
  • λ°–μ—μ„œ Voting이 λ˜λŠ” 점은 Sparseν•˜κ²Œ 퍼질 것이닀.
  • 원 λ‚΄λΆ€μ—μ„œ Voting이 λ˜λŠ” 점은 μ›μ˜ 쀑심이닀.

  • 주어진 픽셀에 원이 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  원 내뢀에 Voting λ˜λŠ” 점을 찾으면 μ›μ˜ 쀑심을 찾을 수 μžˆμ„ 것이닀.

 

Generalized Hough transform

  • ν—ˆν”„ λ³€ν™˜μ„ μΌλ°˜ν™”ν•΄μ„œ 사물을 μ°Ύκ³  κ²€μƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ‘μš©ν•  수 μžˆλ‹€.

  • μ–΄λŠ 물체에 μœ„μ™€ 같은 νŠΉμ§•μ„ μ„Έμ› λ‹€κ³  κ°€μ •ν•˜μž!

  • λ§ˆλ¦„λͺ¨, 원, μ„Έλͺ¨ νŠΉμ§•μ— λŒ€ν•΄ 우츑과 같이 Votingλœλ‹€κ³  κ°€μ •ν•˜μž!
  • λ¬Όμ²΄μ—μ„œ 각 νŠΉμ§•μ΄ Votingν•˜λŠ” 점 μ€‘μ—μ„œ 많이 Votinge λ˜λŠ” 점을 찾으면 물체의 쀑심을 찾을 수 μžˆμ„ 것이닀.
  • μœ„ μ•„μ΄λ””μ–΄λ‘œ μ˜μƒμ—μ„œ 물체λ₯Ό μΈμ‹ν•œλ‹€.

  • μ˜μƒμœΌλ‘œλΆ€ν„° 바퀴λ₯Ό μ°Ύμ•˜μ„ λ•Œ λ°”ν€΄λ‘œλΆ€ν„° 쀑심 뢀뢄이 어디에 λ§΅ν•‘μ΄λ˜λŠ”μ§€ 생각해볼 수 μžˆμ„ 것이닀.
  • 뒷바퀴와 μ•žλ°”ν€΄λ₯Ό 톡해 많이 Votingλ˜λŠ” 지점을 μ°Ύμ•„μ„œ 물체λ₯Ό κ²€μΆœν•  수 μžˆλ‹€.

  • 주어진 μ˜μƒμœΌλ‘œλΆ€ν„° μ—¬λŸ¬κ°€μ§€ 바퀴 μ˜μƒμ„ μ°Ύμ•„μ„œ 평균을 κ΅¬ν•œλ‹€.
  • 각 평균 이미지에 λŒ€ν•΄μ„œ 쀑심 μœ„μΉ˜κ°€ μ–΄λ–»κ²Œ κ΅¬μ„±λ˜μ–΄μžˆμ„μ§€ mappingν•΄λ³΄μž!

  • μœ„μ™€ 같은 λ…Όλ¦¬λ‘œ 바퀴도 바퀴도 μ°Ύκ³  νŠΉμ§•μ„ μ°Ύμ•„μ„œ 쀑심을 찾도둝 mapping을 해보면

  • μžλ™μ°¨μ˜ μ€‘μ‹¬μœ„μΉ˜λ‘œ 많이 Votingλ˜λŠ” μ§€μ μœΌλ‘œ μžλ™μ°¨λ₯Ό κ²€μΆœν•΄λ‚Ό 수 μžˆλ‹€.
  • μ •λ¦¬ν•˜μžλ©΄ ν—ˆν”„λ³€ν™˜μ„ 톡해 μ›μ˜ 쀑심을 μ°ΎλŠ” 아이디어λ₯Ό ν™•μž₯ν•˜κ³  μ˜μƒμ˜ νŠΉμ§• μ˜μ—­μ„ λͺ¨μ•„μ„œ κ°€μž₯ 많이 Votingλ˜λŠ” 지점을 찾으면 물체λ₯Ό κ²€μΆœν•΄λ‚Ό 수 μžˆλ‹€.

  • 주어진 μ˜μƒμ—μ„œ νŠΉμ§•μ„ μ°ΎλŠ”λ‹€.
  • νŠΉμ§•μ„ μ€‘μ‹¬μœΌλ‘œ μ˜μ—­μ„ λͺ¨μ•„μ„œ 어디에 쀑심이 μžˆλŠ”μ§€ Voting ν•œλ‹€.
  • Voting이 κ°€μž₯ 많이 λ˜λŠ” 점은 물체의 κ°€μƒμ˜ 쀑심이라고 κ°€μ •ν•œλ‹€.
  • λ”°λΌμ„œ 물체λ₯Ό κ²€μΆœν•˜λŠ” λͺ¨λΈλ‘œ λ§Œλ“€ 수 μžˆλ‹€.

  • μ˜€ν† λ°”μ΄, μ‚¬λžŒ, μ†Œμ™€ 같이 νŠΉμ • κΈ°μ€€μœΌλ‘œ Voting을 ν•˜λ©΄ 물체가 잘 κ²€μΆœλ˜κ³  μžˆλ‹€.
  • λΆ€λΆ„μ μœΌλ‘œ 가렀진 이미지에 μžˆμ–΄μ„œλŠ” 단점이 μ‘΄μž¬ν•  수 μžˆλ‹€.
  • ν—ˆν”„ λ³€ν™˜μ˜ μž₯점 : 
    가렀짐, 작음이 μžˆμ–΄λ„ 잘 κ²€μΆœν•  수 μžˆλ‹€.
  • ν—ˆν”„ λ³€ν™˜μ˜ 단점 :
    μ²˜λ¦¬μ‹œκ°„μ΄ 많이 걸리고 λͺ¨λΈμ΄ 많이 λ³€ν•˜λŠ” κ²½μš°μ— 잘 κ²€μΆœν•˜μ§€ λͺ»ν•œλ‹€. 즉, μžλ™μ°¨ μ˜€ν† λ°”μ΄μ™€ 같은 λͺ¨μ–‘이 ν•œμ •λ˜μ–΄μžˆλŠ” κ²½μš°μ—λŠ” 잘 μ°Ύμ§€λ§Œ λͺ¨λΈμ„ λ³΄λŠ” λ°©ν–₯에 따라 잘 κ²€μΆœν•˜μ§€ λͺ»ν•  수 μžˆλ‹€.

RANSAC

  • 주어진 μ˜μƒμ— 작음이 μžˆμ„λ•Œ 효율적으둜 μ§μ„ μ˜ 방정식을 κ΅¬ν•˜λŠ” 방법이닀.

  • μ„ ν˜• 회기 방법을 톡해 주어진 데이터에 λŒ€ν•œ μ§μ„ μ˜ 방정식을 계산할 수 μžˆλ‹€.
  • μ΅œμ†Œμ œκ³±λ²•μ„ μ‚¬μš©ν•˜λŠ” 것도 μΌλ°˜μ μ΄μ§€λ§Œ μ‹œκ°„μ΄ 였래 κ±Έλ¦°λ‹€.
  • μ‹œκ°„μ„ μ€„μ΄λ©΄μ„œ 주어진 λ°μ΄ν„°μ—μ„œ μ§μ„ μ˜ 방정식을 κ΅¬ν•˜λŠ” 방법을 μ•Œμ•„λ³Ό 것이닀.

  • 직선을 κ²€μΆœν•˜λŠ”λ° μž‘μŒμ„ μ œμ™Έν•˜κ³  μž„μ˜μ˜ μ„ νƒλœ 점듀이 κ°€μž₯ 많이 Votingν•˜λŠ” 점듀을 톡해 μ§μ„ μ˜ 방정식을 κ΅¬ν•œλ‹€.

  • μœ„μ™€ 같은 μ˜μƒμ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ λΉ¨κ°„μƒ‰μœΌλ‘œ ν‘œμ‹œλœ 직선 λͺ¨μ–‘μœΌλ‘œ λͺ¨μ—¬μžˆλŠ” 점을 μ œμ™Έν•œ λ‚˜λ¨Έμ§€λ₯Ό 작음으둜 μƒκ°ν•œλ‹€.
  • λͺ¨μ—¬μžˆλŠ” 점을 RANSAC을 톡해 μ§μ„ μ˜ 방정식을 λ„μΆœν•˜λŠ” 것이닀.
  • μ΅œμ†Œμ œκ³±λ²•μ€ λͺ¨μ—¬μžˆλŠ” 점에 λŒ€ν•΄ λͺ¨λ‘ 거리λ₯Ό κ³„μ‚°ν•˜μ—¬ μ§μ„ μ˜ 방정식을 κ΅¬ν•˜κΈ° λ•Œλ¬Έμ— μ‹œκ°„μ΄ μ˜€λž˜κ±Έλ¦°λ‹€.
  • μž‘μŒλ„ 직선을 μ°ΎλŠ”λ° 영ν–₯을 μ£ΌκΈ° λ•Œλ¬Έμ— μ •ν™•ν•œ 직선 계산이 μ–΄λ €μ›Œμ§ˆ 수 밖에 μ—†λ‹€.

Step by step

  • λžœλ€ν•˜κ²Œ 두점을 μ„ νƒν•˜μ—¬ 두 점의 μ§μ„ μ˜ 방정식을 κ΅¬ν•œλ‹€.

  • νŠΉμ • λ²”μœ„ μ•ˆμ— 전체 데이터가 λͺ‡κ°œκ°€ λ“€μ–΄μ˜€λŠ”μ§€ μ„Έμ–΄λ³Έλ‹€.

  • 거리λ₯Ό λͺ¨λ‘ μΈ‘μ •ν–ˆμ„ λ•Œ νŠΉμ • λ²”μœ„μ•ˆμ˜ 데이터가 μ „μ²΄μ˜ λͺ‡νΌμ„ΌνŠΈμΈμ§€ μ„Έμ–΄λ³Έλ‹€.

  • μœ„ 데이터가 μ „μ²΄μ˜ 80%κ°€ λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 전체 데이터λ₯Ό μ„€λͺ…ν•  수 μ—†λ‹€κ³  κ°€μ •ν•œ ν›„ 버린닀.

  • λžœλ€ν•˜κ²Œ μ„ νƒν•œ λ‹€λ₯Έ 두 점에 λŒ€ν•˜μ—¬ μœ„μ™€ 같은 과정을 λ°˜λ³΅ν•œλ‹€.

  • 80% 이상이 λœλ‹€λ©΄ κ·Όμ‚¬μ μœΌλ‘œ 전체 데이터λ₯Ό λŒ€ν‘œν•  수 μžˆλŠ” μ§μ„ μ˜ 방정식을 λ„μΆœν•œλ‹€.
  • 작음, outlierκ°€ μžˆμ–΄λ„ λΉ λ₯΄κ²Œ ꡬ할 수 μžˆλ‹€.
  • 컴퓨터 λΉ„μ Όμ΄λ‚˜ 데이터 λ§ˆμ΄λ‹μ—μ„œλ„ λžœμƒ‰ μ•Œκ³ λ¦¬μ¦˜μ΄ 많이 μ‚¬μš©λœλ‹€.

 

이번 μž₯μ—μ„œ 배운 것은 μ•žμž₯μ—μ„œ 엣지λ₯Ό λ½‘μ•˜μ„ λ•Œ 엣지가 μ–΄λ–€ νŠΉμ„±μ„ κ°–κ³  μžˆλŠ”μ§€λ₯Ό μ˜μƒμ„ 톡해 κ°–κ³  있으면 맀우 λΉ„νš¨μœ¨μ μ΄κΈ° λ•Œλ¬Έμ— 엣지 성뢄을 κ·Όμ‚¬μ μœΌλ‘œ 효율적으둜 ν‘œν˜„ν•˜λŠ” 방법을 λ°°μ›Œλ³΄μ•˜λ‹€. 

λŒ€ν‘œμ μœΌλ‘œ 엣지 토막, μ²΄μΈμ½”λ“œ, λžœμƒ‰μ΄ 될 수 있으며 κ·Ήμ’Œν‘œκ³„λ‘œ λ³€ν™˜μ‹œμΌœμ„œ ν‘œν˜„ν•΄λ„ 쉽고 λΉ λ₯΄κ²Œ 엣지 성뢄을 효율적으둜 ν‘œν˜„ν•  수 μžˆκΈ°μ— ν—ˆν”„ λ³€ν™˜μ„ λ°°μ› λ‹€.

λ‹€μ–‘ν•œ 뢄야에 μ‘μš©ν•  수 μžˆλ‹€. μžμœ¨μ£Όν–‰μžλ™μ°¨ λΆ„μ•Όμ—μ„œλŠ” μ„ λΆ„, 차선을 μ°ΎλŠ”μš©λ„, 주어진 μ˜μƒμ—μ„œ νŒ¨ν„΄κ³Ό νŠΉμ§•μ„ μ°Ύμ•„ 물체λ₯Ό κ²€μΆœν•˜κ³  μΈμ‹ν•˜λŠ” λ“±μ˜ μš©λ„λ‘œ ν™œμš©λ  수 μžˆλ‹€.

λ°˜μ‘ν˜•

'πŸ–₯ Computer Science > Computer Vision' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Computer Vision] Edge Detection - Part 2  (0) 2021.09.22
[Computer Vision] Edge Detection - Part 1  (0) 2021.09.21
[Computer Vision] Morphology  (0) 2021.09.17
[Computer Vision] Transform  (0) 2021.09.16
[Computer Vision] Filter - Part 2  (0) 2021.09.15