Archive for 5月, 2012

C言語による画像処理入門 その1

水曜日, 5月 30th, 2012
このエントリーを含むはてなブックマークはてなブックマーク - C言語による画像処理入門 その1


C言語をひと通り学ぶと、多くの人は画像処理だったりゲーム作りだったりと、目に見えるものを作りたくなるものです。しかし、画面上にHello, Worldを表示するのと、ウインドウを出すのとでは天と地ほどの開きがあるのです。Windowsでは、Windows特有の言語を使って100行近いコードを書かないと、ウインドウすら出てくれません。これでは、画像処理の勉強をしているのかWindowsプログラミングの勉強をしているのか分からなくなってしまいそうです。

たまに、C言語のみで画像処理を行なっている入門者用のサイトがあったとしても、やれSDKをインストールしろだとか、やれ自作ライブラリをリンクしろだとか、入門者には意味プーのことばっかり書いてあって心が折れてしまいそうです。また、世の中にはOpenCVというIntelが開発した天才的に楽ちんなライブラリがあるのですが、ほぼ完全にブラックボックス化されており、画像処理の低レベルな部分を勉強したい人には不向きです。(といっても実用ではモックを作るときなどには便利ですので結構利用しています)

 

この講座のコンセプト

そこで、この「C言語による画像処理入門」では、ライブラリ不要、Windowsプログラミング不要、ブラックボックスはなし、という条件のもとC言語のみで画像処理を行なって行きたいと思います。
 

これだけは持っておきたい参考書

さてさて、ここで少し参考書の話をしておきましょう。現在日本にはまともな画像処理の参考書が数冊しかありません。そこで先だって、その数冊のうち「これを知らなければモグリだろ」というくらい有名な参考書を1冊あげております。これから画像処理を頑張るか、という人は持っていて絶対に損はありませんよ!
 
 

ディジタル画像処理
ディジタル画像処理
posted with amazlet at 12.05.30
CGーARTS協会
売り上げランキング: 4299

 
 
この本では、2値化やエッジ抽出といった低レベルな画像処理から、Snakeや物体認識といった高レベルな画像処理まで画像処理の基本となる技術を幅広く網羅しており、まさに教科書的な参考書です。大学などで画像処理を勉強したいなら、この本に書いてあることはひと通りマスターしておいたほうが良いでしょう〜。画像処理をやる際には手元に欲しい一冊です。
 
 

ゲームプログラマになる前に覚えておきたい技術
平山 尚(株式会社セガ)
秀和システム
売り上げランキング: 10284

 
 
もう一冊のこの本は、タイトルからも分かる通りゲーム作りの本です。ゲーム作りの本なのですが、画像処理に大切なことが、本当にたくさーん詰まっています。たしかにキャッシュの話とか、浮動小数点演算の話とか入門者にはちょっとレベルが高い話もありますが、知っているか知らないかで後ほどボディーブローのように聞いてくる技術がもりだくさんです。画像処理という分野にかかわらず、幅広い分野でつかえる素晴らしい技術書です。何も言わずに買って下さい(笑)
 

まとめ

ということで、今回はこの「C言語による画像処理入門」のコンセプトと参考書の話で終わってしまいましたが、次回は、C言語で画像の読み込みをしてみたいと思います。

Xcode4でつくるOpenCV環境

月曜日, 5月 21st, 2012
このエントリーを含むはてなブックマークはてなブックマーク - Xcode4でつくるOpenCV環境


 
ここでは、Xcode4を用いてOpenCVのプログラムを組むために必要な環境の整え方を紹介します。用いるXcodeはXcode4.3、OpenCVのバージョンは2.3です。また、動作はMacOSX 10.7 Lionで確認しています。

 Xcodeのインストール

まずはじめに、Xcode4.3をApp Storeからダウンロードします。以前はiOS developper centerからダウンロードしていましたが、最近はApp Storeから入手できるようです。
 

 gccのインストール

コマンドライン用のgccがインストールされていない場合はXcodeのPreferenceからDownloadsタブへとすすみ、Command Line Toolsをインストールしておいて下さい。コマンドラインで使えるgccがない場合、homebrewでOpenCVをインストールしようとしてもエラーで停止してしまいます。
 

  

 homebrewのインストール

つぎに、OpenCVをインストールするため、パッケージ管理システムのhomebrewをインストールします。まずは本家からhomebrewをダウンロードします。
 

/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"

 

 OpenCVのインストール

homebrewがインストールできたら、つぎは以下のコマンドでOpenCVをインストールします。2012年5月現在では問題なくインストールできます。パッケージのインストールが完了すると、/usr/local/Cellar/opencv以下にOpenCVの実行に必要なインクルードファイルとライブラリファイルがインストールされます。
 

sudo /usr/local/bin/brew install opencv 

 

 Xcodeの設定

ここまでで、OpenCVはインストールできたので、次はXcodeからOpenCVを使う設定を行います。新規プロジェクトをCommand Line Toolとして作成します。プロジェクトが作成できたら、先ほどインストールしたOpenCVのインクルードファイルとライブラリファイルの場所をXcodeに教えてやる必要があります。


 
まずは、各ファイルの場所を指定します。Xcodeの左側に配置されているProject navigator上でプロジェクトファイルを選択し、TARGETS、Build Settingタブへとすすみ、Header Search PathsとLibrary Search Pathsの項目にどちらも/usr/local/Cellar/opencvと入力します。この際、入力欄の左側にあるチェックボックスにチェックを入れてリカーシブルにファイルが検索されるようにします。
 

 
最後にライブラリをリンクします。Build Settingsの横にあるBuild Phasesタブをクリックし、その中にあるLink Binary With Libraryesの行にOpenCVのライブラリをD&Dします。今回インストールしたOpenCVのライブラリは/usr/local/Cellar/opencv/2.3.1a/libにあるため、このフォルダに移動し(Finderで移動->フォルダへ移動を選択)必要なライブラリをXcodeにドラックして下さい。今回は以下の3ファイルをリンクしました。
 
・libopencv_core.dylib
・libopencv_highgui.dylib
・libopencv_imgproc.dylib
 

 
 
 

 OpenCV実験

実際にOpenCVがXcodeから使えるかどうか以下のサンプルプログラムを使って実験してみてください。うまくOpenCVがインストールできていれば、今流行の金環日食が見れることでしょう(笑)
 

#include <cv.h>
#include <highgui.h>

int main ()
{
    IplImage *img = cvCreateImage(cvSize(256, 256), IPL_DEPTH_8U, 3);
    cvZero(img);
    cvCircle(img, cvPoint(128, 128), 128, cvScalar(170,255,255), 3);
    
    cvNamedWindow("test");
    cvShowImage("test", img);
    
    cvWaitKey(0);
    return 0;
}