みなためラボ

【C言語】RGB表色系をXYZ表色系に変換するプログラム

文字サイズ

はじめに

どうも! 高杉 皆為(@MinatameT)です。

この記事は、「RGB表色系やXYZ表色系については大体知っている」という方を対象にしています。そのため、表色系についての説明はおこないません。

さっそくプログラムのソースコードを示していきますが、ここで注意点があります。それが、RGB表色系の種類についてです。

ここでは、一般的によく用いられている「sRGB(D65)表色系」を使って、XYZ表色系を求めます

また、RGBの値の範囲は「0から1まで」としています。0から255ではありません。

※他のRGB表色系では計算式が異なりますので、注意してください。

それでは、ソースコードと実行結果を確認していきます。

RGB表色系からXYZ表色系に変換するプログラム

ソースコード

#include<stdio.h>

int main(void)
{
  float R,G,B;
  float X,Y,Z;

  printf("Rの値を入力してください。>");
  scanf("%f",&R);
  printf("Gの値を入力してください。>");
  scanf("%f",&G);
  printf("Bの値を入力してください。>");
  scanf("%f",&B);
	
  X = (0.4124*R) + (0.3576*G) + (0.1805*B);
  Y = (0.2126*R) + (0.7152*G) + (0.0722*B);
  Z = (0.0193*R) + (0.1192*G) + (0.9505*B);

  printf("・RGB表色系:(%0.4f,%0.4f,%0.4f)\n",R,G,B);
  printf("・XYZ表色系:(%0.4f,%0.4f,%0.4f)\n",X,Y,Z);

  return(0);
}

必要があれば、計算式を各自で修正してください。

それでは、実行結果を確認していきます。

実行結果の例

Rの値を入力してください。>0.55
Gの値を入力してください。>0.90
Bの値を入力してください。>0.12
・RGB表色系:(0.5500,0.9000,0.1200)
・XYZ表色系:(0.5703,0.7693,0.2320)

このように、sRGB(D65)表色系がXYZ表色系に変換されました。

今回はここまでです。かなりマニアックな内容の記事だったと思います。皆さん、お疲れさまでした。


 

みなためじゃんけん

このコーナーは、私と擬似的にじゃんけんできるコーナーです。

みなためじゃんけん、じゃんけんぽん!

私が出したのは……





グー

グーでした! パーの勝利です!



この記事をSNSでシェアする

プログラミングカテゴリーの最新記事(5件)

最新記事(10件)

管理人のTwitter

内部リンク集