- ベストアンサー
使用する言語(画像処理)
現在大学で情報系の研究を行っています。 「画像ファイルを読み込んでエッジを検出、エッジのラインで囲まれている部分を一つの領域として取得する」というプログラムを作りたいと思っています。 かなり分かりにくい説明だとは思うのですが、例を挙げますと・・・ 世界地図をスキャナで読み込む ↓ 取得した画像ファイルをプログラムに読み込ませる ↓ 各国の輪郭をエッジとして検出、輪郭以外は真っ白にしてモノクロ化 ↓ エッジで囲まれている部分(国の領土)をそれぞれ一つのオブジェクトとして認識できる。つまり、一枚の画像としてではなくそれぞれの国の領域を持つオブジェクトとして保持することができるようにする。 このようなプログラムを書きたいと思っています。しかし現在はC言語の知識しかなく、他にVisualBasicやJava、C++なども考えていますがどの言語がこのような処理に適しているのか分かりません・・・ どの言語でも書こうと思えば書けるものなのでしょうか?それともそれぞれの言語に得意分野があるのでしょうか?
- vandread
- お礼率75% (147/195)
- その他(プログラミング・開発)
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
データの加工部分は、C/C++ 辺りでしょうね。 C# だと、画面のデザインや操作系の実装など、楽したいところは C# の良さを活かしてサクッと開発、 データの加工部分は unmanaged のメモリブロックを確保してポインタを使って高速処理、 という感じで使い分けることができます。 C++/CLI でも良いかもしれません。
その他の回答 (3)
>読み込んだモノクロの画像ファイル(jpeg)などの輪郭線をオブジェクトとして保持することなんてできるのでしょうか 画像加工ソフトでは、輪郭検出・強調機能が用意されていますから、できるんでしょうね。 専門外なので私にはさっぱりですが。 輪郭線自体は、複雑な多角形と見なすことができると思うので、線の始点・終点の座標を連続的に保存すれば、可能そうな気はします(素人意見です)。 このあたりは、プログラム言語というよりコンピュータによる画像加工の話なので、その手の専門書を参考にされるのが良いでしょう。
- teapots08
- ベストアンサー率52% (32/61)
処理する方法によりますが、ものによっては octaveとかscilabだとC言語よりスマートに書けるような気がします。
お礼
octaveとscilabというのは初めて聞きました!! 調べてみます。ありがとうございます。
- snowize
- ベストアンサー率27% (68/245)
自分の経験としては、C/C++が一番低級なので低級な処理はやりやすかったですね……。何も考えずにピクセル単位で処理できるので。 既存のパターンの画像処理をやるのでしたらJavaやC#のライブラリなどを活用してもいいかと思います。目的とするものがあるかないかはリファレンスを当たってください。 何の言語でもいいのなら、参考する画像処理アルゴリズムの本で使用されている言語をそのまま使っちゃうってのもいいと思いますよ。 あまり詳しくなくてごめんなさい。
お礼
なるほど・・・CかC++がやはり一番やりやすいのですね。javaやC#の参考書も今日見てきたのですが画像処理に関してはあまり書いてませんでした。。 言語は限定しないのですが、今手元にVB、C++、C#の環境があるのでそれでできればベストだと思っています^^もうちょっと探してみようと思います。ありがとうございました。
関連するQ&A
- 画像処理をしたいのですが・・・。
C言語でjpgなどの画像データを扱って モード法やエッジを表したりなどの画像処理をしたいのですが、 どうやってプログラムをくめばいいのか分かりません。 どのたかプログラムを書いて教えてくれませんか?
- 締切済み
- C・C++・C#
- 画像処理プログラム
プログラムそう改良していいか全然わかりません 教えてください Sobel フィルタは垂直成分しか見ていないため、エッジ検出としては不十分である。任 意方向のエッジを検出するためには、図4 のような垂直方向と水平方向のオペレータを用いて各成分を抽出し、それらを合成する必要がある(図5 参照)。そこで、プログラムを次のように改良し、全方向のエッジに対応したプログラムにする。 <変更前> <変更後> c =1 2 1 cy=-1 -2 -1 cx=-1 0 1 0 0 0 → 0 0 0 -2 0 2 1 2 1 1 2 1 -1 0 1 畳み込み演算 畳み込み演算 L = c・img → Ly = cy・img, Lx = cx・img エッジの強さ エッジの強さ |L| → |L|=√Lx^2+Ly^2 Sobel.c http://codepad.org/UOh8nByI
- ベストアンサー
- C・C++・C#
- 画像変換処理に使用するプログラミング言語
プログラミング初心者です。 画像変換処理をプログラムしようと考えているのですが、JavaやC#など画像処理に向いていると思われる言語の種類が多くてどの言語でプログラムを組もうか迷っています。 経験者の方、是非ともアドバイスをお願いします。 具体的な画像変換処理ですが、画像を直交座標から極座標へ変換するといったことです。つまり、アスペクト比3:4等の画像を円形に変換したいのです。 使用する予定の言語はJavaを考えています。これを選択した根拠は特にないです。 質問事項としては、 (1),上記のような画像変換処理を行える言語は何か。 (2),(1)の中でプログラミング初心者が扱いやすい言語はどれか。 以上を教えていただきたいです。何卒、宜しくお願い致します。 P.S.添付データは、直交座標の画像で極座標変換を行った画像です。ちなみにGIMPというフリーソフトを使用しました。
- 締切済み
- その他(プログラミング・開発)
- 画像処理について
プログラミング初心者です。 今、画像処理のプログラムを作りたいのですが 何でやればよいか、迷っています。 処理は以下のとおりです。 写真画像(jpg)を開く /バック白、顔の画像 輪郭を抽出 その外側を(白の部分)を透明にする pngで保存 ファイル名に日時(0808281338)などをつける 指定のフォルダに保存 Cは少し書けるのですが、画像処理はやったことがありません。 またActionScript、MAXMSPはそこそこ使えます。 processingも少し。 この中でやりやすく、またほかのアプリとの連携なども考え よりよい方法がありましたらご教授いただけると幸いです。 また、よいライブラリなどございましたら、ぜひお教えください。
- ベストアンサー
- その他(プログラミング・開発)
- c言語の画像処理プログラム
画像処理を勉強している初心者です。これからいろいろな画像処理を勉強していく予定ですが、もっとも基本のc言語で画像を表示させる方法がわからないですが、プログラムのソースとやり方を詳しく教えていただけませんか?
- 締切済み
- C・C++・C#
- PictureBoxに絵を書き込む
輪郭を検出して合成写真に利用するプログラムを作っているのですが、輪郭が途切れてしまうことがあります。 そこで、PictureBoxのクリックした部分を認識して、輪郭を手動で補うというプログラムを作りたいのですが、どのようにしたらいいのでしょうか。 PictureBoxのMouseClickを利用するとドラッグで線を引いたりできず、MouseDownだとうまくいきません。 マルチスレッドというような感じにすれば良さそうですが、よくわかりません。 言語はC#です。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 画像処理についてですが・・・
今、画像処理をやっている最中なのですが、C言語を用いて画像の原点を任意の点へと移動する方法がわかりません。 画像処理の場合は、数学の原点と違い画像の隅が原点ということは知っているのですが、その原点をC言語を用いた場合はどのようなプログラムにすれば良いのでしょうか? どうか教えてください。お願いします。
- 締切済み
- C・C++・C#
お礼
データ加工はCなどの方がいいんですね!! 今日いろいろな参考書を見てきて思ったのですが・・・ 読み込んだモノクロの画像ファイル(jpeg)などの輪郭線をオブジェクトとして保持することなんてできるのでしょうか?読み込んだ画像は既に輪郭線も含め一枚の画像なわかですから、そこから抽出するということになりそうですが・・・CやC++、またはVBなどでそのような処理はできるのでしょうか?