OpenCV 비전 실무1장 · AI 비전과 OpenCV 개발환경9 / 22← 이전목차다음 →MetaContents

1장. AI 비전과 OpenCV 개발환경

영상처리와 딥러닝

과일 검사원이 두 명 있다고 해 봅시다. 한 명은 자와 색상표를 들고 "지름 7cm 이상, 빨간색 면적 80% 이상이면 1등급"이라는 규칙대로 잽니다. 다른 한 명은 사과를 수만 개 본 경험으로 "이건 1등급"이라고 바로 압니다. 앞사람이 영상처리, 뒷사람이 딥러닝입니다.

규칙대로 재는 영상처리와 사진으로 배우는 딥러닝을 나란히 놓은 비교 그림

왼쪽은 사람이 계산 규칙을 적는 영상처리, 오른쪽은 정답이 붙은 사진으로 배우는 딥러닝입니다. 여기서 자와 색상표가 OpenCV 의 함수이고, 수만 개를 본 경험이 학습한 모델입니다. 두 검사원은 경쟁 관계가 아니라 한 팀입니다. 앞사람이 사과를 깨끗이 닦아 줄을 세워 주면, 뒷사람이 더 정확하게 판단합니다.

두 방법 견주기

견줄 것영상처리 (OpenCV)딥러닝 (YOLO 등)
규칙은 누가 만드나사람이 계산식과 기준값을 정한다모델이 정답 붙은 사진에서 배운다
필요한 것문제를 잘 아는 사람정답이 붙은 사진 수백~수천 장
왜 그렇게 답했나계산식을 보면 안다바로 알기 어렵다
잘하는 일밝기 조정, 노이즈 제거, 크기 재기모양이 제각각인 물건 알아보기
이 과정에서2장부터 16장까지17장부터 19장까지
Python
import numpy as np

# 영상처리식 판단: 사람이 정한 규칙(빨간 칸이 절반 넘으면 "빨간 사과")
patch = np.array([[[30, 30, 200], [40, 40, 210]],
                  [[60, 160, 70], [35, 35, 190]]], dtype=np.uint8)   # BGR 칸 4개
blue, green, red = patch[..., 0], patch[..., 1], patch[..., 2]
is_red = (red > 150) & (green < 100)        # 칸마다 "빨간가?" 를 True/False 로
print(is_red.mean())                         # 결과: 0.75 → 네 칸 가운데 세 칸이 빨강
print("빨간 사과" if is_red.mean() > 0.5 else "다른 과일")

patch[..., 0] 의 ...(Ellipsis, 생략)은 "앞의 방향은 모두"라는 뜻입니다. 모든 칸에서 0번 채널(파랑)만 꺼냅니다. True 를 1, False 를 0 으로 세므로 mean() 은 True 의 비율이 됩니다.

주의할 점

  • 규칙은 조명이 바뀌면 쉽게 깨집니다. 위 예의 "빨강이 150 넘으면"은 어두운 가게에서는 맞지 않을 수 있습니다.
  • 그래서 전처리로 조명과 크기를 고르게 맞춰 두면, 규칙도 모델도 더 잘 맞습니다.
← 이전 절1장 · AI 비전 작업의 흐름다음 절 →1장 · OpenCV 알아보기