Visão geral da Janela Digital

Dois novos controles da Janela Digital fornecem um mecanismo para painel digital, inclinação e zoom para câmeras que oferecem sensores nativos de alta resolução, de modo que um aplicativo possa se concentrar seletivamente em objetos como faces ou placas de marcadores 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 exibição e zoom da câmera enquanto a câmera está sendo transmitida. Esse controle é um substituto potencial para Pan, Tilt e Zoom. Esse controle só se aplica enquanto a câmera está transmitindo ativamente.

Consulte a Seção 2.2.2.11 Controle de Janela Digital nas extensões da Microsoft para a especificação da Classe de Vídeo USB 1.5 para obter detalhes.

Controle de configuração de janela digital MSXU_CONTROL_DIGITALWINDOW_CONFIG

O controle MSXU da Configuração da Janela Digital 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 uma funcionalidade.

Consulte a Seção 2.2.2.12 Controle de Configuração de Janela Digital nas extensões da Microsoft para a especificação da Classe de Vídeo USB 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.

full sensor capture.

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 exibição capturado pela câmera, considerando a taxa de proporção selecionada. Para o controle de janela digital, a caixa delimitadora padrão é essa caixa laranja. As coordenadas fornecidas ao longo do lado mostram os limites desta caixa. A saída do sensor é cortada e dimensionada adequadamente para a resolução de mídia de saída dessa caixa.

A placa de marcador chamada na imagem é um objeto de interesse. Se um aplicativo quiser se concentrar nesse objeto, ele poderá definir uma Janela Digital para englobá-lo.

digital window scaled cropped.

A caixa delimitadora verde é definida por meio do controle Janela Digital neste exemplo. Ele abrange o objeto primário de interesse, o quadro de marcadores. 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 exibido do lado ou pode não ter a mesma proporção que o tipo de mídia.

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

Relação com controle de janela digital UVC 1.5

Os novos controles MSXU da Janela Digital abaixo executam uma função quase idêntica à CT_DIGITAL_WINDOW_CONTROL encontrada na especificação da classe UVC 1.5 sob o Controle de Janela Digital da Seção 4.2.2.1.19.

A classe UVC 1.5 specification.pdf pode ser baixada no site de especificação da Classe de Vídeo USB .

No entanto, há algumas diferenças importantes.

Esticão

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

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

Face-Framing automática

O CT_DIGITAL_WINDOW_CONTROL não tem nenhum conceito de acompanhamento facial. Por outro lado, o CT_REGION_OF_INTEREST_CONTROL tem esse conceito, mas isso é 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 ele fosse implementado como um controle AutoUpdate, o que permitiria que um driver de câmera aproveitasse esse controle para pan, inclinar ou ampliar o CT_DIGITAL_WINDOW_CONTROL em sincronia.

Esse novo controle permite que o controle direto do rastreamento facial ajuste o campo de exibição inclinando, fazendo movimento panorâmico ou ampliando digitalmente para manter a maior parte do rosto visível como é prático. Além disso, o controle facial usado nesse controle permanece independente de qualquer região de controle de interesse.

O método de acompanhamento 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 dar suporte a metadados inseridos nos cabeçalhos de carga do quadro. Habilitar esse suporte pode ser feito por meio do controle MSXU_CONTROL_METADATA.

Além disso, o CT_DIGITAL_WINDOW_CONTROL não especifica se o controle é ou não síncrono ou assíncrono ou atualização automática. Além disso, o controle inclui informações de etapa usadas para a animação da alteração pela própria câmera. Isso implica que uma panela digital, inclinação e zoom podem levar um tempo significativo para serem concluídos. No entanto, como o controle teria sido definido como novas coordenadas, não está claro quanto tempo levaria para ser concluído e quando ou como relataria de volta que a transição é feita. Pior, não há informações sobre onde no campo de exibição o quadro atual é originado.

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

Proporções de Aspectos

Não está claro ou indefinido como CT_DIGITAL_WINDOW_CONTROL lida com diferentes proporções de proporções. Para cortar corretamente o campo de exibição, os valores GET_DEF e GET_CUR relatados pelo controle UVC 1.5 precisariam ser alterados para corresponder ao aspecto atual após cada investigação/confirmação. Para lidar com isso corretamente, o CT_DIGITAL_WINDOW_CONTROL deve ser um controle AutoUpdate e o driver precisaria não armazenar em cache o resultado 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 exibição do sensor a câmera usaria por padrão até executar uma investigação ou confirmação em todos os tipos de mídia compatíveis com a câmera. Isso apresenta possíveis problemas com a descoberta de valores de varanda para uma determinada resolução, pois eles dependem do campo de exibição do sensor normalmente em uso por esse formato em relação ao campo de exibição total disponível no sensor.

Funcionalidade

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

  • Panorâmica

  • Tilt

  • Zoom

Se a câmera usar implementações digitais para qualquer um desses controles, ela deverá alterar os valores relatados pela Janela Digital para corresponder ao mesmo campo de exibição. Da mesma forma, a Janela Digital deve alterar os valores relatados por esses controles. Todas as implementações digitais desses controles devem se atualizar para permanecer em sincronia.

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

Regiões de Interesse

Como a Janela Digital altera o campo de exibição aparente (FOV), as coordenadas selecionadas por meio de qualquer controle ROI (região de interesse) devem ser redefinidas para seus padrões sempre que um SET for emitido para esse controle. A lista de controles 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 relativas à janela de saída, portanto, as coordenadas especificadas são sempre um retângulo no campo de exibição atual. Como o controle Janela Digital altera o campo de exibiçã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) (0.0, 0.0) e um WindowSize de 0.5 e se uma região de interesse (0.0, 0.0), (0.5, 0.5) é especificado, a câmera deve remapear o retângulo Região de Interesse para os pixels correspondentes a (0,0, 0,0), (0,25, 0,25) no campo de exibição padrão. Isso deve ser análogo e consistente com o comportamento aparente dos controles de painel, 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 taxa de proporção atual, a câmera deve ter selecionado um tipo de mídia e uma interface de streaming para que ele imponha 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 nenhum upscaling da imagem de origem. Isso permite que o aplicativo capture uma imagem nos limites do intervalo de fidelidade do sensor de 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 dispositivo MFT ou incluindo um atributo MetadataId_DigitalWindow (valor de 7) no buffer de metadados brutos. Como incluir atributos de metadados é descrito ainda mais na Seção 2.2.3.1 Microsoft Standard-format Metadados.

Esses metadados são usados para relatar qual janela digital foi aplicada ao exemplo 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 da 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