1999-01-10[n年前へ]
■宇宙人はどこにいる?
画像復元を勉強してみたい その1
知人から「自称UFO写真」というのものが冗談半分(いや100%位か)で送られてきた。その写真はボケボケの画像なので何がなんだかなんだかわからない。そこで、ぼけぼけ画像を復元する方法を勉強してみたい。UFOは冗談として、画像復元において進んでいるのは天文分野である。そこで、このようなタイトルなのである。もちろん、画像復元の問題は奥が深すぎるので、じっくりと時間をかけてみる。今回はMathematicaを使って試行錯誤を行った。
ボケ画像を復元するには、ボケ画像がどのように出来ているかを考えなければならない。そこで、ごく単純なぼけ画像を考えてみる。まずは以下の画像のような場合である。
画像:1のような点画像が、画像:2のような分布のボケ画像になるとすると、次のような関係が成り立つ。
(式:1) 画像:4 = 画像:3 * 画像:2
画像:1のような点画像が画像:2になるなら、それを参照すれば、画像:3のような点画像の集合がどう
ボケるかは計算できる。つまり、それが画像:4になる。ここで、*はコンボリューションを表している。
よくある信号処理の話で言えば、画像:2はインパルス応答である。といっても、これはごくごく単純な場合(線形シフトインバリアントとかいろいろ条件がある)の話である。まずはそういう簡単な場合から始めてみる。
このようなごく単純な場合には
(式:2) 画像:3 = 画像:4 * (1/画像:2)
とすれば、画像:3を復元できることになる。
そこで、まずは単純な1次元データで考える。下の画像:5のようにボケる場合を考える。ここでは、ガウス分布にボケるようにしてある。
であったが、* すなわち、コンボリューションは
逆フーリエ変換(フーリエ変換(オリジナル画像) x フーリエ変換(ボケ具合))
と表すことができる。つまり、周波数領域で掛け算をすれば良いわけである。
それでは、試しに適当な1次元データをつくって、画像:6とコンボリューションをとってやり、ボケさせてみる。
逆フーリエ変換(フーリエ変換(画像:9) / フーリエ変換(画像:7))
= InverseFourier[Fourier[Image8] / Fourier[Image6]]; (*Mathematica*)
とやると、次のデータが得られる。
(式:2) 画像:3 = 画像:4 * (1/画像:2)
を見るとわかるが、画像:2が周波数領域で0になる点があったりすると、計算することができない。また、0に近いとむやみな高周波数の増幅が行われて使えない。
そこで、この方法の修正として、ウィーナフィルターなどの最小平均自乗誤差フィルターがある。これにも多くの不自然な条件のもとに計算される(らしい)。しかし、infoseek辺りで探した限りでは、ウィーナフィルターを用いた画像復元の標準であるらしい。
この方法は先の逆変換に対して、次のように変形されたものである。Mathematicaの表記をそのまま貼り付けたのでわかりにくいかもしれない。
Noise ノイズのパワースペクトル
Signal 信号のパワースペクトル
Boke ボケる様子のインパルス応答
Conjugate 複素共役
BokeData ボケ画像
ResData1 計算した復元画像
Boke1 = (Boke^2 + Noise/Signal)/Conjugate[Boke]; (*Mathematica*)
ResData1 = InverseFourier[Fourier[BokeData] / Fourier[Boke1]]; (*Mathematica*)
である。Noise/SignalはS/N比の逆数であるから、SN比の大きいところではインバースフィルターに近づく。また、インバースフィルターの計算不能な点が消えている。
これを使って復元してみたのが、次のデータである。
まずは、ボケのフィルター(PSF=PointSpreadFunction(どのようにボケるかを示すもの)、2次元のインパルス応答)である。
その他線形の画像復元法をいくつか調べたが、ウィーナフィルターやインバースフィルターとほとんど同じような物が(素人目には)多かった。そこで、ウィーナフィルタなどとはやり方がかなり異なるものについて、いずれ挑戦してみたい。
関係はないが、ウィナーと言えばサイバネティクスが思い浮かんでしまう。当然、ロゲルギストが連想されるわけだが、文庫本か何かで岩波版と中公版の「物理の散歩道」が安く売り出されないのだろうか?売れると思うんだけど。新書版は高すぎる。
宇宙人はどこにいるか? そういった話は専門家に聞いて欲しい。わからないとは思うが。
さて、ここからは、1999.01.24に書いている。シンクロニシティとでも言うのか、今回の一週間後の1999.01.17に
日本テレビ系『特命リサーチ200X』で
地球外生命体は存在するのか?( http://www.ntv.co.jp/FERC/research/19990117/f0220.html )
という回があった。何とこの回のコメンテーターは先の専門家と同じなのだ。偶然とは面白いものだ。
1999-01-14[n年前へ]
■ボケたエアーブラシで細かな字がかけるか?
画像復元を勉強してみたい その2
「宇宙人はどこにいる? - 画像復元を勉強してみたい その1-」ではボケた画像からオリジナルのシャープな画像を復元してみた。前回の話を例えて言うと、
- 太郎君が細かい字をエアーブラシで書いた。
- ボケボケのエアーブラシを使ったから、ボケボケの画になった。
- そのボケボケの画から、太郎君が何を画こうとしたか、考える。
ということであった。
今回、やってみたいのは以下のようなことである。
- 太郎君は太いエアーブラシで字を書きたい。
- しかも細かな字を書きたい。
- そんなことができるか?
直感的には、ボケボケのエアーブラシで細かい字など書けないように思う。その直感が正しいか調べてみたい。考え方は前回と同じく、
出力画像から、ボケ分布でデコンボリューション処理により、オリジナルの画像を計算する。
というやり方である。前回と違うのは出力画像がシャープな画像(先の例で言うと、細かな字)である、という所である。道具は今回もMathematicaを使う。
出力したい画像ファイルを読み込む。
<< Utilities`BinaryFiles`
StreamFile = OpenReadBinary["E:\jun\private\dekirukana\ufo\ufo.raw"]
ImageData = Table[ ReadBinary[ StreamFile , Byte] ,{x,64},{y,64}];
ListDensityPlot[ImageData,Mesh->False,PlotRange->{0,255}]
この細かな字を太いボケボケなエアーブラシで字を書けるか考える。
まずは、エアーブラシのボケボケ度をつくる。
(*正規分布=ガウス分布によるぼけパラメータを作成する*)
δ=10;
μ=32;
ListPlot3D[NormalBoke,ColorFunction ->Hue,Mesh->False,PlotRange->All]
ボケボケの太いエアーブラシである。
デコンボリューション用にガウス分布の場所をずらす。
NormalBoke = RotateRight[NormalBoke,32];
NormalBoke = Transpose[ RotateRight[Transpose[NormalBoke],32] ]; (*上へShift*)
ListPlot3D[NormalBoke,ColorFunction ->Hue,Mesh->False,PlotRange->All]
出力画像をエアーブラシのボケボケ度でデコンボリューションする。そうすれば、太郎君がどのように画を画けば良いかがわかる。はたして答えはでるのだろうか?
計算してみると答えが出てしまう。
SharpImage = Re[InverseFourier[ Fourier[ImageData] / Fourier[NormalBoke]] ];
ListDensityPlot[SharpImage/4,Mesh->False,PlotRange->All]
まず、本当にこれ(画像:4)にそってエアーブラシで画を画くと出力画像(画像:1)が再現できるか確認してみる。そこで画像:4と画像:3でコンボリューションしてやる。太郎君に実際にエアーブラシを使って画を画いてもらうわけである。
それでは、画いてみる。
ResImage = InverseFourier[Fourier[SharpImage] Fourier[NormalBoke]];
ListDensityPlot[Re[ResImage],Mesh->False,PlotRange->All]
画像:1が再現できた。つまり、太いボケボケのエアーブラシで細かい字が書けてしまうわけである。直感的には納得しがたい結果である(私だけかもしれないが)。
これには実はタネがある。画像:4を鳥瞰図でみると判るが、画像4は正負の値が高周波で並んでいる。
ListPlot3D[SharpImage/4,ColorFunction ->Hue,Mesh->False,PlotRange->All]
太郎君が使ったエアーブラシは太いボケボケのエアーブラシではあるが、吹き量に正負が両方ともあったのである。そのようなエアーブラシを使うと太郎君の腕(高テクニシャン)ならば細かな字が書けるわけだ。どんなパターンもかけるかはどうかまでは知らないが、少なくとも"hirax"という字は画ける。
前回のような光学系の例でも、これが何に対応しているかはすぐわかるが、一番分かりやすいのは電荷と電位の例だと思う。
電荷が周囲につくる電位分布はボケボケの分布である。ところが、金属などを適当に配置して、その金属に電位を印加してやると、鋭い電位分布をつくることができる。つまり、ボケボケの分布から鋭い電位分布を作成してやることができる。こちらなら直感的にもすぐ納得できるだろう。その際には、金属表面に電荷が鋭く集中するのも、よく知っている話だ。
実感用に電場計算を行った例を以下に示しておく。使った道具はCUPSの電場計算プログラムである。CUPSは教育用のプログラム集である。
一応、2次元膜の例で、金属を配置し、適当に電位を印加し、電位・電荷量計算を行ってみる。
もちろん、金属内部では均一な電位である。それを条件に解いているのだから当たり前だが。
その時の電荷分布を下に示す。金属表面に鋭い電荷分布が生じているのがわかるだろう。
ここでは大雑把な金属の配置にしてしまったが、格子状の金属配置にして、互い違いに違う極性の電位を印加すれば(細かい字に相当する)、正負の極性の電荷分布が鋭く現れるのは当たり前の話だ。
電位、電場、電荷量を一緒に示しておく。
今回の話は、単なる計算上の話である。それに、何かどこかで仮定を間違っているような気もするんだよなぁ。信用度アルファ版だからまぁいいか...
1999-03-14[n年前へ]
■ぼやけた測定系でシャープな測定をしたい
恋のインパルス応答 WhiteDay記念
新幹線でトンネルを通過していた時のことである。窓の外を照明灯が走馬灯のように過ぎていくのを見ていた。人の一生が走馬灯のようだ、とか、光陰矢のごとし、とか哲学的なことを考えていた、言い換えればボケっとしていたのである。「あぁ、頭もボケているけど、窓の外のライトもボケているなぁ。動体視力が低下しているのかなぁ」と思った瞬間に次のようなことを考えた。
- 窓の外の照明灯がぼやけているのは、目のピントが合っていないからだということにする。
- ピントは合っていないが、目の時間的な応答性は問題ないとする(本当は問題がいっぱいあるだろう)。
- 仮に、鋭い一点の光が窓の外を通過したときに見えるパターンがわかっている、としてみる。
- だとしたら、あとは「宇宙人はどこにいる? - 画像復元を勉強してみたい その1-(1999.01.10) 」と同じようにして、窓の外の光パターンを復元できる。
鋭い一点の光 | -> | このときに見えるパターンがわかっているなら、 |
元の光パターンを再現できる | <- | こういうパターンが見えたなら |
そして、これは一般的な測定装置でも使える話だ(むしろ、当たり前過ぎるか)。そういえば、光学望遠鏡なんかはその最たるものだ。しかし、一般生活?では色々な測定器を使うが、使用目的に応じたインパルス応答の測定はそれほどしたことがない。それは、原理上ぼやけてしまうような測定機器(地表に置いた光学望遠鏡のように)であるならなおさらである。たまに、インパルス応答の測定をしたにしても、単に測定をしただけで終わることが多い。もしかしたら、結構面白い結果がでるような測定機器もあるかもしれない。
どういうことをしたいか、もう一度さらってみる。といっても、内容は「宇宙人はどこにいる?- 画像復元を勉強してみたい その1- (1999.01.10) 」 そのままである。そんなことはよく分かっている、という方は本文章の末尾の人の気持ちと出来事に関するhiraxの関係式の話の方へ飛んでもらえばいい。
まずは、「鋭い一点の光(あるいは、測定されるべきエネルギー源)」をつくる。
データ.1 |
このときに見えるパターンはこんなものだとしよう。見えるパターン(or 測定された結果)がブロードになっているのは、色々な理由があるだろう。
データ.2 |
それでは、以下のようなパターンが見えたとしよう。
データ.3 |
それでは 「データ.3のフーリエ変換」 / 「データ.2のフーリエ変換」 を計算し、その結果を逆フーリエ変換する。それをデータ.4として示す。
データ.4 |
このようにして、ぼけた測定系でシャープな測定ができたことになる。「宇宙人はどこにいる? - 画像復元を勉強してみたい その1-(1999.01.10) 」と全く同じ話である。それを何故繰り返すかというと、身近な測定器でも色々やってみたいという宣誓と提案である。無理だとおもえる測定も、実は無理ではないものもあるのではないだろうか。
ところで、今回の場合、境界条件は完全な周期性をもつように考えている。同じ状態が無限に繰り返されている。計算の簡単のためにそうしてある。この状態を例えてみると、光源(or エネルギー源)は円上に配置されているようなものである。そう、これは走馬灯そのものである。一応、その概念図を下に示しておく。喩えれば、円筒上のエネルギー源の分布を測定するようなものだ。
今回の計算のモデルはこのような「ぼやけた走馬灯」である。今回は、単に計測機器で測定をするだけではなく、その後の解析をさらに進めることができるか、という話である。今回は前振りだけであるが、いずれ実験をする予定でいる。例えば、ライトペンなどを作成して、実験をする予定でいる。
さて、話が飛躍するようであるが、人の一生が「ぼやけた走馬灯」のようであつならば、今回の解析と同じようなことをすることができる。
「一生の気持ちのフーリエ変換」 / 「一瞬の出来事により生じた気持ちのフーリエ変換」= 「一生の出来事のシャープな出来事」のフーリエ変換
という、人の気持ちと出来事に関するhiraxの関係式が成り立つかもしれない。この関係式を私は提案したいと思う。この関係式は、恋愛問題に適用すると面白いと思う。つまり、
( 「一生の気持ちのフーリエ変換」 / 「一人の人により生じた恋のフーリエ変換」)の逆フーリエ変換 = 「一生の中で好きになった人の出現データ」
となる。例えば、一人の人に対する気持ちが支配的な人の一生は「恋のインパルス応答」を示していることになる。具体的に言えば、尾花沢兼次の一生は「太郎ちゃん」に対する恋のインパルス応答を示しているのである。(あぁ、元ネタがわかる人がいるだろうか。)
さて、今日はホワイトデイである。恋愛中の人も「恋のインパルス応答」などについて考え、相手(あるいは自分の)過去の恋愛遍歴などについて考えてみるのも良いと思う。 いや、余計なお世話か。
1999-03-30[n年前へ]
■ペットボトルロケット
天まで昇れ
-天まで昇れ-
先日、2月21日、糸川英夫が死去した。ロケットを研究し続け、日本のロケット技術を築き上げた人である。
ISAS(宇宙科学研究所)の歴史(http://www.isas.ac.jp/info/history/index-s.html)
そこで、私たちが簡単に打ち上げることのできる、ペットボトルロケットについて考えてみたい。ペットボトルロケットは素晴らしい科学おもちゃだ。ロケットが大気中を飛ぶときと、宇宙空間を飛ぶときの原理の違いを的確に体現していると思う。それは、ペットボトルの中に水を入れてあることだ。ペットボトル中に水を入れることで、革命的ないくつかの効果があると私は思う。挙げてみると、こんな感じだ。
- 空気と水の粘性の違い->水の方が長時間にわたり一定の噴出量にしやすい。
- 気体(空気)と液体(水)の圧縮性、質量の違い->
- 空気を噴出する場合には、ロケットの前後の圧力差が推進力を支配する。
- 水を噴出する場合には、反作用力(運動量保存)が推進力を支配する。
空気のほうは温度が違うと結構違う。摂氏0度で1.293kg/m^3であり、100度で0.946kg/m^3である。もちろん、気圧が違えば、それに比例して体積は大きく変わる。
結局、空気と水とでは質量が約1000倍違う。だから、ペットボトルロケットが後ろから水を噴出する場合には、空気の場合に比べて、1000倍もの反作用力を受けるのである。つまり、ロケットは1000倍の推進力を持つことになる。ただし、空気の場合には、ペットボトル中で数気圧分圧縮されているので、質量も数倍になる。したがって、正確には1000倍の数分の一ということになるだろう。
逆に、ロケットの前後の圧力差を考えてみる。、空気の場合には、前後で数倍の圧力差が生じるだろうが(WEBで調べると5-7倍位が通常上限のようだ)、水の場合には前後での圧力差はほとんどないだろう。だから、水を噴出する際にはこれによる推進力はほとんど働かないだろう。しかし、空気を噴出する際にはこの圧力差によりロケットは進むことになる。真空中ではこの方法では推進力はほとんど働かない。
こういった違いをもとに子供(といっても高校生位か)に宇宙でのロケットの原理を説明すると面白そうだ。これら推進力の違いは、とても大きいと思う。
かつては、セルロイドを使った小さなキャップロケットの時代だった。今は、ポリエチレンテレフタラート製の大型ロケットの時代に変わった。
今日は久しぶりに雪が降った。「雪は天からの手紙である」と言ったのは、雪を研究し続けた中谷宇吉郎だった。ならば、私たちが打ち上げるペットボトルは天へと届けるロケットだ。空へ高く届くように、私たちはそれを打ち上げ続ける。いつか、私たちのロケットは天へ昇る。
1999-09-01[n年前へ]
■画像に関する場の理論
ポイントは画像形成の物理性だ!?
今回は、
夏目漱石は温泉がお好き? - 文章構造を可視化するソフトをつくる- (1999.07.14)
の回と同じく、「可視化情報シンポジウム'99」から話は始まる。まずは、「可視化情報シンポジウム'99」の中の
ウェーブレット変換法と微積分方程式によるカラー画像の圧縮および再現性について
という予稿の冒頭部分を抜き出してみる。「コンピュータグラフィックスを構成する画素データをスカラーポテンシャルあるいはベクトルポテンシャルの1成分とみなし、ベクトルの概念を導入することで古典物理学の集大成である場の理論が適用可能であることを提案している」というフレーズがある。
着目点は面白いし、この文章自体もファンタジーで私のツボに近い。しかしながら、肝心の内容が私の趣向とは少し違った。何しろ「以上により本研究では、古典物理学の場の理論で用いられるラプラシアン演算を用いることで、画像のエッジ抽出が行えることがわかった。」というようなフレーズが出てくるのである。うーん。
私と同様の印象を受けた人も他にいたようで(当然いると思うが)、「エッジ強調・抽出のために画像のラプラシアンをとるのはごく普通に行われていることだと思うのですが、何か新しい事項などあるのでしょうか?」という質問をしていた人もいた。
また、話の後半では、画像圧縮のために、ラプラシアンをかけたデータに積分方程式や有限要素法などを用いて解くことにより、画像圧縮復元をしようと試みていたが、これも精度、圧縮率、計算コストを考えるといま一つであると思う(私としては)。
画像とポテンシャルを結びつけて考えることは多い。例えば、「できるかな?」の中からでも抜き出してみると、
- 分数階微分に基づく画像特性を考えてみたい- 同じ年齢でも大違い - (1999.02.28)
- ゼロックス写真とセンチメンタルな写真 - コピー機による画像表現について考える- (99.06.06)
- コピー機と微分演算子-電子写真プロセスを分数階微分で解いてみよう-(1999.06.10)
現実問題として、実世界において画像形成をを行うには物理学的な現象を介して行う以外にはありえない。「いや、そんなことはない。心理学的に、誰かがオレの脳みそに画像を飛ばしてくる。」というブラックなことを仰る方もいるだろうが、それはちょっと別にしておきたい。
「できるかな?」に登場している画像を形成装置には、
コピー機と微分演算子-電子写真プロセスを分数階微分で解いてみよう-(1999.06.10)
ゼロックス写真とセンチメンタルな写真- コピー機による画像表現について考える - (99.06.06)
で扱ったコピー機などの電子写真装置や、
宇宙人はどこにいる? - 画像復元を勉強してみたいその1-(1999.01.10)
で扱ったカメラ。望遠鏡などの光学系や、
ヒトは電磁波の振動方向を見ることができるか?- はい。ハイディンガーのブラシをご覧下さい - (1999.02.26)
で扱った液晶ディスプレイなどがある。そのいずれもが、純物理学的な現象を用いた画像形成の装置である。
例えば、プラズマディスプレイなどはプラズマアドレス部分に放電を生じさせて、電荷を液晶背面に付着させて、その電荷により発生する電界によって液晶の配向方向を変化させて、透過率を変化させることにより、画像を形成するのである。
また、逆問題のようであるが電界・電荷分布測定などを目的として液晶のボッケルス効果を用いることも多い。液晶を用いて得られる画像から、電界分布や電荷分布を計測するわけである。これなども画像と場の理論が直に結びついている一例である。
参考に、SHARPのプラズマアドレスディスプレイを示しておく。
また、電子写真装置などは感光体表面に電荷分布を形成し、その電位像をトナーという電荷粒子で可視化するのであるから、電磁場を用いて画像形成をしているわけである。だから、場の理論を持ちこむのは至極当然であり、有用性も非常に高いだろう。そういった視点で考察してみたのが、
である。 同様に、画像圧縮に関しても、画像形成の物理性に着目することで実現できる場合も多いと思うのであるが、それは次回にしておく。