Enes Sayacı 21601680

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

2020­2021 Bahar Dönemi ”Senior Design Project

2” Dersi Final Sunumu

Enes Sayacı
21601680
enes.sayaci@ogrenci.karatay.edu.tr

1
Enes Sayacı 21601680 https://sanalayna.herokuapp.com/

ARTIRILMIŞ GERÇEKLİK GÖZLÜK


DENEME PROJESİ(TRY ON GLASSES)

GİRİŞ
Bu proje kullanıcının cihaz kamerasın­
dan anlık görüntüsünü kayıt ederek kayıtlı
görüntü üzerinde kullanıcının gözünde gö­
zlük varmış gibi yerleştirme yapan bir
artırılmış gerçeklik uygulamasıdır. Pro­
jenin amacı kullanıcının fiziksel denemeye
mecbur kalmadan mobil cihazdan gözlüğü
deneyebilmesini sağlamaktır. Web pro­
jesidir ve kullanıcının deneyimlemesi için
tarayıcıdan adrese gitmesi gerekmektedir.
Figure 1: dlib kütüphanesi ile elde edilebilecek
yüz noktaları.
BACKEND
Uygulamanın backend kısmında tamamen
python kullanıldı, alınan bir 2 boyutlu resim doğru pozisyon ve rotasyon bilgileri elde
üzerinde işlemler yapılarak 3 boyutlu gibi edebiliyoruz(pitch,roll,yaw).
algılanabilecek bir matris oluşturuluyor.
Yüz tespiti yapılıyor , ardından tespit edilen
yüzde ihtiyaç olan belirli yüz noktaları tespit Backend Kodlarına Genel Bakış
ediliyor. Ardından bu yüz noktalarından
resimdeki yüzün x,y ve z eksenlerindeki Program çalıştığında önce yüz noktaları
pozisyonları ve rotasyonları hesaplanıyor. tespiti için gerekli model dosyayı belirliyor
ve ardından kullanıcının göreceği web
sayfasına yönlendiriyoruz.
2B Resimden 3B Ortam Algılama ve
Pozisyonlama
Bu işlem için python dlib ve eos Socket tanımlamaları ve genel değişken
kütüphaneleri kullanılıyor. dlib tanımlamalarının ardından web sayfasın­
kütüphanesinin kendisinin sağladığı yüz dan veri geldiğinde yani resim kareleri
tespit algoritmaları yardımı ile tespit edilen ulaşmaya başladığında her bir kare için
68 farklı yüz noktasından ihtiyacımız olan gerekli işlemsel dönüşümleri yapıp(format
15 tanesini alıyor ve dünyada kabul görmüş dönüşümü, BGR dönüşümü ya da gerekli
standart 3 boyutlu bir yüzün oranlarını filtreler) yüz tespit ve head pose estimation
kullanrak bu noktaları 3 boyutlu matrisler algoritmalarımızı çağırıyoruz.
olarak işaretliyoruz.
Üzerinde işlem yapılan kare için al­
Ardından bu noktaları eos morphablemodel goritma çıktılarını tekrar web sayfasına
model metoduyla sanal bir 3 boyutlu model gönderiyoruz.
yüze dönüştürüyoruz. Bu sayede daha

2
Enes Sayacı 21601680 https://sanalayna.herokuapp.com/

FRONTEND PROJE SAHİBİNİN NOTU


Uygulama frontend i için html css ve Projenin backend kısmında hazır github
javascript kullanıldı. Mobil cihaz görünüm­ projelerinden bulduğum örnekleri inceledim,
leride dikkate alınarak hazırlandı.Kullanıcı bu proje için kullanılacak teorik yöntem­
sayfaya girdiğinde soket bağlantısı leri ve pratik yöntemleri öğrendim, hazır
başlayana kadar işlem yapmasını engelle­ github projelerinden bir tanesini seçtim
mek için buton aktif durumdan çıkartıldı ve relatime çalışan hazır bir projeyi ter­
ve kullanıcıyı bilgilendirme amaçlı sayfa sine mühendislikle çözümleyerek tüm
üstünde bilgilendirme kutularıyla destek­ aşamalarını özümsedim. Ardından kendi
lendi. Frontend aşaması uygulama çalışma projem için bu relatime uygulamayı kayıt
mantığı için çok önemli bir aşama. Bu üzerine çalışabilecek hale getirdim. Pro­
aşamada kullanıcı başlat butonuna basarak jenin canlı halini şu linkten görebilirsiniz:
12 saniyelik bir kayı alarak bunu eşzamanlı https://sanalayna.herokuapp.com/
olarak python backend e gönderiyor. İşlemi
en hızlı şekilde gerçekleştirebilmek için bu KAYNAK KODLAR
aşaşamnada kayıt alınırklen bir yandanda https://github.com/enessayaci/tryonglasses/
kaydı tamamlanan kareleri göndermeye
başlıyoruz. Kayıt aşaması görüntü işleme
aşamasından daha kısa sürdüğü için kul­
lanıcı renderlanmış görüntüyü beklerken
durumdan haberdar olabilmesi için bir
progress bar ile arayüz desteklendi.

Ekran Kaydı Alma ve Kayıt Esnasında


Gönderim Yapma
Bu aşamada javascript in MediaRecorder
sınıfından faydalanıldı, kullanıcının kam­
erasına eriştikten sonra butona eklenen
event listener ile kayır başladı ve yeni
kare geldikçe kayıt sürdü, hatalı kare kay­
detmemek ve cihaz kasmalarından en az
düzeyde etkilenmek için yeni kare gelmediği
durumlarda kayıt duraklatıldı.

HABERLEŞME
Haberleşme için web socket kullanıldı, web­
socket python tornado server ile başlatıldı,
tornado server seçilmesinin amacı realtime
uygulamalarda daha hızlı sonuç vermesi,
ancak bu uygulamada realtime işlemden
daha iyi bir kullanıcı deneyimi açısından vaz
geçildi. Onun yerine kayıt üzerinden işlem
yapılıyor.

You might also like