Testes ITS da câmera

Esta página fornece uma lista abrangente dos testes do Conjunto de teste de imagens da câmera (ITS), que faz parte do Verificador do Conjunto de Teste de Compatibilidade do Android (CTS). Os testes ITS são testes funcionais, o que significa que eles não medem a qualidade da imagem, mas que todas as funções da câmera anunciadas estão funcionando conforme o esperado. Este documento permite que desenvolvedores e testadores entendam o que os testes individuais fazem e como depurar falhas de teste.

O Camera ITS controla os testes de acordo com as propriedades da câmera necessárias, 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 bloquear testes adicionados a um nível específico da API que testam experiências negativas do usuário quanto à funcionalidade em níveis mais baixos da API. O ITS usa ro.vendor.api_level para bloquear testes de recursos adicionados a um nível específico da API que exigem uma nova capacidade de hardware. Se ro.odm.build.media_performance_class for 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 da seguinte maneira:

  • scene0:capturar metadados, instabilidade, giroscópio, vibração
  • scene1:exposição, sensibilidade, compensação de VE, YUV x JPEG/RAW.
  • scene2:detecção facial, testes que exigem cenas de cores ou escuridão completa.
  • scene3: aprimoramento de borda, movimento de lente
  • scene4:proporção, corte, campo de visão
  • scene5: sombreamento de lentes
  • scene6: aplicar zoom
  • scene_extensions:extensões de câmera
  • sensor_fusion:ajuste de marcação de tempo da câmera/giroscópio

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

cena 0

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

captura_de_burst_de_teste

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

APIs testadas:

Aprovado:captura uma sequência de imagens em tamanho original, e a câmera é rápida o suficiente para evitar o tempo limite.

despejo_resultado_da_captura_de_teste

Testa se um resultado de captura é retornado de uma captura manual e, em seguida, o despeja.

APIs testadas:

Aprovado:conclui a captura e despeja os resultados dela.

viés_giros_de_teste

Testa se o giroscópio tem saída estável quando o dispositivo está parado. Os dados são plotados como uma média de 20 pontos de dados.

APIs testadas:

Aprovado:o delta da leitura do giroscópio é menor que 0,01 ao longo do tempo.

test_gyro_bias_plot.png

test_gyro_bias_plot.png

instabilidade_do_teste

Mede a instabilidade nos carimbos de data/hora da câmera.

APIs testadas:

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

teste_instabilidade_plot.png

test_jitter_plot.png (Observe o pequeno intervalo do eixo y. a instabilidade é pequena nesse gráfico.)

metadados_teste

Testa a validade de entradas de metadados. Analisa os resultados da captura e os objetos de características da câmera. Este teste usa valores de exposição e ganho de auto_capture_request porque o conteúdo da imagem não é importante.

APIs testadas:

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

test_param_sensitivity_burst

Testa se o parâmetro android.sensor.sensitivity é aplicado corretamente no burst. Inspeciona apenas os metadados de saída.

APIs testadas:

Aprovado:os dados de saída têm uma tolerância de erro menor que 0,2%.

leitura_teste_gravação

Testa se o dispositivo grava os valores corretos de exposição e ganho lendo os metadados de captura.

APIs testadas:

Aprovado:leia e grave os valores correspondentes em todas as imagens.

eventos_sensor_teste

Testa se o dispositivo consulta e imprime eventos do sensor para dispositivos que anunciam suporte à fusão do sensor. Os sensores esperados são o acelerômetro, giroscópio e magnetômetro. Esse teste só funciona se a tela estiver ligada, ou seja, o dispositivo não está no modo de espera.

APIs testadas:

Aprovado:os eventos de cada sensor são recebidos.

teste_padrão_de_cor_sólida

Testa se os padrões de teste de cor sólida são gerados corretamente para desativar o som da câmera. Se houver suporte para a desativação do som da câmera, será necessário oferecer compatibilidade com padrões de teste de cores sólidas. Se não houver suporte para a desativação do som da câmera, os padrões de teste de cor sólida só serão testados se o recurso for anunciado.

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

APIs testadas:

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

teste_padrão_de_teste

Testa o parâmetro android.sensor.testPatternMode para capturar frames para cada padrão válido e verifica se os frames foram 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. Executa uma verificação de correção simples para padrões de teste de cores sólidas e barras de cores.

APIs testadas:

Aprovado:os padrões de teste com suporte são gerados corretamente.

padrões_de_teste_2

padrão_de_teste_2.jpg

curva_tonemap_de_teste

Testa a conversão do padrão de teste de RAW para YUV com tonemap linear. Neste teste, é necessário usar android.sensor.testPatternMode = 2 (COLOR_BARS) para gerar um padrão de imagem perfeito para a conversão de tons. Garante que o pipeline tenha saídas de cor adequadas com tonemap linear e entrada de imagem ideal (depende de test_test_patterns).

APIs testadas:

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

teste_tonemap_curve_raw_2

teste_tonemap_curve_raw_2.jpg

teste_tonemap_curve_yuv_2.jpg

teste_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Testa se os eventos de imagem e do sensor de movimento estão no mesmo domínio de tempo.

APIs testadas:

Aprovado:os carimbos de data/hora de movimento ficam entre os dois carimbos de data/hora da imagem.

restrição_vibração_teste

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

APIs testadas:

Aprovado:o dispositivo não vibra quando o som é desativado pela API de restrição de áudio da câmera.

cena1

cena1 é um gráfico cinza. O gráfico cinza precisa cobrir 30% do centro do campo de visão da câmera. Espera-se que o gráfico cinza desafie os 3A (exposição automática, balanço automático de branco, foco automático) moderadamente, já que a região central não tem atributos. No entanto, a solicitação de captura especifica toda a cena, incluindo recursos suficientes para a convergência de 3A.

As câmeras RFoV podem ser testadas no ambiente WFoV ou no equipamento de teste RFoV. Se uma câmera RFoV for testada no equipamento de teste WFoV, o gráfico será dimensionado em 2⁄3 para garantir alguns limites para o gráfico cinza no campo de visão e ajudar a convergir 3A. Para descrições mais detalhadas dos suportes de teste da câmera, consulte Camera ITS-in-a-box.

cena1

cena1: gráfico em tamanho original (à esquerda). Gráfico com escala de 2⁄3 (à direita).

teste_3a

Testa a convergência de 3A com um objetivo moderadamente desafiador.

APIs testadas:

Aprovado:3A converge, e os valores de 3A retornados são válidos.

teste_ae_af

Testa individualmente os algoritmos de exposição automática (AE) e foco automático (AF) de 3A.

APIs testadas:

Aprovado:3A converge, e os valores de 3A retornados são legais.

teste_ae_precapture_trigger

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

APIs testadas:

Aprovado:o AE converge.

teste_automático_vs_manual

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

APIs testadas:

Aprovado:ganhos e transformações manuais do balanço de branco informados em cada resultado de captura correspondem ao balanço automático de branco estimate do algoritmo 3A da câmera.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

teste_automático_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

teste_preto_branco

Testa se o dispositivo produz imagens em preto e branco completas. 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 exposição longa, 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 inferior a 1% de diferença.

teste_preto_branco_preto teste_preto_branco_preto
teste_preto_branco_preto.jpg teste_preto_branco_branco.jpg

teste_gráfico_preto_branco_significado

test_black_white_plot_means.png

test_burst_sameness_manual

Faz 5 sequências de 50 imagens com configuração de captura manual e verifica se todas são iguais. Esse teste pode ser usado para identificar se há frames esporádicos processados de maneira diferente ou com artefatos.

APIs testadas:

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

Com falha:mostra um pico ou uma queda no gráfico médio RGB no início de cada burst.

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

teste_igualdade_manual_média

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

resultado_da_captura_de_teste

Testa se os dados válidos são retornados em objetos CaptureResult. Faz uma captura automática, manual e 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. Traça a correção de sombreamento da lente para as capturas.

gráfico de resultados_da_captura_de_teste_lsc_auto_ch0

"test_capture_result_plot_lsc_auto_ch0.png"

região_bruto_de_teste

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

APIs testadas:

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

região_de_crop_teste_comp_bruto_comp

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

região_de_crop_teste_comp_de_cultivo_de_yuv

região_de_crop_teste_raw_comp_yuv_crop.jpg

região_de_crop_teste_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

regiões_de_crop_teste

Testes que funcionam com as regiões de corte. Usa uma imagem completa e cria patches de cinco regiões diferentes (cantos e centro). Extrai imagens com o corte definido para as cinco regiões. Compara o patch e os valores da imagem de corte.

APIs testadas:

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

teste_modelo_de_ruído_dng

Verifica se os parâmetros do modelo bruto DNG estão corretos. O gráfico mostra a variância medida de um patch central do cartão cinza em fotos brutas capturadas em um intervalo 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 seguinte documento no 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.

teste_modelo_de_ruído_dng_plog

modelo_de_ruído_dng_teste_plog.png

teste_ev_compensação_avançado

Testa se a compensação de valor de exposição (EV) é aplicada. O teste 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 EV aplicada. O valor esperado será saturado se os valores calculados excederem o intervalo real de valores da imagem. O teste vai falhar se os valores esperados e medidos não forem correspondentes ou as imagens forem superexpostas em cinco etapas.

APIs testadas:

Aprovado:as imagens mostram um aumento da exposição sem superexposição em cinco etapas.

test_ev_offset_advanced_plot_means

test_ev_offset_advanced_plot_means.png

teste_básico_ev_compensação

Testa se a compensação de VE é aplicada usando um intervalo criado com CONTROL_AE_COMPENSATION_STEP. Oito frames são capturados em cada valor de compensação.

APIs testadas:

Aprovado:captura o aumento na luma com o aumento da configuração de compensação de VE, e os oito frames capturados para cada configuração de compensação de VE têm valores de luma estáveis.

teste_básico_ev_compensação

teste_ev_compensação_básica.png

exposição_teste

Testa se uma exposição constante é alcançada conforme o ISO e o tempo de exposição variam. Faz uma série de fotos com ISO e tempo de exposição escolhidos para equilibrar uma à outra. Os resultados precisam ter o mesmo brilho, mas a imagem vai ficar mais ruído ao longo da sequência. Verifica se os valores médios de pixels de amostra estão próximos uns dos outros. Garante que as imagens não sejam fixadas a 0 ou 1, o que as faria parecer com linhas planas. O teste também pode ser executado com imagens RAW, definindo a sinalização debug no arquivo de configuração.

APIs testadas:

Aprovado:as imagens têm o mesmo brilho, mas ficam mais barulhentos com um ISO mais alto. Os planos RGB ficam planos quando o valor de ISO*exposure (link em inglês) permanece constante sobre o espaço de ganho testado.

Gráfico_de_exposição_teste

test_exposure_plot_means.png

test_exposure_mult=1,00 test_exposure_mult=64,00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

teste_jpeg

Os testes que converteram imagens YUV e 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 é inferior a 3%.

teste_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg
teste_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

trava_teste

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

APIs testadas:

Aprovado:as imagens [2, 3, 6, 8, 10, 12, 13] aumentaram o ISO ou a exposição e aparecem com médias RGB mais altas em test_latching_plot_means.png.

test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

Gráfico_de_trava_teste

test_latching_plot_means.png

linearidade_teste

Testa se o processamento do dispositivo pode ser invertido em 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 maior sensibilidade.

Gráfico_linearidade_teste

test_linearity_plot_means.png

test_locked_burst

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

APIs testadas:

Aprovado:as capturas têm aparência consistente.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

correção_de_cor_do_parâmetro_de_teste

Testa se os parâmetros android.colorCorrection.* são aplicados quando definidos. Tira fotos com valores de transformação e ganho diferentes e testa se elas têm aparência correspondentemente diferente. A transformação e os ganhos são escolhidos para tornar a saída cada vez mais vermelha ou azul. Usa um tonemap linear. O mapeamento de tons é uma técnica usada no processamento de imagens para mapear um conjunto de cores a outro e aproximar a aparência de imagens de alto intervalo dinâmico em um meio com um alcance dinâmico mais limitado.

APIs testadas:

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

test_param_color_exaction_plot_means

test_param_color_correction_plot_means.png

*O eixo X são as solicitações de captura: 0 = unidade, 1=intensificação de vermelho, 2= aumento de azul

teste_param_cor_correto_correto_req=0

teste_param_cor_correto_correto_req=0.jpg

teste_parâmetro_cor_correto_correto_req=1

test_param_color_ dinâmica_req=1.jpg (intensificação de R)

teste_parâmetro_cor_correto_correto_req=2

test_param_color_exaction_req=2.jpg (intensificação B)

test_param_exposure_time

Testa se o parâmetro android.sensor.exposureTime é aplicado.

APIs testadas:

Aprovado:cada imagem é mais clara do que a anterior.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

gráfico de tempo_de_exposição_para_testes

test_param_exposure_time_plot.png

test_param_flash_mode

Testa se o parâmetro android.flash.mode é aplicado. Define manualmente a exposição como sendo exibida no lado escuro, para que fique óbvio se o flash foi disparado ou não, e usa um tonemap linear. Verifica o centro com a imagem do bloco para conferir se há um grande gradiente criado para conferir 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.

modo_do_parâmetro_de_teste_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

modo_do_parâmetro_de_teste_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

Redução de ruído no parâmetro de teste

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

APIs testadas:

Aprovado:a SNR varia com diferentes modos de redução de ruído e se comporta de maneira semelhante ao gráfico abaixo.

Gráfico de redução de ruído no parâmetro de teste

Gráfico_redução_para_parâmetro_de_teste_SNRs.png

0: DESATIVADO, 1: RÁPIDO, 2: Sede, 3: MÍNIMO , 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

Redução de ruído no parâmetro de teste

test_param_noise_reduction_low_gain.jpg

test_param_sensitivity

Testa se o parâmetro android.sensor.sensitivity é aplicado. O teste aumenta a sensibilidade em cinco etapas com exposição fixa para cada foto.

APIs testadas:

Aprovado:RGB significa que o centro 10% fica mais claro com o aumento da sensibilidade.

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

Gráfico_de_sensitividade_para_testes

test_param_sensitivity_plot.png

modo_de_sombreamento_do_parâmetro_de teste

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

APIs testadas:

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

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

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

APIs testadas:

Aprovado:

  • test1: as duas imagens têm um tonemap linear, mas n=1 tem um gradiente mais íngreme. O canal G (verde) é mais claro para a imagem n=1.
  • test2: mesmo mapa de tons, mas com comprimentos diferentes. As imagens são iguais.
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

teste_após_intensificação_de_sensitividade_bruta

Verifica após otimização de sensibilidade RAW. Captura um conjunto de imagens RAW e YUV com sensibilidade diferente, publica a combinação de otimização de sensibilidade RAW e verifica se a média do pixel de saída corresponde às configurações da solicitação.

APIs testadas:

Aprovado:as imagens RAW ficam mais escuras com o aumento da intensidade, enquanto as imagens YUV permanecem constantes com brilho.

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

teste_pós_sensitividade_bruto_impulsionar_brutos_meios

teste_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

teste_pós_sensitividade_bruto_intensificar_yuv_plot_significa

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

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

APIs testadas:

Aprovado:cada tacada tem mais ruído do que a anterior, já que o ganho aumenta.

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

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

teste_bruto_exposição

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

APIs testadas:

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

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(100 é 1 ms, 101 é 10 ms, 10-1 é 0,1 ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_sensibilidade_bruto

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

APIs testadas:

Aprovado:a variância aumenta a cada tacada.

teste_variação_de_sensitividade_bruta

test_raw_sensitivity_variance.png

teste_redução_de_ruído_do_reprocessamento

Testa se android.noiseReduction.mode é aplicado para solicitações de reprocessamento. Captura imagens reprocessadas com a câmera mal iluminada. Usa um alto ganho analógico para garantir que a imagem de captura tenha ruído. Captura três imagens reprocessadas, para NR desativado, "rápido" e "alta qualidade". Captura uma imagem reprocessada com baixo ganho e NR desativado e usa a variância disso como o valor de referência.

APIs testadas:

Aprovação: RÁPIDO >= DESLIGADO, sede >= RÁPIDO, sede >> DESATIVADO

Gráfico SNR x NR_MODE típico

Gráfico SNR x NR_MODE típico

teste_tonemap_sequência

Testa uma sequência de fotos com diferentes curvas de tonemap. Captura três imagens manuais com um tonemap linear. Captura três imagens manuais com o tonemap padrão. Calcula o delta entre cada par de frames consecutivo.

APIs testadas:

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

test_tonemap_series_i=0

teste_tonemap_sequência_i=0.jpg

test_tonemap_series_i=1

teste_tonemap_sequência_i=1.jpg

teste_tonemap_sequência_i=2

teste_tonemap_sequência_i=2.jpg

teste_tonemap_sequência_i=3

teste_tonemap_sequência_i=3.jpg

teste_tonemap_sequência_i=4

teste_tonemap_sequência_i=4.jpg

teste_tonemap_sequência_i=5

teste_tonemap_sequência_i=5.jpg

teste_yuv_jpeg_all

Testa se todos os tamanhos e formatos informados para captura de imagem funcionam. Usa uma solicitação manual com um tonemap 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 imagens têm uma diferença máxima de RMS (raiz do valor médio quadrado de um sinal) nas imagens convertidas em RGB com 3% da imagem YUV de maior resolução.

teste_yuv_jpeg_all

teste_yuv_jpeg_all.png

teste_yuv_plus_dng

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

APIs testadas:

Aprovado:o teste é concluído e as imagens solicitadas são retornadas.

teste_yuv_plus_dng

teste_yuv_plus_dng.jpg

teste_yuv_plus_jpeg

Testa a captura de um único frame como saídas YUV e JPEG. Usa uma solicitação manual com um tonemap 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 em RMS (raiz do valor médio quadrado de um sinal).

teste_yuv_plus_jpg_jpg.jpg teste_yuv_plus_jpeg_yuv.jpg
teste_yuv_plus_jpg_jpg.jpg teste_yuv_plus_jpeg_yuv.jpg

teste_yuv_plus_raw

Testa a captura de um único frame como saídas RAW/RAW10/RAW12 e YUV, se compatível. Usa uma solicitação manual com tonemap linear para que os dados brutos e YUV sejam iguais. Compara os valores RGB do centro de 10% 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 em RMS (raiz do valor médio quadrado de um sinal).

teste_yuv_plus_raw_shading=1_raw.jpg teste_yuv_plus_raw_shading=1_yuv.jpg
teste_yuv_plus_raw_shading=1_raw.jpg teste_yuv_plus_raw_shading=1_yuv.jpg

cena2_a

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

cena2_a

cena2_a

teste_automático_flash

Testa se o flash automático é acionado em uma cena escura. Verifica se o flash automático é acionado verificando se o centro da imagem do bloco tem um gradiente grande. Para acionar o flash automático, o tablet e as luzes no equipamento de teste precisam estar desligados. O tablet é desligado pelo teste, e as luzes podem ser apagadas automaticamente com o controle Arduino. A cena precisa estar completamente escura para que o teste funcione corretamente. Assim, a abertura do tablet traseiro precisa estar completamente coberta pelo tablet da cena, e a abertura frontal precisa estar coberta por uma abertura e pelo smartphone DUT para bloquear a entrada de luz difusa no equipamento.

APIs testadas:

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

teste_autoenquadramento

Testa o comportamento do enquadramento automático do dispositivo de câmera. Executa 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 está definido como AUTOFRAMING_STATE_CONVERGED).

APIs testadas:

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

tela_teste_p3

Testa a captura do 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 do Display P3 e cores fora da gama sRGB.

efeitos_testes

Captura o frame dos efeitos de câmera com suporte e verifica se eles foram gerados corretamente. O teste verifica apenas os efeitos OFF e MONO, mas salva as imagens para todos os efeitos com suporte.

APIs testadas:

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

efeitos_de_teste_MONO

efeitos_de_teste_MONO.jpg

Combos_formato_de_teste

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

APIs testadas:

Aprovado:todas as combinações foram capturadas.

qualidade_jpeg_teste

Testa a qualidade da compactação JPEG da câmera. Defina as qualidades de JPEG com android.jpeg.quality e garanta que as tabelas de quantização mudem corretamente.

APIs testadas:

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

qualidade_jpeg_teste

Médias da matriz de luma/chroma DQT da câmera traseira do Pixel 4 em comparação com a qualidade JPEG

falha em test_jpeg_quality

Exemplo de teste com falha

Observe que, para imagens de qualidade muito baixa (jpeg.quality < 50), não há aumento de compactação na matriz de quantização.

número_de_rostos_de_teste

Testa a detecção facial.

APIs testadas:

Aprovado:encontra três rostos.

teste_num_faces_fd_mode_1

teste_num_faces_fd_mode_1.jpg

taxa_mínimo_de_frames da visualização do teste

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

APIs testadas:

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

teste_reprocess_uv_swap

Testes para que o reprocessamento YUV não troque os planos U e V. Isso é detectado pelo cálculo da 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 aumento do SAD, presume-se que a saída tenha os planos U e V corretos.

APIs testadas:

Aprovado:os aviões U e V não são trocados.

teste_reprocess_uv_swap

teste_reprocess_uv_swap.png

cena2_b

número_de_rostos_de_teste

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

APIs testadas:

Aprovado:encontra três rostos.

teste_num_faces_fd_mode_1

teste_num_faces_fd_mode_1.jpg

teste_yuv_jpeg_captura_igualdade

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

APIs testadas:

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

cena2_c

número_de_rostos_de_teste

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

APIs testadas:

Aprovado:encontra três rostos.

teste_num_faces_fd_mode_1

teste_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

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

Aprovado:PRECISA ter latência de captura JPEG da Camera2 menor que 1.000 ms para resolução de 1080p, conforme medido pelo PerformanceTest da câmera CTS em condições de iluminação ITS (3.000K) 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.

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

cena2_d

número_de_rostos_de_teste

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

APIs testadas:

Aprovado:encontra três rostos.

cena2_e

imagem_contínua_do_teste

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

APIs testadas:

Aprovado:o sistema 3A é ajustado ao final de uma captura de 50 frames.

número_de_rostos_de_teste

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

APIs testadas:

Aprovado:encontra três rostos.

cena2_f

cenário2_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 plano de fundo.

cena2_f.png

cena2_f

número_de_rostos_de_teste

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

APIs testadas:

Aprovado:encontra três rostos.

teste_num_faces_fd_mode_1

teste_num_faces_fd_mode_1.jpg

cena3

O Scene3 usa o gráfico ISO12233, e a maioria dos testes usa um método de extração de gráficos para encontrar o gráfico na cena. Por esse motivo, a maioria das imagens salvas não tem bordas como as imagens das cenas 1, 2 ou 4, mas apenas o gráfico. O gráfico precisa estar na orientação correta para que o localizador de gráficos funcione de maneira ideal.

consistência_teste_3a

Testa a consistência 3A.

APIs testadas:

Aprovado:3A converge para exposição, ganho, awb (equilíbrio automático de branco) e fd (distância de foco) três vezes dentro da tolerância.

aprimoramento_da_borda_de_teste

Testa se o parâmetro android.edge.mode é aplicado corretamente. Captura imagens sem reprocessamento para cada modo de borda e retorna nitidez da imagem de saída e dos metadados do resultado da captura. Processa uma solicitação de captura com um determinado modo de borda, sensibilidade, tempo de exposição, distância do foco e parâmetro de superfície de saída.

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

APIs testadas:

Parâmetros da câmera afetados:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (modo rápido)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (modo de alta qualidade)

espelho_de_virar_teste

Testa se a imagem está orientada corretamente de acordo com a seção 7.5.2 do CDD: câmera frontal [C-1-5].

Imagens espelhadas, invertidas ou giradas podem ser identificadas pelo recurso de diamante próximo ao centro.

Aprovado:a imagem não foi invertida, espelhada nem girada.

test_flip_mirror_patch

test_flip_mirror_scene_patch.jpg

testar_paisagem_para_retrato

Testa se as funções de paisagem para retrato modificam corretamente as funções de sensores orientados a paisagem.

APIs testadas:

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

testar_paisagem_para_retrato

teste_paisagem_para_portrait.png

test_lens_movement_reporting

Testa se o sinal de movimento da lente é relatado corretamente. Captura uma sequência de 24 imagens, com os primeiros 12 frames na distância de foco ideal (conforme encontrado por 3A) e os últimos 12 frames na distância mínima de foco. Perto do frame 12, a lente se move, fazendo com que a nitidez caia. A nitidez acaba se estabilizando à medida que a lente se move para a posição final. A sinalização de movimento da lente precisa ser declarada em todos os frames em que a nitidez é intermediária em relação à nitidez nos primeiros frames, com a lente estacionária na distância focal ideal, e nos últimos alguns frames em que a lente está estacionária na distância focal mínima. O enquadramento exato em que a lente se move não é importante. O que é verificado é se a sinalização de movimento é declarada quando a lente está se movendo.

APIs testadas:

Aprovado:o indicador de movimento da lente é True no enquadramento 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 muda.
  • 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 a uma distância focal ideal ou os últimos frames a uma distância mínima de foco.

teste_reprocessar_borda_aprimorada

Testa se os métodos de reprocessamento com suporte para aprimoramento de borda funcionam corretamente. Processa uma solicitação de captura com um determinado modo de borda de reprocessamento e compara modos diferentes para capturar com os modos de borda de reprocessamento desativados.

APIs testadas:

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

Gráfico de aprimoramento de borda do teste [test_reprocess_edge]

test_reprocess_edge_enhancement_plot.png

cena4

A Scene4 consiste em um círculo preto sobre um fundo branco dentro de um quadrado.

cena4

cena4

proporção_de_aspecto_teste_e_corte

Testa se as imagens ficam distorcidas ou cortadas inesperadamente no pipeline de imagem. Tira fotos de um círculo sobre todos os formatos. Verifica se o círculo não está distorcido, se 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 campo de visão (foV) máximo possível é preservado.

Mecanismos de falha:

  • A câmera não está alinhada com o círculo mostrado no tablet, no centro da cena capturada.
  • O círculo na imagem capturada é distorcido pelo pipeline de processamento.
  • A imagem de resolução mais baixa é cortada duas vezes no pipeline da imagem, criando um campo de visão diferente entre 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 largura da imagem.
  • O círculo na imagem capturada tem um reflexo no centro e não aparece totalmente preenchido.

teste_alinhamento_várias_câmeras

Testa os parâmetros de calibração relacionados ao posicionamento da câmera em sistemas com várias delas. Usando as subcâmeras físicas de várias câmeras, tira 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 com as coordenadas de pixel e compara com as originais como uma verificação de validade. Compara os tamanhos dos círculos, verificando se as distâncias focais das câmeras são diferentes.

APIs testadas:

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

Mecanismos de falha:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION ou LENS_POSE_ROTATION são valores de design, e não dados reais de calibração.
  • O sistema de câmeras não é adequado para a configuração de teste. Por exemplo, testar um sistema de câmera grande e ultra grande angular com o equipamento de teste RFoV. Para ver mais informações, consulte Perguntas frequentes1 sobre a câmera ITS-in-a-box.

proporção_e_corte_da_visualização_do_teste

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

APIs testadas:

Aprovado:as imagens não são esticadas, o centro delas não difere em mais de 3% e o campo de visão (foV, na sigla em inglês) máximo possível é preservado.

estabilização_da_visualização_teste

Verifica os tamanhos de visualização compatíveis para garantir que o campo de visão seja cortado corretamente. O teste captura dois vídeos, um com estabilização de visualização ON e outro com estabilização de visualização OFF. Um frame representativo é selecionado em cada vídeo e analisado para garantir que as mudanças de campo de visão nos dois vídeos estejam de acordo com as especificações.

APIs testadas:

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

proporção_e_corte_do_aspecto_do_vídeo_teste

Captura 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, as imagens cortadas mantêm o círculo no centro e o tamanho dele não muda para um formato constante ou com uma resolução diferente (verificação de campo de visão).

APIs testadas:

Aprovado:os frames de vídeo não são esticados, o centro dos frames não difere em mais de 3% e o campo de visão (foV, na sigla em inglês) máximo possível é preservado.

cena5

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

Para preparar a cena, coloque um difusor na frente da câmera e aponte a câmera para uma fonte de iluminação de aproximadamente 2.000 lux. As imagens capturadas na cena 5 precisam de iluminação difusa sem recursos evidentes. Confira a seguir um exemplo de imagem:

cena5

captura da cena 5

Sombreamento_da_lente_de_teste_e_uniformidade_de_cor

Testa se a correção de sombreamento da lente é aplicada corretamente e se a cor de um cenário uniforme monocromático é distribuída de maneira uniforme. Executa 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 y de cada bloco de amostra especificado e determina aprovação ou falha comparando com o valor central y. O teste de uniformidade de cor é avaliado no espaço r/g e b/g.

APIs testadas:

Aprovado:no raio especificado da imagem, a variação do valor de r/g e b/g precisa ser menor que 20% para ser aprovado no teste.

cena6

A Scene6 é uma grade de pequenos círculos com um quadrado em um canto para indicar a orientação. Os círculos pequenos são necessários para testar a função de zoom em um intervalo grande.

cena6

cena6

zoom_no_sensor_teste

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

Com o caso de uso de stream definido como CROPPED_RAW, o teste faz duas capturas no intervalo de zoom: uma imagem RAW de campo de visão completo (FoV) e uma imagem RAW cortada. O teste converte as imagens em matrizes RGB, reduz a imagem RAW recortada em tamanho original para o tamanho informado por SCALER_RAW_CROP_REGION e calcula a diferença 3D do quadrado médio (RMS, na sigla em inglês) entre as duas imagens.

APIs testadas:

Aprovado:a diferença do quadrado médio de raiz 3D (RMS, na sigla em inglês) entre a imagem RAW cortada e a imagem RAW completa do campo de visão é menor que 1%.

teste_zoom

Testa o comportamento do zoom da câmera. Faz capturas no intervalo do zoom e verifica se os círculos aumentam à medida que a câmera aumenta o zoom.

APIs testadas:

Aprovado:o tamanho relativo do círculo capturado é preciso em relação à proporção de zoom solicitada para garantir que o zoom da câmera esteja correto.

teste_zoom

test_zoom para encontrar o contorno do círculo mais próximo do centro.

teste_baixa_latência_zoom

Testa o comportamento do 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 círculos nas imagens de saída correspondem às proporções de zoom nos metadados de captura.

APIs testadas:

Aprovado:o tamanho relativo do círculo 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 de vídeo e a saída de vídeo exibem e gravam a mesma saída. Calcula o tamanho do círculo mais próximo do centro em diferentes proporções de zoom e verifica se o tamanho do círculo aumenta conforme a proporção de zoom aumenta.

APIs testadas:

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

VGA_640x480_frame_chave.png

VGA_640x480_key_frame.png (antes do zoom)

visualização_640x480_frame_chave.png

preview_640x480_key_frame.png (antes do zoom)

VGA_640x480_frame_chave_zoomed.png

VGA_640x480_key_frame.png (após o zoom)

visualização_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (após o zoom)

cena_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 um controle preciso do ambiente de teste.

cena_hdr

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

cena_hdr

cena_hdr

teste_extensão_hdr

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 código.

noite_cena

A cena scene_night consiste em um círculo branco com quatro círculos menores dentro dele, todos em um plano de fundo preto. O círculo menor no canto superior direito é mais escuro que os outros para indicar a orientação.

noite_cena

noite_cena

extensão_noite_teste

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

  • A captura com a extensão "Noite" ativada leva mais tempo.
  • A captura com a extensão "Noite" ativada é mais clara ou tem artefatos de cena com melhor aparência.

APIs testadas:

Aprovado:em comparação com uma captura sem a extensão Night, uma captura com essa extensão ativada leva pelo menos 0,5 segundo a mais. A captura precisa ser pelo menos 10% mais brilhante, ou os pontos cinzas na cena precisam ter valores de 20 pixels a menos que o centro do círculo ao redor.

fusão_do_sensor

Os testes de fusão de sensores exigem movimentos específicos do smartphone em frente a um padrão quadrado. Para obter os melhores resultados, certifique-se de que o gráfico de teste esteja bem montado. Gráficos que não são planos afetam os cálculos de rotação para muitos dos testes. Os testes sensor_fusion podem ser automatizados com a Caixa de fusão do sensor.

quadriculado

Imagem do quadriculado

test_multi_camera_frame_sync

Os testes que mostram carimbos de data/hora de frames capturados pela câmera lógica têm até 10 ms com o cálculo dos ângulos de quadrados dentro do tabuleiro 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.

estabilização_da_visualização_de_teste

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

APIs testadas:

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

Confira a seguir exemplos de vídeos com e sem estabilização.

  • Exemplo de vídeo com estabilização

  • Vídeo de amostra sem estabilização

fusão do sensor_de_teste

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 quadriculado. O movimento dura cerca de dois segundos. Esse teste será ignorado se nenhum giroscópio estiver 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 na direção x e y implica que o smartphone não está montado com segurança no disco de fixação, reduzindo a probabilidade de aprovação do teste. O número de ciclos no gráfico depende da velocidade de gravação para salvar frames.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

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

    test_sensor_fusion_plot_rotations.png

    rotações_de_gráfico_de_fusão_do_sensor_de_teste

APIs testadas:

Aprovado:o deslocamento dos carimbos de data/hora da câmera e do giroscópio é inferior a 1 ms, de acordo com a seção 7.3.9 Sensores de alta fidelidade do C-2-14 (CDD).

Mecanismos de falha:

  • Erro de deslocamento: o deslocamento da câmera e do giroscópio não está calibrado corretamente para dentro de +/-1 ms.
  • Quedas de frames: o pipeline não é rápido o suficiente para capturar 200 frames consecutivos.
  • Erros de soquete: adb não pode se conectar de maneira 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 o giroscópio e a rotação da câmera variam consideravelmente conforme a câmera gira pelas partes não planas do gráfico.
  • A câmera não está em um suporte 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, porque a câmera traseira geralmente tem uma saliência elevada para o resto do smartphone, criando uma inclinação ao montar a parte de trás do smartphone no disco de fixação.

estabilização_de_vídeo_teste

Testes que indicam que o vídeo estabilizado gira menos do que o giroscópio.

APIs testadas:

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

Confira a seguir exemplos de vídeos com e sem estabilização.

  • Exemplo de vídeo com estabilização

  • Vídeo de amostra sem estabilização

snapshot_led_de_teste

Testa se os instantâneos de LED não saturam nem tonalizam a imagem.

Este teste adiciona um controlador de iluminação à caixa de fusão do sensor 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 distinto devido ao flash, o teste calcula a média da imagem em 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 R/G e B/G e verifica se elas estão entre 0,95 e 1,05.

APIs testadas:

Aprovado:as proporções R/G e B/G estão dentro de 0,95 e 1,05. A média da imagem em Flash está dentro do intervalo (68, 102).