Bence asıl sorun dinamik aralıklardan biri, algoritmanız muhtemelen doğru ama yanlış veri türü üzerinde çalışıyorsunuz.
Aksi halde saf beyazı kırpıp gidecek bir nokta ışık kaynağı, odaklanmamış bir lens tarafından daha geniş bir alana yayılır, böylece parlak olmayan ve bu nedenle klipslenmeyen bir disk oluşturur.
Bu yüzden bu güzel daireleri gerçek bokeh görüntünüzde elde edersiniz. Sinyali kırpırsanız (aksi halde olduğundan daha az parlak hale getirir ve daha sonra bokeh simülasyonunuzla dağıtırsanız, göze çarpmayan ve gerçekçi görünmeyen bir loş daire (veya altıgen veya herhangi bir şey) elde edersiniz.
Gerçek bir görüntü zincirinde sahip olduğunuz şey:
bokeh (from the lens) -> digitisation (clipping) -> gamma correction & dynamic range compression
Ne yapıyorsun
sharp image -> digitisation (clipping) -> gamma correction & dynamic range compression -> bokeh simulation
Doğrusal verilerle çalışmadığınız için doğru sonucu elde edemezsiniz.
Yapabileceğiniz şey, verileri doğrusallaştırmaya, kırpılmadan kaybolan herhangi bir dinamik aralığı değiştirmeye, bokeh simülasyonunuzu gerçekleştirmeye ve ardından doğrusal olmayan işlemleri yeniden yapmaya çalışmaktır!
İşte bir örnek. Tonemapped bir HDR görüntü ile başladım, son derece doğrusal olmayan bir sonuç verir. Bu, bokeh simülasyonunu denemek için en kötü görüntü türüdür!
Bokeh simüle etmek için standart bir evrişim işlemi yapmak (photoshop'un lens bulanıklaştırma aracını kullanarak), bu sonucu elde ettiğinize çok benzer:
Daha iyi bir sonuç elde etmek için, görüntüyü tonemapping'ten önce ne olacağını, vurguların görüntünün geri kalanından çok daha parlak olduğu kabaca geri almak için aşırı bir eğri uyguladım. Bunu seviyeler aracıyla yaptım, merkez girdisini sağa doğru uzun bir yoldan 1.0'dan 0.2'ye iterek). Daha sonra, daha önce olduğu gibi lens bulanıklaştırma aracını uyguladım. Sonunda ilk eğriye zıt yönde aşırı bir eğri uyguladım. Sonuç, mükemmelden çok uzak olsa da, gerçek lens bokehine çok benziyor:
Bunu kodda yapıyorsanız, her bir değeri küp haline getirmeyi deneyin, ardından bokeh simülasyon rutininizi uygulayın, ardından her değerin küp kökünü alın. Bir gelişme görmelisiniz. Biraz değişiklik yapmak gerekebilir.
tl; dr mükemmel bir matematiksel bokeh modeli uygulasanız bile, kırpılmamış doğrusal verilere uygulanmalıdır. Aynı hesaplamaları yoğun şekilde değiştirilmiş verilere uygularsanız (kamera JPEG'de bir standart bile matematiksel açıdan büyük ölçüde değiştirilir) çok farklı bir sonuç elde edersiniz.