2016-08-16 22 views
12

HDR görüntülerini Core Image ile işlemek mümkün mü? Bu konuda fazla belge bulamadım, bu yüzden muhtemelen birisinin bir cevabı olup olmadığını merak ediyordum. Bunun bir CIContext başlatmak zaman RGBAh ile çalışma alanı hesaplamaları yapmak mümkün olduğunu biliyoruz, bu yüzden düşündüm biz mümkün olması gerektiğini, nokta görüntü formatlarını kayan hesaplamaları yapıp yapamayacağımı ..HDR görüntüleri Çekirdek Resim ile?

Ne, eğer iOS'ta HDR efektleri üretmek istiyorsanız, mümkün değil mi?

DÜZENLEME: Biraz daha özlü olmaya çalışacağımı düşündüm. HDR görüntülerinin piksel değerlerini kenetleyerek .jpg, .png ve diğer görüntü formatları olarak sıkıştırılabildiği ve kaydedilebileceği anlayışı benim için. Bununla birlikte, daha önce dönüştürülmemiş bir HDR görüntüsünde Core Image aracılığıyla ton eşleştirmeyi yapmakla daha çok ilgileniyorum. Sorun, .hdr uzantısı ile sözde bir HDR görüntü ile bir CIImage kodlama.

EDIT2: CGImageCreate ve CGDataProviderCreateWithFilename ile birlikte kullanılması yararlı olabilir mi?

cevap

3

Umarım HDR'nin nasıl çalıştığına dair temel bir anlayışa sahip olursunuz. Bir HDR dosyası, farklı pozlarda 2 veya daha fazla görüntü yakalayarak ve birleştirerek oluşturulur. Yani .HDR dosya gibi bir şey olsa bile, içinde birden fazla jpg ile bir kap biçimi olurdu. Teknik olarak iki görüntü dosyasını aynı anda genel bir CIFilter'e giriş olarak veremezsiniz.

iOS'ta, hatırladığım gibi, bir HDR'nin orijinal fotoğraf setine ancak işlenen son çıktıya erişmek mümkün değil. Yapabilseydiniz bile, HDR işlemini manuel olarak yapmak ve bir CIFilter'e beslemeden önce tek bir HDR png/jpg oluşturmalısınız.

+0

Bir kez bir araya getirildiğinde, elde edilen dosya piksel bilgisini sağlamak için herhangi bir şekilde kullanılamaz? Belki dışarıdan böyle bir dosya var, bu nedenle ton haritalama için örnek MATLAB kodunda gördüğüm .hdr uzantısı, sadece bu dosyayı sağlayamıyor ve ortaya çıkan görüntü bir CIImage içine kodlamak mümkün değil mi? Belki de Core Image'in HDR görüntüleri üzerinde ton haritalaması yapmak amacı değil midir? Yine de, özel filtrelerinin kullanımıyla teknik olarak mümkündür. –

+0

@DavidSacco ilk sorun, iOS'ta farklı pozlamalara sahip orijinal olarak çekilen görüntü dizisine erişmenin bir yolu yok. Ve son HDR işlendikten sonra, bu dosyaların 3 RGB kanalında saklanması teknik olarak imkansız olduğu için kaynak dosyaların piksel bilgilerini tutmaz. IOS'ta "HDR" etiketli görüntüler, farklı pozlamalarla birden çok fotoğraf kullanılarak zaten işlenmiş olan JPEG'lerden başka bir şey değildir. – sleepwalkerfx

+0

Teşekkürler, evet, kendi google-fu'mdan da öğrendiğim şey bu. .RAW görüntülerine ilişkin yeni iOS 10 öğelerinden herhangi birinin yardımcı olabileceğini merak ediyorum. Ayrıca HDR görüntülerinin kayan noktalarda saklanabileceğini öğrendim.Yüksek yoğunlukların korunabileceği TIFF dosyası, ses eşleştirmeyi kullanmak istediğinde kullanıcının söz konusu görüntüyü sağlaması gerektiğidir. Ayrıca, bağlamınızın "kCIContextWorkingFormat" seçeneği ile kayan nokta hassasiyetinde hesaplandığından emin olmak da mümkündür. –

1

CI HDR Algoritması isteyenler olduğundan, kodumu github üzerine paylaşmaya karar verdim. Bu Robertson HDR algoritmasıdır

https://github.com/schulz0r/CoreImage-HDR

, böylece RAW görüntüleri kullanamazsınız: Bkz. Kamera yanıtını nasıl alacağınızı ve hdr görüntüsünü nasıl alacağınızı öğrenmek için lütfen birim testlerine bakınız. CoreImage, piksel değerlerini [0.0 ... 1.0] dışına çıkarır, böylece HDR, söz konusu aralığa ölçeklenir. Metal ile kodlama her zaman benim için dağınık kodlara neden olur, bu yüzden projenize dahil etmeniz gereken MetalKitPlus'ı kullanmaya karar verdim. Burada bulabilirsiniz:

https://github.com/LRH539/MetalKitPlus

Sana dev/v2.0.0 şube kontrol etmek zorunda düşünüyorum. Gelecekte bunu ustalıkla birleştireceğim.

İlgili konular