Bu modül, lazer ve LED aydınlatmalı fotoğrafları işleyerek nesnenin 3D modelini oluşturur ve OBJ formatında dışa aktarır.
- Lazer çizgisi tespiti ve 3D nokta bulutu oluşturma
- Renkli görüntülerden renk bilgisi çıkarımı
- Poisson yüzey yeniden yapılandırması ile mesh üretimi
- Renk bilgisinin mesh'e uygulanması
- OBJ formatında model, MTL formatında materyal ve PNG formatında doku (texture) çıktısı
- C++ Derleyici (C++11 veya üstü)
- CMake (3.10 veya üstü)
- OpenCV (4.x önerilen)
- PCL (Point Cloud Library) 1.8 veya üstü
- Eigen3
Uygulamayı iki farklı şekilde çalıştırabilirsiniz:
-
GUI Uygulamasını Çalıştırma: Eğer doğrudan kullanıcı arayüzü ile uygulamayı çalıştırmak istiyorsanız, terminal üzerinden:
cd gui python3 run_gui.pykomutlarını çalıştırmanız yeterlidir.
-
3D Modelleme Algoritmasını Çalıştırma: Eğer yalnızca 3D modelleme algoritmasını çalıştırmak istiyorsanız, aşağıdaki adımları izleyin:
Ubuntu/Debian tabanlı sistemler için:
# OpenCV, PCL ve Eigen kütüphanelerini yükle
sudo apt update
sudo apt install build-essential cmake libopencv-dev libpcl-dev libeigen3-dev# Projeyi klonla
git clone https://github.com/kullanici/3d-model-creator.git
cd 3d-model-creator
# Build klasörü oluştur
mkdir build && cd build
# CMake yapılandır
cmake ..
# Derle
make -j4Uygulamayı kullanırken sadece hazır bir veri seti ile modelleme yapmak isterseniz, bu Google Drive linkinden laser ve scan klasörlerini indirin. Ardından, bu klasörleri gui klasöründeki laser ve scan klasörleriyle değiştirin.
Eğer yalnızca 3D modelleme algoritmasını çalıştırmak istiyorsanız, bu klasörleri(drive'daki scan ve laser) projenin ana klasöründeki scan klasörü içindeki laser ve color klasörleriyle değiştirin.
# Temel kullanım
./bin/3DModelCreator --laser ../scan/laser/ --color ../scan/color/ --output output/model.obj
# Region of Interest (ROI) seçerek kullanım
./bin/3DModelCreator --laser ../scan/laser/ --color ../scan/color/ --output output/model.obj --debug
# Threshold Adjust ile kullanım
./bin/3DModelCreator --laser ../scan/laser/ --color ../scan/color/ --output output/model.obj --debug --adjust-threshold
# Recommended
# Interactive mode ile Digital Image Processing teknikleri kullanımı
./bin/3DModelCreator --laser ../scan/laser/ --color ../scan/color/ --output output/model.obj --debug --interactive
# Tüm parametrelerle
./bin/3DModelCreator --laser /scan/laser/ --color /scan/color/ --output output/model.obj --samples 360 --debug--laser <klasör>: Lazer görüntüleri klasörü (varsayılan: /scan/laser/)--color <klasör>: Renk görüntüleri klasörü (varsayılan: /scan/color/)--output <dosya>: Çıktı OBJ dosyası (varsayılan: output/model.obj)--samples <sayı>: İşlenecek görüntü sayısı (varsayılan: 200)--debug: Debug modunu etkinleştirir (OpenCV pencerelerini gösterir)--help: Yardım mesajını gösterir
Program, belirtilen yola şu dosyayı oluşturur:
model.obj: 3D mesh geometrisi
- Tarama işleminde lazerin kameraya göre konumu önemlidir, kalibrasyon yapılması gerekebilir
- Lazer çizgisi tespiti için renk eşikleri ayarlanabilir
- OBJ formatı yaygın olarak desteklenir ve FBX'e göre daha basittir
src/main.cpp: Ana uygulama kodusrc/LaserLineDetector.cpp: Lazer çizgisi tespitisrc/PointCloudBuilder.cpp: 3D nokta bulutu oluşturmasrc/MeshCreator.cpp: Mesh oluşturma ve düzgünleştirmesrc/ColorMapper.cpp: Renk bilgisi uygulamasrc/OBJExporter.cpp: OBJ/MTL/PNG formatında dışa aktarma
Bu proje MIT Lisansı altında lisanslanmıştır.