QR 코드 추적 개요

QR 코드 샘플에 대한 GitHub 리포지토리에 액세스하려면 다음을 수행합니다.

HoloLens 2 몰입형 헤드셋을 사용하면 헤드셋 주변 환경에서 QR 코드를 감지하여 각 코드의 실제 위치에서 좌표계를 설정할 수 있습니다. 여러 디바이스에서 동일한 위치에 홀로그램을 렌더링하여 공유 환경을 만들 수도 있습니다. 디바이스의 웹캠을 사용하도록 설정하면 프로젝트의 최신 버전에서 QR 코드를 인식합니다. 프로덕션 환경에 대한 최상의 결과를 위해 모범 사례 섹션을 검토하는 것이 좋습니다.

이 문서에서는 다음에 대해 알아봅니다.

디바이스 지원

기능 HoloLens 1세대 HoloLens 2 몰입형 헤드셋
QR 코드 검색 ✔️ ✔️

참고

데스크톱 PC에서 몰입형 Windows Mixed Reality 헤드셋을 사용한 QR 코드 추적은 Windows 10 버전 2004 이상에서 지원됩니다. API를 Microsoft.MixedReality.QRCodeWatcher.IsSupported() 사용하여 기능이 현재 디바이스에서 지원되는지 여부를 확인합니다.

지원되는 QR 코드 버전

다음 표에는 지원되는 QR 코드 버전과 지원되지 않는 QR 코드 버전이 나와 있습니다.

  QR 코드 버전
지원됨:
  • QR 버전 1 - 10
  • 마이크로 QR 코드 M1-M4
  • 모든 인코딩
지원되지 않음:
  • QR 코드 10 - 20(작동할 수 있지만 보장되지 않음)
  • QR 코드 20 이상
  • 조정된 모듈(예: 원형 모듈, 리플렉션, 반전됨(검정/흰색))
  • 로고
  • 구조적 추가

    QR 코드 검색에 대한 모범 사례

    QR 코드 주변의 조용한 영역

    올바르게 읽으려면 QR 코드에 코드의 모든 측면에 여백이 필요합니다. 이 여백에는 인쇄된 콘텐츠가 없어야 하며 네 개의 모듈(코드의 검은색 사각형 하나)이어야 합니다.

    QR 사양에는 자동 영역에 대한 자세한 정보가 포함되어 있습니다.

    조명 및 배경

    QR 코드 감지 품질은 다양한 조명 및 배경에 취약합니다.

    • 일반 조명 조건에서는 성능 향상을 위해 검은색/흰색 모듈에 충분한 대비를 제공합니다.

    • 밝은 조명 또는 어두운 배경이 있는 극단적인 조명 조건에서는 대비를 줄이고 조정하여 QR 코드 감지 속도를 향상시킬 수 있습니다. QR 코드 내의 흰색 배경은 255에서 아래쪽으로 줄일 수 있습니다.

    QR 코드의 크기

    Windows Mixed Reality 디바이스는 5cm보다 작은 면이 있는 QR 코드에서 작동하지 않습니다.

    5cm에서 10cm 사이의 측면이 있는 QR 코드의 경우 디바이스가 코드를 감지하기 위해 상당히 가까워야 합니다. 코드를 검색하는 데 더 오래 걸릴 수 있습니다.

    코드를 검색하는 정확한 시간은 QR 코드의 크기뿐만 아니라 코드에서 얼마나 멀리 떨어져 있는지에 따라 달라집니다. 코드에 가깝게 이동하면 크기 문제를 상쇄하는 데 도움이 됩니다.

    QR 코드에서의 거리 및 각도 위치

    추적 카메라는 특정 수준의 세부 정보만 감지할 수 있습니다. 작은 코드(측면을 따라 10cm 미만)의 경우 상당히 가깝습니다. 10cm에서 25cm 사이의 버전 1 QR 코드의 경우 최소 검색 거리는 0.15미터에서 0.5미터 사이입니다.

    크기에 대한 검색 거리는 선형적으로 증가하지만 지원되는 QR 버전 또는 모듈 크기에 따라 달라집니다. 버전이 높을수록 모듈이 작을수록 더 가까운 위치에서만 검색할 수 있습니다. 검색 거리가 더 길어지도록 하려면 마이크로 QR 코드를 사용해 볼 수도 있습니다. QR 검색은 각도 범위 += 45 deg와 함께 작동하여 코드를 감지하는 데 적절한 해상도가 있는지 확인합니다.

    기타 검색 고려 사항:

    • 곡선 표면의 QR 코드는 지원되지 않습니다.
    • 평면 내 방향이 지원됩니다. 평면 외부는 더 나은 감지를 위해 똑바로 보이는 +-45여야 합니다 <.
    • QR 코드의 실제 크기에는 2/3 픽셀 이상의 모듈이 있어야 합니다. 참고: 더 높은 버전의 QR 코드에는 더 작은 모듈이 있습니다.

    최적의 검색을 위해 QR 코드의 거리와 크기 간의 절충 관계는 다음 그래프를 참조하세요.

    QR 코드 크기 거리 차트

    중요

    항상 충분한 대비와 적절한 테두리가 있는지 확인합니다.

    QR 코드 데이터 관리

    Windows Mixed Reality 디바이스는 드라이버의 시스템 수준에서 QR 코드를 검색합니다. 디바이스가 다시 부팅되거나 드라이버가 다시 시작되면 검색된 QR 코드 기록이 지워집니다. 다시 검색된 QR 코드는 새 개체로 처리됩니다.

    앱 내에서 지정할 수 있는 특정 타임스탬프보다 오래된 QR 코드를 무시하도록 앱을 구성하는 것이 좋습니다. QR 코드 API는 마지막 검색이 발생한 시간을 지정합니다. 대부분의 앱 개발자는 앱이 시작될 때 시스템 시간을 사용하여 QR 코드가 검색되는 시간을 결정합니다.

    QR 코드 데이터는 앱과 관련이 없습니다. 앱이 시작되면 사용 가능한 QR 코드 목록이 제공됩니다. 앱 개발자는 이 앱과 관련된 QR 코드를 결정합니다.

    공간에 QR 코드 배치

    QR 코드를 배치하는 위치 및 방법에 대한 권장 사항은 HoloLens에 대한 환경 고려 사항을 참조하세요.

    문제 해결 및 FAQ

    필요한 기능은 무엇인가요?

    매니페스트에 추가된 웹캠 기능이 필요합니다( Unity 기능의 확인란). 표준 UWP 프로젝트로 빌드하는 경우 솔루션 프로젝트에도 package.appxmanifest 있습니다.

    다음 함수를 호출하여 액세스를 요청합니다.

    #if WINDOWS_UWP
    
    async QRCodeWatcher.RequestAccessAsync();
    
    #endif
    

    액세스 상태는 .이어야 (status == QRCodeWatcherAccessStatus::Allowed)합니다.

    액세스가 거부되면 시작할 때 기능이 거부된 액세스를 반환합니다 QRTracking.

    개체를 생성하기 전에 이 API를 QRCodeWatcher 호출해야 합니다.

    Unity에서 프로젝트를 실행하는 경우 UI 스레드에서 호출하고 있는지도 확인해야 합니다. 그렇지 않으면 API는 항상 거부된 상태로 반환됩니다. 자세한 내용은 Unity 설명서의 AppCallbacks 클래스 를 참조하세요.

    Unity용 프로젝트를 설정하는 방법에 대한 자세한 내용은 Windows Mixed Reality Unity 구성을 참조하세요.

    HoloLens 2 디바이스에서 QR 코드 추적 기능을 사용할 어떻게 할까요? 있나요?

    QR 추적은 HoloLens 2 자동으로 수행되며 앱에 추가된 "웹캠" 기능이 필요합니다.

    API 플러그 인 파일은 어디에서 찾을 수 있나요?

    필요한 모든 파일 및 설명서는 여기에서 찾을 수 있습니다.

    https://www.nuget.org/packages/Microsoft.MixedReality.QR

    Microsoft.MixedReality.QR.QRCodeWatcher를 사용하도록 UWP를 준비할 어떻게 할까요? 있나요?

    • NuGet 팩을 사용하여 필요한 파일의 압축을 풀 수 있습니다.

    • 프로젝트의 참조를 Microsoft.MixedReality.QR.winmd 추가하고 API 사용을 시작합니다.

    • 플러그 인의 올바른 아키텍처 버전을 추가하고 빌드에 적절하게 사용합니다.

    Microsoft.MixedReality.QR.QRCodeWatcher를 사용하여 Unity를 준비할 어떻게 할까요? 있나요?

    Unity용 NuGet을 사용하고 위의 NuGet 팩을 가리킵니다.

    QR 코드를 만들려면 어떻게 해야 하나요?

    QR 코드 생성기를 확인합니다. 한 가지 예는 다음과 같습니다.

    QR 코드 추적이 일반적으로 작동하지 않는 경우 어떻게 해야 하나요?

    • QR Code 버전이 지원되는 버전인가요? 버전 40과 같은 고밀도 버전은 지원하지 않습니다. 버전 10 이상은 보장되지 않습니다. 20 이상 버전은 지원되지 않습니다.
    • QR 코드에 충분히 근접한가요? QR 코드에서 거리 및 각도 위치를 확인합니다.
    • 조명은 어떻습니까? QR 코드가 어두운 환경 배경에 있을 때 감지가 어려워지는 알려진 문제가 있습니다. 고대비로 인해 QR 코드가 카메라로 씻겨 나갔습니다. 자세한 내용은 조명 및 배경을 참조하세요.

    정확도는 무엇인가요?

    단일 프레임에서 감지되는 경우 크기는 실제 크기에서 최대 1% 오류가 발생할 것으로 예상됩니다. 예를 들어 10cm 코드는 측정된 크기에서 최대 +/- 1mm 떨어져 있을 수 있습니다. 연속 검색에서 코드의 위치는 최대 +/- 2.5mm까지 드리프트될 수 있습니다. 검색 범위를 벗어나면 이전 검색의 위치는 지도 오류의 자비에 달려 있습니다.

    이를 감지하려면 QR 코드에 얼마나 근접해야 하나요?

    거리는 분명히 QR 코드의 크기 및 버전에 따라 달라집니다. 자세한 내용은 QR 코드에서 거리 및 각도 위치를 참조하세요.

    • HoloLens 2 5cm 면에서 25cm 면까지 다양한 버전 1 QR 코드의 경우 최소 감지 거리는 0.25미터에서 0.5미터까지입니다. 가장 먼 코드는 약 0.5m에서 가장 작은 코드의 경우 약 0.5m에서 더 큰 코드의 경우 2미터로 이동합니다.
    • Windows Mixed Reality 크기에 대한 이러한 거리는 절반으로 줄어듭니다.
    • 더 큰 코드의 경우 추정합니다. 크기에 대한 검색 거리가 선형으로 증가합니다. 더 작은 코드의 경우 검색이 발생하지 않습니다. 4-5cm는 검색할 수 있는 가장 작은 값입니다.

    로고가 있는 QR 코드를 읽을 수 없는 이유는 무엇인가요?

    현재 로고가 있는 QR 코드는 지원되지 않습니다.

    QR 코드가 검색되므로 데이터가 없는 이유는 무엇인가요?

    • 플랫폼에서 QR 코드를 디코딩할 수 없는 경우 데이터가 없습니다. 스트림을 사용하고 오픈 소스 코드를 사용하여 데이터를 해석할 수 있습니다.
    • 구조 추가와 같은 일부 기능은 지원되지 않습니다.

    자세한 내용은 지원되는 QR 코드 버전을 참조하세요.

    QR 코드는 '공간' 수준 또는 앱 수준에서 저장되는가?

    QR 코드는 드라이버 세션의 시스템 수준 또는 HoloLens의 부팅 세션에 저장됩니다. 자세한 내용은 QR 코드 데이터 관리를 참조하세요.

    기본 플랫폼에서는 어떻게 작동하나요? 그들은 어디에 유지합니까?

    검색된 QR 코드는 드라이버가 메모리에 유지합니다.

    "Microsoft.MixedReality.QR.pdb찾을 수 없음" 오류 메시지가 표시되면 Visual Studio에서 앱을 디버그할 어떻게 할까요? 있나요?

    포함된 모듈 목록에 지정되지 않았기 때문에 기호 로드 Microsoft.MixedReality.QR.dll 를 건너뛰었다.

    재현하려면

    다음 단계에 따라 이 동작을 재현합니다.

    1. Microsoft.MixedReality.QR(NuGet) 및 MRTK 설치
    2. 디버그 시도

    Microsoft.MixedReality.QR.dll 사용하여 앱을 디버그할 수 있지만 DLL을 찾을 수 없습니다.

    Microsoft.MixedReality.QR.pdb를 찾을 수 없음 오류 메시지

    다음 릴리스에 기호를 추가하는 작업을 진행 중입니다. 그 동안 Visual Studio 옵션에서 DLL을 제외하여 앱을 디버그할 수 있어야 합니다.

    Visual Studio 옵션에서 DLL 제외

    자세한 내용은 Visual Studio의 설정 구성을 참조하세요.

    세션에서 스캔할 수 있는 QR 코드 수에 제한이 있나요?

    10분 이내에 드라이버의 시스템 수준에서 100개의 QR 코드가 저장됩니다.

    QR 코드 다듬기 프로세스가 변경되었나요?

    20H2 이후 QR 코드 평활화 프로세스가 포즈 스무딩에서 크기 평활화로 변경되었습니다. 이전 스무딩 프로세스로 동작을 되돌리려면 새 QR 코드 포즈 데이터가 이전에 검색된 프레임의 5초 또는 10cm 이내에 감지되는 경우 부드러운 알고리즘을 적용합니다. 변환 데이터는 이전 프레임의 10%와 현재 프레임의 90%의 가중 비율을 통해 혼합됩니다.

    참조