¿ARKit diferencias intrínsecas entre retrato y paisaje?

Estoy implementando el seguimiento de marcadores para ARKit usando OpenCV (usando ARuco) y veo buenos resultados cuando hago la orientación vertical de la camera, pero una ligera compensación al hacer el paisaje.

Marcadores ARuco en posiciones conocidas:

Patrón ARuco

La detección en modo vertical funciona:

Marcadores de retrato

En orientación horizontal, la detección muestra un desplazamiento:

Marcadores de paisaje

En detalle lo que estoy haciendo:

  • Para cada ARFrame haga lo siguiente:
  • Obtenga CVPixelBuffer height, width, baseaddress y height, width, baseaddress en cv::Mat
  • Ejecutar detección de marcadores y estimación de pose ( cv::aruco::detectMarkers , cv::aruco::estimatePoseSingleMarkers ) utilizando intrínseca de ARFrame .
    • Es necesario transponer el intrínseco para la columna de ARKit, principal a la matriz de OpenCV, el almacenamiento principal de la matriz.
    • OpenCV rvec y tvec se convierten en una transformación 4×4 usando cv::Rodrigues y luego se convierten de OpenCV a espacio de coorderadas OpenGL mediante diag(1,-1,-1,1) * transform
    • El resultado se convierte de nuevo de una fila a la principal de una columna y es la transformación del marcador en el espacio de la camera.
  • Multiplicar la transformación con la transformación ARCameras da el plano del marcador en las coorderadas del mundo, que visualizo como un rectángulo verde.

Mis preguntas:

  • ¿Me estoy perdiendo algo?
  • ¿Debería frame.displayTransform reproducir cualquier parte de la conversión?
  • ¿Por qué cambia el intrínseco al girar el dispositivo? ancho y alto del búfer de píxeles no cambian.
  • ¿Alguna otra idea?

Actualización 25.07.2017:

  • ¡Me di count de esto! ¡Este es un error de Apple! Estropearon los aspectos intrínsecos entre UIInterfaceOrientation.landscapeLeft y landscapeRight. Si almacena en caching estos valores y los intercambia, todo funciona bien.
  • iOS 11 Beta 4 no cambia nada
  • Estoy manteniendo esta pregunta abierta, hasta que Apple la resuelva (ID de error 33519315 en Radar).

Actualización 14.09.2017:

  • Apple cerró el error y dijo que todo estaba correcto. No estoy seguro de que sean correctas, pero potencialmente es realmente un problema entre OpenCV y ARKit.