31 Aralık 2012 Pazartesi

Design of Lifelogging Image Capture Applications

Yaşamgünlüğü Görüntü Yakalama Uygulamaları Tasarımı

Anadolu Üniversitesi Proje birimine sunduğum “Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması” isimli BAP önerisi kapsamında bir dizi yaşam günlüğü yazılımı geliştirilmesi gerekmektedir.

Günümüzde bilgi çalışanlarının öğrenme deneyimleri ağırlıklı olarak bilgisayar ortamında gerçekleşmektedir. Bilgisayar ortamı dışında gerçekleşen öğrenme deneyimleri ise yüz yüze iletişim, basılı malzeme okuma, ders/seminer/konferans/video vb. izleme, müze/sergi/doğa vb. gezme gibi etkinliklerden oluşmaktadır. Bireyin uyanık bulunduğu sürelerdeki öğrenme deneyimlerini kaydetmek için bireyin kullandığı bilgisayarların ekran görüntülerinin kaydedilmesi ve bireyin bilgisayar ortamı dışında etkinliklerine ait kamera görüntülerinin kaydedilmesi yeterli olacaktır.

Burada amaçlanan deneyime ait içeriğin kaydedilmesi değil, deneyimin daha sonra kolayca hatırlanmasını sağlayacak görüntülerin kaydedilmesidir. Kayıt işlemi 30 saniyede bir alınan görüntülerden oluşacak ve bireyin özel anları dışındaki süreleri kapsayacaktır.

Bu amaçla proje önerisini sunmuş olduğum 15 Aralık 2012 tarihinden itibaren çalışmaya başladım ve LifeLoggingSC, LifeLoggingCC ve LifeLoggingCCPhone isimlerinde üç yaşam günlüğü kaydetme yazılımı geliştirdim. Yazılımlar bu aşamada taslak düzeyinde olsalar da kendilerinden beklenen belirli zaman aralıklarında görüntü kaydetme işlevini yerine getirmektedirler.

LifeLogging Camera Capture ve LifeLogging Camera Capture Phone yazılımları
Bireyin çevresindeki görüntülerin kaydedilmesi için giyilebilir yaşam günlüğü kamerasının kullanılması gerekmektedir. Fakat proje önerisi aşamasında temin edilebilir bir giyilebilir yaşam günlüğü kamerası bulunmamaktadır. Microsoft SenseCam’in ticari sürümü olan Vicon Revue’nün yılsonu itibariyle satışı durdurulacağı ilan edildi, yerine çıkacak olan Autographer cihazı ise henüz temin edilebilir durumda değil. Aynı şekilde bir kickstarter projesi olan Memoto cihazı ise Şubat ayından sonra satışa başlanacak. Deneyim kazanmak ve B planı olarak kullanabilmek amacıyla projede kullanıcıların bir tablete takılı bir webcam ile ya da bir akıllı telefona ait kamera ile çevrelerine ait görüntüleri kaydetmeleri öngörüldü. Böylece Windows 8 tabletlerde çalışan LifeLogging Camera Capture ve Windows Phone 8 akıllı telefonlarında çalışan LifeLogging Camera Capture Phone isminde sürekli olarak belirli aralıklarda kamera görüntüsü kaydeden yazılımları geliştirdim.

Kamera görüntüsü yakalamayla ilgili yaklaşımları gözden geçirmek amacıyla, sahip olduğum web cam Windows 8 altında çalışmadığından dolayı başlangıçta Windows 7 üzerinde değişik denemeler yaptım.  Bu denemelerde aşağıda verdiğim değişik görüntü yakalama teknolojilerine ait örnekleri inceledim, bu örnekleri verilen zaman aralıklarında görüntü kaydedecek şekilde tekrar programlamaya çalıştım:
  • WIA Windows Image Acquisition
  • AVICAP.DLL
  • Directshow
  • TWAIN
  • Microsoft Expression Encoder
Bu örneklerde en iyi sonucu http://www.codeproject.com/Articles/285964/WPF-Webcam-Control sitesindeki örnek üzerindeki denemelere aldım. Bu yaklaşımda Microsoft Expression Encoder’a ait API’ler çağrılmakta ve bu amaçla hedef bilgisayarda Microsoft Expression Encoder SP2  (21 Mb) kurulu olması gerekmektedir.

Daha sonra Windows 8 için bir webcam temin ettim ve kamera görüntüsü kaydeden bir Windows Store uygulaması geliştirmeye başladım. Sonuç olarak verilen zaman aralığında kamera görüntüsünü kaydeden ve bu görüntüyü kullanıcıya ait Pictures Library’ye zaman damgası şeklinde bir isimle kaydeden bir uygulama ortaya çıktı (Resim 1.). 

Geliştirme aşamasında CameraCaptureUI Sample’dan (http://code.msdn.microsoft.com/windowsapps/CameraCaptureUI-Sample-845a53ac/file/58120/9/CameraCaptureUI%20Sample.zip) yararlandım, fakat bu örnekteki API işime yaramadığı için Windows.Media.Capture  API’si kullandım.
Bu uygulama çalıştırıldıktan sonra başka bir uygulamaya geçildiğinde,  arkaplanda da çalışmaya devam etmektedir.


Resim 1. LifeLoggingCC uygulamasına ait bir görüntü.

Bir sonraki aşama Windows Phone 8 altında çalışacak bir uygulama geliştirmekti. Windows Phone SDK 8.0’yı indirdim. Fakat telefon emülatörünün çalışması için bilgisayarın donanımsal sanallaştırma olanağına sahip olması gerektiği ortaya çıktı. Kullandığım iş istasyonları bu özelliğe sahip olmadığından dolayı SDK’yı bir laptopa kurarak kullanmaya başladım. Dolayısıyla Visual Studio laptopda biraz yavaş kaldı.

Windows Phone 8 geliştirme altyapısı Windows Store uygulaması geliştirme altyapısından faklı olduğundan dolayı programın sıfırdan yazılması gerekmekteydi. Yine de Windows store uygulaması altında yazdığım CreatefileName() işlevi ile sürekli görüntü kaydetmeye başlama ile kaydetmeye son verme yaklaşımlarını (dispatcher.timer) yeni programa fazla değiştirmeden taşıyabildim. Burada BasicCamera Sample’dan (http://code.msdn.microsoft.com/wpapps/Basic-Camera-Sample-52dae359) yararlandım ve öncekinden çok farklı olan Microsoft.Devices.PhotoCamera API’si kullandım.


Resim 2. LifeLoggingCCPhone uygulamasına ait bir görüntü.

Visual Studio Phone Emulatörü bilgisayarın kamerasını kullanamadığı için örnekteki telefonun ekranındaki görüntü emülatör tarafından üretilen yapay bir görüntüdür. Fakat uygulama bu yapay görüntüyü klasöre kaydedebilmektedir. En iyi sonucu Windows Phone 8 telefonlar geldikten sonra almaya başlayacağım.

Program çalışırken bilgisayar uyku moduna geçtiğinde görüntü alınamamaktadır. Bu nedenle programın kullanılacağı tablette uyku modunun iptali gerekmektedir. Windows Phone API’leri uygulama arkaplana aktarıldığında fotoğraf çekilmesine izin vermediğinden dolayı uygulamanın sürekli ön planda çalışması gerekmektedir.

LifeLogging Screen Capture yazılımı
Projede bireylerin gün boyunca kullandıkları masaüstü, laptop ve tablet bilgisayarlarının ekran görüntülerinin kaydedilmesi amaçlanmaktadır. Projede ortak bir teknolojik zemin oluşturabilmek amacıyla kullanıcıya ait bütün bilgisayarların, laptopların ve tabletlerin Windows 8 işletim sistemi altında çalışması öngörülmüştür. Dolayısıyla geliştirilecek olan yazılımın da Windows 8 altında çalışması öngörülmektedir.

Windows 8 geliştirici forumlarını taradığımda Windows 8 altında güvenlik gerekçeleri nedeniyle her türlü ekran yakalama işleminin engellendiğinden bahsedildiğini gördüm. Gerçekten bu amaçla kullanılabilecek bir API bulunmamaktaydı. Forumlarda masaüstü uygulaması şeklinde yazılan ekran yakalama yazılımlarının da Başlat menüsüne geçildikten ve bir Windows Store uygulaması çalıştırıldıktan sonra görüntü almamaya başladıkları ifade edilmekteydi.

Bir kaç deneme sonunda uygulamayı Windows masaüstü programı biçiminde ve Microsoft Expression Encoder API’si kullanarak yazmaya karar verdim ve program çalıştı. Gerçekten de program masaüstünde çalıştırıldıktan sonra ekranı kaydetmeye başlıyor ve ardından başlat menüsüne geçildikten ve Windows Store uygulamaları çalıştırılmaya başlandıktan sonra da ekran görüntüsü kaydetmeye devam ediyor. Bu Microsoft’un farketmediği bir açık ise ve bu açığı gelecekte kapatmaya karar verirse bu yaklaşımın gelecekte kullanılması mümkün olmayacaktır.

Uygulama arkaplanda iken çalışmaya devam etmektedir. Fakat bilgisayar uyku moduna geçtiğinde program son çektiği resmi kaydetmeye başlamaktadır. Programın kullanılacağı bilgisayarda uyku modunun iptal edilmesi gerekmektedir.

Projede öğrenme deneyimlerine ait içerik kaydı yapılmaması, sadece hatırlatıcı ekran görüntülerinin kaydedilmesi öngörülmesine rağmen ekran görüntülerinin isteğe bağlı olarak video biçiminde kaydedilmesi olanağı da eklenmiştir.


Resim 3. LifeLoggingSC uygulamasına ait bir görüntü.

Sonraki aşamalar
Windows 8 Phone ile bir uygulamanın kendisine ait ekran görüntülerinin kaydedilmesine olanak sağlanmaktadır. Fakat bu olanağın uygulama arkaplanda çalışırken diğer uygulamalara ait ekran görüntüleri kaydedebileceğini sanmıyorum.

Yukarıda bahsedilen uygulamalara çekim aralığı, görüntü kalitesi ve dosya kaydetme klasörlerinin değiştirilebileceği bir “Ayarlar” özelliği eklenecektir. Diğer taraftan uygulamalara GPS vb. sensör verilerini yakalama ve görüntülerle birlikte bu sensör verilerini de kaydetme olanağı da eklenecektir.

Değişik bilgisayarlar ve telefonlarda elde edilen görüntülerin kullanılması/değerlendirilmesi amacıyla bir merkezde toplanması gerekmektedir. Bu amaçla manuel ya da bulut altyapısı kullanan değişik tasarımlara ait taslakları geliştirmeye başladım. Geliştirdiğim çözümlere izleyen yayınlarda yer vereceğim.

17 Aralık 2012 Pazartesi

Yaşam Günlüğü

Yaşam Günlüğü

Günümüzde yaşam günlüğü teknolojilerinde hızlı bir gelişme var. Microsoft SenseCam aygıtının Vicon Revue adı altında satışı bu yıl sonunda sona erecek. Vicon firması bunun yerine Autographer isminde yeni nesil bir giyilebilir yaşam günlüğü aygıtı üretmeye başladı. Resim kalitesi 5MP ve cihaz üzerinde GPS dışında" ambient light", "accelerometer", "magnetometer", "passive infrared sensor" ve "temperature" olmak üzere 5 ayrı sensör ve Bluetooth bağlantısı özelliği bulunuyor. Resimler 136 derecelik bir açıklığa sahip. Aygıtın 8 GB belleği var. Ağırlığı ise 58 gram.



Kaynak: www.autographer.com


Bir kickstarter projesi olan Memoto ise Şubat 2013'de piyasaya çıkacak. İki gün süreyle 30 saniyede bir 5MP resim çekmesi öngörülüyor. Aygıt bir rozet büyüklüğünde ve GPS sensörü bulunuyor.




Kaynak: www.memoto.com


Yaşam günlüğü konusundaki çalışmamı Kasım ayında İnet-Tr'2012 konferansında sundum (Mutlu, 2012). Bu çalışmayla yaşam günlüğü alanına giriş yapmış oluyorum. Bu bildiride ayrıca AllMyListsMetro uygulamasının manuel bir yaşam günlüğü olarak nasıl kullanılabileceğini gösterdim. Bildirinin tamamına aşağıdaki bağlantıdan erişilebilir.

Bu konuda, yaşam deneyimlerini sürekli kaydeden ve kaydedilen bilgileri öğrenme deneyimlerini yönetmek amacıyla kullanma olanağı sağlayan AllMyLists LE isimli bir yazılım geliştirmeye başlıyorum. Bu yazılımla ilgili yapmayı düşündüğüm çalışmaları bir Bilimsel Araştırma Projesi (BAP) önerisi halinde Anadolu Üniversitesine sundum. Eğer BAP Önerisi kabul edilirse projenin araştırma, geliştirme ve uygulama süreçlerini bu blogda paylaşacağım. 

Kaynaklar
Autographer Sitesi, www.autographer.com

Memoto Projesi, www.memoto.com

M.E. Mutlu, “Yaşam Günlüğü (CARPE) Uygulamaları ve Yaşam Deneyimleri Kaydedicisi için Bir Bilgi Mimarisi Önerisi”, İnet-Tr'12 XVII. Türkiye'de İnternet Konferansı’nda sunulan bildiri, Anadolu Üniversitesi, Eskişehir, 7-9 Kasım 2012 (İnternette yayınlandı) http://inet-tr.org.tr/inetconf17/bildiri/7.pdf