Denemedim fakat sadece fikir önerisi olarak sunuyorum. Biliyorsunuz ki RGB kodlarının her bir hanesi 255'e yaklaştıkça renk kararlışalır, 0 a yaklaştıkça da yok olur. Şayet Beyaz'a ulaşmak istersek tüm renkleri 255 yapmalıyız. Bu durumda Red Green Blue'nun ortalamasını alıp 255/2(127) yle kontrol edersek siyaha mı beyaza mı yakın olduğunu az çok kontrol edebiliriz.
Ortalaması 127'den büyük olanlar için 0,0,0 (Yani Siyah)
127'den küçük veya eşit olanlar içinse 255,255,255(Yani Beyaz) basabiliriz.
Örneğin :
255,255,255 -> (255+255+255)-> (765/3) -> (ortalama)255>127 Yani 0,0,0 basıcaz
000,000,000 -> (000+000+000)-> (0/3) -> (ortalama)0<127 Yani 255,255,255 basıcaz
121,179,200 -> (121+179+200)-> (500/3) -> (ortalama)166>127 Yani 0,0,0 basıcaz gibi
Söylediğim gibi yöntemi denemedim fakat algoritmik olarak işinizi en basit şekilde çözebileceğini düşünüyorum. Aynı şekilde hex için eşit değeri olarak 127 yerine 7f kullanabilirsiniz fakat bu biraz ameleliği olur işin rgb de halletmek her türlü daha basit olur