← Projeler

Görselden renk paleti çıkarma uygulaması

Django ve OpenCV ile görsel yükleme, LAB uzayında K-Means kümeleme, HEX renk çıktısı ve kullanıcıya özel palet arşivi.

Rol
Geliştirme ekibi üyesi · üç kişilik proje
Kurum
Kocaeli Üniversitesi
Dönem
2024
Teknolojiler
Python · Django · OpenCV · scikit-learn · K-Means · JavaScript
Projede kayıtlı kıyı fotoğrafı ile bu görüntüden çıkarılmış beş rengin HEX kodlarını birleştiren sonuç görselleştirmesi.

Problem

Bir fotoğraftaki renkleri bir arayüzde kullanmak istediğinizde, seçtiğiniz tonların HEX kodlarına ihtiyacınız oluyor. Bu uygulama fotoğrafı alıp seçilen sayıda renkten oluşan bir palete dönüştürüyor. Üç kişilik ekipte görüntü işleme, kullanıcı hesapları ve palet arşivini aynı Django uygulamasında birleştirdik.

Kapakta, projede kayıtlı bir kıyı fotoğrafını ve ondan elde edilen beş HEX rengini birlikte görebilirsiniz. Bu görsel, kayıtlı sonucu göstermek için hazırlanmış bir karşılaştırma; uygulama ekranı değil.

Görüntü işleme pipeline’ı

JPEG/PNG dosyası doğrulandıktan sonra görüntü 200×200 boyutuna indiriliyor. Gaussian blur uygulanıp OpenCV ile BGR’den LAB renk uzayına dönüştürülüyor. Piksel değerleri K-Means ile kümeleniyor; merkezler RGB’ye çevrilerek palet ve HEX kodları oluşturuluyor.

Kullanıcı renk sayısını ve blur kernel değerini seçebiliyor. K-Means için random_state=42, n_init=10 ve max_iter=1000 kullanılıyor. Resize, kümelemenin maliyetini sınırlandırıyor; küçük ayrıntıların ve seyrek renklerin kaybolması ise bu tercihin bir sonucu.

Görselden HEX koduna: boyutlandırma, ön işleme, LAB dönüşümü ve K-Means adımlarının koddan hazırlanan şeması. Alttaki renkler kayıtlı örnek palete ait.
Görselden HEX koduna: boyutlandırma, ön işleme, LAB dönüşümü ve K-Means adımlarının koddan hazırlanan şeması. Alttaki renkler kayıtlı örnek palete ait.

Web ve veri modeli

Django’nun kullanıcı sistemi ve template yapısı ile yükleme, sonuç, palet geçmişi ve profil ekranları geliştirildi. Palet düzenleme/silme sorguları kullanıcıya göre filtreleniyor.

ImageUpload ve ColorPalette, ortak zaman alanlarını taşıyan abstract BaseModel’den türetiliyor. Kullanıcı ve görsel ilişkileri ForeignKey ile kuruluyor. Görüntü işleme adımları küçük fonksiyonlara ayrılarak algoritma, yardımcı fonksiyon ve view testlerinde kullanılıyor.

Ölçümler ve karşılaşılan sorunlar

Projede kayıtlı 11 görsel için yükleme, blur, LAB dönüşümü ve K-Means sürelerinin grafiği
Projede kayıtlı 11 görsel için yükleme, blur, LAB dönüşümü ve K-Means sürelerinin grafiği

Kayıtlı 11 performans ölçümünde toplam süre 0,174–0,702 saniye, ortalama yaklaşık 0,411 saniye. Bunlar projenin eski deney çıktıları; farklı donanım ve görseller için hız garantisi değil.

İlk üretim ve palet düzenleme farklı ön işleme yolları kullanıyor. Ara görüntülerde sabit dosya adları da eşzamanlı isteklerde çakışabilir. Pipeline’ın tek bir servis fonksiyonuna alınması, kullanıcıya özel çıktı yolları ve daha tutarlı görsel depolama sonraki geliştirme adımları.

Sonuç

Görsel yükleme, algoritma çalıştırma, renk kodlarını gösterme ve kullanıcıya özel palet yönetimi aynı uygulamada birleştirildi. Proje, klasik görüntü işlemenin full-stack bir web ürününe entegrasyonunu gösteriyor.