2012-12-30 16 views
5

Bir boşluk duvar kağıdı paylaşım galerisi üzerinde çalışıyorum. Bir resimdeki baskın renkleri almak için JavaScript kitaplığı renk hırsızı kullandım, ancak bir sorunum var. Çoğu duvar kağıdı karanlıktır. Bir duvar kağıdı ararken, bir kullanıcı # 07F gibi mavi bir renk seçerse, bu rengin olduğu birçok karanlık duvar kağıdını alamaz, çünkü bu duvar kağıdının baskın rengi siyaha yakın olacaktır.Bir resmin baskın tonunu/tonlarını alma

Arama için birden fazla baskın rengin kullanılmasına izin verebilirim (örneğin, örneğin siyah ve mavi), ancak bu, aramayı daha karmaşık hale getirebilir.

herhangi bir JavaScript kütüphanesi (istemci tarafında yapılmalıdır) baskın tonları bir resmin elde edebilir var mı? Ve değilse, bunu yapmak için nasıl bir algoritma uygulayabileceğime dair bir fikrin var mı? Okumak için

Teşekkür :)

+0

http://stackoverflow.com/questions/13811483/getting-dominant-color-of-an-image?rq=1 –

+0

Bkz. Http://stackoverflow.com/ dominant renk tonunu bulabilirim. sorular/3732046/nasıl yapılır? xxxxxx-renk- – bkconrad

+0

Bkconrad, OP'ye göre siyah renk tonu bulursunuz. Aslında iyi bir fikir, siyahtan (ve belki de beyazdan) sonra en baskın rengi bulabilirdi. –

cevap

2

Bu Javascript daha tasarım soru daha fazladır. Dominant renk her zaman en fazla pikseli kaplayan bir renk değildir. Gözünü yakalayan renk. Örneğin, birine siyah arka plan üzerinde pembe bir gökadanın resmini gösterirseniz, baskın renk siyah değil, pembedir, çünkü ana konu pembe renktedir. Yani bundan daha karmaşık bir algoritma ihtiyacınız var. Ayrıca, siyah beyaz teknik olarak renkler değildir. Bunlar, sırasıyla, hafif ya da aşırı parlak noktaların (ya da ışık kaynaklarının) tamamen yokluğudur. Bu yüzden önceden tanımlanmış bir eşikten daha koyu veya daha hafif olan herhangi bir şeyi (örneğin, hesaplamanızda üst ve alt% 5'i hariç tutar) devre dışı bırakacağım.

DÜZENLEME:

Kendimi aslında hata payı ile (örneğin, X piksel sayısı daha gürültüden dolayı yanlış pozitif önlemek için) belli bir sınırın üzerinde en doygun piksellerin renk elde etmek için deneyebilirsiniz .

EDIT2:

Sen pikselin doygunluğu ve karanlığa test etmek L155 değiştirmek mümkün olabilir. Bu amaç için RGB-> HSB dönüşümü yapan bir kütüphaneye sahip olmak isteyebilirsiniz, ancak iyi bir şey olup olmadığını bilmiyorum.

+0

Cevabınız için teşekkürler! Oleg'in söylediğine benziyor. – Virus721

+0

Dijital görüntülerde siyah-beyazın teknik olarak renkler olmadığını söylemek mantıklı değil. Şimdi, bu renk hırsızı işinin nasıl çalıştığına bakmayı düşünmedim, ama eğer herhangi bir renk kümelenmesi yapmıyorsa, o zaman elde ettiğiniz baskın tonlar çoğunlukla işe yaramaz.İkincisi, burada bir tür yanlış anlaşılma var. Sadece baskın renk tonunu düşünmek için bir sebep yok, bunun yerine K baskın tonları istiyorsunuz, bu yüzden tek bir renk tonu X için arama, X'in K dominant tonları listesinde mevcut olduğu görüntüleri döndürecektir. – mmgp

+0

@mmgp: Kullanıcının niyeti veriye dönüştürmekten bahsediyoruz. Bu yüzden, insanların pikselleri nasıl yorumladıkları değil, nasıl renk algıladıklarını öğrenmek için bir _lot_ önemlidir. – hayavuk

İlgili konular