pixelColor = Color.FromArgb(y, i, q);
как вам верно земетили на
stackoverfow, использовать этот метод нужно только для RGB/RGBA. Работать же напрямую с yiq .NET не умеет. Обычно нестандартные цветовые пространства используют для промежуточных преобразований.
к слову параметр i имеет диапозон [-0.522, 0.522] а i [-0.596, 0.596].
По ходу же алгоритма вам эти if-ы тоже не нужны, за вас все делают коэфициенты. Для примера:
i = 0.596 * r - 0.274 * g - 0.322 * b;
i = 0.596 * 0 - 0.274 * 1 - 0.322 * 1;
i = -0.596
следовательно не нужно вам никаких этих извращений с if-ами.
p.s. а на 100 вы зачем умножаете? Пытаетесь таким образом подогнать значения что бы FromArgb их кушало? Этого делать не нужно.
И вообще можно ли как-нибудь по другому задавать цвет пикселя?
А толку если от смены цветового пространсва у вас цвет не поменяется...