memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

webカメラを赤外線対応に

恐らくたくさんの方が参考にされたエントリー(かつて音楽と呼ばれたもの「赤外線カメラの作り方」)を参考に赤外線カメラを作成してみました。

実は失敗してしまったようなので(まだよくわからない)1つのサンプルとして残しておきたいと思います。

使ったWebカメラは上記のエントリーにある通り。プリンストンテクノロジーのPWC-130Uです。

上記のエントリーに従って分解します。解体前が以下の通り。

で、分解してみたのが以下。

で、下側のピンクがかったレンズが赤外線フィルターのようです。赤外線LEDにかざして遮光具合でわかりました。これはすぐに外れました。

で、白い粉々になりかけたレンズはどうやらフィルターではないようです。。。焦点をあわせるためのレンズのようです。これは外してはいけなかったんじゃないかな。。。?恐らく。(12/6追記 ピントが合わないのは単純にWebカメラのピントを手動調整していなかっただけでした。。。失礼しました。

openframeworksのサンプルプログラムopenFrameworks.appで動作確認してみました。ね?ぼけぼけでしょう?焦点があっていません。こんなにぼけてしまっては指先を写してもblobを検出できなさそう。。。

後日、もう一度チャレンジして確かめてみたいと思います。

マルチタッチデバイスの作り方はこちらを参考にしています。オランダの25歳の学生さんが善意で公開されている資料のようです。

論文は数あれど、こうした製作に関する資料は公開されていません(見つけることができない)。ありがたい。

テストのため大学近くのホームセンターで5mm厚のアクリル板を購入(上記の文書によると最低8mmないとだめらしい)。

シリコンゴムとして使えそうなものがなかなか見つからず。時間がなかったのでとりあえずシリコンゴムのコーキング材を購入。注意書きをよくよく読むと「アクリルには使用できません」と。。。今度ゆっくり探そう。。。

あとは赤外線透過フィルター。これがなかなか手に入らない。大学に出入りしている業者さんに見積りをお願いするとメーカーでも在庫なしとか。amazonでは買えるようなんですけどね。。。

とりあえずホームセンターで使えそうなものを探してみました。で、目についたのがカーフィルム。日焼け防止のため紫外線をカットするのが主目的ですが、少なくとも可視光はカットできるんだから。。。試しに購入してみました。

赤外線LEDで照らしてみると。。。赤外線はばっちり透過しています。1枚では薄いので8枚くらい重ねるといいかんじです。折り畳んで丸く切り抜いてWebカメラの中にセットしました。接着剤はレンズに付着しそうで怖いのではさみこんだだけです。

日曜DIYにいかがですか?Webカメラさえ購入すればソフトウェアは無償です。あとはやる気次第ですね。

jruby + processing + interactive unit eB-P でお絵描き ver 0.01

昨日の続きです。

とりあえず動くものができました。以下のような感じです。

プログラムはごくわずかです。稚拙ですがこれも晒します。


require "java"

include_class "processing.core.PApplet"

class Point
def initialize(x, y)
@x = x
@y = y
end
def x
@x + rand(6) - 3
end
def y
@y + rand(6) - 3
end
end

class Sketch < PApplet
def setup
size 400, 400
# smooth
stroke_weight 3
@points = []
@pl = []
end
def draw
background 0
tmp = nil
for i in @points
if tmp != nil then line i.x, i.y, tmp.x, tmp.y end
tmp = i
end
for i in @pl
tmp = nil
for j in i
c = color(random(255),random(255),random(255))
stroke c
if tmp != nil then line j.x, j.y, tmp.x, tmp.y end
tmp = j
# ellipse j.x, j.y, 3, 3
end
end
end
def mouseReleased
@pl << @points
@points = []
end
def mouseDragged
@points << Point.new(mouseX, mouseY)
end
def keyPressed
@points = []
@pl = []
end
end



JFrame = javax.swing.JFrame
frame = JFrame.new "Sketch"
applet = Sketch.new
frame.content_pane.add applet
frame.default_close_operation = JFrame::EXIT_ON_CLOSE
applet.init
frame.pack
frame.visible = true

ちょっとしたプログラムなんですが、JRuby+Processingではデバッグが結構大変でした。

こまかいエラーメッセージが表示されずエラー箇所のメソッド名だけ表示されます。

やはりProcessingに関してはJavaで作った方が効率的なように感じました。

こちらのプログラムもちゃんと最後まで育てたいですね。。。狙いは色々です。作りながら見定めたいです。

  • 書いた文字が(やわらかく)動く。
  • 奇麗化する。
  • 近しい文字がくっつき勝手にグルーピングされる。
  • (やわらかく)整列する。

どちらかというと、業務支援や作業支援というよりは、発想支援や記憶支援や理解支援?などに役立つような操作方法/見せ方を研究したいと考えています。