画像のラベリングのサンプル。
画像のラベリングのスタンダードな手法は 2 つある。
1. 再帰処理
2. 接続表
1. は注目画素から探索範囲を膨張して、背景画素や探索範囲の境界に到達したら収束させる処理を、全ての画素に対して行う。
背景画素が少ない場合の探索では、画素×画素程度の計算量が必要になりそう。
2. は探索は全画素数の2~3倍程度で良さそう。1回目は、注目画素が抽出した物体画素だった場合に、4または8近傍を探索して、ラベル付けされていなければ ラベル番号n +1を振り、ラベル付けされていれば ラベル番号nを振る処理をラスター処理する。
2回目は、各画素の4または8近傍に対し、自分自身のラベルnよりも小さいラベルmが降られているか、振られていれば、nをすべて、小さいラベルmに置き換える。この処理をラスター処理する。
最後は、ラベルを小さい方から順に詰める処理をラベルの中で行う。
以下、コード。
2014年1月26日日曜日
2014年1月12日日曜日
2013年11月17日日曜日
AngularJS IN DART
dart には angularjs が移植されている。
angularjsの素晴らしさを整理してみる:http://pochi.hatenablog.jp/entry/2013/11/13/002504
angularjsのdartへの移植が進行中:http://www.infoq.com/jp/news/2013/06/angularjs-dart
クロージャ:http://dqn.sakusakutto.jp/2009/01/javascript_4.html
angularjsの素晴らしさを整理してみる:http://pochi.hatenablog.jp/entry/2013/11/13/002504
angularjsのdartへの移植が進行中:http://www.infoq.com/jp/news/2013/06/angularjs-dart
クロージャ:http://dqn.sakusakutto.jp/2009/01/javascript_4.html
Google Dart 事始め
Google Dartの正式版がリリースされたので使ってみる。
https://www.dartlang.org/
http://api.dartlang.org/docs/channels/stable/latest/
DART入門:http://zenback.itmedia.co.jp/contents/www.sssg.org/blogs/hiro345/archives/10994.html
What is Dart:http://sitekamimura.blogspot.jp/2013/09/dart-what-is-dart-kindle-kathy-walrath.html
※カスケード演算子
http://www.cresc.co.jp/tech/java/Google_Dart/DartLanguageSpecification_about.html
[プロジェクト名].html
その他に、packages/browserディレクトリが出来て、中に以下のファイルができる。
dart.js
hiterop.js
編集するのは、「.dart」の拡張子を持つ dart ファイル。後は、htmlとcssを編集する。C系と同じようにエントリーポイント(main)からプログラムが実行される。
dartを編集してから、htmlを右クリックして「run as JavaScript」を実行するとdart2jsが動いてJavaScriptが生成される。
以上。ワクワクする仕様。何つくろうかな。
https://www.dartlang.org/docs/tutorials/add-elements/#copy-app
公式ページ
https://www.dartlang.org/
APIリファレンス
1.0リリース前のコードからは変更も多数。最新のAPIをチェックすべき。http://api.dartlang.org/docs/channels/stable/latest/
参考サイト
DARTことはじめ:http://usagi.github.io/intro-dart/#/DART入門:http://zenback.itmedia.co.jp/contents/www.sssg.org/blogs/hiro345/archives/10994.html
What is Dart:http://sitekamimura.blogspot.jp/2013/09/dart-what-is-dart-kindle-kathy-walrath.html
言語仕様
- クラスを使う
- クラスの外側にメソッドが記述可能
- オプションと引数:Javaと違って省略引数可能。C++のように後ろの引数を省略 or 引数に名前をつけて省略
- 文字列インターポレーション:php的に、"Hello, ${name}"とできる
- マルチライン文字列: ($s=<<END;) のような文字列リテラル
- 動的メソッドハンドリング:実行時にメソッドがあるか確認する
- カスケード演算子: JavaScript の with。
- オプショナルな型:小さなアプリなら型をかかない、ちゃんとしたアプリでは型をかく、が選べる
- レキシカルスコープ:{}が識別子のスコープ。クロージャ(Java8で実装予定のλや無名関数で実現する関数オブジェクトの一種)やローカル変数キャプチャもOK。
- ライブラリ:Pub(オープンなリポジトリで便利)
- Isolate:マルチスレッドでお互いのメモリにアクセス出来ないので安全
Javaで出来て、Dartで出来ないのは、メソッドのオーバーロード不可能。intが初期値を代入しないとnullになる。継承は1つまで。
※マルチライン文字列リテラル(以下だったらENDで囲まれた文字列の改行を維持する)
my $s = <<'END';
aaaa
iiii
uuuu
END
※カスケード演算子
with (document) {※邦訳版
//このブロックの中ではdocument.を省略できる
var hoge = getElementById('hoge');
...
}
http://www.cresc.co.jp/tech/java/Google_Dart/DartLanguageSpecification_about.html
コードのサンプル
コード動かす
トップページから必要なSDKをダウンロードして解凍すると、Dart Editor (もとはEclipse)が入っているので起動する。HelloWorld
新しいプロジェクト(WebApplication)を作成すると、webディレクトリの配下に以下のファイルが用意される。
[プロジェクト名].css
[プロジェクト名].dart[プロジェクト名].html
その他に、packages/browserディレクトリが出来て、中に以下のファイルができる。
dart.js
hiterop.js
編集するのは、「.dart」の拡張子を持つ dart ファイル。後は、htmlとcssを編集する。C系と同じようにエントリーポイント(main)からプログラムが実行される。
dartを編集してから、htmlを右クリックして「run as JavaScript」を実行するとdart2jsが動いてJavaScriptが生成される。
構文
文字列
- 文字列リテラルはECMAScriptライク
- ${xxx}や\nなど、シェルスクリプトライクな文法が使用可能
- ${new Date.now().day -1}などの式を、文字列内に内挿可能
型と変数
- bool / int / double / num
- String / List / Set / Queue / Map / ...
- final 修飾で定数宣言(C++ の const と似ている)
制御文
Javaの構文をほぼそのまま使える
- for / for-in / while / do-while
- switch case break / if else / ?:
- break / continue
- try throw catch
演算子
Java、C++にある演算子はほぼそのまま使える関数とラムダ式
クラスの継承
前半にも書いたが、多重継承は不可。ジェネリクス
使える。型制約も可能。DART SDK
- dart : Dart処理系(Dart VM) Dart VMを搭載したブラウザだと動作。V8より高速。
- frogc(dart2js) : dartからjsへのコンパイラー
これ直接使うのはしんどい。Dart Editorのバックエンドとして動いてるって知っておく程度。
DART用HTMLファイル
チュートリアル
https://www.dartlang.org/codelabs/darrrt/#set-uphttps://www.dartlang.org/docs/tutorials/add-elements/#copy-app
2013年11月13日水曜日
chrootユーザを作成する
sftp限定ユーザの作成
#useradd test#passwd test
#usermod -d / test
#chown root:root /home/test
#chmod 755 /home/test
#mkdir /home/test/files
#chmod 755 /home/test/files
#chown test:test /home/test/files
#groupadd sftponly
#usermod -G sftponly test
#vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
2013年10月12日土曜日
OpenCVのjavaが進化してた
OpenCVをjavaで使うために、jniで苦労したことがあった。
OpenCVの2.4.6でjava版を覗いてみたらかなりapiが充実していたので驚き。
大規模じゃなければこっちでサクッとつくってみよう。
opencv246
http://opencv.org/
opencv246 java api
http://docs.opencv.org/java/
使い方は簡単。
opencvを展開したら、jarをライブラリパスに追加。dllを格納したディレクトリをjavalibrarypathに
追加するだけ。
opencv 3が出たらまたチェックしてみよう。
OpenCVの2.4.6でjava版を覗いてみたらかなりapiが充実していたので驚き。
大規模じゃなければこっちでサクッとつくってみよう。
opencv246
http://opencv.org/
opencv246 java api
http://docs.opencv.org/java/
使い方は簡単。
opencvを展開したら、jarをライブラリパスに追加。dllを格納したディレクトリをjavalibrarypathに
追加するだけ。
opencv 3が出たらまたチェックしてみよう。
登録:
投稿 (Atom)
