まどかの 日記

[2001/10/13〜2001/10/21の日記]
[2001/10/22〜2001/10/28の日記]
[2001/10/29〜2001/11/04の日記]

0030
2001/11/11 ()
 のんびり休日良い気持ち 
 今日はお昼から彼女と一緒に名古屋の方に買い物に出かけました。
 主な目的は彼女が「無印」を見に行きたいといったもので、そこを中心にいろいろ回りました。
 
 まあ回るといっても、ほぼお決まりの私達のショッピングコースで、集めているビーニーベイビーというシリーズのぬいぐるみの新作を買ったり、本屋に行って「トレジャーストーン」の新しいのを買ったり、タワーレコードでCDを見たり……
 
 今日はタワーレコードでたまたまなんかライブやってて、「キンモクセイ」というバンドが演奏してました。知らないバンドだったけど、結構良い曲を歌ってたし、MCも面白くて良さそうなので、今度今日歌っていたであろう曲が入っているアルバムなんかを見つけたら、買ってみようと思いました。
 挨拶の時にBGMを自分たちで演奏していたのと、ドラムの代わりにコンガがいたのに私は惹かれました(^^; パーカッション大好きです。

 というわけで、私はコミックと洋楽のTVCM特集のCDを2枚買って帰りました。私はこういう名前は知らないけどどこかで聴いた曲を集めるのが好きで、こういったTVCM特集のCDをよく買います。
 今もBGMとして聞いているのですが、やはりどこかで聞いたことがあるという雰囲気で良い感じです。詳しく知らない方が楽しめるって感じですね。

 ふぅ、今日は一日のんびりとした雰囲気でよく休めました。天気も良かったので布団も干して、散らかっている洗濯物を彼女にたたんでもらったり(^^; なんか理想的な休日といった感じでした。

 それでは、明日はまた落ちるバグの修正に追われるんですが、今日はこのくらいで。
 おやすみなさい。

0029
2001/11/10 ()
 予想以上の出来で大満足 
 はい、今日は昨日から引き続き徹夜で、来週までに仕上げなければいけない仕事の追い込みをやってました。今日がお休み(うちの会社で)の土曜日なので、誰もくることなく、一人で黙々と作業をした結果、なんか予想よりもはるかに良い動きになってきたので、大満足。

 夕方に社長がやって来て、チェックしてもらいました。すると大筋とはちょっと離れた部分で落ちてしまうバグを見つけましたが、それは月曜日中に直すとして、今日は終わることにしました。

 今日やったところまでの仕上がりは、社長にとっても予想以上だったらしく上機嫌でした(^^;
 で、2人でココイチのカレーを食べに行って、本屋に寄り、社長は会社へ、私は家へと戻りました。

 家に帰った私は、さすがに疲れていたのでそのまま布団に入ってバタンキュー(死語)
 明日の朝までおやすみです。

0028
2001/11/09 ()
 BSPにはまりました 
 今日は出向先での仕事を終えてから、自分の会社に寄ってそのまま泊り込み(徹夜)で、昨日書いた来週までになんとか仕上げないといけない仕事の続きをやるつもりで、今日はそのことで頭がいっぱいで出向先の仕事はあんまり集中できないと思っていたのですが、出向先での仕事は、画像処理関連で、ちょっと今日は減色に近い内容だったので、考えるのに思わずハマってしまいました(^^;

 その内容とは、RGB24Bit(実際は特殊な計算で求めた輝度(Y)と色差(C)の情報)を決められた固定色(パレット)に近似するといったもので、いわゆる固定パレットへの減色です。

 普通、色を近似する場合は、色をRGB3次元空間にある点と考えて、近似したい色と固定パレットとの3次元空間での距離を総当りで調べて、その距離が最小になるものを近似色とします。
 ちなみに3次元空間での色と色との距離は、色A(Ra,Ga,Ba)と色B(Rb,Gb,Bb)の場合、以下の式で求めることができます。

 ・各色のRGB差
  R = Ra - Rb
  G = Ga - Gb
  B = Ba - Bb

 2色間の距離(L) = sqrt(R * R + G * G + B * B)


 となります。

 で、このやり方で普通に近似すると、掛け算と平方根(sqrt)を大量に使うことになるので、すごく時間がかかりますし、テーブルと使うと、256×256×256=16777216≒16MBのメモリを使うことになります。
 128MB以上のメモリが当たり前になった今の時代、16MBくらいどうってことないかもしれませんが、今回のように固定パレットが複数あった場合、ちょっと多くなっちゃいますよね。

 というわけで今回は、色の近似に前々からやりたかったBSPツリーによるパレットの高速色近似アルゴリズムを試してみることにしました。
 このBSPとはBinary Space Partitioning(空間分割法)という2分木を使ったアルゴリズムで、空間をツリー構造を用いて定義していく方法です。空間をある平面で2分割し、それを繰り返して空間全体の構造を定義します。今回の場合、RGB3次元空間を固定パレットの256色空間で分割して定義することになりますね。
 
 で、簡単に言うとBSPツリー上に定義された色空間に近似したい色を放り込んで、ツリー(2分木)を辿りながら比較をして、ツリーの末端に辿り着いたらそれが近似色となるのです。
 BSPツリーでの色近似アルゴリズムの詳しい解説は工学社から出ているI/O別冊「熱血プログラマー塾」の[1]と[2]を参考にして下さい。この本はちょっと古い本なのですが、今でも使えるアルゴリズムが多数紹介されているので、買って損はないと思います。
 
 BSPを使うと、1つのパレットに使用するメモリは16バイト程の構造体をパレット色分なので16×256=4096(=4KB)と、テーブルに比べてめちゃくちゃ少ない容量で2分木を検索するので、そこそこ高速に色近似を行うことができます。
 
 と、BSPでの色近似をやろうとしたのはいいのですが、上記の本を持っていくのを忘れたため、うろ憶えで作ったところ、空間分割の部分で微妙にやり方を間違っていたようで、うまく減色するとこができなくて延々と悩んでいました(^^; あーあ、ちゃんと憶えておけばよかったなぁ。


 というわけで、出向先ではBSPに悩んで、納期が迫っている自分の会社の方の仕事のことなんてすっかり忘れていました(^^; そして、定時まで仕事をした後、名古屋の会社に戻って、そこから気分一転。徹夜での仕事に取り掛かりました。
 その話は明日の日記に書くとして、今日はここでお別れです。

0027
2001/11/08 ()
 はう〜 時間ってすぐ過ぎるぅ〜 
 どうも、来週までに仕上げないといけない仕事が上手くいかなくて、切羽詰ってきたまどかですぅ。

 うー、理屈では上手くいく筈なのに、予想外の要素が行く手を阻んでいる感じで、いやーな感じ……
 しかも明日も出向先に行く日なので、仕事は進まないし、出向先は出向先でまた問題が発生したので、それについてもサンプル作って検討しないといけない状態だし……
 
 こうなるのは前々からわかっていたのですが、いざこの状況になってみると、困ったもんですね。私としては、来週までの仕事を明日出向先からそのまま自分の会社に帰って、続きをはじめて、徹夜でなんとか土曜日中には終わらせたいです。
 徹夜して、修正はできたとしても、まだテスト(デバッグ)が待っているんだよねぇ。ふぅ。このデバッグには時間がかかるから、上手く行ってるって確認するまで緊張の連続なんですよね。
 たいてい、途中でおかしなところ見つけてまた修正の繰り返しになるんだけど。
 なんていうか、上手く作る自信が無いっていうか、上手くいくなんてあんまり考えられないって言うか、微妙なんだよね。納得いく良い解決法がまだ見つかってないから(j−j
 
 一応これで上手くいくであろう解決策は社長と相談して、見出してはいるのですが、今日の修正で、「新たな修正による不具合」がでてしまって、ちょっと凹み気味(^^;
 いや、その不具合はすぐ直せる範囲のことなんで、あんまり心配じゃないのですが、直すのが鬱というか、面倒になってきたんだよね。ま、これで上手くいけば、当分このプログラムには触らなくて済むし、達成感もあるだろうから、がんばって早めに余裕で終わらせないと! ね。
 実際のところ試行錯誤でぐちゃぐちゃになったプログラムはあんまり触りたくないんだよ〜 自分でもわからなくなっている部分もあるし(^^; でもやっていることは結構すごいことなんで、やり遂げたい気持ちも十二分にあるし、複雑だなぁ。うーん。

 えー、ここであきらめずにやり遂げるのが、アマチュアとプロの違いなので、私はプロになります。がんばるぞ。
 (って社長に言われたので、私は負けません)
 
 うわー、早く直したいよぉ〜 早く直してすっきりしたいよぉ〜 なんか明日の出向先ではこの仕事のことで頭がいっぱいなんだろうなぁ。帰りの電車でもメモ帳に向かって悩んでたし。あ、このメモ帳に向かって悩むのって結構使える手法っスよ。
 思っていること(または直面している問題)を全部メモ帳に書いて、それを基にじっくり慎重に考えて、答えがでたら、それを見て実際にプログラムする。こうすると、プログラムするときには考えるという行為が済んでいるので、スムーズに事が進みます。
 プログラムしながら考えると、ちゃんと考える前に実験で無駄に試そうとしちゃうので(私の場合)、まず紙に向かってじっくり考えることが重要です。
 そうするとかならず良い方法が見つかるハズ。みなさんも機会があったらやってみてください。良いですよ。

 よし、なんかやる気が湧いてきたぞ。こうやって思いを日記にぶつけるのもいいもんですね。
 悩みは人に打ち明けると半分になるとよく言いますが、日記でも私には良いようです(^^;
 ま、こんな話友達に話しても困らせるだけだしね。
 
 早く仕事したい仕事したいーーーーーーー!!!!!!!
 うがー!! 早く明日の夜になれーーーー!!



 こうやって仕事がしたいと思えるのは幸せだと、ふと思いました……

 そして、どこかの誰かさんがよく言ってました。

 「仕事が楽しくない人生は地獄だ」

 ん? なんか違うような…… 「仕事を楽しく思えないと、人生は地獄だ」 だっけ? いや、「仕事を楽しめない人生は地獄だ」か? うーん、とにかく楽しくない仕事をさせられているうちは、地獄のような人生だということで、一生する仕事は、一生を懸けて楽しめるようなものでないとだめだという教訓ですね。

 せっかくお金ももらえるんだから、楽しめる仕事を見つけなくちゃね。
 私は今の仕事がとても楽しいです。これは胸を張って言える私の誇りです。

 これを見ているかも知れない就職前のみなさん。就職を考える前に、まず、自分の好きなことを探しましょう。それもただ「好き」というだけではなくて、情熱をもって続けられるくらいの「好き」を。
 好きなことが見つかったら、そのことを仕事としてやっている会社を探しましょう。自分がその仕事を好きだということを存分にアピールすれば、その会社に入ることができると思うし、きっと楽しい人生が待っているはずです。
 
 なんか説教じみた話になってきたので、生意気な私はここで睡眠をとることにします(^^;

 それでは、おやすみなさい。

0026
2001/11/07 ()
 色のお話 
 えっと、今日から出向先の仕事が先に進んで、色を本格的に扱って、頭をひねる状況になりました。
 色を本格的に扱うというのは、語弊があるかもしれませんが、普通のRGBではなく、色を輝度と色差の信号に分解して扱って、いろいろ処理をするということです。

 今まで減色でもRGBでしか扱ったことが無かったので、いろいろ勉強する必要がありそうです。
 今度の減色教室でも色をRGBの3次元色空間で扱うのではなくて、YUVという輝度(Y)と赤と青の色差(Cr・Cb)の3次元空間で扱って、人の視覚に近い色空間にしようと思っていたので、今回の仕事は後々かなり役に立ちそうです。良い感じだなぁ。出向先での仕事が私の興味のある分野で良かった。楽しいし、今まで蓄積してきた知識が役立つし。

 そういうわけで、今日は一日色のお勉強でした。
 明日も引き続き、色のお勉強をしながら、新しいアイディアを考えます。実は、このアイディアを考えるのは私の担当ではないのですが、三人寄れば文殊の知恵とも言いますし、なんとか力になりたいです。


 さあ、減色教室の方もちゃくちゃくと情報と技術が集まって(備わって)きました。これで、次に時間が空いたら一気に拡大処理部分を完成させて、今度こそ、減色アルゴリズムの方に着手したいです。
 今度の減色アルゴリズムとして考えているのは、基本的にメディアンカット法に頼らない方向で、自分なりに考えた減色アルゴリズムを実装したいです。

 上の方でも書きましたが、色をRGBの3次元空間ではなく、YUVの3次元空間で扱ってみるとか、X-Y色度図の様に2次元で色を扱ってみるとか、画像をあるサイズの矩形で区切って、その中での色分布の情報を重要視してみるとか、人間の視覚の特徴に注目して、緑・赤に気を使って、青をちょっと荒めに扱ってみるとか、いろいろ試してみようと思います。

 どうも、メディアンカット法とかでやっている、色空間を任意の数に分割して、その重心の色を代表色として扱うのはなんか違う気がするんですよね。だって、空間の重心の色なので、その画像で使われていない色が補間されて、代表色として選ばれるかもしれません。ね、おかしいでしょ。画像に無い色だから、ベストマッチするはずが無いし。
 できるなら、重要な色はそのままで、あまり重要ではないと思われる近似した色の固まりは、その平均色でまとめるようにできれば良い感じに減色できるのではないかと考えてます。どうやるかはまだ全然考えてないですけど(^^;

 そして、今度は速度重視ではなくて、精度重視で行きたいと思います。現行のヴァージョンの減色教室はMMX Pentium 200MHzの頃のものなので、なんとか速く減色をと思っていましたが、今はCPUもGHzの時代なので、速度はあまり考えず、精度を上げる方向で、できれば高速化をというのを考えています。
 
 実際、ゲームとかで使うときには減色速度が速くても見た目が汚くては使い物にならないですからね。その点速度も精度もハイレベルなPag1はすごいです。

 いつか、精度とインターフェースの良さで有名になることを目指しています。がんばるぞ。

 あ、こういうことは減色教室の開発日記で書かないといけないなぁ。まあいいか。


 うーん、ほんとのところ減色は早いとこ終わらせて他のことに手をつけたいなぁ。JAVAで掲示板とか、JAVAで3Dゲームとか、自分専用のソフトウェアDVDプレイヤー(デコーダは既存のものを流用)とか、自分専用のダウンローダーとか、自分専用のメーラーとか、自分専用のエディタとか、仲間を集めてゲームを創るとか。やる気の順位は順不同ですが、ちょっと考えただけでもこんなにあります。

 ふむ、当分趣味でやることには困らないな(^^; あと、小説をまた書いてみたり。シナリオに再挑戦してみたり。
 ああ、やりたいこと多すぎ。でも、やりたいことは全部「まどかのやりたいことノートブック」に書いてあるので、忘れることはないぞ! うん。
 ああ、そうそう自分専用の連続動画プレイヤーとかもあったなぁ。簡易スケジュール機能付きの。はぁ、いつになったらできるんだろうか……

 思い出したらきりがないので、今日はこの辺で。
 おやすみなさい。

0025
2001/11/06 ()
 StretchDIBitsのその後 
 えー、今日は出向先での作業で新たな修正のほか、StretchDIBitsの拡大を今一度調べてみました。
 で、調べた結果、どうやらStretchDIBitsとStretchBltはタテ・ヨコの比率が変わらない拡大なら、10倍を超えてもちゃんと補間拡大してくれるようです。

 まぁ、今作っているものはタテ・ヨコの比率を変化させたあと、さらに拡大する必要があるので、やっぱりStretchDIBitsは使えませんが、減色教室ではタテ・ヨコ比が変わる事は無いので、補間拡大にStretchDIBitsもしくはStretchBltを使うことにします。ま、それも、局所的に遅くなるといった事が無ければの話ですが(^^;

 うーん、ネタがない。
 
 今日は特になにもなかったなぁ。上記のStretchDIBitsのことは発見したとき「これを今日のネタにしよう」って思って浮かれてたけど、内容すくなっ!! 説明して終わりじゃねぇ。ふぅ。

 他にネタがあるとすれば、今日寝坊したことかなぁ。1時間も寝坊しちゃった(^^;
 でも、ちゃんと間に合うには間に合ったので、良かったのですが。

 そんなん書いてもなぁ。もっとはちゃめちゃに遅刻とかしたら面白いネタになるんだけど、そんなことは許されません(^^; せめてそんな遅刻をする夢を見るくらいかな。
 
 あ、夢といえば、昨日くらいになんか良くわからないけど、面白い夢を見ました。
 デパートの屋上にある、小さい子が100円入れて乗って遊ぶような飛行機に私が乗って、好きなところの上空写真を撮るという夢でした。

 あの飛行機に乗って、ものすごいスピードでなぜか後ろ向きに飛ぶんです(^^;
 一瞬で私の好きな「ナスカの地上絵」の上に行ったり、万里の長城撮ってみたり。楽しかったです。
 さらに、その飛行機とパソコンがセロハンテープで繋がれてて、撮った写真のデータはセロハンテープを伝って瞬時にパソコンに保存されるという超絶機能付きでした(^^;

 で、目が覚めるまでいろんな写真を撮りまくったのでありました。良く憶えていないけど(^^;

 ちうところで、今日は終わりにしまっする。
 それでは、おやすみなさい。

0024
2001/11/05 ()
 今日一日を頑張りました 
 えー、今日は今週唯一うちの会社で仕事をする日なので、今日やるべき仕事を時間いっぱいがんばりました。
 結局直そうと思ったバグは後一歩のところで修正し切れませんでしたが、バグの内容がはっきりわかったのでとりあえず良しとします。

 明日からはまた出向先での作業です。
 で、明日にはまた新しい仕様が決定されているとのことなので、気合入れてがんばります。

 今日は出向先に行くがごとく早起きをしてしまったので、そのまま早めに会社に行きました。
 一番乗りだと思っていたのですが、上には上がいるものです(^^; 先輩が一人先に来ていました。別に残念でもなんでもないんですけどね。

 そして、余裕な時間で、展示会に出していたマイマシンを自分の開発用に再設定し直して、作業開始。
 そのまま一日がんばりました。

 というわけで、今日はあんまりネタがありません(^^;

 そして明日も早いので今日はこの辺で、おやすみなさい。