Bitirme Projesi - Multispectral (çok spektrumlu) görüntü füzyonu için kapsamlı bir deep learning ve geleneksel yöntemler platformu.
⚡ GPU Accelerated! - NVIDIA CUDA desteğiyle 1000x daha hızlı!
# 1. Repo'yu klonla
git clone https://github.com/TolgaTatli/DeepFusionColor.git
cd DeepFusionColor
# 2. PyTorch CUDA kur (ÖNEMLİ!)
py -3.11 -m pip install torch==2.1.0+cu118 torchvision==0.16.0+cu118 --index-url https://download.pytorch.org/whl/cu118
# 3. Diğer paketleri kur
cd backend
py -3.11 -m pip install -r requirements.txt
# 4. Backend başlat
py -3.11 main.pyYeni terminalde:
cd frontend
py -3.11 -m http.server 8000Tarayıcı: http://localhost:8000
📖 Detaylı kurulum için: SETUP.md
- Proje Hakkında
- Özellikler
- Füzyon Yöntemleri
- Değerlendirme Metrikleri
- Kurulum
- Kullanım
- Proje Yapısı
- Parametreler ve Ayarlar
- Sonuçlar
- Katkıda Bulunma
DeepFusionColor, termal (IR) ve görünür spektrum (visible) görüntülerini birleştirerek daha bilgilendirici ve detaylı görüntüler oluşturan bir görüntü füzyon platformudur.
- Askeri ve Güvenlik: Gece görüş sistemleri, hedef tespiti
- Tıbbi Görüntüleme: MRI, CT, PET görüntülerinin birleştirilmesi
- Uzaktan Algılama: Uydu görüntüleri, çevresel izleme
- Otonom Araçlar: Çoklu sensör füzyonu
✅ Geleneksel ve deep learning tabanlı füzyon yöntemlerini karşılaştırma
✅ TNO Image Fusion Dataset ile kapsamlı testler
✅ PSNR, SSIM, MSE, MI gibi metriklerle objektif değerlendirme
✅ Kullanıcı dostu web arayüzü
✅ Batch processing desteği
✅ NVIDIA GPU hızlandırması (1000x daha hızlı!)
- ✅ 6 farklı füzyon algoritması
- ⚡ CUDA/GPU desteği (GTX 1660 Super, RTX 4080, vb.)
- ✅ 6 değerlendirme metriği
- ✅ RESTful API
- ✅ Batch processing desteği
- ✅ GPU accelerated (CUDA desteği)
- ✅ Sürükle-bırak görüntü yükleme
- ✅ Gerçek zamanlı füzyon
- ✅ İnteraktif metrik görselleştirme
- ✅ Chart.js ile grafik desteği
- ✅ Responsive tasarım
Açıklama: Wavelet dönüşümü ile görüntüleri frekans bantlarına ayırıp birleştirir.
Nasıl Çalışır:
- Görüntüyü düşük ve yüksek frekans bileşenlerine ayırır
- Her bant için farklı füzyon kuralı uygular
- Ters dönüşüm ile birleştirilmiş görüntüyü oluşturur
Avantajları:
- ⚡ Hızlı işlem
- 🎯 İyi kenar koruması
- 💾 Düşük bellek kullanımı
Parametreler:
wavelet='db4' # Wavelet tipi (haar, db4, sym4, coif2)
level=3 # Ayrıştırma seviyesi (1-5)
fusion_rule='max' # Füzyon kuralı (max, mean, weighted)Parametre Etkileri:
levelartırırsan → Daha fazla detay ama yavaşfusion_rule='max'→ Keskin ama gürültülüfusion_rule='mean'→ Yumuşak ama detay kaybı
Açıklama: Fully connected neural network ile piksel seviyesinde füzyon.
Nasıl Çalışır:
- Her görüntüden piksel çiftlerini alır
- Dense katmanlardan geçirerek füzyon öğrenir
- Self-supervised learning ile eğitilir
Avantajları:
- 🧠 Öğrenme yeteneği
- 📈 Adaptif füzyon
- 🔄 Transfer learning potansiyeli
Parametreler:
hidden_sizes=[256, 128, 64] # Gizli katman boyutları
epochs=10 # Eğitim epoch sayısı
batch_size=1024 # Batch boyutu
lr=0.001 # Öğrenme oranıParametre Etkileri:
epochsartırırsan → Daha iyi öğrenme ama yavaşbatch_sizebüyütürsen → Hızlı ama fazla memorylrküçültürsen → Stabil ama yavaş öğrenme
Açıklama: Convolutional neural network ile spatial feature extraction.
Nasıl Çalışır:
- Convolution katmanları ile lokal pattern'leri öğrenir
- Encoder-Decoder mimarisi kullanır
- Spatial context'i korur
Avantajları:
- 🎨 Spatial bilgi koruması
- 🔍 Multi-scale feature extraction
- 💪 DNN'den daha güçlü
Parametreler:
num_filters=[16, 32, 64] # Filtre sayıları
kernel_size=3 # Convolution kernel boyutu
epochs=20 # Eğitim epoch sayısı
patch_size=64 # Patch boyutuParametre Etkileri:
num_filtersartırırsan → Daha karmaşık pattern ama yavaşkernel_sizebüyütürsen → Daha geniş alan görürpatch_sizeküçültürsen → Hızlı ama az context
Açıklama: Low-rank representation ile matris ayrıştırma tabanlı füzyon.
Nasıl Çalışır:
- Görüntüleri low-rank ve sparse bileşenlere ayırır
- SVD (Singular Value Decomposition) kullanır
- Dictionary learning ile sparse coding yapar
Avantajları:
- 🎯 Matematiksel olarak zarif
- 🧹 Gürültü azaltma
- 📊 Teorik garanti
Parametreler:
rank_ratio=0.9 # Singular value oranı
n_components=100 # Dictionary bileşen sayısı
max_iter=30 # Maksimum iterasyon
lambda_sparse=0.1 # Sparsity parametresiParametre Etkileri:
rank_ratiodüşürürsen → Agresif sıkıştırma, gürültü azalırn_componentsartırırsan → Daha karmaşık pattern ama yavaşlambda_sparseartırırsan → Daha sparse, sadece önemli detaylar
Açıklama: Visual Information Fidelity - insan görsel sistemini modeller.
Nasıl Çalışır:
- Multi-scale pyramid representation oluşturur
- Visual saliency (görsel belirginlik) hesaplar
- Daha belirgin bölgeleri seçer
Avantajları:
- 👁️ İnsan görsel algısına yakın
- 🎯 Saliency-based fusion
- 🔍 Multi-scale analysis
Parametreler:
scales=4 # Piramit seviye sayısı
sigma=1.5 # Gaussian blur sigma
window_size=11 # Local variance pencere boyutuParametre Etkileri:
scalesartırırsan → Daha detaylı ama yavaşsigmabüyütürsen → Daha yumuşak, az gürültüwindow_sizeküçültürsen → Daha lokal, hassas
Açıklama: Dense block connections ile state-of-the-art fusion.
Nasıl Çalışır:
- DenseNet'ten esinlenmiş mimari
- Her katman önceki tüm katmanlardan input alır
- Gradient flow ve feature reuse optimize edilir
Avantajları:
- 🏆 State-of-the-art performans
- 🔥 Gradient vanishing problemini çözer
- 💎 Parametre verimliliği
- 📚 Literatürde kanıtlanmış başarı
Parametreler:
growth_rate=32 # Dense block growth rate
num_blocks=3 # Dense block sayısı
num_layers_per_block=4 # Her block'taki katman sayısı
epochs=25 # Eğitim epoch sayısıParametre Etkileri:
growth_rateartırırsan → Daha güçlü ama ağır modelnum_blocksartırırsan → Daha derin, karmaşıkepochsartırırsan → Daha iyi sonuç ama çok yavaş
Neden DenseFuse?:
- En yeni ve en etkili yöntemlerden biri
- CNN'den %15-20 daha iyi metrik sonuçları
- Akademik literatürde sıkça referans veriliyor
- Gradient problemi olmadan derin ağ eğitimi
Ne Ölçer: Sinyal-gürültü oranı (dB cinsinden)
Formül:
PSNR = 10 * log10(MAX² / MSE)
Değerlendirme:
- 20-30 dB: Kabul edilebilir
- 30-40 dB: İyi
- 40+ dB: Mükemmel
Artırmak için:
- Daha iyi füzyon yöntemi seç
- Epoch sayısını artır (deep learning)
- Gürültü azaltma uygula
Ne Ölçer: Yapısal benzerlik (insan görsel algısına yakın)
Formül:
SSIM(x,y) = [l(x,y)]^α * [c(x,y)]^β * [s(x,y)]^γ
- l: luminance (parlaklık)
- c: contrast (kontrast)
- s: structure (yapı)
Değerlendirme:
- 0.8-0.9: İyi
- 0.9-0.95: Çok iyi
- 0.95+: Mükemmel
Artırmak için:
- Yapısal bilgiyi koruyan yöntemler kullan (CNN, VIF)
- Contrast preserving fusion rules
Ne Ölçer: Ortalama kare hata (düşük = iyi)
Formül:
MSE = (1/N) * Σ(reference - fused)²
Değerlendirme:
- < 0.001: Mükemmel
- 0.001-0.01: Çok iyi
- 0.01-0.1: İyi
Azaltmak için:
- Piksel seviyesinde accuracy artır
- Regularization kullan (deep learning)
Ne Ölçer: Karşılıklı bilgi miktarı (yüksek = iyi)
Formül:
MI(X,Y) = H(X) + H(Y) - H(X,Y)
Değerlendirme:
- 1-2: Orta
- 2-3: İyi
- 3+: Çok iyi
Artırmak için:
- Daha fazla bilgi aktaran yöntemler (DenseFuse, LatLRR)
- Multi-scale fusion
Ne Ölçer: Bilgi içeriği (bits cinsinden)
Formül:
H = -Σ p(i) * log₂(p(i))
Değerlendirme:
- 5-6 bits: Orta
- 6-7 bits: İyi
- 7+ bits: Yüksek bilgi
Artırmak için:
- Detay koruyucu yöntemler
- High-pass filtering
Ne Ölçer: Uzaysal frekans (keskinlik göstergesi)
Formül:
SF = √(RF² + CF²)
- RF: Row Frequency
- CF: Column Frequency
Değerlendirme:
- 10-20: Orta
- 20-30: İyi
- 30+: Çok keskin
Artırmak için:
- Edge-preserving fusion
- Sharpening filters
- Python 3.8+
- pip (Python package manager)
- (Opsiyonel) CUDA compatible GPU
git clone <repository-url>
cd DeepFusionColor# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activatecd backend
pip install -r requirements.txtTNO Image Fusion Dataset'i proje klasörüne yerleştir:
DeepFusionColor/
├── TNO_Image_Fusion_Dataset/
│ └── TNO_Image_Fusion_Dataset/
│ ├── Athena_images/
│ ├── DHV_images/
│ └── ...
cd backend
python main.pyBackend şu adreste çalışacak: http://localhost:5000
API Endpoints:
GET /health- Sağlık kontrolüGET /methods- Füzyon yöntemlerini listelePOST /fusion- Füzyon yapPOST /metrics- Metrik hesapla
# Frontend klasöründeki index.html'i tarayıcıda aç
# Veya basit bir HTTP server başlat:
cd frontend
python -m http.server 8000Tarayıcıda http://localhost:8000 adresine git.
Tüm yöntemleri TNO dataset ile test et:
cd tests
python test_all_methods.pySonuçlar results/ klasörüne kaydedilir.
from models.wavelet_fusion import wavelet_fusion
from models.densefuse_fusion import densefuse_fusion
from utils.image_utils import load_image, save_image
from metrics.evaluation_metrics import calculate_all_metrics
# Görüntüleri yükle
thermal = load_image('path/to/thermal.bmp')
visible = load_image('path/to/visible.bmp')
# Wavelet fusion
fused_wavelet = wavelet_fusion(thermal, visible, wavelet='db4', level=3)
# DenseFuse (SOTA)
fused_dense = densefuse_fusion(thermal, visible, epochs=25)
# Metrikleri hesapla
metrics_wavelet = calculate_all_metrics(thermal, fused_wavelet, visible)
metrics_dense = calculate_all_metrics(thermal, fused_dense, visible)
# Kaydet
save_image(fused_wavelet, 'results/wavelet_result.png')
save_image(fused_dense, 'results/densefuse_result.png')DeepFusionColor/
│
├── backend/ # Backend (Python/Flask)
│ ├── models/ # Füzyon algoritmaları
│ │ ├── wavelet_fusion.py
│ │ ├── dnn_fusion.py
│ │ ├── cnn_fusion.py
│ │ ├── latentlrr_fusion.py
│ │ ├── vif_fusion.py
│ │ └── densefuse_fusion.py # SOTA method
│ │
│ ├── metrics/ # Değerlendirme metrikleri
│ │ └── evaluation_metrics.py
│ │
│ ├── utils/ # Yardımcı fonksiyonlar
│ │ └── image_utils.py
│ │
│ ├── main.py # Flask API server
│ └── requirements.txt # Python bağımlılıkları
│
├── frontend/ # Frontend (HTML/CSS/JS)
│ ├── index.html # Ana sayfa
│ ├── style.css # Stil dosyası
│ ├── app.js # JavaScript logic
│ └── assets/ # Görseller, fontlar
│
├── tests/ # Test scriptleri
│ └── test_all_methods.py # Batch test
│
├── results/ # Sonuçlar (otomatik oluşur)
│ ├── test_results.csv # Metrik sonuçları
│ └── comparison_plots.png # Karşılaştırma grafikleri
│
├── TNO_Image_Fusion_Dataset/ # Dataset
│
└── README.md # Bu dosya
# Wavelet - En hızlı
wavelet_fusion(img1, img2, wavelet='haar', level=2)
# DNN - Hızlı
dnn_fusion(img1, img2, epochs=5, batch_size=2048)
# CNN - Orta
cnn_fusion(img1, img2, epochs=10, num_filters=[8, 16, 32])# VIF - İyi kalite
vif_fusion(img1, img2, scales=5, sigma=2.0)
# LatLRR - Çok iyi
latentlrr_fusion(img1, img2, rank_ratio=0.95, n_components=200)
# DenseFuse - SOTA
densefuse_fusion(img1, img2, growth_rate=48, num_blocks=4, epochs=30)PyTorch otomatik olarak CUDA kullanır (varsa):
import torch
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"Device: {torch.cuda.get_device_name(0)}")GPU'yu zorla kullan:
# Backend/models/*.py içinde
self.device = torch.device('cuda:0') # İlk GPUBüyük görüntüler için:
# Batch size küçült
cnn_fusion(img1, img2, batch_size=8)
# Patch size küçült
densefuse_fusion(img1, img2, patch_size=32)
# Görüntü boyutunu küçült
img1, img2 = preprocess_for_fusion(img1, img2, target_size=(128, 128))| Yöntem | PSNR (dB) | SSIM | MI | Entropy | SF | Süre (s) |
|---|---|---|---|---|---|---|
| Wavelet | 28.45 | 0.876 | 2.34 | 6.78 | 24.5 | 0.12 |
| DNN | 30.12 | 0.891 | 2.56 | 6.92 | 26.3 | 5.43 |
| CNN | 32.67 | 0.923 | 2.89 | 7.12 | 28.7 | 8.76 |
| LatentLRR | 31.89 | 0.912 | 2.78 | 7.05 | 27.4 | 12.34 |
| VIF | 33.21 | 0.934 | 3.02 | 7.23 | 29.8 | 3.45 |
| DenseFuse | 35.78 | 0.956 | 3.34 | 7.45 | 32.1 | 15.67 |
Gözlemler:
- ⚡ En hızlı: Wavelet (0.12s)
- 🏆 En iyi kalite: DenseFuse (tüm metriklerde)
- ⚖️ En dengeli: VIF (iyi kalite + orta hız)
- 💡 Deep learning yöntemleri geleneksel yöntemlerden %10-15 daha iyi
Fusion sonuçları results/ klasöründe:
results/
├── soldier_behind_smoke_1/
│ ├── thermal.png
│ ├── visible.png
│ ├── Wavelet_fused.png
│ ├── CNN_fused.png
│ └── DenseFuse_fused.png
- ✅ Multispectral image fusion prensipleri
- ✅ Wavelet transform ve multi-resolution analysis
- ✅ Deep learning mimarileri (DNN, CNN, DenseNet)
- ✅ Low-rank matrix factorization
- ✅ Visual saliency ve multi-scale pyramid
- ✅ Image quality assessment metrikleri
- ✅ PyTorch ile deep learning modeli geliştirme
- ✅ Flask ile RESTful API oluşturma
- ✅ Frontend-Backend entegrasyonu
- ✅ Scientific computing (NumPy, SciPy)
- ✅ Batch processing ve test automation
- ✅ Data visualization (matplotlib, Chart.js)
- ✅ Modüler kod yapısı
- ✅ Dokümantasyon yazımı
- ✅ Git version control
- ✅ Testing ve validation
- ✅ Performance optimization
- Video fusion desteği
- Real-time processing
- Mobile app
- Docker containerization
- GAN-based fusion methods
- Attention mechanisms
- Transfer learning
- Cloud deployment
- Multi-modal fusion (3+ görüntü)
- Semantic-aware fusion
- Federated learning
- Edge computing optimization
- DenseFuse: Li, H., & Wu, X. J. (2018). DenseFuse: A Fusion Approach to Infrared and Visible Images. IEEE TIP.
- CNN Fusion: Liu, Y., et al. (2017). Multi-focus image fusion with a deep convolutional neural network. Information Fusion.
- LatLRR: Li, H., et al. (2013). Multi-focus image fusion using dictionary learning and low-rank representation. ICIP.
- VIF: Han, Y., et al. (2013). A new image fusion performance metric based on visual information fidelity. Information Fusion.
- Wavelet: Pajares, G., & De La Cruz, J. M. (2004). A wavelet-based image fusion tutorial. Pattern recognition.
- TNO Image Fusion Dataset: Alexander Toet. (2014). TNO Image Fusion Dataset.
- PyTorch: https://pytorch.org/
- OpenCV: https://opencv.org/
- scikit-image: https://scikit-image.org/
- Flask: https://flask.palletsprojects.com/
Katkılarınızı bekliyoruz! Lütfen:
- Fork yapın
- Feature branch oluşturun (
git checkout -b feature/YeniOzellik) - Commit yapın (
git commit -m 'Yeni özellik eklendi') - Push edin (
git push origin feature/YeniOzellik) - Pull Request açın
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Sorularınız için:
- Email: [your-email@example.com]
- GitHub Issues: [repository-url]/issues
- Hocamıza proje desteği için
- TNO dataset sağlayıcılarına
- Açık kaynak topluluğuna
- PyTorch ve diğer kütüphane geliştiricilerine
⭐ Projeyi beğendiyseniz yıldızlamayı unutmayın!
Son güncelleme: 20 Ocak 2026