OpenCV ile Artırılmış Gerçeklik SDK'sı [kapalı]


94

OpenCV'de Artırılmış Gerçeklik SDK'sı geliştiriyorum. Konuyla ilgili öğreticiler bulmakta, izlenecek adımlar, olası algoritmalar, gerçek zamanlı performans için hızlı ve verimli kodlama vb. Bulmakta bazı problemler yaşadım.

Şimdiye kadar sonraki bilgileri ve faydalı bağlantıları topladım.

OpenCV kurulumu

En son sürüm sürümünü indirin .

Kurulum kılavuzlarını burada bulabilirsiniz (platformlar: linux, mac, windows, java, android, iOS).

Çevrimiçi belgeler .

Arttırılmış gerçeklik

Yeni başlayanlar için burada OpenCV'de basit bir artırılmış gerçeklik kodu var. Bu iyi bir başlangıç.

İyi tasarlanmış son teknoloji bir SDK arayan herkes için, OpenCV işlevlerini göz önünde bulundurarak, işaretleyici izlemeye dayalı her artırılmış gerçekliğin sahip olması gereken bazı genel adımlar buldum.

  1. Ana program: tüm sınıfları oluşturur, başlatma, videodan kareler yakalar .

  2. AR_Engine sınıfı: Bir artırılmış gerçeklik uygulamasının parçalarını kontrol eder. 2 ana durum olmalıdır:

    • algılama : sahnedeki işaretleyiciyi algılamaya çalışır
    • izleme : bir kez tespit edildiğinde, işaretleyiciyi gelecek karelerde yakalamak için daha düşük hesaplama teknikleri kullanır.

Ayrıca her karede kameranın konumunu ve yönünü bulmak için bazı algoritmalar bulunmalıdır. Bu, sahnede tespit edilen işaretleyici ile çevrimdışı işlediğimiz işaretleyicinin 2D görüntüsü arasındaki homografi dönüşümünü tespit ederek elde edilir. Bu yöntemin açıklaması burada (sayfa 18). Poz Tahminleri için ana adımlar şunlardır:

  1. Kamera İç Parametrelerini yükleyin . Daha önce kalibrasyon yoluyla çevrimdışı çıkarıldı. içsel parametreler

  2. İzlenecek deseni (işaretleyici) yükleyin : İzleyeceğimiz düzlemsel işaretleyicinin bir görüntüsüdür. Bu model için özellikleri çıkarmak ve tanımlayıcılar (temel noktalar ) oluşturmak gerekir, böylece daha sonra sahnedeki özelliklerle karşılaştırabiliriz. Bu görev için algoritmalar:

  3. Her kare güncellemesi için , sahneden özellikleri çıkarmak için bir algılama algoritması çalıştırın ve tanımlayıcılar oluşturun. Yine birkaç seçeneğimiz var.

    • ELE
    • HIZLI
    • SÖRF
    • FREAK : Yeni bir yöntemin (2012) en hızlı olduğu varsayıldı.
    • ORB
  4. Kalıp ve sahne tanımlayıcıları arasındaki eşleşmeleri bulun .

  5. Bu eşleşmelerden Homografi matrisini bulun . RANSAC, önceden eşleşme setinde ender / aykırı değerleri bulmak için kullanılabilir.

  6. Özü Kamera poz homograf dan.

Tam örnekler:


1
Ne yazık ki bu "yapıcı değil", öneriler mi arıyorsunuz?
bfavaretto

3
Kurulum görevi ile ilgili olarak, OpenCV artık GIT'e taşınmıştır, bu nedenle kurs kodunu indirmek için bir "git clone git: //code.opencv.org/opencv.git" yapmak gerekir.
Carlos Cachalote

12
47 Olumlu oylar henüz aptalca kurallar nedeniyle kapatıldı.
SvaLopLop

Yanıtlar:


19

AR uygulamaları genellikle mobil cihazlarda çalıştığından, detektör / tanımlayıcıyı da düşünebilirsiniz:


3
Teşekkürler! Cep telefonlarında gerçek zamanlı olarak çalışan "hızlı" bir FAST sürümü de vardır, piramit şeklindedir ve SIFT tanımlayıcıları azaltılmıştır
Jav_Rock

2
ORB'yi kullanarak neredeyse mükemmel sonuçlar aldım
dinamik

Aslında, ORB hakkında okumak piramitlerde HIZLI olduğunu söylüyor
Jav_Rock

3
Freak, AR'de tanımlayıcıyı işleyen son algoritmadır. HIZLI'den daha hızlı.
07

13

Genel olarak, işaretleyicileri seçebiliyorsanız, önce bir kenar dedektörü ve ardından Hough veya basitçe kontur kullanarak bir kare hedefi tespit edersiniz - ardından dahili tasarımdan belirli bir işaretleyiciyi tanımlayın. Genel bir puan eşleştirici kullanmak yerine.

İyi yazılmış örnek kod için Aruco'ya bir göz atın .


4
Evet, güvene dayalı yaklaşım en basit olanıdır, ancak pek güncel değildir. Bence şimdi dokulu işaretlere işaret etmek gerekiyor. Teşekkürler. Yine de iyi açıklandığı için örnek çok ilginç.
Jav_Rock

1
Pozu bilmek istiyorsanız, işaretleyici özelliklerinin 3B konumunu ilgili görüntü koordinatlarıyla eşleştirmeniz gerekir. Düzenli şekilli hedefler bunu kolaylaştırır, ancak düzlemsel olmaları gerekmez
Martin Beckett

Ancak düzlemsel değillerse, 3 boyutlu modele veya bir CAD modeline ihtiyacınız var, aksi takdirde 2d'den 3B'ye homografi artık geçerli bir yöntem değil, değil mi? Findhomografide kullanılan Doğrudan Doğrusal Dönüşümü kastediyorum
Jav_Rock

Evet bir 3d işaretleyici varsa, gerçek bir kelime 3d şekil bilmemiz gerekir (cad gelen, ya da ölçüm) ama daha iyi bir soln'u veriyor
Martin Beckett
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.