요약

이 기사에서는 Microsoft Kinect가 적외선 (IR) 카메라로 작동하도록 어떻게 수정 될 수 있는지 탐구합니다. Kinect는 일반적으로 깊이 카메라로 알려져 있지만 약간의 수정으로 IR 이미지를 캡처 할 수 있습니다. IR 프로젝터를 차단하고 외부 IR 램프를 추가하면 Kinect가 적외선을 감지하고 기록 할 수 있습니다. 이 기사에서 논의 된 주요 요점은 다음과 같습니다

  1. Kinect는 사용자가 컨트롤러를 사용하지 않고 상호 작용할 수있는 Xbox 360 콘솔의 주변 장치입니다.
  2. Kinect는 깊이 카메라로, 자체와 객체 사이의 거리를 계산할 수 있음을 의미합니다.
  3. Kinect를 수정하여 IR 이미지를 캡처하기 위해 IR 카메라로 사용할 수 있습니다.
  4. Kinect의 구성 요소에는 IR 프로젝터, IR 카메라 및 RGB 카메라가 포함됩니다.
  5. IR 프로젝터는 물체의 IR 도트 그리드를 방출하며, IR 카메라는 깊이 이미지를 계산하기 위해 감지합니다.
  6. Kinect에 대한 자세한 설명과 잠재적 용도는 Greg Borenstein의 “Making Things See”에서 찾을 수 있습니다.
  7. Kinect를 컴퓨터에 연결하려면 Openni, Nite, Sensor 및 SensorkInect와 같은 특정 소프트웨어 및 라이브러리를 설치해야합니다.
  8. 설치 후 처리시 샘플 스크립트를 실행하여 성공을 확인할 수 있습니다.
  9. IR 프로젝터를 차단하기 위해 덕트 테이프와 벨크로 패드를 사용하여 눈가리개를 만들 수 있습니다.
  10. IR 프로젝터 차단은 IR 가시성에 영향을 미치기 때문에 충분한 IR 조명을 제공하기 위해 외부 IR 램프를 추가해야합니다.
  11. IR 램프를 구축하려면 회로 다이어그램을 따라 LED의 저항 값을 계산할 수 있습니다.

질문과 답변

Q1 : 주로 알려진 Kinect는 무엇입니까??

A1 : Kinect는 주로 깊이 카메라로 알려져 있으며 물체와 자체 사이의 거리를 계산할 수 있습니다.

Q2 : Kinect를 적외선 카메라로 작동하도록 어떻게 수정할 수 있습니까??

A2 : IR 프로젝터를 차단하고 적외선 이미지를 캡처하기 위해 외부 IR 램프를 추가하여 Kinect를 수정할 수 있습니다.

Q3 : Kinect의 구성 요소는 무엇입니까??

A3 : Kinect의 구성 요소에는 IR 프로젝터, IR 카메라 및 RGB 카메라가 포함됩니다.

Q4 : Kinect는 깊이 이미지를 어떻게 계산합니까??

A4 : Kinect는 물체에 IR 도트의 그리드를 방출하여 깊이 이미지를 계산합니다.

Q5 : Kinect에 대해 더 많이 배우기위한 권장 리소스가 있습니까??

A5 : 예, Greg Borenstein의 “See See”.

Q6 : Kinect를 컴퓨터에 연결하는 데 필요한 소프트웨어 및 라이브러리?

A6 : 필요한 소프트웨어 및 라이브러리에는 Openni, Nite, 센서 및 SensorkInect가 포함됩니다.

Q7 : Kinect 소프트웨어의 성공적인 설치를 어떻게 확인할 수 있습니까??

A7 : 깊이 및 깊이 충격과 같은 처리시 샘플 스크립트를 실행하면 설치가 성공했는지 확인할 수 있습니다.

Q8 : Kinect의 IR 프로젝터를 어떻게 차단할 수 있습니까??

A8 : IR 프로젝터를 덮고 차단하기 위해 덕트 테이프와 벨크로 패드를 사용하여 눈가리개를 만들 수 있습니다.

Q9 : 외부 IR 램프를 추가 해야하는 이유?

A9 : IR 프로젝터 차단 IR 가시성이 줄어들므로 IR 이미지를 캡처하기에 충분한 IR 조명을 제공하기 위해 외부 IR 램프가 필요합니다.

Q10 : IR 가시성을 향상시키기 위해 IR 램프를 구축 할 수있는 방법?

A10 : 회로 다이어그램 및 LED의 저항 값 계산에 따라 IR 램프를 구축하여 IR 가시성을 향상시킬 수 있습니다.

결론

이 기사에서는 적외선 카메라로 기능하도록 Microsoft Kinect를 어떻게 수정할 수 있는지 탐구했습니다. 올바른 수정 및 추가로 Kinect는 적외선 이미지를 캡처하고 다양한 프로젝트에 새로운 가능성을 제공 할 수 있습니다. 이 프로젝트는 우리가 전통적인 용도를 넘어서 Kinect의 잠재력을 활용하여 다양성과 확장 성을 보여줍니다.

Kinect를 적외선 카메라로 사용합니다

보렌 슈타인, 그렉, 일을 보게합니다, 영형’Reilly Media, Inc., 978-1-449-30707-3, 2012 년 1 월.

Kinect는 적외선을 사용합니까?

об йтоэ странице

м е р р регистрировали подо 착취 ay rzа ф징퍼, исход 넘추 타 ay сети. с пом거나 ю это인지 страницы м주는 сможем определить, что з просы отправляете именно, а не робот. почему это могло произойти?

эта страница отобр은 Âется в тех Â сл 나아가 · 추, ∈огда автомати인지 скими системи Google регтрирр곽막우 ся 테 추 법구추 추 님. котор ое нарушают условия использования. странира перестанет отобр은 жаться после того, как эти запросы прекратся. до отого момента для использования слу 갑기 Google необ 영향.

источником запросов может служить вредоносное по, подключаемые модули браузера или скрипт, насое 밑 밑 밑보관 сзлку ыапросов. если вл используете общий доступ в интернет, проблема 갑새 갑새 딘 악 с сомпером с с с с с саким 테 IP-адесом → Â 궤. обратитесь к своему системному администратору. подроб 변태.

проверка по слову может татак뿐 아니라 자기 появляться, если вы В 갑 갑격적 В Â водите слож ные запросы, об협 ораспронон혁 ™ rапротототототототото술도 있습니다. емами, или вводите запросы очень часто.

Kinect를 적외선 카메라로 사용합니다

이 프로젝트는 Microsoft Kinect를 적외선 (IR) 카메라로 사용하도록 수정하는 방법을 보여줍니다.

  • 필요한 시간 : 2-3 시간
  • 이 프로젝트를 인쇄하십시오

Kinect를 적외선 카메라로 사용합니다

Damon Conover 작성

데이먼 콘노버

Kinect는 사용자가 컨트롤러를 터치하지 않고 Xbox 360과 상호 작용할 수있는 Xbox 360 콘솔의 주변 장치입니다. Kinect에 대한 일반적인 설명은 깊이 카메라라는 것입니다. 이것은 당신이 객체를 그 앞에 놓을 수 있다는 것을 의미하며, 그것은 객체에서 객체까지의 거리를 계산하여 깊이 이미지를 만듭니다. 따라서 Kinect는 자체에 비해 이미지의 객체 위치를 제공 할 수 있으며이 정보는 다양한 프로젝트에서 사용할 수 있습니다. 또한 Kinect에는 약간의 수정으로 새로운 목적으로 사용할 수있는 많은 구성 요소가 포함되어 있습니다. 예를 들어,이 프로젝트는 Kinect가 적외선 (IR) 카메라로 사용하는 방법을 보여줍니다.

Kinect의 작동 방식과 다른 프로젝트에서 어떻게 사용될 수 있는지에 대한 자세한 설명을 보려면 읽는 것이 좋습니다 일을 보게합니다 Greg Borenstein (http : // shop.오레일리.com/product/06369200…). 1 단계의 이미지는이 프로젝트를 이해하는 데 필요한 Kinect의 구성 요소를 보여줍니다. IR 프로젝터는 그 앞에있는 물체에 IR 도트의 그리드를 빛납니다. 우리는 점을 볼 수 없지만 IR 카메라는 그들을 감지 할 수 있습니다. 각 객체의 점 패턴을 사용하여 Kinect는 깊이 이미지를 계산할 수 있습니다. 최종 구성 요소는 표준 웹캠과 유사한 RGB 카메라입니다.

프로젝트 단계

Kinect를 컴퓨터에 연결하는 데 필요한 소프트웨어 설치

다음을 위해 플랫폼 별 지침을 따르십시오

Openni, Nite, 센서 및 SensorkInect 드라이버 설치

처리를 위해 SimpleoPenni 라이브러리를 설치하십시오

설치가 성공했는지 확인하십시오

처리를 시작하고 깊이 및 깊이 충격 예를 실행하십시오.

Kinect에 전원을 공급하고 USB 포트를 통해 컴퓨터에 연결하십시오.

파일로 이동 → 예제 → 기고 된 라이브러리 → SimpleoPenni → Openni.

실행하려는 예제를 두 번 클릭하면 (예 : 깊이 가려면), 예제 스크립트가 열립니다.

실행 버튼을 클릭하면 화면에 이미지가 나타납니다. 깊이 충돌 스크립트의 경우 깊이 이미지가 왼쪽에 있고 IR 이미지가 왼쪽에 표시된 것처럼 오른쪽에 있습니다.

IR 프로젝터를 차단하십시오

이전 단계에서 볼 수 있듯이, 깊이 프레로드 스크립트에 의해 생성 된 IR 이미지에는 제거하려는 점 패턴이 포함되어 있습니다.

이렇게하려면 IR 프로젝터를 덮기 위해 눈가리개를 만듭니다.

각각 9 인치보다 긴 두 개의 덕트 테이프 스트립을 가져 와서 하나는 다른 하나를 약간 겹치도록 배치합니다. 그런 다음 두 개의 덕트 테이프 스트립을 사용하여 반복하십시오.

이중 덕트 테이프의 두 스트립을 가져 와서 끈적 끈적한면을 함께 배치하십시오.

결과 스트립의 길이를 9 인치로 자릅니다.

스트립의 한쪽 끝에 Velco 패드를 놓고 Kinect 주위에 스트립을 감고 IR 프로젝터를 덮고 왼쪽에 표시된 것처럼 스트립이 단단히 고정되도록 반대쪽 벨코 패드를 놓습니다.

IR 램프를 만듭니다

이제 IR 프로젝터가 차단되었으므로 IR 카메라가 좋은 이미지를 생성하기에 더 이상 IR 라이트가 충분하지 않습니다.

따라서 외부 IR 조명을 추가해야합니다. 왼쪽의 회로도는 두 개의 IR 램프에 대한 하나의 가능한 설계를 보여줍니다.

DC 전원 공급 장치를 전원 잭에 연결하고 멀티 미터를 사용하여 전압 (VDC)을 측정하십시오. 내 전원 공급 장치의 경우 VDC = 15.6 v.

LED의 일반적인 순방향 전압 (VF) 및 최대 순방향 전류 (IF, MAX)를 찾아보십시오. 광산은 vf = 1입니다.5V 및 IF = 20 MA.

저항 계산 (R1 = R2 = R3 = R4) 각 6 개의 LED 시리즈를 통해 전류를 제한하는 데 필요한. 360 Ω 저항을 사용했습니다. r> ((vdc – (# of LED)*vf)/if)

IR 램프 구축 (계속)

PCB의 절반에 6 개의 LED와 1 개의 저항을 배치하십시오. LED를 연결하는 솔더 와이어, 음극을 양극 및 저항기. PCB의 나머지 절반에 대해 반복하십시오. 그런 다음 자유 양극을 연결하는 와이어와 저항의 자유 끝을 연결하는 다른 와이어를 납땜하십시오.

연결된 양극에 길고 빨간색 와이어를 납땜하고 연결된 저항기에 길고 검은 와이어를 납땜하십시오.

(선택 사항) Sugru를 사용하여 긴 전선을 PCB에 고정시켜 스트레인 릴리프를 제공합니다.

플라스틱 컵 바닥에 구멍을 뚫고 구멍을 통해 전선을 공급 한 다음 PCB를 컵에 단단히 누릅니다. PCB가 단단히 맞지 않으면 Sugru를 사용하여 제자리에 고정하십시오.

두 번째 램프의 이전 네 단계를 반복하십시오.

램프 강도 컨트롤러를 빌드하십시오

캘리퍼를 사용하여 두 냄비, 스위치, 퓨즈 홀더 및 파워 잭을 장착하는 데 필요한 구멍의 크기를 측정하십시오.

프로젝트 인클로저에 구멍을 뚫고 하드웨어를 장착하십시오. 또한, 와이어가 들어갈 수 있도록 두 개의 작은 구멍을 뚫습니다. 각 구멍을 배치 할 위치를 계획 할 때 각 부분이 인클로저에 앉을 위치를 명심하십시오.

Dremel 도구 또는 칼로 Power Jack의 구멍을 열어야합니다.

잭을 제자리에 고정시키기 위해 인클로저 안쪽과 외부에 Sugru를 배치하십시오.

램프 강도 컨트롤러 구축 (계속)

각 냄비가 낮은 설정이 될 위치로 바꾸고 멀티 ​​미터를 사용하십시오’S 연속성 테스터는 회로에 사용될 두 핀을 찾기위한 (테스터가 경고음).

또한 연속성 테스터를 사용하여 스위치가 올라갈 때 스위치의 두 핀이 연결되어 있고 스위치가 다운되었을 때 연결되는 두 핀을 결정합니다.

회로 다이어그램에 따라 인클로저 내의 부품을 연결하는 솔더 짧은 와이어.

냄비에 두 개의 길고 빨간색 전선을 납땜하고 스위치에 두 개의 길이의 검은 색 전선을 돌린 다음 두 개의 작은 구멍을 통해 찌릅니다.

인클로저를 조입니다’S 뚜껑과 퓨즈 홀더에 퓨즈를 놓습니다.

컨트롤러로 들어가는 와이어 (빨간색, 빨간색, 검은 색)와 함께 램프를 빠져 나가는 와이어를 비틀고 필요한 경우 납땜 한 다음 노출 된 와이어를 전기 테이프로 덮으십시오.

Kinect와 램프를 장착하십시오

Kinect를 표면에 놓고 이미지를 원할 물체를 가리키십시오.

(선택 사항) Kinect를 삼각대 커넥터에 연결 한 다음 삼각대에 연결합니다. 삼각대를 링 스탠드에 연결하고 이미징 표면 앞에 놓습니다.

이미징 표면이 조명되도록 램프를 방향으로 장착하십시오.

(선택 사항) 램프를 링 스탠드에 연결하고 클램프, 힌지 및 테이프로 제자리에 고정하십시오.

벽 어래피터 전원 공급 장치를 콘센트에 연결 한 다음 Power Jack을 통해 램프 강도 컨트롤러에 연결하십시오.

실험을 수행하십시오

숯 연필을 사용하여 건축 용지를 가져 와서 왼쪽에, 다른 물체를 오른쪽에 그립니다.

프탈로 블루 파스텔로 왼쪽 물체 위의 색상과 프러시아 블루 파스텔로 오른쪽 물체 위의 색상.

용지를 카메라 앞에 놓습니다.

처리를 열고 스크립트를 만듭니다 RGB_SAVE.PDE 그리고 ir_save.PDE (코드는 첨부 된 코드에 제공됩니다.pdf), 파일과 경로 이름이 컴퓨터에 적합하도록 코드를 수정하십시오 RGB_SAVE.PDE, 그런 다음 실행됩니다 ir_save.PDE.

스위치를 뒤집어 램프를 켜고 컨트롤러의 노브를 사용하여 강도를 조정하십시오. LED에 의해 방출 된 IR 표시등을 볼 수 없으므로 카메라에서 캡처 한 IR 비디오를 사용하여 원하는 강도를 결정하십시오. 램프를 조정 한 후 두 스크립트를 다시 실행해야합니다.

왼쪽에 표시된 결과 이미지는 상단에 색상 이미지와 하단에 IR 비디오가 표시되어야합니다. 결과는 두 안료가 스펙트럼의 색 부분에서 비슷해 보이지만 IR 부분에서 매우 다르다는 것을 보여줍니다.

이 실험의 과학에 대한 자세한 설명은 Delaney 등의 논문을 읽는 것이 좋습니다. 참조에 나열되어 있습니다.

참조

Simple-Openni Wiki (2012 년 4 월 20 일 마지막 접근). *** 도구 상자에 포함 된 예제는 특히 유용합니다.

보렌 슈타인, 그렉, 일을 보게합니다, 영형’Reilly Media, Inc., 978-1-449-30707-3, 2012 년 1 월.

Reas, Casey 및 Ben Fry, 처리 시작, 영형’Reilly Media, Inc., 978-1-449-37980-3, 2010 년 6 월.

블레이크, 여호수아, “Kinect 해킹”, MATE :, Volume 29, 124-133, http : // MakeProjects.com/wiki/29#section_… (2012 년 4 월 20 일 마지막 액세스).

Delaney, John k., 엘리자베스 월 슬리, 바바라 h. 베리와 콜린 f. 플레처, “파란색 안료를 감지하고 매핑하기 위해 적외선의 그림의 다중 전자 영상”, (Sackler Nas Colloquium) 예술의 과학적 조사 : 보존 및 분석의 현대 기술, 국립 과학 아카데미의 절차, 120-136, http : // www.선잠.Edu/Catalog/11413.HTML (2012 년 4 월 20 일 마지막 액세스), 0-309-54961-2, 2005.

Delaney, John k., 제이슨 g. Zeibel, Mathieu Thoury, Roy Littleton, Kathryn M. Morales, Michael Palmer, e. René de la Rie, “그림의 가시 및 적외선 반사 영상화 분광학 : 안료 매핑 및 개선 된 적외선 반사”, Q3A : Luca Pezzati와 Renzo Salimbeni, Proc에 의해 편집 된 예술, 건축 및 고고학 II의 광학. Spie Vol. 7391, 2009.

감사의 말

저자는 박사에게 감사하고 싶습니다. George Washington University의 Murray Loew 및 DR. John Delaney와 Dr. 이자형. Washington, Dational Galler of Art의 Melanie Gifford, D.씨., 실험 설정에 대한 피드백.

저자는 또한 College Scientists (ARCS) 재단에 대한 성취 보상으로부터받은 장학금 지원을 인정하고 싶습니다.

결론

참고 : Kinect를 컴퓨터에 연결하기위한 소프트웨어를 성공적으로 설치 한 후에는이 프로젝트를 완료하는 데 필요한 유일한 단계는 다음과 같습니다. 1) IR 프로젝터 차단, 2) 교체 IR 광원 (830 nm 근처의 중심 파장) 및 3) 실험을 구축하고 장착하십시오. 내 장치 및 실험의 세부 사항이 제공되지만 사용 가능한 부품 및 장비를 기반으로 세부 사항을 수정하고 이미지를 기반으로합니다. 행복한 건물!

Xbox Kinect에서 모션 감지의 작동 방식

Microsoft의 프로토 타입’S Kinect 카메라와 마이크는 30,000 달러입니다. 목요일 아침 자정에, 당신’Xbox 360 주변 장치로 $ 150에 구입할 수 있습니다. Microsoft는 현재와 크리스마스 사이에 5 백만 대를 판매 할 것이라고 예상하고 있습니다. 우리’LL은 더 자세한 내용과 시스템에 대한 검토를 곧 가지고 있지만 […]

이야기를 저장하십시오

이야기를 저장하십시오

Microsoft의 Kinect 카메라와 마이크의 프로토 타입은 $ 30,000입니다. 목요일 아침 자정에 Xbox 360 주변 장치로 $ 150에 구입할 수 있습니다.

Microsoft는 현재와 크리스마스 사이에 5 백만 대를 판매 할 것이라고 예상하고 있습니다. 우리는 곧 더 자세한 내용과 시스템에 대한 검토를 얻을 수 있지만 지금은 모든 것이 어떻게 작동하는지 생각할 가치가 있습니다.

카메라

Kinect의 카메라는 하드웨어와 소프트웨어로 구동됩니다. 그리고 그것은 두 가지를 수행합니다 : 시야에서 물체의 3 차원 (움직이는) 이미지를 생성하고 그 대상들 사이에서 인간을 (이동) 인식합니다.

오래된 소프트웨어 프로그램은 색상과 질감의 차이를 사용하여 물체를 배경과 구별했습니다. 기술력을 발휘하는 회사 인 Primessense 및 최근 Microsoft 인수 Canesta는 다른 모델을 사용합니다. 카메라는 보이지 않는 근적외선 조명을 전달하고 물체를 반사 한 후 “비행 시간”을 측정합니다.

비행 시간은 Sonar처럼 작동합니다. 빛이 얼마나 오래 돌아 오는 시간을 알고 있다면, 물체가 얼마나 멀리 떨어져 있는지 알 수 있습니다. 빛의 속도로 앞뒤로 많은 핑을하면서 큰 들판을 캐스트하면 많은 물체가 얼마나 멀리 떨어져 있는지 알 수 있습니다.

적외선 생성기를 사용하면 주변 광의 문제가 부분적으로 해결됩니다. 센서는 가시 광선을 등록하도록 설계되지 않았으므로 오 탐지를 많이 얻지 못합니다.

Primessense와 Kinect는 한 걸음 더 나아가서 근접한 조명에서 정보를 인코딩합니다. 해당 정보가 반환되면 일부 정보는 변형되어 있습니다. 결과적으로 깊이뿐만 아니라 해당 객체의 3D 텍스처의 더 미세한 이미지를 생성하는 데 도움이 될 수 있습니다.

이 기술을 사용하면 Kinect는 1 센티미터 이내에 물체의 깊이를 구별 할 수 있으며 높이와 너비는 3mm 이내에 있습니다.

전통적인 비디오 게임 컨트롤러는 개인적이고 연재물입니다. 그것은 나와 화면에서 제어하는 ​​것이 무엇이든, 당신과 당신이 제어하는 ​​것. 우리는 협력 적으로 연주 할 수 있지만 기본적으로 서로 격리되어있는 개체가 우리의 손에 물체를 조작합니다.

비디오 게임 컨트롤러는 또한 고도로 전문화 된 장치입니다. 조명은 원격 제어로 작동 할 수 있지만 버튼, D 패드, 조이스틱, 가속도계, 자이로 스코프, 햅틱 피드백 메커니즘 및 콘솔과의 인터페이스는 모두 매우 특정한 종류의 정보를 전달하도록 설계되었습니다.

Kinect는 다른 것입니다. 공동, 연속 및 일반 : 게임용 GUI가 아닌 멀티미디어를위한 자연스러운 사용자 인터페이스 (또는 NUI).

그러나 그런 인터페이스를 원활하게 모이고 “자연스럽게”.”

실험실에 Kinect 2 손

적외선 이미지실험실 2 : 적외선 데이터 표시

예상 완료 시간: 20 분

이 실험실은 Windows 8을 만드는 방법을 가르쳐주는 실험실의 일련의 손의 일부입니다.Kinect 2의 거의 모든 사용 가능한 기능을 사용하여 1 개의 매장 응용 프로그램. 이것은 시리즈의 두 번째 실험실입니다. 이 실험실에서는 Kinect 센서에서 적외선 피드를 검색하는 방법과 XAML의 피드를 이미지로 제시하는 방법을 배웁니다.

  • 코드의 Kinect 센서에서 적외선 프레임 리더를 열는 방법.
  • 준비가되었을 때 적외선 프레임을받는 방법.
  • 적외선 프레임 데이터를 흑백 비트 맵으로 변환하는 방법
  • 변화하는 비트 맵을 XAML에 제시하는 방법.
  • Kinect 2의 상태 및 해상도에 대한 데이터를 얻고 제시하는 방법.

연습 1- 적외선 프레임 표시

  1. 기존을 엽니 다 Kinect 2 샘플 Visual Studio의 솔루션 또는 이전 실험실 끝에서 얻은 사본.
  2. 먼저 당신은 그것을 열 것입니다 적외선 프레임 리더 Kinect 센서에서 적외선 데이터를 검색하려면. 열기 메인 페이지.XAML.CS 파일 솔루션 탐색기. 작성한 코드는 Kinect 센서를 열기 전에 필요한 적외선 피드, 이벤트 및 데이터를 설정합니다. Kinect가 프레임 전달을 시작하면 입력을받는 것이 있습니다. 다음 코드를 설명하려면 여기서 중요한 변수에 대한 설명이 있습니다
    • 적외선 – 적외선 프레임에 대한 리더
    • 적외선 – 센서에서 프레임 데이터를 수신하기위한 중간 저장
    • 적외선 – 디스플레이를 위해 컬러 픽셀로 변환 된 프레임 데이터에 대한 중간 저장
    • 비트 맵 – XAML에서 이미지의 내용을 대체 할 WritableBitMap

준비가되었을 때 프레임 리더로부터 새 프레임이 수신되며, 일반적으로 초당 약 30 프레임으로. 각 프레임은 카메라 해상도의 모든 픽셀에 대한 적외선 데이터로 도착합니다. 이 데이터는 적외선에서 그레이 스케일 컬러 범위로 변환됩니다. 그런 다음 적외선 피셀은 비트 맵 객체에 쓰는 데 사용됩니다.

이러한 모든 변수는 Kinect 2에서 나오는 적외선 프레임의 크기 인 적절한 크기로 초기화해야합니다.

이러한 변수를 올바르게 초기화하려면 아래에 강조 표시된 코드를 복사하십시오

// . 다른 네임 스페이스 Windows 사용.UI.XAML.미디어.이미징; 네임 스페이스 Kinect2sample < public sealed partial class MainPage : Page < // Size of the RGB pixel in the bitmap 개인 const int bytesperpixel = 4; 개인 kinectsensor kinectsensor = null; Private Writ // 적외선 프레임 개인 인프라 프레임 레더 인프라 프레임 레더 = NULL; Private Ushort [] Infraredframedata = null; 개인 바이트 [] 적외선 = null; 공개 메인 페이지 () < // one sensor is currently supported this.kinectSensor = KinectSensor.GetDefault(); // get the infraredFrameDescription from the // InfraredFrameSource Framedescription Infraredframedescription = 이것.Kinectsensor.적외선.프레임 스크립트; // 적외선 프레임에 대한 리더를 열십시오 이것.적외선 예로 = 이것.Kinectsensor.적외선.OpenReader (); // 프레임 도착용 와이어 핸들러 이것.적외선.framearRived += 이것.reader_infraredframearRived; // 픽셀을 넣기 위해 공간을 할당 // 수신 및 변환 이것.적외선 = 새로운 Ushort [적외선 프레임 스크립 션.너비 * 적외선.키]; 이것.적외선 = 새로운 바이트 [Infraredframedescription.너비 * 적외선.높이 * 바이 테스퍼 피 픽셀]; // 표시 할 비트 맵을 만듭니다 이것.비트 맵 = 새로운 writeblitybitmap (적외선 프레임 스크립 션.너비, 적외선.키); // 센서를 엽니 다.Kinectsensor.열려 있는(); 이것.InitializeComponent (); >>>

공개 봉인 된 부분 클래스 메인 페이지 : 페이지 < // . Private void reader_infraredframearRived (객체 발신자, InfraredFramearRivedEventArgs e) < bool Infraredframeproced = false; // 적외선은 idisposable입니다 사용 (적외선 적외선 = 이자형.Framereference.AcquireFrame ())  if (적외선 != null) < Framedescription Infraredframedescription = 적외선.프레임 스크립트; // 데이터를 확인하고 새 적외선 프레임 데이터를 표시 // 디스플레이 비트 맵에 쓰기 if (((적외선 프레임 스크립 션.너비 * 적외선.키) == 이것.적외선.길이) && (적외선 프레임 스크립 션.너비 == 이것.비트 맵.pixelwidth) && (적외선 프레임 스크립 션.높이 == 이것.비트 맵.픽셀 하이트))  // 이미지에서 픽셀 데이터를 // 임시 배열로 복사합니다 적외선.CopyframedatatoArray ( 이것.적외선); 적외선 = true; > > > // 프레임, 변환 및 렌더링을 받았습니다 if (Infraredframeproced)  ConvertInfrarddatatoPixels (); RenderPixelArray (이.적외선); > > >

공개 봉인 된 부분 클래스 메인 페이지 : 페이지 < /// & ltsummary & gt /// 적외선에서 반환 할 수있는 가장 높은 값. /// 시각화 코드에서 가독성을 위해 플로트로 캐스트됩니다. /// & lt/summary & gt 개인 Const Float InfraredSourceValueMaximum = (플로트) Ushort.MaxValue; /// & lt/summary & gt /// 하한, 사후 처리를 설정하는 데 사용됩니다 /// 우리가 렌더링 할 적외선 데이터. ///이 값을 높이거나 감소 시키면 밝기가 설정됩니다 /// "벽"은 더 가까이 또는 더 멀리 떨어져 있습니다. /// & lt/summary & gt 개인 Const Float InfraredOutputValueminimum = 0.01F; /// & ltsummary & gt /// 상한, 사후 처리, /// 렌더링 할 적외선 데이터. /// & lt/summary & gt 프라이빗 Const float erfraredoutputvaluemaximum = 1.0f; /// & ltsummary & gt /// 적외선 스케이트 벤트 값 값은 다음을 지정합니다 /// 장면의 평균 적외선 값. ///이 값은 평균을 분석하여 선택되었습니다 /// 주어진 장면의 픽셀 강도. /// 런타임에 계산할 수 있습니다 /// 장면의 IR 조건 (외부 대 내부). /// & lt/summary & gt 프라이빗 Const Float InfraredScenevalueaverage = 0.08f; /// & ltsummary & gt /// 적외선 스케일드 값 값은 지정합니다 /// 적용 할 표준 편차 수 /// InfraredScenevalueaverage. ///이 값은 주어진 장면에서 데이터를 분석하여 선택되었습니다. /// 런타임에 계산할 수 있습니다 /// 장면의 IR 조건 (외부 대 내부). /// & lt/summary & gt 비공개 부유물 적외선 신분증 = 3.0f; //. 다른 개인 변수는 다음과 같습니다

공개 봉인 된 부분 클래스 메인 페이지 : 페이지 < // Reader_InfraredFrameArrived() before this. 개인 void convertinfrareddatatopixels () < // 적외선을 RGB로 변환합니다 int colorpixelindex = 0; (int i = 0; i < this.infraredFrameData.Length; ++i) // 들어오는 적외선 데이터 (Ushort)를 정상화 // 적외선에서 범위의 플로트 // 적외선에 보관합니다 // 1. 들어오는 가치를 // 소스 최대 값 float intensityRatio = (float) this.적외선 [I] / 적외선; // 2. 나누기 // (평균 장면 값 * 표준 편차) IntensityRatio /= 적외선 스케이트장 * 적외선 신분증; // 삼. 값을 적외선으로 제한합니다 IntensityRatio = 수학.최소 (적외선), IntensityRatio); // 4. 낮은 값의 적외선을 제한합니다 IntensityRatio = 수학.MAX (적외선), IntensityRatio); // 5. 정규화 된 값을 바이트로 변환하고 사용합니다 // 이미지가 요구하는 RGB 구성 요소로 결과 바이트 강도 = (바이트) (IntensityRatio * 255.0f); 이것.적외선 피셀 [ColorPixelIndex ++] = 강도; //파란색 이것.적외선 피셀 [ColorPixelIndex ++] = 강도; //녹색 이것.적외선 피셀 [ColorPixelIndex ++] = 강도; //빨간색 이것.적외선 [ColorPixelIndex ++] = 255; // 알파 > > >

공개 봉인 된 부분 클래스 메인 페이지 : 페이지 < //이 전에 ConvertInfraredDatatoPixels (). 개인 void renderpixelarray (byte [] 픽셀)  픽셀.카피 토 (이것은이.비트 맵.Pixelbuffer); 이것.비트 맵.무효화 (); framdisplayimage.소스 = 이것.비트 맵; > >

& ltgrid background = ""& gt & ltgrid margin = "30"& gt & ltgrid.Rowdefinitions & Gt & ltrowdefinition height = "70"/& gt & ltrowdefinition height = "*"/& gt & ltrowdefinition height = "100"/& gt & lt/그리드.RowDefinitions> & lttextBlock 그리드.row = "0" 스타일 = "" Text = "Windows 2의 Kinect"/> & ltimage x : name = "framdisplayimage"그리드.row = "1" 스트레치 = "균일"/> & lt/grid> & lt/grid>

적외선 이미지

재미를 위해 조명을 끄십시오. 적외선은 인간에게는 보이지 않으므로 카메라는 완전한 어둠 속에서도 작동합니다. 이것이 야간 시력의 작동 방식의 기초입니다.

  • 선택적 작업 으로이 연습의 4 단계에 설정된 const 값을 변경하고 결과 프레임 출력에서의 차이를 확인하십시오. 이 값에 따라 이미지의 가시성 깊이와 밝기가 변경됩니다.
  • 실험실 2 : 적외선 데이터 표시

    이 연습은 현재 적외선 프레임 및 Kinect의 현재 상태에 대한 유용한 디버깅 데이터를 제시하는 방법을 보여줍니다. 이 연습은 나중에 Kinect의 문제를 해결하고 다음 연습에서 프레임 간의 해상도 차이를 강조하는 데 도움이됩니다.

    Kinect 2에서 프레임 데이터를 검색하고 표시하려면 아래 단계를 따르십시오

    구성 이미지

    1. 첫째, 당신은 그것을 알아 차렸을 것입니다 디자이너 X64 아키텍처를위한 빌드시 XAML을 볼 때는 사용할 수 없습니다. 저것&rsquo;Kinect 2는 X86 아키텍처와 호환되므로 지금은 다음과 같이 전환 할 수 있습니다
      1. 딸깍 하는 소리 짓다 그 다음에 구성 관리자… 구성 관리자를 엽니 다.
      2. 아래로 드롭 다운 박스를 클릭하십시오 활성 솔루션 플랫폼 : 그리고 선택하십시오 x86.
      3. 딸깍 하는 소리 닫다.
      4. 이제 Solution Explorer에서 Kinect2Sample 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 다음 클릭하여 프로젝트 속성을 엽니 다 속성.
      5. 클릭하십시오 짓다 왼쪽의 탭, 옆에 탭 플랫폼: 선택하다 x86 드롭 다운에서.
      6. 딸깍 하는 소리 파일, 그 다음에 모두 저장하십시오 또는 히트 Ctrl + Shift + s 모든 파일을 저장합니다.
      7. 빌드 및 실행 오류를 확인하는 응용 프로그램.
    2. 당신이 집중해야 할 것은 Kinect의 상태 (응답중인 경우) 및 프레임의 현재 해상도 (지금은 흥미 롭고 나중에 실험실이 프레임 유형을 변경할 때). 이러한 값을 코드로 가져 오는 것은 쉽습니다. XAML이 상태 값에 바인딩 할 수 있으려면 변경하면 구현해야합니다 inotifyPropertyChanged 인터페이스 메인 페이지 수업. 상태가 변경되면 속성이 변경되고 프레임 설명이 변경 될 때 코드가 해제됩니다. 이를 설정하려면 먼저 다음의 관련 섹션에서 다음 강조 표시된 코드를 복사하십시오 메인 페이지 변경 가능한 속성을 초기화하고 사용하는 클래스 :

      시스템 사용.구성 요소 모델; 네임 스페이스 Kinect2sample < public sealed partial class MainPage : Page, inotifyPropertyChanged < // . consts and other private variables. private KinectSensor kinectSensor = null; 개인 문자열 statustext = null; Private Writ 개인 프레임 스크립 스크립트 전류 프레임 스크립 션; // 적외선 프레임 변수. 공개 이벤트 속성 changeventhandler propertyChanged; 공개 문자열 statustext  얻다 세트  이 경우.statustext != 값)  이것.statustext = value; 이 경우.속성 변경 != null)  이것.PropertyCanged (이것은 새로운 PropertyChangeDeventArgs ( "statustext")); > > > > 공개 framedescription current -framedescription  얻다 세트  이 경우. CurrentFramedScription!= 값)  이것. currentFramedScription = 값; 이 경우.속성 변경 != null)  이것.PropertyCanged (이것은 새로운 PropertyChangedEventArgs ( "currentFramedScription")); > > > > // . >>

      공개 메인 페이지 () < // . // create the bitmap to display this.bitmap = new WriteableBitmap(infraredFrameDescription.Width, infraredFrameDescription.Height); 이것.CurrentFramedScription = 적외선; // ISAVAILABLECHANGED 이벤트 Notifier를 설정합니다 이것.Kinectsensor.IsavailableChanged += 이것.sensor_isavailableChanged; //이 예제에서 Window 개체를보기 모델로 사용합니다 이것.DataContext = this; // 센서를 엽니 다.Kinectsensor.열려 있는(); 이것.InitializeComponent (); > 개인 void sensor_isavailableChanged (KinectSensor Sender, IsavailableChangedeventargs Args)  이것.statustext = this.Kinectsensor.사용할 수 있습니다 ? "Running": "사용할 수 없음"; > 

      & lttextBlock 그리드.row = "0"style = ""text = "kinect for Windows 2"/& gt & ltstackpanel 그리드.row = "0"Orientation = "수평" 수평선 = "오른쪽" verticalalignment = "하단"& gt & lttextBlock text = "Kinect 상태 :"/& gt & lttextBlock text = ""/& gt & lttextBlock text = ", framewidth"/& gt & lttextBlock text = ", frameHeight"/& gt & lt/stackpanel & gt & ltimage x : name = "framdisplayimage"그리드.row = "1"스트레치 = "균일"/& gt

      이미지를 빌드하십시오

      Kinect를 뽑고 상태 변경을 확인하십시오. 그런 다음 Kinect를 다시 연결하면 상태가 업데이트되고 피드가 돌아옵니다.

      요약

      이 실험실은 당신에게 방법을 가르쳐주었습니다 적외선 프레임을 검색하고 사용하십시오 Kinect 2 장치에서 해당 프레임 데이터를 사용하여 눈에 보이는 비트 맵을 만듭니다 장차 ~ 가 되는 XAML에 표시됩니다.

      이 프로세스의 대부분은 매뉴얼이라는 점에 주목하는 것이 흥미 롭습니다. The의 데이터 적외선 그것까지 사용할 수 없습니다&rsquo;s는 비트 맵으로 변환되었습니다. 이것은 눈에 보이는 이미지로 변환하는 것 이상의 적외선 광을 많이 사용하기 때문에 제기입니다. Kinect 2는 적외선 카메라를 사용하여 낮은 조명 조건에서 알려진 신체와 모양을 계산합니다. 그렇기 때문에 적외선의 해상도가 너무 낮습니다 깊이 프레임에서 보이는 해상도와 일치합니다 무엇인지 계산합니다&rsquo;T 사람.

      다음 실험실에서는 XAML에 프레임 데이터를 표시 한 결과 색 프레임과 적외선 간의 해상도 차이가 표시됩니다.

      이 실험실에서 작업의 완성 된 코드 솔루션 인 코드가 있습니다. 다음 실험실은이 코드에서 시작됩니다.