3D Görüntü İşleme

3 boyutlu (3D) görüntü işleme tekniklerine önceki makalelerde detaylı olarak değinmiştim. Bu makalede, gerçek ve pratik bir uygulama üzerinde çalışacağız.

Gerçek (endüstriyel olarak kullanabilecek, her koşulda çalışacak, hassa ve tutarlı) bir 3D uygulaması için ihtiyaçlarımız

  1. Ensenso 3D kamera
  2. HALCON görüntü işleme kütüphanesi

Neden 3D kamera kullanıyoruz? 3D görüntü işlemeye ilişkin pek çok sorunu çözmek için uğraşmak yerine, bizim için hazır olarak bu sorunları çözmüş bir kamera kullanmak daha akıllıca da ondan. (Bu blog sitesinde bahsedilen çoğu makale endüstriyel olduğu için, ürün geliştirmeye yönelik, yaz kış, gece gündüz, her ışık ortamında çalışabilecek gerçek bir uygulama sahibi olmayı düşündüğümüz için. Yoksa 3D görüntü işleme için 3D kamera kullanmak zorunda değiliz)

Neden HALCON görüntü işleme kütüphanesi kullanıyoruz? Yine yukarıdaki sebeplerden.

Özetle burada amaç, iş yapmak, ürün geliştirmek, sorun çözmek.

Gelelim iş yapmaya …

Ensenso kamera tutturulmuş test ortamım

Ensenso kamera tutturulmuş test ortamım

Öncelikle, yukarıdaki resimde görüldüğü gibi 3D kamerayı 70-80 cm. yğkseklikte bir yere sabitledim. Kameranın hemen altına da…

3D ölçeceğim kutu

3D ölçeceğim kutu

Yukarıda gördüğünüz, prizma şeklindeki kutuyu koydum.

Tüm yaptığım bu kadar basit. Şimdi HALCON görüntü işleme kütüphanesi geliştirme ortamı HDevelop’u açıp, kameradan görüntü al dediğimde…

Ensenso 3D Kameradan alınan görüntüler

Ensenso 3D Kameradan alınan görüntüler

Burada basitçe görülebildiği gibi kamera bana

  1. Left Image (Sol gözün görüntüsü. Ensenso içinde 2 kamera olduğundan..)
  2. Right Image (Sağ gözün görüntüsü)
  3. x-Image (mm. cinsinden x mesafeleri)
  4. y-Image (mm.cinsinden y mesafeleri)
  5. z-Image (mm cinsinde z-yükseklikleri)

bilgilerini vermektedir. Artık her bir noktanın mm cinsinden hangi koordinatlarda olduğunu biliyorum. Her bir noktanın yüksekliğini, merkez noktadan uzaklıklarını…

Örneğin bir robot var ise, bu kutunun tam orta noktasının x ve y değerlerini ve z-yükseklik bilgisini ileterek, parçayı almasını sağlayabilirim.

Elbette 3D ile yapabileceklerimiz çok daha fazla.

Burada hızlıca, bir 3D kamera ve HALCON görüntü işleme kütüphanesi ile, ne kadar hızlıca yol alınabileceğini göstermek istedim.

Gerçek hayatta 3D Matching (3 boyutlu eşleştirme), Surface matching (yüzek eşleştirme), 3D Measurement (3 boyutlu ölçüm) gibi daha detaylı uygulamalar geliştirmek de mümkündür.

Bir yerlerden başlamak ve çok hızlı profesyonelce yol almak isteyenler için, bir başlangıç olabilmesi dileğiyle.

İyi Çalışmalar Dilerim..

Mustafa SARI.

3D Görüntü İşleme Teknikleri – 2

Stereovision Prensibi

Bir önceki makalede, 3D görüntü işleme teknolojilerine ana başlık olarak değinmiştik. Bu makalede biraz daha teknik ayrıntıya girebiliriz.

Önce işin biraz matematiğine değinelim. Stereovision nasıl çalışır?

Nesne farklı açılardan gözlemlenir.

Eğer α ve β açıları ile b mesafesi biliniyorsa, basit bir geometrik hesaplama ile P nin pozisyonunu bulabiliriz.

Buna, triangulation (üçgenleme) prensibi denir.

P noktası her iki kamerada bir miktar kaymış olarak görünür (sırasıyla tek gözümüzü kapattığınızda gördüğümüz nesnelerin bir miktar kayması gibi)

Sonuç olarak, her iki kamera arasındaki mesafe, açı, focal mesafe biliniyorsa, kaymanın kaç pixel olduğu da hesaplanabilir. Buna Disparity denir. Uzaktaki nesneler için kayma az olacaktır, yakındaki nesneler için ise kayma daha fazla olacaktır. Bu durumda, stereovision da temel prensip, her bir pixel için Disparity değerini hesaplayabilmektir.

Nemrutun her iki (sol ve sağ kamera) tarafından alınmış görüntüsü soldaki gibidir. Şapkasının hemen üst noktası, sağ kameraya daha yakın olduğundan 156. pixelde iken, sol kamerada 160. pixeldedir. Kameralar kalibre edilmiş olduğundan aynı Y değerlerini vermektedirler. Yine kalibrasyon sonucu, bu 4 pixel kaymanın, ne kadar mesafeye dek düştüğü bulunabilir. Burada, sistemin hızlı çalışması için, sol resimdeki P(160,120) noktasının, sağ resimde nerelerde aranacağını sistem kestirebilmek zorundadır. Kalibrasyon sonucu, sol kameradaki her bir satır (row) sağ kamerada da aynı satıra denk düşecek şekilde resim dönüştürülür (rectification). Son olarak, stereo kamera, hangi mesafeden çalışıyor ise, (10 cm, 30 cm, 1 mt., 2 mt. vs.) yaklaşık olarak, kaç pixel kayma olabileceği bellidir. Böylelikle, sol kameradaki her bir tekil pixel, sağ kamerada tek bir satır üzerinde, dar bir alanda aranır ve hızlıca bulunur.

Şimdi işin matematiğine daha ayrıntılı girelim.

Stereo Teori – Perspective Projection

3 boyutlu olarak algılanmak istenen nesne üzerindeki her bir nokta (p), biri sol kamerada (p’), diğeri sağ kamerada (p”) olmak üzere bir geometrik yüzey oluşturur. Buna epilolar yüzey denir.

Her bir kameranın, x-y eksenlerinden oluşan yüzey ile epipolar yüzeyin kesişim noktalarının kenara olan uzaklıkları, l1 ve l2 olsun. Sistem, sol kameradaki her bir tekil p’ noktasının sağ kamerada nerede bulunduğunu (p” noktaları) bulmak zorundadır. Normalde bu, uzun bir işlemdir. Örneğin 1.3M Pixellik kameralar kullanılıyorsa, soldaki her 1.3 milyon pixel, sağ tarafta tek tek aranacak ve Disparity değerleri hesaplanacak. Bu işlemi hızlandırmak için, Camera Rectification dediğimiz tekniği kullanırız.

Stereo Rectification

Rektifikasyondaki amaç, p noktasının her iki kameradaki izdüşümleri olan p’ ve p” noktalarını, yatay eksende aynı paralel doğru üzerine düşürmektir. Bunun için, her iki kamera görüntüsü de, bir miktar döndürülür ve pixeller transform edilir. Sonuçta, p’ ve p” noktaları aynı y (row – satır) değerine denk getirilir. Rectified (düzeltilmiş) görüntüler, şimdi aynı eksendedir (z=1) Epipolar doğrular, (l1 ve l2) aynı paralel düzlemdedir. Artık, sol kameradaki p'(x,y) noktasındaki bir pixel, sağ kamerada herhangi bir yerde değil, aynı y değerine sahip olan satırda aranacaktır. Üstelik, bütün bir satır boyunca aramaya gerek yoktur. Nesnenin kameraya olan uzaklığı aşağı yukarı belli ise, satır boyunca ne kadar ileride ya da geride olabileceği de belli demektir. Bu yaklaşım, hem çok daha hızlı olacak, hem de çok daha etkin PC ve CPU kullanımı anlamına da gelecektir.

Pasif Stereo Vision

Pasif Stereovision tekniğinde, 2 adet kamera vardır fakat projektör yoktur. Nesnelerin üzerindeki şekillerden ve desenlerden faydalanılarak, her bir pixelin ne kadar kaydığı hesaplanmaya çalışılır.

Üzerinde resim olan kupanın sol ve sağ kameralar ile alınmış görüntüsü yukarıdaki gibi olsun. Bu durumda, mesela resimdeki hayvanın gözünün sol ve sağ kamerada kaç pixel kaydığı, kupanın kulpunun ne kadar kaydığı, ayakkabısının alt köşesinin ne kadar kaydığı gibi bilgilere ulaşabilirim. (Disparity değerleri bulunabilir) Özetle, desen ya da resim (texture) içeren yerler için disparity değerlerine erişilebilir. Fakat, hiç resim ya da desen içermeyen, mesela masanın üzeri, arka plandaki duvar gibi yerlerde, disparty değerlerini hesaplamak mümkün değildir. Bu durumda, derinlik bilgisine de erişilemeyecektir.

 

 

 

 

Aktif Stereo Vision

Pasif stereo vision, nesne üzerinde yeterli texture (desen, resim) yoksa derinlik bilgisine ulaşamıyordu. Bu durumda ana fikir; bir projektör kullanarak nesnenin üzerine bilinen patterne sahip infrared görüntü göndermek ve stereovision kameraları ile, bu infrared desenleri yakalamaktır. Yukarıdaki şekilde de görüldüğü gibi, kupanın silindir geometrisinden dolayı, iyi görülemeyen yerleri dışında (gölgeleme/shadowing) hemen her noktada derinlik bilgisine ulaşılabilmektedir. (Silindirik yüzeylerin aşağı yukarı 2/3 kadarı stereovision ile yakalanabilmektedir. Tamamını görmek için, 3 veya daha fazla stereovision kameraya ihtiyaç olabilir)

3D Görüntü İşleme Teknikleri – 1

3D uygulamaları son zamanlarda hızla yaygınlaşmaktadır. Bu makalemizde, mevcut 3D modellerini ve uygulama alanlarını göreceğiz. Burada kastedilen 3D, görüntü işlemede kullanılan 3D dir. Standart kameralar (monocular) X-Y düzleminde görüntüler verir. Biz, aynı zamanda derinlik (Z) bilgisini de içeren, X-Y-Z bilgisi verebilen teknolojilere hızlıca değineceğiz.

Günümüzde yaygın olarak kullanılan 3D yapay görme teknolojileri şunlardır.

1. Laser Triangulation
Bu modelde, genellikle bir çizgi lazer kaynağı ve kalibre edilmiş bir kamera kullanılır. Genellikle çizgi lazer ve kamera, birlikte tek bir kutu içinde yer alır. Sistemin çalışabilmesi için, 3 boyutlu olarak algılanmak istenen nesnenin kontrollü bir şekilde hareket etmesi gerekmektedir. (Bir encoder yardımıyla nesnenin ne kadar gittiği hesaplanabilir) sistem sürekli fotoğraf çekerek lazer çizgisindeki profil değişikliğinden faydalanarak, 3 boyutlu nesnenin profilini çıkartır. Piyasada farklı alternatifler vardır, daha önceden LPS 36 isimli bir modeli incelemiş, HALCON ile çeşitli uygulamalar geliştirmiştim. Ülkemizde bu veya benzer ürünleri kolaylıkla temin etmek mümkündür.

2. Time Of Flight Kameralar

Kişisel olarak, geleceklerinin iyi olduğunu düşündüğüm 3D kamera teknolojisidir. Daha önce şu makalede detaylı olarak bu kameraları anlatmıştım. Çalışma prensipleri (özetle) 3D olarak belirlenmek istenen nesnenin fotoğrafı alınırken, aynı zamanda infrared (veya başka bir dalga) göndermek ve gelen dalganın ne kadar geciktiğini ölçerek (bir nevi radar), her noktada mesafeyi hesaplamak mantığına dayanır. Gerçekte zaman ölçümü Frekans Kaydırma (Frequency shift) modülasyonu ile gerçekleştirilir. Yine piyasada (nadir olmakla birlikte) TOF kameralar mevcuttur.

3. Stereovision

En yaygın olarak kullanılan 3D teknolojisidir. İnsan gözü modelinde olduğu gibi, 2 kamera kullanılır. Kameraların arasındaki mesafe ve merkez doğrultu açıları net olarak bilindiğinden, her bir noktanın, her iki kameradaki izdüşümü, basit geometrik hesaplamalar ile bulunabilmektedir. (İleride çalışma prensibi daha detaylı anlatılacaktır)

 

4. Fringe Projection

Bu teknolojide, algılanacak 3 boyutlu nesne üzerine bir projektör yardımıyla özel bir desen (genelde çizgiler vb) düşürülür. Kamera bu çizgileri algılar. Çizgilerdeki değişim, 3D profili verir. Laser Triangulation tekniğinde, nesne hareketli idi, bu teknikte nesne sabit olup, üzerine tek bir lazer çizgi yerine, pek çok çizgi aynı anda düşürülmektedir. Çalışma prensibi aynıdır.

 

5. Kinect (PrimeSense) Grubu

Oyun konsollarının (XBox, PS v.b.) yaygınlaşması ile birlikte genellikle PrimeSense firmasının sensörlerinin kullandığı, stereovision tekniğidir. Aslında farklı bir teknik olmamakla birlikte, çok yaygın bir grup olduğu için ayrı bir başlık olarak ele alınabilir. Burada, projektör, bilinen pattern’e sahip görüntüyü nesne üzerine yollar. Kamera bu patterni algılar. Orijinal pattern ile olan değişimden yola çıkarak, 3 boyut oluşturmaya çalışır.

6. Active Stereo Vision

Bu teknikte, stereovision modeli biraz geliştirilerek, araya bir projektör eklenmiştir. Projektör rastlantısal bir pattern oluşturup nesnenin üzerine gönderir. Stereo kameralar bu patterni yakalayıp, 3 boyut bilgisini çıkartır. Normal stereo Vision da, projektör yoktu. Kameralar, gerçek cismin görüntüsünden yola çıkarak 3 boyut bilgisini çıkartmaya çalışıyordu. Cismin üzerinde texture (şekil, yazı, desen vb.) yoksa, böyle bir durumda stereo vision başarılı olamıyordu. Çünkü her pixel kendi komşu pixelleri ile aynı bilgiyi taşıyor farklılık yaratmıyordu. Bu modelde, projektör cisim üzerine yeterli karmaşıklıkta desen varmış gibi pattern yollar. Kendi gönderdiği patterni arar ve 3 boyut bilgisini çıkartır. En sağlıklı 3D yöntemi de, günümüzde budur. (Firmamız, Active Stereo Vision ürünü olan Ensenso cihazlarının Türkiye distribütörüdür.)

Tüm teknikleri artı ve eksileri ile karşılaştıran aşağıdaki gibi bir tablo yaptım.

 

 

Buradaki Multi-View stereo, aynı nesneye birden fazla yerden (ön, arka, sağ, sol v.b.) bakmak gerektiği durumları ifade eder. Örneğin 3-4 Kinect cihazını farklı açılardan birbirine bağlayıp daha iyi bir görüntü elde edemezsiniz. (Kinect böyle bir teknolojiyi sunmamaktadır, tek ve bağımsız çalışmaktadır gibi.)

Bu konuya kaldığımız yerden devam edeceğiz. Önce Stereo Vision teknolojisine daha detaylı giriş yapıp, işin tekniğini kavrayacak, sonra HALCON ile stereo vision uygulaması nasıl geliştiririz buna bakacağız.

Bir sonraki bölüm için tıklayınız…

 

TOF (Time Of Flight) Kameralar ve yeni Kinect

TOF (Time of Flight) kameralar, normal kameralara ilaveten işin içine mesafe ölçüm sensörlerinin de sokulduğu, dolayısıyla 3 boyutlu görüntü alınabilen kameralardır. Mesafe ölçüm sensörleri, genellikle infrared bir kaynaktan, hedef üzerine foton gönderir. Fotonlar hedeften yansıyıp geri gelir. Çok hassas bir zaman ölçümü ile, gelen foton gecikmesinden hedefin bulunduğu konum hassas olarak belirlenir. (Radar olarak bildiğimiz yöntem) Genellikle matris şeklinde dizilmiş binlerce sensör kullanıldığından, görüş alanındaki hedef 3 boyutlu olarak hızlı bir şekilde çıkartılmış olur.

Soldaki resim Panasonic D-Imager TOF sensörünün çalışma mantığını sembolize etmektedir. Yansıyan fotonların, günışığı ya da başka ışık kaynakları ile karışmaması için, dalga boyu bilinen IR aralığında seçilmesine özen gösterilir. Yine de gün ışığı spektrumu çok geniş olduğu için, özellikle arka plandan yansımalar bazen sonucu olumsuz etkileyebilir.

TOF konusunda, kesinlikle incelenmesi gereken bir diğer endüstriyel ürün ise MESA Imaging firmasının SwissRanger 4000 isimli ürünüdür. 4.000 USD civarında bir satış fiyatı vardır.

Daha ucuz bir alternatif için Microsoft yeni Kinect göze çarpmaktadır. Yakında piyasalarda olacak olan yeni xBox oyun konsolu için geliştirilmekle birlikte çok farklı sektörlerde sıkça karşımıza çıkacağı kesin gibidir. Yeni Kinect, eskisinin aksine TOF teknolojisine dayanmaktadır. (Eski Kinect Stereovision teknolojisine göre çalışmaktaydı.)

Microsoft, yeni Kinect için, İsrail Elron firmasının ZCam isimli ürününü kullanmaya karar verdi. Bunun için, öncelikle Elron firmasını, ortalama olarak 5 milyon USD gibi bir rakama satın aldı. Bununla da yetinmeyip, 3D konusunda öncül bir diğer sensör firması Canesta yı da (rakam açıklanmadı) bünyesine kattı. Bu satın almalar, 3D konusunda Microsoftun gözü kara bir şekilde yatırım yapmaya devam edeceği anlamına da gelmektedir. Diğer yandan, özellikle Amerikada çok sıkı olan patent ihlal davaları/mahkemeleri ile (Kinectin patenti PrimeSense firmasına aittir) uğraşmak istemediği anlamına da gelir.

Bu video http://youtu.be/Hi5kMNfgDS4?t=5m27s yeni Kinectin 3 boyutlu algılama ve yeni teknolojiler konusunda ne kadar başarılı olduğunu göstermektedir.

Bu video ise, https://www.youtube.com/watch?v=5_PVx1NbUZQ Canesta’nın yeni sensörünün yeteneklerini göstermektedir. Sensör boyutuna bakılırsa, Canesta’nın bu yeni tip 3D sensörünü mobil uygulamalar (cep telefonları) üzerinde göreceğimiz günler yakın demektir. (Videonun 3 yıl önce çekildiği düşünülürse, şu an gelinen noktanın çok daha ileride olduğunu tahmin etmeye gerek yok)

Tüm bu teknolojiler gelişirken, biz neredeyiz?

MAVIS olarak, piyasada var olan bir çok farklı ürünü denedik, SDK larını inceledik, Avantaj ve dezavantajlarını değerlendirdik. (Microsoft Kinect for Windows, Asus xTion Pro, Leuze LPS36 gibi…) Halihazırda, klasik RGB kameralar ile alınan görüntülerve HALCON 3D/Stereo Vision yöntemleri ile çalışmak daha makul gibi görünmektedir. Distribütörü olduğumuz iDS imaging firması, 3D Imaging konusunda Ensenso isimli ürününü geliştirmiştir. HALCON uyumu, iDS güvencesi ve daha makul fiyatları nedeniyle tercih edilebilir.

Bu makaleleri takip edenler için, TOF v.b. yeni nesil sensörler ve uygulama alanları hakkında yeri geldikçe bilgiler vermeyi ve yeni başladığımız bir projeyi sunmayı düşünüyorum.

Projeleriniz ve ilave bilgi için, bizimle iletişime geçebilirsiniz.