Android 9, çok kameralı API desteğini kullanıma sundu iki veya daha fazla fiziksel kameradan oluşan yeni bir mantıksal kamera kamera cihazları ile aynı yöne doğru Mantıklı kamera cihazı izin veren bir uygulama içinde tek bir CameraDevice/CaptureSession olarak gösterilen entegre edilmiş çok kameralı özelliklerle etkileşim Uygulamalar isteğe bağlı olarak temel fiziksel kamera akışlarına, meta verilere ve kontrollere erişip bunları kontrol edebilir.
1. Şekil. Çoklu kamera desteği
Bu şemada, farklı kamera kimlikleri renklerle kodlanmıştır. Uygulama aynı anda her fiziksel kameradan ham arabellek akışı yapabiliyor. Aynı zamanda ayrı denetimler ayarlamak ve farklı cihazlardan ayrı meta veriler almak fiziksel kameralar.
Örnekler ve kaynaklar
Çok kameralı cihazların reklamı mantıksal çok kameralı özelliği hakkında daha fazla bilgi edinin.
Kamera istemcileri, belirli bir fiziksel cihazlarda gerçekleştirilen fiziksel cihazların kamera kimliğini sorgulayabilir.
mantıksal kamera, arama yoluyla yapılmış
getPhysicalCameraIds()
.
Sonucun bir parçası olarak döndürülen kimlikler daha sonra fiziksel cihazları kontrol etmek için kullanılır
ile bireysel olarak
setPhysicalCameraId()
.
Bu tür isteklerin sonuçları,
çağrısı ile sonuç
getPhysicalCameraResults()
.
Ayrı fiziksel kamera istekleri,
parametreleridir. Geliştiriciler desteklenen parametrelerin listesini almak için
getAvailablePhysicalCameraRequestKeys()
.
Fiziksel kamera akışları, yalnızca yeniden işleme olmayan istekler için desteklenir ve yalnızca tek renkli ve Bayer sensörler için kullanabilirsiniz.
Uygulama
Destek kontrol listesi
HAL tarafına mantıksal çok kameralı cihazlar eklemek için:
- Bir
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
iki veya daha fazla fiziksel kamera tarafından desteklenen herhangi bir mantıksal kamera uygulama açık kameralar. - İstatistikleri doldur
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
meta veri alanını kullanır. - Aşağıdakiler arasında ilişki kurmak için gereken derinlikle ilgili statik meta verileri doldurun:
"fiziksel kamera akışı" piksel:
ANDROID_LENS_POSE_ROTATION
ANDROID_LENS_POSE_TRANSLATION
,ANDROID_LENS_INTRINSIC_CALIBRATION
,ANDROID_LENS_DISTORTION
,ANDROID_LENS_POSE_REFERENCE
. statik
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
meta veri alanını şu şekilde kullanın:ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE
: Ana ana moddaki sensörlerde donanım deklanşörü/pozlama senkronizasyonu yoktur.ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED
: İkincil ana moddaki sensörler için donanım deklanşörü/pozlama senkronizasyonu.
Doldur
ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
her fiziksel kamera için desteklenen parametrelerin listesiyle birlikte. İlgili içeriği oluşturmak için kullanılan Mantıksal cihaz istekleri tek tek desteklemiyorsa liste boş olabilir.Talepler tek tek destekleniyorsa ilgili kişiyi işleme alın ve uygulayın
physicalCameraSettings
yakalama isteklerinin bir parçası olarak gelebilecek ve kimliğiphysicalCameraMetadata
buna göre hazırlar.Kamera HAL cihaz sürümleri 3.5 için (Android 10 sürümünde kullanıma sunulmuştur) veya sonraki sürümlerden biri için
ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
mevcut aktif fiziksel kameranın kimliğini kullanarak mantıksal kamera.
Android 9 çalıştıran cihazlarda kameralar bir mantıksal YUV/RAW akışının fiziksel akışlarıyla değiştirilmesini aynı boyutta (RAW akışları için geçerli değildir) ve iki fiziksel kameralar. Bu durum, Android 10 çalıştıran cihazlar için geçerli değildir.
Android 10 çalıştıran cihazlar için
kamera HAL cihazının sürümü (şimdiki değeri)
3,5
kamera cihazı, TV'yi destekleyen
isStreamCombinationSupported
içeren belirli bir akış kombinasyonunun bu özelliği
Fiziksel akışlar desteklenir.
Akış yapılandırma eşlemesi
Mantıksal bir kamera için şu kamera cihazının zorunlu yayın kombinasyonları:
bir donanımla aynı donanım düzeyinin olması,
CameraDevice.createCaptureSession
.
Akış yapılandırma eşlemesindeki tüm akışlar mantıksal akış olmalıdır.
Fiziksel alt kameralarla RAW özelliğini destekleyen mantıksal bir kamera cihazı için farklı boyutlarda resimler oluşturabilirsiniz. Uygulama mantıksal bir RAW akışı Mantıksal kamera cihazı, farklı kameralara sahip fiziksel alt kameralara geçmemelidir. sensör boyutları. Bu sayede mevcut RAW yakalama uygulamalarının bozulmaması sağlanır.
Aralarında geçiş yaparak HAL uygulanan optik yakınlaştırmadan yararlanmak için alt kameralar için kullanılabilir. Uygulamalar, Mantıksal bir RAW akışı yerine fiziksel alt kamera akışlarını yapılandırın.
Garantili yayın kombinasyonu
Hem mantıksal kamera hem de arkasındaki fiziksel kameralar, zorunlu yayın kombinasyonları zorunlu değildir.
Mantıksal bir kamera cihazı, fiziksel bir kamerayla aynı şekilde çalışmalıdır. kapasitesine göre, cihazın. Optimum kampanya performansı için özellik kümesi, tek tek fiziksel kameraların üst kümesidir.
Android 9 çalıştıran cihazlarda, her biri garantili yayın kombinasyonunda mantıksal kameranın şunları desteklemesi gerekir:
Bir mantıksal YUV_420_888 veya ham akışı iki fiziksel akışla değiştirme aynı boyutta ve biçimde olmak üzere, her biri ayrı bir fiziksel kameradan boyut ve biçim fiziksel kameralar tarafından desteklenir.
Mantıksal kamera otomatik hale geliyorsa her bir fiziksel kameradan bir tane olmak üzere iki ham akış ekleme Ancak temeldeki fiziksel kameralar RAW özelliğini tanıtmıyor. Bu durum genellikle fiziksel kameraların farklı sensör boyutlarına sahip olduğunda görülür.
Aynı büyüklükte ve büyüklükteki mantıksal akış yerine fiziksel biçimindedir. Bu, Fiziksel ve mantıksal akışların minimum kare süresinin aynı olduğundan emin olun.
Performans ve güçle ilgili dikkat edilmesi gereken noktalar
Performans:
- Fiziksel akışları yapılandırmak ve akış izlemek, mantıksal kameranın yakalama hızına (kaynak kısıtlamaları nedeniyle) eklenmez.
- Fiziksel kamera ayarlarının uygulanması, aşağıdaki durumlarda çekim hızını yavaşlatabilir: farklı kare hızlarına yerleştirilir.
Güç:
- HAL'nin güç optimizasyonu varsayılan durumda çalışmaya devam eder.
- Fiziksel akışların yapılandırılması veya istenmesi, HAL'nin dahili ayarını geçersiz kılabilir daha fazla güç kullanımına neden olur.
Özelleştirme
Cihaz uygulamanızı aşağıdaki şekillerde özelleştirebilirsiniz.
- Mantıksal kamera cihazının çok kaynaklı çıkışı tamamen HAL'ye bağlıdır hakkında bilgi edindiniz. Mantıksal akışların fiziksel kameralar uygulama ve Android kameraya göre şeffaf bahsedeceğim.
- Fiziksel istekler ve sonuçlar da isteğe bağlı olarak desteklenebilir. İlgili içeriği oluşturmak için kullanılan Bu tür isteklerdeki kullanılabilir parametreler de tamamen ele alacağız.
- HAL, Android 10'dan itibaren uygulamadaki
seçerek doğrudan bir uygulama tarafından açılabilen kameralar
şurada PHYSical_ID öğelerinin bazılarının veya tümünün reklamını yap:
getCameraIdList
.getPhysicalCameraCharacteristics
aranıyor fiziksel kameranın özelliklerini döndürmelidir.
Doğrulama
Mantıksal çok kameralı cihazlar, diğer normal kameralar gibi kamera CTS'sini geçmelidir.
Bu tür cihazları hedefleyen test durumları şu adreste bulunabilir:
LogicalCameraDeviceTest
modülünü kullanabilirsiniz.
Bu üç ITS testi, doğru kaliteyi sağlamada resimlerin birleşimi:
scene1/test_multi_camera_match.py
scene4/test_multi_camera_alignment.py
sensor_fusion/test_multi_camera_frame_sync.py
1. sahne ve 4. sahne testleri
ITS-in-a-box testi
düzen. test_multi_camera_match
testi,
iki kamera etkinleştirildiğinde görüntülerin ortası eşleşir. İlgili içeriği oluşturmak için kullanılan
test_multi_camera_alignment
testi, kamera boşluklarının, yönlerin ve
ve distorsiyon parametreleri düzgün şekilde yüklendiğinden emin olun. Çok kameralı sistem
Geniş FoV kamera (>90o) içerir, ITS kutusunun rev2 sürümü gerekir.
Sensor_fusion
, tekrarlanan, reçeteli telefon almayı sağlayan ikinci bir test aracıdır
hareket eder ve jiroskop ile görüntü sensörü zaman damgalarının
çoklu kamera karelerinin senkronize olduğundan emin olun.
Tüm kutular AcuSpec, Inc. üzerinden satın alınabilir. (www.acuspecinc.com, fred@acuspecinc.com) ve MYWAY İmalat (www.myway.tw, sales@myway.tw). Buna ek olarak, rev1 ITS kutusu West-Mark'tan satın alınabilir (www.west-mark.com, dgoodman@west-mark.com).
En iyi uygulamalar
Çoklu kameranın sağladığı özelliklerden tam olarak yararlanmak için uygulama uyumluluğu ile ilgili mantıksal bir çok kameralı cihaz:
- (Android 10 veya sonraki sürümler) Fiziksel alt kameraları gizle
getCameraIdList
. Böylece, kullanıcılar tarafından doğrudan açılabilen kameraların sayısı Böylece uygulamaların karmaşık kamera seçim mantığına sahip olması gerekmez. - (Android 11 veya sonraki sürümler) Mantıksal bir çoklu kamera için
optik yakınlaştırmayı destekleyen bir cihaz kullanıyorsanız
ANDROID_CONTROL_ZOOM_RATIO
API veANDROID_SCALER_CROP_REGION
kullanın yalnızca en boy oranında kırpma için kullanın.ANDROID_CONTROL_ZOOM_RATIO
özelliği, cihazın uzaklaşmasını ve daha iyi hassasiyeti elde etmesini sağlar. Böyle durumlarda HAL,ANDROID_SCALER_CROP_REGION
koordinat sistemini,ANDROID_CONTROL_AE_REGIONS
,ANDROID_CONTROL_AWB_REGIONS
,ANDROID_CONTROL_AF_REGIONS
,ANDROID_STATISTICS_FACE_RECTANGLES
, veANDROID_STATISTICS_FACE_LANDMARKS
tedavi için sensör aktif dizisi olarak bir görüş alanına sahip olur. Daha fazla bilgi içinANDROID_SCALER_CROP_REGION
ANDROID_CONTROL_ZOOM_RATIO
ile birlikte çalışır, bkz.camera3_crop_reprocess#cropping
. - Farklı fiziksel kameralara sahip çok kameralı cihazlar için
cihazın belirli bir değer için destek reklamı yayınladığından emin olun.
Yalnızca yakınlaştırma aralığının tamamı değeri destekliyorsa kontrol için
veya aralık. Örneğin, mantıksal kamera ultra geniş
geniş ve telefoto kamera kullanarak şunları yapabilirsiniz:
- Fiziksel kameraların etkin dizi boyutları farklıysa
kamera HAL'si, fiziksel kameraların etkin dizilerinden
ANDROID_SCALER_CROP_REGION
için mantıksal kamera etkin dizisi,ANDROID_CONTROL_AE_REGIONS
,ANDROID_CONTROL_AWB_REGIONS
,ANDROID_CONTROL_AF_REGIONS
,ANDROID_STATISTICS_FACE_RECTANGLES
, veANDROID_STATISTICS_FACE_LANDMARKS
Bu nedenle uygulama açısından bakıldığında koordinat sistemi, mantıksal kameranın aktif dizi boyutudur. - Geniş ve telefoto kameralar otomatik odaklamayı destekliyor ancak ultra geniş kamera sabit odaklıysa, mantıksal kameranın otomatik odaklamayı tanıttığından emin olun destek. HAL, ultra geniş için otomatik odaklama durumu makinesini simüle etmelidir Böylece uygulama ultra geniş lense uzaklaştığında temel fiziksel kameranın sabit odağın uygulama için şeffaf olması, Ayrıca desteklenen AF modları için otomatik odaklama durum makineleri bekleniyor.
- Geniş ve telefoto kameralar 60 fps'de 4K'yı destekliyorsa ve
Ultra geniş kamera yalnızca 30 fps'de 4K veya 60 fps'de 1080p'yi destekler, ancak
60 fps'de 4K değil, mantıksal kameranın 4K reklam vermediğinden emin olun.
Desteklenen yayın yapılandırmalarında 60 fps. Böylece,
mantıksal kamera yeteneklerini ve uygulamanın bütünlüğünü
60 fps'de 4K'ya ulaşamama sorunuyla karşılaşabilirsiniz.
ANDROID_CONTROL_ZOOM_RATIO
1'den küçük bir değere ayarlayın.
- Fiziksel kameraların etkin dizi boyutları farklıysa
kamera HAL'si, fiziksel kameraların etkin dizilerinden
- Mantıklı çok kameralı Android 10'dan yıldızlar
Fiziksel akışları içeren yayın kombinasyonlarını desteklemek için gerekli değildir.
HAL, fiziksel akışlarla bir kombinasyonu destekliyorsa:
- (Android 11 veya sonraki sürümler) Daha iyi kullanım için ve hareket izlemeden derinlik gibi durumlarda, görüş alanını kadar büyük bir fiziksel akış çıkışlarının olması gerekir. Ancak fiziksel bir akış ve mantıksal akış aynı donanım kısıtlamaları nedeniyle kameranın görüş alanı mantıksal akışla aynı olması gerekir.
- Birden fazla fiziksel yayının neden olduğu bellek baskısını gidermek için:
uygulamaların
discardFreeBuffers
kullanıldığından emin olun serbest tamponları (tüketici tarafından serbest bırakılan tamponlar) ancak henüz yapımcı tarafından kuyruğa alınmamışsa) bir süre boşta kaldığında. - Farklı fiziksel kameralardan gelen fiziksel yayınlar genelde
aynı isteğe eklenmişse, uygulamaların
surface group
kullanıldığından emin olun. Böylece, uygulamaya dönük iki yüzeyi desteklemek için bir arabellek sırası kullanılır. Bu da bellek tüketimini azaltır.