Jakieś szanse na skrócenie czasu migawki dzięki dostępowi do kamery Android NDK?

Napisałem aplikację na Androida, która przechwytuje podgląd na żywo z kamery. Ważne jest, aby mieć krótki czas migawki, który powinien być przynajmniej stały.

Obecnie używam następującego kodu, aby osiągnąć niski czas migawki:

Parameters params = camera.getParameters();
params.setSceneMode(Parameters.SCENE_MODE_SPORTS);
params.setWhiteBalance(Parameters.WHITE_BALANCE_DAYLIGHT);
params.setFlashMode(Parameters.FLASH_MODE_OFF);
params.setFocusMode(Parameters.FOCUS_MODE_INFINITY);

params.setPreviewFpsRange(9000, 29453);
params.setPreviewFrameRate(29453);
params.setJpegQuality(100);
params.setPreviewFormat(ImageFormat.NV21);

params.setPreviewSize(1280,720);
params.setAntibanding(Parameters.ANTIBANDING_OFF);
params.setExposureCompensation(params.getMinExposureCompensation());
params.set("iso", 1250);
camera.setParameters(params);

Wydaje się, że setSceneMode () nie jest obsługiwany przez oprogramowanie wbudowane moich telefonów (getSupportedSceneModes zwraca pustą listę). Ustawienie „ISO” prawdopodobnie nie ma żadnego efektu (nie spojrzałem na zdjęcie, po prostu obliczył liczbę klatek na sekundę). Znalazłem gdzieś ten kod i użyłem go ... może to tylko zły ciąg?

Jak dotąd dzieje się tak: częstotliwość odświeżania zmienia się od 9 do 29 453 fps, co jest jedynym obsługiwanym zakresem częstotliwości odświeżania. Więcparams.setPreviewFpsRange(29453, 29453); też nie działa. Szybkość klatek jest wysoka (20-30 klatek na sekundę) przy dobrych warunkach oświetleniowych (normalny dzień, wnętrze, skierowane do okna) i staje się bardzo niska (8-10 klatek na sekundę) dla światła średniego / niskiego (światło dzienne, wnętrze, bezpośrednio z dala od okna) warunki.

Więcej szczegółów: nie potrzebuję wysokiej częstotliwości odświeżania, ale krótkiego czasu migawki. Zebrane dane zostaną wykorzystane do nawigacji w pomieszczeniach (lub: lokalizacja w pomieszczeniu w pierwszym etapie). Aplikacja musi robić zdjęcia, podczas gdy osoba normalnie chodzi, bez osoby dbającej o to, jak nosi telefon. Osoba może nawet biegać lub „kołysać się” telefonem (jak normalnie poruszasz rękami podczas chodzenia). Zwykle występuje dużo „rozmycia ruchu”, gdy czas migawki jest zbyt długi. Sytuacja znacznie różni się od sytuacji „Chcę zrobić zdjęcie”, gdzie zdjęcie próbuje utrzymać aparat nieruchomo. Właściwie nie chcemy osiągnąć „dobrych zdjęć”, ale chcemy jakoś wykryć krawędzie ścian od czasu do czasu. Spodziewam się dużo „szumu” na zdjęciu, ale mam nadzieję, że i tak zadziała ...

Pomysł polega na tym, że możliwe jest uzyskanie większej kontroli nad parametrami kamery za pomocą NDK. Czy ktoś doświadczył NDK i może odpowiedzieć mi na pogodę, że warto spróbować?

Dodatkowe informacje: Używam HTC Desire Z (nazywanego również „T-Mobile G2” lub „HTC Vision”) jako urządzenia testowego.

questionAnswers(1)

yourAnswerToTheQuestion