Chcę używać telefonu jako systemu telewizji przemysłowej do sterowania pokojem w moim domu i wyświetlania ostrzeżenia, gdy coś się porusza.
Na razie udało mi się zrobić zdjęcie co minutę i przesłać je za pomocą skryptu PHP na mój serwer. Teraz chciałbym porównać bieżące zdjęcie i zdjęcie 1 minutę temu i sprawdzić, czy ktoś wszedł do pokoju. Zasadniczo musiałbym porównać różnice pikseli na obrazie (ale również biorąc pod uwagę, że chmura może po prostu przywitać się i zmienić jasność w ciągu jednej minuty)
Czy ktoś ma jakiś pomysł, jak to osiągnąć, lub jakiś dokument do przeczytania?
Odpowiedzi:
Wydaje mi się, że szukasz techniki odejmowania tła. Przy hałaśliwym obrazie i zmieniających się warunkach oświetleniowych może to być niepraktyczne. Obecną najnowszą techniką w tym zakresie jest reprezentacja macierzy niskiej rangi, ale wymaga ona nie dwóch, ale wielu (~ tuzinów) obrazów. Oto niektóre matematyki ciężkie: każdy obraz traktowany jako wektor pikseli, wektory połączone w matrycę, a ta matryca jest rozkładana na matrycę i resztę niskiego rzędu. Niskopoziomowe kolumny macierzy to tła, a resztki poruszają się. Istnieją pewne implementacje typu open source, ale tylko dla samego faktoryzacji, a nie kompletnego potoku obrazu IIRC
Oto artykuł i kod do faktoryzacji macierzy http://www.ece.rice.edu/~aew2/sparcs.html
Oto przegląd z blogu CS i link do innego kodu:
https://sites.google.com/site/igorcarron2/matrixfactorizations
http://nuit-blanche.blogspot.com/search/label/MF
Przegląd niektórych innych technik: http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf
źródło
Pamiętaj: są cienie (nie tylko jasność).
Nie podoba mi się pomysł Jamesa Webstera, ponieważ polega on głównie na zmniejszeniu rozdzielczości w każdym wymiarze i porównaniu pomniejszonych obrazów (również nie lubię progów - są one arbitralne, musisz je przetestować i dostosować dopóki nie uzyskasz dobrej wartości, a następnego dnia wartości te mogą być nieaktualne z powodu różnych warunków pogodowych lub innych skutków środowiskowych)
Ale szczerze mówiąc, nie mam też naprawdę dobrego rozwiązania. Moim pierwszym pomysłem było różnicowanie każdego obrazu do obrazu referencyjnego pustego pokoju i uruchomienie wykrywania krawędzi na obrazie różnicowym. Ale to także wykryłoby cienie. Ale myślę, że nie możesz odróżnić cienia od innych przedmiotów ... przynajmniej nie wiem jak. Ale może możesz porównać wynik po wykryciu krawędzi między 2 ramkami, ponieważ cienie przeważnie poruszają się powoli (nadal będą problemy, gdy samochody będą się poruszać lub gdy chmura się porusza)
źródło
Technika „rozkładania macierzy” NIE pomoże ci wykonać pracy! Artykuł, do którego odnosi się @ mirror2image, dotyczy odejmowania tła, ale NIE jest oparty na „rozkładzie macierzy”.
Korzystanie z wideo w ruchu do wykrywania ruchomych obiektów (ludzi lub pojazdów) jest aktywnym obszarem badań.
Zgodnie z podstawową zasadą system ocenia typowe tło statyczne, próbkując wiele zdjęć i biorąc różnicę energii między przychodzącym obrazem w tle. Jeśli energia jest znacząca, piksel jest klasyfikowany jako pierwszy plan. Taki zestaw pierwszego planu informuje, czy w systemie znajduje się wpis obiektu.
Najlepszym odniesieniem do twojego dokumentu badawczego (a także stosunkowo prostszym, jeśli naprawdę chcesz go wdrożyć) byłoby - System W4 znajdź go tutaj i zobacz artykuł Picardi tutaj jako bardziej szczegółowe badanie innych technik w systemie.
Istnieje wiele wyzwań, które dotyczą tego problemu:
Obecność hałasu stwarza problemy o dużej niejednoznaczności. Podejście polega na zastosowaniu wydajnego filtrowania czasowego i rozważeniu wariancji hałasu, aby był odporny na próg.
Obecność cienia tworzy dwuznaczność, że ani nie jest na pierwszym planie, ani. Są papiery, które modelują rozróżnienie koloru i intensywności, aby rozróżnić cień od rzeczywistego pierwszego planu.
Tło może być skomplikowane, jak falujące drzewa lub morze itp.
Tło może mieć powolne lub nagłe zmiany oświetlenia, a wcześniej „wyuczone” tło jest następnie dostosowywane do nowego.
Jeden z najczęściej wskazywanych punktów orientacyjnych nazywa się Algorytm kwiatu ściany pokazuje najlepszy sposób łączenia różnych takich scenariuszy w celu uzyskania niezawodnego wykrywania obiektów ruchomych.
źródło
Nie znam dokładnego rozwiązania, ale powinieneś zrobić jakiś hasz obrazu; mniejszy zestaw danych wyodrębniony z obrazu, który jest porównywalny lepiej niż cały obraz.
Myślę, że histogram kolorów to dobry wybór .
Jeśli podzielisz obraz na obszary i utworzysz osobne histogramy dla tych obszarów, możesz określić pozycję / ścieżkę intruza.
źródło
Dwukrotne wzięcie różnicy, tj. Różnica różnic, może pomóc ... więc jeśli podwójna pochodna pikseli jest większa niż próg w niektórych regionach, możesz to nazwać, gdy ktoś wszedł do pokoju. Zmiana jasności da w przybliżeniu stały gradient na całym obrazie, ale przyjęcie Hesji lub pochodnej podwójnej da dobre wskazanie ruchu lub poważnych zmian w pomieszczeniu.
źródło