İzleyen: özgünlüğü tarafından "Sıralama" renkler

oy
18

Orijinal Soru

Eğer v- maksimum uzak renkler verilmiş (ve bazı ilişkili mesafe metrik) ise, ilk M de maksimum ayrı set olmak üzere makul yakın şekilde bazı düzene Bu renkleri sıralamak için bir yol ile gelip?

Ben başından başlayarak ihtiyaç ve makul hepsi farklıdır emin olabilirsiniz ve bu yakınlardaki renkler de mesela (çok ayrıdır gibi uzun renkleri kullanabilirsiniz böylece diğer bir deyişle, farklı renklerin bir demet verilen bir sipariş ile gelip, mavimsi kırmızı) mavi kırmızımsı yanında değildir.

Rasgele yapma Tamam ama kesinlikle optimal değildir.

Açıklama: Verilen renklerin bazı büyük ve görsel açıdan farklı set (256 veya 1024 say), onları öyle ki sıralamak istediğiniz ben renklerin nispeten görsel olarak ayrı alt kümesini almak bunlardan, diyelim ki, ilk 16 kullandığınızda. daha yakın bireysel renkler görsel böylece bu uzaklaştırın onlar listesinde olan, eşdeğer, kabaca, ben 1024 bu listeyi sıralamak istediğiniz söyleyerek etmektir.

Oluştur 04/08/2008 saat 16:14
kaynak kullanıcı
Diğer dillerde...                            


9 cevaplar

oy
2

N maksimum uzak renkler 3 boyutlu (renk) uzayda iyi dağıtılmış noktaları kümesi olarak düşünülebilir. Bir bunları üretmek Eğer Halton dizisi , daha sonra herhangi bir ön ek (ilk M renk) aynı zamanda iyi dağıtılmış noktaları oluşur.

Cevap 25/08/2008 saat 09:44
kaynak kullanıcı

oy
2

Bu algı sizin için önemli olduğunu görünüyor, bu durumda böyle YUV, YCbCr veya Lab gibi bir algısal renk alanı ile çalışan düşünebilirsiniz. O kullandım her şey, onlar yalnız sRGB'den daha bana çok daha iyi sonuçlar vermiştir.

ve sRGB'den dönüştürme bir ağrı olabilir ama sizin durumunuzda aslında algoritması daha basit yapabilir ve bonus olarak çoğunlukla çok renkli perdeler için çalışacak!

Cevap 12/08/2008 saat 13:33
kaynak kullanıcı

oy
2

Bu sorun renk nicemleme denilen ve birçok tanınmış algoritmalar vardır: http://en.wikipedia.org/wiki/Color_quantization iyi etki için octree yaklaşımını uygulamaya insanlar biliyorum.

Cevap 12/08/2008 saat 13:11
kaynak kullanıcı

oy
2

Bu aynı zamanda bir tür gibi geldi direnç grafiğinde sen az direnç yolunu eşlemek deneyin. Eğer şartları, maksimum direnç yolu ters ise, belki bir takım üretmek için kullanılabileceği başlangıç sen giderken maksimum fark üretir ve sonuna doğru daha yakın başkalarına değerlere geri dönmek başlar dan.

Örneğin, burada belki istediğini yapmak için bir yoldur.

  1. (Ref mesafeyi hesaplayın diğer yazı tüm diğer renklere her renkten)
  2. Her renk için mesafeleri Sum, bu size yönelik bir gösterge verir uzağa bu renk toplamda tüm diğer renkler ne kadar uzakta olduğunu
  3. aşağı gidiyor, mesafeye göre listeyi Sipariş

Bu, o en uzak diğer tüm renklerden olan renk ile başlayan bir liste üretmek görünüyor ve ardından listenin sonuna doğru renkleri genel olarak diğer renkler daha yakın olmak amacıyla, aşağı gider.

Düzenleme: benim ilk mesaja cevabınızı Okuma, mekansal bölünme hakkında, tam olarak yakın diğer renklere renkler listenin altına düşeceği beri yukarıdaki tarife uyan, ancak her zaman uygun bir yere renklerin bir küme var diyelim olmaz o kümeden renklerin az bir listesinin başlangıcında yakınında bulunan olacağını ve genellikle uzağa toplamda tüm diğer renklerden uzak oldu olacaktı. Mantıklı geliyorsa.

Cevap 04/08/2008 saat 16:38
kaynak kullanıcı

oy
1

Sadece endeks renklerin herhangi birine asgari mesafenin maksimum mesafeli dayalı aday renkleri sıralamak.

Öklit renk mesafesini kullanarak:

public double colordistance(Color color0, Color color1) {
    int c0 = color0.getRGB();
    int c1 = color1.getRGB();
    return distance(((c0>>16)&0xFF), ((c0>>8)&0xFF), (c0&0xFF), ((c1>>16)&0xFF), ((c1>>8)&0xFF), (c1&0xFF));
}

public double distance(int r1, int g1, int b1, int r2, int g2, int b2) {
    int dr = (r1 - r2);
    int dg = (g1 - g2);
    int db = (b1 - b2);
    return Math.sqrt(dr * dr + dg * dg + db * db);
}

Eğer herhangi bir şey ile değiştirebilirsiniz rağmen istediğiniz. Bu sadece bir renk mesafesi rutin ihtiyacı var.

public void colordistancesort(Color[] candidateColors, Color[] indexColors) {
    double current;

    double distance[] = new double[candidateColors.length];
    for (int j = 0; j < candidateColors.length; j++) {
        distance[j] = -1;
        for (int k = 0; k < indexColors.length; k++) {
            current = colordistance(indexColors[k], candidateColors[j]);
            if ((distance[j] == -1) || (current < distance[j])) {
                distance[j] = current;
            }
        }
    }

    //just sorts.
    for (int j = 0; j < candidateColors.length; j++) {
        for (int k = j + 1; k < candidateColors.length; k++) {
            if (distance[j] > distance[k]) {
                double d = distance[k];
                distance[k] = distance[j];
                distance[j] = d;

                Color m = candidateColors[k];
                candidateColors[k] = candidateColors[j];
                candidateColors[j] = m;
            }
        }
    }
}
Cevap 03/09/2012 saat 21:50
kaynak kullanıcı

oy
1
  1. iki liste ile başlayın. Başlangıçta başlangıçta boş olan sizin farklı renkler ve SortedColors içeren CandidateColors.
  2. herhangi bir renk seçin ve CandidateColors çıkarın ve SortedColors koydu. Bu ilk renktir ve en yaygın olacak, bu nedenle uygulama ile de jives bir renk almak için iyi bir yerdir.
  3. CandidateColors her bir renk için toplam mesafe hesaplamak. toplam mesafe CandidateColor gelen SortedColors renklerin her mesafe toplamıdır.
  4. CandidateColors gelen büyük toplam mesafe ile renk çıkarın ve SortedColors sonuna ekleyin.
  5. CandidateColors boş değilse, geri dönmek 3. adıma.

Bu açgözlü algoritma size iyi sonuçlar vermelidir.

Cevap 21/11/2008 saat 10:29
kaynak kullanıcı

oy
1

Ben doğru soruyu anlayış değilim varsa, alt kümesini almak isteyen M ile renklerin en yüksek ortalama mesafe biraz mesafe fonksiyonu verilmiş, renkler arasındaki d .

Ilk setini dikkate Başka bir deyişle N tüm renklerin bağlı olduğu geniş, yönsüz grafik olarak renk, bulmak istediğiniz en uzun yolu herhangi ziyaret M düğümleri.

NP-tam grafik sorunlarını çözme bana korkarım ama basit bir fiziksel simülasyon çalıştıran deneyebilirsiniz ötesinde yoludur:

  1. Üret M renk uzayında rasgele sayı
  2. Her bir nokta arasındaki mesafeyi hesaplamak
  3. Tüm diğer noktalardan uzak hareket edecek her bir nokta için itme vektörleri hesaplayın (1 / (kullanarak mesafe ^ 2) vektörün büyüklüğü gibi)
  4. her bir nokta için itme vektörleri toplamı
  5. özetlenebilir itme vektörlerine göre her bir noktasının konumu güncelleme
  6. (Örneğin, parlaklık veya negatif bir yukarıda olacak şekilde) bağlı koordinatları dışında herhangi bir sınırlama
  7. noktaları sabitlenene kadar basamak 2'den elde edilen tekrar
  8. Her bir nokta için, orijinal kümesinden en yakın renk seçin N

Bugüne verimli gelen, ama küçük için M yeterince verimli olabilir ve bunun optimum sonuçlar yakın verecektir.

Renk mesafe fonksiyonu basit ise, optimum alt kümesini üreten bir daha deterministik yol olabilir.

Cevap 16/10/2008 saat 18:11
kaynak kullanıcı

oy
0

Eğer R en farklı renkteki aynı G ve B ile birlikte Ar karşılaştırabilirsiniz böylece RGB HEX formatına onları ayırabilirsiniz

HTML olarak aynı formatı

XX XX XX
RR GG BB

00 00 00 = black
ff ff ff = white
ff 00 00 = red
00 ff 00 = green
00 00 ff = blue

Yani karar vermeniz gerekir tek şey renklerini istediğin şeyi segmentler için kabul edilebilir bir farktır farklı dikkate alınması gereken ne kadar yakın olduğunu.

Cevap 04/08/2008 saat 16:31
kaynak kullanıcı

oy
0

, Sen N renkler kümesinden, M rengi belirlemek gerektiği anlamına mı nerede M <N, M olacak şekilde en iyi M uzayda N renklerin gösterimi?

Daha iyi bir örnek olarak, bir 8-bit eşlenen renk alana bir gerçek rengini (24 bit renk uzayı) azaltmak (GIF?).

Gibi bunun için nicemleme algoritmaları vardır Adaptif Mekansal Alt Bölüm ImageMagic kullandığı algoritmanın.

Bu algoritmalar genellikle sadece kaynak uzaydan mevcut renkler almak ama en yakından kaynak renklerini andıran hedef uzayda yeni renkleri oluşturur yoktur. basitleştirilmiş bir örnek olarak, iki (farklı şiddette veya mavimsi renk tonları vb) kırmızı orijinal görüntüdeki 3 renklere sahip ve üçüncü mavi ve iki renge azaltmak gerekirse, hedef görüntü kırmızı renge sahip olabilir orijinal iki kırmızı + orijinal görüntüden mavi rengin ortalamasının çeşit.

Başka bir şey gerekiyorsa o zaman ben sorunuzu anlamadım :)

Cevap 04/08/2008 saat 16:29
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more