총 3 건
Teledyne FLIR는 머신 비전과 비즈니스 응용 분야를 위한 카메라 솔루션의 선두주자로서, 업계를 선도하는 혁신적인 기술을 제공합니다. 특히 고해상도 열화상 카메라와 머신 비전 카메라에서 뛰어난 성능을 자랑합니다. Teledyne FLIR에서 새롭게 출시된 Dragonfly S 시리즈는 탁월한 해상도와 유연한 구성 옵션을 갖추어 생명 과학 기기부터 공장 자동화에 이르는 다양한 산업에서 신뢰받는 비전 솔루션으로 자리 잡을 것으로 기대됩니다. Teledyne FLIR는 이러한 최첨단 카메라 기술을 통해 시각적 데이터의 정확성과 효율성을 더 향상시키고 있습니다. Sony, Onsemi, Teledyne e2v의 CMOS 센서 옵션과 페어링 하는 Dragonfly S는 임베디드 및 핸드헬드 장치 애플리케이션을 포함한 다양한 용도에 적합한 머신비전 카메라입니다. * 임베디드 : 특정 기능을 수행하기 위해 기계나 장치에 내장된 컴퓨터 시스템 * 핸드헬드 : 장치는 사용자가 손에 들고 직접 조작할 수 있는 모바일 장비 < DRAGONFLY S Series 특징 > 1. 컴팩트하고 가벼운 디자인 핸드헬드 또는 임베디드 장치에 적합한 컴팩트하고 가벼운 디자인을 갖추고 있으며, 케이스형 모델은 Class B EMC 안전 기준을 준수합니다. * Board Level Size : 27mm x 27mm x 9.5mm Weight : 5 grams * Cased Size : 29.5mm x 29.5mm x 18.1mm Weight : 25 grams * Partial Cased Size : 29.5mm x 29.5mm x 17.5mm Weight : 17 grams Lens mount and USB locking bracket available as accessories 2. 다양한 렌즈 마운트 호환 가능한 모듈화 Dragonfly S 카메라는 이미지 애플리케이션 개발 초기 단계에서 필요한 모듈화된, 컴팩트하고 가벼운 카메라의 필요를 충족시키기 위해 설계되었습니다. 이 카메라는 대규모 제조, 대량 기반 애플리케이션 및 다중 카메라 시스템에 적합합니다. 3. 신뢰성 있는 이미지 전달 온보드 이미지 버퍼링* 기능 덕분에, 모든 이미지 프레임이 신뢰성 있게 호스트 CPU로 전송됩니다. 이를 통해 안정적인 이미지 전달을 보장합니다. * 온보드 이미지 버퍼링 : 내장된 메모리를 사용하여 이미지 데이터를 임시로 저장하는 기능 4. 비용 효율성 Dragonfly S 카메라는 모듈화된 설계와 유연한 구성 옵션을 통해 사용자 맞춤형 솔루션을 제공하며, 성능 최적화와 표준화된 부품 사용으로 비용 효율성을 극대화합니다. 이외에도 Dragonfly S 카메라는 다음과 같은 기능들이 있습니다. * 이미지 CRC(순환 중복 검사, Cyclic Redundancy Check) : 데이터 전송이나 저장 중 발생할 수 있는 오류를 감지하여 이미지의 무결성을 확인하는 방법 < DRAGONFLY S Series 적용 분야 > Teledyne Dragonfly S Series는 높은 성능과 유연성을 제공하여 전문적인 비디오 캡처 및 처리 요구에 적합한 솔루션입니다. 임베디드 및 핸드헬드 애플리케이션에 활용될 수 있습니다. 1. 검안경 [ Ophthalmoscopy ] Dragonfly S는 검안경 장비에 내장되어 고해상도 이미지를 통해 정밀한 안과 검사를 지원하며, 뛰어난 센서 성능으로 세밀한 눈 검사와 정확한 진단이 가능합니다. 또한, 핸드헬드 장치에 적용되어 진료 현장에서 실시간으로 고화질 이미지를 제공함으로써 검사의 효율성과 진단 정확도를 높입니다. 2. 생체 인식 키오스크 솔루션 [ Biometrics Kiosk Solutions ] Dragonfly S를 생체 인식 키오스크에 통합하면 지문, 얼굴, 홍채 인식 데이터를| 고해상도로 캡처하고 분석하여 보안성과 사용자 편의성을 높입니다. 또한, 이동형 장비에 적용 시 손쉽게 이동이 가능하면서도 신뢰성 있는 생체 인식 기능을 제공합니다. 3. 자동 광학 검사 (AOI) [ Automated Optical Inspection ] 자동 광학 검사 장비에 Dragonfly S를 내장하여 생산 공정에서 PCB, 반도체, 기타 부품의 결함을 자동으로 감지하고 분석할 수 있습니다. 이는 품질 보증과 결함 검출의 정확도를 높입니다. 작업자가 직접 장비를 들고 부품의 결함을 검사할 수 있는 장비로, 이동성과 유연성을 제공하며 현장에서 빠르게 결함을 식별하고 수정할 수 있습니다. 이 외에도 Dragonfly S 카메라는 모바일 로봇에 통합되어 환경 인식과 내비게이션을 지원하며 고해상도 이미지와 신뢰성 있는 데이터 전송 기능으로 자율적 작동과 장애물 회피를 돕습니다. 또한 3D 스캐닝 시스템에 Dragonfly S를 통합하면 고해상도의 3D 모델을 생성하여 산업 디자인, 품질 검사, 리버스 엔지니어링 등 다양한 분야에 활용됩니다. 마지막으로 비전 기반 모니터링 시스템에 통합되어 고정된 위치에서 지속적인 모니터링을 수행하며, 신뢰성 있는 이미지 전송과 분석 기능으로 시스템 상태를 효율적으로 관리합니다. 즉, 이동 중에도 실시간 모니터링과 데이터 수집이 가능해, 현장 작업 중 고해상도 이미지를 제공하고 문제를 조기에 발견할 수 있습니다. Dragonfly S는 다양한 센서와 카메라 기술을 지원하여, 위와 같이 다양한 애플리케이션에서 탁월한 성능과 효율성을 제공합니다. < SPECIFICATIONS > * DR-U3-50Y2M/C 기준 * 값은 비닝(binning) 모드와 비닝이 없는 모드 모두에서 동일합니다. < Modular Product Configuration > Chroma , USB Connectot, Lens Mount, Case or Bracket Dragonfly S 시리즈는 다양한 모듈화된 구성 옵션과 교체 가능한 렌즈 마운트를 제공하여 사용자의 필요에 맞게 조정할 수 있습니다. 또한, 내구성이 뛰어난 알루미늄 케이스와 내장형 히트 싱크로 안정적인 성능을 보장하며, 후면 및 측면의 USB 포트와 6핀 GPIO를 통해 유연하고 신뢰성 있는 연결을 지원합니다. Dragonfly S 시리즈는 핸드헬드, 임베디드, 그리고 멀티 카메라 시스템에 모두 적합한 뛰어난 성능을 제공합니다. 모듈화된 설계와 유연한 구성 옵션 덕분에 다양한 요구 사항에 맞춰 손쉽게 설치할 수 있으며, USB3 인터페이스를 통해 간편하게 연결하고 관리할 수 있습니다. 소형 및 경량화된 디자인으로 비용 효율성까지 갖추어, Dragonfly S Series는 다양한 산업 및 연구 분야에서 매우 실용적인 선택이 될 것입니다. Teledyne FLIR 사의 Dragonfly S Series에 대해 더 자세히 알고 싶거나, 제품 구매 및 상담을 원하신다면 화인스텍을 방문해주시기 바랍니다.
2024.08.19임베디드 비전 구성품은 수많은 어플리케이션에 통합되고 있습니다. 이러한 모든 어플리케이션의 공통점은 더 많은 기능을 컴팩트하게 통합해야 한다는 것입니다. Teledyne FLIR는 이러한 시스템을 신속하게 프로토타입화 할 수 있는 TX2용 Quartet™ Embedded 솔루션을 도입했습니다. 이 커스텀 캐리어 보드를 사용하면 전체 대역폭에서 최대 4대의 USB3 머신 비전 카메라를 쉽게 통합할 수 있습니다. 이 보드는 NVidia Jetson 딥러닝 하드웨어 가속기가 포함되어 있으며, Teledyne FLIR의 Spinnaker® SDK가 사전 설치되어 있습니다. 검사, 모바일 로봇, 교통 시스템 및 다양한 유형의 무인 차량과 같은 시스템을 현장에서 구현하는 것은 큰 장점이 될 수 있습니다. 그림 1: 4가지 어플리케이션에 적용된 프로토타입 이 글에서는 Quartet 보드로 무엇을 할 수 있는지 강조하기 위해 동시에 4개의 어플리케이션을 실행하는 ITS(교통 시스템)를 개발하는 단계를 소개해드리겠습니다. 그 중 3개는 딥 러닝을 사용합니다. 어플리케이션1: 딥 러닝을 이용한 번호판 인식 어플리케이션2: 딥 러닝을 이용한 차량 유형 분류 어플리케이션3: 딥 러닝을 이용한 차량 색상 분류 어플리케이션4: 앞 유리창 투과(빛 반사 상황) 구매 목록: 하드웨어 및 소프트웨어 구성품 1. 프로세싱을 위한 SOM(System on Module) TX2용 Teledyne FLIR Quartet 캐리어 보드에는 다음과 같이 구성되어있습니다. - 전용 USB3 컨트롤러가 있는 TF38 커넥터 4개 - Nvidia Jetson TX2 모듈 -Teledyne FLIR의 강력하고 사용하기 쉬운 Spinnaker SDK가 사전 설치되어 Teledyne FLIR Blackfly S 보드 레벨 카메라와의 플러그 앤 플레이 호환성 보장 - Nvidia Jetson 딥 러닝 하드웨어 가속기는 단일 컴팩트 보드에서 완전한 의사 결정 시스템을 가능하게 함 그림 2: Blackfly S board level, FPC cable, TX2가 포함된 Quartet 임베디드 솔루션 2. 카메라 및 케이블 - Teledyne FLIR Blackfly S USB3 보드 레벨 카메라 3대: 최신 CMOS 센서가 적용되어 있고, 케이스 버전과 동일하게 풍부한 기능을 지원하며 Quartet과의 호환성이 높음 - 커스텀 카메라 1대: Sony IMX250MZR 편광 센서가 탑재된 Blackfly S USB3 보드 레벨 카메라 - 케이블: TF38 FPC 케이블로 전력 및 데이터를 단일 케이블로 전송하여 공간 절약 그림 3: FPC 케이블이 연결된 Blackfly S 보드 레벨 카메라 3. 조명 : 번호판의 모션 블러를 방지하기 위해 충분한 광량을 제공하는 LED 조명 3.1 - 어플리케이션1 딥 러닝을 이용한 번호판 인식 개발 시간: 견고하고 빠른 실행을 위해 2-3주 소요 학습 이미지: LPDNet 사용 번호판 인식을 위해 Nvidia의 기성품인 LPDNet(License Plate Detection) 딥 러닝 모델을 사용하여 번호판의 위치를 ??감지했습니다. 그리고 문자와 숫자를 인식하기 위해 Tesseract 오픈 소스 OCR 엔진을 사용 했고 카메라는 Sony IMX267 센서가 탑재된 Blackfly S 보드 레벨 8.9MP 컬러 카메라(BFS-U3-88S6C-BD)를 사용 중입니다. 성능 및 속도를 높이기 위해 번호판 감지에 대한 관심 영역(ROI)을 제한하고, 견고성을 향상시키기 위해 추적(Tracking)을 적용했습니다. 해당 번호판의 문자와 번호판에 바운딩 박스가 표시됩니다.. 그림 4: 번호판의 문자 및 번호판에 바운딩 박스가 표시되는 영상 3.2 - 어플리케이션2 딥 러닝을 이용한 차량 유형 분류 개발 시간: 이미지 수집 및 어노테이션(Annotation)을 포함하여 최대 12시간 학습 이미지: ~300 차량 유형 분류를 위해 전이 학습(Transfer learning)을 사용하여 SUV, 세단 및 트럭과 같은 세 가지 장난감 자동차에 대해 자체 딥 러닝 객체 감지 모델을 학습했습니다. 다양한 거리와 각도에서 촬영한 약 300개의 트레이닝 이미지를 수집했고 카메라는 Sony IMX250 센서가 탑재된 Blackfly S 보드 레벨 5MP 컬러 카메라(BFS-U3-51S5C-BD2)를 사용 중 입니다. 장난감 자동차의 바운딩 박스에 어노테이션을 추가하는데 약 3시간이 소요됐습니다. 자체 SSD MobileNet 객체 감지 모델을 트레이닝하기 위해 전이 학습을 수행했으며, Nvidia GTX1080 Ti GPU에서 반나절 정도 소요됐습니다. GPU 하드웨어 가속기를 통해 Jetson TX2 모듈은 딥 러닝 추론을 효율적으로 수행하고 해당 차량 유형과 함께 자동차에 바운딩 박스를 출력할 수 있습니다. 그림 5: 바운딩 박스와 사전 설정된 차량 유형, 식별된 신뢰도 점수가 표시되는 영상 3.3 - 어플리케이션3 딥 러닝을 이용한 색상 분류 개발 시간: 색상 분류, 통합 및 테스트를 위해 ‘차량 유형 어플리케이션’ 모델을 재사용하여 2일 추가 소요 학습 이미지: ‘차량 유형 어플리케이션’과 동일한 300개 이미지 재사용 차량 색상 분류를 위해 위와 동일한 딥 러닝 객체 감지 모델을 실행하여 차량을 감지하고, 바운딩 박스에 대한 이미지 분석을 통해 색상을 분류했습니다. 해당 차량 색상과 함께 자동차에 바운딩 박스가 표시됩니다. 카메라는 Sony IMX252 센서가 탑재된 Blackfly S 보드 레벨 3MP 컬러 카메라(BFS-U3-32S4C-BD2)를 사용 중 입니다. 그림 6: 바운딩 박스 및 미리 설정된 색상 유형이 식별된 영상 3.4 - 어플리케이션4 앞 유리창 투과(빛 반사 상황) 앞 유리를 통해 HOV차선을 모니터링하고 안전 벨트 착용 여부를 확인하고 심지어 운전 중 휴대폰 사용 여부까지 확인하는 등 교통 관련 어플리케이션에 빛 반사 제거 기능은 매우 중요합니다. 이를 위해 Blackfly S USB3 보드 레벨 카메라와 5MP Sony IMX250MZR 편광 센서를 결합하여 커스텀 카메라를 만들었습니다. 이 보드 레벨 편광 카메라는 표준 제품이 아니지만, Teledyne FLIR에서는 다양한 센서를 쉽게 교체하여 커스텀 카메라 옵션 제공이 가능하여 빛 반사 제거 기능을 보여주는 커스텀 카메라 옵션을 제공하였습니다. 고정된 장난감 자동차의 빛 반사 감소를 보여주기 위해 쿼드 모드(Quad mode), 빛 반사 감소 모드와 같은 다양한 "편광 알고리즘" 옵션을 제공하는 Teledyne FLIR의 SpinView GUI를 통해 카메라 이미지를 간단히 스트리밍했습니다. 그림 7: Spinnaker SDK는 쿼드 모드, 빛 반사 감소 모드와 같은 다양한 “편광 알고리즘” 옵션을 제공하여 고정된 장난감 자동차의 빛 반사 감소를 보여줍니다. 쿼드 모드는 4개의 서로 다른 편광 각도에 해당하는 이미지를 보여줍니다. 전반적인 시스템 최적화 4개의 각 프로토타입은 독립적으로는 잘 작동하지만, 모든 딥 러닝 모델이 동시에 실행될 때 전반적인 성능이 상당히 좋지 않다는 것을 알았습니다. Nvidia의 TensorRT SDK는 Jetson TX2 모듈과 같은 Nvidia 하드웨어용 딥 러닝 추론 옵티마이저(Inference optimizer) 및 런타임을 제공합니다. 이 TensorRT SDK를 사용하여 딥 러닝 모델을 최적화하여 성능이 약 10배 향상되었습니다. 그리고 모든 어플리케이션이 실행 중일 때 발열이 심해 TX2 모듈에 방열판을 부착했습니다. 결과적으로 차량 유형 식별에서 14fps, 차량 색상 분류에서 9fps, 자동 번호판 인식에서 4fps 그리고 편광 카메라에서 8fps까지 4가지 어플리케이션을 모두 실행할 때 좋은 프레임 속도를 달성했습니다. Quartet Embedded Solution 및 Blackfly S 보드 레벨 카메라의 사용 용이성과 신뢰성 덕분에 비교적 짧은 시간 내에 프로토타입 개발을 완료하였습니다. Spinnaker SDK가 사전 설치된 TX2 모듈은 TF38 연결을 통해 전체 USB3 대역폭에서 안정적으로 스트리밍할 수 있는 모든 Blackfly S 보드 레벨 카메라와의 플러그 앤 플레이 호환성을 보장합니다. Nvidia는 TX2 모듈에서 개발 및 최적화를 용이하게 하는 많은 툴을 제공합니다. Quartet은 이제 flir.com은 물론 flir.com 사무실과 글로벌 대리점들을 통해 구매하실 수 있습니다. 제품 링크 : Blackfly S 보드 레벨 카메라 : http://www.fainstec.com/main/search.asp?schStr=BD2 Blackfly S 편광 카메라 케이스 버전 : http://www.fainstec.com/main/search.asp?schStr=51S5P-C Quartet보드: http://www.fainstec.com/main/search.asp?cate=%EB%B3%B4%EB%93%9C&o_idx=125&schStr=Quartet
2022.09.16깊이 측정을 위한 커스텀 임베디드 스테레오 시스템 깊이 측정 시스템 개발을 위한 3D 센서 옵션에는 다양한 옵션들이 있는데요, 카메라가 있는 스테레오 비전, 라이다 및 TOF센서가 대표적입니다. 그리고 각 옵션에는 장단점이 있습니다. 그중 스테레오 비전 시스템은 일반적으로 비용이 저렴하고 실외에서 사용하기에도 충분히 견고하며 고해상도 컬러 포인트 클라우드를 제공합니다. 오늘날 시장에서 사용할 수 있는 다양한 기성 스테레오 시스템이 존재하지만, 정확도, FOV, 해상도 등과 같은 요인에 따라 시스템 엔지니어가 특정 어플리케이션 분야의 요구 사항을 해결하기 위해 커스텀 시스템을 구축해야 하는 경우도 있습니다. 먼저 스테레오 비전 시스템의 주요 파트를 설명한 다음 기성 하드웨어 부품 및 오픈소스 소프트웨어를 사용하여 커스텀 스테레오 카메라를 만드는 방법에 대해 설명 하도록 하겠습니다. 커스텀 시스템의 구성은 임베디드에 초점을 맞추기 때문에 호스트 PC 없이도 실시간으로 모든 장면의 Depth Map을 계산할 수 있습니다. 스테레오 비전 개요 스테레오 비전은 두개의 다른 시점에서 촬영한 두 이미지의 정보를 비교하여 디지털 이미지에서 3D 정보를 추출하는 것입니다. 두 이미지 평면에서 물체의 상대적 위치는 카메라에서 물체까지의 거리 즉 깊이에 대한 정보를 제공해줍니다. Figure 1 – 스테레오 비전 시스템 개요 스테레오 비전 시스템의 개요는 위 이미지와 같으며 다음과 같은 주요 단계로 구성됩니다. 1. 캘리브레이션 – 카메라 캘리브레이션의 경우 두가지 의미가 있습니다. Instrinsic(내부적인) 캘리브레이션의 경우는 이미지 중심, 초점 거리 및 왜곡 파라미터를 말하며, Extrinsic(외부적인) 캘리브레이션은 카메라의 실제 위치 등을 말합니다. 컴퓨터 비전 프로그램에서 특히 깊이와 같은 이미지의 메트릭 정보가 필요한 경우 캘리브레이션 단계는 매우 중요합니다. 캘리브레이션 단계에 대해서는 아래 캘리브레이션 섹션에서 자세히 설명 드리겠습니다. 2. 렉티피케이션 – 스테레오 렉티피케이션은 이미지 평면을 양쪽 카메라의 중심 사이의 선과 평행한 공통 평면으로 조정하는 프로세스를 말합니다. 렉티피케이션 이후 해당 포인트가 평행하게 놓여 있게 되므로 매칭에 소요되는 시간이 줄어들기 때문에 꼭 필요한 과정으로 인식되고 있습니다. 이 단계는 커스텀 시스템을 구축하기 위해 제공된 코드로 실행 가능합니다. Figure 2 – Stereo Rectification 예시 3. 스테레오 매칭 – 왼쪽과 오른쪽 이미지 사이에 픽셀을 일치시켜주는 과정을 스테레오 매칭이라고 하며, Disparity image(불균형한 이미지)를 생성하게 됩니다. SGM(Semi-Global Matching) 알고리즘은 커스텀 시스템을 구축하기 위해 제공되는 코드에 사용됩니다. 4. Triangulation(삼각측량) – 삼각 측량은 두 이미지에 투영 된 3D 공간의 점을 결정하는 과정을 말합니다. Disparity image(불균형한 이미지)는 3D 포인트 클라우드로 변환됩니다. 설계 예제 스테레오 시스템의 설계 예제를 살펴보겠습니다. 다음은 빠르게 움직이는 물체가 있는 동적 환경인 모바일 로봇 어플리케이션에 대한 요구 사항입니다. ROI 크기는 2m, 카메라에서 목표물까지의 거리는 3m, 원하는 정확도는 1cm입니다. 깊이 오차는 다음과 같은 요인에 따라 ΔZ=Z²/Bf * Δd에 의해 주어집니다: Z = 범위 B = Baseline(기준선) F = focal length(픽셀 단위의 초점 거리로, 카메라 시야 각 및 이미지 해상도와 관련 있습니다) 처음에 언급한 요구 사항을 충족할 수 있는 다양한 설계 옵션들이 있는데, 원하는 FOV와 WD에 따라 특정 센서에 대한 렌즈의 초점 거리를 정할 수 있습니다. Baseline(기준선)으로 위의 공식을 사용하여 3m에서 예상 깊이 오차를 계산하여 요구되는 정확도를 충족하는지 확인할 수 있습니다. Figure 3 – 예제 어플리케이션에 대한 스테레오 시스템 설계 옵션 위 이미지는 Baseline(기준선)이 긴 저해상도 카메라 또는 Baseline이 짧은 고해상도 카메라 이렇게 두가지 옵션에 대한 설명입니다. 첫번째 옵션은 전체적으로 크기가 더 큰 카메라이지만 복잡한 계산의 필요성이 적고 두번째의 경우는 크기는 더 컴팩트 하지만 복잡한 계산의 필요성이 높습니다. 예제 어플리케이션에서는 컴팩트 한 크기가 모바일 로봇 어플리케이션에 더 적합하기 때문에 두번째 옵션을 선택했으며, 요구되는 프로세스를 처리 할 수 있는 강력한 GPU가 탑재된 TX2 용 Quartet Embedded Solution을 사용할 수 있습니다. 하드웨어 요구 사항 Figure 4 – 커스텀 임베디드 스테레오 시스템의 앞면과 뒷면 이 예에서는 IMX273 Sony Pregius 글로벌 셔터 센서를 사용하여 두 대의 Blackfly S 1.6MP 보드 레벨 카메라를 12cm Baseline(기준선)를 가진 3D 프린트된 프레임에 장착합니다. 두 카메라 모두 동일한 6mm S-마운트 렌즈를 장착했습니다. 카메라는 FPC 케이블을 사용하여 TX2 커스텀 캐리어 보드용 Quartet Embedded Solution에 연결됩니다. 왼쪽과 오른쪽 카메라를 동기화하여 동시에 이미지를 캡처하기 위해 두 카메라를 연결하는 동기화 케이블도 연결합니다. 위 이미지의 하드웨어 구성품은 다음과 같습니다 : Quartet Carrier with TX2 Module 8GB – 1ea BFS-U3-16S2C-BD2(카메라) – 2ea S-Mount & IR filter – 2ea 6mm S-Mount lens(렌즈) – 2ea 15cm FPC 케이블 – 2ea NVIDIA Jetson TX2/TX2 4GB/TX2i Active Heat Sink(방열판) – 1ea 동기화 케이블 – 1ea 카메라 부착용 프레임 – 1ea 두 렌즈 모두 어플리케이션이 요구하는 범위에 카메라 초점이 맞도록 조정해야 합니다. 초점을 맞춘 후 초점을 고정하기 위해 각 렌즈의 나사를 조여줍니다. (Figure 5 참고) Figure 5 – 렌즈 나사를 보여주는 스테레오 시스템의 측면도 소프트웨어 요구 사항 a. Spinnaker Teledyne FLIR Spinnaker SDK는 TX2용 Quartet Embedded Solution에 사전 설치되어 제공됩니다. 카메라와 통신하기 위해선 Spinnaker가 필요합니다. b. CUDA를 지원하는 OpenCV 4.5.2 스테레오 매칭 알고리즘 중 하나인 SGM을 사용하기 위해선 OpenCV 4.5.1 버전 또는 그 이상의 버전이 필요합니다. 코드를 포함하고 있는 첨부된 zip 파일을 다운로드 후 압축을 풀어줍니다. 리눅스 터미널에서 아래와 같이 OpenCV를 설치하는 스크립트 인 OpenCVInstaller.sh를 실행합니다. cd ~/StereoDepth chmod +x OpenCVInstaller.sh ./OpenCVInstaller.sh 설치 관리자를 통해 관리자 암호를 설정 후 OpenCV 4.5.2 설치가 시작됩니다. OpenCV를 다운로드하고 빌드하는데 몇 시간이 걸릴 수도 있습니다. 캘리브레이션 스테레오 이미지를 불러와 캘리브레이션 하는 코드는 “Calibration” 폴더에서 확인할 수 있습니다. SpinView GUI를 사용하여 좌우 카메라의 일련 번호를 확인합니다. 우측 카메라는 마스터, 좌측 카메라는 슬레이브로 설정해 줍니다. 마스터 및 슬레이브 카메라의 일련 번호를 grabStereoImage.cpp 파일의 60번째와 61번째 줄에 복사해줍니다. 리눅스 터미널에서 다음 명령어를 사용하여 실행 파일을 빌드합니다. cd ~/StereoDepth/Calibration mkdir build mkdir -p images/{left, right} cd build cmake .. make 첨부된 채커보드 패턴을 인쇄하여 평평한 표면에 부착 후 캘리브레이션 타켓으로 사용할 수 있습니다. 캘리브레이션을 하는 동안 최상의 결과를 얻으려면 SpinView에서 Exposure Auto는 off로 설정하고 아래 그림과 같이 채커보드 패던이 선명하고 흰색 부분이 과하게 노출되지 않도록 노출을 조정해줍니다. 캘리브레이션 이미지가 수집된 후 SpinView에서 게인 및 노출을 자동으로 설정할 수 있습니다. Figure 6 – SpinView GUI 설정 이미지 수집을 시작하기 위해 아래 명령어를 입력해줍니다. ./grabStereoImages 코드에 따르면 이미지 수집은 약 초당 1프레임의 속도로 진행됩니다. 왼쪽의 이미지는 images/left 폴더에 저장되고 오른쪽의 이미지는 images/right 폴더에 저장됩니다. 타겟을 움직여 이미지의 구석 부분까지도 잘 보이게 촬영해줍니다. 타겟을 회전 시켜 가까이서, 그리고 또 멀리서도 찍어줍니다. 기본적으로 프로그램은 100쌍의 이미지를 캡처하지만 아래 명령어를 사용하여 변경도 가능합니다. ./grabStereoImages 20 위의 명령어를 사용하면 20쌍의 이미지만 수집됩니다. 이전 폴더에 저장된 모든 이미지를 덮어 쓰는 점은 참고하셔야 됩니다. 아래 이미지는 일부 캘리브레이션 이미지 샘플입니다. Figure 7 – 샘플 캘리브레이션 이미지 이미지 수집 후 다음 명령어를 통해 캘리브레이션 Pyhton 코드를 실행합니다. cd ~/StereoDepth/Calibration python cameraCalibration.py 위 명령어로 스테레오 시스템의 내부 및 외부 파라미터가 포함된 "intrinsics.yml"및 "extrinsics.yml"이라는 2개의 파일이 생성됩니다. 기본적으로 30mm 정사각형 크기의 채커보드를 가정하여 만든 코드이지만 필요한 경우 편집이 가능합니다. 캘리브레이션이 끝나면 캘리브레이션이 얼마나 잘 수행 되었는지를 나타내는 RMS 오류가 표시됩니다. 캘리브레이션이 잘 된 경우 RMS 오류는 일반적으로 0.5 픽셀 미만입니다. Real-time Depth Map 실시간으로 차이(disparity)를 계산하는 코드는 “Depth” 폴더 내에 있습니다. 카메라의 일련 번호를 복사하여 live_disparity.cpp의 230과 231번째 줄에 붙여 넣습니다. 리눅스 터미널에서 다음 명령어를 사용하여 실행파일을 빌드합니다. cd ~/StereoDepth/Depth mkdir build cd build cmake .. make 캘리브레이션 단계에서 얻은 "intrinsics.yml" 및 "extrinsics.yml" 파일을 이 폴더에 복사합니다. 실시간으로 Depth Map 데모를 실행하려면 다음 명령어를 입력합니다. ./live_disparity 왼쪽 카메라 이미지(Raw 이미지)와 Depth Map(최종 output)이 표시됩니다. 아래 이미지는 몇가지 예제 output을 보여주고 있습니다. 카메라로부터의 거리는 Depth Map의 오른쪽에 표시된 범례에 따라 색상으로 구분됩니다. Depth Map의 검은색 영역은 해당 영역에서 차이(disparity)점이 있는 데이터가 없다는 것을 의미합니다. NVIDIA Jetson TX2 GPU로 1440 x 1080의 해상도에서 최대 초당 5프레임, 720 x 540의 해상도에선 최대 초당 13프레임 속도로 실행할 수 있습니다. 특정 지점의 깊이 데이터는 Depth Map에서 해당 지점을 클릭하여 아래 이미지와 오른쪽 하단 이미지와 같이 깊이가 표시되는 것을 확인할 수 있습니다. Figure 8 – 왼쪽 카메라 이미지 및 해당 Depth Map 샘플 / 하단의 Depth Map에서는 특정 지점의 깊이를 보여줍니다. 요약 스테레오 비전을 사용하여 깊이 측정 시스템을 개발하면 실외에서도 잘 작동이 가능하며, 고해상도 Depth Map을 제공하고, 저렴한 기성품들로 매우 쉽게 접근할 수 있다는 장점이 있습니다. 시장에는 이미 요구 조건이 정해진 기성 스테레오 시스템이 많이 있습니다. 커스텀 임베디드 스테레오 시스템을 개발해야하는 경우 이 글에서 설명 드린 내용처럼 비교적 간단하게 작업하실 수 있습니다.
2022.09.07