2017年7月15日土曜日

世界は究めて地味に攻殻機動隊の世界を造ろうとしている

いつも通り。タイトルは煽りです。
VR界隈(主にTangoやHololens等のMR)、産業用IoT、次世代のロボット用OSの目指してる部分を見ていると既視感のある世界が見えてきます。一言で言うと攻殻機動隊(主にS.A.C)を作ろうとしていると感じざるをえません。
Project Realize等では当然目に見える部分が先行しますが、上の技術はどちらかというとインフラなので「企業のネットが星が覆う世界」を作ろうとしている。その覆い方の一つとして、リアルタイム・分散システムをキーワードにしているように感じています。

VR系でのブレークスルー

ここ最近Oculusを始め、Hololens等様々なVR製品が話題に上がりました。技術的には20年以上前から知られていたものですが、何故今なのでしょうか?大きな時間で見ると、コンピュータやセンサーの性能が人間が体験するにあたって十分にリアルタイムになった。つまりシステムの高速化がブーレークスルーのきっかけであると言われています。
人間にとってリアルタイム」重要な事なので二度言いました。

Oculus :引用https://www.oculus.com/

ロボットは鉄腕アトムからタチコマへ

研究用に使われるロボット用のOS(ミドルウェア)として有名なものにROSというものがあります。現在実用に耐えるようにROS2という次期バージョンが開発されています。
ROSが行う作業は人間に例えると「器官」どうしの「通信」システムです。
下の図のように「アクチュエータ」であろうが「情報処理」であろうが「センサー」であろうが、それぞれの情報をお互いに垂れ流す(publish/subscribe型の)分散システムとして出来ています。情報処理ですらノードの一つでしかないという統一されたインターフェイスでできたフラットな分散システムしかもリアルタイムという特性は押さえ置くべき点です。
例えば足が痺れた時の事を思い出してみてください。足が駄目になったからといって、他の情報処理には影響が有りません。このように人間の体は、各器官が足と手は関係ないといったように各部が独立して動いて、通信によって統合されているモデル化できます。その繋がりは脚気の検査で足を叩くと動いちゃう事からわかるように、全てが中央の脳に直結してるわけではありません。さらに言うなら、脳自体も言語野が損傷しても言語が不自由になるだけというふうに、情報処理についても細かい器官(ノード)に別れているとモデル化できます。
(説明のために人間に例えましたが、普通はロボットに適した情報処理はロボット専用のほうがいいです。たまたま一緒なだけ。)
ROSのイメージ図
コレが「一つのロボット」の中にはいっているのが鉄腕アトム的なロボットです。システムが一つのロボットで閉じているので、どこにどのノードがあるの?という管理や、通信相手のノードが偽物じゃないか?といったセキュリティの問題はありません。
ここで、世界がタチコマを作ろうとしていると仮定します。
タチコマ:引用 http://www.ntv.co.jp/kokaku-s/ 
 タチコマはお互いに同期したり、連携したりして動きます。アニメでは声で話すことが多いですが、ちゃんと直接通信もできます。ここにROSを適用する場合、現在のROSでは暗号化や認証の機能がないためセキュリティ上の問題があります。
そこらへんをROS2では産業用IoTと呼ばれる分野で使われているDDS(データ分散サービス)に頼ろうとしています。

DDS(データ分散サービス)って?

DDSは風力発電所等に使われて居ます。風力発電では風の変化という設置場所毎に異なる状況と、電力需要変動というシステム全体に起きる変動の両方を見ながら、リアルタイムに風車の角度調整を行う必要があります。さらに、広範囲に拡がっているのでソレをすべて専用線で結ぶのはなかなかのコストです。そこで、「リアルタム」でセキュアな分散システムとしてDDSが採用されています。
はい、本日2度目の「リアルタイム」です。そうVRだけでなくロボットや産業用IoTでも応用用途によって程度の差はあれ、リアルタイムが重要なのです。

 攻殻での産業用IoT

さて、攻殻機動隊に立ち返って産業用IoTを使っている人を探してみましょう。すぐに見つかりますね。狙撃に「鷹の目」を使っているサイトーさんです。もちろん衛星直結を否定はできませんが、企業のネットが星を覆う時代にはネット経由が妥当に見えます。
サイトー:引用 http://sss.ph9.jp/characters/

VRとロボット(産業用IoT)の融合の可能性

もしも貴方がサイトーさんなら、むしろスナイピングにはタチコマの目を使いたくありませんか?普通使いますよね?作中には出てこないですが、許認可の問題をのぞけばできるんでしょう。「許認可」は大事、大事なことなので2度(略)。
 そして、もう一つロボットの「アクチュエータ・情報処理・センサー」が分散システムのノードとして独立な事を感じさせる逸話があります。そう「笑い男事件」です。
 義眼として、脳に直結なら義体化度合いの異なるみんなの視覚野をHackするのは骨が折れる作業です。でももしROSのようにカメラと画像処理(情報処理)を分離して、かつそれをネットごしに外注していたらどうでしょう?うまく均一にhackするポイントが出てくる可能性があるかもしれません。
そう、元々リアルタイムだったロボットが個体を飛び出してネットに直結する事、元々ネット直結だったIoTデバイスがリアルタイム化するという事は、両者が一つのフレームワークに収まる事を意味していて、「人間にとってリアルタイムに接続できる」デバイスはVRに取り込まれるのです。
ロボット・IoT・VRというバズワード御三家が繋がりました。

そして縁の下の力持ち「通信」

ここで再度「笑い男事件」の仮説を思い出して欲しいです。人間の生活に支障のないレベルに、リアルタイムに画像をネット越しに送って、加工して受信するだと?通信舐めてるのか?という話になります。もちろん攻殻機動隊の通信速度やディレイは「なめとんのか?」レベルです。
でもケータイは年々早くなっています。4G(LTE)でyotube快適にみれるし十分だと思ってたら5Gが出てきます。さすがにテレビでも「何に使うの?」っていう疑問を解説してる番組があるようですね。

https://www.houdoukyoku.jp/posts/14978

もう一つの共通要素「空間の紐付け」

以上でだいたいの話は終わるのですが、この文書は私が思いついた順とは逆順に書かれています。最初のきっかけは、RTAB Mapのマルチセッション機能
RTABMAP マルチセッション: 引用https://github.com/introlab/rtabmap/wiki/Multi-session
もう少しメジャーなサービスで説明するとGoogleのVPS機能のです。VPSについてはgigazineさんの記事あたりからリンク先を漁って下さい。
世界をセンチメートル単位しかも3D地図にして、その上でスマホ1台あれば何処にいて、どこを見ているかが解ります。センチメートル単位なので部屋の模様替えをしたら、それに追従して地図も更新されます。地図を共有するシステムしかも、ネットにも繋がる。それだけだと「何のこっちゃ」ですが…。
お掃除ロボットルンバ程度の脳みそのマシンにスマホを繋ぐだけで、ショッピングモール全体を巡回警備するロボットができちゃう。しかも、ネットに繋がったアプリなので複数台同時に運用するのも自然にできる。これって、すごくない?という所から調べて、ROS2やDDSの話にぶちあたりました。

・リアルの3次元地図の共有
・ロボットOSのように通信インフラの共有
・IoTのように複数ユーザによる装置(アクチュエータ・情報処理・センサー)の共有

この辺が見えてきた時に、自然に思い出したのが攻殻機動隊でした。

 企業のネットが星を覆うまでに

もうできる素材はあるんだから、あとは世界をつくるだけだ!と言いたいところですが。ちょっと考えるだけでも、まだ足りないピースが有ります。例えば分散システムを共有した場合の課金です。衛星一つがサイトーさん専用って事も無いでしょう。何らかの許可をGETして使っているはずです。しかしその課金のためにリアルタイム性が犠牲になってはかないません。細かく検討すると、深みにはまれます。
今までニュースでよく見た(リアルタイムではない)IoTはWebAPIなどの使い込まれた技術資産がつかえました。その部分がリアルタイム化のために使えなくなるのです。電話会社は電話会社で閉じる事でうまい事設計できてました。しかし産業用IoTの世界では家の軒先にぶら下げた気圧計のデータを気象庁とウェザーニュース社と米軍と、という風に複数に売るという事が普通にありえて、電話のような閉じたシステムもなかなか採用しづらいと予想されます。そのへんは今のところデファクトスタンダードな方法はなさそうです。(私の調べがあさいだけ?)

それ以外にもやらなきゃいけない事はてんこ盛り

課金の例は考えてみればすぐ解る課題ですが、応用を考えて初めて出てくる課題もあります。
例えばリアルタイムに通信しているシステムが、一時的に数100ms程度止まったとしたらどうでしょう?運転支援のVRシステム等では問題になりえます。例えば死角にある車を可視化するシステムの場合。「カクっ」と変な動きがある車があると、不要に注意を引いてしまします。
物理予測から適当に予測補完するというのも手ですが、通信が回復してから、認知的に直前の過去を操作する事も考えられます。過去の改ざんは難しそうですが、錯覚にも近い認知の研究の分野で「あったものを無かった事にする」「無かったものをあった事にする」研究も進められています。(とつい最近、VRの大御所のM先生に伺った)
この例でも言えるように、一見トリビアルだけど大事な技術がまだミッシングピースとして地雷の様に埋まってることは予想できます。がんばれVR屋さん。

 なんでこんな文書を書いたの?

こんな攻殻機動隊みたいなシステムは昔から夢想してたけど、勤め先ではそれに関わるチャンスはなかった。でも、最近偶然そんなチャンスがあったのよ。当然いきなり攻殻の世界を作れるとは思ってはないけど、調べてみたら世界は着実に進んでるじゃないの。
とりあえず公知の情報である世界の部分を解説して、一緒に(各々の勤め先の金で)攻殻の世界を作ろうぜ!なのです。

2016年9月15日木曜日

webでも単語をぶつ切りせず改行したい。

 改行を間違うと悲しい

webサイトでよくあるのが、妙な所で改行が入ること。例えば以下の様に、変な所で改行が入ると悲しい。これは過去にあった実例。

「リチャード・クレイダーマンコ
ンテスト」

 伝統あるピアノコンテストが台無しだ。

 ネットで見かけた対策

そこでinline-blockを指定した<span>タグで切られたくない単語を囲むと良いよというネタを見かけたのだが。なんか行末がガタガタして格好悪い。このガタガタを直すCSSがtext-align: justify;なのだが、inline-blockでぶつ切りにしてるので効かない。

 Justifyが使える改良案

いくつか試した結果inline-blockではなく、white-space: nowrapを指定した<span>タグで囲めばうまく行くのに気が付いたので、試した。実際にはchrome/IEが<span>タグの連続は改行なしというルールがあるので、<wbr>タグを挟んでいる。
 (Firefox,IE11,chrome,safariでは確認したが、iPhone等では未確認)


雑誌で見るような流し込み結果になった。これで一安心だが、全部の区切りを手入力すると大変なので、Tingy-segmenterという分かち書きjsをつかって、自動で区切りを判定できるようにした。

 使い方

ソースをコピペして、文章を適当に<p>や<div>で囲んでclassに「jas」を追加するだけでよい。ちなみに、ニーズがあるか不明だが<button>に長い文章を入れたい時も有効に使える。

デモページ: http://akirayou.net/jas.html

2016年9月8日木曜日

僕の3Dプリンタのテーブルは派手に反っている

 3Dプリンタのテーブル反っている。

写真ではわかりにくいけど、アルミ製のテーブルの上にガラス板敷いて使っています。よくみると左端のほうでアルミ板が下がっている。 0.5mmほど反っているのだ。このアルミ板にクリップでガラス板を固定すると、ガラスも反ってしまう。
つまり3Dプリント中に高さがまちまちって事になって、印刷物がはがれてしまう。

そこで考えた、スペーサー挟めばいいじゃね?

アルミ板の研磨を考えたが手持ちのサンダーじゃ目詰まりしまくってまったく進まない。下がってる分だけスペーサー挟めばいいじゃん!でもどうやって?・・・・
3Dプリントしちゃえばよくない?
ということで、やってみました。1層(1ライン?)印刷すれば、高さの誤差をある程度吸収するはずです。高いところでは潰れて幅広にラインがでるし、低いところでは丸のままステージ上にのります。
うちのプリンタ(倒産したSolidoodle)はノズル径が0.4mmなので、高さの誤差が0.4mm未満の場所なら理屈の上では補正できます。G codeのヘッダ部分は既存の印刷からコピーしてくるとして、ライン生成G codeはエクセルセルマクロでつくりました。
 G code作成エクセル (google drive)
直線(G1)の時はI,J座標は不要ですが、付けてても無視されるのでそのまま無意味な値を書いています。 
こんな感じでガラス板の下に黒いラインが見えます。高さの誤差は正確には計ってないのですが、紙の隙間で試すかぎり、だいぶ改善されました。
このプリンタは構造上プリンタヘッドが動くXY平面がねじれてしまう上に、ねじれ調整用のネジもついていないので、多少の狂いはしょうがないです。マシになったのでOKっす。

調整の手順は以下の通りが楽です。
  1. アルミテーブルをできるだけ水平出しする
  2. スペーサーラインを出してみて、Z軸補正ネジで高さ調整(高い部分で十分ラインが潰れるように)
  3. スペーサーラインを出力
  4. スペーサーの上にガラスを敷いて、Z軸補正ネジで高さ調整。このとき絶対にテーブル調整ネジを触らない!(角度はスペーサでかなり正確に出てるはずなので)

 ほかにも・・・

そもそも反っていないテーブルを使えばいいのです。ガラスがテーブル土台の強度にまけて曲がるのが原因なので分厚いガラスだけでテーブルをつくればいいので、以下のようなガラストップにすればOKです。ただ、テーブル保持部自分で設計するのがダルイときは上の方法も便利ですよ。

参考:@arms22さんに教えて貰ったテーブル売ってるサイト


2016年9月4日日曜日

ダイソーのミニルーペが仕様変更、その対策

ダイソーのミニルーペとは

ダイソーのミニルーペは安いレンズ欲しい人の間では有名な商品。Φ31mm、f=70mmのレンズが108円で2枚取れる事で有名です。このサイズ・焦点距離のレンズはHMD作ったり、LEDの光をしぼるのに使ったり色々便利なサイズです。

 はずれ仕様の見分け方


 しかし残念ながら仕様変更があったようで、在庫が順次左のはずれの方に変わっています。いままで黒い部分を軽く捻るだけで分解して簡単にレンズが取り出せたのですが、はずれ仕様では接着されているのでコツが必要です。ぱっとみ見分けが付かないのですが、ホッチキスで留めてある方が「あたり」でセロテープで箱が閉じられているのが「はずれ」です。

 「はずれ」仕様でのレンズの外し方

試行錯誤でいろいろあると思いますが、とりあえず綺麗に外すことができたので報告。
 分解してみると、「はずれ」も「あたり」もそっくりですが、はずれのほうは赤枠でかこってる部分が接着されています。ウォータポンププライヤーや万力のようなものを使って、以下の2段階で接着部分を破断させれば外すことができます。

根元側の接着をはずす

まずは根元部分をプライヤーで挟んでパキパキと音をたてて、接着部分をはがします。一カ所パキッとやったら、少し回転させて次の部分をパキッとやります。

 裏面をみながらやると、挟んだ部分の接着部分が剥がれていく様子が見えるので、確認しながらやると楽です。

 

レンズ周りの接着をはずす

次はレンズ付近の接着をはずします。レンズの周りをもって、中のレンズを傷つけないよう気をつけつつもパキパキ外していきます。回しながらやって3回ぐらいパキっと言えば外れてると思います。
  

参考:接着部分拡大

接着部分は 縦の線と、天面に円周状にぽつぽつある部分です。イメージしながら割るとやりやすいと思います。

参考:そんな苦労しなくても

モノタロウや、Amazonで検索するとほぼ同一のレンズが1枚100円で売っています。100円+送料を素直に払うのも一つの手だと思います。


2016年8月28日日曜日

IoTが世界を変えるとか、全てがインターネットになるだとか。

先日「融けるデザイン」 という本を読んだ。心理学的な説明でIoTやUXを紐解く的な事が売り文句には書いてあるのだが、それとは関係なく知り合いが絶賛してたので読んでみた。 結構面白いので、雑に短く紹介。

かなりの部分、間違ってるかも知れないが、間違っているなりに納得したので、気にしない。間違った知識で恥を搔きたくなければ本を買おう。

世界は「身体」と「環境」でできている。

自分にとって、世界は意のままに制御できる「身体」とそれ以外の「環境」がある。身体とは例えば自転車に乗っている時は自転車も「身体」だし、マウスカーソルだって「身体」。何かの作業をしようとしている時に細かい事を意識せずに制御できるものは全部「身体」。身体を用いて環境に働きかけたり、その逆に環境から身体に影響をうけたりする。コレは定義。

ネットがある現在では身体ってのは世界の裏側に有っても、この世に存在しない概念的存在であっても身体であったりする、そこんとこOK? もちろん身体同様環境も変わるわな。

「価値」は「体験」を通して生まれる。

本能由来の価値等の体験を通さないものも有るけど、それは置いといて。
初音ミクの例を考えよう。身体と環境の相互作用の中で「体験」がある訳だけれども、上で紹介したように「身体」や「環境」は新しい技術や技能や制限(ミクのガイドライン等のルール)で変わっていく。そこで得られるのが新しい「体験」。ミクが現れる前の時代に、ポリッドスクリーンに映されたミクライブを見てもピンと来ない。「俺たちのミクがついにステージに!」という感動(=価値)には繋がらない。つまり「体験」を通して「価値」は生まれる。「価値」の上に再帰的に新しい「身体」を構築したりするので、深いレベルでの予測は困難。

したり顔で価値をデザインしろ!って言う人いるけど、出来りゃ苦労しない。ミクがこうなるなんて正直予測できてなかったでしょ?でも新しい価値を生む努力はできる。OK?

余談

先日「俺たちのミク」を説明したんだ。「その感情は、AKBやおにゃんこクラブと同じでしょ?」って返された。どうやったらうまく説明できるか頭抱えるよね、自転車の運転の仕方という「身体」に関する説明が難しいように「価値」に関する説明も難しい。

IoTの持つ意味

日経的には保守サービスの売り文句って側面がデカイだろうけど、おいといて。
上の文脈で考えるとIoTはインターネットを身体化(or環境化)するための試みといえる。大事なのは透過性。自転車という道具が身体化した時、自転車という存在は透明になった気がする。それが透過性。環境の側面だと、ネットで買い物する時に、わざわざ回線網やその先のサーバ群・倉庫の存在を意識しない(トラブルが起きない限り)。
インターネットの設計自体も透過性は非常に意識されていて、プログラマはインターネットを利用するアプリを書く時にネットの存在は意識しない(トラブルが起きない限り)。つまり透過性はインターネット進化の歴史からみても哲学として存在する。
現在ネットでは情報を一旦文字・画像情報に落として表示するのが一般的であるが、それだと文章理解というフェーズがあって透過的ではない。もっと透過的な手段で、情報をより直接的に扱って身体化・環境化を進めようというのがIoTである。

つまり文字という一旦解釈が必要な非透過的なインターフェイスから、より透過的なインターフェイスへの脱却を目指すというのが、インターネットにおける次の段階の透過性の実践ってこと。OK?

余談

全てがインターネットになる!って書いてあって「意味わからん。」となりがち。ここではインターネットの詳細は忘れて「 情報ってのは技術的にはいつでも何処でも得る事ができる。」その状態のことを単にインターネットと呼んでいるだけと思えばよい。昔は技術・コスト的には局所的な独自通信が安かったけど、今では世界中でインターネット越しに通信可能するのが合理的な時代になったって事です。デフォルトが局所通信なのか、デフォルトが全世界アクセス可なのか、この「環境」の違いは何かを生むでしょう。

まとめ

ネットを中心に色々なものに透過性を持たせるのが簡単になった事だし、新たな「身体」や「環境」を試行錯誤しよう!その中からきっと新しい「体験」や「価値」が生まれるさ!ということで自信をもって変な事しよう。


2016年7月13日水曜日

FreeBSDで監視カメラ

まず。Linuxではよく用いられるmotionに関してはUSBカメラではうまく動かず諦めました。なのでpwcviewを使ったUSBカメラによる監視カメラの作り方です。

カメラの認識

FreeBSDでのカメラの利用にはwebcamdというデーモンが必要なので、以下のスクリプトでカメラを認識させます。USBカメラを追加・削除する度にデーモンの起動が必要なので、繰り返し実行すればwebcamdを全部殺して起動し直すようにしています。

cameraStart.sh
#!/bin/sh
kldload cuse4bsd
killall webcamd
usbconfig list | grep Camera | awk -F : '{print "webcamd -d "$1" -B -H"}' | sh

監視(pwcview)

 pwcviewはカレントディレクトリのpwcview.msk(動体検知対象外を示すマスク)を読み込むので、カメラの数だけディレクトリが必要です。ここでは/cam/0ディレクトリを監視カメラ用ディレクトリにしています。

重要なのはpwcviewによる表示はxgaやuxgaに対応していますが、マスクはvgaまでしか対応していません(2016/7時点のバグ?)。なので今回はvga(640x480)での監視をしています(-s オプション)。pwcviewで動体検知をした再に動画に記録するのですが、この際の動画変換はmencoderで行います。深い意味は考える必要はなくてw=640:h480の所の解像度がpwcviewに与えたサイズと一致していれば良いです。
-dオプションでカメラの指定、-uで動体検知の感度(小さいほど高感度)を指定します。

/cam/0/run.sh
#!/bin/sh
cd /cam/0
F=`date +%Y%m%d_%H%M`
echo run $F
pwcview -hkr -s vga -f 5 -u 1300 -d /dev/video0 | mencoder -quiet -demuxer rawvideo -rawvideo fps=5:w=640:h=480:i420 - -ovc lavc -lavcopts vcodec=mpeg4 -o $F.mp4 >/dev/null 2>&1


複数カメラでの監視

複数カメラでの監視のため実際には以下のスクリプトで/cam/0と/cam/1の二つを起動しています。
 以下のスクリプトをcronで定期的に実行する事で、実行のたびにファイル名を分けて動体検知動画を見る事ができます。


 #!/bin/sh
killall pwcview
killall pwcview
sudo sh /home/akira/bin/cameraStart.sh
sleep 2

nohup /ssd/cam/0/run.sh &
nohup /ssd/cam/1/run.sh &

Future works

pwcviewが4:3サイズの画像しか対応していないのは今時じゃない。さらにマスクがvgaまでというのもなにか変。なので修正が必要だとは思います。西院フェスおわったら修正するかなぁ。
USBカメラからの読み込みは非圧縮のみなので高解像度ではfpsを高く出来ません。そこの改良までは手を付けるつもりはないですが、、、だれかやんないかな。

2016年5月27日金曜日

ゆっくり計るADコンバータにはノイズが必要だってばさ

重さを量る秤だとか、気温を測る温度計だとかをコンピュータで計る場合、アナログ回路でセンサー値を電圧値にして、ADコンバータで計る事になると思う。このアナログ回路にはある程度ノイズがある必要がある。

この「ノイズが必要」という事を忘れた設計をしている人が多いので、この場で愚痴っておこうと思います。

実験

1000回のデータを計測してその平均を出力するとします。その時に乗るノイズが正規分布で標準偏差(sigma)を0〜1の間で変化させて見ました。ヒストグラムをプロットするとsigma毎にこんな感じになります。
sigma=0のときは0と1しか取らないです、sigmaが0.4,1.0と大きくなるにつれて広い範囲に分布しているのが見て取れます。

 1000回平均値

いよいよ本題です。ノイズの大きさによる平均値の出方の違いを見ていきます。横軸(入力)は0〜1まで0.2単位で変動していて、それにノイズが乗っています。縦軸はADコンバータで計測した平均値を各ノイズ幅(sigma)毎にプロットしています。
真値とAD平均値
sigma=0すなわちノイズが無い時(青線)は0か1しか取らないのでどれだけ平均をとっても真値0.1,0.2,0.3,0.4はAD値平均では0です。逆にsigma=1、すなわちノイズの標準偏差がAD1bit分の時はほぼ綺麗な直線で1000回移動平均とれば0.1単位の値が余裕で読める事がわかります。
sigma=0.2だと正規分布関数形状由来の歪みが出るので補正が必要です。補正の仕方はσの値の大きさによって変わるので、可能ではあるが少しやっかいという状態です。

結論

ADコンバータで電圧を読み取る時で、平均値を取る位時間に余裕がある時は電気回路側でノイズを載せてもらいましょう。その程度の設計は追加コストほぼ0で出来るはずです。載せる量は積算回数にもよるので一概にはいえないですが、安全をとってとりあえず標準偏差=1bit位を目指せばいいんじゃないでしょうか?その辺は業界によって常識的な範囲が変わってくると思います。

今回は電気の話でしたが、これ以外にも、ファームウェアでノイズ取ってます!系もやっかいですよね。「ちょ、勝手に捨てないでよ!ノイズの量を計測した後に信号処理したいだってば」って事、よくある、よくある。なんだろ、この親切が超裏目に出る感じ。