Witam.
Program ma pobierać obraz z kamery i tworzyć nowe okno w którym pojawiają się tylko te piksele co spełniają warunki co do koloru. Dotychczas wymyśliłem coś takiego:

frame=cvQueryFrame(capture); //pobiera obraz z kamery
R=cvCreateImage(cvGetSize(frame),8,1);
G=cvCreateImage(cvGetSize(frame),8,1);
B=cvCreateImage(cvGetSize(frame),8,1);
skin=cvCreateImage(cvGetSize(frame),8,1);
cvCvtPixToPlane(frame,B,G,R,0); //rozkłada obraz z kamery na trzy oddzielne (niebieski,zielony,czerwony)
cvThreshold(R,R,160,220,CV_THRESH_BINARY); //usuwa piksele z poza zakresu
cvThreshold(G,G,100,180,CV_THRESH_BINARY);
cvThreshold(B,B,100,170,CV_THRESH_BINARY);
cvAnd(R,G,skin); //wyświetla te piksele, które spełniają wszystkie trzy zakresy
cvAnd(skin,B,skin);
cvShowImage("Skin Pixels",skin);

Problem polega na tym, że potrzebował bym zależność jednego koloru od drugiego. Np. jeżeli czerwony ma wartość 160-180 to zakres zielonego wynosi 100-120, jeżeli czerwony ma wartość 180-200 to zakres zielonego wynosi 130-180.
Załączam obrazek, który pokazuje o co mniej więcej mi chodzi (niebieski to kolory jakie się wyświetlają, czerwony te które chcę żeby się wyświetlały).
http://img94.imageshack.us/i/koloryrx.jpg/ <--- link do obrazka jak by załącznik nie działał

Jeżeli ktoś zrozumiał o co mi chodzi i ma jakiś pomysł to proszę o pomoc.