Tech Sketch Bucket of Technical Chips by TIS Inc.

FileAPIを利用して簡単なWebアプリをつくる

Pocket

HTML5の周辺技術のFileAPIを使ってblobURLを利用してどのようなことが出来るか、簡単なWebアプリケーションを作成して少しばかり触ってみました。

S3上の画像をCORSを利用してCanvasで使う

Pocket

Amazon S3でCross-Origin Resource Sharing(CORS)というものが使えるようになっていたようなので、クロスドメインで取得した画像をCanvasで利用する目的で実際に使ってみました。

Three.jsで3Dスキャンデータを活用する

Pocket

以前の記事で3DScanしたデータをExportして利用をしたい。
3Dモデルの利用方法は幅広くありそうですが、今回はThree.jsを用いてWebGLを利用してブラウザ上で表示できるようにしてみます。

kinectで物体の3Dスキャンを試してみたよ1

Pocket

kinectなどの安価なDepthセンサを利用して3Dスキャンをしようというソフトウェアが世の中には存在します。
今回の記事ではkinectを利用した3Dスキャナーのソフトウェアを試してみました。

変化するDNSラウンドロビン

Pocket

DNSラウンドロビンによる負荷分散は古くから聞くキーワードでありますが、一昔前と現在とでは実際に行っている事が異なっているようです。今回はそんなことをまとめてみます。

nginxでS3へリバースプロキシ

Pocket

一般的に利用されるブラウザではJavaScriptによるクロスドメイン制約などセキュリティのための読み込みドメインの制約があります。
そのためクラウド上のファイルなどを利用するときに上記の制約を受けて何らかの対策が必要になる場合があります。
この対策の一つとしてリバースプロキシによって対応する方法があります。

DataURLとCanvasとドメイン

Pocket

HTML5の一要素として利用可能なCanvasのtoDataURL()メソッドからRFC2397("The data URL scheme")なども参照しつつ、DataURL形式の利用とドメインの制約などを取り上げます。

OpenCVからLabeling.hを使ってラベリング

Pocket

ラベリングって?

ラベリングとは画像の中で連結している画素の固まりをその集合単位で抽出するものです。
具体的な例でいうと以下のような画像があるものとします。

入力画像

図1:入力画像

これに対してラベリングを実施することで、ひとつの画素の固まりに対して同じ色(ラベル)を割り当てたものが以下の画像です。

ラベリングされた画像

図2:ラベリングされた画像

このようにラベリングによってひと固まりになっているものが抽出され、その単位で他の処理を実行することができます。

また、ラベリングに関しては英語ですが以下のWikipediaの項目が参考になります。
Connected-component labeling(Wikipedia)

OpenCVでラベリング

OpenCVでラベリングを試みたところ、OpenCVには標準でラベリングをするクラスが用意されていません。
【OpenCV】輪郭処理(cvFindContours)を使ったラベリング処理 があるようですが、本記事ではライブラリを利用する方向で検討しました。

ざっくり調べてみたところ、OpenCVからラベリングが出来そうなものとして以下のものがあるようです。

上記のうち、cvBloblibとcvBlobは、Windows上のVC++から利用するにはビルドなどが難しそうだったので、ヘッダファイルだけで利用可能でライセンス上利用しやすそうなlabeling.hを利用してみました。

Passive OS Fingerprint を node.js から利用してみた。

Pocket

Passive OS Fingerprint

インターネットは広く標準化されているTCP/IPプロトコルで通信をしていますが、インターネット上のすべてのコンピュータが同じ実装を共有しているわけではありません。
そのために、それぞれに実装されたプロトコルスタックの癖や、致命的ではないバグと言うべきような微妙な挙動の差異があります。

本記事はそのプロトコルスタックの癖やバグを解析し自前のデータベースと照合することで、通信相手のOS、ネットワーク環境(NAT/Proxyの有無)、起動時間などを受動的に取得するソフトウェアであるp0fの動作原理の説明およびその動作環境を作成します。

それに加えて、アプリケーションでの利用例としてアクセスしてきたマシンのOSなどの情報を表示するWebアプリケーションをnode.jsを用いて作成します。

Point Cloud Libraryからkinectを利用してみる

Pocket

Point Cloud Library(PCL)

Point Cloud Library は3D空間上の点の集合に対して、解析、操作、保存、表示などを提供するBSDライセンスのライブラリです。
PCLを利用してkinectの入力を取り扱うことで「現実空間」を「コンピュータ上の3次元の空間」に取り込むことが可能になります。
これによって以下の動画のように、通常のカメラ画像の情報に追加する形で、kinectからのdepthセンサの情報を利用することで特定の画素までの距離(depth)もリアルタイムに表現可能になります。


今回の記事ではPCLの紹介と、上記の動画を撮影するのに利用したPCLに付随するサンプルアプリケーションを動作させる手順の説明をします。