hirax.net::Keywords::「周波数解析」のブログ



2004-02-14[n年前へ]

アダルトビデオの科学 今日のトリビア 編 

横揺れ縦揺れ 2.5ヘルツ

 「アダルトなモノ」が新しいテクノロジーを牽引することは多い。アダルトビデオにより牽引されたVHS規格のビデオや、エロサイトにより牽引されたインターネットの拡大を筆頭にして、そんな例は数多くあることだろう。もしかしたら、ブロードバンドの恩恵を多く受けているのだってアダルトビデオの配信だったりするのかもしれない。現に、「-ソフトオンデマンド-なんて検索」をかけると、検索結果はほとんど全てがアダルトビデオの配信サービスだったりする。
 

 そんな風に、アダルトビデオが、VHSビデオやブロードバンドといった新しいテクノロジーに与えている影響はとても大きい。しかし、そんなアダルトビデオに対し、科学の目が向けられることは滅多にない。科学の世界ではアダルトビデオはほとんど取り扱われない。アダルトビデオは学問の世界では無視されているのである。科学の世界ではアダルトビデオは裏(ウラ)モノ扱いされているのである。

 
 しかし、どんなものにも表の側面もあれば、裏の側面もある。表の側面しかないのは映画のセットくらいなもので、それではあまりにも嘘くさい。確かに、アダルトビデオは裏ものであるかもしれないが、表の側面にのみ光をあてて裏の側面は写さないというのであれば、そこに写る世界はとても平面的な嘘の世界でしかないに違いない。科学の世界で、アダルトビデオを取り扱わないというのは何だか少し面白くない。そこで、今回はアダルトビデオに科学の光をあてて、「アダルトビデオの科学」を考えてみることにした。
 
 

 まずは、何はともあれ材料が必要だというわけで、15秒程のアダルトビデオのサンプルビデオを(アダルトビデオメーカーのWEBサイトから)手に入れた。タイトルは「○@△!@の$%*!」と「*@%!な△×%$!」というもので、それらのビデオの「ジャンル」は「ハード」と「巨乳」というように分類にされていたものである。とりあえず、その二つを選んだのにはもちろん理由がある。私の趣味で選んだというわけでは、「残念ながら」ない。次に行う解析には「ハード」というジャンルのビデオがおそらく向いているだろう、と私が(自分の好みは別として)判断したことが一つ、そして、「巨乳」というジャンルは間違いなく「オッパイ星人の科学」にも役立つだろう、と(これも自分の好みは別として)判断したからである。
 

 材料が揃ったところで、さっそくアダルトビデオの画面の中のモノたち(つまりは俳優達だ)がどんな風に動いているかを解析するソフトウェアを作ってみた。いや、もちろんアダルトビデオでなくても構わないし、もちろん男優と女優達でなくても構わないわけであるが、今日のお題は「アダルトビデオの科学」であるわけだから、アダルトビデオの中の俳優達が画面がどんな風に動いているのかを解析するソフトを作ってみたのである。そして、とりあえず各15秒のアダルトビデオ二本における横揺れ縦揺れ速度の変化を解析してみた結果がしたのグラフである。青い線が横方向の揺れの速度で、紫色の線が縦方向の速度になる。
 

各15秒のアダルトビデオ二本における横揺れ縦揺れ速度の変化
(青線:横方向の速度、紫線:縦方向の速度)

ジャンル:ハード

ジャンル:巨乳

 このグラフを見ると、おぼろげながらそれぞれのビデオの特徴が見えてくる。例えば、ジャンル「ハード」のビデオではなんだか青い線の方が大きい動きを示している、つまり、横方向の動きが縦の動きに比べるとずいぶんと大きそうだ、なんていうことがわかる。もちろん、それはあくまで平均的な速度の話である。だから、その「動き」というものが、男優の動きなのがあるいは女優の動きなのか、あるいは、他の何かなのかは判らない。しかし、とにかくジャンル「ハード」なビデオ「○@△!@の$%*!」では横方向の振動が大きそうだなんていうことが判る。

 また、ジャンル「巨乳」のビデオの方を眺めてみると、こちらの方は紫の線の方が大きそうだということが見えてくる。つまり、ジャンル「巨乳」のビデオ「*@%!な△×%$!」では、縦方向の動き(振動、揺れ)の方が横方向の動きよりも大きいようだ、ということが見えてくる。もちろん、その縦方向の動きというものが、男優によるものか女優によるものかは判らないが、あくまで画面内に写っている対象物は「巨乳」のビデオにおいては縦方向に大きく揺れている、ということが判るわけである。
 

 そんな縦と横の動きの関係がもう少し判りやすいように、サンプルビデオの画面平均速度をX-Y平面(「横方向速度-縦方向速度」平面)に描いたグラフを描いてみることにした。そうすると、縦の動きがあればX-Y平面内では縦に動くし、横の動きがやはりX-Y平面内で横にプロットが動くことになり、見て判りやすいグラフになる。まずは、15秒の間に各アダルトビデオの画面が一体どんな風に動いているか(揺れているか)をプロットしてみよう。
 

15秒間に渡る画面の平均的な動きをX-Y平面に描いたグラフ
ジャンル:ハード
ジャンル:巨乳

 このグラフは明らかに各ビデオの特徴を表している。まず、ジャンル「ハード」なアダルトビデオでは、ほとんど横揺れ(振動)だけ発生?していないことがわかる。そして、ジャンル「巨乳」なアダルトビデオでは縦揺れ(振動)の方が若干大きく、もう少し複雑な揺れ方を示していることも見てとれるのである。
 

 といっても、このビデオは販売促進用の15秒間のプロモーションビデオであり、何回か場面も変わってしまっている。つまり、複数のシチュエーションが混ざってしまっている。そこで、単一のシチュエーションのみ、各ビデオにおけるクライマックス(?)部分の五秒間のみで、画面の平均速度をX-Y平面に描いてみたのが次のグラフになる。
 

5秒間の画面の平均的な動きをX-Y平面に描いたグラフ
ジャンル:ハード
ジャンル:巨乳

 こうなると、各ビデオの特徴が明らかになる。「ハード」なビデオ「○@△!@の$%*!」では画面内で横方向に実に単調な往復運動(ピストン運動)が繰り返されており、ジャンル「巨乳」なビデオ「*@%!な△×%$!」では基本的には縦揺れ、だけどグルングルンとなんとも微妙なリサージュ図形が画面内で描かれていることがわかる。「オッパイ星人の力学」で数多く計算した結果、例えば、Gカップバストの揺れる動きを思い浮かべてしまうような。リサージュ図形が描かれていることが手に取るように(残念ながら手に取れないけど)見えるのである。
 

 こんなグラフを眺めていると、アダルトビデオの中の「ハード」な単調振動とは一体どんな振動なんだろう?とか、「巨乳」ビデオのなんとも微妙なリサージュ運動って一体どんな揺れなんだろう?という疑問が当然湧いてくるハズである。どのくらいの速さで揺れているのだろう、とかその揺れの振動の周波数はどうなっているのだろう、なんていう素朴な疑問が湧いてくるはずである。科学の興味(エロの興味だけでなく)が湧いてくるハズである。

 そこで、それを調べるために時系列周波数解析をしてみたのが、次に示すグラフである。それぞれのアダルトビデオの支配的な振動、つまりジャンルが「ハード」のビデオの方では横方向の振動、ジャンルが「巨乳」のビデオでは縦方向の振動に対して、モルレーのウェーブレットを用いて連続ウェーブレット変換をかけて、どんな振動が刻々生じていたかを調べてみたのである。

 元々は石油探査のために振動波の解析のために、つまりは「地面の中に隠れている石油」を明らかにするために考えられたモルレーのウェーブレット解析なのではあるが、使い方を少し変えてやればアダルトビデオの画面中に見え隠れ(モザイクもあるし)する男優や女優」の解析を行うことだってできるのである。そんな使われ方を見るとモルレーは嘆き悲しむかもしれないが、アダルトビデオの(モザイクもある)画面中に見え隠れする男優&女優」の動きだって明らかにすることができるのである。
 

 というわけで、下に示すグラフは横軸が約15秒間の時間を示している。そして、縦軸は生じている振動の周波数を示し、色はその周波数の信号の強度を示している。つまり、時間をおってどんな周期の振動が生じているかを示したグラフなのである。
 

各ビデオ内の平均速度を時系列周波数解析したグラフ
ジャンル:ハード
ジャンル:巨乳

 すると、例えばジャンルが「ハード」なビデオでは、前半は約2.5ヘルツ(一秒間に2.5回の往復)の規則的な横揺れ運動が生じていることがわかる。そして、後半は(疲れがでたのか)少しばかりペースが少し落ちて、約1ヘルツ(一秒間に一往復)の横揺れに変わっていることが判るのだ。もちろん、別にそれは男優が疲れたわけでも何でもなく「ただ単に場面転換したから」という可能性もあるわけではあるが、ここでは疲れのせいと勝手に決めつけておくことにしよう。

 次に、「巨乳」ビデオではどんな周波数の動きが生じているかを見てみよう。すると、前半は5ヘルツ(一秒間に5往復)くらいの縦揺れ振動が生じ、中盤から後半にかけてはやはり2.5ヘルツくらいの縦振動が続いていることが判る。一秒間に5往復というとずいぶんと速いし、解析結果のグラフを見るとそれほどその振動のパワーは強くない。すると、おそらく俳優の体の全体でなく一部(それがドコかとは言わないが)の振動が生じているのだろう、と推測されるのである。つまりは、体の一部が共振して揺れているのであろう、と推察されたりもするのである。
 

 というわけで、今日の「アダルトビデオの科学」が贈る「アダルトビデオのトリビア」はこうなる。

 アダルトビデオのジャンルが「ハード」の場合には、男優と女優の動きは単調な横揺れで、縦の揺れはほとんどない。そして、その「横揺れ」はおよそ一秒間に2.5往復くらいであるが、俳優達もやはり人間、疲れのせいか後半はスピードは落ちて一秒間に一往復程度になる。

 一方、ジャンルが「巨乳なビデオ」の場合には縦揺れが大きく、グルングルンとリサージュ回転運動も頻繁に見られる。そして、その速さは速いときには一秒間に5往復ほどであるが、やはり後半は一秒に2往復ほどのスピードまでクールダウンする。

「アダルトビデオの振動方向はジャンルによって違うが、一秒間に2.5往復ほどである」

2005-03-24[n年前へ]

3次元形状モデリングによる衣服着用の表示技術 

着用感覚評価3次元形状モデリングによる衣服着用の表示技術 ガードル・ブラジャ・コルセットなんかを着用することにより、女性の体型がどんな風に変わるかを計測・表示しよう、という「3次元形状モデリングによる衣服着用の表示技術」 「脳波の周波数解析による着用感覚評価」なんていうのも面白いかも。

2005-05-19[n年前へ]

品川から三島までの振動データの「時間 v.s. 周波数解析」 

品川から三島までの振動周波数データ品川から三島までの振動周波数データ
 せっかくなので、下りのこだま585号 8号車 通路側のシート上の「品川駅から三島駅まで」の揺れデータ(10ms間隔)の時間 v.s. 周波数解析も短時間フーリエ周波数解析(高速フーリエ変換とは別物ですね)で行ってみました。横軸が時間軸で品から三島までを示していて、縦軸が周波数軸で振動の周波数を示しています。
 左(or 上)のチャートで、時間軸(横軸)25分過ぎに現れる高周波数を多く含む振動は小田原で停車中に「ひかり」か「のぞみ」が通過した際の振動でしょうか? 確認しやすいように、短時間フーリエ変換ウィンドーサイズを小さくしたものを右(or 下)に示してみます。
Thinkpad 加速度センサ また、40分過ぎの激しい振動は熱海を出て箱根トンネルを通過中のものですね。…と、こんなことを調べても新幹線の振動が直ってくれるわけではないんですよね…。もうちょっと、快適にしてくれたら…良いなぁ。せめて、ハードディスク保護回路が働いたり、テーブルの上のコーヒーが倒れないくらいだったら良いなぁ。

2005-07-19[n年前へ]

「加速度センサ」で「人に迷惑な電車男」 

東海道新幹線「こだま」の揺れを加速度計測してみよう

品川周辺から三島までの地図 最近は出張が多く、東海道新幹線に頻繁に乗っている。東京・品川・新横浜と三島の間を週に三・四回は往復し、往復二時間ほどの道のりを新幹線の座席で過ごしている。
 右の地図を眺めると一目瞭然なのだが、東海道新幹線の東京から三島までは、観光地が続く。例えば、小田原駅からは小田原城がよく見える。小田原の手前に始まり熱海までの車窓からは、相模湾も見通すことができる。そして、箱根を過ぎると伊豆半島や駿河湾が見えてくる。

 しかも、そんな綺麗な景色を眺めながら、ノートPCのキーボードを叩き、ちょっとした計算や文章書きなんかをすることもできたから、新幹線の中はとても快適で有意義で快適な時間だった。綺麗な景色を眺めながらノートPCのキーをパチパチ叩いていると、何だかいつもより自分自身の頭が冴えわたってくるような気がしたりしていたり(あくまで単に「いつもより」、だ)、自分の手元のノートPCもいつもより速く、まるで超高速の特別仕様であるかのごとく、キビキビと素早く反応するように感じたりもしていたのである。つまりは、以前は新幹線の中というのはとても快適な空間だったわけである。

 ところがある時期から、新幹線の中での文章書きがとても辛く感じるようになった。列車の「ガタガタとした揺れ」が妙に気にかかるようになって、新幹線の中のPC作業が苦痛に感じるようになってきた。そして、時を同じくして、それまでキビキビと動き、まるで超高速のシャア専用特別仕様のようなノートPCが何だか反応が鈍いダメダメ「のび太クン」になってしまったのだ。その結果、新幹線の座席に座って過ごす時間が快適どころか、苦痛に感じられるようになってしまったのである。
アクティブ・プロテクション

 その「新幹線の揺れを私が気にするようになり、ノートPCも反応も遅くなってしまった」タイミングがいつ頃だったかを考えてみると、それは東海道新幹線に品川駅が新設され、さらに「こだま」に100系電車の代わりに300系電車が使われるようになった頃だった。つまり、駅が新設されて運行テーブルが大きく変わり、列車も揺れる300系列車に変わったために、実際揺れが激しくなったのである。そのせいで、「ガタガタとした揺れ」が気にかかるようになったわけだ。しかも、それだけでなく、その頃ノートPCを買い換えた。加速度センサを搭載し、加速度変化( =揺れ・落下)を検知するとハード・ディスクのヘッドを待避させ読み書きを停止する「アクティブ・プロテクション・システム」を搭載しているThinkpadを使い始めたのである。そのため、新幹線が揺れるとノートPCのハードディスクが停まってしまい、超高速の?PCがとても反応が鈍い「のび太クン」に変身してしまった。その結果、文章書きなどをスムースに行うことが難しい環境になってしまったのである。

 しかし、そう文句やグチばかり言っていてもしょうがない。Thinkpadが加速度センサを内蔵し、揺れを検知してPC作業ができなくなってしまうのであれば、その加速度センサを利用して、逆に新幹線の揺れを調べてみることにしてみたい。そして、「快適な新幹線の移動環境はどのようにすれば手に入るか?」を考えてみた。

 まずは、Thinkpadの加速度(傾斜)センサ値を読み取るアプリケーションを作ってみた。そして、いつものように三島で新幹線に乗り込んだ。最初は、席が結構空いているように見えたのだが、それはその列車がグリーン車両だったからで、指定席車両さらには自由席車両へ移動していくと実際にはかなりの混雑した状態で、最終的に一番端の1号車まで移動しようやく空席を見つけた。1号車でも結構込んでいて、空席はほとんどなかったため三人掛けの真ん中の席に座わり、座席の前にテーブルを拡げた。そして、その上にThinkpadを置いて、10ms間隔でひたすら加速度データを素早くとり始めた。混雑のせいもあり、「ナニしてんだコイツ? そのテーブルに拡げたPCを使うのか使わないのかハッキリしろよ」という周りの目が妙にキツかく、ついテレビや映画の中の電車男のようにオドオドと「すみません。すみません」とつぶやきながら、それでも勇気?(というよりは単なる迷惑な非常識)を振り絞って何とかデータをとってみた。

 その(周りの視線に耐えた)苦労と勇気の結果が次のグラフである。「鉛直に対する傾斜角(の絶対値)の時間変化」を示していて、横軸は「時間」・縦軸は「鉛直に対する傾斜角(の絶対値)」を示している。ちなみに、このグラフでは時間軸は「右から左に50分ほどの時間」を示している。つまり、(一番右端の)三島をスタートし、50分弱後に品川に到着するまでの揺れの記録である。

鉛直に対する傾斜角(の絶対値)の時間変化
三島から品川まで三島から品川

 このグラフを見ればわかるように、「三島→新横浜」の全区域にわたって揺れが激しい。特に、赤丸で囲ったあたりは最悪である。激しくガタガタと揺れていて実験を中止しようか、と思うくらいなのだ(何しろデータのとりこぼしがないように、ハードディスクの保護機能を切ってあるのだから)。それに加えて、新横浜での停車前には席を立つ人なども多く、そのためテーブルを固定している座席もガタガタと揺れスパイク・ノイズが入ったり、さらには私の隣の人も「新幹線の中でPCを拡げてるクセにそれをいじろうともしない迷惑なヤツ(=私である)」を邪魔そうに見ながら降車するため立ち上がったため、「すみません。すみません」とまたしても電車男のようにつぶやきながらThinkpadを抱えて避難したりしていたのである。新横浜前(グラフで言うと、新横浜の右辺り)で細かく強い揺れが生じているのはそんな情けない「電車男」が原因なのである。

 そして、揺れが激しいようすは、「時間 v.s. 周波数解析」を短時間フーリエ周波数解析で行ってみると、さらによくわかる。

「時間 -周波数応答」の解析結果
三島から品川まで
紫色が振動が強く、(背景と同じ)青色が振動が弱い

 このグラフは横軸が(先ほどと同じく)時間を示し、縦軸が生じている振動周波数を示し、色が各領域の振動の強さを示している。このグラフを見れば、「三島と熱海の間全域」「熱海を出てから5分間程度の区間」「小田原を出てから5分間程度の区間」の揺れが激しいことを見てとることができる。そして、ちょうどそのエリアで私は列車の「ガタガタとした揺れ」が気にかかるし、Thinkpadも反応が鈍い「のび太クン」になってしまうのである。

 ということは、私は加速度センサ付Thinkpadを抱え、新幹線「こだま」の車両の色んな座席に座り、どの座席の揺れが一番少なく快適であるかを調べてみれば良いわけだ。せっせと、色んな席でデータ採りをしてみれば良いハズなのである。そうすれば、「快適な新幹線の移動環境はどのようにすれば手に入るか?」が明らかにできるハズである。

 …しかし、正直言って、今回のデータ採りはツライのである。「ナニしてんだコイツ?そのテーブルに拡げたPCを使うのか使わないのかハッキリしろよ」という周りの乗客の視線に耐え、そして「すみません。すみません」とつぶやき続ける電車男のような一時間を何度も何度も繰り返すのはイヤなのである。私が新幹線に乗る時間帯は、いつだって車両は結構込んでいて、真ん中の辺りの車両には空席はないことも多い。、そんな中で使いもしないノートPCを拡げて、周りの乗客の迷惑そうな視線に突き刺されながら実験を繰り返すのはツライのである。

 …そこで、格安のこだま号専用グリーン回数券を買い、いつでもガラガラに空いているグリーン席でデータをとってみたのである。その結果が次のグラフである。ちなみに、このグラフは横軸の時間軸が「左から右」という向きであるということ以外は先ほどまでのグラフと同じだ。

東京から三島までの「グリーン車」
鉛直に対する傾斜角(の絶対値)の時間変化東京から三島
「時間 -周波数応答」の解析結果
東京から三島まで

 もちろん、新幹線が走行する方向も違うし、車両位置も違うのだが、揺れのようすが全然異なることがわかると思う。「新横浜と小田原の間の区間」はちょっと揺れるが、それでも先ほどのグラグラガタガタ状態に比べれば、快適そのものだ。

 …それにしても、ガタガタ揺れる新幹線をJR東海に直して欲しいような気もする一方で、少し我が身を振り返ってみれば列車の座席でノートPCを広げて、作業をしている私もそもそも間違っているような気もする。なんだか、ちょっとゆとりがないように思えてしまう。反省も込めて、今度は東海道線の各駅停車列車に乗って、往復4時間(4500円)の出張でもしてみることにしよう。グリーン車両での往復9800円との差額で少し贅沢な駅弁と(発泡酒でなくて)ビールでも買って、ガタガタと列車に揺られてみることにしようか。

2016-12-23[n年前へ]

Python/OpenCVで画像多重解像度解析コードを書いてみる 

 多重解像度解析…といっても直交基底に分解するというような話ではなくて、単に各周波数帯の特性がどの程度含まれるかを眺めるといった用途なら(つまり、ガボール変換やSTFTを掛ける感じの程度の用途なら)、Python/OpenCVを使って十数行で書けるかも?と思い書いてみました。もちろん、実装は簡単第一最優先!というわけで、ガウシアンフィルタ差分で2次元のバンドパスを作成し、それを周波数軸で重ねて眺めてみるというくらいの話です。

 実際に書いてみたら、ポスト処理含めて約20行くらいになりました。超入門的な画像処理コードですが、1次元〜2次元の多重解像度解析や周波数解析を行うことは意外に多いような気もするので、適当に貼り付けておくことにします。*


*画像処理クラスタからのコメント:
 ・マルチスケールで眺めるなら、DCゲイン1同士のガウシアン差分をとり、そのL2ノルムを1に正規化しすべし。
 ・周波数軸は等比的にした上で、ボリューム的表示も等比的比率で重ねたい。

import numpy as np
import cv2
from matplotlib import pyplot as plt

def DOG(img, s, r):
    img2=img.astype('uint16')
    img2=img2*128+32767
    gs = cv2.GaussianBlur(img2,(0, 0), s)
    gl = cv2.GaussianBlur(img2,(0, 0), s*r)
    return cv2.absdiff(gs, gl)

img = cv2.imread("sample2.jpg",0 )
(h,w)=img.shape
pts1 = np.float32([[0,0],[w,0],[w,h],[0,h]])
pts2 = np.float32([[0,h*1/4],[w*3/4,h*1/4],
                   [w,h*3/4],[w*1/4,h*3/4]])
M = cv2.getPerspectiveTransform(pts1,pts2)
baseImg = cv2.warpPerspective(
    img.astype('uint16'),M,(w,h))

for i in range(100,5,-10):
    pts1 = np.float32([[0,0],[w,0],[w,h],[0,h]])
    pts2 = np.float32([[0+i,h*1/4-i],
    [w*3/4+i,h*1/4-i],[w+i,h*3/4-i],[w*1/4+i,h*3/4-i]])
    M = cv2.getPerspectiveTransform(pts1,pts2)
    img2 = cv2.warpPerspective(DOG(img, i, 1.05),M,(w,h))
    baseImg = cv2.addWeighted(baseImg, 0.9, img2, 0.3, 0)

plt.figure(figsize=(6,6))
plt.imshow(np.array(baseImg)) 
plt.autoscale(False)

Python/OpenCVで画像多重解像度解析コードを書いてみる








■Powered by yagm.net