Kinect kızılötesi kullanıyor mu
Özet
Bu makalede, Microsoft Kinect’in kızılötesi (IR) kamera olarak işlev görecek şekilde nasıl değiştirilebileceğini araştıracağız. Kinect genellikle derinlik kamerası olarak bilinir, ancak bazı değişikliklerle IR görüntülerini yakalayabilir. IR projektörünü bloke ederek ve harici IR lambaları ekleyerek, Kinect’in kızılötesi ışığı algılamasını ve kaydetmesini sağlayabiliriz. İşte bu makalede tartışılan kilit noktalar:
- Kinect, Xbox 360 konsolu için, kullanıcıların bir denetleyici kullanmadan etkileşime girmesini sağlayan bir çevre birimidir.
- Kinect bir derinlik kamerasıdır, yani görüş alanında kendisi ve nesneler arasındaki mesafeleri hesaplayabilir.
- Kinect’i değiştirerek, IR görüntülerini yakalamak için IR kamera olarak kullanabiliriz.
- Kinect’in bileşenleri arasında bir IR projektör, bir IR kamerası ve bir RGB kamera bulunur.
- IR projektör, IR kamerasının derinlik görüntülerini hesaplamak için algıladığı nesneler üzerinde bir IR nokta ızgarası yayar.
- Kinect’in ayrıntılı bir açıklaması ve potansiyel kullanımları Greg Borenstein’ın “İşleri Görme” kitabında bulunabilir.
- Kinect’i bir bilgisayara bağlamak için, OpenNI, Nite, Sensor ve Sensorkinect gibi belirli yazılım ve kütüphaneler yüklememiz gerekir.
- Kurulumdan sonra, işlemde örnek komut dosyaları çalıştırarak başarıyı doğrulayabiliriz.
- IR projektörünü engellemek için koli bandı ve velcro pedleri kullanarak bir göz bağı oluşturabiliriz.
- IR projektörünün bloke edilmesi IR görünürlüğünü etkilediğinden, yeterli IR aydınlatması sağlamak için harici IR lambalarının eklenmesi gerekir.
- IR lambaları oluşturmak için bir devre şemasını takip edebilir ve LED’ler için direnç değerlerini hesaplayabiliriz.
Sorular ve cevaplar
S1: Öncelikle bilinen Kinect?
A1: Kinect, esas olarak nesneler ve kendisi arasındaki mesafeleri hesaplayabilen bir derinlik kamerası olarak bilinir.
S2: Kinect, kızılötesi kamera olarak işlev görecek şekilde nasıl değiştirilebilir??
A2: Kinect, IR projektörünü engelleyerek ve kızılötesi görüntüleri yakalamak için harici IR lambaları eklenerek değiştirilebilir.
S3: Kinect’in bileşenleri nelerdir?
A3: Kinect’in bileşenleri bir IR projektör, bir IR kamerası ve bir RGB kamera içerir.
S4: Kinect derin görüntüleri nasıl hesaplıyor??
A4: Kinect, IR kameranın mesafeleri hesaplamak için algıladığı ve kullandığı nesneler üzerine bir IR noktalı ızgara yayarak derinlik görüntülerini hesaplar.
S5: Kinect hakkında daha fazla bilgi edinmek için önerilen kaynaklar var mı??
A5: Evet, “İşleri Görmek” Greg Borenstein, Kinect ve potansiyel uygulamalarının ayrıntılı bir açıklamasını sunuyor.
S6: Kinect’i bir bilgisayara bağlamak için hangi yazılım ve kütüphaneler gereklidir??
A6: Gerekli yazılım ve kütüphaneler arasında OpenNi, Nite, Sensör ve Sensorkinect.
S7: Kinect yazılımının başarılı kurulumunu nasıl doğrulayabiliriz?
A7: DeptheMiMage ve Depthenfraned gibi işlemlerde örnek komut dosyaları çalıştırarak, kurulumun başarılı olup olmadığını doğrulayabiliriz.
S8: Kinect’in IR projektörü nasıl engellenebilir??
A8: IR projektörünü örtmek ve engellemek için koli bandı ve velcro pedler kullanılarak bir göz bağı oluşturulabilir.
S9: Harici IR lambaları eklemek neden gereklidir??
A9: IR projektörünün engellenmesi IR görünürlüğünü azaltır, bu nedenle IR görüntülerini yakalamak için yeterli IR aydınlatması sağlamak için harici IR lambaları gereklidir.
S10: IR görünürlüğünü artırmak için IR lambaları nasıl oluşturabiliriz?
A10: Bir devre diyagramını takiben ve LED’ler için direnç değerlerini hesaplamak, IR görünürlüğünü artırmak için IR lambaları oluşturabiliriz.
Çözüm
Bu makalede, Microsoft Kinect’in bir kızılötesi kamera olarak işlev görecek şekilde nasıl değiştirilebileceğini araştırdım. Doğru değişiklikler ve eklemelerle Kinect, kızılötesi görüntüleri yakalayabilir ve çeşitli projeler için yeni olanaklar sağlayabilir. Bu proje, Kinect’in potansiyelini geleneksel kullanımlarının ötesine kullanmamıza izin vererek çok yönlülüğünü ve genişletilebilirliğini göstermemize izin veriyor.
Kinect’i kızılötesi kamera olarak kullanmak
Borenstein, Greg, İşleri Görmek, Ö’Reilly Media, Inc., 978-1-449-30707-3, Ocak 2012.
Kinect kızılötesi kullanıyor mu
О э э с сне
М з з рарегистрировали подозрительный тик, исходящий из Вашей сий. С п с о ы ы с п п с xм ы с с ы xм ы ы с с о x ыи с с ои от от от оз пе пе от от оз он оны от оны онныы онныы онн вы, а н, а нбн Вы,. Поч yatırıl?
Эта страница отображается в тех случаях, когда автоматическими системами Google регистрируются исходящие из вашей сети запросы, которые нарушают Условия использования. Сраница перестанет отображаться после того, как эи запросы прекратяттся. До эого момента дл Ekim ил исползования служб Google нобходим çar.
Источником запросов может служить вредоносное ПО, подключаемые модули браузера или скрипт, настроенный на автоматических рассылку запросов. Если вы используете общий доступ в Интернет, проблема может быть с компьютером с таким же IP-адресом, как у вас. Обратитесь к своемtern. Подробнее.
Проверка по со может luV пе появляться, ео е Вводия, оожо Вы воде сн ыыыые ае iri ае ае iri ае ае iri пе ае iri ае ае iri пе ае iri пе ае iri пе ае iri пе ае ае ае ае iri пе аотототыыыыыыыыыыыететет ]p anauma аете keluma емами, или же водите запросы очень часто.
Kinect’i kızılötesi kamera olarak kullanmak
Bu proje, Microsoft Kinect’in kızılötesi (IR) kamera olarak kullanılmak üzere nasıl değiştirilebileceğini gösterecek.
- Gerekli zaman: 2-3 saat
- Bu projeyi yazdırın
Damon Conover tarafından
Damon Conover
Kinect, bir kullanıcının bir denetleyiciye dokunmadan Xbox 360 ile etkileşime girmesini sağlayan Xbox 360 konsolu için bir çevre birimidir. Kinect’in genel bir açıklaması, bunun bir derinlik kamerası olmasıdır. Bu, nesneleri önüne yerleştirebileceğiniz anlamına gelir ve ondan nesnelere olan mesafeyi hesaplayacak ve böylece bir derinlik görüntüsü oluşturacaktır. Bu nedenle, Kinect bir görüntüdeki nesnelerin yerlerini kendisine göre sağlayabilir ve bu bilgiler çeşitli projelerde kullanılabilir. Ayrıca, Kinect, küçük değişikliklerle yeni amaçlar için kullanılabilecek birçok bileşen içerir. Örnek olarak, bu proje Kinect’in kızılötesi (IR) kamera olarak nasıl kullanılabileceğini gösterecektir.
Kinect’in nasıl çalıştığı ve farklı projelerde nasıl kullanılabileceğinin ayrıntılı bir açıklaması için okumanızı tavsiye ederim İşleri Görmek Greg Borenstein (http: // Shop.Oreilly.com/ürün/06369200…). 1. adımdaki görüntü, bu projeyi anlamak için gerekli olan Kinect’in bileşenlerini göstermektedir. IR projektörü, önündeki nesnelere bir IR nokta ızgarası parlıyor. Noktaları göremiyoruz, ancak IR kamera onları algılayabilir. Her nesnedeki nokta desenini kullanarak, Kinect derinlik görüntüsünü hesaplayabilir. Son bileşen, standart bir web kamerasına benzer bir RGB kameradır.
Proje adımları
Kinect’i bilgisayarınıza bağlamak için gerekli yazılımı yükleyin
Platforma özgü talimatları buradan takip edin:
OpenNi, Nite, Sensör ve Sensorkinect Sürücüleri yükleyin
İşleme için Simpleopenni Kütüphanesi’ni kurun
Kurulumun başarılı olduğunu doğrulayın
İşlemeye başlayın ve Deptemajı ve Deptebriared örneklerini çalıştırın.
Kinect’inize güç sağlayın ve USB bağlantı noktası üzerinden bilgisayarınıza bağlayın.
Dosyaya gidin → Örnekler → Katkıda Bulunan Kütüphaneler → Simpleopenni → OpenNi.
Koşmak istediğiniz örneği çift tıklayın (örneğin, Depththinfraned) ve örnek komut dosyası açılacak.
Çalıştır düğmesine tıklayın, ekranınızda bir resim görünecektir. Deptebriared komut dosyası için solda bir derinlik görüntüsü olacak ve solda gösterildiği gibi sağda bir IR görüntüsü olacak.
IR projektörünü engelleyin
Önceki adımda görülebileceği gibi, Depthenfraned betiği tarafından üretilen IR görüntüsü, kaldırmak istediğimiz bir nokta deseni içerir.
Bunu yapmak için, IR projektörünü kapsayacak bir göz bağı oluşturun.
Her biri 9 inçten daha uzun iki şeritli koli bandı alın ve birini diğerine hafifçe örtecek şekilde yerleştirin. Ardından iki şerit koli bandı kullanarak tekrarlayın.
Çift geniş koli bandı iki şeritini alın ve yapışkan kenarları bir araya getirin.
Ortaya çıkan şeridi 9 inç uzunluğunda kesin.
Velco pedleri şeridin bir ucuna yerleştirin, şeridi Kinect’in etrafına sarın, IR projektörünü kaplayarak, solda gösterildiği gibi şeridin sıkı tutulacak şekilde karşı velco pedlerini yerleştirin.
IR lambalarını inşa et
Şimdi IR projektör bloke edildiğine göre, IR kamerasının iyi bir görüntü oluşturması için artık yeterli IR ışığı yok.
Bu nedenle, harici IR aydınlatması eklenmelidir. Soldaki devre şeması, iki IR lambası için bir olası tasarım gösterir.
DC güç kaynağını güç krikosuna bağlayın ve bir multimetre kullanarak voltajını (VDC) ölçün. Güç kaynağım için VDC = 15.6 V.
LED’lerin tipik ileri voltajı (VF) ve maksimum ileri akım (eğer, maks.). Benimki VF = 1 idi.5 V ve sırasıyla = 20 Ma ise.
Akımı her altı LED serisinden sınırlamak için gerekli direnci (R1 = R2 = R3 = R4) hesaplayın. 360 Ω direnç kullandım. R> ((VDC – (LED’lerin#)*VF)/if)
IR lambalarını oluşturun (devam)
Bir PCB’nin yarısında altı LED ve bir direnç yerleştirin. LED’leri, katotu anota bağlayan lehim telleri ve direnç. PCB’nin diğer yarısı için tekrarlayın. Ardından, serbest anotları bağlayan bir tel ve dirençlerin serbest ucunu bağlayan başka bir tel lehimer.
Bağlı anotlara uzun, kırmızı bir tel ve bağlı dirençlere uzun, siyah bir tel lehim.
(İsteğe bağlı) Biraz gerginlik hafifletme sağlamak için uzun kabloları PCB’ye tutmak için Sugru kullanın.
Plastik bir kabın altındaki delikleri dürtün, kabloları delikten besleyin ve PCB’yi sıkıca bardağa bastırın. PCB sıkıca uymuyorsa, yerinde tutmak için sugru kullanın.
İkinci lamba için önceki dört adımı tekrarlayın.
Lamba yoğunluğu denetleyicisini oluşturun
İki tencereyi monte etmek için gerekli deliklerin boyutlarını ölçmek için kaliperleri kullanın.
Proje muhafazasında delikler açın ve donanımı monte edin. Ayrıca, tellerin girmesi için iki küçük delik açın. Her deliği nereye yerleştireceğinizi planlarken, her şeyin uyduğundan emin olmak için her parçanın muhafazada nerede oturacağını unutmayın.
Bir dremel aleti kullanarak veya bıçakla güç jakı için deliği açmanız gerekecek.
Jack’i yerinde tutmak için Sugru’yu muhafazanın içine ve dışına yerleştirin.
Lamba Yoğunluk Denetleyicisini Oluşturun (Devam)
Her tencereyi düşük ayar olacak konuma çevirin ve ardından multimetre kullanın’S süreklilik test cihazı devrede kullanılacak iki pimi bulmak için (test cihazı bip sesi).
Ayrıca, anahtar bittiğinde anahtardaki iki pimin bağlandığını ve anahtar aşağı olduğunda hangilerinin bağlandığını belirlemek için süreklilik test cihazını kullanın.
Devre şemasına göre muhafaza içindeki parçaları bağlayan lehim kısa kablolar.
Tencerelere iki uzun, kırmızı kablo ve anahtara iki uzun, siyah tel lehimleyin ve ardından iki küçük delikten poke.
Muhafazayı vidalamak’Sigorta tutucusuna bir sigorta yerleştirin.
Lambalardan çıkan kabloları kontrolöre giren tellerle (kırmızıdan kırmızıya, siyahtan karaya) bükün, gerekirse lehim, daha sonra açıkta kalan kabloları elektrik bandı ile örtün.
Kinect ve lambaları monte edin
Kinect’i bir yüzeye yerleştirin, görüntülemek istediğiniz nesneye işaret ederek.
(İsteğe bağlı) Kinect’i tripod konektörüne ve ardından bir tripoda bağlayın. Tripod’u bir halka standına bağlayın ve görüntüleme yüzeyinin önüne yerleştirin.
Görüntüleme yüzeyi aydınlatılacak şekilde lambaları bir yöne monte edecektir.
(İsteğe bağlı) Lambaları halka standına bağlayın ve kelepçeler, menteşeler ve bantla yerinde tutun.
Duvar-e-güç kaynağını bir çıkışa takın ve ardından Power Jack aracılığıyla lamba yoğunluğu denetleyicisine bağlayın.
Deneyi gerçekleştirin
Bir parça inşaat kağıdı alın ve bir kömür kalemi kullanarak sol tarafta ve sağ tarafta bir nesne çizin.
Sol nesnenin üzerinde phthalo mavi pastel ile renk ve Prusya mavi pastel ile doğru nesne üzerinde renk.
Kağıdı kameranın önüne yerleştirin.
İşleme açın, komut dosyaları oluşturun RGB_SAVE.PDE Ve IR_SAVE.PDE (Kod ekli kodda verilir.PDF), Kodu, dosyaların ve yol adlarının bilgisayarınız için uygun olacak şekilde değiştirin, çalıştırın RGB_SAVE.PDE, Ve sonra koş IR_SAVE.PDE.
Anahtarı çevirerek lambaları açın ve ardından kontrolördeki düğmeleri kullanarak yoğunluğu ayarlayın. LED’ler tarafından yayılan IR ışığını göremeyeceksiniz, bu nedenle istenen yoğunluğu belirlemek için kamera tarafından çekilen IR videosunu kullanın. Lambaları ayarladıktan sonra iki komut dosyasını tekrar çalıştırmanız gerekecek.
Solda gösterilen ortaya çıkan görüntü, üstte renkli bir görüntü ve altta bir IR videosu göstermelidir. Sonuçlar, iki pigmentin spektrumun renk kısmında benzer göründüğünü, ancak IR kısmında çok farklı olduğunu göstermektedir.
Bu deneyin arkasındaki bilimin ayrıntılı bir açıklaması için, Delaney ve ark. referanslarda listelenmiştir.
Referanslar
Simple-Openni Wiki (son erişim 20 Nisan 2012). *** Araç kutusuna dahil edilen örnekler özellikle yararlıdır.
Borenstein, Greg, İşleri Görmek, Ö’Reilly Media, Inc., 978-1-449-30707-3, Ocak 2012.
Reas, Casey ve Ben Fry, İşlemeye başlamak, Ö’Reilly Media, Inc., 978-1-449-37980-3, Haziran 2010.
Blake, Joshua, “Kinect Hacking”, Make:, Cilt 29, 124-133, http: // makeProjects.com/wiki/29#bölüm_… (son erişim 20 Nisan 2012).
Delaney, John K., Elizabeth Walmsley, Barbara H. Berrie ve Colin F. Fletcher, “Mavi pigmentleri tespit etmek ve haritalamak için kızılötesindeki resimlerin çok spektrumlu görüntülemesi”, (Sackler NAS kolokyum) Sanatın Bilimsel İncelemesi: Koruma ve Analizde Modern Teknikler, Ulusal Bilimler Akademisi Bildirileri, 120-136, http: // www.kestirme.Edu/Katalog/11413.html (son erişim 20 Nisan 2012), 0-309-54961-2, 2005.
Delaney, John K., Jason G. Zeibel, Mathieu Thoury, Roy Littleton, Kathryn M. Morales, Michael Palmer, E. René de la Rie, “Görünür ve Kızılötesi Yansıtma Resimlerin Görüntüleme Spektroskopisi: Pigment Haritalama ve Geliştirilmiş Kızılötesi Yansıtma”, S3A: Luca Pezzati ve Renzo Salimbeni tarafından düzenlenen Sanat, Mimarlık ve Arkeoloji Optikleri II, Proc. Spie Vol. 7391, 2009.
Onaylar
Yazar DR’ye teşekkür etmek istiyor. George Washington Üniversitesi’nden Murray Loew ve DR. John Delaney ve Dr. E. Melanie Gifford, Ulusal Sanat Galerisi, Washington, D.C., Deney kurulumuyla ilgili geri bildirimleri için.
Yazar ayrıca Üniversite Bilim Adamları (ARCS) Vakfı için Başarı Ödüllerinden aldığı burs desteğini kabul etmek istiyor.
Çözüm
Not: Kinect’i bilgisayarınıza bağlamak için yazılımı başarıyla yükledikten sonra, bu projeyi tamamlamak için gerekli tek adımlar: 1) IR projektörünü engelleyin, 2) Yedek IR ışık kaynağı oluşturun ve monte edin (830 nm’ye yakın bir merkez dalga boyu ile) ve 3) deney. Aparatımın ve deneyimin detayları sağlandı, ancak detayları, sahip olduğunuz parçalara ve ekipmanlara ve görüntülemek istediğiniz şeylere dayanarak değiştirmenizi öneririm. Mutlu Bina!
Xbox Kinect’te hareket algılama nasıl çalışır?
Microsoft’un prototipi’S Kinect kamera ve mikrofonun maliyeti 30.000 dolara mal oldu. Perşembe sabahı gece yarısı, sen’Xbox 360 periferik olarak 150 dolara satın alabileceğim. Microsoft, şimdi ve Noel arasında 5 milyon adet satacağını öngörüyor. Biz’Yakında daha fazla ayrıntıya ve sistemin incelemesine sahip, ancak […] için
Hikayeyi Kaydet
Hikayeyi Kaydet
Microsoft’un Kinect Kamerası ve Mikrofonunun prototipi ünlü 30.000 dolara mal oldu. Perşembe sabahı gece yarısı, Xbox 360 çevre birim olarak 150 $ karşılığında satın alabileceksiniz.
Microsoft, şimdi ve Noel arasında 5 milyon adet satacağını öngörüyor. Yakında sistemin daha fazla ayrıntısına ve incelemesine sahip olacağız, ancak şimdilik hepsinin nasıl çalıştığını düşünmek için biraz zaman ayırmaya değer.
Kamera
Kinect’in kamerası hem donanım hem de yazılım tarafından desteklenmektedir. Ve bu iki şey yapar: nesnelerin görüş alanında üç boyutlu (hareketli) bir görüntüsünü oluşturun ve bu nesneler arasında insanları tanıyın (hareket ettirin).
Eski yazılım programları, nesneleri arka planlarından ayırt etmek için renk ve doku farklılıkları kullandı. PrimeSense, teknolojisi Kinect ve son Microsoft Edinme Canesta farklı bir model kullanan şirket. Kamera, görünmez yakın kızılötesi ışığı iletir ve nesneleri yansıttıktan sonra “uçuş süresini” ölçer.
Uçuş zamanı Sonar Gibi Çalışır: Işığın geri dönmesi ne kadar sürdüğünü biliyorsanız, bir nesnenin ne kadar uzakta olduğunu bilirsiniz. Büyük bir alan atın, çok fazla pingin ışık hızında ileri geri gidiyor ve birçok nesnenin ne kadar uzakta olduğunu bilebilirsiniz.
Bir kızılötesi jeneratör kullanmak da ortam ışığı sorununu kısmen çözer. Sensör görünür ışığı kaydetmek için tasarlanmadığından, çok fazla yanlış pozitif olmaz.
PrimeSense ve Kinect bir adım daha ileri gider ve IR ışığında bilgileri kodlar. Bu bilgiler döndürüldükçe, bazıları deforme olur-bu da sadece derinliklerini değil, bu nesnelerin 3-B dokusunun daha ince bir görüntüsünü oluşturmaya yardımcı olabilir.
Bu teknoloji ile Kinect, nesnelerin derinliğini 1 santimetre içinde ve yüksekliklerini ve genişliklerini 3 mm içinde ayırt edebilir.
Geleneksel bir video oyunu denetleyicisi bireysel ve seridir: Bu benim ve ekranda size karşı kontrol ettiğim ve kontrol ettiğiniz şeyleri kontrol ettiğim her şey. Kooperatif oynayabiliriz, ancak temelde birbirimizden izole edilmiş, nesneleri elimizdeki nesneleri manipüle ediyoruz.
Bir video oyunu denetleyicisi de son derece uzmanlaşmış bir cihazdır. Uzaktan kumanda olarak hafif iş yapabilir, ancak düğmeler, d-pads, joysticks, ivmeölçerler, jiroskoplar, dokunsal geri bildirim mekanizmaları ve konsolla arayüz çok özel bilgi türlerini iletmek için tasarlanmıştır.
Kinect farklı bir şey. Toplumsal, sürekli ve geneldir: oyun için bir GUI yerine multimedya için doğal bir kullanıcı arayüzü (veya NUI).
Ancak bunun gibi bir arayüzün sorunsuz bir şekilde bir araya gelmesi çok fazla teknoloji gerektirir ve “doğal olarak.”
Kinect 2 el laboratuvarda
Lab 2: Kızılötesi verilerin görüntülenmesi
Tamamlanacak tahmini süre: 20 Dakika
Bu laboratuvar, Windows 8’i nasıl oluşturacağınızı öğreten laboratuvarlarda bir dizi elin parçasıdır.1 Mağaza Uygulaması, Kinect 2’nin hemen hemen her özelliğini kullanarak 2. Bu serideki ikinci laboratuvar. Bu laboratuvarda, Kinect sensöründen kızılötesi beslemeyi nasıl alacağınızı ve XAML’deki beslemeyi bir görüntü olarak nasıl sunacağınızı öğreneceksiniz.
- Kodudaki Kinect sensöründe kızılötesi çerçeve okuyucusu nasıl açılır.
- Kızılötesi Çerçeve Hazır Olduğunda Nasıl Alınır?.
- Kızılötesi çerçeve verileri tek renkli bir bitmap’e nasıl dönüştürülür
- Değişen Bitmap nasıl XAML olarak sunulur.
- Kinect 2’nin durumu ve çözünürlüğü hakkında veri nasıl elde edilir ve sunulur.
Egzersiz 1 – Kızılötesi çerçevenin görüntüleme
- Mevcut olanı aç Kinect 2 Örnek Visual Studio’daki çözüm veya önceki laboratuvarın sonundan sahip olduğunuz kopya.
- Önce açacaksın Kızılötesi Çerçeve Okuyucu Kinect sensöründen kızılötesi verileri almak için. Aç Ana Sayfa.xaml.CS Dosya Çözüm Gezgini. Yazdığınız kod, Kinect sensörünü açmadan önce gereken kızılötesi beslemeyi, olayları ve verileri ayarlayacak. Kinect çerçeve vermeye başladığında, girişi alan bir şey var. Aşağıdaki kodu açıklamak için önemli değişkenlerin bir açıklamasıdır:
- kızılötesi – Kızılötesi çerçeveler için okuyucu
- Infraredframedata – Sensörden çerçeve verileri almak için ara depolama
- kızılcık – Ekran için renkli piksellere dönüştürülen çerçeve verileri için ara depolama
- bitmap – XAML’deki bir görüntünün içeriğinin yerini alacak olan WribableBitmap
Çerçeve okuyucusundan hazır olduğunda, genellikle saniyede yaklaşık 30 karede yeni bir çerçeve alınır. Her çerçeve, kamera çözünürlüğünün her pikseli için kızılötesi veri olarak gelir. Bu veriler, infredpiksellerde gri tonlamalı bir renk aralığına dönüştürülür. O zaman kızılötesi bir Bitmap nesnesine yazmak için kullanılır.
Tüm bu değişkenlerin, Kinect 2’den gelen kızılötesi çerçevenin boyutu olan uygun boyutla başlatılması gerekir.
Bu değişkenleri düzgün bir şekilde başlatmak için aşağıdaki vurgulanan kodu kopyalayın:
// . diğer ad alanlarıWindows kullanma.UI.Xaml.Medya.Görüntüleme;ad alanı kinect2sample < public sealed partial class MainPage : Page < // Size of the RGB pixel in the bitmapprivate const int bytesperpixel = 4;özel KinectSensor KinectSensor = null;özel writeablebitmap bitmap = null;// kızılötesi çerçeveÖzel InfredframeReader InfredframeReader = NULL;özel ushort [] infraredframeTA = null;özel bayt [] infredpixels = null;Genel MainPage () < // one sensor is currently supported this.kinectSensor = KinectSensor.GetDefault(); // get the infraredFrameDescription from the // InfraredFrameSourceFrameMescription InfrareFrameTescription =Bu.KinectSensor.Infredframesource.Çerçeve;// Kızılötesi çerçeveler için okuyucuyu açınBu.InfredframeReader =Bu.KinectSensor.Infredframesource.OpenReader ();// çerçeve varış için tel işleyiciBu.kızılötesi.Framearrived +=Bu.Reader_infredframearRived;// Piksellerin alınması için alan tahsis edin // alındı ve dönüştürüldüBu.InfraredframeTata =Yeni USHORT [InfredframeTescription.Genişlik *InfredframeTescription.Yükseklik];Bu.Infredpixels =Yeni bayt [InfredframeTescription.Genişlik *InfredframeTescription.Yükseklik * Bytesperpixel];// görüntülemek için bitmap oluşturBu.Bitmap =Yeni WriteableBitmap (InfraredFrameTescription.Genişlik,InfredframeTescription.Yükseklik);// sensörü açın.KinectSensor.Açık(); Bu.Bileşeni Başlatma(); >>>
Genel Mühürlü Kısmi Sınıf Ana Sayfası: Sayfa < // .özel void reader_infredframearrived (nesne gönderen,InfredframearrivedEventArgs e)<Bool InfredframeProcessess = false;// kızılötesi açıkkullanma (infredframe infredframe =e.Framereference.AcquireFrame ())if (infranedframe != null)<FrameMescription InfrareFrameTescription =kızılötesi.Çerçeve;// Verileri doğrulayın ve yeni kızılötesi çerçeve verilerini // ekran bitmap'e yazınif (((infredframeTescription.Genişlik *InfredframeTescription.Yükseklik)== bu.Infraredframedata.Uzunluk) &&(InfraredFrameTescription.Genişlik ==Bu.bitmap.Pixelwidth) &&(InfraredFrameTescription.Yükseklik ==Bu.bitmap.Pixelheight))// piksel verilerini görüntüden a // geçici diziye kopyalayınkızılötesi.CopyFrameTatatoArray (Bu.InfraredFrameTata);InfredframeProcessess = true;>>>// Bir çerçevemiz var, dönüştür ve oluşturdukif (infredframeprocessed)ConvertInFaredDatopixels ();RenderpixelArray (bu.infredpixels);>>>
Genel Mühürlü Kısmi Sınıf Ana Sayfası: Sayfa </// & ltsummary & gt/// Infraredframe'de döndürülebilecek en yüksek değer./// Görselleştirme kodunda okunabilirlik için bir şamandıra haline getirilir./// & lt/özet & gtÖzel Const Float InfrararedSourceValuemaximum =(şamandıra) ushort.Maksimum değer;/// & lt/özet & gt/// İşleme sonrası alt sınırını ayarlamak için kullanılır/// Oluşturacağımız kızılötesi veriler./// Bu değeri artırmak veya azaltmak bir parlaklık belirler/// "Wall" ya daha yakın veya daha uzakta./// & lt/özet & gtÖzel Const Float Infraredoutputvalueminimum = 0.01f;/// & ltsummary & gt/// Üst sınırı, işleme sonrası,/// Oluşturacak kızılötesi veriler./// & lt/özet & gtÖzel Const Float Infraredoutputvaluemaximum = 1.0f;/// & ltsummary & gt/// Kızılötesiscenevaluageer değeri,/// Sahnenin ortalama kızılötesi değeri./// Bu değer ortalamayı analiz ederek seçildi/// Belirli bir sahne için piksel yoğunluğu./// Bu, farklı işlemek için çalışma zamanında hesaplanabilir/// Bir sahnenin IR koşulları (içeride ve içeride)./// & lt/özet & gtÖzel Const Float Kızılötesi Tscenevaluageaage = 0.08f;/// & ltsummary & gt/// KızılötesisomAndardViations değeri belirtir/// Uygulanacak standart sapma sayısı/// kızılötesi./// Bu değer, belirli bir sahneden verileri analiz ederek seçildi./// Bu, farklı işlemek için çalışma zamanında hesaplanabilir/// Bir sahnenin IR koşulları (içeride ve içeride)./// & lt/özet & gtÖzel Const Float Kızılötesi Ts.SadandDeviations = 3.0f;//. Diğer özel değişkenler takip edin>
Genel Mühürlü Kısmi Sınıf Ana Sayfası: Sayfa < // Reader_InfraredFrameArrived() before this.özel void convertinfaredDatatopixels ()<// Kızılöteyi RGB'ye dönüştürünint colorPixelIndex = 0;için (int i = 0; i < this.infraredFrameData.Length; ++i)// Gelen Kızılötesi Verileri (USHORT) normalleştirin// infredoutputvalueminimum'dan değişen bir şamandıra// infredutputvaluemaximum'a]// 1. Gelen değeri bölmek// kaynak maksimum değerşamandıra yoğunluğuRatio = (şamandıra) bu.Infredframedata [i] /InfraredSourceValuemaximum;// 2. tarafından bölünüyor// (ortalama sahne değeri * standart sapmalar)InterseityRatio /=Kızılötesiseronaite * kızılötesisadardViations;// 3. Değeri INFRARREUTPUTPUTVALUEMAXIMUM ile sınırlamakIntergeSityRatio = Matematik.Min (Infraredutputvaluemaximum,IntegityRatio);// 4. düşük değeri sınırlamaIntergeSityRatio = Matematik.Max (Infraredutputvalueminimum,IntegityRatio);// 5. Normalize edilmiş değeri bir bayta dönüştürmek ve// Görüntünün gerektirdiği RGB bileşenleri olarak sonuçbayt yoğunluğu = (bayt) (IndesityRatio * 255.0F);Bu.Infredpixels [colorPixelIndex ++] = yoğunluk; //MaviBu.Infredpixels [colorPixelIndex ++] = yoğunluk; //YeşilBu.Infredpixels [colorPixelIndex ++] = yoğunluk; //KırmızıBu.Infredpixels [ColorPixelIndex ++] = 255; //Alfa>>>
Genel Mühürlü Kısmi Sınıf Ana Sayfası: Sayfa <// bundan önce dönüştürmek.özel void renderpixelArray (bayt [] piksel)piksel.Copyto (bu.bitmap.Pixelbuffer);Bu.bitmap.Geçersiz kılmak();Çerçeve.Kaynak = bu.bitmap;>>
& ltgrid arka plan = "" & gt& ltgrid marjı = "30" & gt& ltgrid.Rowdefinitions & gt& lTrowDefinition Height = "70"/& gt& lTrowDefinition Height = "*"/& gt& ltrowdefinition yüksekliği = "100"/& gt& lt/ızgara.RowDefinitions>& lttextblock ızgarası.Satır = "0"Style = ""Text = "Windows 2 için Kinect"/>& lTimage X: Name = "FramedisplayImage" Izgara.Satır = "1"Streç = "üniforma"/>& lt/ızgara>& lt/ızgara>
Eğlence için ışıkları kapatmayı deneyin. Kızılötesi ışık insanlar için görünmezdir ve bu nedenle kamera tam karanlıkta bile çalışır, bu gece görüşünün nasıl çalıştığı temeldir.
Lab 2: Kızılötesi verilerin görüntülenmesi
Bu alıştırma, mevcut kızılötesi çerçeve ve ayrıca Kinect’in mevcut durumu hakkında yararlı hata ayıklama verilerinin nasıl sunulacağını gösterecektir. Bu alıştırma, daha sonra Kinect ile ilgili herhangi bir sorunun giderilmesinde ve bir sonraki egzersizlerde çerçeveler arasındaki çözünürlük farkını vurgulamaya yardımcı olacaktır.
Kinect 2’den çerçeve verilerini almak ve görüntülemek için aşağıdaki adımları izleyin:
- İlk olarak, Tasarımcı XAML’yi görüntülerken x64 mimarileri için mevcut değil. O’S iyi çünkü Kinect 2, şimdi geçebileceğiniz X86 mimarisiyle de uyumludur:
- Tıklamak İNŞA ETMEK Daha sonra Yapılandırma yöneticisi… Yapılandırma yöneticisini açmak için.
- Altındaki açılır kutuyu tıklayın Aktif çözüm Platform: Ve seçin x86.
- Tıklamak Kapalı.
- Şimdi Proje Özelliklerini Çözüm Gezgini’ndeki Kinect2sample projesini sağ tıklayarak ve ardından tıklayarak açın Özellikler.
- Tıkla İnşa etmek Solda sekme, sonra yanında Platform: seçme x86 açılır listeden.
- Tıklamak DOSYA, Daha sonra Hepsini kaydet veya vur Ctrl + Shift + S Tüm dosyaları kaydetmek için.
- Yap ve Koş Hataları kontrol etmek için uygulama.
- Odaklanmanız gereken şeyler Kinect’in durumu (Yanıt veriyor veya değilse) ve Çerçevenin mevcut çözünürlüğü (ki şimdi ilginç ve daha sonra laboratuvar çerçeve türünü değiştirdiğinde). Bu değerleri arkadan kodla almak yeterince kolaydır. XAML’nin durum değerlerine bağlanmasını etkinleştirmek için, değişirse, İnotifypropertychanged arayüz Ana Sayfa sınıf. Ardından, durum değiştiğinde ve çerçeve açıklaması değiştiğinde kod değişimi olayı kovacaktır. Bunu ayarlamak için, önce aşağıdaki vurgulanan kodu kopyalayın Ana Sayfa Değiştirilebilir özellikleri başlatacak ve kullanmak için sınıf:
Sistemi Kullanma.ComponentModel;ad alanı kinect2sample < public sealed partial class MainPage : Page, İnotifypropertychanged< // . consts and other private variables. private KinectSensor kinectSensor = null;özel dize statustext = null;özel writeablebitmap bitmap = null;Özel Çerçeve Ekimi FrameTescription;// kızılötesi çerçeve değişkenleri.genel etkinlik PropertyChangedEventHandler PropertyChanged;genel dize statustextelde etmekayarlamakEğer bu.statustext != değer)Bu.statustext = değer;Eğer bu.Mülkü != null)Bu.Propertyched (bu, yeniPropertyChangedEventArgs ("statustext"));>>>>public framedescription current frameescriptionelde etmekayarlamakEğer bu. currentFrameTescription!= değer)Bu. currentFrameTescription = değer;Eğer bu.Mülkü != null)Bu.Propertyched (bu, yeniPropertyChangedEventArgs ("currentFrameScription"));>>>>// . >>Genel MainPage () < // . // create the bitmap to display this.bitmap = new WriteableBitmap(infraredFrameDescription.Width, infraredFrameDescription.Height);
Bu.CurrentFrameTescription = infrederframeTescription;// set IsAvailableChanged olay bildiricisini ayarlayınBu.KinectSensor.IsavailableChanged +=Bu.Sensor_isavailableChanged;// Bu örnekte pencere nesnesini görünüm modeli olarak kullanınBu.DataContext = this;// sensörü açın.KinectSensor.Açık(); Bu.Bileşeni Başlatma(); >özel geçersiz sensör_isavailableChanged (KinectSensor gönderen,IsavailableChangedEventArgs Args)Bu.Statustext = bu.KinectSensor.Gecerli ?"Koşu": "Mevcut Değil";>& lttextblock ızgarası.Row = "0" style = "" text = "windows 2 için kinect"/& gt
& ltstackpanel ızgarası.Satır = "0" oryantasyon = "yatay"Horizontaligment = "doğru"Dikeyalignment = "dip" ve gt& lttextBlock text = "Kinect Durumu:"/& gt& lttextBlock text = ""/gt& lttextBlock text = ", kare genişliği"/& gt& lttextBlock text = ", frameheight"/& gt& lt/stackpanel & gt& lTimage X: Name = "FramedisplayImage" Izgara.Satır = "1" streç = "üniforma"/& gtKinect’i çekmeyi deneyin ve durum değişikliğini görün. Sonra Kinect’i tekrar takarsanız, durum güncellenir ve besleme geri gelir.
Özet
Bu laboratuvar sana nasıl yapılacağını öğretti Kızılötesi bir çerçeve al ve kullanın Kinect 2 cihazından ve Görünür bir bitmap yapmak için bu çerçeve verilerini kullanın olmak XAML’de görüntülendi.
Bu sürecin çoğunun manuel olduğunu belirtmek ilginçtir. Veriler Kızılötesi Buna kadar kullanılabilir değil’Bir bitmap’e dönüştürüldü. Bu, görünür bir görüntüye dönüştürmenin ötesinde birçok kızılötesi ışığın kullanımı olduğundan, bu. Kinect 2, düşük ışık koşullarında bilinen cisimleri ve şekilleri hesaplamak için kızılötesi kamerayı kullanır. Bu yüzden kızılötesinin çözünürlüğü çok düşük: Deptebir tarafından görülen çözünürlükle eşleşir ne olduğunu hesaplamak için’t bir kişi.
Bir sonraki laboratuvarda, XAML’de çerçeve verilerini görüntülediğiniz için Colorframe ve Infraredframe arasındaki çözünürlük farkını göreceksiniz.
Bu laboratuvardaki çalışmanın tamamlanmış kod çözümü olan kod var. Bir sonraki laboratuvar bu koddan başlayacak.