물체·조건을 고려한 물체 검출

소개



물체의 검출 방법으로 자주 사용되는 것은, 차분을 취해 RGB의 차분을 취하는 것입니다만,
검출하고 싶은 물체의 성질을 생각하는 것으로, 보다 적절한 검출 방법이 있습니다.

대상



지금은 결국 거푸집의 출현을 판별 할 수있는 시스템을 만들려고합니다.
다이스의 성질로서는 다음과 같은 것이 생각됩니다.
  • 실내에서 사용
  • 작은
  • 다양한 색상이 있습니다

  • 배경에서 거푸집만 잘라내려고 하면,
    거푸집의 그림자가 물체 검출의 방해가 될 수 있습니다.

    이번에는 RGB가 아니라 HSV로 물체 검출함으로써 그림자의 영향을 억제해 보겠습니다.
    그림자가 되는 장소는 채도·휘도의 변동은 작고, 색조의 변화는 없을 것이므로, 그것을 근거로 한 임계치의 선택을 하고 있습니다.
    또한, HSV로의 변환 방법은 OpenCV와 Visual C++에 의한 화상 처리와 인식 (4)
    HSV의 각 채널별 변환에는 NumPy 배열 ndarray 분할을 참고로 했습니다.
    마지막 마스크 처리는 Python + OpenCV를 사용한 마스크 이미지 적용 방법 를 참고로 하고 있습니다.
    import cv2
    import numpy as np
    
    GAUSSIAN_SIZE = (7,7)
    
    camera = cv2.VideoCapture(0)
    
    # 背景画像とダイスの画像を取得
    
    result, image_base = camera.read()
    if not result:
        exit()
    image_base_blured = cv2.GaussianBlur(image_base, GAUSSIAN_SIZE, 0)
    
    cv2.imshow("baseImage",image_base)
    cv2.waitKey(0)
    
    # カメラの画像を読み取るとき、前回のカメラのバッファを読んでる?
    result, image_dice = camera.read()
    result, image_dice = camera.read()
    if not result:
        exit()
    image_dice_blured = cv2.GaussianBlur(image_dice, GAUSSIAN_SIZE, 0)
    
    # HSVに変換した上で差分をとる
    
    base_hsv = cv2.cvtColor(image_base_blured, cv2.COLOR_RGB2HSV)
    dice_hsv = cv2.cvtColor(image_dice_blured, cv2.COLOR_RGB2HSV)
    
    diff_hsv = cv2.absdiff(base_hsv, dice_hsv)
    
    # 2次元目を3つに分割→HSVの差分のチャンネルを分離
    diff_imagelist = np.split(diff_hsv,3,2)
    
    width = diff_hsv.shape[0]
    height = diff_hsv.shape[1]
    
    hdiff = diff_imagelist[0].reshape(width,height)
    sdiff = diff_imagelist[1].reshape(width,height)
    vdiff = diff_imagelist[2].reshape(width,height)
    
    image_dice[hdiff>15] = [255,0,0]
    image_dice[sdiff>50] = [0,255,0]
    image_dice[vdiff>65] = [0,0,255]
    
    cv2.imshow("diceImage",image_dice)
    cv2.waitKey(0)
    
    cv2.destroyAllWindows()
    

    결과




    주사위의 예


    위 코드로 나눈 예


    RGB로 임계값을 취한 경우

    결론



    화상 처리를 실시하고 싶은 대상이 있는 경우, 대상물에 적절한 처리 방법이 없는지 생각하면, 처리가 편해질 수 있습니다.
    이번에는 거푸집에 적합한 처리를 할 수 있었습니다.

    좋은 웹페이지 즐겨찾기