MATEデスクトップ環境のマルチディスプレイ設定

お魚の目にはDHAって物質がたくさん含まれてて,その神経細胞に与える影響のおかげで,魚の目を食べると頭良くなるとかって言うんだそうですね.
IQの不足を実感する今日この頃であります.

さて,Linux Mintのデスクトップ環境の一つであるMATEですが,マルチディスプレイにしたときのデスクトップ周りの設定があまりなかったのでメモ.

基本的にはさかな前線 » Xfceのマルチディスプレイ設定をXfceからMATEにした話です.

表示する位置関係の設定

2枚のディスプレイの物理的配置と論理的配置を整合させる設定.
[メニュー]→[設定]→[モニタの設定]をクリック.

で,表示されてるディスプレイをD&Dして適切に配置しなおして,適用.
ま,この設定はググれば普通にでてきてくれますw

20130125_monitor_setting

パネルの表示位置

パネル(下のバー)はデフォルトでは「0番目のディスプレイ」に表示されます.
ディスプレイの配置によっては「0番目として認識されたディスプレイ」が適切な位置にないことも普通にあるので,パネルをどのディスプレイに表示するか設定します.

[メニュー]→[システムツール]→[設定エディタ]から設定エディタを開き,下のスクショのように[apps]→[panel]→[toplevels]→[panel0]へと辿ります.
そこにあるmonitorの項目が,何番目のディスプレイにパネルを表示するかの設定なので,0から1や2など適切な番号に変えることで,意図した配置になります.

20130125_setting_editor

壁紙をディスプレイに応じて変えることはできないのか(´・ω・`)

MATEデスクトップ環境では調べた限りできないみたいですね・・・

google-glogで最低限使いたい,ただ1つの機能 〜自動スタックトレース出力〜

もう10年以上も前になりますけども,近場の漁港によく連れて行ってもらって魚釣りしていました.
ちょうどアジは西日本の日本海側が本場ということもあって,僕の地元では岸壁に立ってサビキをすると小アジがたくさん釣れました.

さて,google-glogと言えばgoogle謹製のログライブラリ.
Google Japan Blog: C++ のプログラムのデバッグを楽にする方法にて概要が紹介されていて,ドキュメントには簡単なチュートリアルがあります.基本的には使い方に難しいところは何も無いです.

お魚さん的には学部卒論のときから使っててもはや手放せないんですが,作業が切羽詰ってくるとあんまり律儀にログを出す余裕がなくなってきますw
そんな時でもただ一ついつでも使ってたのが,「落ちた時にスタックトレースを吐く機能」です.
ということで今回はそれに絞って紹介.まとまった記事を書くには今時間的余裕がない><

Continue reading

ssh -Xでevinceが動かない場合の対処

ぶっちゃけるとわりと最近までそれほど魚食べるのは好きじゃなかったんですね.
でも魚キャラを2年かそこらくらいやってて,自分の中に変化が….
というわけでお魚食べたいです.お魚.

さて,sshのX転送は便利でよく使わしてもらってるんですが,アプリによっては特有のエラーで使えなかったり.

Ubuntu系ディストロにて標準で使えるevince(PDFのドキュメントビューア)もそんなアプリの一つで,ssh -Xで普通に実行すると次のようなエラーが出ます(ちゃんと環境変数設定してても).

% DISPLAY=localhost:10.0 evince hogehoge.pdf
(evince:xxxxx): EggSMClient-WARNING **: Failed to connect to the session manager: None of the authentication protocols specified are supported
                Cannot parse arguments: ディスプレイをオープンできません:

ぐぐると,日本語の情報はあんま見つかんなかったのですが,
My Meaningless Scribbles …: Evince would not start over SSH X-forwarding
で解決法が紹介されました.エラーメッセージだけでぐぐるとこれは見つからなかったですね.
これしてからsshで入った先で,

% sudo ln -s /etc/apparmor.d/usr.bin.evince /etc/apparmor.d/disable
% sudo /etc/init.d/apparmor restart

を実行すると,他のアプリと同様にX転送してくれるようになって(゚д゚)ウマーです.

おっと論文書いてることバレるぞ(違

sshプロキシ設定

あけましておめでとうございます.
蛇年ですね.年男ですが,今年も魚でやっていきます.

さて,ラボのLAN内の自分のマシンに学外からsshで入りたいです.
そのためには,ラボのゲートウェイを超える必要があって,多段SSHをする必要があります.

家PCから,ラボGWにsshして,そこからラボPCにssh,これを,SSHプロキシ機能で一度にやってくれる設定.
いわゆるport forwardingではなくて,ncとかも不要で原理もわかりやすく設定もラクです.

基本的にはこのあたりを参考にしてるというかそのままです.
The Weight @northeye: sshコマンドだけで多段ログインする
あとこのやり方の手がかり?は@ton1517が教えてくれました.thx!

家PC,ラボGW,ラボPCどれもLinuxです.

家PCの自分のssh設定を記述します.$HOME/.ssh/configを編集してください.

  • 家PCホスト名: HOMEPC
  • ラボGWホスト名: LABGW (外から普通にsshできる完全な名前で)
  • ラボPCホスト名: LABPC
  • ラボPCに入るときのユーザ名: labgw_name
  • ラボGWに入るときのユーザ名: labpc_name

として,

% cat ~/.ssh/config
Host LABPC
    Hostname        LABPC
    User            labpc_name
    ProxyCommand    ssh labgw_name@LABGW -W %h:%p

ホスト名はIPアドレスでもおkです.

何段階かのGWを経る必要がある場合はHostのホスト名やプロキシ先を変えながら経由するGWの分だけ線形リストのように書き足して行けるようです.

これで,家PCにて

HOMEPC% ssh LABPC

でラボPCに一気につながります.ユーザ名修飾も不要で(゚д゚)ウマーです.
また,

HOMEPC% ssh -XY LABPC

としてXの転送もできて超(゚д゚)ウマーです.

以上,2013年最初の記事は完全に自分用メモでした.

私事ですが,こうしてラボ外からでも自由に研究できるようにしないとヤバい状況です.なんという年明け.
研究という名のエクストリームスポーツ.

cv::Matとcv::Mat_<T>の画素アクセスの速度

近くのスーパーに秋は国内産の鮭が売っててよく買ってたんですが最近は輸入のサーモンばっかしです少し寂しいです.

OpenCVでちょっと気になって,画素単位のアクセスをするときcv::Matのat()による方法とcv::Mat_のoperator()による方法でどっちが速いかなと思って調べてみました.
星の数ほどされてる議論のようなするけどぱっと見た範囲で見当たらなかったのでやってみた.
参考までに画像ピクセル値へのアクセスと計算速度 | OpenCV.jpもあります.

結論から言うと,全く同じでした.

コードはこんなかんじ.時間計測はオレオレライブラリで高精度な計測ができます.

実行結果はこんなかんじ.

% ./a.out
cv::Mat::at<T>() -> 9.82353ms/回
cv::Mat_<unsigned char>::operator() -> 9.69412ms/回

大きさ(w,h)によらず同じくらいの模様.

あと気になる生配列とのアクセス速度の差ですが,上述プログラムと同じ処理を書いちゃうと最適化で全部消えちゃうしそうならないくらい複雑なプログラムは面倒だったので断念.
最適化しなければ,cv::Matの方が3割くらい遅いくらいでした.最適化するとどうなるやら.

  • CPU: i7 870 (2.93GHz)
  • OS: Ubuntu 11.10 x86
  • gcc: 4.7.0
  • option: -std=c++0x
  • OpenCV: 2.4.3

追記:
Ivy Bridge速すぎワロタw

  • CPU: i5 3570 (3.40 GHz)
  • OS: Linux Mint 13
  • gcc: 4.6.3
  • OpenCV: 2.4.3
% ./a.out
cv::Mat::at<T>() -> 2.34902ms/回
cv::Mat_<unsigned char>::operator() -> 2.34902ms/回

Linuxでの野良ビルドのOpenCVでカメラをちゃんと使うにはlibv4l-devが必要みたい

地元に鮎の美味しいお店があって,そこの背ごしはもうほんっとうに最高の絶品だったりします.行きたいなーあー…もう10年とかいうレベルで行ってないよ…

さて,Computer Vision Advent Calendarの担当日からすでに3時間遅刻していますがこれはその記事ではありません.
今,がんばって書いてるところです(←

手元のLinux環境でOpenCVを野良ビルドするとき,libv4l-devをインストールしてからでないと,cv::VideoCaptureが動かないみたいです.

$ sudo apt-get install libv4l-dev
 ...
 --   Video I/O:
 --     DC1394 1.x:                  NO
 --     DC1394 2.x:                  YES (ver 2.2.0)
 --     FFMPEG:                      YES
 --       codec:                     YES (ver 53.35.0)
 --       format:                    YES (ver 53.21.0)
 --       util:                      YES (ver 51.22.1)
 --       swscale:                   YES (ver 2.1.0)
 --       gentoo-style:              YES
 --     GStreamer:                   NO
 --     OpenNI:                      NO
 --     OpenNI PrimeSensor Modules:  NO
 --     PvAPI:                       NO
 --     GigEVisionSDK:               NO
 --     UniCap:                      NO
 --     UniCap ucil:                 NO
 --     V4L/V4L2:                    Using libv4l (ver 0.8.6)
 --     XIMEA:                       NO
 --     Xine:                        NO
 ...

ここでUsing libv4lとなってることが重要みたいです.

cv::VideoCaptureが無言でエラーだけ返すので困りましたがそういうことだったみたいです.

Xfceのマルチディスプレイ設定

もうそろそろかれこれ1年近くXfce派です.
最近はLinux Mint 13のXfce版を使ってます.

さて,マルチディスプレイをするときですが,標準の設定ツール(「ディスプレイ」ダイアログ)は全く使い物になりません.並べて表示すらできない.
ですが,「設定エディタ」ダイアログを使うと自由自在に設定できるので,メモ.

Continue reading

Tesseract OCRのUbuntuでのインストール手順

オープンソースOCRライブラリのTesseract OCRをUbuntu 11.10に入れる手順です.

最近ネタが無いのでずっと昔のメモを掘り起こして記事にしてみたw

インストール手順

http://code.google.com/p/tesseract-ocr/downloads/listから最新版(tesseract-3.01.tar.gz)をダウンロードしてから,

% sudo apt-get install m4 autoconf libtool libleptonica
% tar xf tesseract-3.01.tar.gz 
% cd tesseract-3.01
% ./autogen.sh
% ./configure
% make
% sudo make install
% tesseract --version
tesseract 3.01

他のLinuxディストロの場合も最初のapt-getの行を適切に置き換えるだけでよいと思います.

make時にエラーが出たら,viewer/svutil.cppの頭に

#include <unistd.h>

を追加してmakeしなおすといけます.

Tesseract OCRについて

Tesseract OCRについては@takminさんの資料
Tesseract OCRに触ってみた (2011/07/19 JapanCV発表資料)- takminの書きっぱなし備忘録
がおすすめです.

JapanCVは昨年2011年に開催されてて僕も行きましたが最高のイベントでした.
さかな前線 » 全日本CV勉強会に参加しました.ついでに少ししゃべりました.
という宣伝(を

標準入力の数値列から統計量(総和とか平均とか分散とか)を計算するコマンドaccを作った

問:カレントディレクトリより下の階層にある全ての.cppファイルの平均サイズをバイト単位で求めよ

解答例(こういうのあまり得意ではないのでヘンかもしれませんw許してくださいw):

% du -ab | grep "\.cpp\$" | grep -o "^[0-9]\+" | acc --mean -f "%.0f"

研究の仮のデータ集計とかにこういうUNIXライクな小さいプログラム,欲しかったけどありそうでなかったので書きました.
accコマンドと名付け,githubに公開しています.

https://github.com/sakanazensen/acc_command

入力は数値がずらずらとstdinにやってくればOK.double型の範囲を超えないように.
現時点では,総和,最小値,最大値,平均値,分散,中央値の出力ができるようになっています.
中ではboost::accumulatorに計算を丸なげしてるだけです.
よって,boost::accumulatorにない項目(最瀕値や標準偏差)には当面対応できません.
計算量等の問題についてはboost::accumulatorのマニュアルを参照してください.

当然無保証です.MITライセンスとします.
本記事コメントで対応はする考えはあります.pull requestがあれば反応するかもしれません.

実装に対するツッコミもあったら嬉しいかも.
あまり自分のコードを人に見せたことがなくてよくない.

OpenCV+IPP

Linux版OpenCVを,30日限定評価版のIPP付きでビルドする手順.
IPPとはマルチメディア処理ライブラリIntel Performance Primitivesのことで,intel製CPUを使ったマシンにおいてタスクによって2倍から10倍の性能向上があるとのこと.
事例をぐぐったかんじ,それほど誇張のある数字でもなさそう.

IPPのダウンロードとインストール
  1. http://software.intel.com/en-us/articles/intel-ipp/からダウンロード

    1. 登録が必要になります
    2. ライセンスファイルを添付したメールが届きます
    3. 僕はx86なので現在最新のl_ipp_7.0.7.319_ia32.tgzを落としました
  2. IPPのインストール

    1. 落としたアーカイブを展開
    2. % sudo ./install.sh
    3. あとは質問に答えるだけ

      1. ライセンスファイルのフルパスを入力するところがあります
      2. 正式サポート対象外のディストロの場合(Ubuntu等)では警告されますが無視で
OpenCVのインストール
  1. http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/からダウンロード
  2. 展開
  3. 展開した中に”release”ディレクトリを作成
  4. そこにcd
  5. % cmake -D WITH_IPP=ON -D IPP_H_PATH=/opt/intel/ipp/include -D BUILD_SHARED_LIBS=OFF ..

    1. IPP関連のオプションだけつけた例です

      1. 最後のオプションがないとリンクエラーでます(´・ω・`)
      2. http://stackoverflow.com/questions/10508926/opencv-fails-to-build-with-ipp-support-enabled
    2. 必要に応じて他のオプションもつけて
  6. % make -s -j8
  7. % sudo make install

ついでに,OpenCVビルドのときのオプション全体
% cmake -D WITH_TBB=ON -D WITH_IPP=ON -D IPP_H_PATH=/opt/intel/ipp/include -D BUILD_SHARED_LIBS=OFF -D WITH_FFMPEG=OFF ..

  • TBB使います(objdetectとかimageprocモジュールの中とかで使ってるみたい)
  • FFMPEGがあるとなんかエラーでるので><
  • OpenMPはもはや使われない,んだそうですね.haartrainingの中ではふつーに使ってるんですが
IPPのライセンスの話

IPPを展開した場所にあるlicenseファイルとかNon-Commercial Software Download – Intel® Software Networkにあるとおり,非商用利用においては無料でライセンスを提供して頂けるそうです.
(ライセンスは変更される場合があります.自分で利用される際に再確認をお願いいたします)