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-02-25[n年前へ]
■微小4次元計測をしてみたい
デジタルカメラ、実体顕微鏡、動画の三題話
最近はデジタルカメラ(以降、デジカメと呼ぶ)が大流行りである。実験の記録に使うと大変便利だ。ところで、実体顕微鏡の接眼部からデジカメで撮影するという話題が
の辺りにある。この撮影法の難しさは、デジカメの種類によって違う。例えば、FujiFilmのFinePix700では光軸合わせに結構苦労する。ところが、ソニーの「DigitalMavica(技術者向けのオプション(例えばオシロスコープ・フード)などもあって便利)」ではこの撮影方法はとても簡単である。「Mavica」のレンズを実体顕微鏡の接眼部に合わせるだけで、視野をうまく合わせることができる。といっても、実体顕微鏡にはCCDなどを接続してあることが多いため、単に実体顕微鏡の接眼部をデジカメで撮影するだけでは面白味が少ない。もちろん、高いCCDカメラの代りにメガピクセルのデジカメを使えるメリットは大きいとは思う。
しかし、実体顕微鏡(双眼式)で何が良いかといえば、立体に見えることである。しかし、CCDカメラの接続は一眼式になってしまう。これまで、一つの実体顕微鏡に2つのCCDを接続できるような実体顕微鏡は見たことがない。そこで、接眼部からデジカメ撮影をする方法なら、立体撮影をすることができるので、実体顕微鏡の長所を生かすことができる。
これがそのサンプルである。交差法と平行法の両方を示す。立体に見えるはずである。
それでは、3次元計測を行ってみる。まずは、マーキングをする。基板上とICチップ上にA,B,C,Dという4つのマーキングを行う。
奥行き方向(Z方向としておく)に違いがある場合には、左右の画像でX方向のずれが生じる。そのずれ量を計算してやれば、Z方向の計測を行うことができる。つまり3次元計測を行うことができる。
左 | X | Y | 右 | X | Y |
A | 124 | 33 | A | 133 | 35 |
B | 13 | 55 | B | 22 | 55 |
C | 136 | 167 | C | 144 | 167 |
D | 101 | 100 | D | 99 | 102 |
左右画像の(x,y)の差をとり視差を出す。すると、(A,B,C)とDの間で違いが有り、Z方向の距離が違うのがわかる。
左-右 | X | Y |
A | -9 | -2 |
B | -9 | 0 |
C | -8 | 0 |
D | 2 | -2 |
この結果から、(x,y,z)を描くと以下のようになる。x-y座標上にzの値を書いてある。Dのポイントのみがz方向に近いのがわかる。
もちろん、本来は光学系から係数などを導くのだが、今回は行っていない。大雑把な説明である。また、同じようなやり方で、3次元表面計測も行うことができる。
ソニーの「DigitalMavica」の素晴らしい所は光軸合わせが簡単なだけではない。動画をmpegファイルとして撮影することができる。というわけで、2台買えば実体顕微鏡の画面を立体動画として保存できる。それが微小四次元計測である。
残念ながら、今回は1台しか使えないので、動画サンプルを示すだけである。mpegファイルをgifに変換したものを以下に載せておく。TFT液晶の拡大画面である。映像の終わりで実体顕微鏡の接眼部からカメラを外しているのがわかると思う。
動画サンプル MPEG形式 507kB
動画サンプル GIF形式155kB (上を縮小したもの)
その他関連情報
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-07-24[n年前へ]
■視点
ここにいるよ
長野県の須玉にある病院で撮影した写真である。古い顕微鏡を光が照らそうとしている。顕微鏡を覗いてみたが、レンズが汚れているせいかうまく焦点を合わせることができなかった。光学系にとって焦点をいかに先鋭にするかは一番苦労するところである。
景色に焦点を合わせて、フィルムに結像させるのがカメラだ。しかし、フィルムに写っているのは単なる景色ではない。カメラの光が集まる焦点にフィルムが位置していると思い込むとわからなくなる。逆から考えてみれば簡単に判るはずだ。カメラの視点にフィルムが位置しているのだ。フィルムに景色が写っているのではなく、フィルムが景色を選び、景色を切り取っているのである。
写真に写っているのは、撮影者の視点なのである。写真を見れば、撮影者が、どこに立ち、何を見てるかが浮かび上がってくるはずである。フィルムに写っているのは撮影者自身なのだ。
1999-08-08[n年前へ]
■瞳の中の真実
目の屈折率を調べよう
先日、近所の海へ行ってきた。水中メガネで覗いているとまるで熱帯魚みたいな魚が泳いでいて素敵なのだ。水中メガネを使うか使わないかで、海の楽しさは雲泥の差である。水中メガネで覗いてみると、裸眼の時とは別世界のようにくっきり見えるのである。
さて、「水中視の光学」と言えば、物理の散歩道の「アユと泳ぐ」(新物理の散歩道-第2集- 中央公論社)に詳しく面白い考察がされている。本WEBでもScrapsにて「焦点」ということを考えたばかりなので、「アユと泳ぐ」と同様の解析を「できるかな?」風に行ってみたい。光学シミュレーターを作ってみたいのである。そのために、まずは人間の目の中の屈折率を調べなければならないだろう。というわけで、今回は下調べ編である。
それでは、人間の左目の水平方向の断面図を調べてみる。
この中で普通のカメラでいうレンズの役割を果たしているのはどこだろうか。レンズの部分を赤く塗るとどのようになるだろうか?下に並べた3つのうちどれだと思われるだろうか。
A | B | C |
まずは、目の中の物質の屈折率を調べてみると、以下のようになる。
場所 | 屈折率 |
角膜 | 1.376 |
眼房 | 1.336 |
水晶体 | 1.386 |
硝子体 | 1.336 |
空気(15℃の乾燥空気)の屈折率はほぼ1.0であるから、空気と比較するならば、目の中の物質はほぼ同じ屈折率を持つといっても良い。角膜も眼房も水晶体も硝子体も同じ屈折率を持つとして良いだろう。すなわち、大雑把な近似においては図.2のCに示したようなピンク色のレンズがあるとして良い。つまり、目全体がレンズであり、レンズ面に焦点を結ぶようになっているのである。水晶体は若干の補正を行うに過ぎない。レンズの焦点はレンズから離れた場所にあるはずと思っている人もいるかもしれないが、レンズの表面に焦点があるものも実はよく使われている。
さて、人間が水の中に入るとどうなるだろうか?水は1.333(589.3nmの波長の光に対して)の屈折率を持つ。これは人間の目の中の物質の屈折率とほぼ同じである。水を主体として出来ている人間なのだからこれは当然だろう。しかしこれでは、目は光を屈折させることはほとんどできなくなる。そのため、水の中に入るときには水中メガネなどで目の回りを空気で満たしてやることが必要なのである。
本題からははずれるが、資料を眺めていると、面白いグラフが目に入ってきた。人間の目の断面方向の視細胞個数の分布を示したものであり、錐体と桿体を個別に示してある。「盲点」なんかも図中にある。
目に映る明るさって何ですか? - 君は天然色 - (1999.07.05)
の回に錐体と桿体については触れたが、桿体は1lx程度の暗さから働き、明るさのみに反応する。一方、錐体は10lx以上で働く。従って暗いものを見るには桿体の働きが重要になるわけだが、上のグラフは桿体が視点の中心にはほとんど存在していないことを示している。
従って、暗い所でものを見る際には、視点の中心では感度が足りなくなりやすいことがわかる。これまで、暗い星を眺めるときに視界の中心で見ようとすると見えないのだが、少し視点をずらしてやると見えるような気がしていたのだが、それは気のせいでは無かったようである。
さてさて、資料集めも終わったので「瞳シミュレーションソフトウェア」の開発に着手したいと思う。もちろん、時間がかかるのはいつものことだ。すぐにはできないけどね。