본문 바로가기

자율주행

ADAS(Advanced Driver Assistance System)

 

자율 주행을 보조하기 위한 여러 시스템들을 있는데, 그중 ADAS에 대해서 간략하게 알아 보겠습니다.

 

 

ADAS는 특정한 기능이 아니라, 운전자가 안전하고 편리하게 주행할 수 있도록 도와주는 시스템입니다.

운전자를 도와서 사고를 미연에 방지하고 운전의 편리함을 제공하는 첨단 기술입니다.

 

ADAS Camera는 FCW , PCW, LDWS등 과 같은 시스템들이 있고 이 외에도 많은 시스템들이 있습니다.

FCW , PCW, LDWS에 대해서 간략하게 알아보겠습니다.

  • FCW(Forward Collision Warning) : 전방충돌경고 시스템
  • PCW(Pedestrian Collision Warning): 보행자충돌경고 시스템
  • LDWS(Lane Departure Warning System): 차선 유지 보조 시스템

 

ADAS를 구현하기 위한 간단한 알고리즘입니다.

 

  1. 이미지를 읽기
  2. 읽은 이미지로 부터, Line segmentation을 수행
  3. 읽은 이미지로 부터, Object Detection을 수행
  4. Object Detection을 하고, 차와 가깝다면 warning sign을 발생 그렇지 않다면 다음 이미지를 불러옴니다.

 

위의 알고리즘을 코드로 구현하면 아래와 같습니다 ! 

def inference_model(detection_model, segmentation_model, image_path, color_dict, device):
    ori_img = cv2.imread(image_path)
    detection_results = object_detection(detection_model, ori_img)
    pred_final = line_segmentation(segmentation_model, ori_img, device)

    ori_img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)
    
    ## segmentation visualization
    pred_final = cv2.resize(pred_final, (ori_img.shape[1], ori_img.shape[0]), interpolation= cv2.INTER_NEAREST)
    roi_selection = ori_img[pred_final == 255]
    ori_img[pred_final == 255] = (0, 255 * 0.3, 0) + 0.6 * roi_selection

    ## detection visualization
    warning_status = False
    black_img = np.zeros_like(ori_img)
    for bbox in detection_results:
        cls = bbox[4]
        p_start, p_end = (bbox[0], bbox[1]), (bbox[2], bbox[3])
        black_img = cv2.rectangle(black_img, p_start, p_end, color = color_dict[detection_model.names[cls]], thickness=-1)
        if bbox[3] > black_img.shape[0] * 0.95:
            warning_status = True
    
    final_result = cv2.addWeighted(black_img, 0.6, ori_img, 1.0, 0.0)
    if warning_status:
        cv2.rectangle(final_result, (0,0), (600, 140), (255, 0, 0), -1, cv2.LINE_AA)
        cv2.putText(final_result, 'Warning!', (0, 100), cv2.FONT_HERSHEY_DUPLEX, 4, (255, 255, 255), thickness=3, lineType=cv2.LINE_AA)
    
    return final_result

 

 

github

 

GitHub - Kang812/KW_ADAS: Advanced Dirver Assistance System

Advanced Dirver Assistance System. Contribute to Kang812/KW_ADAS development by creating an account on GitHub.

github.com

 

'자율주행' 카테고리의 다른 글

DMS(Drive Monitoring System)  (1) 2024.05.16