PHP ile görüntünün baskın gölge Algılama

1 Cevap php

Ben daha önce GD kullanılır, ama sadece hiç anında görüntü üreten / yeniden boyutlandırma için var - Ben çok pozitif değilim ama ben sonra ben ne yapmak yeteneklere sahiptir.

Gibi sadece mümkün, ben hafif bir arka plan veya karanlık bir arka plan olup olmadığını öğrenmek için bir görüntüyü kontrol etmek gerekir. Yani plan ağırlıklı 'hafif' eğer ben '1 değerini döndürdü ediyorum 've baskın ise' karanlık ''0 döner'.

Orada sadece 5 görüntüleri bir zamanda bu süreçte iterated olacak, ama ben burada işlem süresi çok bilinçli değilim ediyor - sayfa sık sık adı olacak.

Herkes bu nereye gitmek bana doğru yönde işaret edebilir?

1 Cevap

Örneğin, (örneğin) sol üst veya sağ üst köşesinde her zaman arka plan renginin olacak - Eğer yararlanabilirsiniz herhangi desenler vardır eğer ilk görmek? Eğer öyleyse, sadece o pikselin renk bakmak.

Belki bazı önemli piksel bakarak ve onları ortalama bir "yeterince iyi" fikir edinebilirsiniz.

Böyle basit bir şey başarısız, yapmanız gereken iş büyüklük emriyle yükselmeye başlar.

Ben bir güzel fikir (belki Bresenham's line algorithm bakabilirsiniz) sağ alt köşesine sol üst köşesinden çapraz olarak gidiyor piksel şeridini almak olacaktır. Koyu ve açık renkli ishal için bakmak, ve muhtemelen uzun vadede almak; Bu işe yaramazsa, belki onlar kadar açık ve koyu dayalı çalışan "puan" olmalıdır.

Görüntü gereksiz büyükse (örneğin 1000x1000 veya daha fazla) daha sonra ucuza (80x80 diyelim) makul bir şey onu küçültün imagecopyresized kullanın.

Görüntünün ÇOK background-color ise çalışacaktır şey 1 piksel görüntüyü yeniden örneklemek ve o pikselin (ya da belki bir şey rengini kontrol etmektir küçük, 4x4 ya da öylesine, görüntü olup olmadığını görmek için pikselleri saymak sonra ağırlıklı olarak açık veya koyu).

'Resized ise sadece orijinal tek pikselleri alır' beri resampled aslında birlikte pikselleri karıştırır, oldukça imagecopyresized daha pahalı imagecopyresampled olduğunu unutmayın.

Eğer "hafiflik" bir ölçü isterseniz sadece R, G ve B değerlerini birlikte ekleyebilirsiniz. Yoksa kullanılan luma için formül için gidebiliriz YCbCr:

Y' = 0.299 * R + 0.587 * G + 0.114 * B

Bu hafiflik, daha "insan-merkezli" bir ölçüsünü verir.