RubyでSVMをつかう [rb-libsvm]

近年大人気(?)のSVM[Support Vector Machine]を、Rubyから簡単に使う方法です。SVMのライブラリとしてはlibsvmが著名です。これをRubyから触るためのgemは複数ありますが、ここではrb-libsvmを使いました。環境はDebian wheezy, Rubyのバージョンは1.9.3p19…

積分画像(Integral Image)による、Sauvolaの手法の高速化

先日の記事にて、適応的二値化の一手法であるSauvola[1]の手法について紹介しました。閾値の計算式は単純で、実装は割と簡単です。しかし1ピクセルごとに周囲の平均・標準偏差を求めるのは、結構コストがかかる処理です。これを積分画像(Integral Image)に…

Google Apps Scriptで、Googleカレンダーを調べる

最近個人的にアツいのが、Google Apps Scriptです。Google Docsでオンラインでスクリプトを記述でき、そこで実行してGoogleの様々なサービスにアクセスできたりします。かなり夢が広がります。今後何回か扱っていきたいと思っていますが、まずは簡単な導入の…

OpenCvSharpをつかう その15(適応的閾値処理)

適応的閾値処理 (Adaptive Thresholding) を使うサンプルです。始めからぶっちゃけますと cvAdaptiveThreshold を使え、という話になりますが、本記事はそれだけでは終わりません! OpenCvSharpでは、OpenCV標準では用意されていない適応的閾値処理を、こっ…

ruby-tesseract を使う

このブログ、.NET Frameworkべったりですが、実はわたくし、Ruby歴の方が長いです。 初めてのRuby記事を書きます。フリーのOCRライブラリ「tesseract」をRubyから触れる「ruby-tesseract」の紹介です。Linux(Debian/Ubuntu)という前提です。https://github.c…

OpenCvSharpをつかう その14(Debian wheezyで動かす)

3年ぶりの「OpenCvSharpをつかう」シリーズ再開です! OpenCvSharpをLinuxで動かすことについては、大昔に断片的に書きましたが、最後まで通しで書いてみます。記憶を頼りに書いているので、本当は詰まった箇所が抜けているかもしれません。 その1 その2 そ…

ほげちゃん

今日は本の紹介。この本を知っていますか?ほげちゃん作者: やぎたみこ出版社/メーカー: 偕成社発売日: 2011/06/02メディア: ハードカバー クリック: 5回この商品を含むブログ (15件) を見るあるぬいぐるみのおはなしです。表紙を見ると「なんじゃこりゃ?」…

IntPtr.Add, IntPtr.Subtract

C#

いつの間にこんなメソッドが!.NET Framework 2.0ばかり使っていたので、長いこと気づきませんでした。みんなのつよーい味方、IntPtr構造体に、AddメソッドとSubtractメソッドができていました(どちらもstatic)。また、同じ機能で+と-の演算子としても定義…

はてなダイアリーから移行しました

移行 最近周囲からの再開圧力がほのかに増してきており、2年半ぶりの更新を決意。ついでにはてなブログに移行しました。 手順はすごく簡単です。はてなダイアリーからのリダイレクトまでしてくれます。 http://help.hatenablog.com/entry/import RPGの主人公…

Microsoft Chart Controls を使って東京電力の電力使用状況をグラフ化する

C#

.NET Framework 4から導入されたSystem.Windows.Forms.DataVisualization.Charting名前空間にあるMicrosoft Chart Controlsを使うと、簡単にグラフを作成できます。(.NET Framework 3.5でも、このページから必要なものを落としてきてインストールすれば使え…

MPOファイルのヘッダを解析しJPEGに変換する

C#

ニンテンドー3DSなどステレオ3Dカメラで撮影したMPO画像ファイルについての話の続きです。このファイルはJPEGが単純に複数枚連結したような構成になっており、先日の記事ではファイルの全バイト中からJPEGの開始数バイト(SOIなど)を探索することで切り分け…

スレッドセーフなIOの扱い

C#

マルチスレッドな処理では、複数のスレッドから1つのリソースにアクセスするときがなかなか厄介です。排他処理を行わないとタイミングによってはおかしくなってしまいます。

エンディアンを指定できるBitConverter

C#

バイト配列から任意のプリミティブ型(int, floatなど)に変換するにあたって便利なのがSystem.BitConverterクラスです。しかしこのクラスは自分の環境におけるエンディアンで処理されてしまいます。おそらく多くの環境はリトルエンディアンですが、この場合ビ…

MPOファイルをJPEGに変換する

C#

ステレオ3Dカメラ搭載のニンテンドー3DSが発売になり、これによってステレオ3Dカメラはいくらか普及するのかもしれません。ステレオということでレンズが2つ付いており、それぞれで撮影された複数の画像が .mpo という拡張子のファイルとなってまとめて保存…

.NET Framework(C#)のLogger

C#

どういうわけか今までログについてあまり考えてきませんでしたが、最近少し需要を感じるようになりました。きっと用意されているはず、と調べると案の定いくつかありました。ごく簡単にまとめておきます。

OpenCV 2.2で変更・追加されたもの (C Interface)

C形式の関数・構造体がOpenCV2.1からどれだけ変わったかをまとめておき、ラッパー開発の指針にしようと思います。例によって多分どこか抜けています。また、C++の方はまとめる気はありません。公式の変更点はこちら。実際のところこちらに全て載っています。…

Windows7のVirtual PCにUbuntu 10.04を入れる

以前に [id:Schima:20091111#1257943149] にて、Ubuntu9.10をWindows7のVirtual PCの仮想マシンとしてインストールする方法をまとめました。ところが、Ubuntu10.xになって以降はそう簡単にはインストールできなくなったようです。昔からVirtual PCと(大抵の…

unmanagedクラスにmanagedなメンバを持たせる

以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではそ…

WriteableBitmapの画素をポインタから操作する

WPFには様々なビットマップのクラスがあってややこしいですが、System.Windows.Media.Imaging.WriteableBitmapクラスは低レベルな操作ができるので、他の環境とのやり取りもしやすく私好みです。今回はWriteableBitmapの画素値にポインタで直接アクセスしま…

Visual Studio 2010の標準ツールバーにプラットフォーム選択を表示させる

自分の環境では、従来のバージョンでも表示されていましたし、VS2010でも表示されていたと思うのですが、この度OSごと再インストールしたら表示されなくなってしまいました。 以前は下図のように「x86」という部分が表示されていました。ここでプラットフォ…

Roland SK-500 を Windows7 64-bit に導入する

突然の話でしたが、ありがたいことにもらいうけてしまいました。http://www.roland.co.jp/products/dtm/SK-500.htmlドライバは一見Windows 7のものは用意されていないのですが、Vistaのものでなんとかなります。その導入の備忘録です。

OpenCV 2.1の関数 CとC++の対照表 (未完)

OpenCVの関数の利用は、これから徐々にC形式からC++形式へと移行していく感じがします。今までC形式の関数に慣れ親しんだ人がC++でやろうとしたとき、大抵は関数の名前が似ていてすぐわかるのですが、全然違うものもあり、そもそも対応するものが無かったり…

あみだくじ

ある人の課題を手伝ったのでメモ。下のあみだくじで、「上の 1, 2, 3, 4, 5 がそれぞれ下の同じ数字に行くように横線を引きなさい」という問題でした。パッと見で全然わからなかったのですが、線形代数の問題とのことで、置換とか互換とか、そのあたりの「対…

Ubuntu 10.04 で Mono 2.63 を使う

Mono2.6 は C#4.0 が(不完全ながら)サポートされているようなので、Ubuntu 10.04 (Server Edition) にて試そうと思いました。しかし、 $ sudo apt-get install mono-develで導入されるのは今のところ mono2.4 です。こんなときはソースからがんばってビルド…

memcpyをC#で

C#

自分がC# (.NET Framework) を使っていて一番の不満かもしれないことの一つに、memcpy (CopyMemory) が無いことが挙げられます。普通はCopyMemoryをDllImportすれば解決ですが、Linux等への移植性まで考えるとWin32APIを使うわけにはいきません。以下では、D…

OpenCvSharpをつかう その13(導入時のエラーについて)

13回目にして今更導入時の不具合とはなんとも変な話ですが、OpenCvSharpが動かないというケースを時々耳にします。はっきり聞いているわけではないのでよくわからないのですが、わかる限りの解決策を書いておきます。どうやらBadImageFormatExceptionが多い…

Go言語からC言語の関数を呼び出す

Go

随分久しぶりの更新です。どうにか進路は決まったらしいです。 さて、つい最近登場し注目を集めたGo言語ですが、C言語のライブラリをリンクして呼び出せる機能があり、この機能を使えば、Cで書かれたライブラリのGoラッパー(Goバインディング)が作れます。わ…

OpenCvSharpをつかう その12 (ラベリング)

【注意】 この記事の内容は古く、最新のOpenCvSharpでは動作しません。記録としてあえて残しますが、ラベリングについては以下の記事を参照してください。 http://schima.hatenablog.com/entry/2014/01/19/120540 その1 その2 その3 その4 その5 その6 その7…

多次元配列の速度比較

C#

行列のような2次元配列のデータをC#上で表現するとき、それにはいくつか方法があります。それぞれの処理速度を比べてみます。

デザインを変更

2度目のイメチェン(って死語?)。幅が固定ではないものにしようと思いました。 そういえば、結局良いタイトルが思い浮かばず、デフォルトの「Schimaの日記」のままここまできてしまいました。今更変えようとも思いませんが、なんかいい名前付けたかったな…