Гистограмма CMYK/RGB - некорректный перевод из CMYK в RGB - C#

Узнай цену своей работы

Формулировка задачи:

Возникла проблема с правильностью перевода из RGB в CMYK. Все переменные до самого конца - double, но при этом расчёты будто ведёт пьяный Вася, а не точный компьютер. Совершенно странные числа, совсем не по моим формулам.
                    color = img.GetPixel(i, j);
                    double Rt = color.R;
                    double Gt = color.G;
                    double Bt = color.B;
 
                    double Ccount = 1.00 - (Rt / 255);
                    double Mcount = 1.00 - (Gt / 255);
                    double Ycount = 1.00 - (Bt / 255);
                    double var_K = 1;
                    
                    if (Ccount < var_K) var_K = Ccount;
                    if (Mcount < var_K) var_K = Mcount;
                    if (Ycount < var_K) var_K = Ycount;
                    if (var_K == 1) 
                    {
                        Ccount = 0;
                        Mcount = 0;
                        Ycount = 0;
                        var_K = 100;
                    }
                    if (var_K != 1)    
                    {
                                Ccount =((Ccount - var_K) / (1 - var_K)) * 100;
                                Mcount =((Mcount - var_K) / (1 - var_K)) * 100;
                                Ycount =((Ycount - var_K) / (1 - var_K)) * 100;
                                var_K = var_K * 100;
                    }
                    C[Convert.ToInt32(Ccount)]++;
                    M[Convert.ToInt32(Mcount)]++;
                    Y[Convert.ToInt32(Ycount)]++;
                    K[Convert.ToInt32(var_K)]++;
                }
Помогите разобраться, где ошибка в расчётах. За формулу перевода использовал формулы: http://www.easyrgb.com/index.php?X=MATH&H=13#text13 Прикрепил также полную версию проекта.

Решение задачи: «Гистограмма CMYK/RGB - некорректный перевод из CMYK в RGB»

textual
Листинг программы
                                Сcount =((Ccount - var_K) / (1 - var_K)) * 100;
                                Mcount =((Mcount - var_K) / (1 - var_K)) * 100;
                                Ycount =((Ycount - var_K) / (1 - var_K)) * 100;
                                var_K = var_K * 100;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5