- ベストアンサー
使用する言語(画像処理)
現在大学で情報系の研究を行っています。 「画像ファイルを読み込んでエッジを検出、エッジのラインで囲まれている部分を一つの領域として取得する」というプログラムを作りたいと思っています。 かなり分かりにくい説明だとは思うのですが、例を挙げますと・・・ 世界地図をスキャナで読み込む ↓ 取得した画像ファイルをプログラムに読み込ませる ↓ 各国の輪郭をエッジとして検出、輪郭以外は真っ白にしてモノクロ化 ↓ エッジで囲まれている部分(国の領土)をそれぞれ一つのオブジェクトとして認識できる。つまり、一枚の画像としてではなくそれぞれの国の領域を持つオブジェクトとして保持することができるようにする。 このようなプログラムを書きたいと思っています。しかし現在はC言語の知識しかなく、他にVisualBasicやJava、C++なども考えていますがどの言語がこのような処理に適しているのか分かりません・・・ どの言語でも書こうと思えば書けるものなのでしょうか?それともそれぞれの言語に得意分野があるのでしょうか?
- みんなの回答 (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#の環境があるのでそれでできればベストだと思っています^^もうちょっと探してみようと思います。ありがとうございました。
お礼
データ加工はCなどの方がいいんですね!! 今日いろいろな参考書を見てきて思ったのですが・・・ 読み込んだモノクロの画像ファイル(jpeg)などの輪郭線をオブジェクトとして保持することなんてできるのでしょうか?読み込んだ画像は既に輪郭線も含め一枚の画像なわかですから、そこから抽出するということになりそうですが・・・CやC++、またはVBなどでそのような処理はできるのでしょうか?