Android robienie zdjęć

0

Nie znam miejsca gdzie mógłbym o to zapytać więc robię to tutaj, a nuż się uda. Postanowiłem, że napisze program na androida który po uruchomieniu będzie robił zdjęcie a potem wysyłał je do drugiego programu na PC.

  1. Problem nie wiem jak wysłać to zdjęcie, miałbym utworzyć serwer ftp, użyć actionscript i zrobić flash media server? Nie wiem jak to ugryźć. Program na kompie będzie pisany w c++ i Qt. Będą wykonywane szybkie obliczenia a następnie zdjęcie miałoby być usuwane jako już niepotrzebne.

  2. Jaki jest proces robienia zdjęcia w telefonie. Czy dane wysłane z matrycy ccd/cmos są zapisywane w pliku coś typu RAW a potem szybko kompresowane do jpeg? Czy ktoś ma wiedzę na ten temat albo zna miejsca/literaturę/źródła na ten temat? I skąd pochodzi ograniczenie typu, nagrywanie wideo 10800p/30s albo 720p/60s. Jak szybko można wykonywać zdjęcia załóżmy na galaxy s3 i dlaczego tak wolno. Czy jest to związane z czasem potrzebnym na zapisanie pliku w pamięci czy z czasem na złożenie z 8 milionów punktów jednego obrazu?

Z góry dzięki za pomoc!

0

Actionscript to po stronie klienta, a tam jest java, więc AS się nie przyda. FMS to jak strzelanie z czołgu do meszki gdy można użyć gazety. FTP - czemu nie, będziesz wrzucać kolejne pliki ze zdjęciami, możesz też je uploadować na serwer http (POST).

Robienie zdjęcia zajmuje pewien czas, bo trzeba obraz naświetlić na matrycy (od tysięcznych sekundy do kilkudziesięciu sekund, zależnie od oświetlenia), a potem z matrycy CCD/CMOS trzeba te ładunki ściągnąć wierszami jeden po drugim, co też trwa (np. 12Mpx*3 = 36MB danych), potem je ewentualnie skompresować (jpeg) -> czas i zapisać (RAW -> 36MB do zapisania) -> czas.

0

może json i http?

0

Czyli wg. Ciebie ftp będzie najlepszym rozwiązaniem? A możesz mi wytłumaczyć bo ciekawi mnie to. Czym się różni wykonanie zdjęcia na tym samym telefonie w rozdzielczości 8Mpx a 2Mpx? Część matrycy jest wtedy nieaktywna/nie bierze się pod uwagę podczas analizy, danych z jej części czy różni się to tylko końcowym efektem, tzn. podczas zapisywania algorytm "obcina" zdjęcie? I dzięki za zwrócenie uwagi tego kosmicznego błędu.

0

Jest ściągany obraz z całej matrycy, a potem jest skalowany do niższej rozdzielczości. W przeciwnym wypadku miałbyś kadrowany obraz - ale fizyczna budowa większości matryc światłoczułych uniemożliwia ściąganie ładunków tylko z pewnego obszaru. Proces trwa szybciej, bo jest mniej danych do kompresowania i zapisania.

0

A czy jest dostęp do "surowych" danych z matrycy i operowaniu na nich, do pliku zanim zostanie obrobiony i skompresowany do jpeg? Czy jest to zbyt niskopoziomowa operacja?

0
romson25 napisał(a):

A czy jest dostęp do "surowych" danych z matrycy i operowaniu na nich, do pliku zanim zostanie obrobiony i skompresowany do jpeg? Czy jest to zbyt niskopoziomowa operacja?

Musisz zbadać urządzenie na którym chcesz operować; Bo.. albo ARM będzie mieć driver wbudowany w układ albo ów układ będzie osobnym urządzeniem a gotowa informacja będzie przesyłana tylko do systemu i tyle [np. tak jak to jest w amatorskiej elektronice kamera + arduino gdzie moduł kamery ma sterownik z którym komunikuje się arduino w celu pobrania wynikowego zdjęcia i nic więcej] Co do jsona i http to odnosiłem się raczej do pierwszego punktu czyli przesyłania elementu z urządzenia[android] na pc czy inne urządzenie za pomocą połączenia internetowego.

0

W skład projektu domyślnie ma wchodzić galaxy s3 i pc. Połączenie internetowe bezprzewodowe. Przy okazji trochę zacząłem grzebać z boku tego tematu. Z czystej ciekawości chciałbym się dowiedzieć jak wygląda np. krok po kroku cały proces (od strony software po sprzętową) wykonania zdjęcia w takim telefonie.

Z jednej strony wydawałoby się, że wydostanie takich surowych danych z matrycy, jeżeli są komuś potrzebne powinno być prostsze i szybsze niż odebranie końcowego gotowego pliku jpeg. Ja rozumiem to tak (w mega uproszczony sposób oczywiście), że kiedy chcę wykonać zdjęcie

  1. Procesor/system/jakkolwiek kopiuje do pamięci macierz wartości napięć, pochodzących z matrycy, mówiących ile jakiej barwy znajduje się na jakim jej elemencie.
  2. Dane te zostają poddane analizie i na ich podstawie tworzony jest np. plik raw
  3. Następuje końcowa obróbka w zależności jaki ustawiliśmy format zapisu, efekty specjalne, inne opcje, itd.
  4. Plik zostaje zapisany na pamięci flash

Mam rozkminę (o ile ten model choć trochę odpowiada rzeczywistości) czy etap 2 można wykonać na urządzeniu zewnętrznym, np. na pc (chociaż teoretycznie) jako, że ten proces jest najbardziej zasobożerny. Nie posiadam odpowiedniej wiedzy w tej dziedzinie, żeby to zrozumieć i dlatego chętnie bym poczytał na ten temat. Jakby komuś się kiedyś rzucił w oczy taki temat, praca albo materiały z tego zakresu to byłbym wdzięczny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1