C言語 ( visual studio 2010 ) を使っております。
今回C言語で画像処理を行いたいです。
使用目的としましては、実際にデジカメでとった写真について使いたいのですが、デジカメで撮った写真はjpeg形式の為、これをpgm形式に変換したいのです。
しかし、プログラミング経験がほとんど無いため、どのようなプログラミングを作成してよいのか解りません。
一応、新版 明解C言語 入門編(出版社: ソフトバンククリエイティブ)は読んだのですが、作成できませんでした。
お教えいただけないでしょうか。
よろしくお願い致します。
No.1
- 回答日時:
一般的に、Jpegを自分でデコードするプログラムは書かないと思います(学習目的を除く)。
ライブラリに処理させるのがいいと思いますが、どれを選ぶかでコーディングも
変わります。
有名なのはLibjpegですかね。
http://ja.wikipedia.org/wiki/Libjpeg
個人的には、SusieプラグインのJpeg用のものがいいと思います。
http://www.digitalpad.co.jp/~takechin/download.h …
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へのフォーマット変換のみを目的としております。
No.2
- 回答日時:
> 学習目的も含んでいるため
ん?つまりデコードはライブラリに頼らず自分でコーディングしたいということですか?
Jpegの仕様はISOやJISでドキュメント化されているので、正式仕様はそのへんを読むとわかると思います。
http://www.webstore.jsa.or.jp/webstore/Com/FlowC …
でも有料なんですよね。読んでないけど、多分難解です。
先ほど挙げたLibjpegのソースコードでも読んだほうが安いし実装例だしいいと思います。
ここからソースが落とせます。
http://www.ijg.org/
ちなみにプログラム初心者の方がロッシー(非可逆)画像のデコードを行うコードを書くのは
ほとんど不可能なのではないかと思います。
> visual studio 2010 を使用しての方法に限らせていただきたく思います。
VisualStudio2010であれば外部ライブラリに頼っても良いということであれば、
先ほど挙げたSusie JpegプラグインをVS2010からリンクしてやればデコードできると思います。
その先は先程述べたとおりです。
Susieプラグインの使い方については、作者のサイトを見るとわかると思います。
VisualStudio2010を使いたい、というのはわかったのですが、結局ライブラリ使って
デコードしていいのかどうかわかりませんでした。
お答えいただけると他の方も答えやすいと思います。
やはり難しいのですね。
外部ライブラリに頼ろうかと思います。
しかし、Susieのホームへージを読ませていただいたのですが、設定の仕方がいまいちわかりません。
詳しく説明してはいただけないでしょうか。
No.4ベストアンサー
- 回答日時:
Susieプラグインの仕様については、以下のサイトのPlug-in Packageの中に
Spi_api.txtというAPIの仕様書があります。
http://www.digitalpad.co.jp/~takechin/download.h …
プラグインのリンクについては、この辺読むとわかるんじゃないでしょうか。
http://www.asahi-net.or.jp/~kh4s-smz/spi/use_spi …
デコード処理にはプログラムの知識はもとより、画像処理(というより信号処理に近い)の深い知識が
要求されます。
例えば
> 離散コサイン変換を用いて、空間領域から周波数領域へ変換する。(Wikipediaより抜粋)
という一文を読んで、「なるほどね」と思える程度には基礎知識をお持ちでないと辛いのではないかと思います。
先ほどの「初心者には難しい」という言い方はちょっとお気を悪くされたかもしれませんね。お詫びいたします。
#3さん、ご指摘ありがとうございます。
僕もどっかにあったはず、と思っていたのですが見つけられませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- C言語・C++・C# C言語 入力した値から0までの数を並べて表示するプログラミングを作りたいんですけど、自分でやってみた 2 2023/05/22 18:18
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
インクリメント演算子のみを用...
-
右ビットシフト
-
Windows formアプリで データグ...
-
Linux Cプログラミングを学ぶた...
-
プログラミングについて。 1つ...
-
Stuck
-
Notepad++の関数リスト表示でC...
-
Linuxでの開発環境構築や設定の...
-
[C言語]fputsとfprintfの違い
-
Notepad++の関数リスト表示の変...
-
システムエンジニアの適正について
-
どちのほうがすきですか?
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 配列と関数の練習問題
-
こんなことてしますか??
-
C++6.0でのresource.hについて
-
c言語
-
MACで動く実行ファイルをWindow...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
.NET(C#)でのスタックオーバー...
-
DXライブラリの画像の表示の仕...
-
拡張子.niiのファイルの開き方...
-
Excel VBA のstr()関数でエラー
-
QRコード作成ライブラリ
-
オブジェクトライブラリ
-
ライブラリParamQuery gridにつ...
-
ファイルの圧縮/解凍(Zlib)に...
-
Unsatisfied code symbol エラ...
-
動的ロードのメリット
-
コンパイル時のエラー
-
Googlemapのように画像を拡大・...
-
dxライブラリで作ったpcゲーム...
-
ライブラリ内の処理中における...
-
MakefileのLDLIBSとLOADLIBESの...
-
DxライブラリをVisualstudioを...
-
汎用機とUNIXの違いについて
-
LinuxでC言語で
-
ポップアップJqueryプラグイン...
おすすめ情報