Testes de câmera ITS

Esta página oferece uma lista abrangente dos testes do Conjunto de Testes de Imagem da Câmera (ITS, na sigla em inglês), que faz parte do Verificador do Conjunto de Teste de Compatibilidade (CTS, na sigla em inglês) do Android. Os testes do ITS são funcionais, ou seja, eles não medem a qualidade da imagem, mas sim se todas as funções anunciadas da câmera estão funcionando como esperado. Este documento permite que desenvolvedores e testadores entendam o que os testes individuais fazem e como depurar falhas de teste.

Os testes do ITS são atualizados ou adicionados a cada versão do Android, conforme detalhado nas notas da versão do Camera ITS para essa versão do Android. As atualizações são motivadas por bugs relatados por usuários ou desenvolvedores. As adições são motivadas por bugs relatados por usuários ou desenvolvedores e pela validação do comportamento correto de novos recursos do framework da câmera.

No Android 17 e versões mais recentes, os testes do ITS da câmera são divididos em duas atividades no CTS Verifier para permitir a execução paralela e reduzir o tempo de teste: uma atividade para testes feature_combination e sensor_fusion e outra para todos os outros testes. Para mais informações, consulte Como reduzir o tempo de teste.

O ITS da câmera restringe os testes de acordo com as propriedades necessárias da câmera, o nível da API e o nível da classe de desempenho de mídia (MPC, na sigla em inglês). Para o nível da API, o ITS usa ro.product.first_api_level para controlar os testes adicionados em um nível específico da API que testam experiências negativas do usuário para funcionalidades em níveis mais baixos da API. O ITS usa ro.vendor.api_level para controlar testes de recursos adicionados em um nível de API específico que exigem uma nova capacidade de hardware. Se ro.odm.build.media_performance_class estiver definido para um dispositivo, o ITS vai exigir que testes específicos sejam executados, dependendo do nível de MPC.

Os testes são agrupados por cena nas seguintes seções:

Cenas de teste em tablets

  • scene0:captura metadados, instabilidade, giroscópio e vibração
  • scene1:exposição, sensibilidade, compensação do valor de exposição (EV), YUV x JPEG e RAW
  • scene2:detecção facial, testes que exigem cenas coloridas
  • scene3:melhoria de borda, movimento da lente
  • scene4:proporção, corte, campo de visão
  • scene6: Zoom
  • scene7:interruptor de várias câmeras
  • scene8:medição de região de exposição automática (AE) e balanço de branco automático (AWB)
  • scene9: compactação JPEG
  • scene_extensions:extensões de câmera
  • scene_tele:troca de lente telefoto
  • scene_video: Quedas de frame

Cenas de teste baseadas em sensor_fusion / equipamento Gen2

Cena de teste baseada em difusor

  • scene5:sombreamento de lente

Cena de teste baseada em tablet com ampla gama de cores

Consulte as seções individuais para ver uma descrição de cada cena.

Cenas de teste em tablets

scene0

Os testes não exigem informações específicas da cena. No entanto, o smartphone precisa estar parado para os testes de giroscópio e vibração.

test_jitter

Mede o jitter nos carimbos de data/hora da câmera.

APIs testadas:

Aprovado:há um delta de pelo menos 30 ms entre os frames.

Na figura a seguir, observe o pequeno intervalo do eixo y. O jitter é pequeno nesse gráfico.

test_jitter plot

Figura 1.Gráfico test_jitter.

test_metadata

Testa a validade das entradas de metadados, analisando os resultados de captura e os objetos de características da câmera. Esse teste usa valores de exposição e ganho de auto_capture_request porque o conteúdo da imagem não é importante. Esse é um teste de falha rápida, porque é executado em pouco tempo, requer configuração mínima e sinaliza um número significativo de testes que falham no downstream. O pacote de testes inteiro não deve ser executado até que test_metadata seja aprovado.

APIs testadas:

Aprovado:o nível de hardware, as tags rollingShutterSkew, frameDuration, timestampSource, croppingType, blackLevelPattern, pixel_pitch, o campo de visão (FoV) e a distância hiperfocal estão presentes e têm valores válidos.

test_request_capture_match

Testa se o dispositivo grava os valores corretos de exposição e ganho lendo os metadados de captura. Esse é um teste de falha rápida, porque requer uma configuração mínima e sinaliza um número significativo de testes que falham no downstream. O pacote de testes inteiro não deve ser executado até que test_request_capture_match seja aprovado.

APIs testadas:

Aprovado:os valores de metadados de solicitação e captura correspondem em todas as fotos.

test_sensor_events

Para dispositivos que anunciam suporte à fusão de sensores, esse teste verifica se o dispositivo consulta e imprime eventos de sensor. Os sensores esperados são acelerômetro, giroscópio e magnetômetro. Esse teste só funciona se a tela estiver ligada, ou seja, se o dispositivo não estiver no modo de espera. Esse é um teste de falha rápida, porque é executado em pouco tempo, requer configuração mínima e sinaliza a falha do teste de fusão de sensores downstream. Os testes de cena sensor_fusion não devem ser executados, a menos que test_sensor_events seja PASS ou SKIP.

APIs testadas:

Aprovação:os eventos de cada sensor são recebidos.

test_solid_color_test_pattern

Testa se os padrões de teste de cor sólida são gerados corretamente para o silenciamento da câmera. Se a câmera puder ser desativada, os padrões de teste de cor sólida também precisam ser aceitos. Se o silenciamento da câmera não for compatível, os padrões de teste de cor sólida serão testados apenas se o recurso for anunciado.

Se houver suporte para imagens brutas, a atribuição de cores também será testada. As cores testadas são preto, branco, vermelho, azul e verde. Para câmeras que não são compatíveis com imagens RAW, apenas o preto é testado.

APIs testadas:

Aprovação:os padrões de teste sólidos compatíveis têm a cor correta e há pouca variação na imagem.

test_test_pattern

Testa o parâmetro android.sensor.testPatternMode para capturar frames para cada padrão de teste válido e verifica se os frames são gerados corretamente para cores sólidas e barras de cores. Esse teste inclui as seguintes etapas:

  1. Captura imagens para todos os padrões de teste compatíveis.
  2. Realiza uma verificação de correção para o padrão de teste de cor sólida e as barras de cores.

APIs testadas:

Aprovado:os padrões de teste compatíveis são gerados corretamente.

Exemplo de test_test_patterns

Figura 2.Exemplo de test_test_patterns.

test_tonemap_curve

Testa a conversão do padrão de teste de RAW para YUV com mapa de tons linear. Esse teste requer que android.sensor.testPatternMode = 2 (COLOR_BARS) gere um padrão de imagem perfeito para a conversão de mapeamento de tons. Verifica se o pipeline tem saídas de cores adequadas com mapa de tons linear e entrada de imagem ideal (depende de test_test_patterns).

APIs testadas:

Aprovado:o YUV e o RAW são semelhantes.

Exemplo bruto de test_tonemap_curve

Figura 3.Exemplo bruto de test_tonemap_curve.

Exemplo de YUV test_tonemap_curve

Figura 4.Exemplo de YUV de test_tonemap_curve.

test_unified_timestamp

Testa se os eventos de imagem e do sensor de movimento estão no mesmo domínio de tempo. Esse é um teste de falha rápida, porque é executado em pouco tempo, requer configuração mínima e sinaliza a falha do teste de fusão de sensores downstream. Os testes de cena sensor_fusion não devem ser executados, a menos que test_unified_timestamp seja PASS ou SKIP.

APIs testadas:

Aprovado:os carimbos de data/hora de movimento estão entre os dois carimbos de data/hora de imagem.

test_vibration_restriction

Testa se a vibração do dispositivo está funcionando como esperado.

APIs testadas:

Aprovação:o dispositivo não vibra quando silenciado pela API de restrição de áudio da câmera.

scene1_1

scene1 é um gráfico cinza. O gráfico cinza precisa cobrir os 30% centrais do campo de visão da câmera. O gráfico cinza deve desafiar moderadamente o 3A (AE, AWB e AF), já que a região central não tem recursos. No entanto, a solicitação de captura especifica toda a cena, que inclui recursos suficientes para que o 3A convirja.

As câmeras RFoV podem ser testadas no equipamento de teste WFoV ou RFoV. Se uma câmera RFoV for testada no equipamento de teste WFoV, o gráfico será dimensionado em 2/3 para especificar alguns limites para o gráfico cinza no FoV para ajudar o 3A a convergir. Para descrições mais detalhadas dos equipamentos de teste de câmera, consulte Camera ITS-in-a-box.

Exemplo de scene1

Figura 5. Gráfico de cena 1 em tamanho normal (à esquerda) e gráfico em escala de 2/3 (à direita).

test_ae_precapture_trigger

Testa a máquina de estado de AE ao usar o gatilho de pré-captura. Captura cinco solicitações manuais com a AE desativada. A última solicitação tem um gatilho de pré-captura de AE, que precisa ser ignorado porque a AE está desativada.

APIs testadas:

Aprovado:o AE converge.

test_auto_vs_manual

Os testes que capturaram fotos automáticas e manuais têm a mesma aparência.

APIs testadas:

Aprovação:os ganhos e a transformação do balanço de branco manual informados em cada resultado de captura correspondem ao balanço de branco automático estimate do algoritmo 3A da câmera.

Exemplo automático de test_auto_vs_manual

Figura 6.Exemplo de test_auto_vs_manual auto.

Exemplo de balanço de branco test_auto_vs_manual

Figura 7.Exemplo de balanço de branco test_auto_vs_manual.

Exemplo de transformação de balanço de branco manual test_auto_vs_manual

Figura 8.Exemplo de transformação de balanço de branco manual test_auto_vs_manual.

test_black_white

Testa se o dispositivo produz imagens totalmente em preto e branco. Faz duas capturas, a primeira com ganho extremamente baixo e exposição curta, o que resulta em uma foto preta, e a segunda com ganho extremamente alto e longa exposição, o que resulta em uma foto branca.

APIs testadas:

Aprovado:produz imagens em preto e branco. Os canais saturados de imagens brancas têm valores RGB de [255, 255, 255] com uma margem de erro de menos de 1% de diferença.

test_black_white, exemplo preto

Figura 9.test_black_white, exemplo preto.

Exemplo de transformação de balanço de branco manual test_auto_vs_manual

Figura 10.test_black_white, exemplo branco.

Exemplo de média de gráfico test_black_white

Figura 11.test_black_white, exemplo de médias de gráfico.

test_burst_capture

Verifica se todo o pipeline de captura consegue acompanhar a velocidade da captura em tamanho real e o tempo de CPU.

APIs testadas:

Aprovado:captura uma sequência de imagens em tamanho real, verifica se há quedas de frames e o brilho da imagem.

test_burst_sameness_manual

Tira cinco sequências de 50 imagens com a configuração de captura manual e verifica se elas são idênticas. Use esse teste para identificar se há frames esporádicos que são processados de maneira diferente ou têm artefatos.

APIs testadas:

Aprovado:as imagens são idênticas visualmente e nos valores RGB.

Falha:mostra um pico ou uma queda no gráfico de média RGB no início de cada sequência

  • A tolerância é de 3% para first_API_level < 30
  • A tolerância é de 2% para first_API_level >= 30

test_burst_sameness_manual_mean

Figura 12.Exemplo de média de test_burst_sameness_manual.

test_burst_sameness_manual_plot_means

Figura 13.test_burst_sameness_manual_plot_means

test_crop_region_raw

Testa se os streams RAW não podem ser cortados.

APIs testadas:

Aprovado:as imagens YUV são cortadas no centro, mas as imagens RAW não.

Exemplo de corte RAW de comp test_crop_region_raw

Figura 14.Exemplo de corte RAW de comp test_crop_region_raw.

Exemplo completo de test_crop_region_raw comp raw

Figura 15.Exemplo completo de comp raw de test_crop_region_raw.

Exemplo de corte YUV de comp test_crop_region_raw

Figura 16.Exemplo de corte YUV de comp test_crop_region_raw.

Exemplo de test_crop_region_raw_yuv_full

Figura 17.Exemplo completo de YUV de test_crop_region_raw.

test_crop_regions

Testa se as regiões de corte funcionam. Usa uma imagem completa e cria patches de cinco regiões diferentes (cantos e centro). Tira fotos com o corte definido para as cinco regiões. Compara os valores da imagem de patch e de corte.

APIs testadas:

Aprovado:a imagem da região cortada corresponde ao patch que corresponde à imagem de corte.

test_ev_compensation

Testa se a compensação do valor de exposição (EV, na sigla em inglês) é aplicada. O teste consiste em uma seção básica e uma avançada.

A seção básica testa se a compensação de EV é aplicada usando um intervalo criado com CONTROL_AE_COMPENSATION_STEP. Oito frames são capturados em cada valor de compensação.

A seção avançada aumenta a exposição em oito etapas e verifica o brilho medido em relação ao brilho esperado. Os valores esperados são calculados com base no brilho da imagem sem compensação de EV aplicada, e o valor esperado é saturado se os valores calculados excederem o intervalo de valores reais da imagem. O teste falhará se os valores esperados e medidos não corresponderem ou se as imagens forem superexpostas em cinco etapas.

APIs testadas:

Aprovação na seção básica:as imagens mostram um aumento na exposição sem superexposição em cinco etapas.

test_ev_compensation_basic

Figura 18.test_ev_compensation_basic.

Aprovação da seção avançada:captura um aumento na luma à medida que a configuração de compensação de EV aumenta. Os oito frames capturados para cada configuração de compensação de EV têm valores de luma estáveis.

test_ev_compensation_advanced_plot_means

Figura 19: test_ev_compensation_advanced_plot_means.

test_exposure_x_iso

Testa se uma exposição constante é alcançada conforme o ISO e o tempo de exposição variam. Tira uma série de fotos com ISO e tempo de exposição escolhidos para se equilibrarem. Os resultados precisam ter o mesmo brilho, mas, ao longo da sequência, a imagem precisa ficar mais ruidosa. Verifica se os valores médios de pixel de amostra estão próximos uns dos outros. Verifica se as imagens não estão fixadas em 0 ou 1 (o que as faria parecer linhas retas). O teste também pode ser executado com imagens RAW definindo a flag debug no arquivo de configuração.

APIs testadas:

Aprovado:as imagens têm o mesmo brilho, mas ficam mais ruidosas com um ISO mais alto. Os planos RGB são planos quando o valor de ISO*exposição é constante no espaço de ganho testado.

Mecanismo de falha:na figura a seguir, à medida que os valores do multiplicador de ganho (eixo x) aumentam, os valores médios do plano RGB normalizado (eixo y) começam a se desviar dos valores baixos do multiplicador de ganho.

test_exposure_plot_means

Figura 20: test_exposure_plot_means.

test_exposure_mult=1.00.jpg

Figura 21: test_exposure_mult=1,00.

test_exposure_mult=64.00

Figura 22.test_exposure_mult=64.00.

test_latching

Testa se as configurações (exposição e ganho) se fixam no frame certo para câmeras FULL e LEVEL_3. Tira uma série de fotos usando solicitações consecutivas, variando os parâmetros de solicitação de captura entre as fotos. Verifica se as imagens têm as propriedades esperadas.

APIs testadas:

Aprovado:as imagens [2, 3, 6, 8, 10, 12, 13] têm ISO ou exposição maiores e aparecem com médias de RGB mais altas no gráfico da figura a seguir.

Exemplo de médias de gráfico de test_latching

Figura 23.Exemplo de médias do gráfico test_latching.

test_latching i=00

Figura 24.test_latching i=00.

test_latching i=01

Figura 25.test_latching i=01.

test_latching i=02

Figura 26.test_latching i=02.

test_latching i=03

Figura 27.test_latching i=03.

test_latching i=04

Figura 28.test_latching i=04.

test_latching i=05

Figura 29.test_latching i=05.

test_latching i=06

Figura 30.test_latching i=06.

test_latching i=07

Figura 31.test_latching i=07.

test_latching i=08

Figura 32.test_latching i=08.

test_latching i=09

Figura 33.test_latching i=09.

test_latching i=10

Figura 34.test_latching i=10.

test_latching i=11

Figura 35.test_latching i=11.

test_latching i=12

Figura 36.test_latching i=12.

test_linearity

Testa se o processamento do dispositivo pode ser invertido para pixels lineares. Captura uma sequência de fotos com o dispositivo apontado para um alvo uniforme.

APIs testadas:

Aprovado:os valores de R, G e B precisam aumentar linearmente com o aumento da sensibilidade.

Exemplo de médias do gráfico test_linearity

Figura 37: exemplo de médias do gráfico test_linearity.

test_locked_burst

Testa o bloqueio 3A e a sequência YUV (usando a configuração automática). Esse teste foi projetado para ser aprovado mesmo em dispositivos limitados que não têm MANUAL_SENSOR ou PER_FRAME_CONTROLS. O teste verifica a consistência da imagem YUV, enquanto a verificação do frame rate está no CTS.

APIs testadas:

Aprovado:as capturas parecem consistentes.

Exemplo de test_locked_burst frame0

Figura 38.Exemplo de frame0 de test_locked_burst.

Exemplo de test_locked_burst frame1

Figura 39.Exemplo de frame 1 de test_locked_burst.

test_locked_burst_frame2

Figura 40.Exemplo de frame2 de test_locked_burst.

scene1_2

scene 1_2 é uma cópia funcionalmente idêntica de scene 1_1, que implementa uma estrutura de subcena para reduzir a duração estendida de scene 1.

test_param_color_correction

Testa se os parâmetros android.colorCorrection.* são aplicados quando definidos. Tira fotos com diferentes valores de transformação e ganho e testa se elas parecem correspondentemente diferentes. A transformação e os ganhos são escolhidos para tornar a saída cada vez mais vermelha ou azul. Usa um mapa de tons linear.

O mapeamento de tons é uma técnica usada no processamento de imagens para mapear um conjunto de cores para outro, aproximando a aparência de imagens de High Dynamic Range em um meio que tem um intervalo dinâmico mais limitado.

APIs testadas:

Aprovado:os valores de R e B aumentam de acordo com a transformação.

Exemplo de médias de gráfico de test_param_color_correction

Figura 41.Exemplo de médias do gráfico test_param_color_correction.

Nas figuras a seguir, o eixo x representa as solicitações de captura: 0 = unidade, 1 = reforço de vermelho e 2 = reforço de azul.

test_param_color_correction req=0 unity example

Figura 42.Exemplo de unity de test_param_color_correction req=0.

test_param_color_correctness req=1 red boost example

Figura 43.Exemplo de aumento de vermelho de test_param_color_correctness req=1.

Exemplo de aumento de azul req=2 de test_param_color_correction

Figura 44.Exemplo de test_param_color_correction req=2 com aumento de azul.

test_param_flash_mode

Testa se o parâmetro android.flash.mode é aplicado. Define manualmente a exposição para o lado escuro, de modo que seja óbvio se o flash foi disparado ou não, e usa um mapa de tons linear. Verifica o centro com a imagem do bloco para ver se há um gradiente grande criado para verificar se o flash foi disparado.

APIs testadas:

Aprovado:o centro da imagem do bloco tem um gradiente grande, o que significa que o flash foi disparado.

Exemplo de test_param_flash_mode 1

Figura 45.Exemplo de test_param_flash_mode 1.

Exemplo de bloco test_param_flash_mode 1

Figura 46.Exemplo de um bloco de test_param_flash_mode.

Exemplo de test_param_flash_mode_2

Figura 47.Exemplo de test_param_flash_mode 2.

Exemplo de bloco test_param_flash_mode 2

Figura 48.Exemplo de dois blocos de test_param_flash_mode.

test_param_noise_reduction

Testa se o parâmetro android.noiseReduction.mode é aplicado corretamente quando definido. Captura imagens com a câmera em ambientes com pouca luz. Usa um alto ganho analógico para garantir que a imagem capturada tenha ruído. Captura três imagens, para NR desativada, rápida e de alta qualidade. Também captura uma imagem com baixo ganho e NR desativada e usa a variância dela como referência. Quanto maior a relação sinal-ruído (SNR), melhor a qualidade da imagem.

APIs testadas:

Aprovação:a SNR varia de acordo com os diferentes modos de redução de ruído e se comporta de maneira semelhante ao gráfico a seguir:

Exemplo de SNRs do gráfico test_param_noise_reduction

Figura 49.Exemplo de SNRs do gráfico test_param_noise_reduction.

0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL

Exemplo de test_param_noise_reduction high gain nr=0

Figura 50.Exemplo de test_param_noise_reduction high gain nr=0.

Exemplo de test_param_noise_reduction high gain nr=1

Figura 51.Exemplo de test_param_noise_reduction com ganho alto e nr=1.

Exemplo de test_param_noise_reduction high gain nr=2

Figura 52.Exemplo de test_param_noise_reduction com nr=2 de alto ganho.

Exemplo de test_param_noise_reduction high gain nr=3

Figura 53.Exemplo de test_param_noise_reduction com nr=3 de alto ganho.

Exemplo de ganho baixo de test_param_noise_reduction

Figura 54.Exemplo de ganho baixo de test_param_noise_reduction.

test_param_shading_mode

Testa se o parâmetro android.shading.mode é aplicado.

APIs testadas:

Aprovação:os modos de sombreamento são alternados, e os mapas de sombreamento de lente são modificados conforme esperado.

Exemplo de mapa de sombreamento de lente test_param_shading_mode, modo 0, loop 0

Figura 55.Mapa de sombreamento de lente test_param_shading_mode, exemplo de loop 0 do modo 0.

Exemplo de mapa de sombreamento de lente test_param_shading_mode, modo 1, loop 0

Figura 56.Exemplo de mapa de sombreamento de lente test_param_shading_mode, modo 1, loop 0.

Exemplo de mapa de sombreamento de lente test_param_shading_mode, modo 2, loop 0

Figura 57.Exemplo de mapa de sombreamento de lente test_param_shading_mode, modo 2, loop 0.

test_param_tonemap_mode

Testa se o parâmetro android.tonemap.mode é aplicado. Aplica diferentes curvas de mapa de tons a cada canal R, G, B e verifica se as imagens de saída são modificadas conforme o esperado. Esse teste consiste em dois testes, test1 e test2.

APIs testadas:

Pass:

  • test1: as duas imagens têm um mapa de tons linear, mas n=1 tem um gradiente mais íngreme. O canal G (verde) é mais brilhante para a imagem n=1.
  • test2: mesmo mapa de tons, mas com duração diferente. As imagens são iguais.

test_param_tonemap_mode com n=0

Figura 58.test_param_tonemap_mode com n=0.

test_param_tonemap_mode com n=1

Figura 59.test_param_tonemap_mode com n=1.

test_post_raw_sensitivity_boost

Verifica o aumento da sensibilidade bruta do post. Captura um conjunto de imagens brutas e YUV com sensibilidade diferente, publica a combinação de aumento de sensibilidade bruta e verifica se a média de pixels de saída corresponde às configurações de solicitação.

APIs testadas:

Aprovado:as imagens brutas ficam mais escuras à medida que o aumento é intensificado, enquanto o brilho das imagens YUV permanece constante.

test_post_raw_sensitivity_boost raw s=3583 boost=0100 example

Figura 60.Exemplo de test_post_raw_sensitivity_boost raw s=3583 boost=0100.

Exemplo de test_post_raw_sensitivity_boost raw s=1792 boost=0200

Figura 61.Exemplo de test_post_raw_sensitivity_boost raw s=1792 boost=0200.

test_post_raw_sensitivity_boost raw s=0896 boost=0400 example

Figura 62.Exemplo de test_post_raw_sensitivity_boost raw s=0896 boost=0400.

test_post_raw_sensitivity_boost raw s=0448 boost=0800 example

Figura 63.Exemplo de test_post_raw_sensitivity_boost raw s=0448 boost=0800.

test_post_raw_sensitivity_boost raw s=0224 boost=1600 example

Figura 64.Exemplo de test_post_raw_sensitivity_boost raw s=0224 boost=1600.

test_post_raw_sensitivity_boost raw s=0112 boost=3199 example

Figura 65.Exemplo de test_post_raw_sensitivity_boost raw s=0112 boost=3199.

Exemplo de médias de gráfico bruto de test_post_raw_sensitivity_boost

Figura 66: exemplo de médias do gráfico bruto de test_post_raw_sensitivity_boost.

Exemplo de test_post_raw_sensitivity_boost YUV s=0112 boost=3199

Figura 67.Exemplo de test_post_raw_sensitivity_boost YUV s=0112 boost=3199.

test_post_raw_sensitivity_boost YUV s=0448 boost=0800 example

Figura 68.Exemplo de test_post_raw_sensitivity_boost YUV s=0448 boost=0800.

Exemplo de test_post_raw_sensitivity_boost YUV s=0896 boost=0400

Figura 69.Exemplo de test_post_raw_sensitivity_boost YUV s=0896 boost=0400.

test_post_raw_sensitivity_boost YUV s=1792 boost=0200 example

Figura 70.Exemplo de test_post_raw_sensitivity_boost YUV s=1792 boost=0200.

Exemplo de test_post_raw_sensitivity_boost YUV s=3585 boost=0100

Figura 71.Exemplo de test_post_raw_sensitivity_boost YUV s=3585 boost=0100.

test_post_raw_sensitivity_boost_yuv_plot_means

Figura 72.Exemplo de test_post_raw_sensitivity_boost_yuv_plot_means.

test_raw_exposure

Captura um conjunto de imagens brutas com tempo de exposição crescente e mede os valores de pixel.

APIs testadas:

Aprovado:aumentar o ISO (ganho) torna os pixels mais sensíveis à luz, então o gráfico se move para a esquerda.

Exemplo de test_raw_exposure ISO=55

Figura 73.Exemplo de test_raw_exposure ISO=55.

10⁰ é 1 ms, 10¹ é 10 ms e 10⁻¹ é 0, 1 ms.

Exemplo de test_raw_exposure ISO=132

Figura 74.Exemplo de test_raw_exposure ISO=132.

Exemplo de test_raw_exposure ISO=209

Figura 75.Exemplo de test_raw_exposure ISO=209.

Exemplo de test_raw_exposure ISO=286

Figura 76.Exemplo de test_raw_exposure ISOs=286.

Exemplo de test_raw_exposure ISO=363

Figura 77.Exemplo de test_raw_exposure ISO=363.

test_raw_exposure_s=440

Figura 78.Exemplo de test_raw_exposure ISO=440.

test_reprocess_noise_reduction

Testa se android.noiseReduction.mode é aplicado para solicitações de reprocessamento. Captura imagens reprocessadas com a câmera em um ambiente com pouca luz. Usa um ganho analógico alto para verificar se a imagem de captura tem ruído. Captura três imagens reprocessadas, para NR desativada, rápida e de alta qualidade. Captura uma imagem reprocessada com baixo ganho e NR desativada e usa a variância dela como referência.

APIs testadas:

Aprovação:FAST >= OFF, HQ >= FAST e HQ >> OFF.

Gráfico típico de SNR versus modo NR

Figura 79. Exemplo de gráfico típico de SNR versus modo NR.

test_tonemap_sequence

Testa uma sequência de fotos com diferentes curvas de mapeamento de tons. Captura três fotos manuais com um mapa de tons linear. Captura três fotos manuais com o mapeamento de tons padrão. Calcula o delta entre cada par de frames consecutivos.

APIs testadas:

Aprovado:há três frames idênticos seguidos por um conjunto diferente de três frames idênticos.

Exemplo de test_tonemap_sequence i=0

Figura 80.Exemplo de test_tonemap_sequence i=0.

Exemplo de test_tonemap_sequence i=1

Figura 81.Exemplo de test_tonemap_sequence i=1.

Exemplo de test_tonemap_sequence i=2

Figura 82.Exemplo de test_tonemap_sequence i=2.

Exemplo de test_tonemap_sequence i=3

Figura 83.Exemplo de test_tonemap_sequence i=3.

Exemplo de test_tonemap_sequence_i=4

Figura 84.Exemplo de test_tonemap_sequence i=4.

Exemplo de test_tonemap_sequence i=5

Figura 85.Exemplo de test_tonemap_sequence i=5.

test_yuv_jpeg_all

Testa se todos os tamanhos e formatos informados para captura de imagem funcionam. Usa uma solicitação manual com um mapa de tons linear para que o YUV e o JPEG tenham a mesma aparência quando convertidos pelo módulo image_processing_utils. As imagens não são salvas por padrão, mas podem ser salvas ativando debug_mode.

APIs testadas:

Aprovado:todos os centros de imagem têm uma diferença máxima de raiz quadrada média (RMS, na sigla em inglês) (valor de um sinal) em imagens convertidas em RGB com 3% da imagem YUV de maior resolução.

Exemplo de test_yuv_jpeg_all

Figura 86.Exemplo de test_yuv_jpeg_all.

test_yuv_plus_dng

Testa se os tamanhos e formatos informados para a captura de imagens funcionam.

APIs testadas:

Aprovado:o teste é concluído e retorna as imagens solicitadas.

Exemplo de test_yuv_plus_dng

Figura 87.Exemplo de test_yuv_plus_dng.

scene1_3

scene 1_3 é uma cópia funcionalmente idêntica de scene 1_1, que implementa uma estrutura de subcena para reduzir a duração estendida de scene 1.

test_capture_result

Testa se dados válidos são retornados em objetos CaptureResult. O teste consiste em uma captura automática, uma captura manual e uma segunda captura automática.

APIs testadas:

Aprovado:os metadados são válidos para todas as capturas, e as configurações manuais não vazam para a segunda captura automática. Plota a correção de sombreamento de lente para as capturas.

test_capture_result_plot_lsc_auto_ch0

Figura 88.test_capture_result_plot_lsc_auto_ch0.

test_dng_noise_model

Verifica se os parâmetros do modelo bruto de DNG estão corretos. O gráfico mostra a variância medida de um patch central do cartão cinza em fotos RAW capturadas em uma variedade de sensibilidades e compara esses valores com a variância esperada em cada sensibilidade pelo modelo de ruído DNG na HAL da câmera (com base nos parâmetros O,S retornados nos objetos de resultado da captura). Para mais detalhes sobre o modelo de ruído DNG, faça o download do documento a seguir sobre o modelo de ruído DNG.

APIs testadas:

Aprovado:os parâmetros do modelo bruto DNG estão corretos. Os valores RGB esperados correspondem aos valores RGB reais medidos.

test_dng_noise_model_plog

Figura 89.test_dng_noise_model_plog.

test_jpeg

Testa se as imagens YUV convertidas e as imagens JPEG do dispositivo têm a mesma aparência. O teste usa os 10% centrais da imagem, calcula o valor RGB e verifica se eles correspondem.

APIs testadas:

Aprovado:a diferença média de RGB entre cada imagem é menor que 3%.

test_jpeg_fmt=jpg.jpg

Figura 90.test_jpeg_fmt=jpg.jpg.

test_jpeg=fmt=yuv.jpg

Figura 91.test_jpeg=fmt=yuv.jpg.

test_raw_burst_sensitivity

Captura um conjunto de imagens brutas com ganhos crescentes e mede o ruído. Captura apenas em RAW, em uma sequência.

APIs testadas:

Aprovado:cada foto tem mais ruído do que a anterior, já que o ganho está aumentando.

Usa a variância da célula da grade de estatísticas central.

test_raw_burst_sensitivity_variance

Figura 92.test_raw_burst_sensitivity_variance.

test_raw_sensitivity

Captura um conjunto de imagens brutas com sensibilidades crescentes e mede o ruído (variância) nos 10% centrais da imagem. Testa se cada disparo é mais ruidoso que o anterior.

APIs testadas:

Aprovado:a variância aumenta a cada foto.

test_raw_sensitivity_variance

Figura 93: test_raw_sensitivity_variance.

test_yuv_plus_jpeg

Testa a captura de um único frame como saídas YUV e JPEG. Usa uma solicitação manual com um mapa de tons linear para que o YUV e o JPEG tenham a mesma aparência quando convertidos pelo módulo image_processing_utils.

APIs testadas:

Aprovado:as imagens YUV e JPEG são semelhantes e têm menos de 1% de diferença de RMS (valor de um sinal).

test_yuv_plus_jpeg com formato JPEG

Figura 94.test_yuv_plus_jpeg com formato JPEG.

test_yuv_plus_jpeg com formato YUV

Figura 95.test_yuv_plus_jpeg com formato YUV.

test_yuv_plus_raw

Testa a captura de um único frame como saídas brutas (brutas de 10 e 12 bits) e YUV, se houver suporte. Usa uma solicitação manual com mapa de tons linear para que os dados brutos e YUV sejam iguais. Compara os valores RGB de 10% do centro das imagens convertidas em RGB. Registrosandroid.shading.mode.

APIs testadas:

Aprovado:as imagens YUV e brutas são semelhantes e têm menos de 3,5% de diferença de RMS (valor quadrático médio de um sinal).

test_yuv_plus_raw_shading=1_raw.jpg

Figura 96.test_yuv_plus_raw_shading=1_raw.jpg.

test_yuv_plus_raw_shading=1_yuv.jpg

Figura 97.test_yuv_plus_raw_shading=1_yuv.jpg.

test_sensitivity_priority

Testa CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY em várias configurações de ISO para confirmar uma correlação entre um ISO mais alto e níveis de ruído maiores.

APIs testadas:

Aprovado:um ISO mais alto resulta em níveis de ruído maiores.

Critérios para pular testes

O teste test_sensitivity_priority.py será ignorado se qualquer um dos seguintes critérios for atendido:

test_exposure_time_priority

Testa CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY em vários tempos de exposição, verificando se há brilho estável no intervalo em que o ISO pode compensar.

APIs testadas:

Aprovado:o brilho é estável (dentro da tolerância) em todos os tempos de exposição se o ISO estiver dentro do intervalo de compensação.

Critérios para pular testes

O teste test_exposure_time_priority será ignorado se qualquer um dos seguintes critérios for atendido:

scene2_a

scene2_a tem três rostos com fundo cinza e roupas neutras. Os rostos são escolhidos para ter uma ampla variedade de tons de pele. O gráfico precisa ter a orientação correta para que a detecção facial funcione de maneira ideal.

Exemplo de scene2_a

Figura 98.Exemplo de scene2_a.

test_autoframing

Testa o comportamento de enquadramento automático do dispositivo de câmera. Aplica um zoom grande para que nenhum dos rostos na cena fique visível, ativa o modo de enquadramento automático definindo AUTOFRAMING em CaptureRequest como True e verifica se todos os rostos na cena original podem ser detectados quando o estado converge (ou seja, quando AUTOFRAMING_STATE em CaptureResult é definido como AUTOFRAMING_STATE_CONVERGED).

APIs testadas:

Aprovado:os três rostos são detectados.

test_display_p3

Testa a captura de Display P3 em JPEG usando a API ColorSpaceProfiles. Testa se o JPEG capturado tem um perfil ICC adequado no cabeçalho e se a imagem contém cores fora da gama sRGB.

APIs testadas:

Aprovado:o JPEG contém um perfil ICC Display P3 e cores fora da gama sRGB.

test_effects

Captura frames para efeitos de câmera compatíveis e verifica se eles são gerados corretamente. O teste verifica apenas os efeitos OFF e MONO, mas salva imagens para todos os efeitos compatíveis.

APIs testadas:

Pass:captura a imagem da cena com os efeitos OFF e uma imagem monocromática com os efeitos definidos como MONO.

test_effects_MONO

Figura 99.test_effects_MONO.

test_exposure_keys_consistent

Esse teste compara a luma média de uma captura com AE ativada com uma captura com AE desativada que aplica manualmente os parâmetros de exposição (sensibilidade, tempo de exposição, duração do frame, aumento de sensibilidade pós-raw) recebidos no CaptureResult da captura com AE ativada.

APIs testadas:

Aprovado:a diferença relativa de luma entre as duas capturas é menor que 4%.

test_format_combos

Testa diferentes combinações de formatos de saída.

APIs testadas:

Aprovado:todas as combinações foram capturadas.

test_num_faces

Testa a detecção facial.

APIs testadas:

Aprovado:encontra três rostos.

Exemplo de modo de detecção facial 1 de test_num_faces

Figura 100.Exemplo do modo 1 de detecção facial test_num_faces.

test_reprocess_uv_swap

Testa se o reprocessamento de YUV não troca os planos U e V. Isso é detectado calculando a soma das diferenças absolutas (SAD, na sigla em inglês) entre a imagem reprocessada e uma captura não reprocessada. Se a troca dos planos de saída U e V da captura reprocessada resultar em um SAD maior, presume-se que a saída tenha os planos U e V corretos.

APIs testadas:

Aprovado:os planos U e V não são trocados.

test_reprocess_uv_swap

Figura 101.Exemplo de test_reprocess_uv_swap.

scene2_b

scene2_b tem três rostos com fundo cinza e roupas neutras. Os rostos são escolhidos para ter uma ampla variedade de tons de pele. O gráfico precisa ter a orientação correta para que a detecção facial funcione de maneira ideal.

test_preview_num_faces

Testa a detecção facial em pré-lançamento com maior diversidade de tons de pele em cenas com rostos.

APIs testadas:

Aprovado:encontra três rostos com pontos de referência nas caixas delimitadoras.

test_num_faces_fd_mode_1

Figura 102. Exemplo do modo 1 de detecção facial test_num_faces.

test_yuv_jpeg_capture_sameness

Captura duas imagens usando os maiores formatos comuns YUV e JPEG com a mesma proporção do maior formato JPEG que não exceda uma resolução de 1920 x 1440. Define jpeg.quality como 100 e captura uma solicitação de superfície dupla. Converte as duas imagens em matrizes RGB e calcula a diferença da raiz quadrada média (RMS, na sigla em inglês) 3D entre as duas imagens.

Além disso, esse teste verifica se as saídas YUV para todos os casos de uso de stream compatíveis são razoavelmente semelhantes ao YUV com o caso de uso STILL_CAPTURE.

APIs testadas:

Aprovação:as imagens YUV e JPEG para o caso de uso STILL_CAPTURE têm menos de 3% de diferença de RMS (valor quadrático médio de um sinal). As imagens YUV para todos os casos de uso compatíveis têm menos de 4% de diferença de CIELAB em relação às imagens YUV com o caso de uso STILL_CAPTURE.

scene2_c

test_num_faces

Testa a detecção facial com maior diversidade de tons de pele em cenas com rostos.

APIs testadas:

Aprovado:encontra três rostos.

test_num_faces_fd_mode_1

Figura 103.Exemplo de modo de detecção facial test_num_faces.

test_jpeg_capture_perf_class

Testa a latência de captura de JPEG para a classe de desempenho S, conforme especificado na seção 2.2.7.2 Câmera do CDD.

Aprovação:PRECISA ter latência de captura JPEG da camera2 < 1.000 ms para resolução de 1080p, conforme medido pelo PerformanceTest da câmera do CTS em condições de iluminação do ITS (3.000 K) para as duas câmeras principais.

test_camera_launch_perf_class

Testa a latência de inicialização da câmera para a classe de desempenho S, conforme especificado na seção 2.2.7.2 Câmera do CDD.

Aprovação:PRECISA ter latência de inicialização da camera2 (abrir a câmera até o primeiro frame de visualização) < 600 ms, conforme medido pelo PerformanceTest da câmera do CTS em condições de iluminação do ITS (3.000 K) para as duas câmeras principais.

test_default_camera_hdr

Testa se a captura padrão da câmera é Ultra HDR para a classe de desempenho 15, conforme especificado na seção 2.2.7.2 Câmera do CDD.

Aprovação:a captura padrão do pacote de câmera PRECISA ser Ultra HDR para um dispositivo de classe de desempenho 15.

scene2_d

test_preview_num_faces

Testa a detecção facial em pré-lançamento com maior diversidade de tons de pele em cenas com rostos.

APIs testadas:

Aprovado:encontra três rostos com pontos de referência nas caixas delimitadoras.

scene2_e

test_continuous_picture

50 frames de resolução VGA são capturados com a primeira configuração da solicitação de captura android.control.afMode = 4 (CONTINUOUS_PICTURE).

APIs testadas:

Aprovado:o sistema 3A se estabiliza ao final de uma captura de 50 frames.

test_num_faces

Testa a detecção facial com maior diversidade de tons de pele em cenas com rostos.

APIs testadas:

Aprovado:encontra três rostos.

scene2_f

scene2_f tem três rostos com fundo branco e roupas brancas. Os rostos têm uma ampla variedade de tons de pele e alto contraste com o fundo.

Exemplo de scene2_f

Figura 104.Exemplo de scene2_f.

test_preview_num_faces

Testa a detecção facial com maior diversidade de tons de pele em cenas com rostos.

APIs testadas:

Aprovado:encontra três rostos com pontos de referência nas caixas delimitadoras.

test_num_faces_fd_mode_1

Figura 105.Exemplo de test_num_faces_fd_mode_1.

scene2_g

scene2_g tem três rostos de perfil com fundo e roupas brancas. Os rostos têm uma ampla variedade de tons de pele e alto contraste com o fundo.

scene2_g.png

Figura 106.Exemplo de scene2_g.

test_preview_num_faces

Testa a detecção facial com maior diversidade de tons de pele em cenas com rostos.

APIs testadas:

Aprovado:encontra três rostos com pontos de referência nas caixas delimitadoras.

test_preview_num_faces

Figura 107.Exemplo de test_preview_num_faces.

scene3

O scene3 usa o gráfico ISO12233, e a maioria dos testes usa um método de extração de gráfico para encontrar o gráfico na cena. Por isso, a maioria das imagens salvas não tem bordas como as imagens das cenas 1, 2 ou 4, apenas o gráfico. O gráfico precisa estar na orientação correta para que o localizador funcione da melhor forma. No Android 17 e versões mais recentes, o scene3 usa marcadores ArUco para detecção de gráficos.

scene3_aruco_chart

Figura 108.Gráfico da cena 3.

test_edge_enhancement

Testa se o parâmetro android.edge.mode é aplicado corretamente. Captura imagens não reprocessadas para cada modo de borda e retorna a nitidez da imagem de saída e os metadados do resultado da captura. Processa uma solicitação de captura com um determinado modo de borda, sensibilidade, tempo de exposição, distância focal e parâmetro de superfície de saída. No Android 17 e versões mais recentes, usa marcadores ArUco para definir a área do gráfico que contém as bordas nítidas necessárias.

Aprovado:o modo HQ (2) é mais nítido que o modo OFF (0). O modo FAST (1) é mais nítido que o modo OFF. Modo HQ mais nítido ou igual ao modo FAST.

APIs testadas:

Parâmetros de câmera afetados:

  • EDGE_MODE

test_edge_enhancement_edge=0

Figura 109.Exemplo de test_edge_enhancement edge=0.

Exemplo de test_edge_enhancement edge=1

Figura 110.Exemplo de test_edge_enhancement edge=1 (modo rápido).

Exemplo de test_edge_enhancement edge=2

Figura 111.Exemplo de test_edge_enhancement edge=2 (modo de alta qualidade).

test_flip_mirror

Testa se a imagem está orientada corretamente de acordo com a seção 7.5.2 Câmera frontal do CDD. No Android 17 e versões mais recentes, usa marcadores ArUco para validar a presença e a orientação do gráfico. As imagens espelhadas, invertidas ou giradas podem ser identificadas pelo recurso de diamante perto do centro.

Aprovado:todos os marcadores são detectados e alinhados corretamente. A imagem não está invertida, espelhada ou girada.

Exemplo de patch de cena test_flip_mirror

Figura 112.Exemplo de patch de cena test_flip_mirror.

test_imu_drift

Testa se a unidade de medição inercial (IMU, na sigla em inglês) tem uma saída estável por 30 segundos enquanto o dispositivo está parado e capturando uma prévia em alta definição.

APIs testadas:

Pass:

  • O desvio do giroscópio é menor que 0,01 rad durante o tempo de teste.
  • A variância da leitura do giroscópio é menor que 1E-7 rad2/s2/Hz durante o tempo de teste.
  • O desvio do vetor de rotação é menor que 0,01 rad durante o tempo de teste.
  • (Ainda não obrigatório) O desvio do giroscópio é menor que 1 grau por segundo.

Exemplo de desvio do giroscópio test_imu_drift

Figura 113.Exemplo de desvio do giroscópio test_imu_drift.

Exemplo de desvio do vetor de rotação test_imu_drift

Figura 114.Exemplo de desvio do vetor de rotação test_imu_drift.

test_landscape_to_portrait

Testa se a substituição de paisagem para retrato funciona corretamente para sensores orientados para paisagem.

APIs testadas:

Aprovado:o teste localiza um gráfico com a rotação esperada (0 grau quando a substituição de paisagem para retrato está desativada, 90 graus quando ativada).

Exemplo de test_landscape_to_portrait

Figura 115.Exemplo de test_landscape_to_portrait.

test_lens_movement_reporting

Testa se a flag de movimento da lente é informada corretamente. Captura uma sequência de 24 imagens com os primeiros 12 frames na distância de foco ideal (conforme encontrado pelo 3A) e os últimos 12 frames na distância de foco mínima. No frame 12, a lente se move, fazendo com que a nitidez caia. A nitidez se estabiliza quando a lente se move para a posição final.

A flag de movimento da lente precisa ser declarada em todos os frames em que a nitidez é intermediária à nitidez nos primeiros frames com a lente estacionária na distância focal ideal e nos últimos frames em que a lente está estacionária na distância focal mínima. O frame exato em que a lente se move não é importante. O que é importante é que a flag de movimento seja declarada quando a lente estiver se movendo.

No Android 17 e versões mais recentes, esse teste usa marcadores ArUco para definir a área do gráfico que contém as bordas nítidas necessárias. Esse método oferece uma detecção estável para câmeras de aplicativos ultra-wide (UW) a tele.

APIs testadas:

Aprovação:a flag de movimento da lente é True no frame com mudança de nitidez.

Mecanismos de falha:

  • lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) em test_log.DEBUG é declarado apenas em frames em que a nitidez não está mudando.
  • Os frames com lens_moving: False (android.hardware.camera2.CaptureResult#LENS_STATE = 0) em test_log.DEBUG têm uma diferença de nitidez em comparação com os primeiros frames na distância focal ideal ou os últimos frames na distância focal mínima.

test_reprocess_edge_enhancement

Testa se os métodos de reprocessamento compatíveis com o Reforço de Ponta funcionam corretamente. Processa uma solicitação de captura com um determinado modo de borda de reprocessamento e compara diferentes modos de captura com os modos de borda de reprocessamento desativados.

APIs testadas:

Aprovado:a nitidez dos diferentes modos de borda está correta. HQ (modo 2) é mais nítido do que OFF (modo 0), e a melhoria entre os diferentes modos é semelhante.

Exemplo de gráfico test_reprocess_edge_enhancement

Figura 116.Exemplo de gráfico de test_reprocess_edge_enhancement.

scene4

scene4 consiste em um círculo preto em um fundo branco dentro de um quadrado.

Os testes na scene4 podem ser sensíveis ao alinhamento. Portanto, a partir do Android 15, é possível usar check_alignment.py no diretório de ferramentas para ativar uma verificação do DUT e do alinhamento do gráfico.

Exemplo de scene4

Figura 117.Exemplo de scene4.

test_30_60fps_preview_fov_match

Testa se os vídeos de prévia de 30 FPS e 60 FPS têm o mesmo FoV. O teste captura dois vídeos, um com 30 QPS e outro com 60 QPS. Um frame representativo é selecionado de cada vídeo e analisado para verificar se as mudanças de FoV nos dois vídeos estão dentro das especificações. Testa se a proporção do círculo permanece constante, se o centro do círculo permanece estável e se o raio do círculo permanece constante.

APIs testadas:

Aprovado:as imagens não são esticadas, o centro delas não difere em mais de 3% e a mudança máxima na proporção entre vídeos de 30 FPS e 60 FPS não é maior que 7,5%.

Mecanismos de falha:

  • O círculo do vídeo de 30 QPS tem um tamanho significativamente diferente do vídeo de 60 QPS.
  • O círculo na imagem capturada é distorcido pelo pipeline de processamento.
  • O círculo na imagem capturada é cortado devido a uma solicitação de captura de proporção extrema que reduz a altura ou a largura da imagem.
  • O círculo na imagem capturada tem um reflexo no centro e não aparece totalmente preenchido.

test_aspect_ratio_and_crop

Testa se as imagens estão distorcidas ou cortadas de forma inesperada no pipeline de imagens. Tira fotos de um círculo em todos os formatos. Verifica se o círculo não está distorcido, se ele não se move do centro da imagem e se ele não muda de tamanho incorretamente com diferentes proporções ou resoluções.

APIs testadas:

Aprovado:as imagens não são esticadas, o centro delas não difere em mais de 3% e o FoV máximo possível é preservado.

Mecanismos de falha:

  • A câmera não está alinhada com o círculo exibido no tablet no centro da cena capturada.
  • O círculo na imagem capturada é distorcido pelo pipeline de processamento.
  • A imagem de baixa resolução é cortada duas vezes no pipeline de imagens, criando um FoV diferente entre as imagens de alta e baixa resolução.
  • O círculo na imagem capturada é cortado devido a uma solicitação de captura de proporção extrema que reduz a altura ou a largura da imagem.
  • O círculo na imagem capturada tem um reflexo no centro e não aparece totalmente preenchido.

test_multi_camera_alignment

Testa os parâmetros de calibração da câmera relacionados ao posicionamento dela para sistemas com várias câmeras. Usa as subcâmeras físicas de várias câmeras para tirar uma foto com uma das câmeras físicas. Encontra o centro do círculo. Projeta o centro do círculo nas coordenadas mundiais de cada câmera. Compara a diferença entre os centros dos círculos das câmeras em coordenadas mundiais. Reprojeta a coordenada mundial de volta para coordenadas de pixel e compara com as originais como uma verificação de validade. Compara os tamanhos dos círculos para verificar se as distâncias focais das câmeras são diferentes.

APIs testadas:

Aprovado:os centros e tamanhos dos círculos estão conforme o esperado nas imagens projetadas em comparação com as imagens capturadas usando dados de calibração da câmera e distâncias focais.

Mecanismos de falha:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION e LENS_POSE_ROTATION são valores de design, não dados de calibração reais.
  • O sistema de câmera não é adequado para a configuração de teste, por exemplo, testar um sistema de câmera ampla e ultra-ampla com o equipamento de teste de RFoV. Para mais informações, consulte as perguntas frequentes sobre o ITS-in-a-box da câmera.

test_preview_aspect_ratio_and_crop

Semelhante ao teste test_aspect_ratio_and_crop para capturas estáticas, verifica os formatos de pré-lançamento compatíveis para garantir que os frames de pré-lançamento não sejam esticados ou cortados de forma inadequada. Verifica se a proporção do círculo não muda, se as imagens cortadas mantêm o círculo no centro do frame e se o tamanho do círculo não muda para um formato constante ou com resoluções diferentes (verificação de FoV).

APIs testadas:

Aprovado:as imagens não são esticadas, o centro delas não difere em mais de 3% e o FoV máximo possível é preservado.

test_preview_stabilization_fov

Verifica os tamanhos de visualização compatíveis para garantir que o FoV seja cortado adequadamente. O teste captura dois vídeos, um com a estabilização de prévia ON e outro com a estabilização de prévia OFF. Um frame representativo é selecionado de cada vídeo e analisado para verificar se as mudanças de FoV nos dois vídeos estão dentro da especificação.

APIs testadas:

Aprovado:a proporção do círculo permanece constante, o local central do círculo permanece estável e o tamanho do círculo não muda mais de 20%.

test_video_aspect_ratio_and_crop

Grava vídeos de um círculo dentro de um quadrado em todos os formatos de vídeo. Extrai os frames-chave e verifica se a proporção do círculo não muda, se as imagens cortadas mantêm o círculo no centro e se o tamanho do círculo não muda para um formato constante ou com resolução diferente (verificação de FoV).

APIs testadas:

Aprovado:os frames do vídeo não são esticados, o centro dos frames não difere em mais de 3% e o FoV máximo possível é preservado.

scene6

scene6 é uma grade de marcadores ArUco claramente identificados. Os testes em scene6 podem ser sensíveis ao alinhamento. Portanto, a partir da versão 15, é possível usar check_alignment.py no diretório de ferramentas para ativar uma verificação do DUT e do alinhamento do gráfico.

scene6

Figura 118.Exemplo de scene6.

test_in_sensor_zoom

Testa o comportamento do recurso de zoom no sensor da câmera, que produz imagens RAW cortadas.

Com o caso de uso de stream definido como CROPPED_RAW, o teste faz duas capturas no intervalo de zoom: uma imagem bruta de FoV completo e uma imagem bruta cortada. O teste converte as imagens em matrizes RGB, reduz a imagem bruta cortada em tamanho original para o tamanho informado por SCALER_RAW_CROP_REGION e calcula a diferença de RMS 3D entre as duas imagens.

APIs testadas:

Aprovação:a diferença de RMS 3D entre a imagem bruta cortada e reduzida e a imagem bruta de FoV completo é menor que o limite definido no teste.

test_zoom

Testa o comportamento do zoom da câmera da lente ultra grande angular para a lente grande angular. Faz capturas no intervalo de zoom e verifica se os marcadores ArUco aumentam à medida que a câmera aumenta o zoom. O teste também verifica se a posição do marcador central muda de forma previsível em cada captura. A distância do centro do marcador central até o centro da imagem pode mudar a uma taxa constante em relação à proporção de zoom até uma troca de câmera física ou pode mudar de forma monotônica em direção ao local do mesmo marcador após uma troca de câmera física. O app Jetpack Camera (JCA) precisa ser instalado no dispositivo antes do teste.

APIs testadas:

Aprovado:o tamanho relativo do marcador ArUco capturado é preciso em relação à proporção de zoom solicitada para verificar se a câmera está aplicando zoom corretamente, e a distância do marcador até o centro da imagem muda de acordo com os critérios indicados na descrição do teste.

test_zoom para encontrar o contorno do marcador ArUco mais próximo do centro

Figura 119.test_zoom para encontrar o contorno do marcador ArUco mais próximo do centro.

test_low_latency_zoom

Testa o comportamento de zoom de baixa latência da câmera. Faz capturas no intervalo de zoom com android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) e verifica se os marcadores nas imagens de saída correspondem às proporções de zoom nos metadados de captura. A mesma sessão de captura de câmera é usada para convergir 3A e fazer capturas.

APIs testadas:

Aprovado:o tamanho relativo do marcador capturado é preciso em relação aos metadados de resultado da proporção de zoom.

test_preview_video_zoom_match

Testa se, ao gravar e aplicar zoom, a visualização e a saída de vídeo mostram e gravam a mesma saída. Calcula o tamanho do marcador mais próximo do centro em diferentes proporções de zoom e verifica se o tamanho do marcador aumenta conforme a proporção de zoom aumenta.

APIs testadas:

Aprovado:o tamanho relativo do marcador capturado é preciso em relação à proporção de zoom solicitada no vídeo e na prévia.

HD_1280x720_key_frame.png

Figura 120. HD_1280x720_key_frame.png (antes do zoom).

preview_1280x720_key_frame.png

Figura 121: preview_1280x720_key_frame.png (antes do zoom).

HD_1280x720_key_frame_zoomed.png

Figura 122. HD_1280x720_key_frame.png (após o zoom).

preview_1280x720_key_frame_zoomed.png

Figura 123.preview_1280x720_key_frame.png (depois do zoom).

test_preview_zoom

Testa se a proporção de zoom de cada frame de visualização corresponde aos metadados de captura correspondentes da lente ultra grande angular para a lente grande angular. O teste usa frames de visualização no intervalo de zoom e encontra o marcador ArUco mais próximo do centro. Em seguida, o teste verifica se a posição do marcador central muda de maneira previsível em cada captura. A distância do centro do marcador central até o centro da imagem pode mudar a uma taxa constante em relação à proporção de zoom até uma troca de câmera física ou pode mudar de forma monotônica em direção ao local do mesmo marcador após uma troca de câmera física.

APIs testadas:

Aprovação:o tamanho relativo do marcador ArUco selecionado é preciso para a proporção de zoom informada do resultado de captura correspondente para todos os frames de pré-lançamento. A distância relativa do marcador selecionado em relação ao centro da imagem é precisa para a proporção de zoom informada do resultado de captura correspondente de todos os frames de pré-lançamento.

Imagens de test_preview_zoom mostrando o marcador selecionado mais próximo do centro

Figura 124: imagens de test_preview_zoom mostrando o marcador selecionado mais próximo do centro

test_session_characteristics_zoom

Testa o intervalo de proporção de zoom para todas as configurações de sessão compatíveis listadas em CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION. Para cada uma dessas configurações, se CameraDeviceSetup#isSessionConfigurationSupported retornar true, o teste vai verificar se o intervalo de proporção de zoom retornado em CameraDeviceSetup#getSessionCharacteristics pode ser alcançado.

APIs testadas:

Aprovado:as proporções de zoom mínima e máxima podem ser alcançadas para cada SessionConfiguration com suporte listado em CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.

scene7

scene7 é um frame retangular dividido em quatro quadrantes iguais, cada um preenchido com uma cor diferente. No centro do retângulo, há um gráfico de borda inclinada para verificações de nitidez. Quatro marcadores ArUco são alinhados com os quatro cantos externos do retângulo para ajudar a obter coordenadas precisas do frame do retângulo principal em várias proporções de zoom.

scene7

Figura 125.scene7.

test_multi_camera_switch

Esse teste verifica se, durante a gravação de pré-lançamento em várias proporções de zoom, a troca entre as lentes ultrawide (UW) e wide (W) resulta em valores RGB semelhantes.

O teste usa diferentes proporções de zoom dentro do intervalo predefinido para realizar uma gravação de visualização dinâmica e identificar o ponto em que a câmera física muda. Esse ponto marca a transição da lente UW para a W.

Os frames capturados no ponto de cruzamento e antes dele são analisados para exposição automática (AE), balanço de branco automático (AWB) e foco automático (AF).

A verificação de AE confirma se a mudança de luma está dentro do intervalo esperado para as imagens das lentes UW e W. A verificação de AWB confirma se as proporções de vermelho-verde e azul-verde estão dentro dos valores limite para imagens de lentes UW e W. A verificação de AF avalia o valor de estimativa de nitidez com base na magnitude média do gradiente entre as imagens das lentes UW e W.

Ao executar esse teste, se o efeito Moire interferir nos resultados, use um tablet de resolução mais alta da lista de tablets aprovados pelo Camera ITS.

APIs testadas:

Aprovação:para que o teste seja aprovado, as verificações de AE e AWB precisam ser aprovadas. Os resultados da verificação de AF são usados apenas para fins de registro. Confira os critérios de cada verificação:

  • Verificação de AE: a mudança de luma (valor Y) entre as imagens das lentes UW e W precisa ser menor que 4% para todos os patches de cor se o dispositivo for compatível com ae_regions e awb_regions. Se apenas ae_regions for compatível, somente os valores de patch de cor cinza precisarão atender aos critérios.
  • Verificação de AWB: a diferença entre os valores de vermelho-verde e azul-verde para as imagens das lentes UW e W precisa ser menor que 3% para o patch de cor cinza e menor que 10% para outros patches de cor se o dispositivo for compatível com ae_regions e awb_regions.
  • Verificação de AF: a nitidez da imagem para a captura da lente W precisa ser maior do que a nitidez com a captura UW.

test_multi_camera_switch_gray_uw_y

Figura 126. Mancha cinza tirada com lente UW.

test_multi_camera_switch_gray_w_y

Figura 127. Área cinza capturada com a lente W.

scene8

scene8 é uma moldura retangular dividida em quatro regiões iguais, cada uma com um retrato tirado com uma exposição diferente ou sobreposto com um tom de cor diferente (tom azul, exposição aumentada, exposição reduzida, tom amarelo). Quatro marcadores ArUco são alinhados com os quatro cantos externos do retângulo para obter coordenadas precisas do frame do retângulo principal.

Exemplo de scene8

Figura 128.Exemplo de scene8.

test_ae_awb_regions

Testa se os valores de RGB e luma são diferentes ao gravar a visualização em diferentes regiões de AE e AWB.

O teste grava uma prévia de 8 segundos, realizando a medição de AE e AWB em cada quadrante por 2 segundos cada. Em seguida, o teste extrai um frame da gravação de prévia de cada região e usa os frames extraídos para realizar as seguintes verificações de AE e AWB:

  • Verificação de AE: verifica se o frame que mede a região com exposição reduzida tem um valor de luma maior que 1% em relação ao frame que mede a região com exposição aumentada. Isso verifica se as imagens são clareadas ao medir uma região escura.
  • Verificação de AWB: verifica se a proporção de vermelho para azul (dos valores médios de RGB da imagem) no frame com a região de medição azul é mais de 2% maior do que o frame com a região de medição amarela. Isso verifica se as imagens têm um valor RGB equilibrado ao medir uma região amarela (quente) ou azul (fria).

APIs testadas:

Aprovado:as verificações de AE e AWB foram aprovadas.

test_ae_awb_regions_dark_region

Figura 129. Medição de quadro de uma região escura com maior exposição.

test_ae_awb_regions_light_region

Figura 130. Região mais clara da medição de frames com exposição reduzida.

Mecanismos de falha:

  • A detecção precisa dos quatro marcadores ArUco é essencial para esse teste. Se a detecção inicial falhar, o sistema tentará uma segunda detecção usando uma versão em preto e branco da imagem. A imagem em escala de cinza a seguir representa a etapa de processamento secundário:

    Desalinhamento dos marcadores ArUco

    Figura 131. Desalinhamento dos marcadores ArUco.

test_color_correction_mode_cct

Testa COLOR_CORRECTION_MODE em diferentes temperaturas da cor e tonalidades, verificando mudanças nas proporções de RGB em relação à cena de captura, scene8.

APIs testadas:

Aprovado:as proporções de RGB mostram os aumentos ou as reduções esperados em relação às temperaturas da cor e às tonalidades selecionadas.

Critérios para pular testes

O teste test_color_correction_mode_cct será ignorado se qualquer um dos seguintes critérios for atendido:

scene9

scene9 consiste em milhares de círculos de tamanhos e cores aleatórios para criar uma cena com repetibilidade muito baixa para testar algoritmos de compactação JPEG.

Exemplo de scene9

Figura 132.Exemplo de scene9.

test_jpeg_high_entropy

Testa se a compactação JPEG da câmera funciona em scene9 com alta entropia e o fator de qualidade JPEG definido como 100%. O fator de zoom é aumentado para verificar se a cena exibida no tablet preenche o FoV da câmera.

APIs testadas:

Aprovado:o arquivo JPEG foi compactado corretamente, gravado e lido no disco.

test_jpeg_quality

Testa a qualidade da compactação de JPEG da câmera. Percorre as qualidades de JPEG por meio de android.jpeg.quality e verifica se as tabelas de quantização mudam corretamente.

APIs testadas:

Aprovado:a matriz de quantização diminui com o aumento da qualidade. A matriz representa o fator de divisão.

Médias da matriz DQT de luma e croma da câmera traseira do Pixel 4 em relação à qualidade JPEG

Figura 133. Médias da matriz DQT de luma e croma da câmera traseira do Pixel 4 em comparação com a qualidade JPEG.

Exemplo de teste com falha de test_jpeg_quality

Figura 134. Exemplo de teste com falha.

scene_extensions

Os testes scene_extensions são para extensões de câmera e precisam usar o Camera ITS-in-a-Box, já que exigem controle preciso do ambiente de teste. Além disso, todo vazamento de luz precisa ser controlado. Isso pode exigir que o suporte de teste, o DUT e o tablet sejam cobertos com um pano, além de eliminar o vazamento de luz da tela frontal do DUT.

scene_hdr

A cena scene_hdr consiste em um retrato à esquerda e um QR code de baixo contraste à direita.

scene_hdr

Figura 135.Exemplo de scene_hdr.

test_hdr_extension

Testa a extensão HDR. Faz capturas com e sem a extensão ativada e verifica se a extensão torna o QR code mais detectável.

APIs testadas:

Aprovado:a extensão HDR reduz o número de mudanças de contraste necessárias para detectar o QR code ou reduz o gradiente no QR code.

scene_low_light

A cena scene_low_light consiste em uma grade de quadrados de vários tons de cinza em um fundo preto, e a grade de quadrados é delimitada por um contorno vermelho. Os quadrados são organizados em uma orientação de curva de Hilbert.

Exemplo de scene_low_light

Figura 136.Exemplo de scene_low_light.

test_night_extension

Testa a extensão Night. Faz capturas com a extensão ativada e realiza o seguinte:

  • Detecta a presença de 20 quadrados
  • Calcula a luma limitada por cada quadrado
  • Calcula o valor médio de luma dos primeiros seis quadrados de acordo com a orientação da grade da curva de Hilbert.
  • Calcula a diferença no valor de luma de quadrados consecutivos (por exemplo, quadrado2 - quadrado1) até os quadrados 5 e 6 (quadrado6 - quadrado5) e encontra a média das cinco diferenças calculadas.

Para dispositivos com o Android 16 ou versões mais recentes, a solicitação de captura inclui uma região medida correspondente ao retângulo que delimita a grade de quadrados. Essa adição muda os critérios de aprovação do limite.

APIs testadas:

Pass:

  • Para dispositivos com o Android 16 ou versões mais recentes, o valor médio de luma dos primeiros seis quadrados precisa ser de pelo menos 80, e a diferença média no valor de luma de quadrados consecutivos até os quadrados 5 e 6 precisa ser de pelo menos 18,75.
  • Para dispositivos com o Android 15 e versões anteriores, o valor médio de luma dos primeiros seis quadrados precisa ser de pelo menos 85, e a diferença média no valor de luma de quadrados consecutivos até os quadrados 5 e 6 precisa ser de pelo menos 17.

O gráfico de luminância a seguir mostra como é um resultado de teste aprovado.

Exemplo de teste de aprovação de cena noturna com pouca luz

Figura 137. Exemplo de teste aprovado de cena noturna com pouca luz.

test_low_light_boost_extension

Testa o modo AE de aumento do modo pouca luz. Se a Camera2 for compatível com o modo de AE de otimização em pouca luz, esse teste será realizado para ela. Se a extensão de câmera do modo noturno for compatível e a extensão oferecer suporte ao modo AE de otimização de pouca luz, esse teste também será realizado para a extensão de câmera do modo noturno. Esse teste define o modo AE como Otimização em Pouca Luz, captura um frame da prévia e realiza o seguinte:

  • Detecta a presença de 20 caixas
  • Calcula o luma delimitado por cada caixa
  • Calcula o valor médio de luma dos primeiros seis quadrados de acordo com a orientação da grade da curva de Hilbert.
  • Calcula a diferença no valor de luma de quadrados consecutivos (por exemplo, quadrado2 - quadrado1) até os quadrados 5 e 6 (quadrado6 - quadrado5) e encontra a média das cinco diferenças calculadas.

Para dispositivos com o Android 16 ou versões mais recentes, a solicitação de captura inclui uma região medida correspondente ao retângulo que delimita a grade de quadrados. Essa adição muda os critérios de aprovação do limite.

APIs testadas:

Pass:

  • Para dispositivos com o Android 16 ou versões mais recentes, o valor médio de luma dos primeiros seis quadrados precisa ser de pelo menos 54, e a diferença média no valor de luma de quadrados consecutivos até os quadrados 5 e 6 precisa ser de pelo menos 17.

  • Para dispositivos com o Android 15 e versões anteriores, o valor médio de luma dos primeiros seis quadrados precisa ser de pelo menos 70, e a diferença média no valor de luma de quadrados consecutivos até os quadrados 5 e 6 precisa ser de pelo menos 18.

scene_tele

Um requisito fundamental para os testes de scene_tele é que a distância do gráfico seja de, no mínimo, a distância mínima de foco da lente teleobjetiva. Como essa distância mínima de foco pode variar entre os dispositivos, é necessário definir as configurações de acordo com a câmera teleobjetiva específica.

Configuração de scene_tele com base na distância focal da câmera grande angular e telefoto

Figura 138.Configuração de scene_tele com base na distância focal da câmera grande angular e da câmera telefoto.

Para mais informações sobre a configuração do hardware de teste, consulte Configuração do equipamento de extensão de teleobjetiva.

scene6_tele

A cena scene6_tele consiste em uma grade de marcadores ArUco em um fundo branco.

Se as capturas de scene6_tele parecerem superexpostas no suporte modular, remova a placa frontal do suporte modular.

Desconecte o equipamento de teste de WFoV da extensão e remova o suporte do smartphone.

Desconecte o equipamento de teste de WFoV da extensão e remova o suporte para smartphone

Figura 139. Desconecte o equipamento de teste de WFoV da extensão e remova o suporte do smartphone.

remove_front_plate

Figura 140. Remova a placa frontal.

test_zoom_tele

Testa o comportamento do zoom da câmera da lente grande angular para a lente telefoto. O teste é idêntico a test_zoom, mas testa o comportamento de zoom da câmera da lente grande angular para a lente telefoto.

APIs testadas:

Aprovação:o tamanho relativo do marcador ArUco capturado é preciso em relação à proporção de zoom solicitada para verificar se a câmera está aplicando o zoom corretamente, e a distância do marcador até o centro da imagem muda de acordo com os critérios listados em test_zoom.

test_preview_zoom_tele

Testa o comportamento de zoom da câmera para frames de visualização da lente grande angular para a lente teleobjetiva. O teste é idêntico a test_preview_zoom, mas testa o comportamento de zoom da câmera para frames de visualização da lente grande angular para a lente telefoto.

APIs testadas:

Aprovação:o tamanho relativo do marcador ArUco capturado é preciso em relação à proporção de zoom solicitada para verificar se a câmera está aplicando o zoom corretamente, e a distância do marcador até o centro da imagem muda de acordo com os critérios listados em test_preview_zoom.

scene7_tele

scene7_tele é idêntico a scene7, mas configurado para testes de lentes telefoto. É uma moldura retangular dividida em quatro quadrantes iguais, cada um preenchido com uma cor diferente. No centro do retângulo, há um gráfico de borda inclinada para verificações de nitidez. Quatro marcadores ArUco são alinhados com os quatro cantos externos do retângulo para ajudar a obter coordenadas precisas do frame do retângulo principal em várias proporções de zoom.

test_multi_camera_switch_tele

Esse teste verifica se, durante a gravação de prévia em várias proporções de zoom, a troca entre as lentes grande angular (W) e telefoto (tele) resulta em valores RGB semelhantes.

O teste usa diferentes proporções de zoom dentro do intervalo predefinido para realizar uma gravação de visualização dinâmica e identificar o ponto em que a câmera física muda. Esse ponto marca a transição da lente W para a lente tele.

Os frames capturados no ponto de cruzamento e antes dele são analisados para AE, AWB e AF.

A verificação de AE confirma se a mudança de luma está dentro do intervalo esperado para as imagens das lentes W e tele. A verificação de AWB confirma se as proporções de vermelho-verde e azul-verde estão dentro dos valores limite para imagens de lentes W e tele. A verificação de AF avalia o valor de estimativa de nitidez com base na magnitude média do gradiente entre as imagens das lentes W e tele.

APIs testadas:

Aprovação:para que o teste seja aprovado, as verificações de AE, AWB e AF precisam ser aprovadas. Confira os critérios para cada verificação:

  • Verificação de AE: a mudança de luma entre as imagens da lente W e da lente teleobjetiva precisa ser menor que 4%.
  • Verificação de AWB: no espaço de cores LAB, o delta C entre vermelho-verde e azul-verde para grande angular e telefoto não pode exceder 10.
  • Verificação de AF: a nitidez da imagem da lente teleobjetiva precisa ser maior que a da lente W.

scene_video

scene_video é uma cena de vídeo que consiste em quatro círculos de cores diferentes que se movem para frente e para trás em diferentes frame rates em um fundo branco.

Figura 141.Exemplo de scene_video.

test_preview_frame_drop

Testa se o frame rate de visualização solicitado é mantido com uma cena dinâmica. Esse teste é executado em todas as câmeras expostas a apps de terceiros.

APIs testadas:

Aprovado:o frame rate de pré-lançamento está no máximo do intervalo de frame rate solicitado, e a variação média entre frames consecutivos é menor que a tolerância relativa definida no teste.

Cenas de teste baseadas em sensor_fusion / equipamento Gen2

feature_combination

Os testes feature_combination verificam se os recursos funcionam corretamente quando vários recursos de câmera estão ativados ao mesmo tempo. Esses testes usam a mesma imagem de tabuleiro de xadrez usada na cena de fusão de sensores.

test_feature_combination

Testa todas as combinações de diferentes combinações de stream, modo de estabilização de vídeo, intervalo de QPS de destino, vídeo HDR de 10 bits e Ultra HDR que são compatíveis com o dispositivo de câmera.

No Android 16 e versões mais recentes, o teste executa todas as combinações de recursos com suporte e registra os resultados em um arquivo proto. As declarações de falha são chamadas apenas para combinações de recursos em que isSessionConfigurationSupported retorna True.

APIs testadas:

Aprovado:para cada combinação de recursos compatível:

  • O stream de visualização será estabilizado se a estabilização da visualização estiver ativada.
  • O frame rate de pré-visualização está dentro do AE_TARGET_FPS_RANGE configurado.
  • O espaço de cores do stream de prévia gravado corresponde ao que foi definido.
  • A captura em Ultra HDR tem um mapa de ganho válido.

scene_flash

Os testes de scene_flash exigem uma cena escura no quadro elétrico de fusão do sensor. No Android 17 e versões mais recentes, o teste de scene_flash pode ser realizado usando o equipamento Gen2.

test_auto_flash

Testa se o flash automático é acionado em uma cena escura para câmeras traseiras e frontais. Para câmeras frontais, o flash automático usa a tela para iluminar a cena, não uma unidade de flash física. O teste verifica se o flash automático é disparado ao conferir se o centro da imagem do bloco fica mais brilhante com o flash automático ativado. Para acionar o flash automático, as luzes no equipamento de teste precisam ser desligadas. Elas podem ser desligadas automaticamente com o controlador Arduino. O ambiente precisa estar completamente escuro para que o teste funcione corretamente. O app Jetpack Camera (JCA, link em inglês) precisa ser instalado no dispositivo antes do teste. O flash automático para câmeras traseiras depende do estado de AE para ser acionado, mas o flash automático para câmeras frontais não depende de AE e é sempre acionado.

No Android 17 e versões mais recentes, testa níveis de zoom diferentes de 1x para verificar a funcionalidade correta em todos os intervalos de zoom compatíveis.

APIs testadas:

Aprovado:o centro da imagem do bloco com o flash automático ativado é mais brilhante do que a imagem da cena original para todas as câmeras.

test_flash_strength

Testa se o controle de intensidade do flash no modo SINGLE está implementado corretamente.

Verifica se, quando o dispositivo oferece suporte ao controle de intensidade do flash durante o uso da câmera no modo SINGLE, a intensidade do flash muda de acordo com os diferentes níveis de intensidade solicitados. Verifica se o controle de intensidade do flash funciona com diferentes AE_MODES. Por exemplo, se o modo de exposição automática for ON ou OFF, o nível de intensidade do flash vai afetar o brilho. Se o modo for ON_AUTO_FLASH, o nível de intensidade do flash não vai afetar o brilho.

Para realizar o teste, as luzes no equipamento de teste precisam ser desligadas. Elas podem ser desligadas automaticamente com o controlador Arduino. O ambiente precisa estar completamente escuro para que o teste funcione corretamente.

APIs testadas:

Pass:

Quando o modo de exposição automática é ON ou OFF, o brilho dos patches de imagem aumenta conforme o nível de intensidade do flash aumenta de sem flash para FLASH_SINGLE_STRENGTH_MAX_LEVEL. Quando o modo de exposição automática é ON_AUTO_FLASH, a diferença no brilho dos patches de imagem fica dentro da tolerância, conforme o nível de intensidade do flash aumenta de sem flash para FLASH_SINGLE_STRENGTH_MAX_LEVEL.

test_led_snapshot

Testa se os snapshots de LED não saturam nem tingem a imagem.

Esse teste adiciona um controlador de iluminação à caixa de fusão de sensores para controlar as luzes. Com as luzes definidas como OFF, o teste faz uma captura com o modo AUTO_FLASH definido como ON. Durante essa captura, o teste executa uma sequência de pré-captura com o gatilho aePrecapture definido como START e define a intent de captura como Preview para fazer a captura com flash.

Como a captura tem um ponto de acesso diferenciado devido ao flash, o teste calcula a média da imagem do flash de toda a captura e verifica se o valor está dentro do intervalo (68, 102). Para verificar se a imagem tem um equilíbrio de branco razoável, o teste calcula as proporções vermelho-verde e azul-verde e verifica se elas estão entre 0,95 e 1,05.

APIs testadas:

Aprovado:as proporções de vermelho-verde e azul-verde estão entre 0,95 e 1,05. A média da imagem do flash está no intervalo (68, 102).

test_night_mode_indicator

Testa a funcionalidade do indicador do modo noturno, um recurso que indica se a câmera está operando em condições de pouca luz e se vai se beneficiar de uma captura de imagem estática da extensão de câmera do modo noturno. Esse recurso está disponível apenas em dispositivos que oferecem suporte a extensões de câmera do modo noturno.

Esse teste verifica se o indicador do modo noturno reflete corretamente as condições de iluminação durante a visualização da câmera. O teste executa as seguintes etapas:

  1. Inicialização:o teste inicializa um ItsSession e recupera as propriedades da câmera. Ele também estabelece uma conexão com o controlador de iluminação.
  2. Condições de pulo:o teste será pulado se o dispositivo não for compatível com o nível da API necessário ou com o recurso de indicador do modo noturno.
  3. Sessão da Camera2:
    • O teste inicia uma sessão de captura de prévia usando uma sessão Camera2.
    • A luz é acesa e um frame de visualização é capturado.
    • O teste verifica se o indicador do modo noturno está no estado OFF.
    • A luz é desligada e um frame de visualização é capturado.
    • O teste verifica se o indicador do modo noturno está no estado ON.
  4. Sessão de extensão de câmera:
    • O teste repete o mesmo procedimento da sessão Camera2, mas usa uma sessão CameraExtension com a extensão EXTENSION_NIGHT.
  5. Limpeza:o teste fecha ItsSession e libera o controlador de iluminação.

APIs testadas:

Pass:

  • Quando a luz estiver acesa, o indicador do modo noturno precisa estar no estado OFF.
  • Quando a luz estiver apagada, o indicador do modo noturno precisa estar no estado ON.
  • Aplica-se às sessões Camera2 e CameraExtension.

test_preview_min_frame_rate

Testa se o frame rate de visualização diminui corretamente em uma cena escura. Para que esse teste funcione corretamente, as luzes no equipamento de teste precisam ser desligadas pelo controlador ou manualmente pelo operador de teste.

APIs testadas:

Aprovado:o frame rate de pré-lançamento está no mínimo do intervalo de frame rate solicitado, e a variação entre os frames é menor que a tolerância absoluta definida no teste.

test_torch_strength

Testa se o controle de intensidade do flash no modo TORCH está implementado corretamente.

Verifica se, quando o dispositivo oferece suporte ao controle de intensidade do flash durante o uso da câmera no modo TORCH, a intensidade da lanterna muda com diferentes níveis de intensidade solicitados. Verifica se o controle de intensidade do flash funciona com diferentes AE_MODES. Por exemplo, se o modo de exposição automática for ON ou OFF, o nível de intensidade do flash vai afetar o brilho. Se o modo for ON_AUTO_FLASH, o nível de intensidade do flash não vai afetar o brilho. Verifica se a intensidade da lanterna permanece a mesma durante uma sequência, simulando uma sessão de captura de vídeo. Para realizar o teste, as luzes no equipamento de teste precisam ser desligadas. Elas podem ser desligadas automaticamente com o controlador Arduino. O ambiente precisa estar completamente escuro para que o teste funcione corretamente.

APIs testadas:

Pass:

Quando o modo de exposição automática é ON ou OFF, o brilho dos patches de burst de imagem aumenta à medida que o nível de intensidade do flash aumenta de sem flash para FLASH_TORCH_STRENGTH_MAX_LEVEL. Quando o modo de exposição automática é ON_AUTO_FLASH, a diferença no brilho dos patches de sequência de imagens está dentro da tolerância, conforme o nível de intensidade do flash aumenta de sem flash para FLASH_TORCH_STRENGTH_MAX_LEVEL.

scene_gen2_chart

No Android 17 e versões mais recentes, o scene_gen2_chart usa o gráfico de papel de 2ª geração.

Esse gráfico de teste consiste em amostras faciais, um QR code, patches em escala de cinza, uma estrela de Siemens, um gráfico de cores e quadrados inclinados.

test_chart_gen2

Figura 142. Exemplo de gráfico da 2ª geração.

test_tonemap_sequence

Esse teste avalia a curva de mapeamento de tons padrão de um dispositivo em relação a uma curva linear e duas curvas exponenciais (uma com pontos uniformes e outra com pontos não uniformes). Para um resultado positivo, o brilho da curva padrão precisa exceder o das curvas linear e exponencial. Além disso, a curva linear precisa ser mais brilhante do que as curvas exponenciais, e as duas curvas exponenciais precisam ter níveis de brilho semelhantes.

O teste também verifica a precisão da curva padrão do dispositivo. Para isso, extraia a curva padrão, insira-a novamente e compare o brilho da imagem resultante com a imagem da curva padrão original.

Gráfico de sequência de tonemap de teste

Figura 143. Teste o gráfico de sequência do mapa de tons.

APIs testadas:

Aprovado:a diferença de brilho entre as curvas padrão e linear é maior que 15%, enquanto a diferença entre as duas curvas exponenciais é menor que 8%.

test_multi_camera_switch

Esse teste verifica a consistência de cores e exposição durante transições de zoom dinâmico. Ele verifica se a troca entre as lentes ultrawide (UW) e wide (W) durante a gravação de prévia mantém valores CIELAB quase idênticos, evitando mudanças visíveis na experiência do usuário.

A execução do teste executa uma gravação de prévia dinâmica em um intervalo de zoom predefinido para acionar o ponto de "crossover" da câmera física, em que a lente ultra-wide muda para a lente wide. O teste identifica o frame exato em que a troca de lente ocorre. Os frames imediatamente anteriores e posteriores a esse ponto de cruzamento são capturados e analisados para verificar a estabilidade na exposição automática (AE, na sigla em inglês) e no equilíbrio automático de branco (AWB, na sigla em inglês).

A verificação de AE confirma se as flutuações de Luma permanecem dentro de um intervalo aceitável durante a transferência de lentes. A verificação de AWB confirma se as proporções de vermelho-verde e azul-verde permanecem dentro dos limites definidos de neutralidade de cor.

APIs testadas:

Aprovação:para que o teste seja aprovado, as seguintes verificações de AE e AWB precisam ser aprovadas:

  • Verificação de AE: a mudança de luma (valor Y) entre as imagens das lentes UW e W precisa ser menor que 4% para todos os patches de cor se o dispositivo for compatível com ae_regions e awb_regions. Se apenas ae_regions for compatível, somente os valores de patch de cor cinza precisarão atender aos critérios.
  • Verificação de AWB: a diferença entre os valores de vermelho-verde e azul-verde para as imagens das lentes UW e W precisa ser menor que 3% para o patch de cor cinza e menor que 10% para outros patches de cor se o dispositivo for compatível com ae_regions e awb_regions.

uw_dynamic_range_patch_cell_8

Figura 144. Mancha cinza tirada com lente UW.

w_dynamic_range_patch_cell_7

Figura 145. Área cinza capturada com a lente W.

scene_ip

No Android 16 e versões mais recentes, a cena scene_ip permite verificações de paridade de imagem entre o app de câmera padrão e o app de câmera do Jetpack (JCA) para identificar grandes diferenças entre as imagens capturadas. A JCA replica as capturas de apps de mídia social e fornece uma imagem de referência que esses apps processam e refinam.

Requisitos de configuração de hardware

A seguinte configuração de hardware é necessária para testes do scene_ip:

  • Os testes são executados no ITS-in-a-box da câmera de 2ª geração.
  • Os controladores de iluminação e servo que fazem parte do equipamento de 2ª geração são usados para controlar o ambiente de teste.
  • Um gráfico de recursos de teste é colocado dentro do equipamento de 2ª geração.

test_chart_gen2

Figura 146. Exemplo de Gen2chart_sample.

Critérios para pular testes

Os testes scene_ip serão ignorados se algum dos seguintes critérios for atendido:

  • O dispositivo tem um primeiro nível da API (first_api_level) de 35 ou anterior.
  • O dispositivo não é um smartphone com câmeras principais frontal e traseira (por exemplo, um tablet ou uma TV).

test_default_jca_ip

Faz capturas do gráfico de recursos de teste em condições de iluminação controladas usando o app de câmera padrão e a JCA e realiza as seguintes verificações:

  • FoV:verifica se o app de câmera padrão e as capturas da JCA têm o mesmo FoV. Essa verificação usa o recurso de QR code central extraído da imagem do gráfico de capturas.

  • Brilho:verifica se a diferença de brilho medida entre o app de câmera padrão e a JCA não excede 10. Essa verificação usa o patch de intervalo dinâmico para medir o brilho.

  • Balanço de branco:verifica se a diferença de balanço de branco entre o app de câmera padrão e a JCA não excede 4. Essa verificação usa o patch de intervalo dinâmico para medir o brilho.

  • Renderização de cores:verifica se a diferença de renderização de cores entre o app de câmera padrão e a JCA não excede 6.

Aprovado:o teste passa nas verificações de FoV, brilho e equilíbrio de branco. No Android 16, esse teste não é obrigatório (NOT_YET_MANDATED). Para o Android 17 e versões mais recentes, as verificações de paridade de FoV, brilho e equilíbrio de branco são obrigatórias. A verificação de renderização de cores não é obrigatória (NOT_YET_MANDATED) no Android 17.

test_jca_jpegr_ip

Verifica se a diferença de balanço de branco entre a captura de tela de prévia do JCA JPEG_R e as imagens capturadas não excede 4.

APIs testadas:

Aprovado:a diferença de balanço de branco entre a captura de tela de prévia do JCA e a imagem JPEG_R capturada está dentro do limite (o padrão é 4).

sensor_fusion

Os testes de fusão de sensores exigem um movimento específico do smartphone na frente de um padrão de tabuleiro de xadrez e marcadores ArUco. Para melhores resultados, verifique se o gráfico de teste está montado de forma plana. Gráficos que não são planos afetam os cálculos de rotação de muitos dos testes. O gráfico precisa preencher a parte de trás da caixa de fusão do sensor, sendo impresso em 17 x 17 pol. (43x43 cm). Os testes do sensor_fusion podem ser automatizados com a caixa de fusão de sensores.

Gráfico de fusão do sensor

Figura 147. Gráfico de fusão de sensores.

Gráfico de fusão do sensor no Rig

Figura 148. Gráfico de fusão do sensor que preenche a parte de trás do quadro elétrico de fusão do sensor.

test_lens_intrinsic_calibration

Testa se o centro óptico da lente intrínseca muda quando a lente se move devido à estabilização óptica de imagem (OIS, na sigla em inglês). Se as amostras intrínsecas da lente forem compatíveis, testa se o centro óptico das amostras intrínsecas da lente muda quando a lente se move devido à OIS.

APIs testadas:

Aprovado:o centro óptico da lente intrínseca muda em 1 pixel ou mais. Se as amostras intrínsecas da lente forem compatíveis, os centros ópticos delas vão mudar em 1 pixel ou mais.

A figura a seguir é um exemplo de gráfico test_lens_intrinsic_calibration que mostra as mudanças dos pontos principais em pixels para cada frame:

test_lens_intrinsic_calibration_example.png

Figura 149. Exemplo de gráfico test_lens_intrinsic_calibration mostrando mudanças de pontos principais em pixels para cada frame.

test_multi_camera_frame_sync

Testa se os carimbos de data/hora de frames capturados pela câmera lógica estão dentro de 10 ms calculando os ângulos dos quadrados no tabuleiro de xadrez para determinar o carimbo de data/hora.

APIs testadas:

Aprovado:o ângulo entre as imagens de cada câmera não muda significativamente quando o smartphone é girado.

test_preview_distortion

Testa se a distorção é corrigida em cada frame de visualização capturado em vários níveis de zoom. Para cada frame de visualização, o teste calcula os pontos ideais com base nas características intrínsecas e extrínsecas da câmera.

Na imagem de exemplo, os pontos ideais são mostrados em verde, e os reais, em vermelho. O erro de distorção é calculado com base na distância de pixel RMS entre os pontos reais e os ideais. Os destaques em verde e vermelho na imagem são usados para detectar visualmente a área do erro de distorção.

test_preview_distortion_example.jpg

Figura 150. Imagem de um tabuleiro de xadrez com pontos ideais em verde e pontos reais em vermelho.

APIs testadas:

Aprovado:o erro de distorção normalizado de cada frame de visualização é menor que o limite definido no teste.

test_preview_stabilization

Testa se o vídeo de prévia estabilizado gira menos que o giroscópio.

APIs testadas:

Aprovado:a rotação máxima do ângulo nos frames é menor que 70% da rotação do giroscópio.

Confira abaixo exemplos de vídeos com e sem estabilização:

Figura 151. Vídeo de amostra com estabilização.

Figura 152. Vídeo de amostra sem estabilização.

test_sensor_fusion

Testa a diferença de carimbo de data/hora entre a câmera e o giroscópio para aplicativos de RA e RV. O smartphone é girado 90 graus 10 vezes na frente do padrão de tabuleiro de xadrez. O movimento é de cerca de 2 s de ida e volta. Esse teste será ignorado se nenhum giroscópio for incluído ou se o parâmetro REALTIME da origem do carimbo de data/hora não estiver ativado.

O teste test_sensor_fusion gera vários gráficos. Os dois gráficos mais importantes para depuração são:

  • test_sensor_fusion_gyro_events: mostra os eventos do giroscópio do smartphone durante o teste. O movimento nas direções x e y indica que o smartphone não está montado com segurança no disco de fixação, o que reduz a probabilidade de aprovação no teste. O número de ciclos no gráfico depende da velocidade de gravação para salvar frames.

    Exemplo de eventos de giroscópio test_sensor_fusion

    Figura 153.Exemplo de eventos de giroscópio de test_sensor_fusion.

  • test_sensor_fusion_plot_rotations: mostra o alinhamento dos eventos do giroscópio e da câmera. Esse gráfico precisa mostrar o movimento correspondente entre a câmera e o giroscópio para +/-1 ms.

    Exemplo de rotações de plotagem de test_sensor_fusion

    Figura 154.Exemplo de rotações de plotagem de test_sensor_fusion.

APIs testadas:

Aprovação:o deslocamento dos carimbos de data/hora da câmera e do giroscópio é menor que 1 ms, de acordo com 7.3.9 Sensores de alta fidelidade no CDD.

Mecanismos de falha:

  • Erro de deslocamento: o deslocamento da câmera-giroscópio não está calibrado corretamente para +/-1 ms.
  • Quedas de frames: o pipeline não é rápido o suficiente para capturar 200 frames consecutivos.
  • Erros de soquete: o adb não consegue se conectar de forma confiável ao DUT por tempo suficiente para executar o teste.
  • O gráfico não está montado de forma plana. O gráfico test_sensor_fusion_plot_rotations tem frames em que a rotação do giroscópio e da câmera varia consideravelmente à medida que a câmera gira pelas partes do gráfico que não são planas.
  • A câmera não está montada de forma plana. O gráfico test_sensor_fusion_gyro_events mostra o movimento nos planos X e Y. Essa falha é mais comum em câmeras frontais, já que a câmera traseira geralmente tem uma saliência em relação ao restante do corpo do smartphone, criando uma inclinação ao montar a parte de trás do smartphone no suporte de fixação.

test_video_stabilization

Descontinuado:este teste foi descontinuado no Android 17. No Android 17 e versões mais recentes, esse teste é substituído por test_video_stabilization_jca.

Testa se o vídeo estabilizado gira menos que o giroscópio.

APIs testadas:

Aprovação:a rotação máxima do ângulo nos frames é menor que 60% da rotação do giroscópio.

Confira abaixo exemplos de vídeos de amostra com e sem estabilização.

Figura 155. Vídeo de amostra com estabilização.

Figura 156. Vídeo de amostra sem estabilização.

test_video_stabilization_jca

Testa se o vídeo estabilizado capturado usando a JCA gira menos que o giroscópio. O JCA precisa ser instalado no dispositivo antes do teste.

APIs testadas:

Aprovado:a rotação máxima do ângulo nos frames extraídos do vídeo capturado usando o JCA é menor que 70% das rotações do giroscópio 4).

Cena de teste com base em difusor

scene5

O scene5 requer uma cena cinza com iluminação uniforme. Isso é feito por um difusor colocado sobre a lente da câmera. Recomendamos o seguinte difusor: http://www.edmundoptics.com/optics/windows-diffusers/optical-diffusers/opal-diffusing-glass/46168/.

Para preparar a cena, coloque um difusor na frente da câmera e aponte-a para uma fonte de iluminação de cerca de 2.000 lux. As imagens capturadas para scene5 exigem iluminação difusa sem recursos evidentes. Veja um exemplo de imagem:

Exemplo de scene5

Figura 157.Exemplo de captura de scene5.

Como não são necessários tablets ou controladores para essa cena, os testes usam o ambiente de teste TEST_BED_MANUAL. Para ver um exemplo, consulte Arquivo config.yml de teste manual. O arquivo config.yml padrão não inclui TEST_BED_MANUAL, mas é possível modificar o arquivo para incluir um.

test_lens_shading_and_color_uniformity

Testa se a correção de sombreamento da lente é aplicada corretamente e se a cor de uma cena uniforme monocromática é distribuída de maneira uniforme. Realiza esse teste em um frame YUV com 3A automático. O sombreamento da lente é avaliado com base no canal y. Mede o valor médio de y para cada bloco de amostra especificado e determina se ele foi aprovado ou reprovado comparando com o valor central de y. O teste de uniformidade de cor é avaliado no espaço vermelho-verde e azul-verde.

APIs testadas:

Aprovação:no raio especificado da imagem, a variação do valor vermelho-verde e azul-verde precisa ser menor que 20% para passar no teste.

Mecanismos de falha:

  • Vinhetas excessivas em imagens
  • Artefatos de borda preta em imagens

test_lens_shading_and_color_uniformity_y_plane

Figura 158.test_lens_shading_and_color_uniformity_y_plane.

test_lens_shading_and_color_uniformity_color_uniformity_result

Figura 159.test_lens_shading_and_color_uniformity_color_uniformity.

test_lens_shading_and_color_uniformity_lens_shading_result

Figura 160.test_lens_shading_and_color_uniformity_lens_shading_result.

Cena de teste em tablet com ampla gama de cores

scene_wide_gamut

scene_wide_gamut é um quadro retangular dividido em quatro quadrantes iguais, cada um preenchido com uma cor diferente. Isso exige que o tablet mostre o gráfico em ampla gama e que o DUT capture uma foto de ampla gama da tela.

Esses testes verificam se a imagem capturada segue o perfil e o intervalo de cores corretos.

test_display_p3

Testa a captura de Display P3 em JPEG usando a API ColorSpaceProfiles. Testa se o JPEG capturado tem um perfil ICC (link em inglês) adequado no cabeçalho e se a imagem contém um determinado percentil de cores fora da gama sRGB.

APIs testadas:

Aprovado:o JPEG contém um perfil ICC Display P3 e mais de 1% de cores fora da gama sRGB.

Exemplo de test_display_p3

Figura 161.Exemplo de test_display_p3.