Esta página fornece uma lista abrangente dos testes do Camera Image Test Suite (ITS), que faz parte do Android Compatibility Test Suite (CTS) Verifier. Os testes ITS são testes funcionais, o que significa que não medem a qualidade da imagem, mas que todas as funções anunciadas da câmera 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.
Testes de portas ITS da câmera por propriedades de câmera exigidas, nível de API e nível de classe de desempenho de mídia (MPC). Para o nível de API, o ITS usa ro.product.first_api_level
para bloquear testes adicionados em um nível de API específico que testa experiências negativas do usuário para funcionalidade em níveis de API mais baixos. O ITS usa ro.vendor.api_level
para realizar testes de recursos adicionados em um nível de API específico que exigem novos recursos de hardware. Se ro.odm.build.media_performance_class
for definido para um dispositivo, o ITS exigirá a execução de testes específicos dependendo do nível do MPC.
Os testes são agrupados por cena da seguinte forma:
- scene0 : captura metadados, jitter, giroscópio, vibração
- cena1 : Exposição, sensibilidade, compensação EV, YUV vs JPEG/RAW
- scene2 : Detecção de rosto, testes que exigem cenas coloridas ou escuridão total
- cena3 : Aprimoramento de borda, movimento da lente
- scene4 : Proporção de aspecto, corte, campo de visão
- cena 5 : Sombreamento de lente
- cena 6 : Zoom
- scene_extensions : Extensões de câmera
- sensor_fusion : deslocamento de tempo da câmera/giroscópio
Consulte as seções individuais para obter uma descrição de cada cena.
cena0
Os testes Scene0 não requerem informações específicas da cena. No entanto, o telefone deve estar parado para testes de giroscópio e vibração.
test_burst_capture
Verifica se todo o pipeline de captura pode acompanhar a velocidade da captura em tamanho real e o tempo de CPU.
APIs testadas:
Aprovado: captura uma série de imagens em tamanho real e a câmera é rápida o suficiente para evitar o tempo limite.
test_capture_result_dump
Testa se um resultado de captura é retornado de uma captura manual e, em seguida, faz dump dele.
APIs testadas:
Aprovado: conclui a captura e despeja os resultados da captura.
test_gyro_bias
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 é inferior a 0,01 ao longo do tempo.
test_gyro_bias_plot.png
teste_jitter
Mede o jitter nos carimbos de data/hora da câmera.
APIs testadas:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Aprovado: há pelo menos um delta de 30 ms entre os quadros.
test_jitter_plot.png (Observe o pequeno intervalo do eixo y. O jitter é realmente pequeno neste gráfico.)
test_metadata
Testa a validade das entradas de metadados. Observa os resultados da captura e os objetos com características da câmera. Este teste usa valores de exposição e ganho auto_capture_request
porque o conteúdo da imagem não é importante.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Aprovado: Nível de hardware, tags rollingShutterSkew
, frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV e distância hiperfocal estão presentes e possuem 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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprovado: Os dados de saída têm uma tolerância a erros inferior a 0,2%.
teste_leitura_gravação
Testa se o dispositivo grava os valores corretos de exposição e ganho lendo os metadados de captura.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Aprovado: os valores de leitura e gravação correspondem em todas as fotos.
test_sensor_events
Testa as consultas do dispositivo e imprime eventos de sensor para dispositivos que anunciam suporte à fusão de sensores. Os sensores esperados são acelerômetro, giroscópio e magnetômetro. Este teste só funciona se a tela estiver ligada, o que significa que o dispositivo não está no modo de espera.
APIs testadas:
Aprovado: Eventos para cada sensor são recebidos.
teste_solid_color_test_pattern
Testa se os padrões de teste de cores sólidas são gerados corretamente para silenciar a câmera. Se o silenciamento da câmera for compatível, os padrões de teste de cores sólidas deverão ser suportados. Se o silenciamento da câmera não for compatível, os padrões de teste de cores sólidas serão testados apenas se o recurso for anunciado.
Se houver suporte para imagens RAW, 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 suportam imagens RAW, apenas o preto é testado.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Aprovado: Os padrões de teste sólidos suportados têm a cor correta e há baixa variação na imagem.
teste_teste_padrão
Testa o parâmetro android.sensor.testPatternMode
para capturar quadros para cada padrão de teste válido e verifica se os quadros são gerados corretamente para cores sólidas e barras de cores. Este teste inclui as seguintes etapas:
- Captura imagens para todos os padrões de teste suportados.
- Executa uma verificação simples de correção para padrões de teste de cores sólidas e barras coloridas.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Aprovado: os padrões de teste suportados são gerados corretamente.
test_test_patterns_2.jpg
test_tonemap_curve
Testa a conversão do padrão de teste de RAW para YUV com mapa de tons linear. Este teste requer android.sensor.testPatternMode = 2
(COLOR_BARS) para gerar um padrão de imagem perfeito para conversão de mapa de tons. Garante que o pipeline tenha saídas de cores adequadas com mapa de tons linear e entrada de imagem ideal (depende de test_test_patterns
).
APIs testadas:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprovação: O YUV e o RAW são semelhantes entre si.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Testa se os eventos do sensor de imagem e movimento estão no mesmo domínio de tempo.
APIs testadas:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Aprovado: os carimbos de data/hora do movimento estão entre os dois carimbos de data/hora da imagem.
teste_vibração_restrição
Testa se a vibração do dispositivo está funcionando conforme o esperado.
APIs testadas:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Aprovado: o dispositivo não vibra quando silenciado pela API de restrição de áudio da câmera.
cena1
scene1 é um gráfico cinza. O gráfico cinza deve cobrir 30% do centro do campo de visão da câmera. Espera-se que o gráfico cinza desafie 3A (exposição automática, equilíbrio de branco automático, foco automático) moderadamente, pois a região central não possui recursos. No entanto, a solicitação de captura especifica toda a cena que inclui recursos suficientes para a convergência de 3A.
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 ⅔ para garantir alguns limites para o gráfico cinza no FoV para ajudar a convergir 3A. Para obter descrições mais detalhadas dos equipamentos de teste de câmera, consulte Camera ITS-in-a-box .
cena1: gráfico em tamanho real (esquerda). ⅔ gráfico em escala (direita).
teste_3a
Testa a convergência de 3A com uma meta moderadamente desafiadora.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Aprovado: 3A converge e os valores 3A retornados são válidos.
teste_ae_af
Testa os algoritmos de exposição automática (AE) e foco automático (AF) 3A individualmente.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Aprovado: 3A converge e os valores 3A retornados são legais.
test_ae_precapture_trigger
Testa a máquina de estado AE ao usar o gatilho de pré-captura. Captura cinco solicitações manuais com AE desabilitado. A última solicitação possui um gatilho de pré-captura de AE, que deve ser ignorado porque o AE está desabilitado.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Aprovado: AE converge.
test_auto_vs_manual
Os testes que capturaram fotos automáticas e manuais têm a mesma aparência.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Aprovado: Os ganhos e transformações manuais do equilíbrio de branco relatados em cada resultado de captura correspondem à estimate
automática do equilíbrio de branco do algoritmo 3A da câmera.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
teste_preto_branco
Testa se o dispositivo produz imagens totalmente em preto e branco. Faz duas capturas, a primeira com ganho extremamente baixo e exposição curta, que resulta em uma foto preta, e a segunda com ganho extremamente alto e exposição longa, que resulta em uma foto branca.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprovado: Produz imagens em preto e branco. Canais saturados de imagens brancas possuem valores RGB de [255, 255, 255] com margem de erro inferior a 1% de diferença.
teste_preto_branco_preto.jpg | teste_preto_branco_branco.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Captura 5 sequências de 50 imagens com configuração de captura manual e verifica se são todas idênticas. Este teste pode ser usado para identificar se existem frames esporádicos que são processados de forma diferente ou possuem artefatos.
APIs testadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Aprovado: As imagens são idênticas visualmente e em valores RGB.
Falha: mostra um aumento ou queda no gráfico médio RGB no início de cada explosão
- 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.jpg
test_burst_sameness_manual_plot_means.png
resultado_de_captura_de_teste
Testa se dados válidos retornam em objetos CaptureResult
. Faz uma captura automática, manual e automática.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
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 da lente para as capturas.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Testa se os fluxos RAW não podem ser recortados.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Aprovado: as imagens YUV são cortadas no centro, mas não as imagens RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Testa se as regiões de cultivo funcionam. Captura uma imagem completa e cria patches de 5 regiões diferentes (cantos e centro). Captura imagens com corte definido para as 5 regiões. Compara o patch e os valores da imagem cortada.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Passar: A imagem da região recortada corresponde ao patch que corresponde à imagem recortada.
test_dng_noise_model
Verifica se os parâmetros do modelo bruto DNG estão corretos. O gráfico representa a variância medida de uma área central do cartão cinza em fotos brutas capturadas em uma faixa de sensibilidades e compara esses valores com a variância esperada em cada sensibilidade pelo modelo de ruído DNG na câmera HAL (com base no O,S parâmetros retornados nos objetos de resultado da captura). Para obter mais detalhes sobre o modelo de ruído DNG, baixe o seguinte documento sobre o modelo de ruído DNG .
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.png
test_ev_compensation_advanced
Testa se a compensação do valor de exposição (EV) é aplicada. O teste aumenta a exposição em oito etapas e verifica o brilho medido versus o brilho esperado. Os valores esperados são calculados a partir do brilho da imagem sem nenhuma compensação EV aplicada e o valor esperado será saturado se os valores calculados excederem a faixa de valores reais da imagem. O teste falhará se os valores esperados e os valores medidos não corresponderem ou se as imagens forem superexpostas em cinco etapas.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Aprovado: As imagens mostram exposição crescente sem superexposição em cinco etapas.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Testa se a compensação EV é aplicada usando um intervalo criado com CONTROL_AE_COMPENSATION_STEP
. Oito quadros são capturados em cada valor de compensação.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Aprovado: captura o aumento de luminância com configuração de compensação EV aumentada, e os oito quadros capturados para cada configuração de compensação EV têm valores de luminância estáveis.
test_ev_compensation_basic.png
exposição_teste
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 equilibrar entre si. Os resultados devem ter o mesmo brilho, mas ao longo da sequência a imagem deve ficar mais ruidosa. Verifica se os valores médios dos pixels da amostra estão próximos uns dos outros. Garante que as imagens não sejam fixadas em 0 ou 1 (o que as faria parecer linhas planas). O teste também pode ser executado com imagens RAW definindo o sinalizador debug
em seu arquivo de configuração.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprovado: As imagens têm o mesmo brilho, mas ficam mais barulhentas com ISO mais alto. Os planos RGB são planos quando o valor da exposição ISO* é constante no espaço de ganho testado.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
teste_jpeg
Os testes que converteram imagens YUV e imagens JPEG de dispositivos têm a mesma aparência. O teste pega 10% do centro da imagem, calcula o valor RGB e verifica se eles correspondem.
APIs testadas:
Aprovado: A diferença RGB média entre cada imagem é inferior a 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Testa se as configurações (exposição e ganho) travam no quadro certo para câmeras FULL
e LEVEL_3
. Tira uma série de fotos usando solicitações consecutivas, variando os parâmetros da solicitação de captura entre as fotos. Verifica se as imagens possuem as propriedades esperadas.
APIs testadas:
Aprovado: Imagens [2, 3, 6, 8, 10, 12, 13] aumentaram ISO ou 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=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=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
teste_linearidade
Testa que o processamento do dispositivo pode ser invertido para pixels lineares. Captura uma sequência de disparos com o dispositivo apontado para um alvo uniforme.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprovado: os valores de R, G, B devem aumentar linearmente com o aumento da sensibilidade.
test_linearity_plot_means.png
test_locked_burst
Testa bloqueio 3A e explosão YUV (usando configuração automática). Este teste foi projetado para ser aprovado mesmo em dispositivos limitados que não possuem MANUAL_SENSOR
ou PER_FRAME_CONTROLS
. O teste verifica a consistência da imagem YUV enquanto a verificação da taxa de quadros está em CTS.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Aprovado: As capturas parecem consistentes.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
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 para aproximar a aparência de imagens de alta faixa dinâmica em um meio que possui uma faixa dinâmica mais limitada.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Aprovado: Os valores de R e B aumentam de acordo com a transformação.
test_param_color_correction_plot_means.png
*O eixo x são as solicitações de captura: 0 = unidade, 1=reforço vermelho, 2=reforço azul
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (aumento de R)
test_param_color_correction_req=2.jpg (aumento B)
test_param_exposure_time
Testa se o parâmetro android.sensor.exposureTime
é aplicado.
APIs testadas:
Passe: Cada foto é mais clara que a anterior.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Testa se o parâmetro android.flash.mode
é aplicado. Define manualmente a exposição para o lado escuro, para que seja óbvio se o flash disparou ou não, e usa um mapa de tons linear. Verifica o centro com a imagem do bloco para ver se há um grande gradiente criado para verificar se o flash disparou.
APIs testadas:
Aprovado: O centro da imagem do bloco tem um grande gradiente, o que significa que o flash disparou.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
Testa se o parâmetro android.noiseReduction.mode
é aplicado corretamente quando definido. Captura imagens com a câmera pouco iluminada. Usa um alto ganho analógico para garantir que a imagem capturada tenha ruído. Captura três imagens, para NR desligado, "rápido" e "alta qualidade". Também captura uma imagem com baixo ganho e NR desativado e usa a variação disso como linha de base. Quanto maior o SNR (Relação Sinal-Ruído), melhor será a qualidade da imagem.
APIs testadas:
Aprovado: o SNR varia com os diferentes modos de redução de ruído e se comporta de maneira semelhante ao gráfico abaixo.
test_param_noise_reduction_plot_SNRs.png
0: DESLIGADO, 1: RÁPIDO, 2: HQ, 3: MIN, 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensibilidade
Testa se o parâmetro android.sensor.sensitivity
é aplicado. O teste aumenta a sensibilidade em 5 etapas com exposição fixa para cada foto.
APIs testadas:
Aprovado: RGB significa centro de 10% fica mais brilhante com maior sensibilidade.
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
Testa se o parâmetro android.shading.mode
foi aplicado.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Aprovado: Os modos de sombreamento são alterados e os mapas de sombreamento da lente são modificados conforme o esperado.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Testa se o parâmetro android.tonemap.mode foi 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. Este teste consiste em dois testes, test1 e test2.
APIs testadas:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Passar:
- test1: Ambas as imagens possuem um mapa de tons linear, mas n=1 possui um gradiente mais acentuado. O canal G (verde) é mais brilhante para a imagem n=1.
- test2: Mesmo mapa de tons, mas comprimento diferente. As imagens são iguais.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Verifica o aumento de sensibilidade pós-RAW. Captura um conjunto de imagens RAW e YUV com sensibilidade diferente, publica a combinação de aumento de sensibilidade RAW e verifica se a média do pixel de saída corresponde às configurações de solicitação.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprovado: as imagens RAW ficam mais escuras à medida que o aumento aumenta, enquanto as imagens YUV permanecem com brilho constante
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
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 apenas raw, em uma explosão.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Passe: Cada tiro é mais barulhento que o tiro anterior, à medida que o ganho aumenta.
Usa a variação da célula central da grade de estatísticas.
test_raw_burst_sensitivity_variance.png
test_raw_exposição
Captura um conjunto de imagens brutas com tempo de exposição crescente e mede os valores dos pixels.
APIs testadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Aprovado: Aumentar o ISO (ganho) torna os pixels mais sensíveis à luz, fazendo com que o gráfico se mova para a esquerda.
test_raw_exposure_s=55.png
(10⁰ é 1 ms, 10¹ é 10 ms, 10⁻¹ é 0,1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensibilidade
Captura um conjunto de imagens brutas com sensibilidades crescentes e mede o ruído (variância) no centro de 10% da imagem. Testa se cada disparo é mais barulhento que o anterior.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Passe: A variância aumenta a cada tiro.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Testa se android.noiseReduction.mode
é aplicado para reprocessar solicitações. Captura imagens reprocessadas com a câmera pouco iluminada. Usa um alto ganho analógico para garantir que a imagem capturada tenha ruído. Captura três imagens reprocessadas, para NR desligado, "rápido" e "alta qualidade". Captura uma imagem reprocessada com baixo ganho e NR desativado e usa a variação disso como linha de base.
APIs testadas:
Aprovado: RÁPIDO >= DESLIGADO, HQ >= RÁPIDO, HQ >> DESLIGADO
Gráfico típico de SNR vs NR_MODE
test_tonemap_sequence
Testa uma sequência de fotos com diferentes curvas de mapa de tons. Captura 3 fotos manuais com um mapa de tons linear. Captura 3 fotos manuais com mapa de tons padrão. Calcula o delta entre cada par de quadros consecutivos.
APIs testadas:
Passagem: Existem 3 quadros idênticos seguidos por um conjunto diferente de 3 quadros idênticos.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Testa se todos os tamanhos e formatos relatados para captura de imagem funcionam. Usa uma solicitação manual com um mapa de tons linear para que YUV e 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:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Aprovado: Todos os centros de imagem têm uma diferença máxima RMS (valor quadrático médio de um sinal) em imagens convertidas RGB com 3% da imagem YUV de resolução mais alta.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Testa se os tamanhos e formatos relatados para captura de imagem funcionam.
APIs testadas:
Aprovado: o teste é concluído e retorna as imagens solicitadas.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Testa a captura de um único quadro como saídas YUV e JPEG. Usa uma solicitação manual com um mapa de tons linear para que YUV e JPEG tenham a mesma aparência quando convertidos pelo módulo image_processing_utils
.
APIs testadas:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Aprovado: as imagens YUV e JPEG são semelhantes e têm menos de 1% de diferença RMS (valor quadrático médio de um sinal).
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Testa a captura de um único quadro como saídas RAW/RAW10/RAW12 e YUV, se houver suporte. Usa uma solicitação manual com mapa de tons linear, portanto, espera-se que raw e YUV sejam iguais. Compara os valores RGB centrais de 10% das imagens convertidas em RGB. Registra android.shading.mode
.
APIs testadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
-
android.hardware.graphics.ImageFormat#RAW12
Aprovado: imagens YUV e brutas são semelhantes e têm menos de 3,5% de diferença RMS (valor quadrático médio de um sinal).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
cena2_a
scene2_a tem três rostos com fundo cinza e roupas neutras. Os rostos são escolhidos para terem uma ampla gama de tons de pele. O gráfico deve ter a orientação correta para que a detecção de rosto funcione de maneira ideal.
cena2_a
test_auto_flash
Testa se o flash automático é acionado em uma cena escura. Verifica se o flash automático é disparado verificando se o centro da imagem lado a lado tem um grande gradiente. Para acionar o flash automático, o tablet e as luzes do equipamento de teste devem estar desligados. O tablet é desligado pelo teste e as luzes podem ser desligadas automaticamente com o controlador Arduino. A cena deve estar completamente escura para que o teste funcione corretamente. Como tal, a abertura traseira do tablet deve ser completamente coberta pelo tablet de cena, e a abertura frontal deve ser coberta por uma abertura e pelo telefone DUT para bloquear a entrada de luz difusa no equipamento.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Aprovado: O centro da imagem do bloco tem um gradiente grande, o que significa que o flash automático foi disparado.
teste_autoframing
Testa o comportamento de enquadramento automático do dispositivo da câmera. Executa um grande zoom 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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Aprovado: Todos os três rostos são detectados.
test_display_p3
Testes Exibir captura P3 em JPEG usando a API ColorSpaceProfiles
. Testa se o JPEG capturado possui um perfil ICC apropriado em seu cabeçalho e se a imagem contém cores fora da gama sRGB.
APIs testadas:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Aprovado: O JPEG contém um perfil Display P3 ICC e cores fora da gama sRGB.
efeitos_teste
Captura quadros para efeitos de câmera suportados e verifica se eles foram gerados corretamente. O teste verifica apenas os efeitos OFF
e MONO
, mas salva imagens para todos os efeitos suportados.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Aprovado: Captura a imagem da cena com efeitos OFF
e uma imagem monocromática com efeitos definidos como MONO
.
test_efeitos_MONO.jpg
test_format_combos
Testa diferentes combinações de formatos de saída.
APIs testadas:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Passar: Todas as combinações são capturadas com sucesso.
test_jpeg_quality
Testa a qualidade de compactação JPEG da câmera. Avance as qualidades JPEG por meio de android.jpeg.quality
e garanta que as tabelas de quantização sejam alteradas corretamente.
APIs testadas:
Aprovado: A matriz de quantização diminui com o aumento da qualidade. (Matriz representa o fator de divisão.)
Médias da matriz DQT de luma / croma da câmera traseira do Pixel 4 versus qualidade JPEG
Exemplo de teste com falha
Observe que para imagens de qualidade muito baixa (qualidade jpeg < 50), não há aumento na compressão na matriz de quantização.
test_num_faces
Testa a detecção de rosto.
APIs testadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passar: Encontra três faces.
test_num_faces_fd_mode_1.jpg
test_preview_min_frame_rate
Testa se a taxa de quadros de visualização diminui corretamente em uma cena escura. Para que este teste funcione corretamente, as luzes do equipamento de teste devem ser desligadas pelo controlador ou manualmente pelo operador de teste.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Aprovado: a taxa de quadros de visualização está no mínimo da faixa de taxa de quadros solicitada e a variação entre os quadros é menor que a tolerância absoluta definida no teste.
test_reprocess_uv_swap
Testa que o reprocessamento YUV não troca os planos U e V. Isto é detectado calculando a soma das diferenças absolutas (SAD) entre a imagem reprocessada e uma captura não reprocessada. Se a troca dos planos U e V de saída da captura reprocessada resultar em um SAD aumentado, presume-se que a saída tenha os planos U e V corretos.
APIs testadas:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Aprovado: Os planos U e V não são trocados.
test_reprocess_uv_swap.png
cena2_b
test_num_faces
Testa a detecção de rosto com maior diversidade de tons de pele em cenas de rosto.
APIs testadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passar: Encontra 3 faces.
test_num_faces_fd_mode_1.jpg
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, não excedendo a resolução de 1920x1440. 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 RMS (raiz quadrada média) 3D entre as duas imagens.
APIs testadas:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Aprovado: as imagens YUV e JPEG são semelhantes e têm menos de 1% de diferença RMS (valor quadrático médio de um sinal).
cena2_c
test_num_faces
Testa a detecção de rosto com maior diversidade de tons de pele em cenas de rosto.
APIs testadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passar: Encontra 3 faces.
test_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 no CDD.
Aprovado: DEVE ter latência de captura JPEG da câmera2 <1000ms para resolução de 1080p, conforme medido pelo Teste de desempenho da câmera CTS sob condições de iluminação ITS (3000K) para ambas as câmeras primárias.
test_camera_launch_perf_class
Testa a latência de lançamento da câmera para a classe de desempenho S conforme especificado na seção 2.2.7.2 Câmera no CDD.
Aprovado: DEVE ter latência de inicialização da câmera2 (câmera aberta para o primeiro quadro de visualização) <600ms conforme medido pelo Teste de desempenho da câmera CTS sob condições de iluminação ITS (3000K) para ambas as câmeras primárias.
cena2_d
test_num_faces
Testa a detecção de rosto com maior diversidade de tons de pele em cenas de rosto.
APIs testadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passar: Encontra 3 faces.
cena2_e
imagem_test_contínua
50 quadros de resolução VGA são capturados com a solicitação de captura primeiro configurando android.control.afMode = 4 (CONTINUOUS_PICTURE).
APIs testadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Aprovado: o sistema 3A se estabiliza ao final de uma captura de 50 quadros.
test_num_faces
Testa a detecção de rosto com maior diversidade de tons de pele em cenas de rosto.
APIs testadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passar: Encontra 3 faces.
cena2_f
scene2_f tem três rostos com fundo branco e roupas brancas. Os rostos apresentam ampla gama de tons de pele e alto contraste com o fundo.
cena2_f
test_num_faces
Testa a detecção de rosto com maior diversidade de tons de pele em cenas de rosto.
APIs testadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passar: Encontra 3 faces.
test_num_faces_fd_mode_1.jpg
cena3
O Scene3 usa o gráfico ISO12233, e a maioria dos testes usa um método de extrator de gráfico para encontrar o gráfico na cena. Por esse motivo, a maioria das imagens salvas não tem fronteiras como as imagens das cenas 1, 2 ou 4, mas apenas o gráfico. O gráfico deve estar na orientação correta para o localizador de gráficos funcionar de maneira ideal.
test_3a_consistência
Testes para consistência 3A.
APIs testados:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
PASSE: 3A converge para exposição, ganho, AWB (balanço de branco automático) e FD (distância de foco) três vezes dentro da tolerância.
test_edge_enhance
Testes que 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 de foco e parâmetro de superfície de saída.
PASSA: Modo HQ
(2) mais nítido do que OFF
(0). Modo FAST
(1) mais nítido que o modo OFF
. Modo HQ
mais nítido ou igual ao modo FAST
.
APIs testados:
Parâmetros de câmera impactados:
-
EDGE_MODE
test_edge_enhancement_edge = 0.jpg
test_edge_enhancement_edge = 1.jpg (modo rápido)
test_edge_enhancement_edge = 2.jpg (modo de alta qualidade)
test_flip_mirror
Testes se a imagem é adequadamente orientada conforme CDD Seção 7.5.2 Câmera frontal [C-1-5] .
Imagens espelhadas, invertidas ou giradas podem ser identificadas pelo recurso de diamante próximo ao centro.
PASSE: A imagem não é invertida, espelhada ou girada.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
Testes se o cenário para retrato substitui as funções corretamente para sensores orientados para a paisagem.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
PASSE: O teste é capaz de localizar um gráfico com a rotação esperada (0 graus quando a paisagem para o retrato substituir estiver desativada, 90 graus quando ativada).
test_landscape_to_portrait.png
test_lens_movement_reporting
Testes se a bandeira do movimento da lente for relatada corretamente. Captura uma explosão de 24 imagens com os 12 primeiros quadros na distância ideal do foco (conforme encontrado por 3a) e os últimos 12 quadros na distância mínima de foco. Em torno da estrutura 12, a lente se move, fazendo com que a nitidez caia. A nitidez eventualmente se estabiliza à medida que a lente se move para a posição final. A bandeira do movimento da lente deve ser afirmada em todos os quadros onde a nitidez é intermediária à nitidez nos primeiros quadros com a lente estacionária a uma distância focal ideal e os poucos quadros finais onde a lente está estacionária na distância focal mínima. A estrutura exata que a lente move não é importante: o que é verificado é que a bandeira do movimento é afirmada quando a lente está se movendo.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Passagem: a bandeira do movimento da lente é True
no quadro com mudança de nitidez.
Mecanismos de falha:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) emtest_log.DEBUG
é afirmado apenas nos quadros onde a nitidez não está mudando. - Os quadros com
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) emtest_log.DEBUG
tem uma diferença de nitidez em comparação com os primeiros quadros à distância focal ideal ou os últimos quadros na distância mínima do foco.
test_reprocess_edge_enhance
Testes se os métodos de reprocessamento suportados para aprimoramento de arestas funcionarem 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 do reprocessamento desativados.
APIs testados:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
PASSA: A nitidez para os diferentes modos de borda está correta. HQ
(Modo 2) é mais nítido que OFF
(Modo 0), e a melhoria entre diferentes modos é semelhante.
test_reprocess_edge_enhancement_plot.png
cena4
A cena4 consiste em um círculo preto em um fundo branco dentro de um quadrado.
cena4
test_aspect_ratio_and_crop
Testes se as imagens são distorcidas ou cortadas inesperadamente no pipeline de imagem. Tira fotos de um círculo sobre todos os formatos. Verifica o círculo não distorcido, o círculo não se move do centro da imagem e o círculo não muda de tamanho incorretamente com diferentes proporções ou resoluções.
APIs testados:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
PASSA: As imagens não estão esticadas, o centro de imagens não diferem em mais de 3%e o máximo possível FOV (campo de visão) é preservado.
Mecanismos de falha:
- O círculo na imagem capturada é distorcido pelo pipeline de processamento.
- A imagem de resolução mais baixa é cortada dupla no pipeline de imagem, criando diferentes FOV entre imagens de alta e baixa resolução.
- O círculo na imagem capturada é cortada devido a uma solicitação de captura de proporção extrema, reduzindo a altura ou a largura da imagem.
- O círculo na imagem capturada tem uma reflexão no centro e não parece totalmente preenchida.
test_multi_camera_alignment
Testes os parâmetros de calibração da câmera relacionados ao posicionamento da câmera para sistemas de várias câmeras. Usando as sub-câmeras físicas de várias câmeras, tira uma foto com uma das câmeras físicas. Encontra o Circle Center. Projeta o Circle Center para o mundo coordenadas para cada câmera. Compara a diferença entre os centros do círculo das câmeras nas coordenadas mundiais. Reproduce o mundo coordenado de volta às coordenadas de pixels e se compara aos originais como uma verificação de validade. Compara os tamanhos do círculo que a verificação se os comprimentos focais das câmeras forem diferentes.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
PASSE: Os centros e tamanhos do círculo são os esperados em imagens projetadas em comparação com imagens capturadas usando dados de calibração da câmera e comprimentos focais.
Mecanismos de falha:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
ouLENS_POSE_ROTATION
são valores de design e não dados reais de calibração. - O sistema da câmera não é apropriado para a configuração do teste. Por exemplo, testar um sistema de câmera amplo e ultra larga com o equipamento de teste RFOV. Para obter mais informações, consulte a câmera em sua caixa FAQ1 .
test_preview_aspect_ratio_and_crop
Semelhante ao teste TEST_ASPET_RATIO_AND_CROP para Still Captures, este teste verifica os formatos de visualização suportados para garantir que os quadros de visualização não estejam esticados ou cortados de forma inadequada. Verifica se a proporção do círculo não muda, as imagens cortadas mantêm o círculo no centro do quadro e o tamanho do círculo não muda para um formato constante ou com diferentes resoluções (campo de verificação do campo de visualização).
APIs testados:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASSA: As imagens não estão esticadas, o centro de imagens não diferem em mais de 3%e o máximo possível FOV (campo de visão) é preservado.
test_preview_stabilization_fov
Verifica os tamanhos de visualização suportados para garantir que o FOV seja cortado adequadamente. O teste captura dois vídeos, um com estabilização ON
visualização e outro com estabilização de visualização OFF
. Um quadro representativo é selecionado em cada vídeo e analisado para garantir que as alterações do FOV nos dois vídeos estejam dentro do SPEC.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASSA: A proporção do círculo permanece em torno da constante, a localização central do círculo permanece estável, e o tamanho do círculo muda mais que 20%.
test_video_aspect_ratio_and_crop
Faz vídeos de um círculo dentro de um quadrado sobre todos os formatos de vídeo. Extrai os quadros -chave e verifica a proporção do círculo não muda, as imagens cortadas mantêm o círculo no centro e o tamanho do círculo não muda para um formato constante ou com resolução diferente (campo de verificação do campo).
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASSE: Os quadros de vídeo não estão esticados, o centro de quadros não diferem em mais de 3%e o FOV máximo possível (campo de visão) é preservado.
cena5
Cena5 requer uma cena cinza uniformemente iluminada. Isso é realizado por 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, prenda um difusor na frente da câmera e aponte a câmera para uma fonte de iluminação de cerca de 2000 lux. As imagens capturadas para a cena5 requerem iluminação difusa, sem recursos evidentes. A seguir, é apresentada uma imagem de amostra:
cena5 captura
test_lens_shading_and_color_uniformity
Testes que a correção de sombreamento da lente é aplicada adequadamente e a cor de uma cena uniforme monocromática é distribuída uniformemente. Executa esse teste em um quadro YUV com Auto 3A. O sombreamento da lente é avaliado com base no canal Y. Mede o valor Y médio para cada bloco de amostra especificado e determina a passagem ou falha comparando -se com o valor central y. O teste de uniformidade de cores é avaliado no espaço R/G e B/G.
APIs testados:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
PASSE: No raio especificado da imagem, a variação de R/G e B/G valor deve ser inferior a 20% para passar no teste.
cena6
A cena6 é uma grade de pequenos círculos com um quadrado em um canto para indicar orientação. Os pequenos círculos são necessários para testar a função de zoom em uma grande faixa.
cena6
test_in_sensor_zoom
Testes o comportamento do recurso de zoom no sensor da câmera, que produz imagens cruas cortadas.
Com o estojo de uso do fluxo definido como CROPPED_RAW
, o teste leva duas capturas na faixa de zoom, um campo de visão completo (FOV) e uma imagem crua e uma imagem crua. O teste converte as imagens em matrizes RGB, diminui a imagem crua de tamanho completo do tamanho relatado por SCALER_RAW_CROP_REGION
e calcula a diferença quadrada média da raiz 3D (RMS) entre as duas imagens.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
PASSA: A diferença quadrada média da raiz 3D (RMS) entre a imagem crua reduzida e a imagem crua de FOV é inferior a 1%.
test_zoom
Testes o comportamento do zoom da câmera. Tomar capturas ao longo da faixa de zoom e verifica se os círculos aumentam à medida que a câmera aumenta.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
PASSA: O tamanho relativo do círculo capturado é preciso contra a proporção de zoom solicitada para garantir que a câmera esteja zoom corretamente.
test_zoom para encontrar o contorno do círculo mais próximo do centro.
Test_low_laticy_zoom
Testes a câmera de baixo comportamento de zoom de baixa latência. Tomar capturas na faixa 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 testados:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
PASSA: O tamanho relativo do círculo capturado é preciso em relação aos metadados do resultado da proporção de zoom.
test_preview_video_zoom_match
Testes que, durante a gravação e o zoom, a visualização de vídeo e a exibição de saída de vídeo e grave a mesma saída. Calcula o tamanho do círculo mais próximo do centro com diferentes proporções de zoom e verifica se o tamanho do círculo aumenta à medida que a proporção de zoom aumenta.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
PASSA: O tamanho relativo do círculo capturado é preciso contra a relação zoom solicitada em vídeo e visualização.
Vga_640x480_key_frame.png (antes do zoom)
visualize_640x480_key_frame.png (antes do zoom)
Vga_640x480_key_frame.png (após o zoom)
Visuew_640x480_key_frame.png (após o zoom)
cenário_extensions
Os testes scene_extensions
são para extensões de câmera e devem usar a câmera em uma caixa , pois exigem controle preciso do ambiente de teste.
cenário_hdr
A cena scene_hdr
consiste em um retrato à esquerda e um código QR de baixo contraste à direita.
cenário_hdr
test_hdr_extension
Testes a extensão HDR . Tomar capturas com e sem a extensão ativada e verifica se a extensão torna o código QR mais detectável.
APIs testados:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
PASSE: A extensão HDR reduz o número de alterações de contraste necessárias para detectar o código QR ou reduzir o gradiente no código QR.
cena_night
A cena scene_night
consiste em um círculo branco com quatro círculos menores dentro dela, tudo contra um fundo preto. O círculo menor no canto superior direito é mais escuro que os outros para indicar orientação.
cena_night
test_night_extension
Testes a extensão noturna . Tomar capturas com e sem a extensão habilitada e verifica o seguinte:
- A captura com a extensão noturna ativada leva mais tempo.
- A captura com a extensão noturna ativada é mais brilhante ou tem artefatos de cena com uma aparência melhorada.
APIs testados:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
PASSE: Comparado a uma captura sem a extensão noturna ativada, uma captura com a extensão noturna ativada leva pelo menos 0,5 segundos a mais. A captura deve ser pelo menos 10% mais brilhante, ou os pontos cinza na cena devem ser de 20 pixels inferiores ao centro do círculo circundante.
Sensor_fusion
Os testes de fusão de sensores requerem movimento específico do telefone na frente de um padrão de quadro -damas. Para obter os melhores resultados, verifique se o gráfico de teste está montado. Os 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 .
Imagem do xadrez
test_multi_camera_frame_sync
Os testes que enquadram os registros de data e hora capturados pela câmera lógica estão dentro de 10 ms, computando ângulos de quadrados no quadro de xadrez para determinar o registro de data e hora.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Passe: o ângulo entre as imagens de cada câmera não muda consideravelmente à medida que o telefone é girado.
test_preview_stabilization
Testes que estabilizaram o vídeo de visualização gira menos que o giroscópio.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Passagem: a rotação máxima do ângulo sobre os quadros é inferior a 70% da rotação do giroscópio.
A seguir, são apresentados vídeos de amostra com e sem estabilização.
Exemplo de vídeo com estabilização
Exemplo de vídeo sem estabilização
test_sensor_fusion
Testes a diferença de registro de data e hora entre a câmera e o giroscópio para aplicativos AR e VR. O telefone é girado 90 graus 10 vezes em frente ao padrão do quadro de damas. O movimento é de cerca de 2 s de ida e volta. Este teste é ignorado se nenhum giroscópio estiver incluído ou se o parâmetro de hora em tempo real da fonte REALTIME
não estiver ativado.
O teste test_sensor_fusion
gera uma série de gráficos. As duas parcelas mais importantes para a depuração são:
test_sensor_fusion_gyro_events
: mostra os eventos do giroscópio para o telefone durante o teste. O movimento na direção x e y implica que o telefone não seja montado com segurança na placa de montagem, reduzindo a probabilidade de passar o teste. O número de ciclos no gráfico depende da velocidade de gravação para salvar quadros.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: mostra o alinhamento dos eventos do giroscópio e da câmera. Este gráfico deve mostrar o movimento correspondente entre a câmera e o giroscópio a +/- 1 ms.test_sensor_fusion_plot_rotações
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
PASSE: O deslocamento dos registros de data e hora da câmera e do giroscópio é inferior a 1 ms, conforme CDD Seção 7.3.9 Sensores de alta fidelidade [C-2-14] .
Mecanismos de falha:
- Erro de deslocamento: o deslocamento da câmera-ginoscópio não é calibrado corretamente para dentro de +/- 1 ms.
- Gotas de quadros: o pipeline não é rápido o suficiente para capturar 200 quadros consecutivamente.
- Erros de soquete:
adb
não pode se conectar com segurança ao DUT por tempo suficiente para executar o teste. - O gráfico não está montado. O plot
test_sensor_fusion_plot_rotations
possui quadros onde o giroscópio e a rotação da câmera variam 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 plana. O plot
test_sensor_fusion_gyro_events
mostra movimento nos planos x e y. Essa falha é mais comum nas câmeras frontais, pois a câmera traseira geralmente tem uma colisão levantada para o restante do corpo do telefone, criando uma inclinação ao montar a parte traseira do telefone na placa de montagem.
test_video_stabilization
Os testes que estabilizaram o vídeo giram menos que o giroscópio.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASSA: A rotação máxima do ângulo sobre os quadros é inferior a 60% da rotação do giroscópio.
A seguir, são apresentados vídeos de amostra com e sem estabilização.
Exemplo de vídeo com estabilização
Exemplo de vídeo sem estabilização
test_led_snapshot
Testes que os instantâneos de LED não saturam ou tingem a imagem.
Este teste adiciona um controlador de iluminação à caixa de fusão do sensor para controlar as luzes. Com as luzes OFF
, o teste leva uma captura com o modo AUTO_FLASH
definido como ON
. Durante esta captura, o teste executa uma sequência de pré -captura com o gatilho aePrecapture
definido para START
e define a intenção de captura de Preview
para pegar a captura com flash.
Como a captura possui um ponto de acesso distinto devido ao flash, o teste calcula a média da imagem flash de toda a captura e verifica se o valor está dentro da faixa (68, 102). Para verificar se a imagem é razoavelmente equilibrada, o teste calcula as relações R/G e B/G e verifica se as proporções estão dentro de 0,95 e 1,05.
APIs testados:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
PASSA: As relações R/G e B/G estão dentro de 0,95 e 1,05. A média da imagem flash está dentro da faixa (68, 102).