- ベストアンサー
C言語 画像処理 jpeg → pgm
C言語 ( visual studio 2010 ) を使っております。 今回C言語で画像処理を行いたいです。 使用目的としましては、実際にデジカメでとった写真について使いたいのですが、デジカメで撮った写真はjpeg形式の為、これをpgm形式に変換したいのです。 しかし、プログラミング経験がほとんど無いため、どのようなプログラミングを作成してよいのか解りません。 一応、新版 明解C言語 入門編(出版社: ソフトバンククリエイティブ)は読んだのですが、作成できませんでした。 お教えいただけないでしょうか。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Susieプラグインの仕様については、以下のサイトのPlug-in Packageの中に Spi_api.txtというAPIの仕様書があります。 http://www.digitalpad.co.jp/~takechin/download.html プラグインのリンクについては、この辺読むとわかるんじゃないでしょうか。 http://www.asahi-net.or.jp/~kh4s-smz/spi/use_spi.html デコード処理にはプログラムの知識はもとより、画像処理(というより信号処理に近い)の深い知識が 要求されます。 例えば > 離散コサイン変換を用いて、空間領域から周波数領域へ変換する。(Wikipediaより抜粋) という一文を読んで、「なるほどね」と思える程度には基礎知識をお持ちでないと辛いのではないかと思います。 先ほどの「初心者には難しい」という言い方はちょっとお気を悪くされたかもしれませんね。お詫びいたします。 #3さん、ご指摘ありがとうございます。 僕もどっかにあったはず、と思っていたのですが見つけられませんでした。
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
JIS X 4301 を「見る」だけなら日本工業標準調査会の方から見えると思います>#2. 「だからどうした」といわれるとそれで終わりですが.
- jjk65536
- ベストアンサー率59% (66/111)
> 学習目的も含んでいるため ん?つまりデコードはライブラリに頼らず自分でコーディングしたいということですか? Jpegの仕様はISOやJISでドキュメント化されているので、正式仕様はそのへんを読むとわかると思います。 http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS%20X%204301%3A1995&dantaiCd=JIS&status=1&pageNo=1 でも有料なんですよね。読んでないけど、多分難解です。 先ほど挙げたLibjpegのソースコードでも読んだほうが安いし実装例だしいいと思います。 ここからソースが落とせます。 http://www.ijg.org/ ちなみにプログラム初心者の方がロッシー(非可逆)画像のデコードを行うコードを書くのは ほとんど不可能なのではないかと思います。 > visual studio 2010 を使用しての方法に限らせていただきたく思います。 VisualStudio2010であれば外部ライブラリに頼っても良いということであれば、 先ほど挙げたSusie JpegプラグインをVS2010からリンクしてやればデコードできると思います。 その先は先程述べたとおりです。 Susieプラグインの使い方については、作者のサイトを見るとわかると思います。 VisualStudio2010を使いたい、というのはわかったのですが、結局ライブラリ使って デコードしていいのかどうかわかりませんでした。 お答えいただけると他の方も答えやすいと思います。
- jjk65536
- ベストアンサー率59% (66/111)
一般的に、Jpegを自分でデコードするプログラムは書かないと思います(学習目的を除く)。 ライブラリに処理させるのがいいと思いますが、どれを選ぶかでコーディングも 変わります。 有名なのはLibjpegですかね。 http://ja.wikipedia.org/wiki/Libjpeg 個人的には、SusieプラグインのJpeg用のものがいいと思います。 http://www.digitalpad.co.jp/~takechin/download.html Susieプラグインは拡張子がspiですが、中身はdllでそのままdllとして利用できます。 SusieのJpegプラグインを使う利点として、spiを差し替えるだけで 簡単に別のフォーマット(gif、pngとか)を読めるようになります。 ライブラリを使ってjpegをデコードすると、無圧縮(=ビットマップ)の画像イメージを メモリ上に持つことになります。 これを、pgmフォーマットで書きだせばいいわけです。 なお、ご質問の冒頭で画像処理を行いたいとありますが、pgmにフォーマット変換してから 画像処理をやりたいということでしょうか? 変換するだけならImagemagickを使うという手もあります。 http://www.imagemagick.org/script/index.php こんな感じで変換できました。 convert IMG.jpeg IMG.pgm 何かしらご参考になれば幸いです。
補足
ご回答ありがとうございます。 丁寧なご回答をいただいたのに申し訳ないのですが、 学習目的も含んでいるため visual studio 2010 を使用しての方法に限らせていただきたく思います。 誤解を与える内容となって申し訳ありません。 jpegからpgmへのフォーマット変換のみを目的としております。
お礼
やはり難しいのですね。 外部ライブラリに頼ろうかと思います。 しかし、Susieのホームへージを読ませていただいたのですが、設定の仕方がいまいちわかりません。 詳しく説明してはいただけないでしょうか。