用C语言计算各色油墨的灰度、色偏、色效率

用C语言计算各色油墨的灰度、色偏、色效率

用彩色密度计由C、M、Y三色滤色片对一原色油墨的知实地以块进行测量,将会得到大、中、小三个数值道,分别用Dh、Dm、Dl表示,计算公式如下:色偏Eh=(Dm-Dl) /( Dh-Dl) X100%,灰度Gr=Dl/Dh X100%,色效率CE=1-(Dm+Dl)/(2 X Dh)X 100%
用C语言计算各色油墨的灰度、色偏、色效率_第1张图片
我们先把数据按上图顺序保存在文本文档,然后读入到一个数组中,再对数组每行大到小排序,这样便于后面的计算。
源代码如下:

#include 
#include
float bijiao(float a[9][3]);//排序函数
float jisuan(float a[9][3]);//计算函数
int main()
{
 int i, j;
 float date;
 float date_storage[9][3];
 FILE *fp;
 if ((fp = fopen("zuoye.txt", "r")) == NULL)
 {
  printf("error");
 }
 printf("排序前\n");
 for (i = 0; i < 9; i++)
 {
  for (j = 0; j < 3; j++)
  {
   fscanf(fp, "%f", &date);
   date_storage[i][j] = date;
   printf("%f\t", date_storage[i][j]);
  }
  printf("\n");
 }
 printf("\n");
 printf("排序后\n");
 bijiao(date_storage);//从大到小排序
 for (i = 0; i < 9; i++)
 {
  for (j = 0; j < 3; j++)
  {
   printf("%f\t", date_storage[i][j]);
  }
  printf("\n");
 }
 printf("\n");
 jisuan(date_storage);
 }
float bijiao(float a[9][3])
{
 int i, j,x;
 float t;
 for (i = 0; i < 9; i++)
 {//a[i][0],a[i][1].a[i][2]
  for (j = 0; j < 2;j++)
  {
   for (x = j+1; x < 3; x++)
   {
    if (a[i][j] < a[i][x])
    {
     t = a[i][j];
     a[i][j] = a[i][x];
     a[i][x] = t;
    }
   }
  }
 }
 return 0;
}
float jisuan(float a[9][3])//计算函数
{
 int i;
 float S, H, X;
 for (i = 0; i < 9; i++)
 {
  S=(a[i][1] - a[i][2]) / (a[i][0] - a[i][2]);
  H = a[i][2] / a[i][0];
  X = 1 - (a[i][1] + a[i][2]) / (2 * a[i][0]);
  printf("色偏=%4.2f%%,灰度=%4.2f%%,色效率=%4.2f%%",100*S,100*H,100*X);
  printf("\n");
 }
 return 0;
}

运行结果如下:
用C语言计算各色油墨的灰度、色偏、色效率_第2张图片

你可能感兴趣的:(c语言)