カテゴリー

  • 日記・コラム・つぶやき
  • 経済・政治・国際

« 妻の心の支えと私の老母の出会い、美術文化展--交友の記録(14) | トップページ | オーレッ!!、名誉教授の数学談義とフラメンコ--交友の記録(15) »

特許取得、ラスター・ベクター変換プログラム--アルゴリズム戦記(14)

(「鐘の声 ブログ」記事マップ)

2007/03/30
特許取得、ラスター・ベクター変換プログラム--アルゴリズム戦記(14)

ピカソ開発1234567)の副産物だが、ペイントソフトで作成された画像をベクトル化できないかという課題が持ち上がった。ベクトル化ができれば、ベクトル処理ソフトである「ピカソ」が扱えることになる、というのが開発のきっかけである。

開発を担当したのは、比較的ベテランのスタッフで、はじめFORTRANでアルゴリズムの確認を始めた。輪郭線抽出、が最初の仕事である。1ドットずらした画像を2つ用意して、andやxorのビット演算を試していたが、うまく行かない。当たり前である、0度と180度の位置では輪郭線に直交して1ドット分ずれていても、90度と270度の位置では輪郭線に直交しては0ドット分しかずれない。途中ではその中間のずれとなるのである。ヒトは思い込みというものがある。頭の良いヒトほど思い込みのわなにはまりやすい。
画像をマクロに捉えてビット演算する方法では、実際何をやっているのかさえ、よくわからない。私は、むしろ、愚直に、一方向から、グラフィックメモリのビット状態をドットごとになめて、同じ値が続く間は無視して、前後に異なる値がある場合(幾つかの場合に分かれる)は真ん中のドットの値を別のグラフィック空間にプロットするという方法をとることを勧めた。彼は、画面に向かって左右のドット列をなめるプログラムを走らせた。それらしいドットのプロットができたことが確認できた。うれしそうに報告がされた。私はドット列を1列だけではなく引き続き全列のプロットを作成することを求めた。アシスタントのスタッフがその後をコーディングして実行した。アシスタントの若者が持ってきてくれたテスト画像には、色つきの四角や丸、斜め線を重ねて描いてあった。結果は、かなり良いが、良くない部分があった。それは、縦線に近い輪郭は鮮明だが、水平線に近い輪郭はほとんど消えてしまっているという点である。このテスト結果を見て、私はひらめいた。いや、うまく行く方法(アルゴリズム)があるぞということである。
その場で、アシスタントの若者に、私は「悪いが、同じロジックで縦方向にスキャンした結果も見せてくれ」と言った。彼は口をとんがらせて、「横を縦にするだけだもの、結果は似たようなもんでしょう。わざわざやる価値なんかあるんですか」と言う。「まぁ、いいから、だまされたと思ってやってみてくれ」と私。押し問答したが、彼は、自分の意見では通らない、と思ったのだろう。直属の上司を呼んできた。彼に作業を指示した先のベテラン氏である。彼は、一通り自分の部下の言い分を述べて、「社長が人件費を無駄にしても良いという判断なら、彼にやらせます。いいんですね」という。彼の言うことはいちいち皮肉に聞こえる。取り合っていると時間がかかるので、「まぁいいさ、私が責任を負うよ。あなたのせいじゃないということだけははっきりしている」と私。ベテランの上司は「テスト用の画像データはどうしますか」と言う。「同じものを使用してほしい。1ドットも違わないものがいい」と私。「わかりました」とベテラン氏。アシスタントの若者を呼んで、「・・・ということなので、社長命令なのでやってくれ。後の指示も私はしない。社長に聞いてくれ」とベテラン氏。オイオイ、と思ったが、まぁいいかと、私。彼の視線を無視して、アシスタント君に「頼むよ」と重ねてお願いをした。
アシスタント君は、2日ほどすると、新しいテスト画像を作って、横スキャンと縦スキャンのテスト結果を持ってきた。彼は、その図を見せながら、「ほらっ、ボクが言ったとおりでしょ。縦でも横でも、同じように中途半端な図になっているでしょう。これでは使い物になりませんよ」と、なんだか得意げである。私は、この2つのテスト結果を見て、実は彼の話などそっちのけで、やった!と内心は叫んでいたのである。彼に向かって、「よくやってくれたね。これでいいんだ。これでうまく行く」と私。キョトンとするアシスタント君。私は畳み込むように、上司のベテラン氏を呼んでくるように話した。「あっ、はい」と不満そうな彼。
やがて、ベテラン氏が登場する。彼も不満そうである。「こんな具合ですから、もうあきらめましょう。何なら、斜めスキャンもやってみますか」とベテラン氏。「まてまて、そうじゃないんだ。この2つの結果を別々に得て、二つをorで重ねたらどうなるだろうね」と私は、ベテラン氏に誘い水を向ける。ベテラン氏は、じっと私の顔を見て、私が自信に満ちた顔をしているのを確認すると、「待ってください。確かめてきます」と退席した。アシスタント君もあわてて後を付いてゆく。小一時間もした頃、二人はそろってまた登場した。「こんな風になりました」とベテラン氏。--私は声を出すのも忘れて、見事な輪郭線の完成に見とれた。しばらく沈黙が続いた。私は、「どこかに破綻している部分ははないかね。45度付近とか、、、、」といいながら、完成した画像をくまなく点検し始める。「いや、完璧のようです」とベテラン氏。彼は続けた、「でも、どうして??、理屈がわからないんですが」。「論より証拠さ。水平方向と垂直方向のスキャンは、前後3ドット分の比較によって写像を生成する行為なので、直交系をなすので相補的だとにらんだのさ」と私。「見てごらん、水平方向のスキャンで欠けてしまう輪郭線は、垂直方向のスキャンでははっきり出ている」とさらに続けた。「中間の方向の輪郭線は、かすれているものの、両者をあわせれば、ドット構成の意味で1本の線に違いないとめぼしをつけたのさ。そのとおりになっているね」とご満悦な私。実は、アシスタント君がプログラムを完成するよりも先に、私はBASICでテストルーチンを作って確認していたのである。こういうときに、BASICは便利である。画素の値はPEEK関数で取得した。彼らには先回りしていたことは内緒にした。
さて、ここまでが、ラスター・ベター変換の第一段階である。ここでできた輪郭線をたどって、線分ベクトルの連鎖を過不足なく生成しなければならない。私は、線分ベクトルを構成できたら、その都度その部分のドットを即座に消してしまうアルゴリズムを提案し過剰線分を生成しないようにした。最速ですべての線分を残すことなく発見するアルゴリズムも提案した。また、線分をたどってもとの位置(正しくは元の位置の隣の画素)に戻ってきたら、その線分に囲まれた部分の内部にある元の画像の色を取得することも処理に加えた。内部と外部を区別するアルゴリズムも教えた。
これらは、すべてうまくいった。
しかし、難題はさらに続いた。ベテラン氏らは、これらの作業が最終に近づくと、「これらは意味がない」といい始めたのである。処理に時間がかかりすぎて、実用にはならないというのである。確かにフォートランで実行すると、簡単な1画面をベクトル化するのにも、10分くらいかかるのである。ちなみに、BASICインタープリタで実行すると数十分かかる。しかし、この処理は、最初から最後はマシン語にすると宣言して始めたプログラムである。「できない」ことを前提に、この仕事をしていたベテラン氏と彼のアシスタント君は着々と成功に向かっていることに明らかに不満だった。
私は、以前の記事にも登場してもらったマシン語ライタの二人に高級言語で作成したプログラムをマシン語にしてもらうことにした。完成したマシン語プログラムの実行は数秒で終わってしまった。文句なしである。
ベテラン氏は、この結果を受けて、数日後、私が特許申請書類を書きます、と申し出てきた。彼は以前勤務していた企業で特許関係の仕事もしていたのである。ありがたくやってもらうことにした。かれと私は和解した。しかし、まだ難問はつづくのであった。開発に投入した予算や特許取得に要する費用を取り返すべきであると彼は主張した。ごもっともである。
当時、ソフトウエア特許は珍しかった、我々の申請の前に、日本で認められたソフトウエアの特許はわずか2件であった。大変な困難が予想された。申請後、手続きをしている最中に、取引先に、特許取得中であることを告げて、用途があるかどうかのリサーチをかけることにした。一社が当時のお金で1千万円を用意するので利用させてくれといい始めた。この話を持ってきたのは、某H社の下請け会社の営業マンである。記憶が定かではないが、開発を担当したベテラン氏の知り合いだったと思う。良かろう、と私はお話を進め事にした。ところが、その営業マンは、その特許の内容を教えろとしつこいのである。何回もやってきて、微に入り細に入り、アルゴリズムの詳細を聞こうとするのである。理由は、使用価値があるかどうかの社内判断の材料にするからというものである。さんざん、私の話を聞いて、私が作った説明資料を受け取ると、満足そうな顔をして帰っていった。
その後、ぷっつりと音信がなくなり、彼とは連絡が取れなくなった。例の案件はどうしたのかと彼の上司に問い合わせると、上司が「いや、その話は、某H社さんにライセンスそっくり買っていただくことになっていると聞いています」と、聞いたこともない驚くような話だった。「ちょっと待ってください。それは当社の特許で、使用料をいただく話だったはず。そちらの会社が別の会社にライセンスを売る話というのはおかしいですね」と食い下がると、調べるからと電話が切れた。数日すると、その上司がやってきて、「あの特許は、某H社の特許だったので、私たちは無関係です」と理解に苦しむ説明をする。何?!、私は、とんでもないことが起こっていることに気づいた。彼が教えてくれた某H社の担当者に電話すると、「どこにあなたの会社の発明であるという証拠があるんですかねェ、法で争いましょう」と、ニヤついた声で言う。明らかに大会社の威光を借りた小ざかしい態度だ。馬鹿な、私は、その場で激怒した。「とんでもない。おっしゃるとおり法廷でやりましょうか。こんなことが明るみに出て傷つくのはあなた方ではないんですか。受けてたちますよ、何なら私たちから告訴しましょうか」と言いかけると、ガチャンと電話を切った。私は、すぐに、この会社の社長室長をしていた大学の同級生に詳細な資料を添付して、手紙を書いた。訴訟にすると君の会社の担当者は言っている、我々は受けてたつ用意があるが、こんな無法なことを大企業であるH社がして良いのかと詰問の内容である。会いたいと、書いておいたが返事がない。2週間を経て、電話をすると電話口に本人が出て、「待ってくれ。君の怖さは十分知っている。マスコミを総動員するくらいのことはやりかねないのも承知だ。担当者が馬鹿で君を知らすぎただけだ。誓って善処する。ボクが保証する。必ず、納得できるような落とし前をつける」と昔の口調で言う。「わかった、後1-2週間は待っていよう。それ以上は待たないよ」と私は電話を切った。約束の2週間が過ぎようというころ、社長室の別の人から、当社に電話があった。私が出ると、「誠に恐縮です。副社長の都合がどうしても付かないので、期限をあと2日延ばしてほしい」というのである。えっ、副社長が出てくるということか、と私は驚いた。「結構ですよ。御茶ノ水の本社にうかがえばよろしいですか」と私。「いえ、副社長は大甕工場長も兼務していますので、必ずしも本社にはいらっしゃいません。そちらにうかがうということです」とのこと。「それは恐縮です、私がうかがいます」と私。「いえ、こちらがうかがうべきことだと聞いています」とその人物は譲らない。そして2日後、雨が振る中、運転手つきの専用車でH社の副社長はやってきた。お供は一人である。当時の我々の会社は、居酒屋の2階、急な狭い壊れかけた階段を上ったホコリだらけの和室の幾つかを改造した事務室である。副社長は、巨体を困ったように揺すりながらノシノシとゆっくりと階段をあがってきた。「申し訳ありません。遅くなりました」と、言って、名刺を出して、頭を下げるなり、階段を上ったところで、床に頭をつけて動かない。「まぁ、お顔を上げてください」と私。お供の人が大きな包みを差し出して、「これで済むとは思っていませんが、皆さんで召し上がってください」と言う。包み紙を見るとおせんべいだった。
「わかりました。私も矛を収めましょう。だから、どうぞおたちになってください」と私。おつきの人が、「類似の研究を社内でもやっていたことは間違いありません。しかし、特許は先願主義ですから、このまま、御社で特許をお取りください。我々はこれに異議を唱えることはしないとご理解下さい。それでよろしいでしょうか」という。「わかりました。しかし、事実関係だけは知りたいと思いますが、お時間はございますか」と私。お供の人は「いえ、副社長はお忙しい方なので今日のところはこれで勘弁をお願いします。無法なことをした関係者は必ず処分いたします。それをもって、ご説明に変えさせていただければまことにありがたく思います」という。副社長も頭を下げたまま「お願いします」という。大会社がいったん決意すれば、ここまでやるのだということが良くわかった。彼らの言葉にウソはあるまいと感じた。私は、「わかりました。適正な処罰が確認された時点で、当社は一切を水に流します。お忙しいでしょうから、今日のところはお引き取りください」と私。所要時間20分程度だったであろう。副社長は、よろよろと立ち上がると、後ろ向きに、うつむきかげんのまま、階段を下りていった。スタッフは、遠巻きにこのやり取りを見ていた。彼らが帰った後、ことの次第をスタッフを集めて説明した。
数か月後、H社の問題の下請け企業の営業マンの上司から電話があり、「あの営業マンは網走支店に転勤になりました。これでご理解をいただきたい」と述べた。H社内の人物が処罰されたかどうかは不明だったが、H社からの指示でかの営業マンが処罰されたと確信した。われわれは、そのことをもって、それ以上の追及をやめることにした。
悪事は、いずれ露見して崩壊するのである。
アルゴリズムでは敵なし。しかし、私にとっての敵は、ときによりあらぬところから現れるヒトの邪心であった。
ラスター・ベクター変換の特許は現に当社に所属する。もしも、当社に無断でこの特許を使っている企業があったならば、早めに申し出られたほうが良い。後で露見すれば、過去にさかのぼって賠償金がかさむことになる。自ら申告するものであれば、リーズナブルなお値段で使用を許諾する用意があるので安心して申し出ていただきたい。

△次の記事: アルゴリズム戦記(15)
http://shyosei.cocolog-nifty.com/shyoseilog/2007/04/elearning15_d4fe.html
▽前の記事: アルゴリズム戦記(13)
http://shyosei.cocolog-nifty.com/shyoseilog/2007/02/ms713_aac4.html

琵琶


(補1)「鐘の声 ブログ」はリンクフリーです。ただし、「鐘の声 ブログ」の記事の一部または全部を引用または翻案して、公的に発言または発表される場合は、事前にメール等でお知らせください。[→連絡先]
(補2)ブログ「鐘の声」には、10個ほどのシリーズとシリーズ以外の一般記事があります。シリーズの全体構成やシリーズ別の記事一覧は下記(別サイト)にあります。
  ☆「鐘の声」の全体構成(「鐘の声 ブログ」記事マップ)☆ (GO!)
  ・独創力の創り方シリーズ
  ・心理、教育、社会性の発達シリーズ
  ・社長の条件シリーズ
  ・アルゴリズム戦記シリーズ
  ・情報デザイン研究ノートシリーズ
  ・「情報社会学、予見と戦略」シリーズ
  ・感性的研究生活シリーズ
  ・街に活力をシリーズ
  ・交友の記録シリーズ
  ・オヤジと家族のお料理ライフシリーズ
  ・我が家の愛犬様シリーズ
  ・妻が、車に撥ねられるシリーズ
  ・その他、シリーズ外

« 妻の心の支えと私の老母の出会い、美術文化展--交友の記録(14) | トップページ | オーレッ!!、名誉教授の数学談義とフラメンコ--交友の記録(15) »

「日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/73834/14362604

この記事へのトラックバック一覧です: 特許取得、ラスター・ベクター変換プログラム--アルゴリズム戦記(14):

« 妻の心の支えと私の老母の出会い、美術文化展--交友の記録(14) | トップページ | オーレッ!!、名誉教授の数学談義とフラメンコ--交友の記録(15) »