ページ 1 / 1
VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 20:37
by zep
VSexpress2012(以下VS)を用いて簡単な画像処理をしようと考えています
とりあえず準備として「白地の背景に黒単色で描かれている三角形、四角形、球形の画像」を配列に格納したいのですが
①画像フォーマットはなにが扱えるのか
②fopenや配列などの基本的な知識だけでいけるか
が知りたいです。
①については現在jpeg png gif bmpで考えているのですが、rawなどに変換する必要があるのかどうか
②については外部ツールやライブラリ(OPENGLやCV)に頼ることなく
VSと私自身が今もってる知識だけで実装可能かどうかが知りたいです。
どうかご教示下さい。
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 21:05
by h2so5
(1) C言語の標準ライブラリが対応しているフォーマットはありません。実装すればどんなフォーマットでも扱えます。
(2) フォーマットに関する知識が必要です。例えば、PNGの読み込みを実装するには
このような仕様を理解している必要があります。
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 21:08
by softya(ソフト屋)
前提として、何の言語を使うかがまず問題です。
VSexpress2012だとC言語 or C++ or C++/CLI or C# or VB などなどが利用できます。
使う言語によって対応が変わりますが、pngはC言語の場合外部ライブラリに頼るか自力で作成せざるおえません。
fopenと有るのでC言語だと思いますが、C言語の標準ライブラリでは画像は扱えないのでWindowsAPIの勉強は最低限知識として必要です。
C言語とWindowsAPIだとして回答すると
①画像フォーマットはなにが扱えるのか
bmpとjpgです。
②fopenや配列などの基本的な知識だけでいけるか
WindowsAPIの知識が必要です。
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 21:20
by みけCAT
softya(ソフト屋) さんが書きました:fopenと有るのでC言語だと思いますが、C言語の標準ライブラリでは画像は扱えないのでWindowsAPIの勉強は最低限知識として必要です。
それは違うと思います。
まず、質問者のやりたいことは
zep さんが書きました:「白地の背景に黒単色で描かれている三角形、四角形、球形の画像」を配列に格納したい
であり、ファイルに保存したい、とかファイルに読み込みたい、画像を表示したいという記述はありません。
よって、そのような処理は必要ないと考えられます。
ファイルを読み込むなら任意の画像を格納できるはずなので、わざわざ画像に書かれている図形を明示する必要性は低いと考えられます。
よって、三角形、四角形、球形の画像をプログラムで生成して格納したい、という解釈ができると思います。
もちろん、ファイルを読み書きしたい場合でも、C言語にファイルを読み書きする標準ライブラリがあるため、
WindowsAPIの勉強は「必要」ではないと思います。
画像を保存する場合、白黒画像なら、XBM形式が簡単だと思います。
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 22:03
by softya(ソフト屋)
確かに画像ファイルだけの処理で結果を画像ファイルに出すだけなら、C言語の標準ライブラリで可能ですね。
jpeg png gif bmp
の画像フォーマットの解析を自前で実装するならbmpが資料も多いので妥当な選択になると思います。
rawでも良いんですが。
>画像を保存する場合、白黒画像なら、XBM形式が簡単だと思います。
出力をXBMにすれと簡単なので、それも悪く無いです。
「XBM - テキストエディタで作れる画像ファイル」
http://sei.qee.jp/docs/graphics/xbm/
ただ、Windowsだと対応しているのはブラウザなどに限定のはず(私が知らないだけ?)
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 22:31
by みけCAT
softya(ソフト屋) さんが書きました:ただ、Windowsだと対応しているのはブラウザなどに限定のはず(私が知らないだけ?)
「など」の内容がわからないのですが、手元の環境(Windows Vista)で試したところ、
画像として読み込めたソフト
疾風、GIMP、Opera、OpenOffice.org Writer、OpenOffice.org Calc、OpenOffice.org Impress、OpenOffice.org Draw
LibreOffice Writer、LibreOffice Calc、LibreOffice Impress、LibreOffice Draw
画像として読み込めなかったソフト
Firefox、JTrim、@icon変換、Imagemagick(convert)、ペイント、Google Chrome、Sleipnir、Internet Explorer
Microsoft Word 2007、VLCメディアプレイヤー、PictBear、Microsoft Excel 2007
でした。むしろ対応しているブラウザの方が少ないようですね。
テストに使用したデータを添付します。
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 22:41
by みけCAT
BMPファイルの構造の参考になるサイトです。
プログラミング/BMPファイル仕様 - ルーチェ's Homepage
PNGファイルの構造の参考になるサイトです。
PNG ファイルフォーマット
IDATの中のデータの構造はこちら→
http://www.ietf.org/rfc/rfc1950.txt http://www.ietf.org/rfc/rfc1951.txt
無理に圧縮しようとせず、ヘッダ+(無圧縮ブロックのヘッダ+適切な長さに区切ったデータ)×必要な分+ハッシュ(Adler32)で大丈夫です。
JPEGの入出力はかなり難しいらしいので、省略します。
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 22:57
by zep
みなさまありがとうございます。少し捕捉を致しますと
使用言語はCです。
読み込んだ画像になにか処理を施して画像を生成、表示というところまでやるつもりはありません。
あくまで既存の画像を読みこんで配列に格納というところまでです。
みなさんの意見を見ると、どうやらCだけでできそうなのかな・・・?
ありがとうございました
Re: VSexpress2012を用いた画像処理
Posted: 2013年12月14日(土) 23:01
by みけCAT
今回は使わない縛りとのことですが、今後の為に一応ライブラリを紹介しておきます。
・
libjpeg
・
libpng
・
zlib (libpngを使うのに必要)