Kameradaki iki resmi nasıl karşılaştırabilir ve hareketi algılamak için yeterli fark olup olmadığını nasıl anlayabilirim?


18

Evimdeki bir odayı kontrol etmek ve bir şey hareket ederken bir uyarı görüntülemek için telefonumu bir CCTV sistemi olarak kullanmak istiyorum.

Şimdilik, yapmayı başardığım her dakika bir resim alıp bir PHP betiği ile sunucuma yüklemek. Şimdi, mevcut resmi ve resmi 1 dakika önce karşılaştırmak ve birinin odaya girip girmediğini tespit etmek istiyorum. Bu yüzden temel olarak, resimdeki piksel farklılıklarını karşılaştırmam gerekir (aynı zamanda bir bulutun sadece bir dakika merhaba diyebileceğini ve parlaklığı değiştirdiğini dikkate alarak)

Herkes bunu veya okumak için bir doktor ulaşmak için bir ipucu var mı?


4
Yıllar önce böyle bir şey yaptım. Benim tekniğim görüntüyü bölümlere ayırmak, örneğin 20 * 20 ızgara, her hücredeki ortalama renk için bir değer bulmak (o hücredeki her pikseldeki ortalama rengi alarak) ve saklamaktı. Bir sonraki görüntü için de aynısını yapın ve ortalama renklerde yeterli (bu toleransı size bırakacağım) bir fark varsa, hareketi kabul edebilirsiniz. Toleransı o kadar iyi yapmayın, ışıkta veya geçen gölgelerde küçük değişiklikler farkedecektir

1
İşte konuyla ilgili ilginç bir mesaj yararlı olabilecek budur codeproject.com/KB/audio-video/Motion_Detection.aspx

CHDK ayrıca görüntüyü ızgaraya böler. chdk.wikia.com/wiki/UBASIC/Scripts:_AdaptiveMD Hareketi algılamak ve aydınlatma değişikliklerini saptamamak için, çok sayıda ızgara hücresindeki bir değişikliğin hareket olmadığını, sadece birkaç ızgara hücresindeki bir değişiklik olduğunu söyleyebilirim.
endolit

Yanıtlar:


10

Bana öyle geliyor ki, arka plan çıkarma tekniği. Gürültülü görüntüler ve değişen aydınlatma koşulları ile önemsiz olabilir. Bunun için mevcut tekniğin mevcut durumu düşük dereceli matris temsilidir, ancak iki değil, çok (~ düzine) görüntü gerektirir. Bazı ağır matematik matematiği aşağıdaki gibidir: Her görüntü bir piksel vektörü olarak kabul edilir, vektörler matrise birleştirilir ve bu matris düşük dereceli matris ve kalıntı olarak ayrıştırılır. Düşük dereceli matris sütunları arka planlardır ve kalan nesneler hareket eder. Bazı açık kaynaklı uygulamalar var, ancak sadece faktörleştirmenin kendisi için, tam görüntü boru hattı IIRC değil

Matris çarpanlarına ayırma için bir makale ve kod http://www.ece.rice.edu/~aew2/sparcs.html

CS blogundan genel bakış ve diğer kodlara bağlantı:

https://sites.google.com/site/igorcarron2/matrixfactorizations

http://nuit-blanche.blogspot.com/search/label/MF

Diğer bazı tekniklerin incelenmesi: http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf


1
bu CW'yi kasten yaptın mı?
Lorem Ipsum

1
"CW" ne anlama geliyor?
mirror2image

Ahh, wiki sorusu. Ben pratik şeyler yaparak bu oldukça yeni teknik ppls tanıtmak iyi bir fikir olacağını düşündüm. Kabul etmiyorsanız, kaldırmaktan çekinmeyin. Ayrıca, diğer teknikler bu teknikle ilgili daha fazla deneyime sahip olabilir - sadece bu konuya girmeye başladım.
mirror2image

CW bir topluluk-Wiki sorusudur. Bunun anlamı, cevabınızdaki upvotes için itibar kazanmayacaksınız (bu durumda 4x10 = 40). Bazı insanlar kasıtlı olarak böyle cevaplar verir, ancak çoğu zaman, yanlışlıkla olur. Bunu sizin için geri aldım, böylece temsilcinizi alabilirsiniz. Şimdi 126 dan 181 :)
Lorem Ipsum

5

Unutmayın: Gölgeler var (sadece parlaklık değil).

James Webster'ın fikrini gerçekten sevmiyorum, çünkü temel olarak her boyuttaki çözünürlüğü ölçeklendiriyor ve ölçeklendirilmiş görüntüleri karşılaştırıyor (ayrıca eşikleri sevmiyorum - keyfi olacaklar, test etmeniz ve ayarlamanız gerekiyor iyi bir değer elde edene kadar ve ertesi gün farklı hava veya diğer çevresel etkiler nedeniyle bu değerler eski olabilir)

Ama adil olmak gerekirse, gerçekten iyi bir çözümüm de yok. İlk fikrim, her görüntüyü boş odanın referans görüntüsüne dağıtmak ve diff görüntüsünde bir kenar algılaması yapmaktı. Ancak bu gölgeleri de tespit eder. Ama sanırım gölgeler ve diğer nesneler arasında ayrım yapamazsın ... en azından nasıl yapacağımı bilmiyorum. Ancak, gölgeler çoğunlukla yavaş hareket ettiğinden (2 kare arasındaki Kenar algılamasından sonra sonucu karşılaştırabilirsiniz) (yine de arabalar hareket ettiğinde veya bir bulut hareket ettiğinde sorunlar olacaktır)


Aniden değişen bir şey tespit etmek istiyorsunuz. Gölgeler bir dakikadan diğerine çok fazla değişmez. Yine de güneşin genel parlaklığı olacaktır.
endolit

2
Gölgeler hızlı hareket eder, örneğin bir araba hareket ederse ve pencereden kendi gölgesini düşürürse veya diğer nesnelerin farlarını farından düşürürse.
Philipp Wendt

4

"Matris çarpanlara ayırma" tekniği işinizi yapmanıza yardımcı OLMAZ ! @ Mirror2image tarafından atıfta bulunulan kağıt, arka plan çıkarma ile ilgilidir, ancak "matris çarpanlarına ayırma" temeline DEĞİLDİR.

Hareketli nesneleri (insan veya araç olsun) tespit etmek için çalışan videoyu kullanmak aktif bir araştırma alanıdır.

Temel bir ilke olarak, sistem, birden fazla resim üzerinde örnekleme yaparak ve arka plana gelen görüntü arasında enerji farkı alarak tipik bir statik arka planı tahmin eder. Enerji önemliyse piksel ön plan olarak sınıflandırılır. Bu tür ön plan kümesi, nesnenin sistemde bir girişi olup olmadığını söyler.

Araştırma kağıt (ve ayrıca gerçekten uygulamak istiyorsanız nispeten daha basit) için en iyi referans olacak - W4 Sistemi bulmak burada ve Picardi incelemeye bakın burada sistemdeki diğer teknikler için daha ayrıntılı bir anket olarak.

Sorun için geçerli birçok zorluk var:

  1. Gürültünün varlığı büyük belirsizlikler yaratır. Buradaki yaklaşım, etkin zamansal filtreleme uygulamak ve eşiği bağışık hale getirmek için gürültünün varyansını düşünmektir.

  2. Gölgenin varlığı ne ön plan ne de belirsizlik yaratır. Gölgeyi ve gerçek ön planı ayırt etmek için renk ve yoğunluk ayrımını modelleyen kağıtlar vardır.

  3. Arka plan, dalgalanan ağaçlar veya deniz gibi karmaşık olabilir.

  4. Arka planda, daha önce "öğrenilen" arka planın yenisine uyarlandığı yerde yavaş veya ani bir aydınlatma varyasyonu olabilir.

En çok referans alınan dönüm noktası kağıtlarından biri olarak adlandırılan Duvar çiçek algoritması , sağlam hareketli nesne algılama üretmek için bu tür çeşitli senaryoları birleştirmenin en iyi yolunu gösterir.


2

Tam çözümü bilmiyorum, ama görüntünün bir tür karmasını yapmalısınız; görüntüden çıkarılan ve tüm görüntüden daha iyi olan daha küçük bir veri kümesi.

Bence renk histogramı bunun için iyi bir seçim .

Görüntünüzü alanlara ayırır ve bu alanlar için ayrı histogramlar yaparsanız, davetsiz misafirin konumunu / yolunu belirleyebilirsiniz.


Çok teşekkür ederim, daha iyi bulamazsam, diğer çözümleri bekleyeceğim. Bilginize, davetsiz misafirin yolunu belirlemek istemiyorum, çünkü 1 dakika bunun için yeterli değil, ama sadece bir uyarı göndermek harika. Teşekkürler.

1
Dikkatli olun, bazı davetsiz misafirler 1 dakika içinde bitirebilir! Mümkün olduğunca sık kontrol yapın. Programınız çok yavaşsa, görüntü çözünürlüğünü azaltın.

1
Evet, aslında, her 10 saniyede bir resim çekmeyi ve sadece bir davetsiz misafir tespit ettiğimde veya herhangi bir sorun olmadığında her minutu yüklemeyi planlıyorum.

1

Farkı iki kez almak, yani farkların farkına yardımcı olabilir. Bu nedenle, piksellerin çift türevi bazı bölgelerde bir eşik değerden daha büyükse, odaya birisi olarak girebilirsiniz. Parlaklıktaki değişiklik görüntü boyunca yaklaşık olarak sabit bir eğim verecektir, ancak Hessian veya çift türevi almak iyi bir hareket göstergesi veya odadaki büyük değişiklikler verecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.