ページ 11

画像処理について

Posted: 2009年5月12日(火) 05:53
by ubuntu
いつもお世話になっております。
今回画像処理の学習をする中で、まだ初心者なので分からない部分が多々あり質問させてもらいます。
今表色系の変換でRGB値をXYZ値に変換するプログラムを組もうとしているのですが、いろいろ調べた結果、
X=2.7689*R+1.7517*G+1.1302*B
Y=1.0000*R+4.5907*G+0.0601*B
Z=0.0000*R+0.0565*G+5.5943*B
この変換式を用いて各ピクセルの値を変換することまでは分かったのですが、実際プログラムを組む際にどのような手順で組んでいいのか分からずこの場で質問させてもらいました。
何か良いアドバイスお願いいたします。

Re:画像処理について

Posted: 2009年5月13日(水) 23:14
by fumi
RGB値が事前にわかっているなら、変換式に代入するだけなのですが…

もしかしてビットマップなどのファイルのRGB値を読み込んで変換したいということでしょうか?
もしそうなら、DXライブラリの関数を用いるか、バイナリでファイルを読み込みビットマップのフォーマットを調べ、生の画像データ(RGB値)を取り出す必要があります。

あと、変換式が違うかと思います。

ttp://image-d.isp.jp/commentary/color_cformula/XYZ.html

Re:画像処理について

Posted: 2009年5月14日(木) 11:01
by s-rush
DXライブラリを使用しないのであれば、fumiさんのおっしゃるように
バイナリでファイルを読み込む必要がありますね。

手順としては、
fopneでビットマップのファイルを読み込む。
(情報ヘッダの読み込み)
メモリの(動的)確保
freadでデータ部の読み込み
RGB→XYZ変換

といった感じでしょうか?

そこからさらに画像ファイルとして出力するのであれば
(XYZ変換をよく知らないので、画像出力する必要があるのかどうかわかりませんが^^;)
fwriteでデータ部をバイナリに書き込みをすればOKです。


多少端折っている部分もありますが、流れとしてはこんな感じです。