Apakah Kinect menggunakan inframerah
Ringkasan
Dalam artikel ini, kami akan mengeksplorasi bagaimana Microsoft Kinect dapat dimodifikasi untuk berfungsi sebagai kamera inframerah (IR). Kinect biasanya dikenal sebagai kamera kedalaman, tetapi dengan beberapa modifikasi, dapat menangkap gambar IR. Dengan memblokir proyektor IR dan menambahkan lampu IR eksternal, kami dapat mengaktifkan Kinect untuk mendeteksi dan merekam cahaya inframerah. Berikut adalah poin -poin utama yang dibahas dalam artikel ini:
- Kinect adalah periferal untuk konsol Xbox 360 yang memungkinkan pengguna untuk berinteraksi tanpa menggunakan pengontrol.
- Kinect adalah kamera kedalaman, yang berarti dapat menghitung jarak antara dirinya dan objek dalam bidang pandangnya.
- Dengan memodifikasi Kinect, kita dapat menggunakannya sebagai kamera IR untuk menangkap gambar IR.
- Komponen Kinect termasuk proyektor IR, kamera IR, dan kamera RGB.
- Proyektor IR memancarkan kisi -kisi titik -titik IR pada objek, yang dideteksi kamera IR untuk menghitung gambar kedalaman.
- Deskripsi terperinci tentang Kinect dan potensi penggunaannya dapat ditemukan dalam buku “Making Things See” oleh Greg Borenstein.
- Untuk menghubungkan Kinect ke komputer, kita perlu menginstal perangkat lunak dan pustaka tertentu, seperti Openni, Nite, Sensor, dan Sensorkinect.
- Setelah instalasi, kami dapat memverifikasi keberhasilan dengan menjalankan skrip sampel dalam pemrosesan.
- Untuk memblokir proyektor IR, kami dapat membuat penutup mata menggunakan lakban dan bantalan velcro.
- Karena memblokir proyektor IR mempengaruhi visibilitas IR, lampu IR eksternal perlu ditambahkan untuk memberikan pencahayaan IR yang cukup.
- Untuk membangun lampu IR, kita dapat mengikuti diagram sirkuit dan menghitung nilai resistansi untuk LED.
Pertanyaan dan jawaban
T1: Untuk apa Kinect yang terutama dikenal?
A1: Kinect terutama dikenal sebagai kamera kedalaman, mampu menghitung jarak antara objek dan dirinya sendiri.
T2: Bagaimana Kinect dapat dimodifikasi untuk berfungsi sebagai kamera inframerah?
A2: Kinect dapat dimodifikasi dengan memblokir proyektor IR dan menambahkan lampu IR eksternal untuk menangkap gambar inframerah.
T3: Apa komponen Kinect?
A3: Komponen Kinect termasuk proyektor IR, kamera IR, dan kamera RGB.
T4: Bagaimana Kinect Compute Depth Images?
A4: Kinect menghitung gambar kedalaman dengan memancarkan kisi -kisi titik -titik IR pada objek, yang dideteksi dan digunakan kamera IR untuk menghitung jarak.
T5: Apakah ada sumber daya yang disarankan untuk belajar lebih banyak tentang Kinect?
A5: Ya, “Making Things See” oleh Greg Borenstein memberikan deskripsi terperinci tentang Kinect dan aplikasi potensial.
T6: Perangkat lunak dan pustaka apa yang diperlukan untuk menghubungkan Kinect ke komputer?
A6: Perangkat lunak dan pustaka yang diperlukan termasuk Openni, Nite, Sensor, dan Sensorkinect.
T7: Bagaimana kita bisa memverifikasi pemasangan perangkat lunak Kinect yang berhasil?
A7: Dengan menjalankan skrip sampel dalam pemrosesan, seperti kedalaman dan deptinfrare, kita dapat memverifikasi jika instalasi berhasil.
T8: Bagaimana proyektor IR Kinect diblokir?
A8: penutup mata dapat dibuat menggunakan lakban dan bantalan velcro untuk menutup dan memblokir proyektor IR.
T9: Mengapa perlu menambahkan lampu IR eksternal?
A9: Memblokir proyektor IR mengurangi visibilitas IR, sehingga lampu IR eksternal diperlukan untuk memberikan pencahayaan IR yang cukup untuk menangkap gambar IR.
T10: Bagaimana kita bisa membangun lampu IR untuk meningkatkan visibilitas IR?
A10: Mengikuti diagram sirkuit dan menghitung nilai resistansi untuk LED, kita dapat membangun lampu IR untuk meningkatkan visibilitas IR.
Kesimpulan
Dalam artikel ini, saya telah menjelajahi bagaimana Microsoft Kinect dapat dimodifikasi untuk berfungsi sebagai kamera inframerah. Dengan modifikasi dan penambahan yang tepat, Kinect dapat menangkap gambar inframerah dan memberikan kemungkinan baru untuk berbagai proyek. Proyek ini memungkinkan kita untuk memanfaatkan potensi Kinect di luar penggunaan tradisionalnya, menunjukkan keserbagunaan dan pengembang.
Menggunakan Kinect sebagai Kamera Inframerah
Borenstein, Greg, Membuat segalanya melihat, HAI’Reilly Media, Inc., 978-1-449-30707-3, Januari 2012.
Apakah Kinect menggunakan inframerah
Об этой страницental
Ы заре kondecedit. С помощю этой страницы с сожем определить, что запросы о о ancing оеет иенно ы,. Почем это мопо произойтиonya?
Эта страница отбражаетсagn в тех слчаях, когда аавистркимисте secara Google ристancing ииишшшamah риииииamah которые наршают уловия исполззованияisah. Страница перестанет отображаться после то A, как эти запросы прекратяupanisah яяisah ancing ancing. До это A.
Источником запросов может слжить Врддносно secara п, пар иа бас00 иасазаз) ыылку запросов. Если Вы исползеет общий дсст в и итернет, проблем м ы ы ip ip ip00 ip ip ip ip ip uman ip ip ip ip ip ip uman ip ip ip ip ip ip ip uman ip ip ip ip ip ip ip ON ip ip ip ip ip ip ON. Обратитесь к своем системном аинистратору. Подробнее secara.
Пожет такжeda появлят secara, если Вы Вонот A рлжвввв dari рыч о оаilat оыч о оаilat, еами, ии же Водитedit запросы чень часто засто.
Menggunakan Kinect sebagai Kamera Inframerah
Proyek ini akan menunjukkan bagaimana Microsoft Kinect dapat dimodifikasi untuk digunakan sebagai kamera inframerah (IR).
- Waktu diperlukan: 2-3 jam
- Cetak proyek ini

Oleh Damon Conover
Damon Conover
Kinect adalah periferal untuk konsol Xbox 360 yang memungkinkan pengguna untuk berinteraksi dengan Xbox 360 tanpa menyentuh pengontrol. Deskripsi umum tentang Kinect adalah bahwa itu adalah kamera kedalaman. Ini berarti bahwa Anda dapat menempatkan objek di depannya, dan itu akan menghitung jarak dari itu ke objek, sehingga membuat gambar kedalaman. Oleh karena itu, Kinect dapat menyediakan lokasi objek dalam gambar yang relatif terhadap dirinya sendiri, dan informasi ini dapat digunakan dalam berbagai proyek. Juga, Kinect berisi banyak komponen yang, dengan sedikit modifikasi, dapat digunakan untuk tujuan baru. Sebagai contoh, proyek ini akan menunjukkan bagaimana Kinect dapat digunakan sebagai kamera inframerah (IR).
Untuk deskripsi terperinci tentang cara kerja Kinect dan bagaimana hal itu dapat digunakan dalam proyek yang berbeda, saya sarankan Anda membaca Membuat segalanya melihat oleh Greg Borenstein (http: // shop.Oreilly.com/produk/06369200…). Gambar di Langkah 1 menunjukkan komponen Kinect yang diperlukan untuk memahami proyek ini. Proyektor IR menyinari kisi -kisi titik -titik IR pada benda -benda di depannya. Kami tidak dapat melihat titik -titiknya, tetapi kamera IR dapat mendeteksinya. Menggunakan pola titik pada setiap objek, Kinect dapat menghitung gambar kedalaman. Komponen terakhir adalah kamera RGB yang mirip dengan webcam standar.
Langkah Proyek
Instal perangkat lunak yang diperlukan untuk menghubungkan Kinect ke komputer Anda

Ikuti instruksi khusus platform di sini untuk:
Pasang driver Openni, Nite, Sensor, dan Sensorkinect
Instal Perpustakaan Simpleopenni untuk diproses
Verifikasi bahwa instalasi berhasil

Mulailah memproses dan jalankan contoh kedalaman dan kedalaman.
Berikan daya ke Kinect Anda dan sambungkan ke komputer Anda melalui port USB.
Pergi ke File → Contoh → Perpustakaan yang Dikontribusi → Simpleopenni → Openni.
Klik dua kali pada contoh yang ingin Anda jalankan (misalnya, depthinfrared), dan skrip contoh akan terbuka.
Klik tombol Jalankan, dan gambar akan muncul di layar Anda. Untuk skrip depthinfrared, gambar kedalaman akan berada di sebelah kiri dan gambar IR akan berada di sebelah kanan, seperti yang ditunjukkan di sebelah kiri.
Memblokir proyektor IR

Seperti yang dapat dilihat pada langkah sebelumnya, gambar IR yang dihasilkan oleh skrip Depthinfrared berisi pola titik yang ingin kami hapus.
Untuk melakukan ini, buat penutup mata untuk menutup proyektor IR.
Ambil dua strip lakban, masing -masing lebih dari 9 inci, dan tempatkan satu sehingga sedikit tumpang tindih yang lain. Kemudian ulangi menggunakan dua strip lakban lagi.
Ambil dua strip lakban lebar ganda dan letakkan sisi lengket bersama-sama.
Potong strip yang dihasilkan hingga 9 inci.
Tempatkan bantalan Velco di salah satu ujung strip, bungkus strip di sekitar Kinect, menutupi proyektor IR, dan letakkan bantalan Velco yang berlawanan sedemikian rupa sehingga strip dipegang erat, seperti yang ditunjukkan di sebelah kiri.
Bangun Lampu IR

Sekarang proyektor IR telah diblokir, tidak ada lagi lampu IR untuk kamera IR untuk menghasilkan gambar yang bagus.
Oleh karena itu, pencahayaan IR eksternal perlu ditambahkan. Diagram sirkuit di sebelah kiri menunjukkan satu desain yang mungkin untuk dua lampu IR.
Hubungkan catu daya DC ke jack daya dan ukur tegangannya (VDC) menggunakan multimeter. Untuk catu daya saya, VDC = 15.6 v.
Cari tegangan maju khas (VF) dan arus maju maksimum (jika, maks) LED. Punyaku adalah VF = 1.5 V dan IF = 20 Ma, masing -masing.
Hitung resistansi (r1 = r2 = r3 = r4) yang diperlukan untuk membatasi arus melalui setiap seri enam LED. Saya menggunakan resistor 360 Ω. R> ((vdc – (# LED)*vf)/if)
Bangun Lampu IR (Lanjutan)



Pada setengah dari PCB, tempatkan enam LED dan satu resistor. Kabel solder yang menghubungkan LED, katoda ke anoda, dan resistor. Ulangi untuk bagian PCB lainnya. Kemudian solder kawat yang menghubungkan anoda gratis dan kawat lain yang menghubungkan ujung resistor yang bebas.
Solder Kawat merah panjang ke anoda yang terhubung dan kawat hitam panjang ke resistor yang terhubung.
(Opsional) Gunakan Sugru untuk menahan kabel panjang ke PCB untuk memberikan bantuan regangan.
Menyodok lubang di bagian bawah gelas plastik, memberi makan kabel melalui lubang, dan tekan PCB dengan erat ke dalam cangkir. Jika PCB tidak pas, gunakan Sugru untuk menahannya di tempatnya.
Ulangi empat langkah sebelumnya untuk lampu kedua.
Bangun Pengontrol Intensitas Lampu

Gunakan kaliper untuk mengukur ukuran lubang yang diperlukan untuk memasang dua pot, sakelar, pemegang sekering, dan power jack.
Lubang bor di kandang proyek dan pasang perangkat keras. Juga, bor dua lubang kecil untuk dimasuki kabel. Saat merencanakan di mana harus menempatkan setiap lubang, perlu diingat di mana setiap bagian akan duduk di selungkup, untuk memastikan semuanya cocok.
Anda perlu membuka lubang untuk power jack menggunakan alat dremel atau dengan pisau.
Tempatkan Sugru di bagian dalam dan di luar selungkup untuk menahan jack di tempatnya.
Bangun Pengontrol Intensitas Lampu (Lanjutan)

Putar setiap pot ke posisi yang akan menjadi pengaturan rendah dan kemudian gunakan multimeter Anda’s tester kontinuitas untuk menemukan dua pin yang akan digunakan di sirkuit (tester akan berbunyi bip).
Juga, gunakan tester kontinuitas untuk menentukan dua pin mana pada sakelar yang terhubung saat sakelar naik dan mana yang terhubung saat sakelar turun.
Kabel pendek solder yang menghubungkan bagian -bagian di dalam selungkup, sesuai dengan diagram sirkuit.
Solder dua kabel merah panjang ke pot dan dua kabel hitam panjang ke sakelar, dan kemudian menyodoknya melalui dua lubang kecil.
Sekrup di selungkup’s tutup dan menempatkan sekering di dudukan sekering.
Putar kabel yang keluar dari lampu bersama-sama dengan kabel yang masuk ke pengontrol (merah-ke-merah, hitam-ke-hitam), solder jika perlu, lalu tutupi kabel yang terbuka dengan pita listrik.
Pasang Kinect dan Lampu

Tempatkan Kinect di permukaan, menunjuk pada objek yang ingin Anda gambar.
(Opsional) Sambungkan Kinect ke konektor tripod dan kemudian ke tripod. Hubungkan tripod ke dudukan cincin, dan posisikan di depan permukaan pencitraan.
Pasang lampu dalam orientasi sehingga permukaan pencitraan akan diterangi.
(Opsional) Sambungkan lampu ke dudukan cincin dan pegang pada posisinya dengan klem, engsel, dan selotip.
Colokkan catu daya adaptor dinding ke outlet dan kemudian sambungkan ke pengontrol intensitas lampu melalui jack daya.
Lakukan percobaan


Ambil selembar kertas konstruksi dan gambar satu objek di sisi kiri dan satu lagi di sisi kanan, menggunakan pensil arang.
Warna di atas benda kiri dengan pastel biru phthalo dan warna di atas benda kanan dengan pastel biru Prusia.
Tempatkan kertas di depan kamera.
Buka pemrosesan, buat skrip RGB_SAVE.PDE Dan ir_save.PDE (Kode disediakan dalam kode terlampir.PDF), Ubah kode sedemikian rupa sehingga file dan nama jalur sesuai untuk komputer Anda, jalankan RGB_SAVE.PDE, dan kemudian lari ir_save.PDE.
Nyalakan lampu dengan membalik sakelar, lalu sesuaikan intensitas menggunakan tombol pada pengontrol. Anda tidak akan dapat melihat lampu IR yang dipancarkan oleh LED, jadi gunakan video IR yang ditangkap oleh kamera untuk menentukan intensitas yang diinginkan. Anda harus menjalankan kedua skrip lagi, setelah menyesuaikan lampu.
Gambar yang dihasilkan, ditampilkan di sebelah kiri, harus menampilkan gambar warna di bagian atas dan video IR di bagian bawah. Hasilnya menunjukkan bahwa dua pigmen terlihat serupa di bagian warna spektrum, tetapi sangat berbeda di bagian IR.
Untuk deskripsi terperinci tentang sains di balik percobaan ini, saya sarankan Anda membaca makalah oleh Delaney et al. tercantum dalam referensi.
Referensi

Wiki Opennni Sederhana (Terakhir Diakses 20 April 2012). *** Contoh yang disertakan dengan kotak alat sangat membantu.
Borenstein, Greg, Membuat segalanya melihat, HAI’Reilly Media, Inc., 978-1-449-30707-3, Januari 2012.
REC, Casey dan Ben Fry, Memulai pemrosesan, HAI’Reilly Media, Inc., 978-1-449-37980-3, Juni 2010.
Blake, Joshua, “Peretasan Kinect”, Buat:, Volume 29, 124-133, http: // makeProjects.com/wiki/29#section_… (Terakhir diakses 20 April 2012).
Delaney, John K., Elizabeth Walmsley, Barbara H. Berrie, dan Colin F. Pembuat panah, “Pencitraan multispektral lukisan dalam inframerah untuk mendeteksi dan memetakan pigmen biru”, (Sackler Nas Colloquium) Pemeriksaan Ilmiah Seni: Teknik Modern dalam Konservasi dan Analisis, Prosiding Akademi Ilmu Pengetahuan Nasional, 120-136, http: // www.tidur sebentar.edu/katalog/11413.HTML (terakhir diakses 20 April 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, “Spektroskopi pencitraan reflektansi yang terlihat dan inframerah dari lukisan: pemetaan pigmen dan peningkatan refleksi inframerah”, Q3A: Optik untuk Seni, Arsitektur, dan Arkeologi II, diedit oleh Luca Pezzati dan Renzo Salimbeni, Proc. dari Spie Vol. 7391, 2009.
Ucapan Terima Kasih

Penulis ingin mengucapkan terima kasih kepada Dr. Murray Loew, dari Universitas George Washington, dan Dr. John Delaney dan Dr. E. Melanie Gifford, dari Galeri Seni Nasional, Washington, D.C., untuk umpan balik mereka tentang pengaturan eksperimental.
Penulis juga ingin mengakui dukungan beasiswa yang ia terima dari Yayasan Prestasi Imbalan untuk Ilmuwan Perguruan Tinggi (ARCS).
Kesimpulan
Catatan: Setelah Anda berhasil menginstal perangkat lunak untuk menghubungkan Kinect ke komputer Anda, satu -satunya langkah yang diperlukan untuk menyelesaikan proyek ini adalah: 1) Blokir proyektor IR, 2) Bangun dan pasang Sumber Lampu IR Penggantian (dengan panjang gelombang tengah di dekat 830 nm), dan 3) Eksperimen. Rincian peralatan dan percobaan saya disediakan, tetapi saya mendorong Anda untuk memodifikasi detail berdasarkan bagian dan peralatan yang Anda miliki dan berdasarkan hal -hal yang ingin Anda gambar. Bangunan yang bahagia!
Bagaimana deteksi gerak bekerja di Xbox Kinect
Prototipe untuk Microsoft’Kamera dan mikrofon Kinect yang terkenal berharga $ 30.000. Pada tengah malam Kamis pagi, Anda’ll dapat membelinya seharga $ 150 sebagai perifer Xbox 360. Microsoft memproyeksikan bahwa itu akan menjual 5 juta unit antara sekarang dan Natal. Kami’akan memiliki detail lebih lanjut dan ulasan sistem segera, tetapi untuk […]
Simpan cerita
Simpan cerita

Prototipe untuk Kamera Kinect dan Mikrofi Microsoft terkenal berharga $ 30.000. Pada tengah malam Kamis pagi, Anda akan dapat membelinya seharga $ 150 sebagai periferal Xbox 360.
Microsoft memproyeksikan bahwa itu akan menjual 5 juta unit antara sekarang dan Natal. Kami akan memiliki detail lebih lanjut dan ulasan sistem segera, tetapi untuk saat ini ada baiknya meluangkan waktu untuk memikirkan bagaimana semuanya bekerja.
Kamera
Kamera Kinect didukung oleh perangkat keras dan perangkat lunak. Dan ia melakukan dua hal: menghasilkan gambar tiga dimensi (bergerak) dari objek dalam bidang pandangnya, dan mengenali manusia (bergerak) di antara objek-objek tersebut.
Program perangkat lunak yang lebih lama menggunakan perbedaan warna dan tekstur untuk membedakan objek dari latar belakangnya. Primesense, perusahaan yang teknologinya Kinect, dan Microsoft Acquisition Canesta baru -baru ini menggunakan model yang berbeda. Kamera mentransmisikan cahaya inframerah-dekat yang tidak terlihat dan mengukur “waktu penerbangan” setelah memantulkan objek.
Time-of-flight berfungsi seperti sonar: jika Anda tahu berapa lama cahaya yang dibutuhkan untuk kembali, Anda tahu seberapa jauh suatu objek. Melemparkan bidang besar, dengan banyak ping bolak -balik dengan kecepatan cahaya, dan Anda bisa tahu seberapa jauh banyak objek.
Menggunakan generator inframerah juga sebagian memecahkan masalah cahaya sekitar. Karena sensor tidak dirancang untuk mendaftarkan cahaya yang terlihat, itu tidak mendapatkan hal positif yang cukup banyak.
Primesense dan Kinect melangkah lebih jauh dan menyandikan informasi dalam cahaya dekat-IR. Karena informasi itu dikembalikan, beberapa di antaranya dideformasi-yang pada gilirannya dapat membantu menghasilkan gambar yang lebih baik dari tekstur 3-D objek itu, bukan hanya kedalamannya.
Dengan teknologi ini, Kinect dapat membedakan kedalaman objek dalam waktu 1 sentimeter dan tinggi serta lebarnya dalam 3 mm.

Pengontrol videogame tradisional adalah individu dan serial: Ini saya dan apa pun yang saya kendalikan di layar versus Anda dan apa yang Anda kendalikan. Kami mungkin bermain secara kooperatif, tetapi pada dasarnya kami entitas diskrit terisolasi satu sama lain, memanipulasi objek di tangan kami.
Pengontrol videogame juga merupakan perangkat yang sangat terspesialisasi. Ini mungkin melakukan pekerjaan ringan sebagai kendali jarak jauh, tetapi tombol, D-pad, joystick, accelerometer, giroskop, mekanisme umpan balik haptic dan antarmuka dengan konsol semuanya dirancang untuk mengomunikasikan jenis informasi yang sangat spesifik.
Kinect adalah sesuatu yang berbeda. Ini komunal, kontinu, dan umum: Antarmuka pengguna alami (atau NUI) untuk multimedia, daripada GUI untuk bermain game.
Tapi butuh banyak teknologi untuk membuat antarmuka seperti itu bersatu dengan mulus dan “secara alami.”
Kinect 2 Hands on Labs
Lab 2: Menampilkan Data Inframerah
Perkiraan waktu untuk menyelesaikan: 20 menit
Lab ini adalah bagian dari serangkaian laboratorium tangan yang mengajarkan Anda cara membuat windows 8.1 aplikasi toko, menggunakan hampir setiap fitur Kinect 2 yang tersedia. Ini adalah lab kedua dalam seri ini. Di lab ini Anda akan belajar cara mengambil umpan inframerah dari sensor Kinect, dan cara menyajikan pakan di XAML sebagai gambar.
- Cara membuka pembaca frame inframerah pada sensor Kinect dalam kode.
- Cara menerima bingkai inframerah saat siap.
- Cara mengubah data bingkai inframerah menjadi bitmap monokrom
- Cara menyajikan bitmap yang berubah ke xaml.
- Cara mendapatkan dan menyajikan data tentang status dan resolusi Kinect 2.
Latihan 1 – Menampilkan bingkai inframerah
- Buka yang ada Sampel Kinect 2 Solusi di Visual Studio, atau salinan yang Anda miliki dari ujung lab sebelumnya.
- Pertama, Anda akan membuka Pembaca Frame Infrared Untuk mengambil data inframerah dari sensor Kinect. Buka Halaman Utama.xaml.CS file dari Penjelajah solusi. Kode yang Anda tulis akan mengatur umpan inframerah, peristiwa, dan data yang diperlukan, sebelum membuka sensor Kinect. Saat Kinect mulai memberikan bingkai, Anda memiliki sesuatu yang menerima input. Untuk menjelaskan kode berikut di sini adalah deskripsi variabel penting:
- Infraredframereader – Pembaca untuk bingkai inframerah
- Infraredframedata – Penyimpanan menengah untuk menerima data bingkai dari sensor
- infraredpixels – Penyimpanan menengah untuk data bingkai yang dikonversi ke piksel warna untuk tampilan
- Bitmap – WritableBitmap yang akan menggantikan konten gambar di XAML
Bingkai baru diterima dari pembaca bingkai saat siap, biasanya sekitar 30 frame per detik. Setiap frame tiba sebagai data inframerah untuk setiap piksel resolusi kamera. Data ini dikonversi ke rentang warna skala abu -abu, di infraredpixels. Kemudian infraredpixels digunakan untuk menulis ke objek bitmap.
Semua variabel ini perlu diinisialisasi dengan ukuran yang sesuai, yang merupakan ukuran bingkai inframerah yang berasal dari Kinect 2.
Untuk menginisialisasi variabel -variabel ini dengan benar, salin kode yang disorot di bawah ini:
// . Namespaces lainnyamenggunakan windows.Ui.Xaml.Media.Pencitraan;Namespace Kinect2Sample < public sealed partial class MainPage : Page < // Size of the RGB pixel in the bitmapprivate const int bytesperpixel = 4;Kinectsensor Private Kinectsensor = NULL;private writeableBitmap bitmap = null;// bingkai inframerahInfraredframereader Private Infraredframereader = null;Ushort pribadi [] infraredframedata = null;byte pribadi [] infraredpixels = null;Publik MainPage () < // one sensor is currently supported this.kinectSensor = KinectSensor.GetDefault(); // get the infraredFrameDescription from the // InfraredFrameSourceFramedescription infraredframedescription =ini.Kinectsensor.InfraredFramesource.Framedescription;// Buka pembaca untuk frame inframerahini.infraredframereader =ini.Kinectsensor.InfraredFramesource.OpenReader ();// pawang kawat untuk kedatangan bingkaiini.Infraredframereader.Framearrived +=ini.Reader_infraredframeArrived;// Alokasikan ruang untuk menempatkan piksel menjadi // diterima dan dikonversiini.infraredframedata =Ushort baru [Infraredframedescription.Lebar *Infraredframedescription.Tinggi];ini.infraredpixels =byte baru [infraredframedescription.Lebar *Infraredframedescription.Tinggi * bytesperpixel];// Buat bitmap untuk ditampilkanini.bitmap =WriteableBitMap baru (InfraredFramedescription.Lebar,Infraredframedescription.Tinggi);// buka sensor ini.Kinectsensor.Membuka(); ini.InitializeComponent (); >>>
Halaman kelas parsial yang disegel umum: halaman < // .Private Void Reader_infraredframeArrived (pengirim objek,InfraredframearrivedEventArgs e)<bool infraredframeprocessed = false;// infraredframe adalah idisposablemenggunakan (infraredframe infraredframe =e.Framereference.Acquireframe ())if (infraredframe != null)<Framedescription infraredframedescription =Infraredframe.Framedescription;// Verifikasi data dan tulis data frame inframerah baru // ke bitmap tampilanif ((((infraredframedescription.Lebar *Infraredframedescription.Tinggi)== Ini.Infraredframedata.Panjang) &&(Infraredframedescription.Lebar ==ini.Bitmap.Pixelwidth) &&(Infraredframedescription.Tinggi ==ini.Bitmap.Pixelheight))// Salin data piksel dari gambar ke // array sementaraInfraredframe.CopyFramedAtoArray (ini.infraredframedata);infraredframeprocessed = true;>>>// Kami punya bingkai, konversi dan renderif (infraredframeprocessed)ConvertInfraredDataPixels ();Renderpixelarray (ini.infraredpixels);>>>
Halaman kelas parsial yang disegel umum: halaman </// & ltsummary & gt/// Nilai tertinggi yang dapat dikembalikan di inframentframe./// Ini dilemparkan ke float untuk keterbacaan dalam kode visualisasi./// & lt/ringkasan & gtprivate const float infraredsourcevaluemaximum =(mengapung) Ushort.MaxValue;/// & lt/ringkasan & gt/// digunakan untuk mengatur batas bawah, post pemrosesan, dari/// data inframerah yang akan kami berikan./// meningkatkan atau mengurangi nilai ini menetapkan kecerahan/// "dinding" baik lebih dekat atau lebih jauh./// & lt/ringkasan & gtPrivate const float infraredoutputvalueminium = 0.01f;/// & ltsummary & gt/// batas atas, post pemrosesan, dari/// data inframerah yang akan diterjemahkan./// & lt/ringkasan & gtPrivate const float infraredoutputvaluemaximum = 1.0F;/// & ltsummary & gt/// Nilai infraredscenevalueaveaveage menentukan/// nilai rata -rata inframerah adegan./// Nilai ini dipilih dengan menganalisis rata -rata/// intensitas piksel untuk adegan yang diberikan./// ini bisa dihitung saat runtime untuk menangani berbeda/// IR Kondisi pemandangan (di luar vs di dalam)./// & lt/ringkasan & gtprivate const float infraredscenevalueaverage = 0.08f;/// & ltsummary & gt/// nilai infraredscenestandarddeviations ditentukan/// Jumlah standar deviasi untuk diterapkan/// infraredscenevalueaverage./// Nilai ini dipilih dengan menganalisis data dari adegan yang diberikan./// ini bisa dihitung saat runtime untuk menangani berbeda/// IR Kondisi pemandangan (di luar vs di dalam)./// & lt/ringkasan & gtPrivate const float infraredscenestandarddeviations = 3.0F;//. Variabel pribadi lainnya mengikuti>
Halaman kelas parsial yang disegel umum: halaman < // Reader_InfraredFrameArrived() before this.Private Void ConvertInfraredDataPixels ()<// Konversikan inframerah menjadi RGBint colorpixelIndex = 0;untuk (int i = 0; i < this.infraredFrameData.Length; ++i)// Normalisasi data inframerah yang masuk (USHORT)// pelampung mulai dari infraredoutputvalueminimum// ke infraredoutputvaluemaximum] oleh// 1. membagi nilai yang masuk dengan// sumber nilai maksimumfloat intensityratio = (float) ini.infraredframedata [i] /Infraredsourcevaluemaximum;// 2. Membagi dengan// (nilai adegan rata -rata * standar deviasi)intensityratio /=Infraredscenevalueaverage * infraredscenestandarddeviations;// 3. membatasi nilai untuk infraredoutputValuemaximumintensityratio = matematika.Min (infraredoutputValuMaximum,intensityratio);// 4. membatasi nilai infraredoutputvalueminimum nilai lebih rendahintensityratio = matematika.Max (InfraredoutputValueminimum,intensityratio);// 5. mengubah nilai yang dinormalisasi menjadi byte dan menggunakan// Hasilnya sebagai komponen RGB yang dibutuhkan oleh gambarintensitas byte = (byte) (intensityratio * 255.0F);ini.infraredpixels [colorpixelIndex ++] = intensitas; //Biruini.infraredpixels [colorpixelIndex ++] = intensitas; //Hijauini.infraredpixels [colorpixelIndex ++] = intensitas; //Merahini.infraredpixels [colorpixelIndex ++] = 255; //Alfa>>>
Halaman kelas parsial yang disegel umum: halaman <// convertInfraredDataPixels () sebelum ini.private void renderpixelarray (byte [] piksel)piksel.Copyto (ini.Bitmap.Pixelbuffer);ini.Bitmap.Invalidate ();FramedisplayImage.Sumber = ini.bitmap;>>
& ltgrid latar = "" & gt& margin ltgrid = "30" & gt& ltgrid.RowDefinitions & gt& ltrowdefinition height = "70"/& gt& ltrowdefinition height = "*"/& gt& ltrowdefinition height = "100"/& gt& LT/Grid.RowDefinitions>& LttextBlock Grid.Baris = "0"Style = ""Text = "Kinect for windows 2"/>& ltimage x: name = "framedisplayimage" grid.Baris = "1"Peregangan = "seragam"/>& lt/grid>& lt/grid>

Untuk bersenang -senang, cobalah mematikan lampu. Cahaya inframerah tidak terlihat oleh manusia dan kamera bekerja bahkan dalam kegelapan total, ini adalah dasar bagaimana penglihatan malam bekerja.
Lab 2: Menampilkan Data Inframerah
Latihan ini akan menunjukkan kepada Anda bagaimana menyajikan data debugging yang berguna tentang bingkai inframerah saat ini dan juga status Kinect saat ini. Latihan ini akan membantu Anda mengatasi masalah apa pun dengan Kinect nanti, dan untuk menyoroti perbedaan resolusi antara bingkai dalam latihan berikutnya.
Untuk mengambil dan menampilkan data bingkai dari Kinect 2, ikuti langkah -langkah di bawah ini:

- Pertama, Anda mungkin memperhatikan bahwa Perancang Saat melihat XAML tidak tersedia saat membangun untuk arsitektur x64. Itu’S baiknya karena Kinect 2 juga kompatibel dengan arsitektur x86, yang dapat Anda beralih ke sekarang:
- Klik MEMBANGUN Kemudian Manajer Konfigurasi… Untuk membuka manajer konfigurasi.
- Klik kotak dropdown di bawah Solusi aktif Platform: dan pilih x86.
- Klik Menutup.
- Sekarang buka Project Properties dengan mengklik kanan proyek Kinect2Sample di Solution Explorer, lalu mengklik Properti.
- Klik Membangun tab di sebelah kiri, lalu di samping Platform: Pilih x86 dari dropdown.
- Klik MENGAJUKAN, Kemudian Simpan semua atau memukul Ctrl + shift + s Untuk menyimpan semua file.
- Membangun dan menjalankan Aplikasi untuk memeriksa kesalahan.
- Hal -hal yang harus Anda fokuskan adalah status Kinect (jika merespons atau tidak) dan Resolusi bingkai saat ini (yang menarik sekarang, dan kemudian saat lab mengubah jenis bingkai). Cukup mudah untuk mendapatkan nilai -nilai ini dalam kode di belakang. Untuk mengaktifkan XAML untuk mengikat nilai status, jika mereka berubah, Anda harus mengimplementasikan Inotifypropertychanged antarmuka di Halaman Utama kelas. Kemudian kode akan memecat acara yang diubah properti saat status berubah, dan ketika deskripsi bingkai berubah. Untuk mengatur ini, salin pertama kode yang disorot berikut di bagian yang relevan dari Halaman Utama kelas untuk menginisialisasi dan menggunakan properti yang dapat diubah:
menggunakan sistem.ComponentModel;Namespace Kinect2Sample < public sealed partial class MainPage : Page, Inotifypropertychanged< // . consts and other private variables. private KinectSensor kinectSensor = null;private string statustext = null;private writeableBitmap bitmap = null;Private Framedescription CurrentFamedescription;// variabel bingkai inframerah.Acara Publik PropertyChangedEventhandler PropertyChanged;Statusteks String Publikmendapatkanmengaturjika ini.Statustext != nilai)ini.statustext = nilai;jika ini.PropertyChanged != null)ini.PropertyChanged (ini, baruPropertyChangedEventArgs ("Statustext"));>>>>PUBLIK PUBLIKAGA CURRENTFAMEDCRIESSCRIPTIONmendapatkanmengaturjika ini. CurrentFramedescription!= nilai)ini. CurrentFramedescription = nilai;jika ini.PropertyChanged != null)ini.PropertyChanged (ini, baruPropertyChangedEventArgs ("CurrentFramedescription"));>>>>// . >>Publik MainPage () < // . // create the bitmap to display this.bitmap = new WriteableBitmap(infraredFrameDescription.Width, infraredFrameDescription.Height);
ini.CurrentFramedescription = infraredframedescription;// Setel IsavailableChanged Event Notifierini.Kinectsensor.IsavailableChanged +=ini.Sensor_isavailableChanged;// Gunakan objek jendela sebagai model tampilan dalam contoh iniini.DataContext = ini;// buka sensor ini.Kinectsensor.Membuka(); ini.InitializeComponent (); >Private Void Sensor_ISAVailableChanged (Kinectsensor Sender,IsavailableChangedEventArgs args)ini.Statustext = ini.Kinectsensor.Tersedia ?"Running": "tidak tersedia";>& LttextBlock Grid.Baris = "0" style = "" text = "Kinect for windows 2"/& gt
& LtStackPanel Grid.Baris = "0" orientasi = "horizontal"Horizontalalignment = "kanan"VerticalAlignment = "Bottom" & GT& lttextblock text = "status kinect:"/& gt& lttextblock text = ""/& gt& lttextblock text = ", framewidth"/& gt& lttextblock text = ", frameHeight"/& gt& LT/StackPanel & GT& ltimage x: name = "framedisplayimage" grid.Baris = "1" peregangan = "seragam"/& gt
Cobalah mencabut Kinect dan lihat perubahan statusnya. Kemudian jika Anda mencolokkan kembali Kinect, status akan diperbarui dan umpan akan kembali.
Ringkasan
Lab ini telah mengajari Anda cara ambil dan gunakan bingkai inframerah dari perangkat Kinect 2, dan Gunakan data bingkai itu untuk membuat bitmap yang terlihat menjadi ditampilkan di XAML.
Sangat menarik untuk dicatat bahwa sebagian besar proses ini adalah manual. Data dari Infraredframe tidak dapat digunakan sampai itu’S dikonversi menjadi bitmap. Ini adalah desain by karena ada banyak kegunaan cahaya inframerah di luar mengubahnya menjadi gambar yang terlihat. Kinect 2 menggunakan kamera inframerah untuk menghitung tubuh dan bentuk yang dikenal dalam kondisi cahaya rendah. Itulah sebabnya resolusi infraredframe sangat rendah: itu cocok dengan resolusi yang dilihat oleh frame depthrame untuk menghitung apa yang ada dan tidak’t seseorang.
Di lab berikutnya, Anda akan melihat perbedaan resolusi antara colorframe dan infraredframe sekarang setelah Anda telah menampilkan data bingkai di XAML.
Ada kode yang tersedia yang merupakan solusi kode yang telah selesai dari pekerjaan di lab ini. Lab berikutnya akan dimulai dari kode ini.
