hirax.net::Keywords::「画像処理」のブログ



1998-11-17[n年前へ]

スクリーンセーバーを作ろう。 

FilmStrip

(1998.11.17)

 今回はスクリーンセーバーを作りたい。 指定ディレクトリに画像ファイルを入れておけば、それらの画像ファイルを自動再生するスクリーンセーバーである。ただ再生するだけではつまらないので、35mmのポジフィルム風に再生するものにした。フィルムはコダック コダクロームである。独特の濁った色会いが、好きなのだ。

 プログラムの土台にはC++BuilderのCDに付属のスクリーンセーバーのサンプルを使用している。

 今回のテスト版は192x128のランドスケープのKodak PhotoCDの小サイズを基本としている。つまり、35mmフィルムのランドスケープの縦横比である。その他のサイズの画像でも自動的にフィッティングするようにはしてあるが、縦横比が合っていないと、変な風になってしまうから注意が必要である。また、今回はwindowsBitmapファイルにしか対応していないが、いずれ、任意の画像ファイルに対応させる予定である。

 まずは、以下をダウンロードし、filmstrip.lzhを解凍したFilmStrip.scrをシステムディレクトリ(通常、Windows95,98であればWindowsディレクトリの下)に入れ、「サンプル画像ファイル(Image.lzh)」を解凍したものを、C:\のすぐ下に置く。あとは、これでスクリーンセーバーが使えるようになる。とはいっても、WindowsNT4.0でしか動作確認はしていない。

左が実行中の画面、右がその拡大図。実行時にはフィルムが次々と進んでいく。

 設定画面はこのようになる。現在は「撮影間隔」のスピード調整しかできないが、いずれ「モノクロ変換」、「セピア変換」、「ソフトフォーカス」などの画像処理もかけてみたい。モノクロにする時にはフィルムはもちろんネオパンプレストだ。

左が画面のプロパティでFilStripを選択したところ、右がFilmStripの設定画面

 フィルムストリップ形式にすると、映画を連想する人も多いかもしれない。今日は、淀川長治の映画解説の最後の日である。

1999-06-30[n年前へ]

デジカメ画像をスクリーンセーバーにしたい 

記念写真を飾ろう

 最近は、飲み会での撮影はデジカメを使うことも多い。しかし、デジカメで撮った画像というのはそれっきりになってしまうことも多い。特に宴会で撮った画像なんかはどう使ったらいいか困ってしまう。とはいっても、送別会で撮った写真などはなんとかして有効利用したいものである。
 というわけで、デジカメ画像を使えるスクリーンセーバーを作ってみたい。そうすれば、スクラップブック代わりにも使える。しかもとびきりかっこいい奴を作りたい(私の主観を基準として)。

 というわけで、写真アルバム風のスクリーンセーバーを作りたい。つまりは、「スクリーンセーバーを作ろう。- FilmStrip - (1998.11.17) 」の回で作ったスクリーンセーバーを蘇らせてみたのである。まずは、設定ダイアログを見て欲しい。

設定画面

  これを見れば大体わかると思うが、主な変更点はSusieプラグインに対応することにより、さまざまな画像ファイルに対応することができるようになったのと、「テーマ」を複数用意したことである。
 Susie「kanaさんのWEB中のSusie関係のlinkページ」から辿って、対応するSusieプラグインを手に入れてくれば、大抵のデジカメの画像を表示することができるだろう。大抵のデジカメはJPEGファイルなので、JPEG用のプラグインがあれば使えるものも多いと思う。Susieプラグインはシステムディレクトリに入れれば使えるようになる。あるいは、Susieをインストールした所でも良い。
 もし、全くSusieプラグインを入れないと、BMPファイルしか開くことができないので注意が必要である。

 また、画像ファイルの入っているディレクトリは「@マークボタン」を押せば変更することができる。

 それでは、テーマを紹介してみる。まずは、デフォルトの「カラーリバーサルフィルム」テーマである。リバーサルフィルムがモチーフである。これのテーマソングは(別に曲が流れるわけでも何でもないが)「僕のコダクローム」だ。

カラーリバーサルフィルム

 次は、「白黒フィルム(コンタクトプリント)」テーマである。白黒フィルムを現像した後に必ず行うコンタクトプリント(ベタ焼き)がモチーフだ。グレイ化処理を行いながら表示を行う。これのテーマソングは「カメラ!カメラ!カメラ!」だ。

白黒フィルム(コンタクトプリント)

 次は、パーティーションなどにポラロイドを貼っているような「ポラロイドのピンナップ」テーマである。テーマソングは「君は天然色」だ。

ポラロイドのピンナップ

 そして、最後はコルクボードにセピア色になった写真を貼りつける「白黒のピンナップ」テーマだ。セピア処理をしながら表示してくれる。テーマソングは「卒業写真」だ。

白黒のピンナップ

テーマソングを見ると作者の年齢が想像されるが、そうそう年寄りではないつもりだ。と、一応書いておこう。

ダウンロードはこちらだ。ちなみにWindowsNTには未だ対応していない。それは対応させるとデバッグが面倒だからだ。また、

スクリーンセーバー FilmStrip99 (filmstrip99.lzh) 537kB

著作権表示 (必要ない人はパスだ。)

 (デフォルトで画像ディレクトリに指定されている)C:\image\bmpに入れるためのファイルはこちら。先にこちらの画像ファイル群をC:\image\bmpというディレクトリの下に入れてから動かして欲しい。しつこいようだが、C:\image\bmpの下に画像ファイルがいっぱいという状態にするのである。

サンプル画像ファイル(Copyright Jun Hirabayashi)(お気に入りのおすすめ。) image.lzh 805kB222kB

そうでないと、一番最初の起動時にエラーが出るだろう。もし、自分で表示させたいものがあるなら設定ダイアログから変更してしまえば良い。もちろん、完成度は未だ高くないのはいつものことである。それでも悪さはしないはずだ。

 「こんなテーマがあれば良いのに」という意見があればぜひぜひメールを送って頂きたい。あと、動作不良に関しては、(必ずやわらかい口調で)メールして欲しい。どんどん直していくつもりだ(つもり)。
 また、リアルタイムに高機能な画像処理を行うCPU使い放題バージョンも開発中である。こちらもご意見募集中である。

1999-07-05[n年前へ]

目に映る明るさって何ですか? 

君は天然色

 前回、
デジカメ画像をスクリーンセーバーにしたい-記念写真を飾ろう - (1999.06.30)
を作るために、いくつか調べ事をした(ホントはずっと昔に)。それについてまとめておきたい。
調べたことは、
  • カラーから白黒への変換はどうする?
  • セピアカラーって一体何だ。
  • セピアカラーへの変換はどうやろう?
こんな感じだ。今回はその第1回目の「カラーから白黒への変換はどうする?」である。

 カラーから白黒への変換はどうする? どうしよう? これは結構難しい問題(結果的にやったことは簡単でも、プロセスとしてはすごく難しい)だ。そうそう白黒の世界を見たことのある人はいないだろう。特殊な状況下(たとえば、すごく暗い所とか)では色を感じないこともあるだろうが、普通の世界は天然色である。フルカラーの世界だ。そもそも明るさって一体何だ?(明快に答えられる方教えてください。) 例えば、下の図で明るい順番はどうなっているだろうか?自信を持って答えられるだろうか。

明るい順番は?

 とグチを言っていてもしょうがないから、決めてしまおう。うす暗い(1lx程度)部屋で景色を眺めてみよう。その時見える世界が、明るさの世界だ。そこには色など存在しない。確かめて欲しい。今回は、とにかくそれを「明るさ」の尺度としてしまおう。
(興味ある方は明るさを測ろう- 新技術の女神 -(1998.11.13)もご覧下さい)
 次に明るい部屋へ移動する。そこでは、新たなものが加わる。それが「色」である。ということで、「明るさ」+「色」で世界を表現することにしよう。

 いきなりではあるが、人間が光を感じる網膜内の光受容器には錐体と桿体がある。

霊長類網膜内の錐体と桿体

「視覚と画像」 大頭・行田 著 森北出版より
桿体は1lx程度の暗さから働き、明るさのみに反応する。一方、錐体は10lx以上の所で働き色に対して反応する。従って、暗い部屋では桿体のみが働くため、明るさはわかるが色を認識することができない。というわけで、先ほどの「暗い部屋では...」の例え話に繋がるわけである。

 それでは、明るい部屋で感じる色はどうなっているだろうか。色を感じる錐体の中には波長感度の異なる3種類の視物質がある。それぞれの波長感度を以下に示す。

3種類の視物質の波長感度

CQ出版 洪 博哲著 「お話・カラー画像処理」より 

 次に、それらの3種類の視物質による錐体が組み合わさった時の波長比視感度を以下に示す。点線で示してあるほうは比較的暗い場所での波長比視感度なので、今回は無視して欲しい。

標準比視感度

「視覚と画像」 大頭・行田 著 森北出版より

 後は、このグラフを元に赤、緑、青の3点で重み付けしてやれば良いだろう。

というわけで、グレー化のために使っているのはこの式だ。

  • Red: ptr[2]
  • Green: ptr[1]
  • Blue: ptr[0]、として
ptr[1] = ptr[0] = ptr[2] = 0.3*ptr[2]+0.59*ptr[1]+0.11*ptr[0];
 やっと、ここまで辿りついた。結局使うのはこんな簡単な式なんだ、っていうツッコミは無しにして欲しい。同じ式を使うのでも、私はそこまでのプロセスも重視したいのだ。

 さて、こういった色を扱う話題であれば、脇色彩研究所のWEB(http://www.mmjp.or.jp/rwicp/ )中から

といった項目が参考になるだろう。これまで、とある事情によりこのWEBを紹介できなかったが、これからは紹介し放題だ。
 また、文中でも書いたが、「明るさとは***ということだ」と明快に答えられる方は私に是非教えて頂きたい。もし、素晴らしい答えが頂けたら、粗品(言葉通りの)を進呈しても良いと思っているくらいだ。

 なお、以下のような答え方は遠慮致したい。

例1:
私 「液体と固体はどう区別するの」
A 「融点を境にして上と下」
私 「....」

例2:
私 「クジラは哺乳類、魚類どっち?」
A 「卵生まないから哺乳類」
私 「...」

1999-09-17[n年前へ]

モアレ、デバイス、2項分布の三題話 

淡色インクの副作用

 今回は、9ヶ月間も寝かせた伏線にまつわる話である。いや、別に寝かせるつもりは無かったのだが、いつのまにかそんなに時間が経ってしまった。

 以前、

という話があったが、その2つを結びつけるミッシングリンクについて考えてみたいと思う。「2項分布のムラについて考える(1999.01.08)」の最後に「今回の話はあることの前準備なので、これだけでは話しが全く見えないかもしれない。というわけで、続く...」と書いた。「その続き」というわけである。

 始めに「2項分布のムラについて考える(1999.01.08)」の要点をまとめると以下のようになる。それは、

  1. ランダムと呼ばれるものの内で代表的な2項分布においては、当然のごとく「ある領域での平均値はばらつく」。
  2. そして、そのばらつきは直感的に考える程度よりももっとばらつく。
  3. 例えば、2値画像で考えるならば、2048dpi程度の解像度でランダムなデータを並べた場合には、人間の目はざらつきを感じてしまう。
ということであった。

 そして、「モアレはデバイスに依存するか?(1998.11.20)」での要点は

  1. モアレにはデバイス依存性がある
  2. 線形な重ね合わせが成り立たない場合にはモアレが発生する。
ということであった。

 最近のインクジェットプリンターはCMYKの4色インクだけでなく、淡色インクも使うものもある。淡色のインクを使うことで階調豊かな画像を印字できるわけだ。4色インクだけではディザなどを使って、解像度を下げて階調を出さなければならないわけであるが、それが不要になるわけだ。

 解像度を下げないですむわけであるから、ディザのざらつきを感じないですむわけだ。しかし、淡色のインクを使った場合の効果というのはそれだけではないように思われる。HP(ヒューレッドパッカード)などのWEBのプリンター紹介を読んでいると、「淡色のインクを重ねて濃度を出す」というような記述を目にする。これは「少なくとも淡色インクでは線形性(あるいはそれに近い関係)が成り立つ」ということだ。

 インクジェットプリンターの解像度を上げたときに、インク滴が意図しないところへずれてしまうことはきっとあるだろう。その際に他のインク滴と重なったらどうなるだろうか?意図しなくても他のインク滴との重ね合わせは発生してしまうだろう。
 重ね合わせが成り立たない、非線型なインクではモアレが発生する。言いかえれば、意図しない濃度のばらつき・ざらつきが発生してしまう。「2項分布のムラについて考える(1999.01.08)」で考えたようにランダムに重ね合わさるから広い領域では一定だろうというのは予想外に成り立たないのである。でたらめというのは私の予想外に大きく効いてくるのである。
 しかし、重ね合わせに線形性が成り立つ淡色のインクではモアレが発生しない。すなわち、いくらランダムにインク滴の重ね合わせが生じてしまったとしても、意図した通りの濃度をだすことができ、ばらつき・ざらつきは発生しないことになる。参考までにインクジェットの印字画像の拡大写真を示してみる。

インクジェットの印字画像の拡大写真
(CQ出版 洪 博哲著 お話・カラー画像処理より引用したものとそれを加工したもの)
淡色インクを使った出力例
左をグレイ化したもの
 インク滴が重なったところで濃度の線形性が保たれている、すなわち、重なったところはちゃんと濃くなっている、のがわかると思う。

 「重ね合わせに線形性が成り立つ淡色のインクではモアレが発生しない。すなわち、いくらランダムにインク滴の重ね合わせが生じてしまったとしても、意図した通りの濃度をだすことができ、ばらつき・ざらつきは発生しない」と、書いただけでは意図するところが伝わらないと思うので、「モアレはデバイスに依存するか?(1998.11.20)」で使った画像を用いて考えてみる。この画像は重ね合わせがある幾何学模様で生じているが、この現象がランダムに起こっているものとして読み替えて欲しい。

淡くない色のインクで重ね合わせ(インク滴の意図しない重なり)を行う。
1回目の印字
2回目の印字
出力画像
 淡くない色のインクで重ね合わせ(インク滴の意図しない重なり)が生じると、黒と白の模様が生じる。もしこの重ね合わせ(インク滴の意図しない重なり)がランダムに起きるとしたら、ランダムな黒白模様が発生することになる。そして、「2項分布のムラについて考える(1999.01.08)」で調べたようにその影響は予想以上に大きいのである。

 下は、淡色のインクで重ね合わせ(インク滴の意図しない重なり)が生じた場合である。

淡色のインクで重ね合わせ(インク滴の意図しない重なり)を行う。
1回目の印字
2回目の印字
 出力画像

 なんの模様も生じていなく、意図した通りの画像出力ができているのがわかると思う。

 ということで、今回の話(というか前の2回の話)の繋がりは、
淡色のインクを用いたインクジェットプリンターでは、意図しないインク滴の重ね合わせが生じてしまっても、濃度変化が生じにくく、意図しないインク滴の重ね合わせがでたらめに発生してしまったとしても、画像にはあらわれない可能性があるということである。

 うーん、マニアックな内容だ。「身近な疑問を調べる」という看板に偽り有り、である。しかも単なる推論だ。
 しかし、もしもインクジェットプリンターを買う人がいるならば、淡色のインクを使っているものを購入するといいかもしれない、ということがわかっただけでも良しとしておこう。

2000-02-06[n年前へ]

パノラマ写真と画像処理 Pt.1 

パノラマ写真を実感する

 「パノラマ」という言葉は何故か大正ロマンを感じさせる。かつて、流行ったパノラマ館や江戸川乱歩の「パノラマ島奇譚」という言葉がそういったものを連想させるのだろう。私も自分で写真の現像・焼き付けをしていた頃は、フィルム一本まるまる使ってベタ焼きでパノラマ写真を撮るのが好きだった。

 そういう癖は持ち歩くカメラが「写るんです」と「デジカメ」へ変化した今でも変わらない。例えば、

の時に撮ったこの写真もそうである。
1999年12月の万座温泉

 そしてまた、次に示す写真もそうだ。これは1999年夏頃の早朝に箱根の湖尻で撮影したものである。360度のパノラマを撮影したものだ。

1999年夏頃の早朝に箱根の湖尻で撮影したもの

 観光に行った先で撮影したと思われるかもしれないが、残念ながら違う。出勤途中に撮影したものである。豊かな自然がありすぎて、涙が出そうである。

 パノラマ写真としては、こういう景色を撮ったものも良いが、人が写っているものも良い。私の勤務先がこの大自然の中に移転してくる前、都会の中にあった頃に居室で撮ったパノラマ写真などはとても面白い。窓の向こうにはビルが見えたり、周りに写っている人ですでに退職した人が何人もいたりして、涙無しには見られない。

 もちろん、こういった写真はパノラマ写真で楽しむのも良いが、もっと実感できるものに加工しても楽しい。私がかつて都会の居室で撮影したものは、当時はAppleのQuicktimeVRのムービーファイルに変換して遊んでいた。今はもうない居室の中をグリグリ動かすのはホロ哀しいものがあり、とても味わい深かった。

 ところで、WEB上でそういうパノラマのVRファイルを見せるにはどうしたら良いだろうか?もちろん、AppleのQuicktimeVRを用いれば良いわけではあるが、プラグインが必要である。私はQuicktimeは好きであるが、ブラウザーのQuicktimeのプラグインは嫌いである。WEBを眺めているときに、「Quicktimeのアップグレードはいかがでしょう?」というダイアログが出ると、少しムッとしてしまう。そこで、Javaを使うことにした。いや、もちろんJavaをサポートしていないブラウザーもたくさんあるが、こちらの方がまだ好きなのである。

 そのようなパノラマのVRを実現するJavaアプレットには、例えば

といったものがある。今回は先に示した「1999年夏頃の早朝に箱根の湖尻で撮影したパノラマ写真」を"Panoramania"を使って実感してみることにする。かなり重い(私のPCではかなりしんどいようである)Japaアプレットであるが、それを以下に示す。箱根の朝を実感して頂きたい。マウスでグリグリと言いたい所であるが、これがサクサク動くPCなんてそんなにあるのだろうか?
「1999年夏頃の早朝に箱根の湖尻で撮影したパノラマ写真 VR」





 さて、ここまでは単なる前振りである。本題は、実はこれから始まる。先日このようなメールを頂いた。

 私はWindowsを使っているのですが、AppleのQuicktimeVRに興味があって、QuicktimeVRのパノラマ・ムービーを作っています。しかし、素材となる画像の作成に四苦八苦しております。ご承知の通り、
    1. ライカ版カメラに24ミリ広角レンズをつけて、
    2. 三脚にパノラマヘッドをつけて、ぐるりと周囲を12枚撮りして、
    3. 現像、プリントし、
    4. スキャニングして、ステッチャソフトでレンダリングし、
    5. それをMacintosh上でMake-QTVR-Panoramaにドロップして、
    ようやく1枚のパノラマmovファイルができるわけですが、最初のカメラ撮影で、タイムラグのため、歩行者など、動きのあるものがうまくパノラマ化できません。

     その場合には、スリットスキャンカメラを入手し、それをカラープリントする設備を準備すればいいのでしょうけど、高価です。

     そこで、

    1. 8ミリビデオに広角レンズを付け、
    2. 90度横倒しにして、10秒程度で1回転するようにステッピングモーターで駆動するパノラマヘッド(自作)に乗せ、
    3. 高速シャッター撮影し、
    4. マックのAV機能で円周12枚の静止画を取り出
    5. し、
    パノラマ化しています。

     長々と分かりにくいことを書きましたが、要は、「マックで動く電子スリットスキャンソフト」をなんとか作っていただけないでしょうか?もし、そのようなソフトがあれば、

    1. 8ミリビデオを横倒しにして、
    2. モーター回転するヘッドでぐるりと360度撮影し、
    3. その撮影した動画ファイルの、各フレームから走査線にして数本分を抽出し(インターレースで256本のうちセンター128本目の前後数本の走査線分)、
    4. それを貯めて1枚のjpgファイルにする、
    5. そのJPEG画像をMakeQTVRPanoramaの入力にして、パノラマムービーを作る、
    ということが簡単にできるようになります。こういうソフトがあれば、だれでも、旅先などで、ビデオを横倒しに持ってぐるりとスピンするだけで、あとはAVマックとパノラマ化ソフトで簡単にQuicktimeVRパノラマファイルが作れるようになると思うのですが…
 これはとても楽しい話である。しかもとても簡単なことなので、遊んでみることにした。

 まずは、答えを先に書いてしまおう。私が作らなくても、

  • NIH-Image (MacOS)
  • ScionImagePC (Windows)
というソフトがある。これらのソフトであれば、上に書かれている
  • 複数画像(動画)からの走査線抽出
は実現できる(ファイルサイズが少々不安だが)。特に、NIH-Imageであれば動画ファイルを読み込むことができる。つまり、Mac上で簡単に処理ができるのである(と、書いた。しかし、後日気づいたが256色の画像でなければ、駄目だった。どうしよう?)。ScionImagePCはNIH-ImageをWindows向けにポーティングしたものである。Macを科学技術に使う人であれば、NIH-Imageを知らない人はいないだろう。

 ScionImagePCの動作画面を以下に示す。NIH-Imageとほぼ同じである。

ScionImagePCの動作画面

 これらのソフトのStack-Slice機能を用いれば「複数画像(動画)からの走査線抽出」ができる。その使用例と、その面白い座標軸変換について考えてみたい。しかし、このページは少々重くなってきた。まして、走査線の抽出の話は使用画像が多くならざるをえない。そこで、次回、詳しく使用例を紹介することにする。よく、次回といったまま数ヶ月経つことがあるが、今回は大丈夫である。少なくとも数日後には登場することと思う(多分)。

 あれっ、ここまで書いてからinfoseekで検索すると、

なんてソフトがある。しまった、先に検索すればよかった。けど、まぁいいか。これはWindows上のソフトのようだし。とりあえず、次回へ続く。



■Powered by yagm.net