Bu depo, ikinci staj dönemimde LiDAR verilerinin işlenmesi, nesne tespiti, çoklu nesne takibi ve LiDAR–kamera projeksiyonu üzerine yaptığım çalışmaları göstermek için hazırlanmıştır. Projede asenkron veri akışı, filtreleme ve görüntüleme adımlarını incelemek için çalıştırılabilir örnekler bulunur.
- Projeler
- Teknik akış
- Kullanılan teknolojiler
- Ekran görüntüleri
- Kurulum
- Proje yapısı
- Staj kapsamında yaptığım çalışmalar
- Sınırlamalar
LiDAR nokta bulutu üzerinde filtreleme, nesne tespiti ve çoklu nesne takip algoritmalarını gösteren projedir.
Bu klasördeki örnekler sentetik verilerle çalışır ve aşağıdaki katkıları gösterir:
- Yükseklik, ileri mesafe ve şerit/yol alanı filtreleri
- Şerit kenarlarından uzaklaştırma (
SHRINK) - Photon count ağırlıklı voxel filtreleme
- DBSCAN ile nokta kümelendirme
- Gürültü noktalarının ve küçük kümelerin ayrılması
- Nesne merkezi, standart sapma ve bounding box hesaplama
- İleri/lateral koordinatların çıkarılması
- Kalman tabanlı konum ve hız tahmini
- Hız yumuşatma ve hız değişimini sınırlandırma
- Hungarian Algorithm ile nesne eşleştirme
- Track oluşturma, doğrulama, kayıp track ve ID yönetimi
Noktaları öncelikle yükseklik, ileri mesafe ve yol/şerit alanına göre
sınırlandırdım. Şerit kenarlarından gelen noktaları azaltmak için SHRINK
uyguladım. Ağırlıklı voxel filtrelemede aynı voxel içindeki noktaları
birleştirirken photon_count değerini ağırlık olarak kullandım. Boş veya
geçersiz veri durumlarının pipeline’ı durdurmamasını sağladım.
DBSCAN ile noktaları kümelere ayırdım. Gürültü noktalarını ve yeterli sayıda nokta içermeyen kümeleri eledim. Geçerli kümelerden nesne merkezi, standart sapma ve bounding box değerlerini çıkardım. Takipte kullanılacak ileri ve lateral konum bilgilerini bu sonuçlardan oluşturdum.
Her nesne için Kalman filtresiyle konum tahmini yaptım ve yeni ölçümlerle durumu güncelledim. Hız hesabında low-pass yumuşatma ve hız değişimini sınırlandırma kullandım. Hungarian Algorithm ile yeni tespitleri mevcut track’lerle eşleştirdim. Yeni track oluşturma, kayıp track’leri koruma veya silme, doğrulama ve ID yönetimi kurallarını takip akışına ekledim.
Ayrıntılı açıklamalar için algorithms.md dosyasına bakılabilir.
LiDAR verisini kamera koordinat sistemine aktaran ve sonuçları kamera ekranları üzerinde gösteren arayüz uygulamasıdır.
Uygulamada:
- LiDAR verisi
shared_data/lidar.datadosyasından okunur. - LiDAR noktaları dünya koordinatlarına dönüştürülür.
- Yükseklik ve ileri mesafe filtreleri uygulanır.
- Kamera iç ve dış parametreleri kullanılarak 3B noktalar 2B görüntüye projekte edilir.
- Şeritler, markerlar ve LiDAR noktaları kamera ekranında çizilir.
- Fiziksel kamera bulunamazsa JSON’daki görüntü boyutlarına göre siyah sanal kamera ekranları oluşturulur.
- Kamera görüntüleri en-boy oranı korunarak ekrana sığdırılır.
Fiziksel kamera sürücüsü bu açık projeye dahil değildir. Bu nedenle proje, kamera takılı olmadığında da sanal siyah ekranlarla çalışabilir.
flowchart TD
A[LiDAR noktaları] --> B[Ön işleme ve filtreleme]
B --> C[DBSCAN ile kümelendirme]
C --> D[Nesne bilgilerinin çıkarılması]
D --> E[Kalman ile konum ve hız tahmini]
E --> F[Hungarian Algorithm ile eşleştirme]
F --> G[Track yönetimi]
flowchart TD
A[lidar.data] --> B[Koordinat dönüşümü]
B --> C[Yükseklik ve mesafe filtreleri]
C --> D[Kamera projeksiyonu]
D --> E[Şerit, marker ve LiDAR çizimleri]
E --> F[Kamera ekranı]
- Python
- NumPy
- SciPy
- scikit-learn
- DBSCAN
- Kalman filtresi
- Hungarian Algorithm
- NumPy
- OpenCV
- Pillow
- Tkinter
Uygulamanın farklı çalışma ve test aşamalarından ekran görüntüleri:
| Görsel | Açıklama |
|---|
Depoyu klonladıktan sonra ilgili proje klasörüne geçin ve o projenin sanal ortamını oluşturun.
cd lidar_detection_tracking
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python -m examples.synthetic_pipeline_demoBu demo, kuruma ait gerçek LiDAR verilerine ihtiyaç duymadan sentetik örnek verilerle filtreleme, nesne tespiti ve takip akışını gösterir.
cd camera_lidar_sensor_fusion
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python -c "from src.app.main import Main; Main.main()"Bu proje, ana dizindeki shared_data/lidar.data dosyasını kullanır. Fiziksel
kamera bulunamazsa kamera görüntüleri yerine siyah sanal ekranlar gösterilir.
lidar-camera-perception-system/
├── camera_lidar_sensor_fusion/
│ ├── config/ # Kamera, LiDAR, yol ve marker ayarları
│ ├── src/app/ # Uygulama başlangıcı ve cihaz yönetimi
│ ├── src/core/ # Projeksiyon ve temel işlemler
│ ├── src/domain/ # Kamera, LiDAR ve yapılandırma modelleri
│ ├── src/infrastructure/ # Veri okuma ve servisler
│ └── src/ui/ # Görüntüleme ve ayar arayüzü
├── lidar_detection_tracking/
│ ├── public_algorithms/ # Açık filtreleme, tespit ve takip örnekleri
│ ├── examples/ # Sentetik veri demosu
│ └── docs/ # Algoritma açıklamaları
├── shared_data/
│ └── lidar.data # İki proje tarafından kullanılan LiDAR verisi
├── screenshots/ # README için uygulama ekran görüntüleri
└── README.md
Staj kapsamında bana verilen başlangıç ve örnek kod yapısını inceleyerek
LiDAR filtreleme, nesne tespiti ve takip akışını geliştirdim. Bu çalışmaların
paylaşılabilir örnekleri
lidar_detection_tracking/public_algorithms/ klasöründe yer almaktadır.
Kamera–LiDAR tarafında ise verilen başlangıç yapısı üzerinden veri akışının arayüzde gösterilmesi, sanal kamera ekranlarının oluşturulması, kamera projeksiyonu, çizimlerin ekrana aktarılması ve yapılandırma ayarlarının yönetimi üzerine çalıştım.
- Gerçek kamera sürücüsü ve üretici SDK’sı paylaşılmamıştır.
- Fiziksel kamera olmadığında siyah sanal kamera görüntüsü kullanılır.
- LiDAR akışı örnek
shared_data/lidar.datadosyası üzerinden oynatılır. - Takip algoritmasının açık demosu sentetik verilerle çalışır.







