RGB 산업용 카메라
물체의 색상, 형태, 텍스처를 기반으로 인식하는 핵심 센서. 깊이 센서와 조합하여 사용하거나 단독으로 물체 분류에 활용.
제품 비교
| 제품 | 해상도 | FPS | 인터페이스 | 가격 | SDK 호환성 |
|---|---|---|---|---|---|
| Basler ace2 a2A1920-160umBAS | 1920x1200 (2.3MP) | 160fps | USB 3.0 | $400-600 | pypylon + OpenCV + MediaPipe 완벽 |
| Basler ace2 a2A2448-75umBAS | 2448x2048 (5MP) | 75fps | USB 3.0 | $500-700 | 동일 |
| Basler ace2 a2A3840-13gcPRO | 3840x2160 (8.3MP) | 13fps | GigE | $800-1200 | 동일 |
| FLIR Blackfly S BFS-U3-16S2C | 1440x1080 (1.6MP) | 120+fps | USB 3.1 | $300-450 | PySpin (제한적) |
| FLIR Blackfly S BFS-U3-23S3C | 1920x1440 (2.3MP) | 90+fps | USB 3.1 | $400-550 | 동일 |
| FLIR Blackfly S BFS-U3-50S5C | 2592x2048 (5MP) | 30+fps | USB 3.1 | $600-800 | 동일 |
| Allied Vision Alvium 1800 U | 5-20MP | 다양 | USB 3.1 | $500-1200 | Vimba X 우수 |
| Allied Vision Alvium 5GigE | 최대 24.6MP | 최대 691fps | 5GigE PoE | $1500-2000 | 동일 |
| Logitech BRIO 4K Pro | 4096x2160 | 30fps (4K) | USB-C | $150-200 | 기본 UVC |
제품별 평가
Basler ace2 시리즈 — 최우선 추천
- pypylon Python 바인딩 완벽 지원
- 무료 pylon Viewer로 테스트 용이
- 바슬러코리아 국내 기술지원 가능
- 산업용 신뢰성 (방진/방수 등급)
- Color/Mono 버전 모두 지원
- 전시/인터랙티브 프로젝트 실적 풍부
- 단점: 고해상도(8MP+) 모델은 GigE만 지원, USB 케이블 길이 제한 (실제 5m 권장)
FLIR (Teledyne) Blackfly S 시리즈
- 빠른 프레임레이트 (120fps+)
- 컴팩트한 디자인, 저렴한 가격
- 단점: Python SDK 공식 지원 부족 (C++ 중심), 색감 보정 도구 부족
Allied Vision Alvium 시리즈
- 최고의 SDK 문서화 (Vimba X), GenICam 완전 표준 준수
- 다중카메라 동기화 최적화
- 5GigE PoE로 전원+데이터 단일 케이블
- 단점: 상대적으로 고가, 한국 내 기술 지원 제한적
Logitech BRIO 4K Pro — 프로토타입 전용
- 저렴하고 플러그앤플레이
- 단점: 산업용 신뢰성 부족, 프레임레이트 낮음 (4K: 30fps), 물체 추적 정밀도 낮음, 전시 배포 불안정
천장 설치 시 렌즈/FOV 계산
| FOV (수평각) | 렌즈 초점거리 | 높이 2.0m 커버 | 높이 2.5m 커버 | 높이 3.0m 커버 |
|---|---|---|---|---|
| 120° | 3.6mm (어안) | ~4.4m x 2.6m | ~5.5m x 3.2m | ~6.8m x 4.0m |
| 90° | 6-8mm | ~3.4m x 2.0m | ~4.3m x 2.5m | ~5.1m x 3.0m |
| 75° | 10mm | ~2.8m x 1.6m | ~3.5m x 2.0m | ~4.2m x 2.4m |
| 60° | 16mm | ~2.3m x 1.3m | ~2.8m x 1.6m | ~3.4m x 2.0m |
SDK 호환성 상세
Basler Pylon SDK
# Basler + OpenCV + MediaPipe 통합
import cv2
from pypylon import pylon
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice())
camera.Open()
while True:
grab_result = camera.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException)
if grab_result.GrabSucceeded():
image = grab_result.Array
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# MediaPipe 처리
results = mediapipe_process(image_rgb)
grab_result.Release()| 항목 | 지원 |
|---|---|
| Python | 완전 지원 (pypylon) |
| OpenCV | 완전 통합 |
| MediaPipe | 호환 (numpy 변환) |
| TensorFlow | 호환 |
| 라이선스 | 무료 (카메라 구매 시) |
| 플랫폼 | Windows, Linux, macOS |
Allied Vision Vimba X SDK
from vimba import Vimba
import cv2
with Vimba.get_instance() as vimba:
camera = vimba.get_all_cameras()[0]
with camera:
for frame in camera.get_frame_generator():
cv_image = frame.as_opencv_image()
results = mediapipe_process(cv_image)조명 환경별 추천
| 환경 | 조도 | 추천 카메라 | 센서 타입 |
|---|---|---|---|
| LED 일반 조명 | 500-1000 lux | Basler ace2 (Pregius) | 색감 충실도 우수 |
| 어두운 분위기 전시 | 100-300 lux | FLIR Blackfly (BSI) 또는 Basler STARVIS | 저조도 감도 필요 |
| 혼합 조명 (스포트라이트) | 변동 | Basler ace2 + 자동 노출 | 다이나믹 레인지 보정 |
주의: 저주파 LED (100-120Hz)는 카메라 시간축 노이즈 발생. 고주파 PWM (27kHz 이상) LED 조명 권장.