- ベストアンサー
グレースケール画像の画素値を得る
OpenCVを使わずにC言語で、グレースケール画像を読み込んで、各画素をそれに対応する配列に格納するプログラムを作りたいと思っています。 しかし、C言語で画像を読み込む方法や、各画素の画素値を得る方法がわかりません。どなたかご存知の方がいらしたら、教えてください。宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
グレースケール画像と言っても、フォーマット(内部のデータ形式)が なんなのかわからないと、読み込みアルゴリズムが考えられません。 jpegの様な、圧縮が入っているフォーマットだと、非常に面倒です。 http://www14.ocn.ne.jp/~setsuki/ext/jpg.htm 逆に、pgmのように画素値をそのままバイナリかアスキーで 書き込んでいるだけなら、freadして配列に格納していくだけです。 画素値が知りたい場合は、配列の場所を指定してfprintでもすればよいでしょう。 http://www.not-enough.org/abe/manual/command/netpbm/pgm.html 方針としては、以下の二つが考えられます。 1.プログラムが対応する画像フォーマット種類を決め、 そのフォーマットを調べ、対応アルゴリズムを構築する 2.pgmフォーマット読み込みプログラムを作成する。 別途、画像変換ソフトを用意し、どんな画像でもpgmに変換してから プログラムで使用する。 画像変換ソフト例:IrfanView http://www.forest.impress.co.jp/lib/pic/piccam/picviewer/irfanviewjp.html 画像を読み込んで、名前を付けて保存->pgmで保存 以上、参考になれば幸いです。
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8802/19961)
>グレースケール画像を読み込んで >どなたかご存知の方がいらしたら、教えてください。 超能力者でもなければ、回答すんのは無理。 グレースケール画像の形式は?BMP?JPEG?GIF?PNG?MAG?PSD?RAW?PIC?それとも生データだけが並んだファイル? グレースケールは何段階?0~15?0~255?0~65535?実数で0.0~1.0?これ以外の特殊な物? 画像ファイルのフォーマットの詳細は?ヘッダーがあるならヘッダーの構造は?実データの並びやデータの形式は?圧縮の形式は?アルファ(透過)チャンネルの有無は?量子化ビット数は?パレット情報の有無は? こういう「ファイルの詳細仕様」がすべて判ってないと、教えたくても教えられませんよ。 質問者さんだって、手元にあるのがJPEG画像なのに、BMP画像の読み込み方を教えられても困るでしょ? と言う訳で、そのへんの「詳細仕様」を回答者が解るように説明して下さい。じゃないと回答出来ません。 とゆ~か、もし「他人にファイルの中身の詳細仕様を説明出来る」としたら「自分でファイルの中身についてすべて理解している」はずで、すべて自分で理解出来てるなら「その仕様通りにプログラムを組めば良い」ので、他人に教わる必要は無くなってる筈。 つまり「質問者さんは、プログラムの書き方が判ってないんじゃなくて、読み込もうとしているファイルの中身を判ってないだけ」です。 そして「読み込もうとしているファイルの中身を判ってるなら、人に教わらなくてもプログラムが書ける筈」です。 もう、質問者さんが次に何をすべきか、質問者さんは理解したと思います。今すぐ「手元にある画像ファイルの詳細仕様」を調べましょう。 一般的な形式の画像ファイルであれば、ネット上に山のように「ファイル仕様について書かれたページ」が出てくるでしょう。 次に人に聞くのは「ファイルの仕様は理解した。それでも、どういうプログラムを書けば良いか判らない時」です(ですが、もし、そういう状況に陥ってその質問をしたら、その質問への回答は「C言語の基礎から学習し直すしかありません」のみだと予想されます。つまり「お手上げ」って事)