2014年5月31日土曜日

DirectShowによるUSBカメラのリアルタイム画像処理

前回の記事から随分と経ったが、
OpenCLと組み合わせて処理させるため、

"必要に迫られて"  (←ここ重要)

プログラムの整理と、バグの修正をしたので、アップしておく。

MD5 | ff88eead0158e012f0ea8942b2585ea0 | 12.0 MB | 画像処理
http://ux.getuploader.com/ADMIS/download/43/Image_Processing_Ver03.00_00.zip

しかし、windowsプログラムの書き方が下手くそなせいで、
アクセス違反を回避するためにフラグを立てまくっているのは改善の余地がある。

……どうしたらいいんだ……。

以下、改善案のメモ

WinINet(InternetReadFile)によるファイル(HTMLも含む)のダウンロード

InternetReadFileを使ったファイルのダウンロード方法について、
あまり良いサンプルが無かったので上げておく。

http://nienie.com/~masapico/api_HttpSendRequest.html
を参考にした。

そのうち全体として構成したソースコードを上げたいのだが、
まだサンプルを書いていないので、
取りあえずダウンロード部分の関数だけ。

int Web_Downloader(
        char *Server_Host_Address,//ホストアドレス
        char *FileLocation,       //ファイルの場所
        char *Referer ,           //リファラ
        char *SaveDirectory ,     //保存先のディレクトリ
        char *SaveName            //保存する名前
);


例えば、
で紹介されているフリー素材の
をデスクトップにダウンロードしようとした場合、

Web_Downloader(
        "www.hmix.net",
        "music/c/c7.mp3",
        "www.hmix.net" ,
        "C:\\Users\\<<ユーザー名>>\\Desktop" , //.exeと同じディレクトリなら「"./"」
        "星寂の散歩道.mp3"                     //拡張子も必要なので注意
);


のようにする事でダウンロードして保存される。

以下ソースコード

2014年5月23日金曜日

COOKPADで一位のレシピをタダで見る方法。

COOKPAD
――――言わずと知れた料理のレシピ投稿サイト
でも、料金を払わないとランキング順に検索結果を表示してくれない。(´・ω・`)

そこで、Googleの画像検索からランキング上位のレシピを検索する方法を思いついたので実践。

OpenCLによるGPGPU

自分のブログの中で迷子になりそうなので記事を一覧にしておく。


開発中のメモ書き

GPGPUがやりたい。①(語句の説明。GPGPUのできる種々のプラットフォームの説明。OpenCLだけじゃない。)
http://the-united-front.blogspot.jp/2014/05/gpgpu.html

GPGPUがやりたい。②(開発環境の構築)
http://the-united-front.blogspot.jp/2014/05/gpgpu_15.html

GPGPUがやりたい。③(オフラインコンパイルについて)
http://the-united-front.blogspot.jp/2014/05/gpgpu_21.html

GPGPUがやりたい。④(処理時間の測定……)
http://the-united-front.blogspot.jp/2014/05/gpgpu_23.html



完成したコードの解説

OpenCLによるGPGPU入門① (OpenCLプログラミングの流れ。)
http://the-united-front.blogspot.jp/2014/05/openclgpgpu_23.html

OpenCLによるGPGPU入門①_2 (必要な情報の取得)
http://the-united-front.blogspot.jp/2014/06/openclgpgpu2.html

OpenCLによるGPGPU入門② (①で解説したコードの実装)
http://the-united-front.blogspot.jp/2014/05/openclgpgpu_5965.html

OpenCLによるGPGPU入門③_二次元配列による計算。
http://the-united-front.blogspot.jp/2014/06/openclgpgpu.html

OpenCLによるGPGPU入門④_GPUの計算ミスについて。
http://the-united-front.blogspot.jp/2014/06/openclgpgpugpu.html

OpenCLによるGPGPU入門②

OpenCLによるGPGPU入門①で説明したソースコードを貼っておく。

以下のコードでは、ファイルの更新状況によって、
オンラインコンパイルとオフラインコンパイルを自動で選択するようにしてある。

その時、ファイルの最終更新日時を取得するのに、Windows依存のAPIを使用している。

また置いてあるプロジェクトはVC++で作成したので、
他のOS(Windows以外のOS)では
改行コードが異なるため注意して欲しい。

以下コードと作成したプロジェクトのダウンロード。

OpenCLによるGPGPU入門①

OpleCLによるGPGPU 記事一覧

実際のコードは次の項目(OpenCLによるGPGPU入門②)を参照の事。

一応簡単な計算ができたので記事にまとめておく。
本当は本は使わない予定だったのだが、
結局図書館でOpenCLに関する本を借りてきた。
以下その二冊。

   OpenCL入門 - マルチコアCPU・GPUのための並列プログラミング
   http://www.fixstars.com/ja/news/books/opencl/
   サンプルのダウンロードページ
   amazon
   amazon(改訂版の方)
   借りてきたのは改訂前の古い版。

   OpenCL入門 GPU&マルチコアCPU 並列プログラミング
   http://www.shuwasystem.co.jp/products/7980html/2608.html
   サンプルのダウンロードページ
   amazon
   こちらの本の方が、説明が丁寧で入門者向きだとおもう。
   ただし、既に絶版。amazonではまだ買えそう。……どうしよう。


語句の確認
   GPGPUに関連する語句の説明(GPGPUがやりたい。①)
   GPGPUをする事の出来るプラットフォームはなにもOpenCLだけじゃない……と言う話。
開発環境のインストール
   開発環境の整え方および今回参考にした記事(GPGPUがやりたい。②)
   私の場合はAMDなので、
   AMD-APP-SDK-v2.9-Windows-64.exe
   をインストールした。

以下、OpenCL Cプログラミングの流れ。

GPGPUがやりたい。④

演算時間の測定

http://d.hatena.ne.jp/shiku_otomiya/20130218/p1
辺りを参考にする。

2014年5月22日木曜日

2014年5月21日水曜日

GPGPUがやりたい。③

オンラインコンパイルは上手く行った。だがしかし――――



OpenCLのオフラインコンパイルについてメモ。

コンパイル済みバイナリファイルを取り出す方法が分からない。

とりあえず
http://blogs.wankuma.com/episteme/archive/2010/08/16/192365.aspx
を参考にしてみる。
なんか少しやりたい事と違う……?

上記のサイトの参考URLを辿ると、
http://developer.amd.com/knowledge-base/


(以下、ちょっと↑のリンクから必要部分?をコピペ。)

2014年5月17日土曜日

ちょっとメモ

コメントアウトされた状態がデフォルトだと、
ダウンロードするデータ数が減って、サーバーへの負荷が低減されるのか?


例えば、ピザの店で、ピザに乗せる10種類のトッピングを自由に選べるとする。
注文がタブレットを使った形式で、デフォルトの状態だと全ての項目にチェックが
されていたとする。

さて、ここで問題。
トッピングの数が多いのは、デフォルトの状態で全てにチェックされている場合か?
それとも、全てチェックが外れている場合か?

当然答えは前者だと予測できる。




同じ事が、世界各国の臓器提供の状況にも表れている。
自分が死、あるいは脳死状態となった場合に、
自身の臓器を提供するかどうか?

当然、健康保険証などで、デフォルトが「提供する」となっている場合の方が、
圧倒的に臓器が提供される可能性が高い。


人間は、難しい判断や、多少面倒な事に遭遇すると、デフォルトを採用する傾向がある。

――――そしてこれは全てTEDの受け売り。

2014年5月15日木曜日

Bloggerはコメントを編集できない

ちょっとめも。

Bloggerはたとえ自分の投稿したコメントでも消去できない。

――――ので、ちょっと調べた。

GPGPUがやりたい。②

現在OpenCLについて勉強中。

とはいっても、いつも通り本を買う訳ではなく、偉大なるネットの師に教えを乞う。

とりあえず
AMD-APP-SDK-v2.9-Windows-64.exe
をインストール。

私の現在役に立っているサイトは、以下のサイトです。

2014年5月6日火曜日

GPGPUがやりたい。①

備忘録

GPGPUをやってみたい。
昔DirectShowでWebカメラの簡単な画像処理をやったが、
それをGPUで処理したらどうなるのかな?みたいな話。

2014年5月1日木曜日

備忘録

c++でのビット反転のやりかた。
方法は3つあります。


//方法1 NOT
BOOL Flag=0;
Flag = ~Flag;


//方法2 !演算
BOOL Flag=0;
Flag = !Flag;


//方法3 XOR
BOOL Flag=0;
Flag ^= 1;