SfMで作成された巨大な点群の鳥瞰視点画像を作成する

車載のセンサーの観測情報つかってSfMをおこない環境地図を作成することがある。 この環境地図はかなり大きいサイズになり、点群は専用のViewerが必要になるため、他の人に気軽に共有して見てもらうみたいなことができないのが面倒だと思っている。 ここでは…

OpenCVの魚眼カメラの表現を図解する

OpenCVは魚眼カメラの投影モデルは以下のページの「Detailed Description」で説明されている。 OpenCV: Fisheye camera model個人的には図がないとピンとこないので、図解してみつつ何をやっているのかを確認した。 図計算の流れは上記の図の右から左に向か…

MVTecADのデータをPyTorchから利用するためのデータセットクラスを開発した

MVTecADという製品検査における異常検知用のデータが公開されている。それほど扱うのが難しいデータではないが、かといってデータセットクラスの実装にはそれなりに時間がかかる。 ということでこのデータを扱うためのPyTorchのDatasetクラスを開発して公開…

Mean-shit法による画像のセグメンテーションについて勉強

Mean-shit法による画像のセグメンテーションについて勉強 以下のMean-shiftの解説資料で勉強をおこなった。 ミーンシフトの原理と応用 , 岡田和典, 平成21年 Mean-shiftはどんな手法か? クラスタ数を予め決めない方法 ノンパラメトリック。何かしらの分布を…

複数画像の位置合わせによって白飛びを緩和する方法の検討

概要 光沢のある物体を撮影すると、光の反射によって一部の領域が白潰れしてしまうことがある。 撮影位置をずらしたり様々な対処法はあるが、ここでは微妙に撮影角度を変えて撮影した複数画像を使って対処する方法を考えたので共有したい。まず扱う問題は以…

セイコー ダイバーズの修理(2)

前回で修理は完了したはずだったが、夜に時計を見て夜光塗料が光っていないのに気づいた。経年劣化だろう。 大した支障があるわけではないが気になるので夜光塗料を塗ってみた。 購入品 以下を購入した。夜光塗料は色々あるみたいだが、安価であり、かつアマ…

セイコー ダイバーズの修理

実家に帰ったら父が昔着けていた時計(セイコーのダイバーズ)が放置されていた。 ゴム製のバンドがボロボロになり、電池が切れ、ペプシ柄のベゼルも傷と色あせでどうもあまり見栄えしない感じになっていた。 高級時計ではないが安い時計でもない。そこで引…

Snakeによる輪郭抽出を実装してみた

以下の本を読み始めた。 opluse.shop-pro.jp 第一章の動的輪郭モデルに関する話の冒頭で代表的な方法であるSnakeがでてきた。 アルゴリズムの説明があり、シンプルだったので自分で実装してみた。 こんな感じで動いた。 m570の動的輪郭追跡(gamma=0.7) gam…

GCPのdebianにsshするときにXの転送が失敗する場合の対処

GCPを使っているときにX転送して、画像をsxivで開いて確認したりしたくなることがある。 debianのインスタンスでsxivを実行しようとしたら、以下のようなエラーが出た。 @localhost $ ssh -Y gcphost @gcphost $ sxiv ... sxiv: Error opening X display よ…

OpenCVを使って点線を含めた縦棒を画像から削除する

以下のような画像から数字や横棒を残しつつ点線を削除したい。 方法はいくつか考えられるが、 一番最初に思いついたのはハフ変換を使って直線検出し、検出された線を画像から削除するという方法だった。 ただやってみると気づくのだが、検出された線の太さが…

JetsonのラインナップとPyTorchが使えるかの調査

Jetsonを検討していたので、その内容をメモる。自分にしか役に立たないかもしれない。 PyTorchしか実装できないマンなので、PyTorchをインストールできるか、動作は問題ないかあたりをWebを漁りながら確認する。 https://www.nvidia.com/en-us/autonomous-ma…

メカニカルキーボードのキートップを換装した

ARCHISSの87配列のメカニカルキーボードのキートップを換装した。キートップの表面が長年のタイピングによって研磨されツルツルになってカッコ悪いのと、シェル上の補完のためにタブキーを連打した結果キートップの根元が折れて外れるようになったためである…

Focal lossの実装(PyTorch)

Focal lossとは教師データに含まれるクラスごとのインスタンスが不均一であるときに学習がうまくいかないことを是正するために提案されたものだ。 One stageのObject detectionで背景クラスが大半を占めることで発生する問題に対して効果的に働くらしい。 仕…

np.isin()について

概要 np.where()を使って特定の条件を満たす項目を抜き出す処理は良く行う。 今回はその発展として、複数の値に一致する項目を抜き出してきたいという状況を考える。 そのような状況では、np.isin()を使えばよいという話。 詳細 具体的には以下のようなフル…

画像処理にエンジニア検定のエキスパートに合格した

概要 画像処理にエンジニア検定はCG-ARTS協会が行っている検定の一つ。 自分が受けた2018年後期の検定の合格率は40.4%だった。 https://www.cgarts.or.jp/kentei/result/passing.html 真面目に勉強していればまぁまぁ受かるレベルである。 得られたもの 当然…

MNISTとFashion-MNISTのPyTorchのデータローダ

概要 MNISTとFashion-MINISTを組み合わせて学習してみたかったが、既存のデータセットだと多分無理っぽかったので、自作してみた。(車輪のなんとやらではないという言い訳) ここでは組み合わせるところまでは書かず、一般的なMNISTのローダをどのように書…

OpenCVでconvexHullで穴埋めされた領域を取り出す

概要 Opencvで輪郭を取得して、更に凸包領域を取り出すのはとても簡単にできる。 以下の公式のとおりである。 領域(輪郭)の特徴 — OpenCV-Python Tutorials 1 documentation ところで、この凸包領域と元の輪郭の間にある凹み領域を入手したくなったので、入…

オープンソースカンファレンスでサイコロの認識を展示してきた

概要 以下の記事の続きである。 機械学習でサイコロの目をカウントするモデルを作成する - いわゆる備忘録 OpenCVでサイコロのでた目の数をカウントする - いわゆる備忘録 オープンソースカンファレンスでカタンを電子化したものを作って展示したので、それ…

np.uniqueの結果をカウントで並びかえる

np.uniqueを使うと、配列の中の重複する要素を一つにしてくれる(関数名からもわかるぐらい単純な動作) これだけでも十分なんだけど、要素の数をキーにして並び変えたいと思うことがあるはず。 shellならば以下でできる。 $ cat $FILE | uniq -c | sort -n …

機械学習でサイコロの目をカウントするモデルを作成する

最近機械学習が楽しい。時代の波に乗っているものというのは遊んでも仕事に使っても楽しいものだ。 先日サイコロをOpenCVでカウントするプログラムを作ってみたが、これを機械学習で実現してみたいと思ったのでやってみる。 kyudy.hatenablog.com 機械学習…

OpenCVでサイコロのでた目の数をカウントする

概要 OpenCVでサイコロのでた目の数をカウントしたくなった。 ボードゲームを少し電子化してよりゲームを面白くするために使いたいと思っている。 実装 条件 サイコロを上から見る場合に限定して実装する。(立体的にみてどの面が上になるのかを判定するのが…

Ansibleでファイルのバックアップを作成する

Ansibleでファイルをバックアップしたいことがある。 失敗することを考えるとバックアップは一度だけ実行したい。 シェル上ならばcpするときに -n を指定すれば2回め移行は上書きされないことを保証できる。 -n, --no-clobber do not overwrite an existing …

ansible iptables `state=absent` が動かない。

ansibleのモジュールiptablesで'state=present'が機能しない。 ansibleでiptablesをメンテナンスしようとおもい、以下のモジュールを利用したが、どうにも state=absent が動かない。 iptablesモジュールのソースを追ってみたところ、以下のようにchangedを…

css changes not synced for heroku django based app on virtualbox shared folder.

概要 virtualbox上でherokuのアプリを作っていたのだが、共有フォルダにソースを置いてホストOS上からCSSをいじるとなぜかうまく反映されないため困った。 Webサーバを再起動したりキャッシュっぽいファイルを手当たり次第に消したりしてみたが、いっこうに…

PostfixのmaillogのFromとToを結合する。

PostfixのmaillogのFromとToを結合する。 Postfixのログを調べるときに一つのメールの行方を追うだけならすごく簡単だが、 複数まとめて検索したいときに面倒くさいのはログ上のFromとToが別の行になっていることだろう。 Feb 9 17:32:04 server001 postfix/…

.ssh/configに記載されたホストをタブ補完する

.ssh/configに記載されたホストをタブ補完する 概要 ssh実行時に.ssh/configに記載されたホスト名を補完したいなぁとおもったのでやってみた。 同じことは他の方もやっていたので、それを参考にした。その結果ほとんどオリジナリティはない。 あくまで一例と…

abrtdを使用している時は `ulimit -c` は効かない

abrtdを使用している時は ulimit -c は効かない 背景 Postfixの認証を担っているsaslauthdがクラッシュしてコアを吐いたのだが、設定が悪く保存されなかった。 再発した時にちゃんとコアが保存されるように設定する過程でネットで調べた情報が一部自分の環境…

powerdns+dnsdistの構築

DNS

powerdns+dnsdistの構築 概要 もともとpdns(権威DNS)が動作していた環境にdnsdistを導入した。 以下のような構成。 + | 53/udp | +--------------+ | +----v-----+ | | | | | | | dnsdist | | | | | | | +----+-----+ | | | 10053/udp | +----v-----+ | | …

pylruをマルチスレッドで使うと「KeyError:」が発生する

githubにissueがないのでここに書く。 以下のような2スレッドで同時にlrucacheに書き込むとエラーが起きる。 test.py import pylru import threading import random cache = pylru.lrucache(1024) def f(): while True: key = 'key %s' % (random.randint(1,…

曖昧にならない後方参照の記述方法

pythonで正規表現を使って置換処理をするときに、後方参照で少し困ったことが起きた。 一般的に使われる「\1」のような後方参照の直後に数字を続けると当然だけど後方参照の数字がどこまでなのかわからなくなる、というものだ。 解決方法は簡単で「\1」では…