Skip to content

donnyrla10/Automatic-Line-Guidance-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

automatic-roadline


Automatic-Lane-Guidance System

β€˜μ»΄ν“¨ν„°λΉ„μ „β€™ μˆ˜μ—… #2 과제 β†’ Automatic-Lane-Guidance System


βœ…Β ν”„λ‘œμ νŠΈ μ†Œκ°œ


  • μš΄μ „μžκ°€ μ£Όν–‰ν•  λ•Œ ν•„μš”ν•œ μ°¨μ„  정보 κ²€μΆœ: 2~3μ΄ˆκ°„ μ£Όν–‰ν•  거리만큼의 μ°¨μ„  정보. μ°¨μ„  κ²€μΆœ κΈ°λŠ₯
  • ν˜„μž¬ μ΄λ™ν•˜κ³  μžˆλŠ” 차선을 μ΄νƒˆν•œ 경우, WARNING β†’ μ°¨μ„  μ΄νƒˆ 감지 κΈ°λŠ₯

πŸ“Β μš”κ΅¬ 사항 뢄석


  • Hough Transform을 μ΄μš©ν•΄μ„œ λ„λ‘œμ— μžˆλŠ” 선을 κ²€μΆœ

    • κ·Έλ ˆμ΄μŠ€μΌ€μΌ μ˜μƒμœΌλ‘œ λ³€ν™˜
    • μΊλ‹ˆ 엣지 κ²€μΆœ
    • line κ²€μΆœ
    • μ„ λΆ„ μ—°μž₯ν•΄μ„œ μ°¨μ„  그리기
  • μ°¨μ„  μ΄νƒˆ 감지

    • κ²€μΆœν•œ 차선을 μ΄νƒˆν•œ 경우, 뢉은 색 warning ν‘œμ‹œ

πŸ’»Β κ΅¬ν˜„ [#1 μ°¨μ„  κ²€μΆœ]


🚨 주의: 흰색/λ…Έλž€μƒ‰ μ°¨μ„  뿐만 μ•„λ‹ˆλΌ νŒŒλž€μƒ‰ 차선도 μ‘΄μž¬ν•¨

try 01) νžˆμŠ€ν† κ·Έλž¨ ν‰ν™œν™” ν›„, 엣지 κ²€μΆœ
        β†’ νŒŒλž€μƒ‰ μ°¨μ„  λšœλ ·ν•΄μ§€μ§€λ§Œ, λ„λ‘œμ˜ 마λͺ¨λœ 뢀뢄도 ν•¨κ»˜ λšœλ ·ν•΄μ§

try 02)  HSV둜 λ³€ν™˜ν•˜κ³ , 3개의 μ±„λ„λ‘œ λΆ„λ¦¬ν•΄μ„œ νŒŒλž€μƒ‰ κ²€μΆœμ„ μœ„ν•œ H λ²”μœ„ 쑰절 (40-130)
        β†’ νŒŒλž€μƒ‰ 차선이 μ—£μ§€λ‘œ μ œλŒ€λ‘œ κ²€μΆœλ˜μ§€ μ•ŠμŒ

try 03) HSV둜 λ³€ν™˜ν•˜κ³ , 3개의 μ±„λ„λ‘œ λΆ„λ¦¬ν•΄μ„œ νŒŒλž€μƒ‰ κ²€μΆœμ„ μœ„ν•œ H λ²”μœ„ 쑰절 (40-130)
        + Edge detection을 μœ„ν•œ S, V λ²”μœ„ λ˜ν•œ 쑰절
        β†’ λ„λ‘œμ˜ 마λͺ¨λœ λΆ€λΆ„(검은색)이 ν•„ν„°λ§λ˜μ–΄ μ—£μ§€λ‘œ κ²€μΆœλ˜μ§€ μ•ŠμŒ

lane01


1. 1μ°¨ 필터링: 컬러 λ²”μœ„λ₯Ό 톡해 후보 μ˜μ—­ 필터링

β†’ filterByColor(frame, ROI_colors)


2. RGB μ˜μƒμ„ κ·Έλ ˆμ΄μŠ€μΌ€μΌ μ˜μƒμœΌλ‘œ λ³€ν™˜

β†’ cvtColor(ROI_colors, gray, COLOR_BGR2GRAY)


3. κ°€μš°μ‹œμ•ˆ λΈ”λŸ¬λ‘œ 작음 제거 ν›„ μΊλ‹ˆ 에지 κ²€μΆœ

β†’ Canny(gray, edges, 100, 200)


4. ROI μ§€μ •ν•΄μ„œ 차선을 κ²€μΆœν•  μ˜μ—­ μ œν•œ

μ°¨κ°€ 이동할 λ„λ‘œλ₯Ό μ€‘μ‹¬μœΌλ‘œ 선을 κ²€μΆœν•  수 μžˆλ„λ‘ ROI μ˜μ—­μ„ μ§€μ •ν•΄μ£Όμ—ˆλ‹€. 이 λ²”μœ„ μ΄μ™Έμ˜ λ„λ‘œμ˜ μ •λ³΄λŠ” ν•„μš”μ—†λ‹€.

β†’ edges = setROI(edges, points)


5. HoughLineP APIλ₯Ό ν†΅ν•œ edgeμ—μ„œ line κ²€μΆœ

β†’ HoughLineP(edges, lines, rho, theta, hough_threshold, minLength, maxLineGap)

  • μ•žμ—μ„œ λ‹¬λ¦¬λŠ” μ°¨, 지평선, μ˜† μ°¨μ„  λ“±μ—μ„œ 각쒅 line이 ν•¨κ»˜ κ²€μΆœ
    기울기λ₯Ό 톡해 ν˜„μž¬ μ°¨μ„  κ²€μΆœν•˜κΈ°(2μ°¨ 필터링)

6. 2μ°¨ 필터링: 기울기 λ²”μœ„λ₯Ό 톡해 ν˜„μž¬ μ°¨μ„ λ§Œ κ²€μΆœ

β†’ detectionLane(mark, detected, lines)

 기울기 λ²”μœ„: slope_min_threshold 이상, slope_max_threshold μ΄ν•˜

πŸ’‘Β μ˜€λ₯Έμͺ½ μ°¨μ„ κ³Ό μ™Όμͺ½ μ°¨μ„  ꡬ뢄 κΈ°μ€€

  1. 였λ₯Έμͺ½ μ°¨μ„ μ˜ 기울기 > 0, μ™Όμͺ½ μ°¨μ„ μ˜ 기울기 < 0
  2. μ€‘μ•™μ˜ x μ’Œν‘œ κΈ°μ€€

7. 원본 μ˜μƒμ— κ²€μΆœν•œ μ°¨μ„  병합

β†’ addWeighted(frame, 1, detected, 0.2, 0.0, result)

lane08


πŸ’»Β κ΅¬ν˜„ [#2 μ°¨μ„  μ΄νƒˆ 감지 κΈ°λŠ₯]

WARNING μƒνƒœ μ •μ˜

  • μ°¨μ„  μ΄νƒˆμ˜ 경우, 차선이 ν”„λ ˆμž„μ˜ 쀑심에 λ“€μ–΄μ˜€κ²Œ λœλ‹€.
  • ν”„λ ˆμž„μ˜ 쀑심에 μžˆλŠ” 차선은 κΈ°μšΈκΈ°κ°€ 거의 μˆ˜μ§μ— 가깝닀.
  • β†’ κΈ°μšΈκΈ°κ°€ 큰 Line이 ν”„λ ˆμž„ μ€‘μ‹¬μ—μ„œ κ²€μΆœλ˜λ©΄ WARNING!

bool warning = false λ³€μˆ˜ μΆ”κ°€ν•΄μ„œ warning 쑰건 검사

  • 기울기 > 2.0 인가?
  • line 끝점의 xμ’Œν‘œκ°€ μ˜μƒμ˜ 쀑앙에 μœ„μΉ˜ν•˜λŠ”κ°€?
  • β†’ 쑰건 λ§Œμ‘±μ‹œ, warninig = true
  1. 였λ₯Έμͺ½κ³Ό μ™Όμͺ½μ˜ λŒ€ν‘œ Line κ²€μΆœ β†’ detectionLane(mark, detected, lines)
  2. 원본 μ˜μƒμ— κ²€μΆœν•œ μ°¨μ„  병합 β†’ addWeighted(frame, 1, detected, 0.2, 0.0, result)

lane10



βœ…Β μ‹œν–‰ 착였

#1. 각 λ„λ‘œμ˜ μ°¨μ„  λ²”μœ„μ˜ 차이, μžλ™μ°¨ 높이에 λ”°λ₯Έ μ˜μƒ λ²”μœ„μ˜ 차이가 쑴재

  • 넓은 μ°¨μ„  λ²”μœ„λ₯Ό ν¬ν•¨ν•˜κΈ° μœ„ν•΄ ROI의 λ„ˆλΉ„λ₯Ό λ„“νž˜
  • 더 λ§Žμ€ 엣지 κ²€μΆœ(λΆˆν•„μš”ν•œ)
  • β†’ 2μ°¨ 필터링 진행

#2. 쀑심 μ°¨μ„ (였λ₯Έμͺ½, μ™Όμͺ½) κ²€μΆœμ—μ„œ μ—¬λŸ¬κ°œμ˜ μ„  κ²€μΆœ/κ²€μΆœλœ μ„ μ˜ 흔듀림이 큼

  • μ—¬λŸ¬ 개의 선이 κ²€μΆœλœ 경우, 평균값 κ³„μ‚°ν•΄μ„œ ν•˜λ‚˜λ‘œ μ·¨κΈ‰
  • 졜근 κ²€μΆœν•œ 10개의 선을 μ €μž₯ν•˜λŠ” save_lines 벑터 μ„ μ–Έ
  • 졜근 λˆ„μ λœ 10개의 μ„ μ˜ 평균값을 μ΄μš©ν•΄ λŒ€ν‘œ line 지정
  • β†’ μ°¨μ„  이동 μ‹œ, κ²€μΆœ line λΆ€λ“œλŸ¬μš΄ 이동

πŸ™‹β€β™€οΈΒ μ—­ν• 

  • 1μ°¨ 필터링
    • canny edge κ²€μΆœ
    • ROI μ˜μ—­ μ„€μ •
    • 문제 ν•΄κ²°: νŒŒλž€μƒ‰ κ²€μΆœ μ‹€νŒ¨
      • 색상 λ³€ν™˜(RGB β†’ HSV, λ²”μœ„ 쑰절) β†’ νŒŒλž€μƒ‰ κ²€μΆœ 성곡
  • 2μ°¨ 필터링
    • threshold κ°’ μ‘°μ •
  • μ°¨μ„  μ΄νƒˆ 감지

πŸ’¦Β μ•„μ‰¬μš΄ 점

  • HSV둜 검은색을 필터링할 수 μžˆμœΌλ‚˜, ν‘Έλ₯ΈλΉ›μ˜ 검은색은 필터링 X
  • μ—¬λŸ¬μ€„μ΄ κ²€μΆœλ˜μ–΄ lineλ“€μ˜ 평균을 λŒ€ν‘œ line으둜 μ§€μ •ν–ˆλŠ”λ°, ν‰κ· μ΄λ―€λ‘œ outlier에 민감
  • 색상 ν•„ν„°λ§μ΄λ―€λ‘œ μ‘°λͺ…에 λ§Žμ€ 영ν–₯ λ°›μŒ

About

πŸ›£ β€˜μ»΄ν“¨ν„°λΉ„μ „β€™ κ°•μ˜ #2 과제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages