Benim cevabım Yeniden kullanılmamış kodun çoğunu @ lostsource'un cevabı, ancak karanlık ve aydınlık görüntüleri ayırt etmeye çalışmak için farklı bir yöntem kullanır.
İlk olarak, RGB kanallarının toplamının ortalama değerinin sonucunun ne olduğunu analiz etmeliyiz (kısaca). İnsanlar için anlamsız. Pembe yeşilden daha mı parlak? I.e, neden (0, 255, 0) (255, 0, 255) 'den daha düşük bir parlaklık değeri vermesini istersiniz? Ayrıca, orta yeşili (128, 255, 0) gibi bir orta gri (128, 128, 128) mi? Bunu dikkate almak için, HSV renk uzayında olduğu gibi sadece kanalın renk parlaklığı ile ilgileniyorum. Bu, belirli bir RGB üçlüsünün maksimum değeridir.
dinlenme sezgiselleri olduğunu. Bir noktada i
için max_rgb = max(RGB_i)
edelim. max_rgb
(a 8bpp görüntü varsayarak) 128 düşükse, o zaman aksi takdirde hafiftir, karanlık yeni bir nokta i
bulundu. her noktada i
için yapıyorum, biz hafif A
puan ve karanlık B
puan almak. (A - B)/(A + B) >= 0
ise görüntü ışıktır diyoruz. Her nokta karanlıksa, -1 değeri elde edersiniz, aksi halde her nokta hafifse +1 alırsınız. Önceki formülü ayarlayabilir, böylece görüntüleri karanlıkta kabul edebilirsiniz. kodunda ben fuzzy
olarak değişken adında, ancak Görüntü İşleme fuzzy
alanda yok adalet yok. Yani, görüntü (A - B)/(A + B) + fuzzy >= 0
ise ışık olduğunu söylüyoruz.
Kod http://jsfiddle.net/s7Wx2/7/ adresinde, çok basittir, notasyonlarımın sizi korkutmasına izin vermeyin.
Bunu yapmanın tek yolu, bir html