No.2ベストアンサー
- 回答日時:
画像処理と言っても様々な種類があります。
動画、静止画。
静止画の中でもベクトル画像かラスタ画像かで扱いは違います。
比較的取り扱いの容易なラスタ画像であっても2値画像(白黒)、グレースケース画像、インデックス画像、ハイカラー/フルカラー画像では違いがあります。
さらに、フルカラーラスタ画像にはインターリーブ形式とプレーンマップ形式があります。
そして、その上RGB、CMY,CMYKなどの色表現形式の違い。
最後に画像データを納めるファイルフォーマットの違いがあり、ファイルフォーマットごとに付加機能(透過、プログレッシブ、圧縮など)があります。
処理内容によって向いている画像形式と向いていない画像形式があります。
たとえば「RGB各要素ごとに近傍画素の平均を取る」という処理はプレーンマップ形式よりインターリーブ形式の方が扱いやすい。
専門学校で画像処理プログラミングを教えていたときには「Adobe Photoshop Plug-in」を題材にしていました。
理由は
・ファイルフォーマット、ファイルが持つ機能を気にしなくて良い
フィルタプラグインの処理対象は「ウィンドウに表示された画像の選択部分」なので、ファイルやデバイスなどの「画像処理の本質でない部分」を無視できます。
・処理対象とする画像を細かく指定することが出来る
「RGB24bit画像しか相手にしない!」とか「フルカラー画像なら全部サポート」などと言った指定が可能で、対応していない画像についてはPhotoshopがフィルタメニュー上で「対象外」であることを示してくれます。
・ユーザインタフェースはPhotoshopが代行してくれる
画像全体を対象にする処理ばかりではありません。
処理対象範囲の指定など、「画像処理の本質」でない部分をPhotoshopに任せることが出来ます。
Photoshopは適切なマスク処理を接してくれるので、プラグインは細かいことを気にしないで処理に専念できます。
自分でマスク処理をしたいときは、「勝手にマスク処理をするな!」と要求することも出来ます。
・インターリーブ形式、プレーンマップ形式を指定することが出来る
処理アルゴリズム的に「画像データはインターリーブ形式が都合がいい」とか「どうしてもプレーンマップ形式じゃないとダメ」と言う場合、Photoshopに欲しい画像の形式を要求しておくと、要求された形式に変換してくれます。
つまり「余計なことはいっさい考えなくていい」というすばらしい環境です。
Photoshopを持っていなくても、Photoshop Plug-in Interface互換のPlug-inインターフェースを持つ画像処理アプリケーション(Paint Shop Proなど)でもPhotoshop Plug-inは使うことが出来ます。
Photoshop SDK(プラグインを作るための解説、ライブラリ、サンプル集)はPhotosop6.5対応までの物なら無償でAdobeのWebサイトから入手できます(解説は全て英語)。
Photoshop7対応の日本語版Photoshop SDKは有償(めっちゃ高い!)です。
chaborinさんは興味のある分野に関して深く探求される方だと感じましたので、わざと専門用語だらけにしました。
画像処理技術者としてはこの程度の知識は必須なので頑張って調べてください。
最後にどうしてもファイルから処理したい場合について…
BMP形式はWindowsのDIBを理解していないとキツイです。
画像が上下逆さまに入ってたたり、色表現範囲に不条理な制限があったり。
Win32APIの勉強としてならBMPでもいいと思いますが、私ならTIFFを対象にします。
データ並び、圧縮方法、画像フォーマット(インターリーブ、プレーンマップ)、色表現形式(RGB,CMYなど)などの要素の勉強には各要素ごとにTAGが用意されているTIFFが最適です。
次の候補はPNGかな。
Win32APIを学ぶのではなく、画像処置を学ぶのならTIFFかPNGが最適でしょう。
JPEGもライセンス問題があるので、今から勉強するならGIF(ライセンス期限が迫っている)の方がいいと思います。
詳しい説明ありがとうございます。
知らない用語がいくつも出てきて、勉強不足を痛感しました。
>最後にどうしてもファイルから処理したい場合について…
といわれて戸惑ったのですが、私は画像処理といえばファイルから処理する(Cの中に画像ファイルを読み込んで、いろいろな処理を施す。でいいんですよね?)ものが一般的だと思ってました。
Photoshop Plug-inというものがまだわかってませんが、これを使うと便利だということはわかりました。
これはCにも取り入れることができるのでしょうか?(VC++6.0を使ってます。)
いろいろ調べてみようと思います。
No.10
- 回答日時:
こんにちは。
ファイルの読み込みはSusieプラグインを利用すると簡単で、多種多様なファイルが読み込めます。
http://www.digitalpad.co.jp/~takechin/
http://www2f.biglobe.ne.jp/~kana/develop.html
No.9
- 回答日時:
>BMPは少々難しいと聞いています。
>JPEGが身近に知っているので、JPEGでやっていきたいです。
補足ですが、
JPEGの方が格段に難しいかと思います。
簡単に読み込めるのは他人が作ったライブラリーを
使用するからです。
それにVC++6.0で直接jpegデータを書き込むライブラリー
やクラスは標準では無かったと思います。
JPEGについてのサイトも紹介しておきます。
http://plaza27.mbn.or.jp/~inetwada/jpeg1.htm
http://hp.vector.co.jp/authors/VA021872/proctalk …
http://www.kamakuranet.ne.jp/~smo/proctalk/proct …
No.8
- 回答日時:
>BMPを読み込むにはどのようにしたらよいのでしょうか?
普通にバイナリで読み込むだけです。
fopenとかfstreamで。
「BMP ヘッダ」で検索すれば
関連サイトはいっぱい出てきます。
参考URL:http://www.kk.iij4u.or.jp/~kondo/bmp/
No.7
- 回答日時:
Windows 上でのプログラミングでしたら、BMPを理解してしまうと応用が利きますので、私もそれをお勧めします。
ファイル構造は、基本的には
BITMAPFILEHEADER + BITMAPINFO + ビットデータ
になっているので、それぞれの構造体について検索エンジンなども併用して理解を深めていけば、読み込みと書き込みは、それほど難しくないと思います。
(無圧縮のとき以外は簡単ではないですが・・・)
どんな画像フォーマットを使用するにしても、画像処理そのものはメモリ中で無圧縮のデータを扱うことになるでしょうから、画像処理がメインであれば、画像フォーマットは無圧縮の簡単なものでいいと思います。
JPEGなどは、画像を圧縮する為のものであって、WEBで配信するなどの目的には適していますが、入力も出力もロスありのJPEGにしてしまうと画質が下がってしまい、画像処理の結果を目で見て正しく判断できなくなります。
No.5
- 回答日時:
#3:zuntacです。
参考資料にあげた本はJPEGエンコーダ、デコーダを実際のCのソースコード付きで解説しています。これは実際に動くプログラムなので、実例としては最適かと思います。まずは、このプログラムの中身を充分に理解することで広範囲に画像処理に必要な知識が身に付くと思います。ここで得られた知識を元にして、ほかのPNGやGIFなどについてもさらに情報を集めて勉強するのが得策でしょう。例えば、このエンコーダ、デコーダの拡張機能としてPNGやGIFを扱う機能を実装してみるなどして応用範囲を広げるなどしてみてください。Good luck!またまたありがとうございます。
1つの形式が扱えれば他の形式も理解しやすくなりますでしょうか???
まずはJPEGやってみますね。
No.4
- 回答日時:
ごめんなさい!
今調べたら、Adobe.comからPhotoshop6.5SDKのダウンロードサイトが無くなってます。
どうやらAdobe Solutuin Network会員(会費有料)しか使えないみたいです。
昔はAdobe Photoshopに付属していたんですが、Photoshop7.0からは付属もなくなってます。
基本的にプラグインの概念は同じなので、他の画像処理ソフトのプラグインで画像処理を学ぶことは可能です。
Windows向け画像処理アプリケーションのプラグインSDKはほとんどの場合、Visual C++6.0対応です。
たまに、バージョンの古いVC++を要求してくる物がありますが、Visual C++は旧バージョンのプロジェクトを変換して新バージョンに対応させる機能を持っているので大丈夫です。
またまたありがとうございます。
プラグインSDK.....。
またわからない言葉が出てきましたねぇ。
しらべます。
プラグインというのはどのような位置にいるものなのかがよくわかってないんですよね。
No.3
- 回答日時:
画像処理についての基本的な勉強をかなりする必要があります。
C言語を一通りやってみただけでは、大きな処理を行うプログラムを書く、つまり機能別にいくつかのファイルでモジュールを構成するというような手法が身に付いていないと思います。画像ファイルの入出力、画像の処理の理論、記述テクニックなどの修得も必要です。参考URLにあげた本はこれらの技術の勉強に最適です。ここではJPEGファイルの入出力、JPEGによる圧縮、解凍に必要なテクニックが全てCのソースコード付きで解説されてます。初めてだとチトつらいかもしれませんが、これがものにできればかなりの技術が身に付きます。頑張ってください。参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/4797306 …
本の紹介ありがとうございます。
ファイル形式についてはJPEGが扱えるようになれば、ほかのPNGやGIFなども扱えるようになるのでしょうか?
とりあえずは「画像ファイルの入出力」をできるようにしたいので、紹介してくださった本を探してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- Excel(エクセル) エクセルVBA 特殊フォルダのパスを取得の方法を教えてください 3 2022/09/02 13:14
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- Excel(エクセル) Excelで2つの条件のうちどちらかにあてはまるときの数式を教えてください。 5 2023/01/19 16:58
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Visual Basic(VBA) 【VBA】もし、値が0だったら左のセルと合わせて削除したい 3 2023/04/20 10:12
- 数学 数学 数と式 5 2023/04/08 15:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
Excel ユーザーフォームで表示...
-
HTMLで画像をポップアップで表...
-
画像のピクセルデータの取得
-
UWSC 画像認識で条件分岐
-
Excelで画像URLを1つずつセル...
-
jqueryスライダーを2段でスライ...
-
VB6でプリントスクリーンを無効...
-
UWSCの色判定
-
トリミングで表示した画像をク...
-
vb.net 画像の透過について
-
【WPF】画像の切り替え
-
PowerPoint VBA で画像の鮮明度...
-
OpenCVで出力を24bitのbmpにす...
-
Leafletで画像をon、offさせる...
-
C# Excelのsheetに表示された...
-
jQuery . プログラミング 助け...
-
Webデザインについて。 CSSとHT...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで画像URLを1つずつセル...
-
jqueryスライダーを2段でスライ...
-
「using Windows」でエラーが出る
-
【EXCEL VBA】ダブルクリックで...
-
VBA シート毎に画像挿入
-
jQuery . プログラミング 助け...
-
画像が分割されて切り替わる、...
-
背景画像の繰り返しについて
-
スマホでサイトの画像を長押し→...
-
VBAのユーザーフォームのイメー...
-
HTMLで画像をポップアップで表...
-
EXCEL VBA 複数のImageコントロ...
-
画像を表示するには
-
UWSC 画像判定と条件分岐について
-
画像処理したBitmapをピクチャ...
-
PowerPoint VBA で画像の鮮明度...
-
画像のビット数を変更する方法
-
Excel ユーザーフォームで表示...
-
uwscの画像認識に失敗します。
-
UWSCの色判定
おすすめ情報