Visão geral da janela digital

Dois novos controles de janela digital fornecem um mecanismo de panorâmica, inclinação e zoom digital para câmeras que oferecem sensores nativos de alta resolução, para que um aplicativo possa focar automaticamente seletivamente em objetos como rostos ou placas de marcação em uma sala de conferência, mantendo a fidelidade ideal do sensor da câmera.

Isso permite que os aplicativos obtenham imagens mais detalhadas desses objetos sem a necessidade de alterar as resoluções de mídia. Os controles MSXU da Janela Digital têm como alvo todo o sensor da câmera e não um pipe ou ponto de extremidade individual.

Controle de Janela Digital MSXU_CONTROL_DIGITALWINDOW

O controle MSXU da janela digital especifica o campo de visão e o zoom da câmera enquanto a câmera está transmitindo. Esse controle é um substituto potencial para Pan, Tilt e Zoom. Esse controle só se aplica enquanto a câmera estiver transmitindo ativamente.

Consulte a Seção 2.2.2.11 Controle de janela digital na especificação de extensões da Microsoft para USB Video Class 1.5 para obter detalhes.

Controle de configuração de janela digital MSXU_CONTROL_DIGITALWINDOW_CONFIG

O controle MSXU Digital Window Config especifica os limites de dimensionamento da câmera, considerando todas as resoluções disponíveis. As resoluções são independentes do tipo de mídia, portanto, dois tipos de mídia que anunciam a mesma resolução de exibição são combinados em um recurso.

Consulte a Seção 2.2.2.12 Controle de Configuração de Janela Digital na especificação de extensões da Microsoft para USB Video Class 1.5 para obter detalhes.

Visão geral da implementação

A imagem a seguir ilustra uma cena típica da sala de conferência capturada pela câmera.

Captura completa do sensor.

O sensor de imagem captura algo mais do que a imagem transmitida para o aplicativo cliente, que é mostrada na caixa delimitadora vermelha. A caixa delimitadora laranja ilustra o campo de visão capturado pela câmera, dada a proporção selecionada. Para o controle de janela digital, a caixa delimitadora padrão é essa caixa laranja. As coordenadas dadas ao longo do lado mostram os limites desta caixa. A saída do sensor é cortada e dimensionada adequadamente para a resolução da mídia de saída desta caixa.

O quadro de marcadores destacado na imagem é um objeto de interesse. Se um aplicativo quiser se concentrar nesse objeto, ele pode definir uma Janela Digital para abarcá-lo.

janela digital dimensionada recortada.

A caixa delimitadora verde é definida por meio do controle Janela Digital neste exemplo. Engloba o objeto primário de interesse, o quadro de marcação. O retângulo pode conter dados que estão fora do objeto de interesse porque o objeto pode não ser retangular ou pode não ser visto de lado ou pode não ter a mesma proporção que o tipo de mídia.

A Janela Digital mantém a proporção do formato de saída e a câmera aumenta a escala da saída do sensor para corresponder. As coordenadas especificadas são sempre relativas à caixa delimitadora padrão original.

Relação com o controle de janela digital UVC 1.5

Os novos controles MSXU de janela digital abaixo executam uma função quase idêntica à CT_DIGITAL_WINDOW_CONTROL encontrada na especificação de classe UVC 1.5 na seção 4.2.2.1.19 Controle de janela digital.

O UVC 1.5 Class specification.pdf pode ser baixado no site de especificação USB Video Class.

No entanto, existem algumas diferenças importantes.

Alongamento

O CT_DIGITAL_WINDOW_CONTROL conforme especificado permite que um aplicativo defina a janela para um conjunto arbitrário de coordenadas que são limitadas apenas pelos valores GET_MIN, GET_MAX e GET_RES. Para ajustar esse campo de visão dentro da janela de saída, esse comportamento requer que a câmera rejeite o que deveria ser legal SET_CUR solicitações ou implemente reamostragem ou reescalonamento da imagem que poderia potencialmente distorcer a imagem horizontal ou verticalmente, ou seja, alterar a proporção.

Como a distorção é provavelmente indesejável, ela pode ser evitada em uma implementação CT_DIGITAL_WINDOW_CONTROL rejeitando tais solicitações, mas em vez de o controle conter tal ambiguidade, o controle MSXU da Janela Digital mantém o campo de visão na proporção da resolução de saída. Portanto, o reescalonamento não é um recurso ou uma opção neste controle MSXU.

Auto Face-Framing

O CT_DIGITAL_WINDOW_CONTROL não tem nenhum conceito de rastreamento facial. Por outro lado, o CT_REGION_OF_INTEREST_CONTROL tem esse conceito, mas este é usado principalmente para detectar, relatar e potencialmente atualizar a região de interesse dos controles 3A. Em teoria, CT_REGION_OF_INTEREST_CONTROL poderia ser utilizado se fosse implementado como um controle do AutoUpdate, o que permitiria que um driver de câmera aproveitasse esse controle para deslocar, inclinar ou ampliar o CT_DIGITAL_WINDOW_CONTROL em sincronia.

Este novo controle permite o controle direto do rastreamento facial para ajustar o campo de visão inclinando, panorâmulo ou ampliando digitalmente para manter o máximo do rosto visível quanto for prático. Além disso, o rastreamento facial utilizado nesse controle permanece independente de qualquer região de controle de interesse.

O método de rastreamento facial depende da implementação.

Metadados por quadro

O UVC 1.5 original não tem um conceito de metadados por quadro. A Microsoft estendeu a especificação UVC para oferecer suporte a metadados incorporados nos cabeçalhos de carga útil do quadro. A habilitação desse suporte pode ser feita por meio do controle MSXU_CONTROL_METADATA.

Além disso, o CT_DIGITAL_WINDOW_CONTROL não especifica se o controle é síncrono ou assíncrono ou atualização automática. Além disso, o controle inclui informações de passo usadas para a animação da mudança pela própria câmera. Isso implica que um pan, tilt e zoom digitais podem levar uma quantidade significativa de tempo para serem concluídos. No entanto, como o controle teria sido definido para novas coordenadas, não está claro quanto tempo levaria para ser concluído e quando ou como informaria que a transição foi feita. Pior, não há informações sobre onde no campo de visão o quadro atual se origina.

Essa ambiguidade poderia ser resolvida com metadados por quadro injetados pela câmera, mas não é possível exigir que CT_DIGITAL_WINDOW_CONTROL suportem metadados por quadro diretamente, uma vez que os metadados por quadro estão além do escopo da especificação UVC.

Taxas de proporção

Não está claro ou indefinido como CT_DIGITAL_WINDOW_CONTROL lida com diferentes proporções. Para cortar o campo de visão corretamente, os valores de GET_DEF e GET_CUR relatados pelo controle UVC 1.5 precisariam ser alterados para corresponder ao aspecto atual após cada teste/confirmação. Para lidar com isso corretamente, o CT_DIGITAL_WINDOW_CONTROL deve ser um controle do AutoUpdate e o driver precisaria não armazenar em cache o resultado do GET_DEF, mas consultar esse valor novamente para cada resolução exposta pela câmera.

Essa complexidade pode criar problemas de descoberta ao tentar mapear o controle de janela digital para uma resolução específica. Talvez você não saiba com antecedência qual parte do campo de visão do sensor a câmera usaria por padrão até executar uma sonda ou confirmar em todos os tipos de mídia suportados pela câmera. Isso apresenta problemas potenciais com a descoberta de quaisquer valores de pórtico para uma determinada resolução, uma vez que eles são dependentes do campo de visão do sensor normalmente em uso por esse formato em relação ao campo de visão total disponível no sensor.

Funcionalidade

A Janela Digital está relacionada a vários controles existentes:

  • Panorâmica

  • Inclinação

  • Zoom

Se a câmera usar implementações digitais para qualquer um desses controles, eles devem alterar os valores relatados pela Janela Digital para corresponder ao mesmo campo de visão. Da mesma forma, a Janela Digital deve alterar os valores informados por esses controles. Todas as implementações digitais desses controles devem ser atualizadas umas às outras para permanecerem sincronizadas.

A Microsoft não define a relação entre esses controles e apenas que o último controle de conjunto tem precedência.

Regiões de Interesse

Como a Janela Digital altera o Campo de Visão aparente (FOV), as coordenadas selecionadas por meio de qualquer controle de região de interesse (ROI) devem ser redefinidas para seus padrões sempre que um SET for emitido para esse controle. A lista de controles de ROI atuais inclui:

  • KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_PROPERTY_ID

  • KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_CONFIGCAPS / KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_ISPCONTROL

Além disso, esses controles de Região de Interesse especificam suas regiões em relação à janela de saída, de modo que as coordenadas especificadas sejam sempre um retângulo no campo de visão atual. Como o controle da Janela Digital altera o campo de visão atual, um retângulo de Região de Interesse deve ser remapeado pela câmera para caber na Janela Digital atual. Por exemplo, se a Janela Digital atual tiver um (OriginX, OriginY) de (0,0, 0,0) e um WindowSize de 0,5 e se uma Região de Interesse de (0,0, 0,0), (0,5, 0,5) for especificada, a câmera deverá remapear o retângulo da Região de Interesse para os pixels correspondentes a (0,0, 0,0), (0,25, 0,25) no campo de visão padrão. Isso deve ser análogo e consistente com o comportamento aparente dos controles de panorâmica, inclinação e zoom com esses controles de Região de Interesse.

Streaming

Como os valores válidos da Janela Digital disponíveis dependem da proporção atual, a câmera deve ter selecionado um tipo de mídia e uma interface de streaming para impor o MinWindowSize.

Valores Informativos

O NonUpscalingWindowSize relatado também é relatado por resolução, mas é apenas informativo para o aplicativo. Esse valor informa ao aplicativo qual valor definir como WindowSize para não obter upscaling da imagem de origem. Isso permite que o aplicativo capture uma imagem nos limites do alcance de fidelidade do sensor da câmera.

Atributos de metadados

Se a câmera anunciar MSXU_CONTROL_DIGITALWINDOW, MSXU_CONTROL_DIGITALWINDOW_CONFIG e tiver definido um tamanho de buffer diferente de zero em MSXU_CONTROL_METADATA, a câmera deverá emitir o atributo MF_CAPTURE_METADATA_DIGITAL_WINDOW para cada quadro. Ele pode fornecer isso por meio de um MFT de dispositivo ou incluindo um atributo MetadataId_DigitalWindow (valor de 7) no buffer de metadados brutos. Como incluir atributos de metadados é descrito na Seção 2.2.3.1 Metadados de formato padrão da Microsoft.

Esses metadados são usados para relatar qual janela digital foi aplicada à amostra atual. Ele faz isso inicializando o KSCAMERA_METADATA_ITEMHEADER com o valor MetadataId_DigitalWindow e o tamanho da estrutura e copiando os valores OriginX, OriginY e WindowSize aplicados do controle de janela digital em uma estrutura KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING associada.

Confira também

Seção 2.2.2.11 Controle de janela digital

Seção 2.2.2.12 Controle de configuração de janela digital

Seção 2.2.3.1 Metadados de formato padrão da Microsoft

Especificação de classe de vídeo USB

KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS

KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPS

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPSHEADER

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING

KSCAMERA_METADATA_DIGITALWINDOW