Sadece resminizi YUV format'a dönüştürüp, luma kanalının ortalamasını hesaplayın. Renk dönüşümü tipik bir işlemdir ve her türlü iyi görüntü işleme çerçevesi onu destekler. Örneğin, OpenCV (OpenGL dediniz, ama bu gerçekten görüntü işleme ile ilgili hiçbir şey yapmıyor, bende OpenCV demek istediğimi varsayalım) CvtColor.
Y' = 0.299*R + 0.587*G + 0.144*B
luma kanalını almak için, ve sonra ortalamayı hesaplamak: kullanışlı Böyle bir çerçeve var ama piksel yoğunluklarına erişimi yoksa
, sen denklemi kullanabilirsiniz. R, G ve B sırasıyla kırmızı, yeşil ve mavi kanalları temsil eder. Senin kameran ile diyafram değiştirerek parlak/koyu sahnelerde telafi edeceği mümkün olduğunu
DÜZENLEME
Not. Bu kameraya bağlı, ama sanırım çoğu kamera bunu yapıyor - aksi takdirde resimleriniz ya doymuş (saf beyaz) ya da düz siyah - sonuçta işe yaramıyor. İnsan gözü aslında do the same thing.
Dezavantajı, sadece bir görüntüye bakarak karanlık veya aydınlık bir ortamda olup olmadığını söylemek zor. Bu durumda, görüntünün ötesine geçip kamerayı sorgulamanız gerekebilir. Teoride, bunu doğrudan bir sürücü (olası) veya belki de görüntü meta verilerine bakarak (örn. JPEG ile EXIF) yapabilirsiniz. Son olarak, tam olarak parlaklığını bilmek istediğiniz şeyin ne olduğunu söylemediniz. Genel sahne ise, ortalama yeterli olacaktır. Sahnenin bir parçasıysa, biraz daha akıllıca bir şeyler yapmak zorunda kalabilirsiniz. Durum buysa, bize bildirin.
Teşekkürler, bunun çalışması gerekiyor. Bir deneme yapıp sonucu burada yayınlayacağım. – krafter
Düzenlenmiş yorumuma bir göz atın - Potansiyel bir sorun ve bunu çözebileceğiniz bazı yollar belirledim. – misha
Evet, bu aslında işe yarıyor: piksel bilgisini renk yoğunluklarına bölerek daha sonra burada gösterildiği gibi Y'yi hesaplar. Kameranın ayarlayabilmesi için küçük (hızlı) ışık titreşimlerinin ortalama parlaklık değerine ihtiyaç duyduğumdan, bu yöntem işe yarıyor. Tekrar teşekkürler. – krafter