JP2001523900A5 - - Google Patents

Download PDF

Info

Publication number
JP2001523900A5
JP2001523900A5 JP2000503510A JP2000503510A JP2001523900A5 JP 2001523900 A5 JP2001523900 A5 JP 2001523900A5 JP 2000503510 A JP2000503510 A JP 2000503510A JP 2000503510 A JP2000503510 A JP 2000503510A JP 2001523900 A5 JP2001523900 A5 JP 2001523900A5
Authority
JP
Japan
Prior art keywords
image
data
artcard
bit
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000503510A
Other languages
Japanese (ja)
Other versions
JP2001523900A (en
Filing date
Publication date
Priority claimed from AUPO7978A external-priority patent/AUPO797897A0/en
Priority claimed from AUPO7997A external-priority patent/AUPO799797A0/en
Priority claimed from AUPO7985A external-priority patent/AUPO798597A0/en
Priority claimed from AUPO8025A external-priority patent/AUPO802597A0/en
Priority claimed from AUPO8003A external-priority patent/AUPO800397A0/en
Priority claimed from AUPO8019A external-priority patent/AUPO801997A0/en
Priority claimed from AUPO8030A external-priority patent/AUPO803097A0/en
Priority claimed from AUPO8022A external-priority patent/AUPO802297A0/en
Priority claimed from AUPO7979A external-priority patent/AUPO797997A0/en
Priority claimed from AUPO8015A external-priority patent/AUPO801597A0/en
Priority claimed from AUPO7942A external-priority patent/AUPO794297A0/en
Priority claimed from AUPO7987A external-priority patent/AUPO798797A0/en
Priority claimed from AUPO7999A external-priority patent/AUPO799997A0/en
Priority claimed from AUPO7983A external-priority patent/AUPO798397A0/en
Priority claimed from AUPO7939A external-priority patent/AUPO793997A0/en
Priority claimed from AUPO8016A external-priority patent/AUPO801697A0/en
Priority claimed from AUPO7934A external-priority patent/AUPO793497A0/en
Priority claimed from AUPO7988A external-priority patent/AUPO798897A0/en
Priority claimed from AUPO8012A external-priority patent/AUPO801297A0/en
Priority claimed from AUPO7938A external-priority patent/AUPO793897A0/en
Priority claimed from AUPO7940A external-priority patent/AUPO794097A0/en
Priority claimed from AUPO7991A external-priority patent/AUPO799197A0/en
Priority claimed from AUPO7993A external-priority patent/AUPO799397A0/en
Priority claimed from AUPO8020A external-priority patent/AUPO802097A0/en
Priority claimed from AUPO8029A external-priority patent/AUPO802997A0/en
Priority claimed from AUPO8028A external-priority patent/AUPO802897A0/en
Priority claimed from AUPO8023A external-priority patent/AUPO802397A0/en
Priority claimed from AUPO8024A external-priority patent/AUPO802497A0/en
Priority claimed from AUPO8005A external-priority patent/AUPO800597A0/en
Priority claimed from AUPO7990A external-priority patent/AUPO799097A0/en
Priority claimed from AUPO7980A external-priority patent/AUPO798097A0/en
Priority claimed from AUPO7998A external-priority patent/AUPO799897A0/en
Priority claimed from AUPO8017A external-priority patent/AUPO801797A0/en
Priority claimed from AUPO8032A external-priority patent/AUPO803297A0/en
Priority claimed from AUPO8014A external-priority patent/AUPO801497A0/en
Priority claimed from AUPO8027A external-priority patent/AUPO802797A0/en
Priority claimed from AUPO7982A external-priority patent/AUPO798297A0/en
Priority claimed from AUPO8021A external-priority patent/AUPO802197A0/en
Priority claimed from AUPO7986A external-priority patent/AUPO798697A0/en
Priority claimed from AUPO7981A external-priority patent/AUPO798197A0/en
Priority claimed from AUPO8018A external-priority patent/AUPO801897A0/en
Priority claimed from AUPO8031A external-priority patent/AUPO803197A0/en
Priority claimed from AUPO8000A external-priority patent/AUPO800097A0/en
Priority claimed from AUPO8026A external-priority patent/AUPO802697A0/en
Priority claimed from AUPO7977A external-priority patent/AUPO797797A0/en
Priority claimed from AUPO7989A external-priority patent/AUPO798997A0/en
Priority claimed from AUPO8500A external-priority patent/AUPO850097A0/en
Priority claimed from AUPO8498A external-priority patent/AUPO849897A0/en
Priority claimed from AUPO8501A external-priority patent/AUPO850197A0/en
Priority claimed from AUPO8504A external-priority patent/AUPO850497A0/en
Priority claimed from AUPO8497A external-priority patent/AUPO849797A0/en
Priority claimed from AUPO8505A external-priority patent/AUPO850597A0/en
Priority claimed from AUPO8502A external-priority patent/AUPO850297A0/en
Priority claimed from AUPO8499A external-priority patent/AUPO849997A0/en
Priority claimed from AUPO9396A external-priority patent/AUPO939697A0/en
Priority claimed from AUPO9405A external-priority patent/AUPO940597A0/en
Priority claimed from AUPO9401A external-priority patent/AUPO940197A0/en
Priority claimed from AUPO9394A external-priority patent/AUPO939497A0/en
Priority claimed from AUPO9400A external-priority patent/AUPO940097A0/en
Priority claimed from AUPO9397A external-priority patent/AUPO939797A0/en
Priority claimed from AUPO9399A external-priority patent/AUPO939997A0/en
Priority claimed from AUPO9395A external-priority patent/AUPO939597A0/en
Priority claimed from AUPO9398A external-priority patent/AUPO939897A0/en
Priority claimed from AUPO9402A external-priority patent/AUPO940297A0/en
Priority claimed from AUPO9404A external-priority patent/AUPO940497A0/en
Priority claimed from AUPO9403A external-priority patent/AUPO940397A0/en
Priority claimed from AUPP0959A external-priority patent/AUPP095997A0/en
Priority claimed from AUPP1397A external-priority patent/AUPP139798A0/en
Priority claimed from AUPP2371A external-priority patent/AUPP237198A0/en
Priority claimed from AUPP2370A external-priority patent/AUPP237098A0/en
Priority claimed from AUPP4094A external-priority patent/AUPP409498A0/en
Application filed filed Critical
Priority claimed from PCT/AU1998/000544 external-priority patent/WO1999004368A1/en
Publication of JP2001523900A publication Critical patent/JP2001523900A/en
Publication of JP2001523900A5 publication Critical patent/JP2001523900A5/ja
Pending legal-status Critical Current

Links

Images

Description

【書類名】 明細書
【発明の名称】 一体型プリントシステムを備えたカメラ
【特許請求の範囲】
【請求項1】
シーンを撮影するための、少なくとも1つのエリアイメージセンサーと;
所定のシーン変換要求に従って前記撮影されたシーンを処理するためのカメラ処理装置と;
カメラシステムの内部に配置された、取り外し可能な一つのモジュールに格納された印刷用インクを使用して、前記処理された画像であるシーンをプリントメディアに印刷するためのプリンターと;
を備えたカメラシステムであって、
前記エリアイメージセンサーによってシーンを撮影し、前記プリンターによって前記カメラシステムから前記シーンを直接プリントするための携帯用ユニット、
を備えたことを特徴とするカメラシステム。
【請求項2】
前記プリンターにより使用されるプリントメディア及び印刷用インクを収容するためのプリントロールを備え、
該プリントロールは前記カメラシステムに対して取り外し可能である、
請求項1に記載のカメラシステム。
【請求項3】
前記プリントロールは、認証情報を含む認証チップを有し、
前記カメラ処理装置は、前記カメラシステムに前記プリントロールが挿入されたときに認証が実行されるように、該認証チップを確認するように適合された、
ことを特徴とする請求項2に記載のカメラシステム。
【請求項4】
前記プリンターは、ドロップ・オン・デマンドのインクプリンターを含む、
請求項1に記載のカメラシステム。
【請求項5】
印刷された写真の分離のための裁断装置をさらに含む、
請求項1に記載のカメラシステム。
【請求項6】
前記エリアイメージセンサーの数は少なくとも2つであり、
前記カメラ処理装置は、前記エリアイメージセンサーから立体画像を取得する装置であり、
前記プリントメディアは、三次元効果を形成するために、前記立体画像を立体的に画像化する手段である、
請求項1に記載のカメラシステム。
【技術分野】
【0001】
本発明は、画像処理方法及び装置に関し、特に、画像処理機能を有するデジタルインスタントカメラを開示する。
【0002】
本発明は、さらに、デジタルカメラ技術の分野に関し、特に、一体型カラープリンタ付きのデジタルカメラを開示する。
【背景技術】
【0003】
従来のカメラ技術は、長年に亘り、感光性フィルムに映し出される画像のネガに依存する光学処理システムの設備に依存してきている。この感光性フィルムは、“定着(fix)”して、原画像の再生を行うポジプリントの作成を許容するために後で化学的処理される。そのような画像処理技術は、標準的になってきていたけれども、画像のフルカラー処理においては不経済で困難な技術が必要とされるため、過度に複雑になり得る。近年、デジタルカメラが利用可能になってきている。これらのカメラは、標準的には、際立った画像を検知するための電荷結合素子(CCD)の利用に依存している。該カメラは標準的には、続けて行う画像処理(manipulation)や印刷のためにコンピュータ装置に画像を転送するためのコネクターに加え、検知したシーンのストレージのためのストレージ・メディアを有する。
【0004】
そのような装置は、全ての画像がカメラによって保存されており、しばらく後でないと印刷できないという点で不便である。また、該カメラは、多数の画像の保存のために十分なストレージ能力を有していなければならず、加えて、カメラのユーザは、画像のダウンロードやコンピュータ・プリンターによる印刷等のためにコンピュータシステムにアクセスしなければならない。
【0005】
さらに、インスタント画像の生成を可能にするポラロイド(登録商標)タイプのインスタントカメラは、しばらくの間、使用されてきた。しかしながら、このタイプのカメラは、限定されたサイズの画像のみの作成に限られていて、また、化学物質の使用には多くの問題があり、特に、これらのタイプのカメラで作られた写真は劣化する。
【0006】
このような装置や他の画像キャプチャー装置を使用する場合、写真撮影の際、音声ひや他の環境の情報を適切に取り込めることが望ましい。
【0007】
さらに、左眼に与えられる第1画像と右眼に与えられる第2画像とで三次元面の錯覚を起こすという立体視の生成が、よく知られている。しかしながら、従前のシステム複雑な準備を必要とし、現物に極めて近い画像(ハイファイ画像)は通常不可能であった。さらに、画像の一般的な選択は、特別に準備された画像のみに限定されている。
【0008】
現物に極めて近い立体画像(ハイファイ立体画像)を要求に応じて生成できること、特に、立体画像を自由に撮影することのできるポータブル・カメラ装置によって画像を作成することが一般的に必要である。
【0009】
さらに、カメラ装置によってキャプチャーされた画像を片面に有すると共に、もう片面に郵便料金払い済み印と住所を有する、自動的にカスタマイズされた葉書を、そのようなカメラ写真画像作成システムが作成できれば、非常に便利だろう。
【0010】
近年、画像の長い“パノラマ”ビューを作成する写真再生技術については、ますます一般的になってきている。これらの画像は写真用紙などの上に作成される。また、さらなる“パノラマ”のタイプのビューを作成するため、画像の構成は、幅に比べて長さが長くされる。残念ながら、画像が形成される写真用紙は、小径のロールの状態で保存されていた場合に問題が発生する。
【0011】
近年、フィルターを配置して、人気のある芸術的な絵のスタイルに似せた効果を画像に生じさせるようにすることがかなり一般的になってきている。これらのフィルターは、画像を撮影すると共に、芸術的なスタイルの一つについての芸術的演出を最初の画像に与えて第2の画像を得るように設計されている。現代において極めて人気のある芸術家の一人は、ビンセント・ファン・ゴッホである。彼の絵画のフラット・エリアにおけるブラッシュストローク(筆さばき)の方向が、その絵画における主要な物のエッジの方向を積極的にたどるというのが、この芸術家の芸術作品の一つの特徴である。例えば、“糸杉と星の見える道”や“星月夜”や“医師ガッシュ”と題された彼の作品は、この処理の説明に役立つ実例である。入力されてきた任意の画像に“ファン・ゴッホ”効果を自動的に生じさせ、それを携帯用カメラシステムから出力するというコンピュータ・アルゴリズムの提供が望まれるだろう。
【0012】
残念ながら、ワーピングのシステムは、ハイエンドコンピュータにて使用されることが一般的であり、画像をコンピュータの中にスキャンすることやプリントアウトすることは一般には不便である。携帯用カメラ等を使って画像を取得するような場合は、取得画像を画像処理のためにコンピュータシステムに後で転送し、次に、要求に従ってそれらの画像を処理するという必要があるため、一般的には特に不便である。
【0013】
さらに、多様な画法を真似るという効果に大きな価値があるとしばしば考えられる。さらに進んで、1つの簡単な形態の中にこれらの効果を組み入れることができれば、それらの効果は、デジタル撮影能力を有する携帯用カメラ装置と合体させるのに適切であり、それによって、カメラ装置で撮影されるシーンについて、所望のフィルター処理された画像を生成することができるだろう。
【0014】
残念ながら、今日 製造されるカメラにおいて厄介なシステムの要求である、デジタル画像変換技術やフィルター交換技術は、明らかに、未だ利用できない技術を利用することができず、今までのところ、創造も着想もできていないフィルターを利用することもできない。
【0015】
カメラ技術の極めて一般的な方式の一つは、伝統的なネガフィルムとポジプリント写真である。このケースでは、ネガフィルムにシーンを撮影するためにカメラが使用され、該ネガフィルムは陰画を定着させるために処理される。続いて一連のプリントがネガフィルムから作成される。さらに、一連のプリントはネガからどんなときにでも直ぐに作成されることができる。残念ながら、デジタルカメラ(本願にて提案されるものも含む)では、後においてさらなる画像のコピーが要求されるなら、キャプチャーされ印刷される写真をデジタル形式で永久的に保存することが必要であろう。“写真”のコピーが単に最初のプリントを必要とするということは一般的には不便かも知れない。もちろん、その代わりに、高品質なカラー写真コピー装置を使用してコピーしても差し支えない。残念ながら、そのような装置はコピー能力に限界があり、そのようなコピーの形態が行われるとき、しばしば信号の劣化が生じる。明らかに、カメラプリントのコピーを作成する、より好適な形態が望まれる。
【0016】
さらに、下塗りの際のメディアの選択に起因して色が制限され、風景についてのほとんど全ての芸術的絵画は限定的な色域(gamut)を使用している。このような制限は、様々な芸術的効果を生じさせるために芸術家によってしばしば使われる。この処理の古典的な見本は、次のような周知の芸術作品を含む:
− カミーユ・ピサロ “L’le Lacroix−Rouen、霧の効果” 1888年、フィラデルフィア美術館
− シャルル・アングラン “セーヌ河、朝”−1889年、プティ・パレ・コレクション、ジュネーブ
− アンリ・ヴァン・ド・ヴェルド “Crepuscule” −1892年、クレラー=ミュラー国立美術館、オッテルロー
− ジョルジョ・スーラ “バ=ビュタンの砂浜、オンフルール”1886年−トゥルーネ美術館
【0017】
任意の入力画像から、上記リストのそれと似たような効果や特性を持つ出力画像を作成することが望ましい。
【0018】
何らかの衣服が創造されるとき多くの創造的な判断がなされる。初めに、衣服の形状やスタイルであり、加えて、布の色や種類である。しばしは、ファッションデザイナーは、衣服を完成させる前に、多くの異なる代替案にトライし、最終的なファッションの製品を描こうとする。
【0019】
このようなプロセスは、衣服の迅速かつ柔軟な変更や、ファッション製品の最終外観の迅速な判断機会のためには一般的に不十分である。
【0020】
双眼鏡や望遠鏡は良く知られている。特に、双眼鏡を例にすると、該装置は、ユーザの視力の能力を高めるために景色の望遠の拡大を提供する。さらに、夜間用双眼鏡等のような装置も、また、ユーザの視力の能力を高めるために使われる。残念ながら、これらのシステムは、リアルタイムの、アナログの光学部品に依存し、見えた景色の永久記録は困難である。シーンの永久コピーの記録に適していると思われる1つの方法は、シーンを取得するCCD等のようなセンサー装置を取り付けることと、後に行う印刷のためにストレージデバイスに保存することである。残念ながら、そのような構造は、野外で、携行性に富む状態での双眼鏡の使用が望まれる場合には特に邪魔となる。
【0021】
圧縮した状態での情報のストレージについては、多くの形態のものが周知である。例えば、コンピュータ装置の分野では、固定された、或いは携行できる磁気ディスク装置の使用は一般的である。携行できるディスクについては、“フロッピーディスク”や“ジップディスク”や、ポータブル磁気ストレージメディアの他の方式が、市場において大量に受け入れられている。携帯可能なストレージの他の形式は、一連の細長いピット(螺旋状のトラックに沿って配置されたものであり、レーザビーム装置によって読み取られるもの)を利用するコンパクトディスク“CD”である。CDの利用は、ストレージについての極めて低コストの形態を提供する。しかしながら、必要とされる技術はかなり複雑であり、書き換え可能なCDタイプの装置の使用は極めて限定される。
【0022】
ストレージの他の方式としては磁気カードがあり、しばしばクレジットカードや同種のものに使用される。これらのカードは、標準的には、カードのユーザに関連する情報を記録するため、裏面に磁気の帯を有している。近年、集積回路タイプの装置をカードに組み込むというスマートカード技術の形で、磁気カードの利便性が伸びてきている。残念ながら、そのような装置のコストはしばしば高く、使用される技術の複雑さもまた著しい。
【0023】
従来の銀塩カメラの処理システムは、多数のプリントの作成のため、周知の“ネガ”の使用を生じさせてきた。そのネガは、標準的にはプリントの生産源となり、その実施は、連続使用のためのケアや保護のために成長してきた。
【0024】
フォールトトレラント方法にて検知される符号化システムでは、効率的な復号化が可能となる符号化がどのようにすれば可能かという、重要な懸案がある。したがって、効率的な符号化システムの提供が望まれる。
【0025】
本発明の概要
本発明は、一体型カラープリンタ付きデジタルカメラを備えたカメラシステムの代替形態の提供に関する。加えて、該カメラは、イメージ・センシング・システムの見かけの解像度を増加させ、様々な“芸術的なスタイル”やグラフィック強化(graphic enhancement)に画像を変換するためのハードウェア及びソフトウェアを備える。
【0026】
本発明のさらなる態様に従って、シーンを撮像するための少なくとも1つのエリアイメージセンサーと、前記撮像されたシーンを所定のシーン変換要求に従って処理するためのカメラ処理装置(camera processor means)と、前記処理された画像のシーンをプリントメディアに印刷するためのプリンターと、前記カメラシステム内部の一つの取り外し可能なモジュールに収納されたプリントメディア及び印刷用インクと、を備えたカメラシステムが提供される。該カメラシステムは、前記エリアイメージセンサーによるシーンの撮像、及び前記プリンターによって前記シーンを印刷したものを前記カメラシステムから直接出力するためのハンドヘルドユニットを備える。
【0027】
前記カメラシステムは、好ましくは、プリントメディアの保管のためのプリントロールと、前記プリンターにより使用される印刷用インクを備えている。該プリントロールは前記カメラシステムから取り外し可能である。さらに、該プリントロールが前記カメラシステムに挿入されたときに認証が実行されるように、該プリントロールは、認証情報を含む認証チップを備え、前記カメラ処理装置は該認証チップを確認(interrogate)するように適合されている。
【0028】
さらに、前記プリンターは、ドロップ・オン・デマンドのインクプリンターと、印刷された写真の分離のための裁断装置とを含む。
【0029】
本発明の第1態様に従って、シーンを撮像するための少なくとも1つのエリアイメージセンサーと、前記撮像されたシーンを所定のシーン変換要求に従って処理するためのカメラ処理装置と、前記処理された画像のシーンをプリントメディアに印刷するためのプリンターと、前記カメラシステム内部の一つの取り外し可能なモジュールに収納されたプリントメディア及び印刷用インクと、を有するカメラシステムが提供される。該カメラシステムは、前記エリアイメージセンサーによるシーンの撮像、及び前記プリンターによって前記シーンを印刷したものを前記カメラシステムから直接出力するためのハンドヘルドユニットを備える。
【0030】
好ましくは、該カメラシステムは、前記プリンターにより使用されるプリントメディア及び印刷用インクを収納するためのプリントロールを備えている。該プリントロールは前記カメラシステムから取り外しが可能である。さらに、該プリントロールが前記カメラシステムに挿入されたときに認証が実行されるように、該プリントロールは、認証情報を含む認証チップを備え、前記カメラ処理装置は該認証チップを確認(interrogate)するように適合されている。
【0031】
さらに、前記プリンターは、ドロップ・オン・デマンドのインクプリンターと、印刷された写真の分離のための裁断装置とを含む。
【0032】
本発明のさらなる態様に従って、装置を操作するためのユーザ・インターフェースが提供される。該ユーザ・インターフェースは、装置に挿入されるカードを有しており、該カードの表面には、前記装置の出力に関して該カードが有する効果について目に見える説明が含まれている。
【0033】
本発明のさらなる態様に従って、
シーンを撮像するための少なくとも1つのエリアイメージセンサーと;
前記撮像されたシーンを所定のシーン変換要求に従って処理するためのカメラ処理装置と;
前記処理された画像のシーンをプリントメディアに印刷するためのプリンターと;
前記プリンターのための前記プリントメディアと印刷用インクとを収納するための取り外し可能なモジュールと;
を備えたカメラシステムが提供される。該カメラシステムは、前記エリアイメージセンサーによるシーンの撮像、及び前記プリンターによって前記シーンを印刷したものを前記カメラシステムから直接出力するためのハンドヘルドユニットを備える。
【0034】
本発明のさらなる態様に従って、
画像を検知するセンサー装置(sensor means)と;
検知された画像を所定の処理要求に従って処理するための処理装置と;
もしあるならば、音声信号を検知画像に関連付けて一致させるための音声録音装置と;
前記カメラシステムで供給されるプリントメディアの第1エリアに処理された検知画像を印刷し、前記プリントメディアの第2エリアに前記音声信号の符号化されたバージョンを印刷するための印刷装置と;
を備えたカメラシステムが提供される。好ましくは、該検知画像は前記プリントメディアの第1面に印刷され、前記音声信号の符号化されたバージョンは該プリントメディアの第2面に印刷される。
【0035】
本発明に従って、
画像を検知するエリアイメージセンサー装置と;
該検知した画像を保管するための画像ストレージ装置と;
画像検知時におけるカメラの向きを検出する定位装置と;
検知したカメラの向きを使用して前記検知画像を処理するための処理装置と;
を備えたカメラシステムが提供される。
【0036】
本発明のさらなる態様に従って、
焦点調整技術を使用して画像をキャプチャーし;
画像における構成の位置の指示器として焦点設定を利用し;
該焦点設定に特有の効果を生成するために該焦点設定を利用して画像を処理し;
その画像を印刷すること;
からなるデジタル画像処理方法が提供される。
【0037】
好ましくは、前記画像はズーム技術を使用してキャプチャーされ、そのズーム設定は、前記画像の部分を処理するように発見的な方法で使用される。
【0038】
本発明のさらなる態様に従って、アイポジション検知装置付きデジタルカメラにて撮影された画像を処理する方法が提供される。該方法は、空間的に変化するsense(アイポジション情報に依存するもの)で画像を処理するため、検知画像にアイポジション情報を使用するステップを含む。
【0039】
前記ステップは、興味のあるエリアの位置を前記検知画像の中で特定するためにアイポジション情報を使用することを含む。その処理は、画像への吹き出しの配置や、画像への特定のゆがみの適用を含むことができる。代わりに、その処理は、前記アイポジション情報のエリアに、より細かい画像のためにブラッシュストロークフィルターを適用することも含む。理想的には、前記カメラは、処理の結果を大体直ぐに印刷することができる。
【0040】
本発明のさらなる態様に従って、自動露出設定を有するデジタルカメラで撮影された画像の処理方法が提供され、該処理方法は、検知画像を処理するために前記情報を使用するステップを含む。
【0041】
上述の、情報を使用するステップは、画像中の色が前記自動露出設定の計算に変換されてなる補正画像を生成するため、画像中の色のリマッピングを決定するために自動露出設定を使用することを含む。その処理は、露出設定が暗い状態を示すときは、リマッピングされる画像の色が、より深く、より鮮やかになるようにし、露出設定が明るい状態を示すときは、リマッピングされる画像の色が、より明るく、より飽和するようにする。
【0042】
最近、デジタルカメラはますます一般的になってきている。これらのカメラは、標準的には、電荷結合素子(CCD)配列を使用した所望の画像の取得、並びに、撮像されたシーンの電子ストレージメディアへの保存(続けて行う画像処理や印刷のために、コンピュータシステムに後で行われるダウンロードのためのもの)を行う。標準的に、画像を印刷するためにコンピュータシステムを使用するとき、洗練されたソフトウェアが、要求に従って画像を処理するために使用される。
【0043】
残念ながら、そのようなシステムは、キャプチャーされた画像の重要な後処理を必要とし、通常は、撮影された向きに画像を提示し、キャプチャーされた画像の必要な修正又は要求された修正を実行するため、後処理工程に依存する。さらに、写真が撮影される際の多くの環境情報が失われる。
【0044】
本発明のさらなる態様に従って、デジタルカメラ及びフラッシュを使用してキャプチャーされた画像の処理方法が提供され、該方法は、以下のステップを含む。
(a) 前記フラッシュの使用に起因した、前記キャプチャーされた画像のゆがみ(ディストーション、distortion)の発見(特定)
(b) 前記ゆがみの影響を局部的に減少させるように前記画像の修正
【0045】
本発明の第2の態様に従って、キャプチャーされた画像におけるフラッシュのゆがみ(distortion)の影響を減少させるデジタルカメラであって、
(a) 画像のキャプチャーのために画像をキャプチャーするデジタル画像キャプチャー装置と;
(b) フラッシュが誘発した色のゆがみの、前記キャプチャー画像内での位置を探すためのゆがみ位置決定装置と;
(c) 該ゆがみ位置決定装置及び前記デジタル画像キャプチャー装置に接続されて、前記ゆがみの影響を減少させるように前記キャプチャー画像を処理するように適合された画像ゆがみ是正装置と;
(d) 表示のために前記画像ゆがみ是正装置に接続されている表示装置と;
を備えたデジタルカメラが提供される。
【0046】
本発明のさらなる態様に従って立体写真画像を作り出す方法が提供され、該方法は、
(a) シーンを立体画像的に撮像するためにカメラ装置を使用し;
(b) レンズシステムが第2面に形成された透明なプリントメディアにおける第1面部分の所定位置に、一体的に形成された画像のような立体撮影画像を印刷して、該印刷された立体撮影画像の観察者の左右の眼が前記シーンを立体画像的に見るようにする;
ことを含む。
【0047】
本発明のさらなる態様に従って、プリントメディア及びインク供給装置が提供される。該供給装置は、インクと該インク付着用のプリントメディアとをプリント装置に供給するように適合されている。該供給装置は、メディア・フォーマーの上に巻かれた、ロール状のメディアを内部に有している。また、該供給装置は、前記メディア及びインク供給装置の内部に一体的に形成されると共に、インク及びプリントメディアの前記プリント装置への供給のために前記プリント装置に接続されるように適合された少なくとも1つのインク・リザーバを有している。
【0048】
本発明のさらなる態様に従って、カメラ画像システムにて使用されるプリントロールであって、フォーマットされた多数の葉書情報が、所定の間隔で裏面に印刷されてなるプリントロールが提供される。
【0049】
本発明の第2の態様に従って、カスタマイズされた葉書の作成方法が提供される。該作成方法は、次のステップを含む。すなわち、フォーマットされた多数の葉書情報区域を所定位置に有する裏面を備えるプリントロールを備えるカメラ装置の使用と、該プリントロールの対応する画像面へのカスタマイズされた画像の撮像と、該カメラ装置によって葉書を作成するための前記プリントロールの使用。
【0050】
本発明の第3の態様に従って、カメラ画像を有する葉書を郵便制度を通じて送る方法が提供され、該方法は、次のステップを含む。すなわち、前払いの郵便料金が含まれているプリントロールを売るステップと、葉書を作成するために該プリントロールをカメラシステムで使用するステップと、該前払いした葉書を郵便で送るステップ。
【0051】
本発明は、さらに、一体型プリンター装置付きカメラシステムを対象とする。そのプリントメディアは、カメラシステムから取り外し自在であり、該プリントメディアに関する重要な情報を保存するための装置を含む。
【0052】
本発明は、さらに、一体型プリンター装置付きカメラシステムを対象とする。そのプリントメディアは、カメラシステムから取り外し自在であり、該プリントメディアへの認証アクセスを提供する。
【0053】
本発明のさらなる態様に従って、使用に際してカールする度合いが低い、平らなプリントメディアが提供される。該プリントメディアは、前記平面の方向に異方性の剛性を有している。本発明の第2の態様に従って、異方性剛性を有する平らなプリントメディアにプリントされた画像においてカールを減少させる方法が提供される。該方法は、前記プリントメディアの部分に局所的な圧力を与えるものである。
【0054】
本発明はさらに、一体型プリンター装置を有するカメラシステムを対象とする。該カメラシステムは、プリンターに残っている画像の数のインジケータを有する。該インジケータは、多くの異なるモードで、残っているプリントの数を表示することができる。
【0055】
本発明のさらなる態様に従って画像の自動処理方法が提供される。該処理方法は、高い空間的な変化を持つ特徴を、画像の中で位置特定し、高い空間的な変化を持つそれらの領域から放射する一連のブラッシュストロークを画像に描くことを含む。好ましくは、そのブラッシュストロークは、重要な特徴付けるものの近傍ではサイズが小さい。加えて、ブラッシュストロークの所定部分の位置はジッタリングの下になる。
【0056】
本発明のさらなる態様に従って、入力画像を歪ませるようなワーピング方法が提供される。該方法は、
所定の寸法A×Bである任意の出力画像のためのワープマップであって、該ワープマップの各要素は、理論上の入力画像における対応領域を、前記要素の座標位置に対応した前記任意の出力画像の画素位置にマッピングするワープマップを入力するステップと;
縮小されたワープマップを形成するためにワープマップをワープ画像の次元に縮小するステップと;
該縮小されたワープマップの各要素のため、該要素の値と隣接する要素の値とから前記入力画像における貢献領域を計算するステップと;
該貢献領域から前記要素に対応するワープ画像の画素のため、出力画像の色を決定するステップと;
を含む。
【0057】
本発明のさらなる態様に従って、センサー装置によって読み取るため、メディアに保存されたデータの復元力を増加させる方法が提供される。該方法は、
(a) 回復可能な方法で保存されているデータを、高周波成分を有する変調信号にて変調するステップと;
(b) 前記データを変調された形式で前記メディアに保存するステップと;
(c) 該変調され保存されているデータを前記センサー装置によって検知するステップと;
(d) 変調され前記メディアに保存されているデータの位置の分離を探知するため、変調され保存されているデータの変調を中立化するステップと;
(e) 保存データの内の変調されていないものを、保存データの内の変調されているものから回収するステップと;
を含む。
【0058】
本発明の好適な実施例は、カメラシステムの中に設けられたシステムであって、後で復号化が行えるように、CCDタイプの装置を介してデータを読み込むためのカード読み取りシステムに関して説明される。さらに、該好適な実施例の説明は、誤差制御システムの分野に大きく依存する。したがって、この仕様が案内される人は、誤差制御システムのエキスパートになるべきである。特に、“デジタル・コミュニケーションやストレージのための誤差制御システム”ステファン.B.ウィッカー著、プレティス・ホール社出版、1995年、特にリード・ソロモン・コードの考察のような標準的なテキストや他の標準的なテキストにしっかりと精通すべきである。
【0059】
本発明の目的は、スキャンされた画素を含むスキャンされた画像を、対応するビットマップイメージに変換する方法を提供することであって、該方法は、ビットマップイメージにおける各ビットのために、次のステップを有する。すなわち、
a.スキャンされた画像における周囲のビットの位置から現在のビットにおけるスキャンされた画像での予期された位置を決定するステップ、
b.前記スキャンされた画像における期待された対応画素の位置での値から前記ビットの適当な値を決定するステップ、
c.前記予期された位置での予期された強度の中心の重心の寸法を決定するステップ、
d.前記スキャンされた画像における現在のビットの周囲に近接した画素のため、重心の寸法を決定するステップ、
e.前記重心の寸法が前記予期された位置に関連して伸びる場合、伸びた重心の寸法を有する画素に該予期された位置を調整するステップ、
とを有する。
【0060】
本発明のさらなる態様に従って、
画像を検知できるデジタルカメラ装置と;
該画像を処理すべく該デジタルカメラ装置に挿入されて該デジタルカメラ装置に画像処理の指示(画像にテキストを付加する指示)を与えるように適合された画像処理データ入力カードと;
前記画像に付加する新たなテキスト文字を作成するために、前記画像処理指示に関連して前記デジタルカメラ装置により使用される一連の非ローマ・フォント文字を有するテキスト入力装置であって、前記画像に付加する前記文字を入力するために前記デジタルカメラ装置に接続されるテキスト入力装置と;
を備えた、画像を編集する、テキストのための装置が提供される。
【0061】
望ましくは、前記新しいテキスト文字を作成するために前記画像処理指示に従って前記装置により要求された場合に、フォント文字が前記デジタルカメラ装置に送られる。前記画像処理データ入力カードは、ローマフォント文字のセットと、ヘブライ語、キリル文字、アラビア語、漢字及び中国文字(chinese character)の少なくとも1つを含む非ローマ文字とを含む。
【0062】
本発明のさらなる態様に従って、
画像を検知できるデジタルカメラ装置と;
該画像を処理すべく該デジタルカメラ装置に挿入されて該デジタルカメラ装置に画像処理の指示(画像にテキストを付加する指示)を与えるように適合された画像処理データ入力カードと;
前記画像に付加する新たなテキスト文字を作成するために、前記画像処理指示に関連して前記デジタルカメラ装置により使用される一連の非ローマ・フォント文字を有するテキスト入力装置であって、前記画像に付加する前記文字を入力するために前記デジタルカメラ装置に接続されるテキスト入力装置と;
を備えた、画像を編集する、テキストのための装置が提供される。
【0063】
本発明の目的は、作り出される新しいフィルターの利点、及び、プリントアウトするデジタル画像の処理のための柔軟性のある方法の利点に加えて、アップデートされる技術の利点を利用することである。
【0064】
本発明のさらなる態様に従って、一連のインクドットからなる入力画像の再生のための画像コピー装置が提供され、該装置は、
(a) 対応した見本画像を作成するため、前記ドットの周波数よりも高いサンプリングレートで前記入力画像を撮像するイメージング・アレイ装置と;
(b) 前記見本画像中の印刷ドットの位置を決定するために前記画像を処理する処理装置と;
(c) 前記印刷ドットの位置に対応する、プリントメディア上の位置にインクドットを印刷するプリント装置と;
を含む。
【0065】
2. 前記コピー装置が前記入力画像のフルカラーコピーを印刷する、請求項1に記載された画像コピー装置。
【0066】
本発明のさらなる態様に従って、ボケ修正画像を出力するためのカメラシステムが提供される。該カメラシステムは、
画像を検知するイメージ・センサーと;
外部環境に関連した前記画像の何らかの動きを検知して、その動きを示す速度出力を生成するための速度検出手段と;
それらのイメージ・センサーや速度検出手段に接続されると共に、前記画像のボケ修正を行ってボケ修正画像を出力するように適合されたプロセッサー手段と;
を備えている。
【0067】
望ましくは、前記カメラシステムは、前記ボケ修正画像を直ぐに出力するために印刷装置に接続されるものであって、携帯用のハンドヘルドユニットである。前記速度検出手段は、微小電気機械(MEMS)装置のような加速度計を含むことができる。
【0068】
本発明のさらなる態様に従って、フォトセンサー読み取り形成品が提供され、該形成品は、
(a) 発光素子の挿入のための、一連の発光体収納部と;
(b) 前記一連の発光素子から発光された光を、撮像されるべきオブジェクトの表面に焦点を合わせるための発光素子合焦装置と;
(c) 一連のフォトセンサー列を挿入するためのフォトセンサー収納部と;
(d) 撮像されるべきオブジェクトからの反射光を、前記CCD列の特徴的な部分に焦点を合わせる合焦装置と;
を備える。
【0069】
本発明の態様に従って、コンピュータシステムに接続されるプリンター装置が提供される。該プリンター装置は、プリントメディアに画像を印刷するためのインクジェット・プリントヘッドからなるプリントヘッドユニットを備え、さらに、消耗財であるプリントロールユニットを挿入するための空洞を有する。該プリントロールユニットは、該空洞に挿入される消耗財であるプリントメディアとインクとを含み、該インクは前記プリントメディアに画像を印刷するため、前記インクジェット・プリントヘッドにより使用される。
【0070】
本発明のさらなる態様に従って、
画像を検知するセンサー装置(sensing means)と;
カメラに入力される修正指示に従って前記検知した画像を修正する修正装置と;
該修正された画像を出力するための出力装置と;
を備えたデジタルカメラシステムであって、前記修正装置が、中央のクロスバー・スイッチの周りに配列された一連のPE(Processing element)であるものが提供される。望ましくは、該PEは、書き込み可能なコントロール・ストアを有するマイクロコード・ストアの制御下で動作する算術論理演算ユニット(ALU)を有する。前記PEは、該素子にて使用される画素データを保存するための内部入出力FIFOを含むことができ、前記修正装置は、該装置へ画像の画素データを書き込んだり読み込んだりするための読み書きFIFOに接続されている。
【0071】
それぞれのPEは輪になるように配置されることができ、また、それぞれのPEは最も近い隣のPEに単独で接続される。前記ALUは、内部クロスバースイッチを介してALU内の一連の中央演算装置に接続された一連の入力を受け、テンポラリーデータのストレージのための多くの内部レジスターを有する。該中央演算装置は、乗算器、加算器及びバレル・シフターの内の少なくとも1つを有している。
【0072】
前記PEはさらに、該PEに画素データを転送するためのコモン・データバスに接続されている。該データバスはデータキャッシュに接続され、該データキャッシュは前記PEと、画像を保管するメモリーストアとの間で中間キャッシュとして機能する。
【0073】
本発明のさらなる態様に従って、カードに高ピッチレートで保存された検知画像データを、リアルタイムで短時間に復号化する方法が提供され、該方法は、
前記画像データの初期位置を検出するステップと;
該画像データの対応するビットパターンを決定すべく、該画像データを復号化するステップと;
を含む。
【0074】
本発明のさらなる態様に従って、カードに高ピッチレートで保存されて回転やワーピングやマーキングがされる検知画像データをフォールトトレラント方法によって短時間で復号化する方法が提供され、該方法は、
前記画像データの開始の初期位置を決定するステップと;
前記ピッチレートよりも高いサンプリングレートで前記画像データを検知するステップと;
カラム処理によってカラム中の検知画像データを処理し、次のカラムの各ドットの中心(重心)の期待される位置をキープし、期待される次の重心の位置をアップデートするように、各カラムを処理する場合に該重心の微細な調整を行うステップと;
を有する。
【0075】
本発明のさらなる態様に従って、ドット配列からなり、画素配列を形成するため、該ドット配列のピッチ周波数よりも高いレートでサンプリングされた検知画像データのドットの値を正確に検出する方法が提供され、該方法は、
前記画素配列の内で、期待された重心位置に対応した、期待された中央画素を決定するステップと;
前記画素の位置を中心とするドットの値を出力するルックアップテーブルのインデックスとして、前記中央画素の検知値、及び、多くの隣接画素の検知値を使用するステップと;
からなる。
【0076】
本発明のさらなる態様に従って、カードに高ピッチレートで保存され、回転やワーピングやマーキングの効果を前提とする検知画像データのドットの位置を正確に決定する方法が提供され、該方法は、
カラム中の前記画像データをカラム形式によって処理するステップと;
画素の前記処理されたカラムのドットパターンを記録するステップと;
前記処理された画素の記録されたドットパターンから、期待されたドットパターンを最新のカラム位置にするステップと;
前記期待されたドットパターンを、前記最新のカラム位置での検知画像データの実際のドットパターンと比較するステップと;
その比較が所定の誤差内である場合に、新しい実際のドット位置を生成するため、前記期待されたドットパターンに適合させるため、実際のドット位置を前記最新のカラム位置に帰るように前記最新のカラム位置を使用するステップと;
次のカラムのドット位置を決定する際に、最新のカラム位置にて前記実際のドット位置を利用するステップと;
を含む。
【0077】
本発明のさらなる態様に従って、画像に絵画の効果を擬態するために画像バンプマップを結合させる方法が提供され、該方法は、
絵の具が塗られる表面を生じさせる、画像キャンバスバンプマップを規定し、
該表面に描かれるオブジェクトのペイントバンプマップを規定し、
前記画像キャンバスバンプマップによる、前記ペイントバンプマップの修正の程度を決定する剛性因子を使用し、最終的な結合バンプマップを作成するために前記画像キャンバスバンプマップと前記ペイントバンプマップとを結合すること、
を含む。
【0078】
本発明のさらなる態様に従って、芸術的な効果を生じさせるため、入力されてきた画像を自動的に処理する方法が提供され、該方法は、
目的とする芸術的効果を作成するため、所定の出力ガモットへの入力ガモットのマッピングを決定し、
所定の出力ガモットを有する出力画像に前記入力画像をマップするマッピングを利用する、
ことを含む。
【0079】
望ましくは、前記方法は、さらに、ブラッシュストローク・フィルターを使用した、出力画像の後処理のステップを含む。
【0080】
さらに、望ましくは、前記出力ガモットは、所定数の入力ガモット値を、対応する出力色ガモット値にマッピングすると共に、入力ガモット値から出力色ガモット値へのマッピングの維持を挿入することによって形成される。その挿入プロセスは、出力色ガモット値への入力ガモット値の所定数のマッピングの加重和を含む。
【0081】
本発明の第2の態様に従って、出力色ガモットに入るように入力色ガモットを圧縮する方法が提供され、該方法は、
現在の入力色の強さにてゼロクロミナンス値を決定するステップと;
前記ゼロクロミナンス値から前記入力色ガモットのエッジまでの距離であるソース距離を決定するステップと;
前記出力色ガモットの好適なエッジを決定するステップと;
前記ゼロクロミナンス値から前記出力色ガモットのエッジまでの距離であるターゲット距離を決定するステップと;
前記ソース距離と前記ターゲット距離との比から導き出される因子により、現在の入力色強さを計るステップと、
を備える。
【0082】
好ましくは、前記現在の入力色強さは、前記ゼロクロミナンス値ポイントからの前記現在の入力色の距離に基づく因子により計られる。
【0083】
本発明のさらなる態様に従って、カメラによって検知された画像の出力のための携帯用カメラが提供され、該カメラは、
画像を検知するためのセンサー装置(sensing means)と;
タイル状画像を作成すべく、検知された画像にタイル効果を付与するタイル装置と;
該タイル状画像を表示するための表示装置と;
を備えている。
【0084】
本発明のさらなる態様に従って、カメラによって検知された画像の出力のための携帯用カメラが提供され、該カメラは、
画像を検知するためのセンサー装置(sensing means)と;
テクスチャが付加された画像を作成すべく、検知された画像にテクスチャ効果を付与するテクスチャマッピング装置と;
該テクスチャが付加された画像を表示するための表示装置と;
を備える。
【0085】
本発明のさらなる態様に従って、カメラにより検知された画像を出力するための携帯用カメラが提供され、該カメラは、
画像を検知するためのセンサー装置(sensor means)と;
該検知された画像にて光を放つ光源の効果を真似たイルミネーション画像を作成すべく、検知画像に照明効果を付与する照明装置と;
該イルミネーション画像を表示するためのディスプレイ装置と;
を備えている。
【0086】
本発明のさらなる態様に従って、
検知画像の特徴を有する布製衣料を描くディスプレイ装置への出力のため、前記検知画像の処理のためにカメラそうちに入力される一連の入力トークン信号と;
前記出力画像を形成するために、前記入力トークン信号を読み、画像を検知し、読み込んだ入力トークン信号に従って該画像を処理するように適合されたカメラ装置と;
前記出力画像を表示するように適合されたディスプレイ装置と;
からなる衣類創作システムが提供される。
【0087】
本発明のさらなる態様に従って、画像センサー装置と画像表示装置とを有し、画像センサー装置によって検知された任意の画像の部分を衣類にマッピングして、前記画像表示装置にて表示する衣類創作システムが提供される。
【0088】
本発明のさらなる態様に従って、処理された画像を形成する方法が提供され、該方法は、一連のカメラ処理ユニット(camera manipulation unit)を接続することを含み、それぞれのカメラ処理ユニットは、処理された出力画像を形成すべく、入力画像に画像処理を与えるものである。それらのカメラ処理ユニットの最初の1つは周囲から画像を検知し、それらのカメラ処理ユニットの少なくとも最後の1つは、色落ちしない出力画像を形成する。
【0089】
本発明のさらなる態様に従って、遠い所にある被写体を眺めるための携帯用撮像装置が提供され、該撮像装置は、
遠く離れたところに見える被写体を拡大するための光学レンズシステムと;
該被写体を同時に検知するための検知システムと;
該検知された画像を処理してプリンター装置に送るために前記検知システムに接続される処理装置と;
要求に応じて前記携帯用撮像装置により検知された画像をプリントメディアに印刷するため前記処理装置に接続されたプリンター装置と;
を備えている。
【0090】
好ましくは、前記システムは、さらに、前記プリンター装置にロール状のプリントメディアとインクとを供給するため、前記プリンター装置に接続される、取り外し可能なモジュールに配置された、取り外し可能なプリントメディア供給装置を有する。
【0091】
前記プリンター装置は、検知した画像を出力するための、フルカラープリンターを提供する、インクジェットプリント装置を備えることができる。
【0092】
さらに、好ましい実施例は、遠い所の被写体を前記検知システムに投影するためのビームスプリッタ装置を備えた双眼鏡システムとして実施される。
【0093】
本発明のさらなる態様に従って、カードに印刷された一連のドットとして、フォールトトレラント方法により符号化されている録音済み音声を再生するシステムが提供される。該システムは、
録音済み音声の目に見える形式のスキャニングのためのオプティカル・スキャナー装置と;
スキャンされた音声符号を復号化して音声信号を生成するように、該オプティカル・スキャナー装置に接続された処理装置と;
要求に応じて該音声信号を再生するように、該処理装置に接続された音声エミッター装置と;
を備える。
【0094】
前記符号化は、録音済み音声のリード・ソロモン符号化を含むことができ、スキャニングを補助するために高周波変調されたインクドット列を含むことができる。
【0095】
前記システムは、前記カードを挿入するための細長い穴を有する棒状のアームを備える。
【0096】
本発明のさらなる態様に従って、印刷されたカードに情報を担持させる方法を提供するものであって、該方法は、
カードの表面を多くの所定のエリアに分割するステップと;
該所定のエリアの内の第1エリアに格納されるべき第1のデータを印刷するステップと;
前記カードに保存されている情報を読み取るときに前記印刷された第1の所定エリアを使用するステップと;
該カードに保存された情報をアップデートするときに、該カードに保存されるさらなる情報が印刷される、データの印刷に使用されていない第2の所定エリアを決定するステップと;
を有する。
【0097】
望ましくは、それらのエリアは、予め決められた順番で選択される。また、例えば、データのリード・ソロモン符号化によってもたらされるフォールトトレラントを有するデータを印刷するため、高解像度のインクドットプリンターを使用して印刷される。前記エリアのボーダーの線引きをするボーダー領域が印刷されて提供され、さらに、該ボーダー領域の位置を示すのに役立つ、多数のボーダー・ターゲット・マーカーが提供される。それらのボーダー・ターゲットは、第1色の大きなエリアと、該エリアの中心に配置される、第2色の小さなエリアとからなる。
【0098】
望ましくは、前記データは、市松模様パターンのような高周波変調信号を使用して印刷されている。その印刷されたものは、1インチにつき約1200ドットよりも大きい解像度のドット配列であり、好ましくは、1インチにつき少なくとも1600ドットよりも大きい解像度を有するドット配列である。該所定のエリアは、該カードの表面にて標準の配列に配列することができ、該カードは、一般的な長方形のクレジットカードのようなサイズ及び形状にすることができる。
【0099】
本発明のさらなる態様に従って、画像処理のための一連の指示を作成する方法が提供される。該方法は、
ユーザが選択するため、見本画像の初期配列を表示するステップと;
該見本画像の少なくとも1つをユーザが選択することを受諾するステップと;
見本画像のさらなる配列を作成するため、その選択結果を利用するステップと;
ユーザが最終的な最適画像を少なくとも1つ選択するまで、上述のステップを繰り返して適用するステップと;
前記一連の指示に従って見本画像を作成するステップと;
該一連の指示を出力するステップと;
を含む。
【0100】
さらに、前記方法は、ユーザの写真をスキャンすることと、各見本画像の作成のための初期画像として該スキャンされた写真を使用すること、を含む。前記指示は、前記カードの第2面に視覚表示されるように印刷されるのに加えて、第1面にエンコード形式で印刷されることができる。加えて、処理画像自体は印刷される。
【0101】
前記配列を形成するため、遺伝的アルゴリズムや遺伝的プログラミング技術を含む画像の形成に様々な技術が使用され得る。さらに、さらなる画像の形成において、‘これまでのところベスト(best so far)’の画像が使用のために保存される。
【0102】
望ましくは、カードや写真を販売する自動販売機に組み込まれたコンピュータシステムにこの方法が実行される。
【0103】
本発明のさらなる態様に従って、挿入されたカードに情報を保存するための情報保存装置が提供され、該装置は、
カードの面に印刷されたパターンであって、カードの所定数の可能動作領域(possible active area)に配置されたパターンを検知するセンサー装置と;
該検知したパターンを対応するデータに復号化するためのデコード装置と;
カード表面であって前記活動領域の1つにドットパターンを印刷するための印刷装置と;
前記センサー装置及び前記印刷装置の公知の相対位置に、検知されるカードを配置する位置決め装置と;
を備え、
前記検知装置は、前記カードの最新の動作プリント領域にて印刷されたパターンを検知するように適合され、
前記デコード装置は、該検知したパターンを対応する最新のデータに復号化するように適合化され、
前記印刷装置は、最新のデータのアップデートが要求された場合に、カードの正確な位置決めのために位置決め装置が駆動された後、前記活動領域の内の最新の1つに、アップデートされた最新データをプリントするように適合される。
【0104】
前記印刷装置は、望ましくは、1度にカード幅の印刷が可能なカード幅プリントヘッドからなるインクジェットプリンタ装置を備える。前記位置決め装置は、カードを挟んでカードの移動をコントロールするための一連のピンチローラーを備えることができる。前記印刷されたパターンは、例えば、リードソロモン復号化を使用して、フォールトトレラント方法により配列され、前記デコード装置は、該フォールトトレラントパターンのために好適なデコーダを有する。
【0105】
本発明のさらなる態様に従って、
画像を検知するイメージ・センサーと;
検知画像及び関連するシステム構成を保存するためのストレージ装置と;
前記検知画像を修正するために画像修正データモジュールを入力するためのデータ入力装置と;
前記検知画像の処理に加えて前記カメラシステムのコントロールのために、前記イメージ・センサーや前記ストレージ装置や前記データ入力装置に接続された処理装置と;
供給されるプリントメディアに、要求に応じて前記検知画像を印刷するための印刷装置と;
を備えたデジタルカメラシステム、並びに、
さらなる画像修正モジュールの挿入に基づき、前記デジタルカメラシステムの操作の修正を前記処理装置にさせるように適合された、画像修正データモジュールの提供方法が提供される。
【0106】
望ましくは、符号化されたデータをその表面に有するカードを前記画像修正データモジュールが有し、そのデータの符号化は印刷により行われ、前記データ入力装置は、カード表面をスキャンするための光学スキャナーを有する。操作の修正は、繰り返し、同じ画像に、一連の画像修正モジュールが挿入される順にそれぞれ画像修正を行う。
【0107】
本発明のさらなる態様に従って、
画像を検知するイメージ・センサーと;
検知画像及び関連するシステム構成を保存するためのストレージ装置と;
前記検知画像を修正するために画像修正データモジュールを入力するためのデータ入力装置と;
前記検知画像の処理に加えて前記カメラシステムのコントロールのために、前記イメージ・センサーや前記ストレージ装置や前記データ入力装置に接続された処理装置と;
供給されるプリントメディアに、要求に応じて前記検知画像を印刷するための印刷装置と;
を備え、画像修正データモジュールは、デジタルカメラシステムにて一連の診断テストの実施、及び前記印刷装置を介した結果の印刷を前記処理装置が行うように適合されたデジタルカメラシステムが提供される。
【0108】
望ましくは、符号化された指示データをその一面に有するカードを前記画像修正データモジュールが有し、前記処理装置は、該カードに符号化された指示データを読み取るための装置を有する。前記診断テストは、連続した全てが黒の帯を印刷するなどによって、プリンター装置の操作を向上させるため、プリンター装置のためのクリーニングサイクルを有することもできる。代わりに、インクジェットプリンターの操作を向上させるため、前記診断テストがノズルの調節を含むこともできる。加えて、カメラシステムの様々な内部操作パラメータを印刷することもできる。重力衝撃センサーをカメラシステムに装備した場合には、前記診断テストは、該センサーの局地を印刷することもできる。
【0109】
本発明のさらなる態様に従って、画像を生成するためのカメラシステムが提供され、該カメラシステムは、画像を検知するセンサーと;何らかの所定の処理要求に従って前記検知画像を処理するための処理装置と;プリントメディアの面に前記検知画像を印刷するための印刷装置と;前記プリントメディアに形成された磁気感受性面に関連情報を記録するための磁気記録装置とを備える。前記関連情報は、検知画像に関連した音声情報を含み、前記印刷装置は、望ましくは、検知画像を前記プリントメディアの第1面に印刷し、前記磁気記録装置は前記プリントメディアの第2面に前記関連情報を記録する。前記プリントメディアは、前記カメラシステムの内部の取り外し可能なロールに収納されることができる。1つの実施例では、前記磁気感受性面は、前記プリントメディアの裏面に貼り付けられた帯片を含むことができる。
【0110】
本発明のさらなる態様に従って、携帯用カメラ装置のイメージセンサーにキャプチャーされた画像の、色落ちしないコピーを作る方法が提供される。前記携帯用カメラ装置は、該カメラ装置に格納されているプリントメディアに印刷するための一体型コンピュータ装置と一体型プリンター装置とを備えており、前記方法は、前記イメージセンサーにて画像を検知するステップと;フォールトトレラントの符号性質を持つ符号化形式に前記画像を変換するステップと;前記一体型プリンター装置を使用して画像の色落ちしない記録としての画像の符号化形式を印刷するステップとからなる。
【0111】
好ましくは、前記一体型プリンター装置は、プリントメディアの第1面及び第2面に印刷するための装置を備え、前記検知画像やその視覚的な処理は第1面に印刷され、符号化された形式は第2面に印刷される。検知画像のサムネイルは、前記画像のエンコード形式の横に印刷されることができる。また、そのフォールト・トレラント符号化は、永久的な録音が、反復可能な高周波スペクトラル成分を有する符号化形式に市松模様のような高周波変調信号を適用するのに加えて、画像のリードソロモン符号化バージョンを形成することも含む。
【0112】
本発明の第1の態様に従って、カメラ装置で使用される画像処理カードの販売のための販売システムが提供される。該カメラ装置は、画像処理カードの挿入のためのカード処理インターフェースを有する。該画像処理カードは、前記カメラ装置での画像の処理のためのものである。前記販売システムは、
画像処理カードを出力するための複数の印刷装置と;
該画像処理カードの作成のために必要な一連の画像処理カードデータのストレージのために、それぞれの印刷装置が対応するコンピュータシステムに接続されている。
【0113】
望ましくは、前記コンピュータシステムは、コンピュータ・ネットワークを介してキャッシュされる方法で、一連の画像処理カードデータを保存する。そして、カード配布コンピュータは、新しい画像処理カードをコンピュータシステムへ配布する。
【0114】
前記画像処理カードにイベントカード(季節ごとのイベントに利用すべくカードをプリントアウトするため、前記コンピュータシステムに分配される季節ごとのカード)が含まれる場合、本発明は特定用途を有する。
【0115】
本発明のさらなる態様に従って、オブジェクトの表面に符号化された、一連のブロックデータ領域を有するデータ構成が提供され、それぞれのブロックデータ領域は、
符号化された形式に復号化されるデータを含む符号化データ領域と;
該符号化データ領域の第1の周辺部を囲むように配置された、一連のクロックマーク構成と;
該符号化データ領域の第2の周辺部を囲むように配置された、一連の、簡単に特定できるターゲット構成と;
からなる。
【0116】
前記ブロックデータ領域は、さらに、前記符号化データ領域の第3の周辺部の周りに配置された方向データ構成(orientation data structure)を含む。該方向データ構成は、前記周辺部のエッジに沿った、等データ点の線(a line of equal data points)を含むことができる。
【0117】
前記クロックマーク構成は、符号化データ領域のエッジに沿って配置されたデータ点の実質的近接第2の線(a substantially adjacent second line)に加えて、等データ点の第1の線を有することができる。該クロックマーク構成は、符号化データ領域の反対側に配置されることができる。
【0118】
前記ターゲット構成は、間隙を有するように配置された一連のデータポイントブロック(data
points blocks)のセットを有し、該データポイントは、中央部以外では、第1の大きさ(magunitude)の定値を有し、中央部では、前記第1の大きさとは逆の大きさを有する。前記ブロックのセットは、さらに、前記逆の大きさの連続群の値を有する、ターゲット数表示構成を含む。
【0119】
前記データ構成は、理想的には基材表面に印刷された一連のドットにて活用される。
【0120】
本発明の第2の態様に従って、オブジェクトの表面に符号化されたデータ構成を復号化する方法が提供され、該データ構成は一連のブロックデータ領域を有し、それぞれのブロックデータ領域は、
符号化された形式に復号化されるデータを含む符号化データ領域と;
該符号化データ領域の第1の周辺部を囲むように配置された、一連のクロックマーク構成と;
該符号化データ領域の第2の周辺部を囲むように配置された、一連の、簡単に特定できるターゲット構成と;
からなり、前記方法は、
(a) 前記データ構成をスキャンするステップと;
(b) 前記データ構成のスタートの位置を探すステップと;
(c) 前記ターゲット構成の最新の方向を判断して該ターゲット構成の位置を探すステップと;
(d) 前記ターゲット構成の位置から前記クロックマーク構成の位置を探すステップと;
(e) 前記符号化データ領域のビットデータの期待される位置を決定するために前記クロックマーク構成を使用するステップと;
(f) 各ビットデータのために期待されるデータ値を決定するステップと;
を有する。
【0121】
前記クロックマーク構成は、符号化データ領域のエッジに沿って配置されたデータ点の実質的近接第2の線(a substantially adjacent second line)に加えて、等データ点の第1の線を有することができる。前記(e) の、使用するステップは、前記クロックマーク構成中の最新の位置を維持するため、疑似位相ロックループタイプのアルゴリズムを使用してデータポイントの第2の線に沿ってランすることも含む。
【0122】
さらに、決定するステップ(f) は、
検知したビット値を3つの隣接する領域(すなわち、中央領域、第1のlower extreme 領域、及び第2のupper extreme 領域)に分けることを含み、
第1の領域にそれらの値が含まれ、該第1の領域に対応するビット値を決定し;
第2の領域にそれらの値が含まれ、該第2の領域に対応するビット値を決定し;
前記中央領域にそれらの値が含まれ、その値が第1の値か第2の値かを決定するために空間的に囲まれる値を使用する。
【0123】
本発明のさらなる態様に従って、検知データの出力データ値を決定する方法が提供され、該方法は、
(a) 検知されたデータ値を3つの隣接する領域(すなわち、中央領域、第1のlower extreme 領域、及び第2のupper extreme 領域)に分けることを含み、
第1の領域にそれらの値が含まれ、該第1の領域に対応するビット値を決定し;
第2の領域にそれらの値が含まれ、該第2の領域に対応するビット値を決定し;
前記中央領域にそれらの値が含まれ、その値が第1の値か第2の値かを決定するために空間的に囲まれる値を使用する。
【0124】
本発明のさらなる態様に従って、複数の異なる供給スロットに複数の異なる流体を供給するための流体供給装置が提供される。該供給スロットは、交互に配置するという方法で周期的な間隔を置いて配置され、前記流体供給装置は、
複数の異なる流体のそれぞれのための流体注入口装置と;
異なる流体のそれぞれのための流路であって、前記供給スロットのそれぞれに接続されたメインチャンネル流路と;
前記供給スロットのそれぞれを、対応するメインチャンネル流路に接続するサブチャンネル流路と;
を備えている。流体の数は2よりも多く、成形された流体供給ユニットの第1面に少なくとも2本のメインチャンネル流体装置が形成され、他のメインチャンネル流体装置は、成形品の表面を貫通する貫通孔を介して前記スロットに接続されたサブチャンネル流路で該成形品の上面に形成される。
【0125】
望ましくは、前記供給装置は、プラスチック射出成形されており、前記スロットのピッチレートは、1インチ当たり1000に等しいか、1000よりも少ない。さらに、スロットの集合が、写真の幅に形成される。望ましくは、前記流体供給装置は、1又はそれ以上のピンチローラーを収容するためのローラースロット装置を複数有しており、前記流体はインクからなり、前記ローラーは、前記スロットに接続されたプリントヘッドをプリントメディアが横切るように制御される。前記スロットは、カラムに配置された一連のカラースロットに分割される。
【0126】
好ましくは、前記流体供給装置の少なくとも1つのチャンネルは、製造時に露出され、該露出面をシーリングテープにてシールされている。有利なことには、前記流体供給装置は、テープによる自動結合されたワイヤを得るため、TABスロットにより提供される。
【0127】
本発明のさらなる態様に従って、インク供給路を介して供給するインク吐出装置を少なくとも1つ使用する画像印刷用プリンター装置が提供され、該装置は、
前記プリンターへのインク供給のためのインク供給装置に連動するように適合された、1つの出力色につき1つで一連のインク供給口と;
前記プリンター装置の外表面に沿った、一連の導電性コネクタパッドと;
インクを吐出させる一連のインク吐出装置を有するページ幅プリントヘッドと;
前記インク供給口から前記ページ幅プリントヘッドの前記インク吐出装置にインクを供給するインク供給システムと;
前記ページ幅プリントヘッドを前記導電性コネクタパッドに接続する、複数の相互接続ワイヤと;
を備え、
前記プリンター装置は、ハウジング装置の中に取り外し可能に挿入されるように適合され、該ハウジングは、前記導電性コネクタパッドとの相互接続のための相互接続部や、前記インク供給装置によるインクの供給のため、前記インク供給口との相互接続のためのインク供給コネクタを有している。
【0128】
望ましくは、前記複数の相互接続ワイヤは、前記プリンター装置の外面を包み込むと共に、導電性コネクターパッドに接続されたテープ自動ボンディング・シートを形成する。該相互接続されたワイヤーは、
前記導電性コネクターパッドに相互接続されると共に、プリントヘッドの全長に沿って互いにほぼ平行な配置された第1のセットのワイヤーと、
該プリントヘッドの表面から互いにほぼ平行に配置された第2のセットのワイヤーと、
を有している。第1のセットのワイヤーのそれぞれは、第2のセットのワイヤの多くに接続されている。前記インク供給口は、薄いダイアフラム部を有している。該ダイアフラム部は、前記インク供給コネクタが前記ハウジング装置に挿入されることに基づき穴が開けられている。
【0129】
前記ページ幅プリントヘッドは、それぞれに所定数のインク吐出装置を有する、実質的に等しく繰り返し可能なユニット(substantially identical repeatable unit)を多数備えることができる。該ユニットは、所定数の接続ワイヤを有する標準インターフェースを有し、各標準インターフェース装置は、導電性コネクタパッドにグループで接続される。該プリントヘッド自体は、シリコンウェハから作成されることができ、ページ幅ストリップに分離される。
【0130】
本発明のさらなる態様に従って、電流の変動をモニターするという方法によって集積回路のモニタリングに対する抵抗を与える方法が提供され、前記方法は、前記集積回路の一部であるスプリアスノイズ発生回路を形成するステップを含む。
【0131】
前記ノイズ発生回路はLFSR(リニア・フィードバック・シフト・レジスタ)のような乱数発生器を含むことができる。
【0132】
本発明のさらなる態様に従って、低消費電力のCMOS回路が提供される。該回路は、第1のクロックと入力とに接続されたゲートを有するpタイプのトランジスタ、及び、第2のクロックと入力とに接続されたnタイプのトランジスタを備え、該CMOS回路は、オーバーラップしない方法により前記第1及び第2のクロックが切り換えられることに稼動される。
【0133】
該回路は、高出力スイッチング特性(high power switching
characteristics)を持つ第2の回路に実質的に隣接されることができる。該第2の回路は、ノイズ発生回路を有することができる。
【0134】
本発明のさらなる態様に従って、異なる出力状態に対応する複数のレベル状態を有する、メモリー回路のモニタリングに対する抵抗を与える方法が提供され、該方法は、有効な出力状態のためだけに中間状態を利用することを含む。該メモリーはフラッシュメモリーにすることができ、さらに、1かそれ以上のパリティビットを有することができる。
【0135】
本発明のさらなる態様に従って、集積回路に手を加える攻撃(attempt)をモニターするため、ランダムノイズ発生器に取り付けられた回路(circuit path)を使用する、前記集積回路に手を加えることに対する抵抗を与える方法が提供される。
【0136】
前記回路(circuit path)は、互いに逆であって、様々な回路に接続され、リセット出力信号を生成するための排他的OR回路となる、第1パス及び第2パスを有する。
【0137】
本発明の第2の態様に従って、接地された大きな抵抗に一端が接続され、電源に接続された第2の大きな抵抗に他端が接続されたタンパー検出ラインが提供される。該タンパー検出ラインは、さらに、期待される電圧が所定の許容範囲内にあるかを比較するコンパレータに接続される。一連のテストに接続される抵抗の中間には、そのテストの1つによってタンパリングが検出された場合にコンパレータがリセット信号を出力するように大きな抵抗が出力される。
【0138】
本発明のさらなる態様に従って、認証されるべき付属ユニットの有効性を判断するための認証システムが提供され、該システムは、
第1及び第2のセキュアキーの確認のための中央システムユニットと;
該中央システムユニットに取り付けられた第1及び第2のセキュアキーを保持するオブジェクトと;
を備え、
第2のセキュアキーを保持するオブジェクトは取り外せないような方法で取り付けられ、
前記中央システムユニットは、
第1のレスポンスを決定するために前記第1のセキュアキーを保持するオブジェクトに問い合わせを行い、
第2のレスポンスを決定するために前記第2のセキュアキーを保持するオブジェクトに問い合わせを行うために前記第1のレスポンスを利用し、
さらに、
前記第2のセキュアキーを保持するオブジェクトが、有効な取り付けユニットに取り付けられているかどうかを判断するために、前記第1のレスポンスと前記第2のレスポンスを比較するように適合されている。
【0139】
前記取り付けユニットの所定の使用の後に該ユニットが作動を止めるように、前記第2のセキュアキーを保持するオブジェクトは、さらに、効果的に単調減少するマグニチュード・ファクターを有するレスポンスを含む。したがって、取り付けられたユニットは、消耗品を含むことができる。
【0140】
さらに、前記中央システムユニットは、前記第1のレスポンスを受け取った数を前記第1のセキュアキーを保持するオブジェクトに問い合わせることができ、そのとき、該中央システムユニットは、第2のレスポンスの判断のための前記第2のセキュアキーを保持するオブジェクトへの問い合わせに際して前記第1のレスポンスを使用し、該中央システムユニットは、前記第2のレスポンスの有効範囲を判断するため、前記第1のセキュアキーを保持するユニットに問い合わせを行うために前記第2のレスポンスを使用する。
【0141】
該システムは、理想的には、インクジェットプリンターにおけるインクのように、プリンターの消耗品を認証するために使用される。
【0142】
実際に、内蔵型インクジェットプリンターを有するカメラシステムにおいて、消耗品であるインクに関連して、好ましい実施例が論じられるだろうけれども、本発明がそのことに限定されるものではない。
【好適なその他の実施例の説明】
【0143】
好適な実施例により構成されたデジタル画像処理カメラシステムは、図1に示されている。カメラユニット1は、一体的なプリントロール(図示しない)を挿入する手段を含む。カメラユニット1は、カメラによって撮影される像3を検出するエリアイメージセンサ2を含む。オプションとして、シーン3を映像化し、オプション的に立体画法の出力効果の生成物を得るため、第2のエリアイメージセンサを搭載してもよい。
【0144】
カメラ1は、センサ2によって検出された像を表示するためのオプションのカラーディスプレイ5を含む。シンプルな像がディスプレイ5に表示されるとき、ボタン6を押下することが可能であり、その結果、印刷された画像8がカメラユニット1によって出力される。以下では、Artcard(アートカード)9と呼ばれる一連のカードは、一方の面に符号化された情報を含み、もう一方の面に、Artcard9により生成された特定の効果によって歪められた画像を含む。Artcard9は、カメラ1の側面にあるArtcardリーダー10に挿入され、挿入されると、Artcard9の面に現れた歪みと同じ方法で歪められた出力画像8が得られる。したがって、この簡単なユーザインタフェースを使用することにより、特定の効果を生じさせることを望むユーザは、多数のArtcard9のうちの一枚をArtcardリーダー10に挿入し、像3の写真を撮影するためボタン19を利用することが可能であり、その結果、対応した歪んだ出力画像8が得られる。
【0145】
カメラユニット1は、カメラユニットの内部プリントロールに残っているプリントアウトの数を含む説明情報を表示するための簡単なLCD出力ディスプレイ15に加えて、多数の他の制御ボタン13、14を含み得る。更に、様々な出力フォーマットがCHPスイッチ17によって制御され得る。
【0146】
次に図2を参照すると、カメラ1の内部ハードウェアの概略図が示されている。内部ハードウェアは、Artcam(アートカム)中央プロセッサユニット(ACP)31を中心としている。
【0147】
Artcam中央プロセッサ31
Artcam中央プロセッサ31は、システムの心臓部を形成する多数の機能を提供する。ACP31は、好ましくは、複雑な高速CMOSシステムオンチップとして実現される。一部のフルカスタム領域を有する標準的なセル設計を利用することが推奨される。0.25ミクロンCMOSプロセス上の製作は、合理的に小さいダイ面積と共に、要求され
る密度及び速度を実現する。
【0148】
ACP31によって与えられる機能には次の機能が含まれる:
1. エリアイメージセンサ2の制御及びデジタル化。ACPの3次元立体視バージョンは、第2のオプションのイメージセンサ4が立体視効果のために設けられた二つのエリアイメージセンサインタフェースを必要とする;
2. エリアイメージセンサ補償、再フォーマッティング、及び画像強調;
3. 記憶装置33に対するメモリインタフェース及び管理;
4. Artcard9からのデータの読み出しのために設けられたArtcardリーダーのリニアイメージセンサ34のインタフェース、制御及びアナログ・デジタル変換;
5. デジタル化された符号化Artcard画像からの未加工Artcardデータの抽出;
6. Artcardの符号化データのリード・ソロモン誤差検出及び訂正。Artcard9の符号化された面は、Artcard9の画像歪み面に表示された効果を生成するためどのように画像を処理するかに関する情報を含む。この情報は、以下では、「Varkスクリプト」と呼ばれるスクリプトの形式である。Varkスクリプトは、望ましい効果を生成するためACP31内で実行されるインタープリタによって利用される;
7. Artcard9上のVarkスクリプトの解釈;
8. Varkスクリプトによって指定されたとおりの画像処理動作の実行;
9. 用紙輸送36、ズームレンズ38、自動焦点39、及びArtcardドライバ37のための様々なモーターの制御;
10. プリントロール42からの写真8を裁断する裁断機41の動作用の裁断機アクチュエータ40の制御;
11. 印刷用画像データの中間調化;
12. 適当な時におけるプリントヘッド44へのプリントデータの供給;
13. プリントヘッド44の制御;
14. プリントヘッド44へのインク圧送の制御;
15. オプションのフラッシュユニット56の制御;
16. 方位センサ46、自動焦点47及びArtcard挿入センサ49を含むカメラ内の様々なセンサの読み出し及びそれに基づく処置;
17. ユーザインタフェースボタン6、13、14の読み出し及びそれに基づく処置。
18. 状態ディスプレイ15の制御;
19. ビューファインダー及びプレビュー画像のカラーディスプレイ5への供給;
20. 電力管理回路51によるACP電力消費を含むシステム電力消費の制御;
21. 汎用コンピュータへの外部通信52の提供(パートUSBを使用);
22. プリントロール認証チップ53の情報の読み出し及び保存;
23. カメラ認証チップ54の情報の読み出し及び保存;
24. テキスト修正用のオプションのミニキーボード57との通信。
【0149】
水晶振動子58
水晶振動子58は、システムクロック用の周波数基準として使用される。システムクロックは非常に高いため、ACP31は水晶58から得られた周波数を増大させるため位相ロックループクロック回路を含む。
【0150】
イメージセンシング
エリアイメージセンサ2
エリアイメージセンサ2は、そのレンズを通る像を電気信号へ変換する。エリアイメージセンサは、電荷結合素子(CCD)でもよく、アクティブ画素センサ(APS)CMOSイメージセンサでもよい。現在のところ、利用可能なCCDは、通常、かなり高い画質を有するが、CMOSイメージャの開発は、現在、非常に盛んに行われている。CMOS
イメージャは、最終的には、画素数の少ないCCDよりも実質的に安価になり、駆動回路及び信号処理を組み込み得ることが予想される。CMOSイメージャは、12インチウェハーに移行しているCMOS製造技術で製作することが可能である。したがって、CCDとCMOSイメージャの間の製造コストの差は増加し、徐々にCMOSイメージャの方が支持される可能性が高い。しかし、現在のところ、CCDは、最良の選択肢である。
【0151】
Artcamユニットは、1500×1000型のエリアイメージセンサで適切な結果を生じるであろう。しかし、例えば、750×700型のような小型のセンサも、様々な市場で適切であろう。Artcamは、従来のデジタルカメラと比べると、イメージセンサの解像度に対する感度が低い。その理由は、Artcard9に入っている殆どのスタイルは、解像度の不足をわかりにくくするように画像を処理するからである。例えば、画像が印象派の絵画へ変換される効果をシミュレートするため歪められる場合、原画像の低解像度は最小の影響で使用可能である。低解像度入力画像が典型的に気付かれない更なる例には、極めて歪んだ画像を生じる画像ワープ、画像の複数の縮写(例えば、パスポート写真)、ベースレリーフメタルルックのためのバンプマッピングのようなテクスチャ処理、及び構造化されたシーンへの写真合成が含まれる。
【0152】
このように低解像度イメージセンサを許容することは、Artcamユニット1カメラの製造コストを低下させる重要なファクタである。低コストの750×500型イメージセンサを用いるArtcamは、しばしば、非常に高価な1500×1000型イメージセンサを用いる従来のデジタルカメラよりも優れた結果を生じる。
【0153】
オプションの立体視3次元イメージセンサ4
Artcamユニット1の3次元バージョンは、立体視動作のため補助イメージセンサ4を備える。このイメージセンサは、主イメージセンサと同一である。オプションのイメージセンサを駆動する回路は、設計コストの増大を低減するため、ACPチップ31の標準部品として収容してもよい。或いは、別個の3次元Artcam
ACPを設計してもよい。このオプションは、主流の単一センサ型のArtcamの製造コストを削減する。
【0154】
プリントロール認証チップ53
小型チップ53は、各プリントロール42に収容される。このチップは、APS(新写真システム)フィルムカートリッジのような他の形態のカメラフィルムユニット上のバーコード、光学センサ及びホイール、並びに、ISO/ASAセンサの機能を置き換える。
【0155】
認証チップは、以下のその他の機能も提供する:
1. APSロールから機械的及び光学的に検出されるデータではなく、データの保存;
2. 高解像度の正確さの媒体の残りの長さの表示;
3. 粗悪な模造プリントロールコピーを防止するための認証情報。
【0156】
認証チップ53は、1024ビットのフラッシュメモリを含み、1024ビットのうちの128ビットは認証鍵であり、512ビットは認証情報である。更に、認証鍵が直接アクセスされないことを保証するため、暗号化回路が収容される。
【0157】
プリントヘッド44
Artcamユニット1は、十分に小規模、十分に低電力、十分に高速、十分に高品質、及び十分に低コストであり、プリントロールに適合したどのようなカラー印刷技術でも利用可能である。以下、当該印刷ヘッドについて具体的に説明する。
【0158】
インクジェットヘッドの仕様は以下の通りである。
【0159】
【表1】

Figure 2001523900
オプションのインク圧コントローラ(図示せず)
インク圧コントローラの機能は、Artcamに組み込まれたインクジェットプリントヘッド44のタイプに依存する。一部のタイプのインクジェットでは、インク圧は単純に大気圧であるため、インク圧コントローラを使用しなくても済む。他のタイプのプリントヘッドは、安定化した正のインク圧を必要とする。この場合、インプレッシャ・コントローラは、ポンプ及び圧力トランスデューサを含む。
【0160】
その他のプリントヘッドは、インク圧力に、典型的に約100KHzの規則的な振動を生じさせるため超音波トランスデューサが必要である。この場合、ACP31は、これらの振動の周波数位相及び振幅を制御する。
【0161】
用紙輸送モーター36
用紙輸送モーター36は、プリントロール42内からプリントヘッドの傍を通して、一定速度で用紙を移動させる。モーター36は、用紙を移動させるローラーを駆動するため適切な速度までギアダウンされた小型モーターである。機械的なガタ又はその他の振動が印刷されたドット行間隔に影響を与えるので、高画質を実現するためには、高品質モーターと機械式ギアが必要である。
【0162】
用紙輸送モータードライバ60
モータードライバ60は、APC31からのデジタルモーター制御信号をモーター36の駆動に適切なレベルまで増幅する小型回路である。
【0163】
用紙プルセンサ
用紙プルセンサ50は、印刷プロセス中にユーザによるカメラユニットからの写真の引っ張りを検出する。APC31は、このセンサ50を読み出し、この状況を検出した場合、裁断機41を作動する。用紙プルセンサ50は、動作中にカメラをより絶対確実にするために組み込まれる。ユーザが印刷中に強引に用紙を引き出そうとした場合、プリント機構44又はプリントロール42は、(極端なケースでは)破損するであろう。ポッドが完全に排出される前にポラロイド式カメラからポッドを引き出すことが許されるので、一般の人々はこのような動作を行うことに慣れている。したがって、一般の人々は、用紙を引き出してはならないという印刷された指示に留意しない可能性が高い。
【0164】
Artcamは、好ましくは、引っ張り検出後に裁断機41が用紙を裁断した後、写真印刷プロセスを再開する。
【0165】
引っ張りセンサは、歪みゲージセンサとして実現してもよく、又は用紙が引っ張られたときに用紙ドライブローラーに発生するトルクによって偏向される小さいプラスチック製のフラグを検出する光学センサとして実現してもよい。後者の実現形態は、低コストのため推奨される。
【0166】
用紙裁断機アクチュエータ40
用紙裁断機アクチュエータ40は、写真の終わりに、又は用紙引っ張りセンサ50が作動されたときに、裁断機41に用紙を裁断させる小型アクチュエータである。
【0167】
用紙裁断機アクチュエータ40は、APCからの裁断機制御信号をアクチュエータ41によって要求されるレベルまで増幅する小型回路である。
【0168】
Artcard9
Artcard9はArtcamユニット用のプログラム記憶媒体である。前述の通り、プログラムは、Varkスクリプトの形式である。Varkは、特に、Artcamユニットのため開発された強力な画像処理言語である。各Artcard9は一つのVarkスクリプトを格納し、これによって、一つの画像処理スタイルを規定する。
【0169】
好ましくは、VARK言語は高度に画像処理専用である。高度に画像処理専用とすることにより、カード上に詳細を記憶するために要する記憶容量は実質的に減少する。更に、機能強化された効果を含む新しいプログラムを作成できる簡便さは、実質的に向上する。好ましくは、この言語は、ワープマップによる画像ワーピング、コンボリューション、カラールックアップテーブル、画像のポスタリゼーション、画像へのノイズ付加、画像強調フィルタ、ペインティングアルゴリズム、ブラシジッタリング及び操作エッジ検出フィルタ、タイリング、光源による照明、バンプマップ、テキスト、顔検出及び物体検出属性、3次元フォントを含むフォント、並びに、任意の複合予備レンダリングアイコンを含む多数の画像処理機能を取り扱う機能を含む。Vark言語インタープリタの動作のより詳細な内容は以下に記載される。
【0170】
したがって、作成された言語によって定義されるような言語構造を利用することにより、任意の画像に対する新しい影響を作成し、Artcard上の安価な記憶装置のために構築し、その後、カメラの所有者に配布することが可能である。更に、カードの片面には、カードのもう一方の面に記憶された特定のVARKスクリプトが任意の撮影像に与える影響を説明する例が設けられる。
【0171】
このようなシステムを利用することにより、VARKインタープリタがカメラ装置に組み込まれているならば、装置に依存しないシナリオが与えられ、その結果として、根本的な技術が長期のうちに完全に変えられるという点で、カメラ技術は、著しく陳腐化する虞を伴わずに普及させることができる。更に、新しいフィルタが作成され、カード読み出し用の簡単なカードを用いるような、安価な方式で配布されたときに、Varkスクリプトを更新することが可能である。
【0172】
Artcard9は、クレジットカード(長さ86mm、幅54mm)と同一フォーマットの薄い白色プラスチック製の片である。Artcardは、高解像度インクジェットプリンタを使用して両面印刷されている。このインクジェットプリンタ技術は、1600dpi(63dpmm)の解像度のArtcamに使用される技術と同じ技術であると考えられる。Artcard9の主要な特徴は、安価な製造コストである。Artcardは、プラスチックフィルムの幅広いウェブと同様に高速で製造可能である。プラスチックウェブは、親水性の染料固着層で両面を覆われる。ウェブは、ページ幅のカラーインクジェットプリンタを用いて両面同時に印刷される。次に、ウェブは、個別のカードに切断され打ち抜かれる。カードの一方の面は、Artcard9が検出された像に与える影響を人が読める形で表現したものが印刷される。これは、カードの裏面に記憶されたVarkスクリプトを使用して処理された単純な標準画像でもよい。
【0173】
カードの裏面には、画像処理シーケンスを定義するVarkスクリプトに復号化され得るドットの配列が印刷される。この印刷面積は80mm×50mmであり、全部で15876000ドットがある。このドットの配列は、少なくとも1.89MByteのデータを表現することができる。高信頼性を実現するため、広範な誤り検出及び訂正がドットの配列に組み込まれる。これにより、カードの実質的な部分が汚損され、損耗され、皺を付けられ、或いは、汚されても、データの完全性に影響が及ばないようにすることができる。使用されるデータ符号化方式はリード・ソロモン符号化であり、データの半分が誤り訂正のために用いられる。これにより、各Artcard9には、誤り訂正された967Kbyteのデータを記憶させることができる。
【0174】
リニアイメージセンサ34
Artcardリニアセンサ34は、上記のArtcardデータ画像を電気信号へ変換する。エリアイメージセンサ2、4の場合と同様に、リニアイメージセンサは、CCD又はAPS
CMOS技術を用いて製造可能である。イメージセンサ34の有効長さは50mmであり、Artcard9上のデータ配列の幅と一致する。ナイキストのサンプリング定理を充たすため、リニアイメージセンサ34の解像度は、イメージセンサに到達するArtcard光学像の最高空間周波数の少なくとも2倍でなければならない。実際上、データ検出は、イメージセンサ解像度がこれよりも実質的に高くなった場合、より簡単になる。4900dpi(180dpmm)の解像度が選ばれた場合、全部で9450画素が与えられる。この解像度は、5.3μmの画素センサピッチを必要とする。これは、千鳥状にされた4行の20μm画素センサを使用することによって簡単に実現することができる。
【0175】
リニアイメージセンサは、ライトパイプ(図示せず)によってArtcard9を照明するためのLED65を含む特殊なパッケージに装着される。
【0176】
Artcardリーダーのライトパイプは、以下の数機能を備えた成形ライトパイプでもよい:
1. ライトパイプは、全ての内部反射ファセットを使用してカードの幅に亘ってLEDからの光を拡散する。
2. ライトパイプは、集積化されたシリンドリカルレンズを使用してArtcard9の16μm幅のストリップ上に光を集める。
3. ライトパイプは、成形されたマイクロレンズの配列を使用してArtcardから反射された光をリニアイメージセンサの画素に集める。
【0177】
次に、Artcardリーダーの動作を説明する。
【0178】
Artcardリーダーモーター37
Artcardリーダーモーターは、比較的一定の速度でArtcardを進めてリニアイメージセンサ34を通過させる。厳密な精度の機械コンポーネントをArtcardリーダーに収容することは費用対効果がよくないので、モーター37は、Artcard9を動かすローラーのペアを駆動するため適切な速度までギアダウンされた標準的な小型モーターである。速度変動、ガタ、及びその他の振動は、未加工の画像データに影響を与えるので、APC31内の回路は、Artcardデータを確実に読むためこれらの効果の広範な補償を行う。
【0179】
モーター37は、Artcardを取り出すとき、逆向きに駆動される。
【0180】
Artcardモータードライバ61
Artcardモータードライバ61は、モーター37を駆動するために適切なレベルまでAPC31からのデジタルモーター制御信号を増幅する小型回路である。
【0181】
カード挿入センサ49
カード挿入センサ49は、カードリーダー34に挿入されているカードの有無を検出する光学センサである。このセンサ49からの信号の後、APC31はカード読み出しプロセスを開始し、そのプロセスには、Artcardリーダーモーター37の作動が含まれる。
【0182】
カードイジェクトボタン16
カードイジェクトボタン16(図1)は、現在のArtcardを取り出すためユーザによって使用され、他のArtcardを挿入できるようになる。APC31は、ボタンの押下を検出し、カードを取り出すため、Artcardリーダーモーター37を反転させる。
【0183】
カード状態インジケータ66
カード状態インジケータ66は、Artcard読み出しプロセスの状態をユーザへ報せるために設けられる。これは、標準的な2色(赤/緑)LEDでもよい。カードが正しく読み出され、データの完全性が検証されたとき、LEDは連続的に緑色で発光する。カードが不良である場合、LEDは赤色で発光する。
【0184】
カメラが3Vのバッテリではなく1.5Vのバッテリから給電される場合、電源電圧は、緑色LEDの前向き電圧降下よりも小さく、LEDは発光しない。この場合、赤色LEDが使用されるか、又はそのLEDは、より高い電圧を必要とするArtcam内の他の回路に給電する電圧ポンプから給電される。
【0185】
64MビットDRAM33
多種多様な画像処理効果を実行するため、カメラは8Mbyteのメモリ33を利用する。これは、単一の64Mビットメモリチップによって設けることができる。勿論、メモリ技術の変化に伴って、より大容量のDRAM記憶容量サイズで置き換えても構わない。
【0186】
メモリチップへの高速アクセスが要求される。これは、Rambus DRAM(毎秒500メガバイトのバーストアクセス速度)、又はダブルデータレート(DDR)SDRAM又はシンクリンク(SyncLink)DRAMチップを使用することによって達成できる。
【0187】
カメラ認証チップ
カメラ認証チップ54は、異なる情報を記憶している点を除くと、プリントロール認証チップ53と同一のものである。カメラ認証チップ54には、以下の三つの主要な目的がある:
1. 認証コードをプリントロール認証チップと比較するセキュア手段を設けること;
2. カメラの製造番号のような製造情報用の記憶装置を設けること;
3. ユーザ情報の記憶用の小容量の不揮発性メモリを設けること。
【0188】
ディスプレイ
Artcamは、オプションのカラーディスプレイ5及び小型状態ディスプレイ15を含む。最低コストの民生用カメラは、ある種のデジタルカメラ及びビデオカメラで見られるような小型TFT
LCD5のようなカラー画像ディスプレイを含む。カラーディスプレイ5は、これらのバージョンのArtcamの主要なコストのかかる要素であり、バックライトを加えたディスプレイ5は主要な電力消費元である。
【0189】
状態ディスプレイ15
状態ディスプレイ15は、小型の受動セグメントに基づくLCDであり、現在のハロゲ
ン化銀式カメラ及びデジタルカメラに設けられているLCDと類似している。その主要な機能は、プリントロール42に残っているプリントの数と、フラッシュ状態及びバッテリ状態のような様々な標準的なカメラ機能に対するアイコンと、を表示することである。
【0190】
カラーディスプレイ5
カラーディスプレイは、完全動画像ディスプレイであり、ビューファインダーとして、印刷される画像の確認として、及びユーザインタフェースディスプレイとして動作する。ディスプレイ5のコストは、その面積にほぼ比例するので、大型ディスプレイ(例えば、4インチ対角)ユニットは、Artcamユニットの高価なバージョンに限定される。例えば、カラービデオカメラの約1インチのビューファインダーTFTのようなより小さいディスプレイは、中程度のArtcamに有効である。
【0191】
ズームレンズ(図示せず)
Artcamはズームレンズを含むことができる。これは、標準的な電子カメラに使用されるズームレンズと同一であり、ポケットカメラのズームレンズに類似している標準的な電子制御ズームレンズでもよい。Artcamユニットの好適なバージョンは、標準的な交換可能な35mmSLRレンズを含む。
【0192】
自動焦点モーター39
自動焦点モーター39はズームレンズの焦点を変更する。モーターは、自動焦点機構を駆動するため適切な速度にギアダウンされた小型モーターである。
【0193】
自動焦点モータードライバ63
自動焦点モータードライバ63は、モーター39を駆動するため適切なレベルまでAPC31からのデジタルモーター制御信号を増幅する小型回路である。
【0194】
ズームモーター38
ズームモーター38は、ズームのフロントレンズを出入りするように動かす。モーターは、ズーム機構を駆動するため適切な速度にギアダウンされた小型モーターである。
【0195】
ズームモータードライバ62
ズームモータードライバ62は、モーターを駆動するため適切なレベルまでAPC31からのデジタルモーター制御信号を増幅する小型回路である。
【0196】
通信
ACP31は、パーソナルコンピュータとの通信用のユニバーサルシリアルバス(USB)インタフェース52を含む。必ずしも全てのArtcamモデルがUSBコネクタを組み込むことを予定されているわけではない。しかし、USB回路52のために必要なシリコン面積は小さいので、インタフェースを標準的なACPに収容することが可能である。
【0197】
オプションのキーボード57
Artcamユニットは、Artcardによって指定されたテキストをカスタマイズするオプションの小型キーボード57を含む。Artcard画像に現れるあらゆるテキストは、複雑なメタリック3次元フォントの形である場合でも編集可能である。小型キーボードは、元のテキストと編集されたテキストを表示するため単一ラインの英数字LCDを含む。このキーボードは標準装備品でもよい。
【0198】
ACP31は、小型キーボートとの間でデータを転送するシリアル通信回路を含む。
【0199】
電源
Artcamユニットは、バッテリ48を使用する。Artcamのオプションに依存して、このバッテリは、3Vのリチウム電池、1.5VのAAアルカリ電池、又はその他のバッテリ装置のいずれでもよい。
【0200】
電源管理ユニット51
電源消費は、Artcamにおける重要な設計制約条件である。標準的なカメラバッテリ(例えば、3Vのリチウムバッテリ)又は標準的なAA若しくはAAAアルカリ電池の何れかが使用可能であることが望ましい。Artcamユニットの電子回路の複雑さの程度は35mm写真カメラよりも著しく高いが、電力消費量が相応に高いとは限らない。Artcamの電源は、全てのユニットが未使用時には電源をオフされるように慎重に管理される。
【0201】
最も重大な電力浪費元は、APC31、エリアイメージセンサ2及び4、プリンタ44の様々なモーター、フラッシュユニット56、並びに、オプションのカラーディスプレイ5である。次に各部品について別々に取り扱う:
1. ACP:0.25μmのCMOSを使用して製造され、1.5Vで動作するならば、ACP電力消費は非常に小さくすることができる。ACPチップの様々な部品へのクロックも非常に小さくすることができる。ACPチップの様々な部品へのクロックは、未使用時にオフにすることができ、スタンバイ電流消費を殆ど取り除く。ACPは、印刷される写真毎に約4秒間だけ完全に使用される;
2. エリアイメージセンサ:電力は、ユーザがボタンに指を置いたときに限りエリアイメージセンサに供給される;
3. プリンタ電力は、実際に印刷しているときに限りプリンタへ供給される。これは、1枚の写真につき約2秒間である。たとえそうであっても、適度に低い電力消費印刷が使用されるべきである;
4. Artcamで必要になるモーターは、全て低電力小型モーターであり、典型的に、1枚の写真について数秒間だけ作動される;
5. フラッシュユニット45は、一部の写真だけに対して使用される。その電力消費は、妥当なバッテリ寿命の3Vのリチウムバッテリによって容易に供給される。
6. オプションのカラーディスプレイ5は、次の二つの理由から主要な電流浪費元である。カラーディスプレイは、カメラの使用中の全ての時間に亘ってオンにする必要があり、液晶ディスプレイが使用された場合には、バックライトが必要になる。カラーディスプレイを組み込むカメラは、許容可能なバッテリ寿命を達成するため、より大型のバッテリを要求する。
【0202】
フラッシュユニット56
フラッシュユニット56は民生用カメラの標準的な小型電子フラッシュである。
【0203】
ACP31の概要
図3は、Artcam中央プロセッサ(ACP)31を詳細に示す図である。Artcam中央プロセッサは、Artcamの処理能力の全てを提供する。ACPは、0.25ミクロンCMOSプロセス用に設計され、約150万個のトランジスタと、約50mm2の面積を有する。ACP31の設計は複雑であるが、設計の手間は、データパスコンパイレーション技術、マクロセル、及びIPコアを使用することによって軽減できる。ACP31は、
RISC型CPUコア72と、
4ウェイVLIWベクトルプロセッサ74と、
ダイレクトRAMbus(ラムバス)インタフェース81と、
CMOSイメージセンサインタフェース83と、
CMOSリニアイメージセンサインタフェース88と、
USBシリアルインタフェース52と、
赤外線キーボードインタフェース55と、
数字LCDインタフェース84と、
カラーTFT LCDインタフェース88と、
プログラム記憶装置70用4Mバイトフラッシュメモリ70と、
を含む。RISC型CPU、ダイレクRAMbusインタフェース81、CMOSセンサインタフェース83、及びUSBシリアルインタフェース52は、ベンダーによって供給されるコアでもよい。ACP31は、電力消費を最小限に抑えるため、外部3V及び内部1.5Vに基づいて200MHzのクロック速度で動作することが意図されている。CPUコアは100MHzで動作すればよい。以下の二つのブロック図、即ち、
単独のACP31の説明図、及び
Artcamの残りのハードウェアに接続されたACP31の上位レベルの図を与える例示的なArtcam、
はACP31の2通りの見方を与える。
【0204】
画像アクセス
前述の通り、DRAMインタフェース81は、ACPチップの他のクライアント部と、ラムバスDRAMとの間を接続する役割を担う。実際上、DRAMインタフェース内の各モジュールはアドレス生成器である。
【0205】
ACPによって操作される画像には三つの論理タイプがある。それらは、
−CCDから撮影された入力像であるCCD画像と、
−Artcam装置によって内部的に利用される画像フォーマットである内部画像フォーマットと、
−Artcamによって印刷される出力画像フォーマットである印刷画像と、
である。
【0206】
これらの画像は、典型的に、色空間、解像度、並びに、カメラ間で変動のあり得る出力及び入力色空間の点で相違する。例えば、低価格カメラのCCD画像は、高価格カメラで使用されるものとは異なる解像度、又は異なる色特性を揺する。しかし、あらゆる内部画像フォーマットは、全てのカメラを通じて色空間の点で同一フォーマットである。
【0207】
その上、3種類の画像タイプは、どちらの方向が「上向き」であるかに関しても異なり得る。カメラの物理的な向きは、人物像であるか、又は風景像であるかについての観念を生じさせ、この観念は処理全体を通じて維持されるべきである。このため、内部画像は常に正しく向きを決められ、印刷動作中にCCDから獲得された画像に対して回転が実行される。
【0208】
CPUコア(CPU)72
ACP31は、Vark画像処理言語インタープリタを動作させ、Artcamの汎用オペレーティングシステムの役割を実行するため32ビットRISC型CPU72を内蔵する。多種多様なCPUコアが適当であり、要求されたコア計算及び制御機能を消費者の期待を満足する十分な速さで実行するために足りる処理能力を備えていればどのようなプロセッサコアでも構わない。適当なコアの例には、LSIロジック社のMIPS
R4000、Strong ARMコアが含まれる。異なるArtcamモデルの間で命令セットの継続性を維持する必要はない。Artcardの互換性は、将来のプロセッサの進歩及び変更とは無関係に維持される。なぜならば、Varkインタープリタは、新しい命令セット毎に再コンパイルをするだけで済むからである。したがって、ACP31のアーキテクチャは、自由に進化させることができる。種々の製造者は、CPUコアの使用許諾や移植をすることなく、様々なACP31チップ設計を製造することができる。この装置非依存性によって、PC市場においてインテル社が行っているようなチップベンダーのロックインが避けられる。CPUは100MHzで動作し、単一サイクルタイムは10nsである。このCPUは、VLIWベクトルプロセッサ74が時間的に重大な演算を担うとしても、Varkインタープリタを実行するために十分な高速性が必要である。
【0209】
プログラムキャッシュ72
プログラムコードがオンチップフラッシュメモリ70に保存されるとしても、ウェルパックされたフラッシュメモリ70がCPUによって要求される10nsのサイクルタイムで動作できる可能性は低い。したがって、優れた性能のために小規模のキャッシュが要求される。各々が32バイトの16個のキャッシュラインは、全部で512バイトになり、十分な大きさである。プログラムキャッシュ72は、プログラムキャッシュ72という名前の章に規定されている。
【0210】
データキャッシュ76
小規模のデータキャッシュ76が優れた性能のために要求される。この要求は、概して、ラムバスDRAMを使用しているために生じる。ラムバスDRAMは、高速データをバーストで提供することができるが、単一バイトのアクセスには不十分である。CPUは、CPUデータキャッシュ76のサイズをフレキシブルに操作することを可能にさせるメモリキャッシングシステムにアクセスする。最小限で16個のキャッシュライン(512バイト)が優れた性能のために推奨される。
【0211】
CPUメモリモデル
ArtcamのCPUメモリモデルは、32MBのエリアにより構成される。Artcamの基本モデルでは、CPUメモリモデルは、8MBの物理的RDRAMオフチップにより構成され、最大で16MBのオフチップメモリが設けられる。ACP31にはプログラム記憶用に4MBのフラッシュメモリ70が存在し、最終的に、4MBのアドレス空間がACP31の様々なレジスタ及びコントロールに割り当てられる。したがって、Artcam用のメモリマップは以下の通りである。
【0212】
【表2】
Figure 2001523900
アドレスをデコードする簡単な方法は、アドレスビット23−24を使用することである。即ち、
ビット24がクリアされている場合、アドレスは下位側16MBのレンジに含まれるので、DRAM及びデータキャッシュ76から充たされる。殆どの場合に、DRAMは8MBに過ぎないが、より上位のメモリモデルArtcamを考慮に入れるため16MBが割り当てられる。
ビット24がセットされ、ビット23がクリアされている場合、アドレスは、フラッシュ
メモリ70の4Mバイトレンジを表現し、プログラムキャッシュ72によって充たされる。
ビット24=1及びビット23=1である場合、アドレスは、CPUメモリデコーダ68によって、低速バス経由によるAC内の要求されたコンポーネントへのアクセスに変換される。
【0213】
フラッシュメモリ70
ACP31は、Artcamプログラムを記憶する4Mバイトのフラッシュメモリ70を含む。フラッシュメモリ70はマスクROMよりも高い充填率を有し、カメラプログラムコードを試験するためより高いフレキシビリティを許容することが想定される。フラッシュメモリ70の弱点はアクセス時間であり、このアクセス時間はCPUの100MHzの動作速度(10nsのサイクルタイム)に対して十分に高速であるとはいえない。したがって、高速プログラム命令キャッシュ77が、CPUと低速のフラッシュメモリ70との間のインタフェースとして作用する。
【0214】
プログラムキャッシュ72
優れたCPU性能のために小型キャッシュが要求される。この要求は、プログラムコードを記憶するフラッシュメモリ70が低速であることに起因する。各々が32バイトの16個のキャッシュラインは、全部で512バイトになり、十分な大きさである。プログラムキャッシュ72は読み出し専用キャッシュである。CPUプログラムによって使用されるデータは、CPUメモリデコーダ68を通過し、アドレスがDRAM内にある場合、汎用データキャッシュ76を通る。分離によって、CPUをVLIWベクトルプロセッサ74とは独立して動作させることができる。所定のプロセスに対するデータ要求量が少ない場合、結果的に、そのプロセスは完全にキャッシュによって動作し得る。
【0215】
最後に、プログラムキャッシュ72は、CPUによって純粋にプログラム命令としてではなく、データとして読み出すことが可能である。これにより、テーブル、即ち、VLIWのためのマイクロコード等をフラッシュメモリ70からロードすることが可能になる。ビット24がセットされ、ビット23がクリアされているアドレスは、プログラムキャッシュ72から充足される。
【0216】
CPUメモリデコーダ68
CPUメモリデコーダ68は、CPUデータアクセスに沿う簡単なデコーダである。デコーダは、データアドレスを、内部低速バスによる内部ACPレジスタアクセスに変換し、これにより、ACPレジスタのメモリマップドI/Oを可能にさせる。CPUメモリデコーダ68は、ビット24がセットされ、ビット23がクリアされているアドレスだけを解釈する。CPUメモリデコーダ68内ではキャッシングは行われない。
【0217】
DRAMインタフェース81
Artcamによって使用されるDRAMは、1.6GB/秒で動作する単一チャンネルの64Mビット(8Mバイト)RAMbus(ラムバス)RDRAMである。RDRAMアクセスは、単一チャンネル(16ビットデータパス)コントローラによる。RDRAMは、低電力動作用の数種の有効な動作モードを有する。ラムバス仕様書には、95%以上の効率を達成可能であるようなランダムな32バイト転送のあるシステムが記載されているが、これは、32バイトのうちの一部しか使用されない場合には成り立たない。同一のデバイスに対する2回の読み出しに続いて2回の書き込みを行うことによって86%以上の効率が得られる。基礎的なレイテンシーは、書き込みから読み出しへ変化するバスのターンアラウンドのために必要であり、遅延書き込み機構が存在するので、効率を更に改善することが可能である。書き込みに関して、書き込みマスクは、特定のバイトのサブセットへの書き込みを可能にさせる。これらの書き込みマスクは、内部キャッシュの「ダーティビット」によってセットされるであろう。ラムバスダイレクトRDRAMは、要するに、1GB/秒を超えるスループットを簡単に達成可能であり、32バイトの転送知識を十分に利用する知的アルゴリズムと組み合わされ(殆どのプロセスで)書き込み毎に複数回の読み出しを伴い、1.3GB/秒を超える転送レートが期待されるということである。10ns毎に、コアとの間で16バイトを転送することができる。
【0218】
DRAM構成
基本モデル(8MB RDRAM)のArtcam用のDRAM構成を次に示す。
【0219】
【表3】
Figure 2001523900
注:非圧縮形式の印刷画像は4.5MB(1チャンネル当たり1.5MB)を必要とする。他の対象を8MBモデルに収容するため、印刷画像は圧縮されるべきである。クロミナンスチャンネルが4:1に圧縮された場合、各クロミナンスチャンネルは0.375MBしか必要としない。
【0220】
ここで説明されるメモリモデルは、単一の8MBのRDRAMを想定している。Artcamのその他のモデルの中にはより多くのメモリを具備し、印刷画像を圧縮しなくてもよいものがある。その上、メモリ量が増加すると、最終画像の大部分を同時に操作できるようになり、速度が向上する可能性がある。
【0221】
Artcardの取り出し又は挿入は、印刷画像、拡大された写真画像の1チャンネル、及び画像ピラミッドを保持する5.5MBエリアを無効にすることに注意すべきである。この空間は、Artcardデータを復号化するためArtcardインタフェースによって安全に使用される。
【0222】
データキャッシュ76
ACP31は、専用CPU命令キャッシュ77及び汎用データキャッシュ76を含む。データキャッシュ76は、CPU、VLIWベクトルプロセッサ74及びディスプレイコントローラ88からの全てのDRAM要求(データの読み出し及び書き込み)を取り扱う。これらの要求は、メモリ使用量及びアルゴリズム的タイミング必要条件の点で非常に異なる側面を有する。例えば、VLIWプロセスは、リニアメモリ内の画像を処理し、画像内の値毎にテーブルの値をルックアップする。画像の大半をキャッシュする必要な殆ど無いが、実際のメモリアクセスが必要ではないように、ルックアップテーブル全体をキャッシュすることが望ましい。このように必要条件が相違しているため、データキャッシュ76は、キャッシングを知的に定義することが可能である。
【0223】
ラムバスDRAMインタフェース81は、非常に高速のメモリアクセス能力を備えているが(平均スループットは25nsで32バイト)、単一バイトの要求を処理するためには不十分である。実効的なメモリレイテンシーを低下させるため、ACP31は、128個のキャッシュラインを含む。各キャッシュラインは32バイト幅である。このようにして、データキャッシュ76の総容量は4096バイト(4KB)である。128個のキャッシュラインは、16個のプログラム可能なサイズのグループに構成される。16個のグループの各々は、連続したキャッシュラインのセットでなければならない。CPUは、各グループに割り付けるキャッシュラインの個数を決定する役割を担う。各グループ内で、キャッシュラインは、簡単なLRU(最低使用頻度)アルゴリズムに従って詰められる。CPUデータ要求に関して、データキャッシュ76は、アドレスビット24がクリアされたメモリアクセス要求を取り扱う。ビット24がクリアされている場合、アドレスは下位側16MBのレンジに収まるので、DRAM及びデータキャッシュ76から応じることができる。殆どの場合に、DRAMは、8MBしかないが、よりメモリ量の多いモデルのArtcamを考慮に入れて16MBが割り付けられる。ビット24がセットされている場合、アドレスはデータキャッシュ76によって無視される。
【0224】
全てのCPUデータ要求はキャッシュグループ0から応じられる。優れたCPU性能のためには16個の最小のキャッシュラインが推奨されるが、CPUは、(0個以外の)任意の個数のキャッシュラインをキャッシュグループ0に割り当てることができる。残りのキャッシュグループ(1から15)は、現在の必要条件に従って割り付けられる。これは、VLIWベクトルプロセッサ74プログラム又はディスプレイコントローラ88への割付を意味することもある。例えば、常時利用可能であることが要求される256バイトのルックアップテーブルは、8個のキャッシュラインが必要であろう。順次画像を書き出すためには、(生成されたレコードのサイズと、書き込み要求が多数のサイクルに亘って書き込み遅延されているかどうかと、に応じて)2から4個のキャッシュラインだけが必要であろう。各キャッシュラインのバイトには、メモリをDRAMへ書き込む際に書き込みマスクを作成するため使用されるダーティビットが関連付けられる。各キャッシュラインには別のダーティビットが関連付けられ、このダーティビットは、キャッシュラインのバイトの何れかに書き込みがされたかどうか(したがって、DRAMを再使用する前に、キャッシュラインをDRAMへ書き戻さなければならないかどうか)を示す。二つの異なるキャッシュグループがメモリの同じアドレスをアクセスし、同期が外れる可能性があることに注意する必要がある。VLIWプログラムライターは、これが問題にならないことを保証する役割を担う。例えば、あるキャッシュグループには画像を読み出す役割を与え、別のキャッシュグループには変更された画像をメモリに書き戻す役割を与えることは完全に合理的である。画像が順番に読み出し又は書き込みされる場合、キャッシュラインをこのようにして割り付けることは有利である。全部で8本のバス182は、VLIWベクトルプロセッサ74をデータキャッシュ76へ接続する。各バスは、I/Oアドレス生成器に接続される。(1個の処理ユニット178当たりに2個のI/Oアドレス生成器189及び190が存在し、VLIWベクトルプロセッサ74には4個の処理ユニットが存在する。したがって、バスの総数は8本である。)
所与のサイクルにおいて、CPUのキャッシュグループ(グループ0)への単一の32ビット(4バイト)アクセスの他に、残りのキャッシュグループへの16ビット(2バイト)の四つ同時のアクセスが8本のVLIWプロセッサ74のバス上で許容される。データキャッシュ76は要求を公平に処理する役割がある。ある所与のサイクルで、特定のキャッシュグループへのたった一つの要求が処理される。VLIWベクトルプロセッサ74に8個のアドレス生成器189、190が存在する場合、アドレス生成器の各々は個別のキャッシュグループを参照する可能性がある。しかし、2個以上のアドレス生成器189、190が同じキャッシュグループにアクセスする可能性があり、場合によっては、その方が合理的である。CPUは、キャッシュグループに正確なキャッシュラインの個数が割り付けられることを保証し、VLIWベクトルプロセッサ74の様々なアドレス生成器189、190が特定のキャッシュグループを正確に参照することを保証する役割を担う。上述のようにデータキャッシュ76は、ディスプレイコントローラ88及びVLIWベクトルプロセッサ74が同時に動作状態になることを許容する。これらの二つのコンポーネントの動作が決して同時に出現しないと考えられるならば、全部で9個のキャッシュグループがあれば足りる。CPUはキャッシュグループ0を使用し、VLIWベクトルプロセッサ74及びディスプレイコントローラ88は残りの8個のキャッシュグループを共用し、(4ビットではなく)3ビットだけで特定の要求に応じるキャッシュグループを定めることができる。
【0225】
JTAGインタフェース85
標準的なJTAG(ジョイントテスト部会)インタフェースはテスト目的用にACP31に収容される。チップの複雑さのため、BIST(ビルトインセルフテスト)及び機能的ブロック分離等を含む様々なテスト技術が必要である。チップ面積の10%のオーバーヘッドが全チップテスト回路のため想定される。テスト回路は本文書の範囲外の事項である。
【0226】
シリアルインタフェース
USBシリアルポートインタフェース52
これは標準的なUSBシリアルポートであり、内部チップの低速バスに接続されるので、CPUがそれを制御することができる。
【0227】
キーボードインタフェース65
これは標準的な低速シリアルポートであり、内部チップ低速バスに接続されるので、CPUがそれを制御することができる。キーボードインタフェースは、プリントをカスタマイズするための簡単なデータ入力を許容するためオプション的にキーボードへ接続できるように設計される。
【0228】
認証チップシリアルインタフェース64
これらは、二つの標準的な低速シリアルポートであり、内部チップ低速バスに接続されるので、CPUがこれらを制御できる。二つのポートを具備する理由は、別個のラインを使用して、オンカメラ認証チップとプリントロール認証チップの両方に接続するためである。1個のラインしか使用しない場合、模造プリントロールの製造者は、認証コードを生成するのではなく、カメラの認証チップによって生成されたコードを使用するようにカメラを誤動作させるチップを設計することができる。
【0229】
パラレルインタフェース67
パラレルインタフェースはACP31を個別の静的な電気信号に接続する。CPUは、低速バスを介して、メモリマップドI/Oとしてこれらの配線の各々を制御することができる。以下の表は、パラレルインタフェースへの配線の一覧である。
【0230】
【表4】
Figure 2001523900
VLIW入力及び出力FIFO78、79
VLIW入出力FIFOは、プロセスとVLIWベクトルプロセッサ74との間を接続するため使用される8ビット幅のFIFOである。両方のFIFOはVLIWベクトルプロセッサ74によって制御されるが、CPUによってクリアしたり、(例えば、状態について)問い合わせをしたりすることができる。
【0231】
VLIW入力FIFO78
クライアントは、VLIWベクトルプロセッサ74にデータを処理させるため、8ビットデータをVLIW入力FIFO78に書き込む。クライアントには、イメージセンサインタフェース、Artcardインタフェース、及びCPUが含まれる。これらのプロセスの各々は、単にデータをFIFOに書き込み、VLIWベクトルプロセッサ74に重い仕事の全ての実行を任せることによって、処理から解放される。クライアントによるVLIW入力FIFO78の使用を用いる一例は、イメージセンサインタフェース(ISI83)である。イメージセンサインタフェース83は、イメージセンサからデータを取得し、そのデータをFIFOに書き込む。VLIWプロセスは、FIFOからデータを取得し、データを正しい画像データフォーマットへ変換し、それをDRAMへ書き出す。イメージセンサインタフェース83は、その結果として、非常に簡単化される。
【0232】
VLIW出力FIFO79
VLIWベクトルプロセッサ74は、8ビットデータをVLIW出力FIFO79に書き込み、クライアントはVLIW出力FIFOでデータを読み出すことができる。クライアントには、プリントヘッドインタフェース及びCPUが含まれる。これらのクライアントの両方は、単にFIFOから処理済みのデータを読み出し、VLIWベクトルプロセッサ74に重い仕事の全ての実行を任せることにより、処理から解放される。CPUは、データがVLIW出力FIFO79に収容されたときはいつでも中断させることができ、FIFOを絶えずポーリングするのではなく、データが利用可能になったときに限りそのデータを処理できるようになる。クライアントによるVLIW出力FIFO79の使用を用いる一例は、プリントヘッドインタフェース(PHI62)である。VLIWプロセスは、画像を取得し、画像を正しい向きへ回転し、色変換を行い、プリントヘッド必要条件に応じて得られた画像をディザリングする。プリントヘッドインタフェース62は、VLIW出力FIFO79からディザリングされたフォーマット後の8ビットデータを読み出し、その8ビットデータをACP31の外部にあるプリントヘッドに渡すだけでよい。プリントヘッドインタフェース62はその結果として非常に簡単化される。
【0233】
VLIWベクトルプロセッサ74
Artcamの高い処理要求を実現するため、ACP31は、VLIW(超長命令語)ベクトルプロセッサを含む。VLIWプロセッサは、クロスバースイッチ183によって接続され並列に動作する4個の同一処理ユニット(例えば、PU178)の組である。各処理ユニット、例えば、PU178は、各サイクルに、4回の8ビット乗算、8回の8ビット加算、3回の32ビット加算、I/O処理、及び様々な論理演算を実行することができる。処理ユニット、例えば、PU178はマイクロコード化され、各々は、2個のアドレス生成器189、190を具備し、データ処理のため利用可能なサイクルを完全に使用できる。4個の処理ユニット、例えば、PU178は、通常、密接に相互作用するVLIWプロセッサを実現するため同期させられる。200MHzのクロックにより、VLIWベクトルプロセッサ74は、12Gop(毎秒120億回の演算速度)で動作する。命令は、ワーピング、芸術的なブラッシング、複雑な合成照明、色変換、画像フィルタリング、及び合成のような画像処理機能のために調整される。これらは、デスクトップコンピュータよりも2桁加速されている。
【0234】
図3(a)に詳細に示されるように、VLIWベクトルプロセッサ74は、クロスバースイッチ183によって接続された4個の処理ユニット、例えば、PU178であり、各処理ユニット、例えば、PU178は、クロスバースイッチ183へ2入力を供給し、クロスバースイッチ183からの2出力を取得する。2個の共通レジスタは、処理ユニット、例えば、PU178のための制御及び同期機構を形成する。8本のキャッシュバス182は、データキャッシュ76を介してDRAMへの接続を可能にさせ、2本のバスは各処理ユニット、例えば、PU178へ至る(I/Oアドレス生成器毎に1本のバス)。各処理ユニット、例えば、PU178は、(データを処理するための多数のレジスタ及びある種の算術論理を格納する)ALU(算術論理ユニット)188と、ある種のマイクロコードRAM196と、外界(他のALUを含む)への配線と、を具備する。ローカルPU状態機械は、マイクロコードで動き、この手段によって処理ユニット、例えば、PU178が制御される。各処理ユニット、例えば、PU178は、DRAM(データキャッシュ76経由)とALU188(入力FIFO及び出力FIFO経由)の間のデータフローを制御する二つのI/Oアドレス生成器189、190を含む。アドレス生成器は、データ(特に、様々なフォーマットの画像)、並びに、DRAM内のテーブル及びシミュレーティッドFIFOを読み書きすることが可能である。フォーマットはソフトウェア制御の下でカスタマイズ可能であるが、マイクロコード化されない。データキャッシュ76から取得されたデータは、16ビット幅の入力FIFOを介してALU188へ転送される。出力データは、16ビット幅の出力FIFOに書き込まれ、そこからデータキャッシュ76へ書き込まれる。最後に、全ての処理ユニット、例えば、PU178は、単一の8ビット幅VLIW入力FIFO78と、単一の8ビット幅VLIW出力FIFO79を共用する。低速データバス接続によって、CPUは、処理ユニット、例えば、PU178のレジスタを読み書きし、マイクロコードを更新し、VLIWベクトルプロセッサ74の全ての処理ユニット、例えば、PU178によって共用される共通レジスタを読み書きすることが可能になる。次に、図4を参照すると、単独の処理ユニット、例えば、PU178の内部のより詳細が示され、以下では、コンポーネント及び制御信号を詳述する。
【0235】
マイクロコード
各処理ユニット、例えば、PU178は、その特定の処理ユニット、例えば、PU178用のプログラムを保持するマイクロコードRAM196を含む。マイクロコードをROMに収容するのではなく、マイクロコードはRAMに収容され、CPUはマイクロコードをアップロードする役割を担う。チップ上の同じ空間であるため、このトレードオフは、ある一つの機能の最大サイズをRAM196のサイズまで縮小するが、マイクロコードに書き込まれる機能の数は無制限である。マイクロコードを用いて実現された機能は、Varkアクセラレーション、Artcard読み取り、及び印刷を含む。VLIWベクトルプロセッサ74の方式は、ACP31のケースでは、以下の幾つかの利点がある:
ハードウェア設計の複雑さが低減される;
ハードウェアのリスクは複雑さの低減によって低減する;
ハードウェア設計時間は、専用シリコンに組み込まれる全てのVark機能に依存しない;
チップ上の空間が全体的に縮小される(多数のプロセスをマイクロコードとして組み込むことができるため);
ハードウェア設計時間に影響を与えることなく、(マイクロコードによって)Varkに機能を加えることができる。
【0236】
サイズ及び内容
各処理ユニット、例えば、PU178を制御するCPUによってロードされたマイクロコードRAM196は128ワードであり、各ワードは96ビット幅である。処理ユニット、例えば、PU178の様々なユニットを制御するためのマイクロコードサイズの概要は以下の表に掲載されている。
【0237】
【表5】
Figure 2001523900
128個の命令ワードによって、処理ユニット、例えば、PU178毎の全マイクロコードRAM196は、12288ビット、即ち、正確に1.5KBである。VLIWベクトルプロセッサ74は、4個の同一の処理ユニット、例えば、PU178により構成されるので、これは、6144バイト、即ち、正確に6KBと一致する。マイクロコードワード内の一部のビットは、制御ビットとしてそのまま使用され、一方、他のビットはデコードされる。マイクロコードワードのビットの各々の解釈を詳細に記述する種々のユニット説明を参照せよ。
【0238】
処理ユニット、例えば、PU178の間の同期
各処理ユニット、例えば、PU178は、4ビット同期レジスタ197を含む。それは、一体的に動作する処理ユニット、例えば、PU178を決定するため使用されるマスクであり、単一プロセスとして機能する対応した処理ユニット、例えば、PU178の各々に対して1ビットがセットされる。例えば、全ての処理ユニット、例えば、PU178が単一プロセスとして機能する場合、4個の同期レジスタ197の各々は、全て4ビットがセットされるであろう。2個の処理ユニット、例えば、PU178毎に二つの同期プロセスが存在するならば、2個の処理ユニット、例えば、PU178は、(そのPU自体に対応した)同期レジスタ内の2ビットがセットされ、他の2個の処理ユニットは、(そのPU自体に対応した)同期レジスタ内の別の2ビットがセットされる:
同期レジスタ197は、以下の二つの基本的な方式で使用される;
同期した所定のプロセスを停止及び開始する;
プロセス内で実行を一時停止する。
【0239】
停止及び開始プロセス
CPUは、マイクロコードRAM196にロードし、第1の命令の実行アドレス(通常は0)をロードする役割を担う。CPUがマイクロコードを実行し始めるとき、マイクロコードは指定されたアドレスから始まる。
【0240】
マイクロコードが実行されるのは、同期レジスタ197の全てのビットが共通同期レジスタ197にもセットされたときに限られる。したがって、CPUは、全ての処理ユニット、例えば、PU178をセットアップし、次に、共通同期レジスタ197への1回の書き込みでプロセスを開始又は停止する。
【0241】
この同期方式は、複数のプロセスが処理ユニット、例えば、PU178上で非同期的に実行されることを可能にさせ、同時に1個の処理ユニット、例えば、PU178としてではなく、プロセスとして停止及び開始される、
プロセス内の実行の一時停止
所与のサイクルにおいて、処理ユニット、例えば、PU178は、(現在のマイクロコード命令のオペレーションコードに基づいて)FIFOからの読み出し、又はFIFOへの書き込みのために必要である。FIFOが読み出し要求時にエンプティであるか、又は書き込み要求時にフルである場合、FIFO要求は完了し得ない。処理ユニット、例えば、PU178は、したがって、プロセス一時停止制御信号198をアサートする。全ての処理ユニット、例えば、PU178からのプロセス一時停止信号は、全ての処理ユニット、例えば、PU178へフィードバックされる。同期レジスタ197は、4個のプロセス一時停止ビットと論理積演算され、結果が非零であるならば、処理ユニット、例えば、PU178のレジスタのライトイネーブル、又はFIFOストローブはセットされない。したがって、そのタスクを終了できなかった処理ユニット、例えば、PU178と同じプロセスグループを形成する処理ユニット、例えば、PU178の中に、自分のレジスタ又はFIFOがそのサイクル中に更新された処理ユニットは存在しない。この簡単な技術は、所定のプロセスグループを同期状態に保つ。後の各サイクルで、処理ユニット、例えば、PU178の状態機械は、同じアドレスのこのマイクロコード命令を再実行することを試み、成功するまでそのようにし続ける。勿論、共通同期レジスタ197は、必要に応じてプロセス全体を停止させるため、CPUによって書き込むことができる。この同期方式は、任意の処理ユニット、例えば、PU178の組み合わせが一体となって動作することを可能にさせ、各グループは、データを読み書きする準備ができていないことを原因とする一時停止に関しては、協働して動作する処理ユニットだけに影響を与える。
【0242】
制御及び分岐
各サイクル中、処理ユニット、例えば、PU178のALU188内の4個の基本入力及び計算ユニットの各々(読み出し、アダー/ロジック、乗算/補間、及びバレルシフタ)は、そのサイクル中の演算結果が0であるか又は負であるかを示す零フラグ及び負フラグの二つの状態ビットを生成する。各サイクルに、これらの4個の状態ビットのうちの一つが、処理ユニット、例えば、PU178から出力されるマイクロコード命令によって選択される。4個の状態ビット(一つの処理ユニット、例えば、PU178のALU188について1個)が4ビット共通状態レジスタ200に組み合わされる。次のサイクル中に、各処理ユニット、例えば、PU178のマイクロコードプログラムは、共通状態レジスタ200からのビットのうちの1ビットを選択し、状態ビットの値に依存して別のマイクロコードアドレスへ分岐することが可能である。
【0243】
状態ビット
各処理ユニット、例えば、PU178のALU188は、多数の入力及び計算ユニットを含む。各ユニットは、負フラグと零フラグの二つの状態ビットを生成する。これらの状態ビットのうちの一つは、特別なユニットが1ビット3状態の状態ビットバス上の値をアサートするときに、処理ユニット、例えば、PU178から出力される。一つの状態ビットが処理ユニット、例えば、PU178から出力され、次に、共通状態レジスタ200を更新するため、他の処理ユニット、例えば、PU178の状態ビットと組み合わされる。出力状態ビットを決定するマイクロコードは以下の形式をとる。
【0244】
【表6】
Figure 2001523900
ALU188内で、2ビット選択プロセッサブロック値は、4個の1ビットイネーブルビットにデコードされ、異なるイネーブルビットが各プロセッサユニットブロックへ送信される。状態選択ビット(零又は負を選択する)は、状態ビットバスへ出力されるべきビットを決定するため全てのユニットへ渡される。
【0245】
マイクロコード内の分岐
各処理ユニット、例えば、PU178は、実行中の現在のマイクロコードアドレスを保持する7ビットプログラムカウンタ(PC)を含む。普通のプログラム実行はリニアであり、即ち、あるサイクルのアドレスNから次のサイクルのアドレスN+1へ進む。しかし、サイクル毎に、マイクロコードプログラムは、異なる場所へ分岐する能力、又は共通状態レジスタ200からの状態ビットをテストして分岐する能力を備えている。次の実行アドレスを決定するマイクロコードは以下の形式をとる。
【0246】
【表7】
Figure 2001523900
ALU188
図5はALU188を詳細に示す図である。ALU188内部には、多数の専用処理ブロックが存在し、マイクロコードプログラムによって制御される。専用処理ブロックには、
入力FIFOからのデータを受け取る読み出しブロック202と、
出力FIFOを介してデータを送り出す書き込みブロック203と、
加算及び減算と、比較及び論理演算のためのアダー/ロジックブロック204と、
乗算タイプの補間及び乗算/累算のための乗算/補間ブロック205と、
要求に応じてデータをシフトするバレルシフトブロック206と、
外部クロスバースイッチ183からのデータを受け取る入力ブロック207と、
外部クロスバースイッチ183へデータを送り出す出力ブロック208と、
一次記憶装置にデータを保持するレジスタブロック215と、
が含まれる。
【0247】
4個の専用32ビットレジスタは、4個の主要な処理ブロックの結果を保持する:
Mレジスタ209は、乗算/補間ブロックの結果を保持する;
Lレジスタ209は、アダー/ロジックブロックの結果を保持する;
Sレジスタ209は、バレルシフタブロックの結果を保持する;
Rレジスタ209は、読み出しブロック202の結果を保持する。
【0248】
更に、データ転送用の二つの内部クロスバースイッチ213及び214が存在する。多様な処理ブロックは、各ブロックに属するマイクロコード定義と共に後続のセクションで更に展開される。尚、マイクロコードは、内部の様々なユニットへ制御信号を供給するためブロック内でデコードされる。
【0249】
処理ユニット、例えば、PU178間のデータ転送
各処理ユニット、例えば、PU178は、外部クロスバーを介してデータを交換することができる。処理ユニット、例えば、PU178は、二つの入力を取得し、2個の値を外部クロスバーへ出力する。このようにして、処理用の2個のオペランドが単一サイクルで獲得できるが、実際には、次のサイクルまで演算に使用されない。
【0250】
入力207
このブロックは図6に示され、外部クロスバーからのデータを受け取る2個のレジスタIn1及びIn2を含む。レジスタはサイクル毎にロードすることが可能であり、又はそのままの状態を保つことが可能である。8入力から選択するための選択ビットは、外部クロスバースイッチ183へ出力される。マイクロコードは以下の形式をとる。
【0251】
【表8】
Figure 2001523900
出力208
入力は出力208によって補完される。出力ブロックは図7に詳細に示されている。出力は、Out1及びOut2の2個のレジスタを含み、両方のレジスタは、他の処理ユニット、例えば、PU178によって使用するためサイクル毎に外部クロスバーへ出力される。また、書き込みユニットは、Out1とOut2のうちの一方を、ALU188に取り付けられた出力FIFOの一つに書き込むことが可能である。最終的に、両方のレジスタは、第1クロスバー213への入力として利用可能であり、第1クロスバー213は、そのレジスタ値がALU188内の他のユニットへの入力として利用できるようにする。各サイクルで、2個のレジスタのうち何れか一方は、マイクロコード選択に応じて更新することができる。指定されたレジスタにロードされたデータは、(第1クロスバー213から選択された)D0−D3のうちの一つ、(第2クロスバー214から選択された)M、L、S及びRのうちの一つ、2個のプログラマブル定数のうちの一つ、又は固定値0若しくは1である。出力用のマイクロコードは以下の形式をとる。
【0252】
【表9】
Figure 2001523900
ALU188内のローカルレジスタ及びデータ転送
前述の通り、ALU188は、以下の4個のブロックの結果を保持するため、4個の専用32ビットレジスタを含む:
Mレジスタ209は乗算/補間ブロックの結果を保持する;
Lレジスタ209はアダー/ロジックブロックの結果を保持する;
Sレジスタ209はバレルシフタブロックの結果を保持する;
Rレジスタ209は読み出しブロック202の結果を保持する。
【0253】
CPUはこれらのレジスタに直接アクセスを行い、他のユニットは、第2クロスバー214経由の入力としてそれらを選択することができる。場合によっては、演算を1サイクル以上遅延させる必要がある。レジスタブロックは、4個の32ビットレジスタD0−D3を含み、処理中の一時変数を保持する。各サイクルに、レジスタのうちの一つを更新可能であり、一方、全てのレジスタは、他のユニットが(同様に、In、In2、Out1及びOut2を含む)第1クロスバー213を介して使用するために出力される。CPUはこれらのレジスタへ直接アクセスを行う。指定されたレジスタにロードされたデータは、(第1クロスバー213から選択された)D0−D3のうちの一つ、(第2クロスバー214から選択された)M、L、S及びRのうちの一つ、2個のプログラマブル定数のうちの一つ、又は固定値0若しくは1である。レジスタブロック215は図8に詳細に示されている。レジスタ用のマイクロコードは以下の形式をとる。
【0254】
【表10】
Figure 2001523900
第1クロスバー213
第1クロスバー213は図9に詳細に示されている。第1クロスバー213は、入力In、In2、Out1、Out2、D0−D3から選択するため使用される。7個の出力が第1クロスバー213から発生され、3個が乗算/補間ユニットへ、2個がアダーユニットへ、1個がレジスタユニットへ、1個が出力ユニットへ向けられる。第1クロスバー213用の制御信号は、クロスバー入力を使用する様々なユニットから到来する。第1クロスバー213のため分離された特定のマイクロコードは存在しない。
【0255】
第2クロスバー214
第2クロスバー214は図10に詳細に示されている。第2クロスバー214は、汎用ALU188レジスタM、L、S及びRから選択するため使用される。6個の出力が第1クロスバー213から発生され、2個が乗算/補間ユニットへ、2個がアダーユニットへ、1個がレジスタユニットへ、1個が出力ユニットへ向けられる。第2クロスバー214用の制御信号は、クロスバー入力を使用する様々なユニットから到来する。第2クロスバー214のため分離された特定のマイクロコードは存在しない。
【0256】
処理ユニット、例えば、PU178とDRAM又は外部プロセスとの間のデータ転送
図4を参照すると、処理ユニット、例えば、PU178は、外部クロスバーを介して、直接的に相互にデータを共有する。また、処理ユニットは、外部プロセス並びにDRAMとの間でデータを転送する。各処理ユニット、例えば、PU178は、2個のI/Oアドレス生成器189及び190を含み、DRAMとの間でデータを転送する。処理ユニット、例えば、PU178は、I/Oアドレス生成器の出力FIFO、例えば、186を介してDRAMへデータを送出し、又はI/Oアドレス生成器の入力FIFO187を介して、DRAMからデータを受け取る。これらのFIFOは、処理ユニット、例えば、PU178に局在する。また、外部プロセスとの間で、全てのALUによって共有される共通VLIW入力FIFO78及び共通VLIW出力FIFO79の形でデータを送受する機構が存在する。VLIW入力及び出力FIFOは、8ビット幅しかなく、印刷、Artcard読み出し、CPU等へのデータ転送に使用される。ローカル入力及び出力FIFOは16ビット幅である。
【0257】
読み出し
図5の読み出しプロセスブロック202は、ALU188のRレジスタ209を更新する役割を担い、Rレジスタは、VLIWマイクロコード化プロセスへの外部入力データを表現する。サイクル毎に、読み出しユニットは、共通VLIW入力FIFO78(8ビット)、又は2個のローカル入力FIFO(16ビット)のうちの何れかから読み出すことが可能である。32ビット値が生成され、そのデータの全部又は一部がRレジスタ209へ転送される。プロセスは図11に示されている。読み出し用のマイクロコードは以下の表に掲載されている。一部のビットパターンの解釈はデコーディングを補助するため意図的に選択される。
【0258】
【表11】
Figure 2001523900
書き込み
書き込みプロセスブロックは、各サイクルに、共通VLIW出力FIFO79、又は2個のローカル出力FIFOの一方の何れかへの書き込みを行うことができる。所与のサイクル中に書き込まれるFIFOは1個しかないので、1個の16ビット値が全てのFIFOへ出力され、下位8ビットがVLIW出力FIFO79へ達することに注意する必要がある。マイクロコードは、どのFIFOがその値を受け付けるかを制御する。データ選択のプロセスは図12により詳細に示されている。ソース値Out1及びOut2は出力ブロックから到来する。それらは、単に2個のレジスタである。書き込み用のマイクロコードは以下の形式をとる。
【0259】
【表12】
Figure 2001523900
計算ブロック
各ALU188は、2個の計算プロセスブロック、即ち、アダー/ロジックプロセスブロック204と、乗算/補間プロセスブロック205と、を含む。更に、これらの計算ブロックを補助するためバレルシフタブロックが設けられる。レジスタブロック215からのレジスタは、パイプライン演算中に一時記憶装置として使用することも可能である。
【0260】
バレルシフタ
バレルシフタプロセスブロック206は図13に詳細に示され、その入力は、アダー/ロジック、若しくは、乗算/補間プロセスブロックの出力、又はそれらのブロック(ALUレジスタL及びM)の前のサイクルの結果から得られる。選択された32ビットは、(必要に応じて符号を拡張して)何れかの向きに任意のビット数だけバレルシフトされ、ALU188のSレジスタ209へ出力される。バレルシフトプロセスブロック用のマイクロコードは以下の表に記載されている。一部のビットパターンの解釈はデコーディングを助けるため意図的に選択されることに注意する必要がある。
【0261】
【表13】
Figure 2001523900
アダー/ロジック204
アダー/ロジックプロセスブロックは、図14により詳細に示され、簡単な32ビット加算/減算、比較、及び論理演算用に設計されている。単一サイクルで、1回の加算、比較、又は論理演算を実行することができ、その結果はALU188のLレジスタ209に保存される。二つの主オペランドA及びBが存在し、これらは、二つのクロスバーの何れか、又は4個の定数レジスタから選択される。一方のクロスバーの選択によって、前のサイクルの算術演算の結果を使用することが可能になり、もう一方は、このALU又は他のALU188によって前に計算されたオペランドへアクセスする。CPUは、4個の定数(K1−K4)にアクセスする唯一のユニットである。例えば、(A+B)×4のような演算が要求される場合、アダーからの直接出力は、バレルシフタへの入力として使用可能であり、先にLレジスタ209にラッチしなくても2個分だけ左シフトさせることができる。アダーからの出力は、乗算−累算演算のため乗算ユニットで利用することができる。アダー/ロジックプロセスブロック用のマイクロコードは以下の表に掲載されている。一部のビットパターンの解釈はデコーディングを補助するため意図的に選択される。
アダー/ロジックユニット用のマイクロコードビット解釈
【0262】
【表14】
Figure 2001523900
乗算/補間205
乗算/補間プロセスブロックは、図15に詳細に示され、4個の8×8形補間ユニットのセットであり、4個の8×8形補間ユニットは、1サイクル毎に4回の別個の8×8形補間を実行する能力を備えているか、又は1回の16×16形乗算を実行するため組み合わせることができる。これは、単一サイクル中に最大で4回のリニア補間、1回のバイリニア補間、又はトライリニア補間の半分を実行可能であることを示す。補間又は乗算の結果はALU188のMレジスタ209に保存される。二つの主オペランドA及びBは、ALU188の汎用レジスタの何れかから選択されるか、又は乗算/補間プロセスブロックの内部にある4個のプログラマブル定数から選択される。各補間ブロックは、簡単な8ビット補間器[結果=A+(B−A)f]として機能するか、又は簡単な8×8形乗算[結果=A*B]として機能する。演算が補間である場合、A及びBは、4個の8ビット数値A0からA3(A0は下位バイトである)、及びB0からB3として取り扱われる。AGEN、BGEN及びFGENは、実行される演算に適合するように補間ユニットへの入力を並べる役目を果たす。例えば、バイリニア補間を実行するため、4個の値の各々は、異なる係数によって乗算され、その結果が加算され、一方、16×16形の乗算は、係数を0にする必要がある。アダー/ロジックプロセスブロック用のマイクロコードは、以下の表に掲載されている。尚、一部のビットパターンの解釈はデコーディングを補助するため意図的に選択される。
【0263】
【表15】
Figure 2001523900
同じ4ビットがV及びfの選択のために使用されるが、Vの直前の4個の選択肢は、一般的にf値として意味をなさない。1又は0の係数を用いる補間は無意味であり、前の乗算若しくは現在の結果がfに対する有意な値である可能性は少ない。
【0264】
I/Oアドレス生成器189と190
I/Oアドレス生成器は図16に詳細に示されている。VLIWプロセスはDRAMに直接アクセスしない。アクセスは2個のI/Oアドレス生成器189、190を介して行われ、各々のI/Oアドレス生成器は固有の入力FIFO及び出力FIFOを含む。処理ユニット、例えば、PU178は、2個のローカル入力FIFOの一方からデータを読み出し、2個のローカル出力FIFOの一方にデータを書き込む。各I/Oアドレス生成器は、DRAMからデータを読み出し、そのデータを入力FIFOに入れる責任があり、その入力FIFOにおいて、データは処理ユニット、例えば、PU178によって読み出すことができる。各I/Oアドレス生成器は、その出力FIFOから(処理ユニット、たとえば、PU178によって入れられた)データを取り出し、それをDRAMに書き込む役割を担う。I/Oアドレス生成器は、データキャッシュ76を介してDRAMのデータを取得及び記憶するためのアドレスを生成し制御を行う状態機械である。それは、CPUソフトウェア制御の下でカスタマイズ可能であるが、マイクロコード化できない。アドレス生成器は、
多種多様な方式で画像の画素の最初から最後までを繰り返すため(読み、書き、もしくはその両方)使用される画像イタレータと、
画像の画素、テーブルのデータをランダムにアクセスし、DRAMのFIFOをシミュレートするため使用されるテーブルI/Oと、
の二つに大別されるアドレスを生成する。
【0265】
I/Oアドレス生成器189と190の各々は、データキャッシュ76への固有のバス配線を具備し、1個の処理ユニット、例えば、PU178について2本のバス配線があり、VLIWベクトルプロセッサ74全体で合計8本のバスがある。データキャッシュ76は、サイクル毎に、4個の処理ユニット、例えば、PU178からの最大で8個の要求のうちの4個のために作用することが可能である。入力FIFO及び出力FIFOは、深さが8エントリーで、幅が16ビットのFIFOである。多種多様のアドレス生成(画像イタレータ及びテーブルI/O)が後のセクションで説明される。
【0266】
レジスタ
I/Oアドレス生成器は、アドレス生成を制御するため使用されるレジスタの組を有する。また、アドレッシングモードは、データがどのようにフォーマットされ、ローカル入力FIFOへ送られるか、並びに、データが出力FIFOからどのように解釈されるかを決定する。CPUは、低速バスを介して、I/Oアドレス生成器のレジスタにアクセス可能である。第1のレジスタの組は、I/O生成器のためのハウスキーピングパラメータを定義する。
【0267】
【表16】
Figure 2001523900
状態レジスタは以下の値をとる。
【0268】
【表17】
Figure 2001523900
キャッシュ処理
複数のレジスタがキャッシュ処理機構を制御するため使用され、入力、出力等に使用するキャッシュグループを指定する。キャッシュグループのより詳細な情報についてはデータキャッシュ76に関するセクションを参照のこと。
【0269】
【表18】
Figure 2001523900
画像イタレータ=順次自動画素アクセス
ソフトウェア及びハードウェアアルゴリズム用の主な画像絵素アクセス方法は画像イタレータによる。画像イタレータは、画像チャンネル内の画素のキャッシュのアドレッシング及びアクセスの全てを実行し、それらのクライアントのため画素を読み出し、書き込み、或いは、読み書きする。読み出しイタレータは、そのクライアントのための特定の順序で画素を読み出し、書き込みイタレータはそのクライアントのための特定の順序で画素を書き込む。イタレータのクライアントは、ローカル入力FIFOから画素を読み出し、又はローカル出力FIFOを介して画素を書き込む。
【0270】
読み出し画像イタレータは、特定の順序で画像の中を読み、画素データをローカル入力FIFOに入れる。クライアントが入力FIFOから画素を読み出す毎に、読み出しイタレータは(データキャッシュ76経由で)画像からの次の画素をFIFOに入れる。
【0271】
書き込み画像イタレータは、画像全体を書き出すため、特定の順序で画素を書き込む。クライアントは画素を出力バッファに書き込み、この出力バッファが次に書き込み画像イタレータによって読み出され、データキャッシュ76を介してDRAMに書き込まれる。
【0272】
典型的に、VLIWプロセッサは、読み出しイタレータに結合された入力と、対応した書き込みイタレータに結合された出力と、を有する。処理ユニット、例えば、PU178のマイクロプログラムの観点では、FIFOは、DRAMへの効率的なインタフェースである。記憶を(データの論理的な順序ではなく)実際に実行する方法は無関係である。FIFOは、長さが実質的に制限されていると考えられるが、実際上、FIFOは長さが有限であり、特に、複数のメモリアクセスが競合する場合、データをソートし、取り出す遅延が生じる。画像処理アルゴリズムの最も一般的なアドレッシング必要条件に対処する様々な画像イタレータが存在する。殆どの場合に、各読み出しイタレータには、対応した書き込みイタレータが存在する。種々のイタレータが以下の表に掲載されている。
【0273】
【表19】
Figure 2001523900
4ビットアドレスモードレジスタがイタレータタイプを決定するため使用される。
【0274】
【表20】
Figure 2001523900
アクセス専用レジスタは以下のように使用される。
【0275】
【表21】
Figure 2001523900
フラグレジスタ(アクセス専用1)は、データの読み出し及び書き込みに影響を与える要因を決定する多数のフラグを含む。フラグレジスタは以下のように構成される。
【0276】
【表22】
Figure 2001523900
読み出しイネーブル及び書き込みイネーブルに関する注意:
読み出しイネーブルがセットされたとき、I/Oアドレス生成器は読み出しイタレータとして動作するので、特定の順序で画像を読み出し、画素を入力FIFOに収容する。
【0277】
書き込みイネーブルがセットされたとき、I/Oアドレス生成器は書き込みイタレータとして動作するので、特定の順序で画像を書き込み、出力FIFOから画素を取り出す。
【0278】
読み出しイネーブルと書き込みイネーブルの両方がセットされたとき、I/Oアドレス生成器は、読み出しイタレータ及び書き込みイタレータとして動作し、入力FIFO内の画素を読み出し、出力FIFOからの画素を書き込む。画素は読み出された後に限り書き込まれる。即ち、書き込みイタレータは読み出しイタレータよりも先に進むことはない。このモードが使用されるときには、VLIWマイクロコードによる入力処理と出力処理の間のバランスを確保するように注意すべきである。尚、CasheGroup1とキャッシュグループ2に異なる値をロードすることによって、別々のキャッシュグループを読み出しと書き込みに関して指定することも可能である。
【0279】
PassX及びPassYに関する注意:
PassXとPassYの両方がセットされた場合、Y縦座標はX縦座標よりも前に入力FIFOに収容される。
【0280】
PassX及びPassYは、読み出しイネーブルビットがクリアされたときに限りセットされる。縦座標をアドレス生成器に渡すのではなく、縦座標は入力FIFOに直接収容される。縦座標はFIFOから取り出されるときに前進する。
【0281】
書き込みイネーブルビットがセットされた場合、VLIWプログラムは、入力FIFOからの縦座標の読み出しを、出力FIFOへの書き込みと確実にバランスさせる必要がある。なぜならば、書き込みは、縦座標までしか発生しないからである(読み出しイネーブル及び書き込みイネーブルに関する上記の注意を参照せよ。)
ループに関する注意:
ループビットがセットされた場合、読み出しは、一旦[最終画素、最終行]に達すると、[開始画素、開始行]で再開する。これは、データを繰り返し読み出す必要があるコンボリューションカーネルやディザセルマトリックスのような構造体を処理する場合に理想的である。
【0282】
読み出しイネーブル及び書き込みイネーブルがセットされた状態のループ処理は、単一ラインの履歴を維持する環境で役に立ち得るが、書き込みの前に読み出しが行われる場合に限り有効である。(長さに制約のある形式で書き込みが読み出しの前に行われる)FIFOの効果がある場合、画像イタレータではなく、適切なテーブルI/Oアドレッシングモードが使用される。
【0283】
書き込みイネーブルだけがセットされたループ処理は、直前のN画素の書き込み窓を作成する。これは、窓からデータを読み出す非同期的プロセスを用いて使用される。Artcard読み出しアルゴリズムは、このモードを利用する。
【0284】
順次読み出し及び書き込みイタレータ
図17は、画素データフォーマットの説明図である。最も簡単な画像イタレータは、順次読み出しイタレータ、及び対応した順次書き込みイタレータである。順次読み出しイタレータは、チャンネルからの画素を、同時に1行ずつ、上から下に示し、同じ行内では、画素は左から右へ示される。パディングバイトはクライアントに示されない。これは、画像からの各画素にある種のプロセスを実行する必要があるが、処理される画素の順序を問題にしないか、又はデータが特にこの順序であることを要求するアルゴリズムにとって最も有益な点である。順次読み出しイタレータを補完するのは、順次書き込みイタレータである。クライアントは出力FIFOに画素を書き込む。順次書き込みイタレータは、適切なキャッシュ処理及び適切なパディングバイトを使用して、有効画像を書き出す。各順次イタレータは、2本のキャッシュラインへのアクセスを必要とする。読み出し時に、32画素が1本のキャッシュラインから示されるが、他のキャッシュラインはメモリからロードされ得る。書き込み時、32画素は1本のキャッシュラインに書き込まれるが、他の画素はメモリに書き込まれる。画像の各画素に独立に演算を実行するプロセスは、典型的に、画素を得るために順次読み出しイタレータを使用し、新しい画素値を目的画像内の対応した場所に書き込むため順次書き込みイタレータを使用するであろう。このような処理は図18に示されている。
【0285】
殆どの場合に、原画像及び目的画像は異なり、2個のI/Oアドレス生成器189と190によって表現される。しかし、原画像と目的画像を一致させることも有効である。なぜならば、ある種の入力画像は1回しか読み出されないからである。その場合、同じイタレータを入力と出力の両方に使用することが可能であり、読み出しイネーブルレジスタ及び書き込みイネーブルレジスタの両方が適切にセットされる。最大効率の場合、読み出し用と書き込み用の2個の異なるキャッシュグループを使用することが必要である。データがVLIWプロセスによって作成され、順次書き込みイタレータによって書き込まれるべき場合、PassXフラグ及びPassYフラグは座標を生成するため使用され、その座標は、次に、入力FIFOへ伝えられる。VLIWプロセスは、これらの座標を使用し、出力データを適切に作成することができる。
【0286】
ボックス読み出しイタレータ
ボックス読み出しイタレータは、汎用フィルタ及びコンボルブのような演算を実行するため最も便利な順序で画素を提示するため使用される。このイタレータは、順次に読み出された画素の周りの正方形のボックス内の画素値を提示する。このボックスは、X及びYの方向の幅が1、3、5又は7画素になるように制限される(Xボックスサイズ及びYボックスサイズは同じ値であるか、一方の次元の値が1であり、他方の次元の値が3、5又は7である)。この処理は図19に示されている。
【0287】
ボックスオフセット:この専用レジスタは、どの入力画素がボックスの中心として使用されるかに関してサブサンプリングを決定するため使用される。通常値は1であり、これは、各画素がボックスの中心として使用されることを意味する。”2”という値は、画像ピラミッドを構築する場合のように画像を4:1に縮小する際に便利である。上記の図からの画素アドレスを使用すると、ボックスは、画素0、2、8及び10の順に中心が置かれる。ボックス読み出しイタレータは、最大で14(2×7)本のキャッシュラインにアクセスする必要がある。画素が7本のラインの中の1組から提示される間に、他のキャッシュラインはメモリからロードすることが可能である。
【0288】
ボックス書き込みイタレータ
対応するボックス書き込みイタレータは存在しない。なぜならば、画素の複製は入力時だけに要求されるからである。入力用のボックス読み出しイタレータを使用するプロセスは、殆ど確実に、同期しているので出力用の順次書き込みイタレータを使用するであろう。その良い例はコンボルバである。コンボルバでは、N個の入力画素が1個の出力画素を計算するため読み出される。そのプロセスフローは、図20に示されているようなフローである。ボックス読み出しイタレータを使用するとき、原画像及び目的画像は同じメモリを使ってはならない。なぜならば、後続の画像のラインが(新たに計算されたものではなく)元の値を必要とするからである。
【0289】
垂直ストリップ読み出し及び書き込みイタレータ
ある種の例では、画像を出力画素の順序で書き込む必要があるが、出力画素に対する入力画素のコヒーレンスの方向がわからない。その一例は回転である。画像が90度回転され、出力画像を水平方向に処理する場合、キャッシュコヒーレンスの完全に失われる。これに対して、出力画像を処理する同時に1本のキャッシュラインの幅の画素に基づいて出力画像を処理し、(同じライン上の次のキャッシュラインに相当する画素へ進むのではなく)次のラインへ進む場合、入力画像の画素に対するキャッシュコヒーレンスが得られる。入力画素に(色コヒーレンスのような)既知の「ブロック」コヒーレンスが存在する場合も同様であり、この場合、読み出しが処理順序を支配し、同期させられるべき書き込みは、同じ画素順序に従わなければならない。入力として提示された画素の順序(垂直ストリップ読み出し)、又は出力に予想される順序(垂直ストリップ書き込み)は同一である。順序は、ライン0の画素0から画素31、次に、ライン1の画素9から画素31、以下、画像の全てのラインに対して同様であり、次に、ライン0の画素32から63というように続く。最後の垂直ストリップでは、正確に32画素が存在しないかもしれない。この場合、画像の実際の画素だけが入力として、提示されるか、又は予定される。この処理は図21に示されている。
【0290】
垂直ストリップ書き込みイタレータだけを必要とするプロセスは、典型的に、出力画素座標が与えられた場合に入力画素座標をマッピングする方法を備えている。そのプロセスは、このマッピングに従って入力画像の画素にアクセスし、コヒーレンスは、入力画像用の「ランダムアクセス」リーダー上に十分なキャッシュラインを設けることによって決定される。図22のプロセス概要に示されるように、座標は、典型的に、垂直ストリップ書き込みイタレータのPassXフラグ及びPassYフラグをセットすることによって生成される。
【0291】
書き込みイタレータを順次読み出しイタレータ又はボックス読み出しイタレータとペアにすることは重要ではないが、垂直ストリップ書き込みイタレータは、入力座標と出力座標の間に重要なマッピングが存在するとき、性能に著しい改良を加える。
【0292】
垂直ストリップ読み取りイタレータと垂直ストリップ書き込みイタレータをペアにすることは重要である。この場合、入力画像と出力画像が同じであるならば、垂直ストリップ読み取りイタレータと垂直ストリップ書き込みイタレータを一つのALU188に割り当てることが可能である。座標が必要であるならば、更なるイタレータをセットされたPassXフラグ及びPassYフラグと共に使用しなければならない。垂直ストリップ読み取り/書き込みイタレータは、入力FIFOに画素を提示し、出力FIFOからの出力画素を受け取る。適切なパディングバイトが書き込み時に挿入される。入力及び出力の各々は、優れた性能のために少なくとも2本のキャッシュラインを必要とする。
【0293】
テーブルI/Oアドレッシングモード
(画像のような)テーブル内の値を調べることはしばしば必要になる。テーブルI/Oアドレッシングモードは、この機能を提供し、クライアントがインデックスを出力FIFOに入れることを要求する。I/Oアドレス生成器は、インデックスを保有し、適切にデータを調べ、VLIWクライアントによる後の処理のため、調べた値を入力FIFOに返す。
【0294】
1次元、2次元及び3次元のテーブルがサポートされ、特定のモードは補間を対象としている。VLIWのクライアント側の複雑さを軽減するため、インデックス値は、固定小数点の数値として取り扱われ、アクセス専用レジスタは、固定小数点を定め、インデックスの整数部として取り扱われるべきビットを定める。データフォーマットは、画素オフセットレジスタが無視される点で、汎用画像特徴の制限された形式であり、データは行内で連続していると仮定され、データ要素毎に、8ビット又は16ビット(1バイト又は2バイト)だけが許容される。4ビットのアドレスモードレジスタはI/Oタイプを決定するため使用される。
【0295】
【表23】
Figure 2001523900
アクセス専用レジスタは次の通りである。
【0296】
【表24】
Figure 2001523900
FractX、FractY及びFractZは、インデックスに基づいてアドレスを生成し、有意ビット及び整数/小数コンポーネントに関するインデックスのフォーマットを解釈するため使用される。種々のパラメータは、索引付けされたテーブルの次元数によって必要に応じて定められる。1次元テーブルは、FractXだけが必要であり、2次元テーブルは、FractX及びFractYを必要とする。各Fract値は、対応したインデックスの小数ビットの個数により構成される。例えば、Xインデックスは、5:3のフォーマットである。これは、整数が5ビットで、小数が3ビットであることを示す。したがって、FractXは3にセットされる。簡単な1次元ルックアップは、8:0のフォーマットであり、即ち、小数コンポーネントが全く無い。FractXは0になる。零オフセットは、3次元ルックアップの場合に限り必要になり、2種類の解釈を採用する。これは3次元テーブルルックアップのセクションに詳述されている。フラグレジスタ(アクセス専用1)は、データの読み取り(あるケースでは、書き込み)に影響を与える要因を決定するため使用される多数のフラグを含む。フラグレジスタは以下のように構成される。
【0297】
【表25】
Figure 2001523900
1次元直接ルックアップとDRAMのFIFOを除くと、全てのテーブルI/Oモードは、読み出しだけをサポートし、書き込みをサポートしていない。したがって、上記の二つのモードを除く全てのI/Oモードでは、読み出しイネーブルビットはセットされ、書き込みイネーブルビットはクリアされる。1次元直接ルックアップは、
読み出しイネーブルビットがセットされ、書き込みイネーブルビットがクリアされている読み出し専用と、
読み出しイネーブルビットがクリアされ、書き込みイネーブルビットがクリアされている書き込み専用と、
読み出しイネーブルビットと書き込みイネーブルビットの両方がセットされているリード・モディファイ・ライトと、
の3モードをサポートする。
【0298】
異なるモードは、以下の1次元ルックアップのセクションに記載されている。DRAM FIFOモードは、
読み出しイネーブルビットと書き込みイネーブルビットの両方がセットされているライト・リード・モード
という一つのモードだけをサポートする。
【0299】
このモードは、以下のDRAM FIFOのセクションに記載されている。DataSizeフラグは、テーブルの各データ要素のサイズが8ビットであるか、16ビットであるかを決定する。2種類のデータサイズだけがサポートされる。32ビットの要素は、プロセスの必要条件に依存して、以下の2種類の方法の何れかで作成することができる:
二つの16ビットテーブルから同時に読み出し、その結果を合成する。これは、タイミングが問題となるときに都合が良いが、二つのI/Oアドレス生成器189と190を無駄に使用する点で欠点があり、各32ビット要素はCPUによって32ビットのエンティティとして読むことができない;
16ビットテーブから2回に亘って読み出し、その結果を合成する。これは、一つのルックアップだけが使用されるので都合が良いが、異なるインデックスを生成し、ルックアップへ伝えなければならない。
【0300】
1次元構造
直接ルックアップ
直接ルックアップは、1次元ルックアップテーブルへの簡単なインデキシングである。クライアントは、フラグレジスタに適切なビットをセットすることにより、三つのアクセスモード、即ち、
読み出し専用
書き込み専用
リード・モディファイ・ライト
の間で選択可能である。
【0301】
読み出し専用
クライアントは、固定小数点インデックスXを出力FIFOに送り、テーブル[Int(X)]の8又は16ビット値が入力FIFOに返される。インデックスXの小数コンポーネントは完全に無視される。インデックスが範囲外である場合、エッジ繰り返しフラグは、エッジ画素が返されるか、一定画素が返されるかを決定する。アドレス生成は、次のように簡単である:
データサイズが8ビットを示す場合、Xは右へバレルシフトされたFractXのビットであり、結果はテーブルのベースアドレスImageStartに加算される;
データサイズが16ビットを示す場合、Xは右へバレルシフトされたFractXのビットであり、左へ1ビットシフトされた(ビット0が0になる)結果は、テーブルのベースアドレスImageStartに加算される。
【0302】
結果として得られたアドレスにおける8又は16ビットデータ値は入力FIFOに入れられる。アドレス生成には1サイクルを要し、要求されたデータをキャッシュから出力FIFOへ転送するためにも(キャッシュヒットを仮定したとき)1サイクルを要する。例えば、各エントリーが16ビットであり、インデックスが12ビットの8:4の固定小数点フォーマットである256エントリーのテーブルの値を引く場合を想定すると、FractXは4であり、データサイズは1である。インデックスがルックアップへ渡されたとき、4ビットだけ右へシフトし、その結果を1ビットだけ左へシフトし、ImageStartに加算する。
【0303】
書き込み専用
クライアントは、固定小数点インデックスXを出力FIFOへ渡し、その後、テーブルの指定された場所へ書き込まれるべき8又は16ビット値を渡す。完全な転送には最低でも2サイクル、即ち、アドレス生成のための1サイクルと、FIFOからDRAMへのデータ転送のための1サイクルを要する。VLIWプロセスがインデックスをFIFOに収容してから書き込まれるべき値をFIFOに収容するまでの間に任意の数のサイクル数を設けることができる。アドレス生成は、読み出し専用モードと同様に行われるが、データがそのアドレスから読み出されるのではなく、出力FIFOからのデータがそのアドレスに書き込まれる。アドレスがテーブルの範囲外である場合、そのデータはFIFOから削除され、DRAMには書き込まれない。
【0304】
リード・モディファイ・ライト
クライアントは、固定小数点インデックスXを出力FIFOに送り、テーブル[Int(X)]の8又は16ビット値が入力FIFOへ返される。出力FIFOに収容された次の値は、テーブル[Int(X)]に書き込まれ、前に返された値を置き換える。汎用処理ループは、ある場所から値を読み出し、値を変更し、その値を書き戻すプロセスである。全体的な時間は、
インデックスからアドレスを生成するサイクルと、
テーブルからの値を返却するサイクルと、
ある種の方法で値を変更するサイクルと、
変更した値をテーブルへ書き戻すサイクルと、
の4サイクルである。
【0305】
クライアントが「Xからの読み出し」又は「Xへの書き込み」を表すフラグを提示する特定の読み出し/書き込みモードは存在しない。クライアントは、元の値を書き込むことにより「Xからの読み出し」のシミュレーションを行い、返された値をただ無視することによって「Xへの書き込み」のシミュレーションを行うことができる。しかし、このようなモードの使用が促進されることはない。なぜならば、各動作は、最低でも3サイクル(モディファイは必要ではない)を使用し、特定の読み出し及び書き込みモードによって行われるような1回のアクセスではなく2回のデータアクセスを使用するからである。
【0306】
補間テーブル
これは、所定の固定小数点インデックスXに対して、1個の値ではなく2個の値が返される点を除くと、読み出しモードにおける直接ルックアップと同じである。返される値は、テーブル[Int(X)]とテーブル[Int(X)+1]である。いずれかのインデックスが範囲外である場合、エッジ繰り返しフラグは、エッジ画素が返されるか、一定画素が返されるかを決定する。アドレス生成は、8ビットデータであるか16ビットデータであるかに応じて、2番目のアドレスが単に(1番目のアドレス+1)又は(1番目のアドレス+2)である点を除くと、直接ルックアップと同じである。要求されたデータを出力FIFOへ転送するためには2サイクルを要するが(キャッシュヒットを想定)、1回の16ビットフェッチによって2個の8ビット値がキャッシュからアドレス生成器へ実際に返される。
【0307】
DRAM FIFO
読み出し/書き込み1次元テーブルの特殊なケースは、DRAM FIFOである。DRAM及び付随したキャッシュを使用して所定の長さのFIFOをシミュレーションすることがしばしば必要である。DRAMのFIFOによって、クライアントは、テーブルに明示的に索引付けをせずに、あたかもFIFOの一方の端であるかのようにして出力FIFOへ書き込み、同じ論理的FIFOのもう一方の端であるかのようにして入力FIFOから読み出す。2個のカウンタがシミュレーティッドFIFOの入力位置と出力位置を追跡し、必要に応じてDRAMへキャッシュする。クライアントは、フラグレジスタの読み出しイネーブルビットと書き込みイネーブルビットの両方を見る必要がある。
【0308】
DRAM FIFOの用法の一例は、ある値のシングルライン履歴を保持することである。初期履歴は処理が始まる前に書き込まれる。一般的なプロセスがラインを完了するとき、前のラインの値がFIFOから獲得され、このラインの値はFIFOに入れられる(このラインは、次のラインを処理するときには前のラインになる)。入力と出力が平均的に相互に一致する限り、出力FIFOは常に一杯である。その結果として、この種のFIFOの場合、アクセス遅延が無く効率的である(但し、FIFO全長が非常に短い場合、例えば、3又は4バイトの場合を除くが、その場合にはFIFOの目的を損なうであろう)。
【0309】
2次元テーブル
直接ルックアップ
2次元直接ルックアップはサポートされていない。2次元ルックアップの全てのケースはバイリニア補間のためアクセスされることが予定されているので、特別なバイリニアルックアップが実現された。
【0310】
バイリニアルックアップ
この種のルックアップは、2次元テーブルからのデータのバイリニア補間のために必要である。固定小数点X座標及びY座標が与えられた場合(Y、Xの順に出力FIFOに入れられた場合)、4個の値がルックアップ後に返される。それらの値は(順番に):
Table[Int(X), Int(Y)]
Table[Int(X)+1, Int(Y)]
Table[Int(X), Int(Y)+1]
Table[Int(X)+1, Int(Y)+1]
である。
【0311】
返される値の順序は、最良のキャッシュコヒーレンスを与える。データが8ビットである場合、2個の値が2サイクルの間のサイクル毎に返され、下位バイトは第1のデータ要素である。データが16ビットである場合、1サイクル毎に1エントリーずつで、4個の値が4サイクルに返される。アドレス生成には2サイクルを要する。第1サイクルでは、FractYビットだけ右へバレルシフトされたインデックス(Y)がRowOffsetによって乗算され、その結果がImageStartに加えられる。第2サイクルは、XインデックスをFractXビットだけ右へシフトし、(8ビットデータの場合)その結果、又は(16ビットデータの場合)その結果を1ビットだけ左へシフトしたものの何れかが第1サイクルからの結果に加算される。これにより、アドレスAdrは、Table[Int(X),
Int(Y)]のアドレスである:
Adr = ImageStart
+ ShiftRight(Y, FractY)*RowOffset
+ ShiftRight(X, FractX)
Adrのコピーは後続のエントリーをフェッチするためAdrOldに保持される:
データが8ビットであるならば、タイミングは、アドレス生成の2サイクルであり、その後、データが返却される2サイクルが続く(1サイクル毎に2個のテーブルエントリー);
データが16ビットであるならば、タイミングはアドレス生成の2サイクルであり、その後、データが返却される4サイクルが続く(1サイクル毎に1エントリー)。
【0312】
以下の二つの表は、8ビットデータサイズ及び16ビットデータサイズ用のアドレス計算方法を示している。
【0313】
【表26】
Figure 2001523900
【0314】
【表27】
Figure 2001523900
両方のケースにおいて、アドレス生成の第1サイクルは、XインデックスのFIFOへの挿入と重なってもよく、実効タイミングは、アドレス生成のための1サイクル、及び返却データの4サイクルと同程度に低い。インデックスの生成がその結果よりも2ステップ進んでいる場合、実効アドレス生成時間は無く、データは単に適切なレート(1セット毎に2サイクル又は4サイクル)で生成される。
【0315】
3次元ルックアップ
直接ルックアップ
2次元ルックアップの全てのケースはトライリニア補間のためアクセスされることが予想されるので、二つの特別なトライリニアルックアップが実現される。1番目は単純なルックアップテーブルであり、2番目は画像ピラミッドからのトライリニア補間用である。
【0316】
トライリニアルックアップ
このタイプのルックアップは、色変換テーブルのような3次元データテーブルに有効である。標準的な画像パラメータは、データの単一のXY平面を定義し、即ち、各平面は、ImageHight個の行により構成され、各行は、RowOffset個のバイトを含む。殆どの環境において、連続した平面を想定すると、一つのXY平面は、ImageHight×RowOffsetバイトの連なりである。このオフセットを仮定又は計算するのではなく、CPUによるソフトウェアは、そのオフセットを12ビットZOffsetレジスタの形で提供しなければならない。この形式のルックアップの場合、Z、Y、Xの順の3個の固定小数点インデックスが与えらると、ルックアップテーブルから8個の値:
Table[Int(X), Int(Y), Int(Z)]
Table[Int(X)+1, Int(Y), Int(Z)]
Table[Int(X), Int(Y)+1, Int(Z)]
Table[Int(X)+1, Int(Y)+1, Int(Z)]
Table[Int(X), Int(Y), Int(Z)+1]
Table[Int(X)+1, Int(Y), Int(Z)+1]
Table[Int(X), Int(Y)+1, Int(Z)+1]
Table[Int(X)+1, Int(Y)+1, Int(Z)+1]
が順番に返される。
【0317】
返される値の順序は、最良のキャッシュコヒーレンスを与える。データが8ビットである場合、2個の値が4サイクルの間のサイクル毎に返され、下位バイトは第1のデータ要素である。データが16ビットである場合、1サイクル毎に1エントリーずつで、4個の値が8サイクルに返される。アドレス生成には3サイクルを要する。第1サイクルでは、FractZビットだけ右へバレルシフトされたインデックス(Z)が12ビットのZOffsetによって乗算され、ImageStartに加えられる。第2サイクルでは、FractYビットだけ右へバレルシフトされたインデックス(Y)がRowOffsetによって乗算され、その結果が前のサイクルの結果に加算される。第2サイクルは、XインデックスをFractXビットだけ右へシフトし、(8ビットデータの場合)その結果、又は(16ビットデータの場合)その結果を1ビットだけ左へシフトしたものの何れかが第2サイクルからの結果に加算される。これにより、アドレスAdrは、Table[Int(X),
Int(Y), Int(Z)]のアドレスである:
Adr = ImageStart
+ (ShiftRight(Z, FractZ)*ZOffset)
+ (ShiftRight(Y, FractY)*RowOffset)
+ ShiftRight(X, FractX)
Adrのコピーは後続のエントリーをフェッチするためAdrOldに保持される:
データが8ビットであるならば、タイミングは、アドレス生成の2サイクルであり、その後、データが返却される2サイクルが続く(1サイクル毎に2個のテーブルエントリー);
データが16ビットであるならば、タイミングはアドレス生成の2サイクルであり、その後、データが返却される4サイクルが続く(1サイクル毎に1エントリー)。
【0318】
以下の二つの表は8ビットデータサイズ及び16ビットデータサイズ用のアドレス計算方法を示している。
【0319】
【表28】
Figure 2001523900
【0320】
【表29】
Figure 2001523900
両方のケースにおいて、アドレス生成のサイクルは、XインデックスのFIFOへの挿入と重なってもよく、単一の1回限りのルックアップの実効タイミングは、アドレス生成のための1サイクル、及び返却データの4サイクルと同程度に低い。インデックスの生成がその結果よりも2ステップ進んでいる場合、実効アドレス生成時間は無く、データは単に適切なレート(1セット毎に4サイクル又は8サイクル)で生成される。
【0321】
画像ピラミッドルックアップ
ブラッシング、タイリング及びワーピングの間に、画像の特定エリアの平均カラーを計
算することが必要である。所与のエリア毎に値を計算するのではなく、これらの機能は画像ピラミッドを利用する。画像ピラミッドの説明及び構造は、この文書のDRAMインタフェース81の章の内部画像フォーマットに関するセクションに詳述される。このセクションは、順序付きの3個の固定小数点インデックス:レベル(Z)、Y、及びXに関して、ピラミッド内の所与の画素をアドレッシングする方法に関連する。画像ピラミッドルックアップは8ビットのデータエントリーを想定するので、DataSizeフラグは完全に無視される。Z、Y、及びXの指定後、以下の8画素:
[Int(X), Int(Y)]のレベルInt(Z)の画素
[Int(X)+1, Int(Y)]のレベルInt(Z)の画素
[Int(X), Int(Y)+1]のレベルInt(Z)の画素
[Int(X)+1, Int(Y)+1]のレベルInt(Z)の画素
[Int(X), Int(Y)]のレベルInt(Z)+1の画素
[Int(X)+1, Int(Y)]のレベルInt(Z)+1の画素
[Int(X), Int(Y)+1]のレベルInt(Z)+1の画素
[Int(X)+1, Int(Y)+1]のレベルInt(Z)+1の画素
が入力FIFOを介して返される。
【0322】
8個の画素は4×16ビットのエントリーとして返却され、XエントリーとX+1エントリーはハイ/ローに合成される。例えば、拡大縮小された(X,Y)座標が(10.4,12.7)であるならば、最初に返される4個の画素は、(10,12)、(11,12)、(10,13)及び(11,13)であろう。座標が有効レンジ外であるとき、クライアントは、エッジ画素繰り返し及び定数画素レジスタ(下位8ビットだけが使用される)によって、エッジ画素繰り返し、又は定数カラー値の返却を選択することができる。画像ビラミッドが構築されたとき、レベル0の座標からレベルZの座標までの簡単なマッピングが存在する。この方法は、単に、X又はY座標をZビットだけ右へシフトさせる。これは、座標の整数部を獲得するため既にシフトされたビット数(即ち、X座標に対するFractXビットの右シフト及びY座標に対するFractYの右シフト)に加えて行う必要がある。画像ピラミッドの所与のレベルに対するImageStart及びRowOffsetを見つけるため、24ビットのZOffsetレジスタがレベル情報テーブルへのポインタとして使用される。このテーブルは、レコードの配列であり、各レコードは、レベル数によって順序付けられた所与のピラミッドのレベルを表現する。各レコードは、ImageStartからそのピラミッドのレベルまでの16ビットのオフセットZOffset(オフセットの下位6ビットのような64バイトの整列したアドレスは存在しない)と、そのレベルのための12ビットのZRowOffsetと、により構成される。テーブルの要素0は、ZOffsetが0であり、単にフルサイズ画像を指示するとき、ZRowOffsetが汎用レジスタRowOffsetと一致する。テーブルの要素NにおけるZoffset値は、画像ピラミッドのレベルNの実効ImageStartを得るため、ImageStartに加算されるであろう。テーブルの要素NのRowOffset値は、レベルNに対するRowOffset値を格納する。CPU上で動かされるソフトウェアは、このアドレッシングモードを使用する前にテーブルを適切にセットアップしなければならない。実際のアドレス生成の概要は、以下で1サイクル毎に説明される。
【0323】
【表30】
Figure 2001523900
上述のアドレス生成は、単一のバレルシフタ、2個のアダー、及び24ビットを生じる単一の16×16乗算/加算ユニットを使用して実現できる。一部のサイクルには2回のシフトが含まれるが、それらは、シフト値が同じであるか(即ち、バレルシフタの出力が2回使用されるか)、又はシフトが1ビットであるかのどちらかであり、ハードワイヤード可能である。次の内部レジスタ:ZAdr, Adr, ZInt, YInt, XInt, ZRowOffset, ZImageStartが必要である。_Int形のレジスタは最大で8ビットだけが必要であるが、他のレジスタは最大24ビットになり得る。このアクセス方法は、画像ピラミッドから読み出すだけであり、画像ピラミッドへ書き込まないので、キャッシュグループ2(CacheGroup2)が(Zadrを用いて)画像ピラミッドアドレステーブルをルックアップするため使用される。CacheGroup1は、(Adrを用いて)画像ピラミッド自体をルックアップするため使用される。アドレステーブルは、(原画像サイズに応じて)約22エントリーがあり、各エントリーは4バイトである。したがって、3又は4本のキャッシュラインをキャッシュグループ2に割り付けるべきであり、できるだけ多数のキャッシュラインをCasheGroup1に割り付けるべきである。データのセットを返すためのタイミングは8サイクルであり、サイクル8とサイクル0は動作が重なり合うと考えられ、即ち、次の要求のサイクル0はサイクル8の間に生じる。これが許される理由は、サイクル0がメモリにアクセスせず、サイクル8が特定の演算を含まないからである。
【0324】
VLIWベクトルプロセッサ74を用いる座標の生成
書き込みイタレータにリンクされた一部の関数は、処理パイプラインの一部で処理されている現在画素のX及び/又はY座標を必要とする。特定の処理は、処理されている各行又は列の最後に行われる必要がある。殆どの場合に、PassX及びPassYフラグは全ての座標を完全に生成するために十分である。しかし、特別な必要条件が存在する場合、以下の関数を使用することができる。この計算は、単一サイクル生成のため多数のALUに展開することが可能であり、或いは、多数サイクル生成のため単一のALU188内で行ってもよい。
【0325】
シーケンシャル[X,Y]生成
プロセスが順次読み出しイタレータに従って順次に画素を処理するとき(又は、画素を生成し、順次書き込みイタレータへその画素を書き出すとき)、以下のプロセスは、図23に示されるように、PassXフラグ/PassYフラグの代わりに、X、Y座標を生成するため使用可能である。
【0326】
座標生成器は、X座標に関して画像幅ImageWidthまでカウントアップし、ImageWidth個の画素毎に1回ずつY座標をインクリメントする。実際のプロセスは図24に示され、以下の定数がソフトウェアによってセットされる。
【0327】
【表31】
Figure 2001523900
以下のレジスタは一時変数を保持するため使用される。
【0328】
【表32】
Figure 2001523900
必要条件は以下のように要約される。
【0329】
【表33】
Figure 2001523900
垂直ストリップ[X,Y]生成
プロセスが、画素を垂直ストリップ書き込みイタレータへ書くために画素を処理し、ある種の理由からPassXフラグ/PassYフラグを使用できないとき、図25に示されるようなプロセスがX、Y座標を生成するため使用できる。この座標生成器は、X座標に関して画像幅ImageWidthまでカウントアップし、ImageWidth個の画素毎に1回ずつY座標をインクリメントするだけである。実際のプロセスは図26に示され、以下の定数がソフトウェアによってセットされる。
【0330】
【表34】
Figure 2001523900
以下のレジスタは一時変数を保持するため使用される。
【0331】
【表35】
Figure 2001523900
必要条件は以下のように要約される。
【0332】
【表36】
Figure 2001523900
垂直ストリップ毎に1回ずつ出現する計算(2回の加算、そのうち一つはMIN演算と関連付けられている)は、一般的なタイミング統計量に含まれない。なぜならば、それらは、画素タイミング毎の実際の一部ではないからである。しかし、それらは、特定の関数用のマイクロコードのプログラミングに考慮しなければならない。
【0333】
イメージセンサインタフェース(ISI83)
イメージセンサインタフェース(ISI83)は、CMOSイメージセンサからデータを取得し、データをDRAMに蓄積するため利用できるようにする。イメージセンサは、3:2のアスペクト比をもち、典型的な解像度は750×500サンプルであり、375K(1画素当たり8ビット)を生ずる。2×2画素ブロックの各々は、図27に示されるような構造を有する。ISI83は、画像を読み出すため、フレーム同期パルス及びPixelClockパルスを含む制御情報をイメージセンサへ送信する状態機械である。画素は、イメージセンサから読み出され、VLIW入力FIFO78に入れられる。VLIWは、次に、画素を処理及び/又は蓄積することが可能である。これは図28に示されている。ISI83は、検出された写真画像をDRAMに蓄積するVLIWプログラムと組み合わせて使用される。処理は次の2ステップで行われる:
小規模VLIWプログラムはFIFOから画素を読み出し、順次書き込みイタレータを介して画素をDRAMへ書き込む;
DRAM内の写真画像は、写真が撮影されたときのカメラの向きに応じて90、180又は270度回転させられる。
【0334】
回転が0度である場合、ステップ1は、写真画像を最終的な写真画像格納場所へ書き出すだけであり、ステップ2は実行されない。回転が0度以外である場合、画像は一時エリア(例えば、プリント画像記憶エリア)に書き込まれ、次に、ステップ2の間に、回転させられ最終的な写真画像格納場所へ入れられる。ステップ1は、非常に簡単なマイクロコードであり、VLIW入力FIFO78からデータを取り出し、そのデータを順次書き込みイタレータに書き込む。ステップ2の回転は、加速Varkアフィン変換関数を用いて実行される。処理は、設計の複雑さを軽減し、画像のために既に必要とされたVarkアフィン変換回転ロジックを再使用するため、2ステップで行われる。これが許容できる理由は、両方のステップが、Artcamのオペレータにとってごくわずかな時間である約0.03秒内に終了するからである。たとえそうであったとしても、読み出しプロセスは、センサ速度による制限を受け、フレーム全体を読み出すために0.02秒を要し、画像を回転するため約0.01秒を要する。
【0335】
検出された写真画像と内部フォーマット画像との間で変換を行うために向きは重要である。なぜならば、R画素、G画素及びB画素の相対位置は向きと共に変化するからである。処理された画像は、印刷のため正しい向きにするために、印刷プロセス中に回転させる必要がある。Artcamの3次元モデルは、2個のイメージセンサを具備し、それらの入力は単一のISI83(マイクロコードは異なるが、ACP31は同一)に多重化される。各センサはフレーム蓄積型であるため、両方の画像を同時に取得し、同時にメモリへ転送することができる。
【0336】
ディスプレイコントローラ88
Artcam上の「撮影」ボタンが半押しされたとき、TFTはイメージセンサからの(簡単なVLIWプロセスによって変換された)現在の像を表示する。撮影ボタンが完全に押下されたとき、撮影像が表示される。ユーザが印刷ボタンを押下し、画像処理が始まると、TFTはターンオフされる。画像が印刷されると、TFTは再度ターンオンされる。ディスプレイコントローラ88は、フラットパネルディスプレイを内蔵するArtcamモデルで使用される。例示的なディスプレイは、240×160画素の解像度を有するTFT型LCDである。ディスプレイコントローラ88の構成は図29に示されている。ディスプレイコントローラ88の状態機械はレジスタを含み、レジスタは同期生成のタイミングを制御し、表示画像はそこから(特定のキャッシュグループによるデータキャッシュ76を介してDRAMに)取得され、レジスタは、TFTをその時点で(TFTイネーブルを用いて)動作可能状態にすべきであるかどうかを制御する。CPUは、低速バスを介してこれらのレジスタへ書き込むことが可能である。240×160画素の画像をRGB方式TFTに表示するためには、1画素当たりに3個のコンポーネントが必要になる。DRAMから取得された画像は3個のDACを介して表示され、DACは、R、G及びBの出力信号の各々に対して1個ずつ設けられる。毎秒30フレーム(毎秒60フィールド)の画像リフレッシュレートで、ディスプレイコントローラ88は、
240×160×3×30=3.5MB/秒
のデータ転送速度を必要とする。
【0337】
このデータ速度は、システムの他の部分よりも低速である。しかし、集約的な画像処理中にVLIWプログラムを減速させるためには十分に高い。TFT動作の一般的な原理はこれを反映している。
【0338】
画像データフォーマット
上述の通り、DRAMインタフェース81は、ACPチップの他のクライアント部と、RAMBUS
DRAMとの間を接続する。事実上、DRAMインタフェース内の各モジュールはアドレス生成器である:
ACPによって操作される画像には3種類の論理的タイプがある。それらは、
−CCDから捕捉された入力像であるCCD像
−Artcam装置によって内部的に利用される内部画像フォーマット
−Artcamによって印刷される出力画像フォーマットである印刷画像
である。
【0339】
これらの画像は、典型的に、色空間、解像度、並びに、カメラ間で変動し得る出力及び入力色空間が相違する。例えば、低価格カメラのCCD像は、高価格カメラで使用されるCCDとは、解像度やカラー特性が異なる。しかし、全ての内部画像フォーマットは、あらゆるカメラの中で色空間に関して同一フォーマットである。
【0340】
その上、3種類の画像タイプは、どちらの方向が「上向き」であるかに関して異なる可能性がある。カメラの物理的な向きは、人物像であるか、又は風景像であるかについての観念を生じさせ、この観念は処理全体を通じて維持されるべきである。このため、内部画像は常に正しく向きを決められ、印刷動作中にCCDから獲得された画像に対して回転が実行される。
【0341】
CCD像編成
多種多様なCCDイメージセンサを利用可能であるが、CCD自体は750×500形イメージセンサであり、375000バイト(1画素当たり8ビット)を生成する場合を想定する。2×2画素ブロックの各々は図30に示されるような構造を有する。
【0342】
DRAMに蓄積されたときのCCD像は、メモリ内で隣接している所定のラインと連続した画素を有する。各ラインは、次々に蓄積される。イメージセンサインタフェース83は、CCDからデータを取得し、そのデータを正しい向きでDRAMに格納する役割を担う。このようにして、回転0度のCCD像は、G、R、G、R、G、R...のような第1ラインを含み、B、G、B、G、B、G...のような第2ラインを含む。CCD像が人物像であり、90度回転されているならば、第1ラインはR、G、R、G、R、Gであり、第2ラインはG、B、G、B、G、B、...(以下同様に続く)となるであろう。
【0343】
画素は、インターリーブ形式で蓄積される。なぜならば、全てのカラーコンポーネントが内部画像フォーマットを変換するために必要になるからである。
【0344】
ACP31はCCD画素フォーマットに関して仮説を立てないことに注意する必要がある。なぜならば、イメージング用の実際のCCDは、Artcamの間で経時的に変化し得るからである。ハードウェアによって行われる全ての処理は、ACP31の有用性を拡大するために主要なマイクロコードによって制御される。
【0345】
内部画像編成
内部画像は、典型的に、多数のチャンネルにより構成される。Vark画像には、
Lab
Labα
LabΔ
αΔ

が含まれるが、これらに限定されるものではない。
【0346】
L、a及びbは、Lab色空間のコンポーネントに対応し、αは(コンポジットのため使用される)マットチャンネルであり、Δは(ブラッシング、タイリング、及びイルミネーティングの間に使用される)バンプマップチャンネルである。
【0347】
VLIWプロセッサ74は、画像が平面的な構造で編成されることを要求する。そのため、Lab画像は、三つの別個のメモリブロック、即ち、
Lチャンネル用の1ブロック
aチャンネル用の1ブロック
bチャンネル用の1ブロック
として記憶される。
【0348】
各チャンネルのブロック内において、画素は(幾つかのオプションのパディングバイトと共に)所定の行に対し隣接して記憶され、行は次々に記憶される。
【0349】
図31には、論理的画像100の記憶形式の一例が示されている。論理的画像100は、逐次記憶されたカラーコンポーネントL101、a102及びb103を有する平面形式で記憶される。或いは、論理的画像100は、非圧縮Lコンポーネント101と、圧縮Aコンポーネント105及び圧縮Bコンポーネント106を有する圧縮フォーマットで記憶してもよい。
【0350】
図32を参照すると、ラインn(110)の画素は、ラインn+1(111)の画素の前に一緒に格納されている。画像は単一チャンネル内の隣接したメモリに記憶されている。
【0351】
8MBメモリモデルの場合、全処理の終了後の最終的な印刷画像は、クロミナンスチャンネルにおいて圧縮する必要がある。クロミナンスチャンネルの圧縮は、4:1にすることができ、全体的な圧縮は12:6又は2:1になる。
【0352】
最終的な印刷画像を除くと、Artcamの画像は典型的に圧縮されない。メモリ制約のため、ソフトウェアは、クロミナンスチャンネルの最終的な印刷画像を、これらのチャンネルの各々を2:1でスケーリングすることによって圧縮することを選択してもよい。これが行われた後、画像を印刷するために利用されるプリントVark関数は、圧縮されたものとして指定されたクロミナンスチャンネルを取り扱うように指示されるべきである。プリント関数は、圧縮されたクロミナンスを取り扱う方法を知っている唯一の関数であるが、たとえそうであるとしても、プリント関数は、固定の2:1圧縮比で処理するだけである。
【0353】
画像を圧縮し、次に、最終印刷画像を作成するため圧縮画像に基づいて動作することは可能であるが、これは、解像度の損失を生ずるので推奨できない。その上、画像は、プリントアウト前の最終段階として一回だけ圧縮されるべきである。1回の圧縮は実質的には気付かれないのに対し、多数回の圧縮はかなりの画像劣化を生じさせる。
【0354】
クリップ画像編成
Artcardに記憶されたクリップ画像はACP31によって明示的にはサポートされない。ソフトウェアは、現在のArtcardから画像を取り出し、ACPで認識できる形式にデータを編成する役割を担う。画像がArtcard上に圧縮形式で記憶されているならば、ソフトウェアは、それらを伸長する役割を担う。なぜならば、Artcard画像の伸長をサポートする特定のハードウェアは存在しないからである。
【0355】
画像ピラミッド編成
画像を操作するため利用されるブラッシング、タイリング、及びワーピングプロセス中に、しばしば、画像の特定のエリアの平均カラーを計算することが必要である。所与の各エリアの値を計算するのではなく、これらの関数は、画像ピラミッドを利用する。図33に示されるように、画像ピラミッドは、事実上の多重解像度画素マップである。原画像115は1:1表現である。各次元におけるローパスフィルタリング及び2:1のサブサンプリングによって、元のサイズの1/4の画像116が得られる。このプロセスは、画像全体が単一画素によって表現されるまで続けられる。画像ピラミッドは、原始的な内部フォーマット画像から構築され、原画像が占めていたサイズの1/3(1/4+1/16+1/64+...)を使用する。1500×1000の原画像の場合、対応した画像ピラミッドは約1/2MBである。画像ピラミッドは特定のVark関数によって構築され、他のVark関数のパラメータとして使用される。
【0356】
印刷画像編成
処理画像全体は、それを印刷するため同時に必要になる。しかし、印刷画像出力は、CMYディザ画像を含み、唯一の一時的な画像フォーマットであり、印刷画像機能内で使用される。しかし、内部色空間から印刷色空間への色変換が必要であることに注意しなければならない。その上、色変換は、インク特性の異なるカメラのプリントロールの種類毎に別々に調整することができる。例えば、セピア出力は特定のセピア調色Artcardを使用して実行され、又はセピア色調プリントロールを使用して実行される(したがって、全てのArtcardはセピア色調で機能する)。
【0357】
色空間
上述の通り、Artcamでは、画像タイプの種類に対応して三つの色空間が使用される。
【0358】
ACPは、特定の色空間についての直接的な知識を持たない。その代わりに、ACPは、CCD色空間、内部色空間、及びプリンタ色空間、即ち、
CCD色空間:RGBと、
内部色空間:Labと、
プリンタ色空間:CMYと、
の間の変換のためクライアントの色空間変換テーブルに依存する;
ACP31から色空間変換を取り除くことによって、
−様々なカメラで様々なCCDを使用すること
−同じカメラで(長期間に異なるプリントロールの)異なるインクを使用すること
−ACP設計パスからCCD選定を分離すること
−正確なカラー処理のため内部色空間を巧く定義すること
が可能になる。
【0359】
Artcardインタフェース87
Artcardインタフェース(AI)は、Artcardがリニアイメージセンサの下を通過するときに、リニアイメージセンサからデータを取得し、どのデータをDRAMに記憶するため利用する。イメージセンサは、1走査線当たりに11000個の8ビットサンプルを生成し、Artcardを4800dpiでサンプリングする。AIは、画像を読み出すため、LineSyncパルス及びPixelClockパルスを含む制御情報をリニアセンサへ送る状態機械である。画素は、リニアセンサから読み出され、VLIW入力FIFO78に収容される。VLIWは、次に、画素を処理する、及び/又は、画素を蓄積することが可能である。AIは以下の数個のレジスタを含む。
【0360】
【表37】
Figure 2001523900
尚、CPUは、走査を始動する前にVLIW入力FIFO78をクリアしなければならない。状態レジスタは以下のように解釈されるビットを有する。
【0361】
【表38】
Figure 2001523900
Artcardインタフェース(AI)87
Artcardインタフェース(AI)87は、Ardcardリーダー34からArtcard画像を取得し、それをオリジナルデータ(通常は、Varkスクリプト)に復号化する役割を担う。特に、AI87は、ArtcardスキャナリニアCCD34から信号を受け取り、カードに印刷されたビットパターンを検出し、ビットパターンをオリジナルデータに変換し、読み出しエラーを訂正する。
【0362】
Artcard9が挿入されていない場合、Artcamから印刷された画像は、任意の標準的な画像処理ルーチンによって整理された検出写真画像に過ぎない。Artcard9は、ユーザがプリントアウトする前に写真を修正するための手段である。特定のArtcard9をArtcamに挿入するという簡単なタスクによって、ユーザは、写真画像に対して実行される複雑な画像処理を定義することができる。
【0363】
Artcardが挿入されていない場合、写真画像は、印刷画像を作成するため通常の方法で処理される。1枚のArtcard9がArtcamに挿入されているとき、そのArtcardの効果は、印刷画像を生成するため写真画像に適用される。Artcard9が取り外されたとき(取り出されたとき)、印刷された画像は標準的な方法で処理された写真画像に戻る。ユーザがArtcardを取り出すためボタンを押下したとき、Artcam中央プロセッサ31で実行されるオペレーティングシステムによって維持されるイベントキューにイベントが収容される。イベントが処理されるとき(例えば、現在のプリントが行われた後)、以下の状況が発生する。
【0364】
現在のArtcardが有効であるならば、印刷画像は無効としてマークされ、「プロセス標準」イベントがイベントキューに入れられる。イベントが最終的に処理されたとき、印刷画像を生成するため、写真画像に標準的な画像処理演算が加えられる。
【0365】
モーターはArtcardを取り出すため始動され、時間的に規定された「モーター停止」イベントがイベントキューに追加される。
【0366】
アートカードの挿入
ユーザがArtcard9を挿入したとき、Artcardセンサ49はそれを検知し、ACP72へ報せる。これにより、ソフトウェアは、「Artcard挿入済み」イベントをイベントキューに挿入する。このイベントが処理されると、以下の数個の状況が発生する:
現在のArtcardは無効としてマークされる(「無し」ではない);
印刷画像は無効としてマークされる;
Artcardモーター37はArtcardを取り込むため始動される;
Artcardインタフェース87はArtcardを読み取るように命令される;
Artcardインタフェース87は、ArtcardスキャナリニアCCD34から信号を受け取り、カードに印刷されたビットパターンを検出し、検出されたビットパターンの誤りを訂正し、有効ArtcardデータブロックをDRAMに生成する。
【0367】
ArtcardCCDからのデータ読み出し−一般的考察
図34に示されるように、データカード読み出しプロセスは、画素データがカードから読み出される間に4フェーズを有する。フェーズは以下の通りである:
フェーズ1 Artcard上のデータエリア検出
フェーズ2 CCD画素に基づくArtcardからのビットパターン検出と、バイトとしての書き込み
フェーズ3 バイトパターンのスクランブル解除及びXOR演算
フェーズ4 データ復号化(リード・ソロモン復号)。
【0368】
図35に示されるように、Artcard9は、ナイキストの定理を充足するため、少なくとも印刷された解像度の2倍でサンプリングされなければならない。実際には、これよりも高いレートでサンプリングする方がよい。好ましくは、画素は、各次元で印刷されたドットの解像度の3倍でサンプリングされ(237)、1個のドットを定義するために9個の画素が必要になる。したがって、Artcard9の解像度が1600dpiであり、センサ34の解像度が4800dpiである場合、50mmのCCDイメージセンサを使用することにより、1列毎に9450画素が得られる。即ち、2MBのドットデータ(1ドット当たり9画素の場合)が必要であるならば、2MB*8*9/9450=15978列=約16000列が必要になる。勿論、ドットがサンプリングCCDと厳密に揃えられていないならば、考えられる最悪のケースでは、ドットは16(4×4)画素エリア(231)で検出されるであろう。
【0369】
Artcard9は、熱損傷のため多少歪みが生じ、Artcardリーダーへの挿入のばらつきによって僅かに(最大で、例えば、1度)回転し、リーダーモーター37の速度の変動を原因として真のデータレートに僅かな偏差が現れる可能性がある。これらの変化のために、カードからのデータの列は、対応した画素データの列として読み出せなくなる。図36に示されるように、Artcard9の1度の回転によって、カード上のある列からの画素は、166列に亘る画素として読み出されることになる。
【0370】
最後に、Artcard9は、人間のオペレータにとって合理的な時間内に読み取られなければならない。Artcard上のデータはArtcard表面の大部分を覆っているので、タイミングの問題はArtcardデータ自体に制限され得る。1.5秒の読み出し時間は、Artcard読み出しとして適切である。
【0371】
Artcardは1.5秒内に取り込まれなければならない。したがって、16000列の全ての画素データがCCD34から1.5秒以内に、即ち、1秒当たり10667列で読み出される必要がある。したがって、1列を読み取るために利用できる時間は1/10667秒、即ち、93747ナノ秒である。画素データは画素データを読み出すプロセスとは完全に独立に、同時に1列ずつDRAMへ書き込むことが可能である。
【0372】
1列のデータ(1画素当たり4ビット、したがって、1バイト当たりに2×4ビット画素の読み出しが可能であるので、9450/2バイト)をDRAMへ書き込むための時間は、8個のキャッシュラインを使用することによって短縮される。4ラインが同時に書き込まれるならば、4バンクを独立にかきこむことが可能であり、オーバーラップレイテンシーが短縮される。この場合、4725バイトは11840ns(4725/128*320ns)で書き込み可能である。このようにして、所定の列データをDRAMへ書き込むために要する時間は、利用可能な帯域幅の13%未満しか使用しない。
【0373】
Artcardの復号化
単純にデータサイズを見ると、リニアCCD34によって読み取られるようなArtcard画素データ全体(各ビットが3×3配列として読まれるならば140MB)が維持される場合、プロセスを8MBのメモリ33に適合させることは不可能に思われる。このため、リニアCCDの読み取り、ビットマップの復号化、及びアンビットマッププロセスは、(Artcard9がリニアCCD34の傍を通過する間に)リアルタイムで行われるべきであり、これらのプロセスは、全ての画像データ蓄積が利用可能にされなくても効率的に作用しなければならない。
【0374】
Artcard9が挿入されたとき、古い蓄積された印刷画像と拡大された写真画像は無効になる。新しいArtcard9は、現在の撮影写真画像に基づいて新しい画像を作成する命令を含み得る。古い印刷画像は無効であり、拡大された写真画像及び画像ピラミッドを保持するエリアは無効であり、読み出しプロセス中にスクラッチメモリとして使用できる5MBよりも多くの量が残される。厳密に説明すると、Artcardの新しい生データが書き込まれるべき1MBのエリアは、最終的なリード・ソロモン復号化が行われるときまで、Artcard読み出しプロセス中にスクラッチデータとして使用可能であり、その1MBエリアが再度開放される。ここで説明している読み出しプロセスは、(データの最終的な宛先としての利用を除いて)余分な1MBエリアを利用しない。
【0375】
また、スクランブル解除プロセスは、スクランブル解除を所定の場所で行うことができないので、2組の2MBのメモリエリアを必要とすることに注意すべきである。幸運にも、5MBのスクラッチエリアはこの目的のために十分なスペースを含む。
【0376】
図37を参照すると、Artcardデータを復号化するために必要なステップのフローチャート220が示されている。これらのステップには、Artcard221を読み込むステップと、対応した符号化され、XOR演算され、スクランブル処理されたビットマップデータ223を生成するため、読まれたデータを復号化するステップと、を含む。次に、符号化され、スクランブル処理されたデータ224を生成するため、チェッカーボードXOR演算がそのデータに適用される。このデータは、次に、データ225を生成するためにスクランブル解除227され、その後、このデータは、元の生データ226を生成するため、リード・ソロモン復号化を受ける。或いは、スクランブル解除及びXOR演算プロセスは、一緒に行ってもよく、別々のデータのパスを必要としない。上記のステップの各々は、以下で詳述される。図37を参照して説明したように、Artcardインタフェースは、4フェーズを有し、そのうちの最初の二つは、時間的に重大であり、画素データがCCDから読み出される間に行われなければならない:
フェーズ1 Artcard上のデータエリア検出
フェーズ2 CCD画素に基づくArtcardからのビットパターン検出と、バイトとしての書き込み
フェーズ3 バイトパターンのスクランブル解除及びXOR演算
フェーズ4 データ復号化(リード・ソロモン復号)。
【0377】
これらの4フェーズを次に詳細に説明する。
【0378】
フェーズ1:Artcard9がCCD34を通過するとき、AIは、データエリアの左側でArrcard上の特別ターゲットを確実に検出することにより、データエリアのスタートを検出しなければならない。特別ターゲットが検出され得なかった場合、カードは無効としてマークされる。この検出は、Artcard9がCCD34を通過する間に、リアルタイムで行われる必要がある。
【0379】
必要に応じて、回転不変性が与えられる。この場合、ターゲットは、Artcardの右側で繰り返されるが、上隅ではなく、下右隅に関連している。このようにして、もし、カードが「間違った」やり方で挿入された場合、ターゲットは、結局、正しい向きにされる。後述のフェーズ3は、データの向きを検出し、回転の可能性を考慮するように変更してもよい。
【0380】
フェーズ2:データが一旦決定されると、主たる読み出しプロセスが始まり、CCDからの画素データを「Artcardデータ窓」に入れ、この窓からのビットを検出し、検出されたビットをバイトに組み立て、DRAMにバイトイメージを構築する。これは、ArtcardがCCDを通過する間に全て行われる必要がある。
【0381】
フェーズ3:全ての画素がArtcardデータエリアから読み出されると、Artcardモーター37は停止させられ、バイトイメージはスクランブル解除され、XOR演算される。リアルタイム性能は要求されないが、このプロセスは、人間のオペレータを煩わせない程度に高速でなければならない。このプロセスは、2MBのスクランブル化されたビットイメージを取得し、スクランブル加除され/XOR演算されたビットイメージを別々の2MBイメージに書き込む。
【0382】
フェーズ4:Artcard読み出しプロセスの最終フェーズは、リード・ソロモン復号化プロセスであり、2MBビットイメージが1MBの有効Artcardデータエリアに復号化される。再び、リアルタイム性能は要求されないが、人間のオペレータからみて素早く復号化を行うことが必要である。復号プロセスが有効であるならば、カードは有効としてマークされる。復号に失敗した場合、ビットイメージ内のデータの複製の復号化が試みられ、プロセスは、成功するか、又はビットイメージ内にデータの複製イメージが存在しなくなるまで繰り返される。
【0383】
上記の4フェーズプロセスは、4.5MBのDRAMを必要とする。2MBはフェーズ2の出力のために確保され、0.5MBはフェーズ1及び2の間のスクラッチデータ用に確保される。残りの2MBのスペースは、1列当たりに4725バイトとして440列以上を保持することができる。実際上、読み出されている画素データはフェーズ1のアルゴリズムよりも数列分だけ先行しており、最悪のケースでは、約180列だけフェーズ2よりも遅れるが、440列の限界の範囲内に十分に収まる。
【0384】
次に、各フェーズの実際の動作を詳細に説明する。
【0385】
フェーズ1−Artcard上のデータエリア検出
このフェーズは、Artcard9上のデータエリアの左側を確実に検出することと関係がある。データエリアの正確な検出は、カードの左側に印刷された特殊ターゲットの正確な検出によって実現される。これらのターゲットは、特に、最大1度までの回転がある場合でも簡単に検出できるように設計されている。
【0386】
図38を参照すると、Artcard9の左側の拡大図が示されている。このカードの左側は16個のバンド239に分割され、ターゲット、例えば、241は各バンドの中心に設けられる。バンドは、バンドを分離するための線が引かれていないという点で論理的である。図39には、1個のターゲットが示されている。ターゲット241は、単一の白色ドットを含む印刷された黒色正方形である。この考え方は、最初にできるだけ多数のターゲット241を検出し、次に、少なくとも8個の検出された白色ドットの場所を単一の論理的な直線に繋ぎ合わせるというものである。この考え方が実行できれば、データエリア243のスタートは、この論理的な直線から一定距離になる。実行できない場合、カードは無効であるとして拒否される。
【0387】
図38に示されるように、カード9の高さは3150ドットである。ターゲット(Target0)241は、データエリアの左上隅244から24ドットの一定距離だけ離れた場所に置かれるので、ターゲットは、192ドット(576画素)の等しいサイズの16個の領域のうちの最初の領域239の範囲に巧く収まり、カードの最後の画素領域にターゲットは存在しない。ターゲット241は、簡単に検出できるように十分に大きくしなければならないが、カードが1度回転したときに領域の外側へ出る程に大きくしてはならない。ターゲットの適当なサイズは、白色ドット242を含む31×31ドット(93×93個の検出画素)の黒色正方形241である。
【0388】
最悪の1度の回転がある場合、1列分のシフトは57画素毎に起こる。したがって、590画素のサイズのバンドの場合、カードが最悪の回転状態であるならば、このシンボルの何れかの部分を、上部若しくは下部の12画素、又はバンドのその場所に配置することは不可能であり、或いは、シンボルはCCD読み出し時に間違ったバンドで検出されるであろう。
【0389】
したがって、矩形の黒色部分が57画素の高さ(19ドット)である場合、少なくとも9.5個の黒色画素は、CCDによって同一列で確実に読み出すことができる(画素の半分が1列に収まり、あとの半分が次の列に収まる最悪ケース)。同一列で少なくとも10個の黒色ドットが確実に読み出されるようにするため、高さを20ドットにする必要がある。黒色ドットのスタートのエッジでの誤検出に備えて、ドットの個数を31まで増加させ、ターゲットのローカル座標(15,15)に置かれた白色ドットの両側に15ドットずつを置く。31ドットは91画素であり、列内のシフトは最大でも3画素であり、576画素のバンドの範囲内に容易に収まる。
【0390】
このように、各ターゲットは、31×31ドット(93×93画素)のブロックであり、各ターゲットは、
各列に31個の黒色ドットを含む15列(93画素のうちの45画素幅の列)と、
15個の黒色ドット(45画素)、1個の白色ドット(3画素)、及び更なる15個の黒色ドット(45画素)を含む1列と、
各列が31個の黒色ドットを含む15列(93画素のうちの45画素幅の列)と、
により構成される。
【0391】
ターゲット検出
ターゲットは、ドットを検出するのではなく、同時に1列ずつ画素の列を読み出すことにより検出される。所定のバンド内で、ターゲットの左側を構築する多数の隣接した黒色画素により構成された多数の列を探索することが必要である。次に、更なる黒色列の中心で白色領域を見つけることが期待され、最後に、ターゲットの中心の左側で黒色列が見つけられる。
【0392】
画素の読み出しの際に優れたキャッシュ性能を得るためには8個のキャッシュラインが必要である。論理的な読み出し毎に、4回のサブ読み出しによって4個のキャッシュラインが満たされ、一方、その他の4個のキャッシュラインは使用される。これは、利用可能なDRAM帯域幅の13%までを効率的に使用する。
【0393】
図40に示されるように、ターゲットを検出する検出機構FIFOは、フィルタ245、ランレングスエンコーダ246、及びランダムアクセスのため最上部3要素(S1、S2及びS3)の特別な配線を必要とするFIFO247を含む。
【0394】
入力画素の列は、全てのターゲットが検出されるか、又は指定された数の列が処理されるまで、同時に1列ずつ処理される。列を処理するため、画素はDRAMから読み出され、0又は1を検出するためフィルタ245の中を通され、次に、ランレングス符号化246される。ビット値、及び同じ値の隣接したビットの個数は、FIFO247に入れられる。FIFO249の個々のエントリーは8ビットに収まり、7ビット250はランレングスを保持し、1ビット249は検出されたビットの値を保持する。
【0395】
ランレングスエンコーダ246は、576画素(192ドット)領域内の隣接した画素だけを符号化する。
【0396】
FIFO247の最上部3要素は、ランダムな順序でアクセス252され得る。これらのエントリーの(画素の)ランレングスは、以下の表に従って、ショート、ミディアム、及びロングの3個の値にフィルタ処理される。
【0397】
【表39】
Figure 2001523900
FIFO247の最上部の3個のエントリーに着目すると、3種類の興味深い特殊ケースが存在する。
【0398】
【表40】
Figure 2001523900
好ましくは、領域バンド毎に以下の情報が保持される。
【0399】
【表41】
Figure 2001523900
全部で7バイトが与えられる。合計が8バイトであるならば、アドレス生成が簡単化される。そこで、16個のエントリーは、16*8=128バイトが必要であり、これは、4個のキャッシュラインとぴったり合う。アドレスレンジは、0.5MBのDRAMエリアのスクラッチの内側に入るべきである。なぜならば、他のフェーズが残りの4MBデータエリアを利用するからである。
【0400】
所定の画素列を処理し始めるとき、レジスタ値S2StartPixel254は0にリセットされる。FIFO内のエントリーがS2からS1へ進むとき、それらは、既存のS2StartPixel値に加算され(255)、現在S2で定義されているランの正確な位置を与える。FIFO内の3個の興味深いケースの各々を調べると、S2StartPixelはターゲットの黒色エリアのスタートを判定するため使用可能であり(ケース1及び2)、ターゲットの中心にある白色ドットのスタートを判定するため使用可能である(ケース3)。列を処理するアルゴリズムは以下のように表される。
【0401】
【表42】
Figure 2001523900
列の処理に関与するステップ(プロセスColumn)は以下の通りである。
【0402】
【表43】
Figure 2001523900
3種類のケース(処理ケース)の各々に対する処理は以下の通りである。
【0403】
ケース1
【0404】
【表44】
Figure 2001523900
ケース2
ケース3を識別するためPrevCaseWasCase2フラグ(前のケースはケース2であった)をセットする以外に特別な処理は記録されない(上記の列を処理するステップ3を参照)。
【0405】
ケース3
【0406】
【表45】
Figure 2001523900
所与の列を処理する最後に、現在の列がターゲット検出のための列の最大番号と比較される。許容された列の番号を超えたとき、検出されたターゲットの個数をチェックする必要がある。検出されたものが8個未満であるならば、カードは無効であると見なされる。
【0407】
プロセス ターゲット
ターゲットが検出された後、ターゲットを処理する必要がある。全部のターゲットが利用可能であるか、又は一部のターゲットだけが利用可能である。一部のターゲットは誤って検出された可能性もある。
【0408】
この処理のフェーズは、できるだけ多数のターゲットの中心を通る数学的な直線を決定する。その直線が通過するターゲットの個数が多いほど、より高い信頼度でターゲット位置が検出される。限界は8ターゲットに設定される。直線が少なくとも8個のターゲットを通過する場合、正しい直線である見なされる。
【0409】
力ずくではあるが、簡単なアプローチを採用することは差し支えない。なぜならば、そのように行うための時間があり(以下を参照)、複雑さを低減することによりテストが簡単化されるからである。Target0とTarget1(両方のターゲットが有効であると見なされる場合)の間で直線を決定し、この直線上にあるターゲットの個数を決定する必要がある。次に、Target0とターゲット2の間の直線を決定し、このプロセスを繰り返す。最終的に、Target1と2の間の直線、1と3の間の直線等に同じプロセスを実行し、以下同様に続き、最終的に、Target14とTarget15の間の直線に同じプロセスを実行する。全てのターゲットが検出された場合を想定すると、15+14+13+...=90回の計算(各計算の組は16回のテストを必要とするので、実際には、1440回の計算)を実行し、その直線に沿って最大個数のターゲットが検出された直線を選択する必要がある。ターゲット位置を見つけるためのアルゴリズムは、例えば、以下のようになる:
Figure 2001523900
図34に示されるように、上記アルゴリズムにおて、TargetA261及びTargetBからCurrentLine260を決定するため、ターゲット261、262と、ターゲットAの位置との間でΔrow(264)及びΔcolumn(263)を計算することが必要である。Δrow及びΔcolumnを加算することにより、Target0からTarget1、以下同様、へ移動することが可能になる。検出された(実際に検出されたならば)TargetNの位置は、直線上のTargetNの計算された予測位置と比較することができ、許容範囲内に収まるならば、TargetNは直線上にあることが判定される。
【0410】
Δrow及びΔcolumnは、
Δrow = (rowTargetA - rowTargetB)/(B
- A)
Δcolumn = (columnTargetA- columnTargetB)/(B-A)
により計算される。次に、Target0の位置を、
row = rowTargetA - (A * Δrow)
column = columnTargetA - (A * Δcolumn)
により計算する。
【0411】
また、(row, column)を実際のrowTarget0及びcolumnTarget0と比較する。ある予測ターゲットから次のターゲット(例えば、Target0からTarget1)へ移動するためには、Δrow及びΔcolumnをそれぞれrow及びcolumnに加算すればよい。各ターゲットが直線上にあるかどうかをチェックするため、Target0の予測位置を計算し、次に、各ターゲットの座標に対して1回の加算及び1回の比較を実行することが必要である。
【0412】
16個全てのターゲットと最大で90本の直線との比較の終了後、得られる結果は有効ターゲットを通る最良直線である。その直線が少なくとも8個のターゲットを通過するならば(即ち、MaxFound >= 8)、直線を形成するために十分なターゲットが検出されたことが認められるので、カードを処理することができる。最良直線の通過するターゲットが8個未満であるならば、カードは無効であると見なされる。
【0413】
結果として生じるアルゴリズムは、Δrow及びΔcolumnを計算するための180回の除算と、Target0の位置を計算するための180回の乗算/加算と、2880回の加算/比較と、を要する。この処理を実行するための時間は、36列の画素データを読み出すために要する時間、即ち、3374892nsである。加算は除算よりも所要時間が短いという事実までを考慮しない場合、3240回の数学的演算を3374892ns内に実行しなければならない。これは、1演算当たりに約1040ns、即ち、104サイクルに相当する。したがって、CPUは、ターゲットの全ての処理を無事に実行することが可能であり、設計の複雑さは低減される。
【0414】
データエッジ境界及びクロックマークに基づく重心の更新
ステップ0:データエリアの位置検出
Target0(図38の241)からデータエリアの左上境界244までの行及び列に関する距離は所定の固定距離であり、更に、垂直クロックマーク276までには1ドットの列がある。したがって、前の段階で見つかったTargetA、Δrow及びΔcolumn(Δrow及びΔcolumnはターゲット間の距離を表す)は、上述のようにTarget0の重心又は予測位置を計算するため使用される。
【0415】
Target0からデータエリアまでの固定画素オフセットはターゲット間の距離(ターゲット間は192ドット、Target0とデータエリア243の間は24ドット)と関連付けられるので、単に、Δrow/8をTarget0の重心の列座標に加算すればよい(ドットのアスペクト比は1:1)。最上部座標は、
(columnDotColumnTop= columnTarget0
+ (Δrow/8)
(rowDorColumnTop= rowTarget0
+ (Δcolumn/8)
として定義される。
【0416】
次のΔrow及びΔcolumnは、ターゲット間のドット数によってそれらを除算することにより、(ターゲット間ではなく)単一列内のドット間の画素数を与えるために更新される:
Δrow = Δrow/192
Δcolumn = Δcolumn/192
更に、currentColumnレジスタ(フェーズ2を参照)には−1をセットすることにより、ステップ2の後、フェーズ2が開始したとき、currentColumnレジスタは−1から0へインクリメントする。
【0417】
ステップ1:初期重心デルタ(Δ)及びビット履歴の書き出し
これは、フェーズ2のために必要なセットアップ情報を書き込むだけである。
【0418】
これは、各行のすべてのΔrow及びΔcolumnのエントリーと、ビット履歴に0を書き込むことによって実現できる。ビット履歴は実際には予測ビット履歴である。なぜならば、クロックマーク列276の左側には境界列277があり、その前には、白色エリアが存在することがわかっているからである。したがって、ビット履歴は、011、010、011、010等である。
【0419】
ステップ2:読み出された実際の画素に基づく重心の更新
ビット履歴は、予測クロックマーク及びデータ境界に従ってステップ1でセットアップされる。各ドット行の実際の重心は、予測データを実際の画素値と比較することによって、より正確にセットされる(初期的には0である)。重心更新機構は、フェーズ2のステップ3を実行するだけで実現される。
【0420】
フェーズ2−読み出された画素に基づくArtcardからのビットパターン検出及びバイトとしての書き込み
Artcard9からのドットは、3列に亘って検出された少なくとも9個の画素が提示されることを要求するので、検出された画素列毎にドット検出計算を実行するポイントは殆ど無い。処理に要する時間は、平均ドット出現に亘って平均化し、利用可能な処理時間を最大化した方がよい。これにより、Artcard9からのドットの列の処理を、Artcardから3列のデータを読み出すために要する時間内に収めることが可能になる。最も可能性の高いケースでは、ドットを提示するために4列を要するが、4番目の列は、あるドットの最後の列であり、且つ次のドットの最初の列である。したがって、処理は3列だけに制限されるべきである。
【0421】
CCDからの画素は、利用可能な時間の13%内でDRAMに書き込まれるので、83%の時間、即ち、93747*3の83%=281241nsの83%=233430nsは、ドットの1列を処理するために利用可能である。
【0422】
利用可能な時間内に、3150ドットを検出し、それらのビット値をメモリの生データエリアに書き込むことが必要である。したがって、この処理は以下のステップを必要とする:
Artcard上のドットの列毎に、
ステップ0:次のドット列へ進む;
ステップ1:Artcardドット列の上端及び下端を検出する(クロックマークをチェックする);
ステップ2:ドット列を処理し、ビットを検出し、ビットを適切に記憶する;
ステップ3:重心を更新する。
【0423】
Artcardの論理的なドット列を処理し、論理的なドット列は165画素に亘ってシフトする可能性があるので、最悪のケースでは、少なくとも165列がDRAMに読み込まれるまで、最初の列を処理できない。したがって、フェーズ2は、読み出しプロセスが終了した後、同じ時間で終了する。最悪ケースの時間は、165*93747ns=15468255ns、即ち、0.015秒である。
【0424】
ステップ0:次のドットへ前進
次のドットの列へ進むため、Δrow及びΔcolumnをdotColumnTopに加算し、列の上端のドットの重心を得る。最初にこれを行うとき、ビットイメージ画像データエリアの左側のクロックマーク列276の所にいるので、第1のデータ列へ進む。Δrow及びΔcolumnは、1列内のドット間の距離を表すので、ドット列の間を移動するために、ΔrowをcolumndotColumnTopに加算し、ΔcolumnをrowdotColumnTopに加算することが必要である。
【0425】
処理中の列番号を追跡するため、列番号は、CurrentCoulmnという名称のレジスタに記録される。センサが次のドット列へ進むたびに、CurrentColumnレジスタをインクリメントする必要がある。CurrentColumnレジスタが最初にインクリメントされとき、それは、−1から0へインクリメントされる(フェーズ1のステップ0を参照)。CurrentColumnレジスタは、(maxColumnsに達したときに)読み出しプロセスを終了するときを決定し、(8ドット列毎に1回ずつ)8ビット全部がバイトに書き込まれた後、DataOutPointerを次のバイト情報の列へ進めるために使用される。下位3ビットは、現在のバイトにどのビットまで入るかを決定する。
【0426】
ステップ1:Artcardドット列の上端及び下端の検出
Artcardからのドット列を処理するため、列の上端及び下端を検出することが必要である。列は、(局所的な歪み等を除いて)列の上端と下端の間に直線を形成すべきである。初期的に、dotCoulumnTopはクロックマーク列276を指定する。予測値をトグルさせ、予測値をビット履歴に書き込み、ステップ2へ進むだけでよく、その最初のタスクは、列の最初のデータドットに到達するため、Δrow及びΔcolumnの値をdotColumnTopに加算することである。
【0427】
ステップ2:Artcardのドット列を処理
列の上端及び下端の重心が画素座標に与えられたならば、列は、それらの間に歪み等を原因とする変動ができる限り少ない直線を形成する。
【0428】
処理が列の上端(上端重心座標)でスタートし、列の下端へ下がる場合を想定すると、後続の予測ドット重心は、
rownext= row + Δrow
columnnext= column + Δcolumn
として与えられる。
【0429】
これは、列の次のドットの予測重心のアドレスを与える。しかし、局部的な歪み及び誤差を考慮するため、直前に所定の行で検出したドットに基づく別のΔrow及びΔcolumnを加算する。このようにして、列の上端から下端を繋ぎ合わせる直線からあるパーセンテージの最大のドリフトに累積する小さいドリフトを考慮することができる。
【0430】
したがって、行毎に2個の値を保持するが、行履歴はこのフェーズのステップ3で使用されるので、それらの2個の値は別々のテーブルに格納する:
*Δrow及びΔcolumn(それぞれ2@4ビット=1バイト);
*行履歴 (1行毎に3ビット、1バイト当たり2行が格納される)。
【0431】
行毎に、重心への変化を決定するため、Δrow及びΔcolumnを読み出すことが必要である。読み出しプロセスは、帯域幅の5%と2個のキャッシュラインを要する:
76*(3150/32)+2*3150=13824ns=帯域幅の5%。
【0432】
重心が決定されると、重心の周辺画素は、ドットの状態、即ち、ビットの値を検出するために調べられる。換言すると、ドットは、4×4画素のエリアを覆う。しかし、ドットの解像度の3倍の解像度でサンプリングしているので、ドットの状態、即ち、ビットの値を検出するために必要な画素数はこれよりも遙かに少ない。1回につきアクセスすべき画素列は、3列に過ぎない。
【0433】
1%の回転による画素ドリフトのある最悪ケースでは、重心は57画素行毎に1列ずつシフトするが、ドットの直径が3ドットであるため、ある列は、171画素行(3*57)に対して有効であろう。1バイトは2画素を含むので、各バッファ読み出し(4個のキャッシュライン)で有効なバイト数は、最悪の場合に(128の読み出しのうちの)86であろう。
【0434】
ビットが検出されると、ビットはDRAMへ書き出すことが必要である。DRAM遅延を最小限に抑えるため、8列からのビットが隣接したバイトのセットとして格納される。所与のドット列からの全てのビットは、データバイト内の次のビット位置に対応するので、そのバイトの古い値を読み出し、新しいビット内でシフトしOR演算し、そのバイトを書き戻すことが可能である。
【0435】
読み出し/シフト及びOR演算/書き込みプロセスは2個のキャッシュラインを必要とする。
【0436】
所定の行に対するビット履歴を更新するとき、そのビット履歴を読み出し、書き込むことが必要である。1行当たりに必要なビット履歴は3ビットだけであり、2行の履歴を単一バイトに格納することが可能である。読み出し/シフト及びOR演算/書き込みプロセスは2個のキャッシュラインを必要とする。
【0437】
ビット検出及び蓄積のために要する総帯域幅は以下の表に掲載されている。
【0438】
【表46】
Figure 2001523900
ドットの検出
重心を与えるドットの値(即ち、ビットの値)を検出するプロセスは、3個の画素値を検査し、ルックアップテーブルから結果を取得することによって実現される。この処理は、かなり簡単であり、図42に示されている。ドット290の半径は約1.5画素である。したがって、重心を支える画素291は、その画素内の重心の実際の位置とは無関係に、完全にそのドット値であろう。重心が画素291の中心と正確に一致するならば、重心画素の上画素292及び下画素293、並びに、重心画素の左画素294及び右画素295は、大部分そのドット値であろう。重心が画素295の正確な中心から離れているならば、中心画素以外の画素がそのドットによって100%覆われる可能性が高い。
【0439】
図42には、中心の左及び下へ偏っている重心だけが示されているが、同じ関係が中心の上側及び右側の重心に対しても成り立つことは明白である。ケース1では、重心は、中央画素295の中心と正確に一致する。中心画素295はそのドットによって完全に覆われ、上、下、左、及び右の画素もそのドットによって十分に覆われている。ケース2では、重心は、中央画素291の中心の左側にある。中心画素は、依然としてドットによって完全に覆われ、中心の左の画素294はドットによって完全に覆われている。上画素292及び下画素293は依然として十分に覆われている。ケース3では、重心は、中央画素291の中心の下側にある。中心画素291は、依然としてドット291によって完全に覆われ、中心の左の画素はドットによって完全に覆われている。中心の左画素294及び右画素295は依然として十分に覆われている。ケース4では、重心は中央画素の中心の左下にある。中心画素291は依然としてドット291によって完全に覆われ、中心の左画素294、及び中心の下画素294はドットによって完全に覆われている。
【0440】
重心を更新するアルゴリズムは、以下の3個の代表的な画素を選択し、ドットの値を決定するため、中央画素291の中心から重心までの距離を使用する:
第1画素:重心を含む画素
第2画素:重心のX座標(列値)が<1/2である場合、第1画素の左側の画素であり、さもなければ、第1画素の右側の画素
第3画素:重心のY座標(行値)が<1/2である場合、第1画素の上側の画素であり、さもなければ、第1画素の下側の画素。
【0441】
図43に示されるように、各画素の値は、予め計算されたルックアップテーブル301へ出力される。3個の画素は12ビットのルックアップテーブルへ供給され、このルックアップテーブルはドットの値、即ち、オン又はオフを示す単一ビットを出力する。ルックアップテーブル301は、チップ定義時に構築され、約500ゲートにまとめられる。ルックアップテーブルは、簡単な閾値テーブルでもよいが、但し、中心画素(第1画素)は重く重み付けされる。
【0442】
ステップ3:列において行毎に重心Δsの更新
Δs処理の考え方は、現在列において、行毎に予測重心位置で完全なドットを生成するため、前のビット履歴を使用することである。実際の(CCDからの)画素は、予測完全画素と比較される。両方が一致する場合、実際の重心位置は正確に予測位置に含まれるので、重心Δsは有効であり、更新する必要がない。さもなければ、予測重心位置を実際のデータに最も良く適合させるため、重心Δsを更新するプロセスを行うことが必要である。新しい重心Δsは次の列のドットを処理するために使用される。
【0443】
重心Δsの更新は、下記の理由で、ステップ2からの後続のプロセスとして実行される:なぜならば、
設計の複雑さを軽減し、それにより、十分な帯域幅が残っているフェーズ1のステップ2として実行でき、DRAMバッファを再使用できるようになり、
重心更新に必要な全てのデータが特殊なパイプライン化を行うことなく、プロセスのスタート時に利用できることが保証されるからである。
【0444】
重心Δは、複雑さを低減するため、Δcolumn及びΔrowとして処理される。
【0445】
所与のドットは直径が3ドットであるが、4×4の画素エリアに出現する可能性が高い。しかし、あるドットのエッジは、結果的に、次のドットのエッジと同じ画素に含まれる。このため、重心更新のためには、所与の単一ドットに関する情報以外の情報が必要である。
【0446】
図44には、前の列からの単一のドット310が所与の重心311と共に示されている。本例では、ドット310は、4個の画素列312から315の範囲にΔが広がり、実際上、前のドット列のドット(座標=(Prevcolumn,
CurrentRow))の一部は、現在行のドットの現在列に入り込んでいる。現在の行及び列のドットが白色であるならば、前の列のドットからのドット情報(現在の列のドットは白色)しか存在しないので、前のドット列から最も右側にある画素列314は小さい値であると予測される。このことから、この画素列315における画素値が高くなればなるほど、重心がより右側になることがわかる。勿論、右側のドットも黒色であるならば、サブピクセルから情報を獲得できないので、重心を調整することができる。同様のことは、ドット座標(Prevcolumn, CurrentRow)における左、上及び下のドットについても成り立つ。
【0447】
このことから、最大で5個の画素列及び画素行が必要であることがわかる。行及び列の重心Δsを別々に考慮し、それらを90度だけ回転した同じ問題として取り扱うことにより、状況を簡単化することが可能である。
【0448】
水平方向のケースを最初に説明すると、予測画素が検出画素と一致しない場合、列重心Δsを変更することが必要である。ビット履歴から、現在ドット列の現在行に対して見つかったビットの値、直前のドット列、及び二つ前のドット列がわかる。予測重心位置もわかっている。これらの二組の情報を使用することにより、読み出しが完全であるならば、20ビットの予測ビットパターンを生成することが可能である。20ビットのビットパターンは水平方向次元で5画素毎の予測Δ値を表現する。1番目のニブルは、最も左側のドットの最も右側の画素を表現する。次の3個のニブルは、前の列からドット310の中心を通る3画素を表現し、最後のニブルは(現在列から)最も右側のドットの最も左側の画素317を表現する。
【0449】
予測重心が画素の中心である場合、20ビットパターンは以下の表に基づくことが予測される。
【0450】
【表47】
Figure 2001523900
中心ドットの左側及び右側の画素は、ビットが0であるか、又は1であるかに応じて、それぞれ、0又はDである。中心の3画素は、ビットが0であるか、又は1であるかに応じて、それぞれ、000又はDFDである。これらの値は、所与の画素に対してドットによって占められた物理的なエリアに基づいている。画素の正確な中心から重心までの距離に依存して、僅かにシフトしたデータを予測し、これは、実際に中心画素の両側の画素だけに影響を与える。16通りの可能性があるので、中心からの距離を16で除算し、予測画素をシフトさせるためその量を使用することができる。
【0451】
20ビットの5個の画素予測値が決定されると、それは読み出された実際の画素と比較される。これは、画素単位で、読み出された実際の画素から予測画素を減算し、最後に、予測Δ値からの距離を獲得するため、それらの差をまとめて加算することにより行われる。
【0452】
図45は、上記アルゴリズムを実現する一形態の説明図であり、ビット履歴322及び重心小数コンポーネント323を受け取り、対応した20ビットの数324を出力するルックアップテーブル320が含まれ、20ビットの数324は、中心画素入力326から減算321され、画素差327が生成される。
【0453】
このプロセスは、予測重心に関して、Δcolumnの量1による重心の左シフト及び右シフトに対して1回ずつ実行される。実際の画素からの差が最も小さい重心は、「勝者」であると見なされ、それに応じてΔcolumnが更新される(「変更無し」が望ましい)。その結果として、Δcolumnは、ドット列毎に1よりも大きく変更されることはない。
【0454】
このプロセスは垂直方向画素に対しても繰り返され、その結果としてΔrowが更新される。
【0455】
ここで、並列化できる見通しはかなり高い。ACPユニット31に対して選択されたクロックのレートに依存して、これらのユニットは直列に配置することができ(これにより、3種類のΔのテストは連続したクロックサイクルで行われる)、又は並列に配置することができ、これにより、3種類のテストを同時に行うことができる。クロックレートが十分に高速であるならば、並列化の必要性はない。
【0456】
帯域幅初期化
Δsの古いΔを読み出し、それらを再度書き出すことが必要である。これは、帯域幅の10%を要する:
2*(76(3150/32)+2*3150)=27648ns=帯域幅の10%。
【0457】
Δsを更新するとき、所与の列のビット履歴を読み出すことが必要である。各バイトは2個の行のビット履歴を含むので、帯域幅の2.5%を要する:
76((3150/32)/2)32)+2*(3150/2)=4085ns=帯域幅の2.5%。
【0458】
1%の回転によって画素がドリフトする最悪ケースでは、重心は57画素行毎に1列だけシフトするが、ドットの直径は3画素であるため、所与の画素列は、181画素行(3*57)に対して有効である。バイトは2画素を収容するので、キャッシュ読み出しにおいて有効なバイト数は最悪のケースで(128回の読み出しのうちの)86である。5列に対する最悪ケースのタイミングは、したがって、31%帯域幅である:
5*(((9450/(128*2))*320)*128/86)=88112ns=帯域幅の31%。
【0459】
重心Δを更新するために必要な総帯域幅は以下の表に掲載されている。
【0460】
【表48】
Figure 2001523900
フェーズ2のメモリ使用量
2MBのビットイメージDRAMエリアは、フェーズ2処理中に読み書きされる。2MB画素データDRAMエリアは読まれる。
【0461】
0.5MBのスクラッチDRAMエリアは行データを格納するため使用される。即ち、
【0462】
【表49】
Figure 2001523900
フェーズ3−生データのスクランブル解除及びXOR演算
図37を参照すると、復号化の次のステップは、生データのスクランブル解除及びXOR演算である。Artcardから取得されるような2MBバイト画像は、スクランブル処理され、XOR演算された形式である。これは、フェーズ4におけるリード・ソロモンデコーダに必要なビットイメージを得るためにスクランブル解除及び再XOR演算を必要とする。
【0463】
図46を参照すると、スクランブル解除プロセス330は、2MBのスクランブル付きのバイト画像331を取得し、スクランブル解除された2MB画像332を書き込む。このプロセスは、同じ場所で合理的に実行することが不可能であるため、2組の2MBエリアが利用される。スクランブル付きのデータ331は、16×16配列に並べられたシンボルブロック順であり、シンボルブロック0(334)は、ランダムな順序の、あらゆる符号語からの全てのシンボル0を含む。シンボルブロック1は、ランダムな順序で全ての符号語からの全てのシンボル1を含み、以下同様である。255個のシンボルしかないので、256番目のシンボルブロックは、現時点では使用されない。
【0464】
線形フィードバックシフトレジスタは、シンボルブロック、例えば、シンボルブロック334内の位置と、そのシンボルブロックが由来する符号語、例えば、符号語355との間の関係を決定するため使用される。これは、元のArtcard画像を生成したときと同じシードが使用される限り機能する。時間のボトルネックは、DRAMの非順次アドレスへの読み出し/書き込みの準備完了を待機することであるため、他のソースラインからのバイトと、0xAA及び0x55とのXOR演算は、(時間的に)実質的に制約がない。
【0465】
スクランブル解除及びXOR演算プロセスのタイミングは、実質的に、2MBのランダムバイト読み出しと、2MBのランダムバイト書き込みであり、即ち、
2*(2MB*76ns+2MB*2ns)=327155712ns、つまり、約0.33秒である。このタイミングはキャッシュ処理を想定していない。
【0466】
フェーズ4−リード・ソロモン復号
このフェーズはループであり、ビットイメージ内のデータのコピーに対して繰り返され、復号が成功するか、又は復号しようとするコピーが無くなるまで、データのコピーをリード・ソロモン復号モジュールへ送る。
【0467】
使用されるリード・ソロモンデコーダは、適切にプログラミングされたVLIWプロセッサでもよく、或いは、LSIロジックのL64712のような別個のハードワイヤードでもよい。L64712は、1秒当たり50Mビット(毎秒約6.25MB)のスループットを備えているので、時間は、2MBの読み出し及び1MBの書き込みのためのメモリアクセス時間(順次アクセスの場合500MB/秒)ではなく、むしろ、リード・ソロモンデコーダの速度によって制約される。最悪ケースで要する時間は、2/6.25秒=約0.32秒である。
【0468】
フェーズ5 Varkスクリプトの実行
Artcard9を読み出し、それを復号化するために要する総時間は、約2.15秒である。ユーザにとっての明らかな遅れは、実際には、0.65秒(フェーズ3及び4の合計)に過ぎない。なぜならば、Artcardは、1.5秒後に動きを止めるからである。
【0469】
Artcardがロードされると、Artvarkスクリプトは解釈される。直ちにスクリプトを実行するのではなく、スクリプトは、「プリント」」ボタン13(図1)を押したときに限り実行される。スクリプトを実行するために取られる措置は、スクリプトの複雑さに大きく依存し、プリントボタン及び実際のプリントボタンを押下し、実際のプリントが行われるまでの間に認識される遅れを考慮しなければならない。
【0470】
代替Artcardフォーマット
勿論、他のartcardのフォーマットも考えられる。以下では、多数の好適な特徴を備えたこのような新しい代替artcardフォーマットについて説明する。以下では、代替Artcardデータフォーマット、ユーザデータを代替Artcard上のドットにマッピングする機構、及びリソースが不足している組込型システムで使用するための高速代替Artcard読み出しアルゴリズムを説明する。
【0471】
代替Artcardの概要
代替Artcardは、組込型アプリケーション及びPC型アプリケーションの両方で使用され、大容量のデータ又はコンフィギュレーション情報への使い易いインタフェースを提供する。
【0472】
代替Artcardの裏面は(データを保存するので)アプリケーションとは無関係に同一の外観を有するが、代替Artcardの表面はアプリケーションに依存している。表面はアプリケーションとの関係においてユーザに意味がなければならない。
【0473】
代替Artcard技術は、印刷解像度とは独立にすることができる。カード上にドットとしてデータを保存する考え方は、(解像度を上げることによって)同じ空間により多くのドットを配置することができるならば、それらのドットがより多くのデータを表現し得るということを意味するに過ぎない。好適な実施例は、例示的なArtcardとしての86mm×55mmカード上で1600dpiの印刷を利用することを想定するが、他の等価的なレイアウト、他のカードサイズのためのデータサイズ、及び/又は、他の印刷解像度に決定することは容易である。印刷解像度とは無関係に、読み出し技術はそのまま維持される。全ての復号化及びその他のオーバーヘッドを考慮した後、代替Artcardは、1600dpiまでの印刷解像度で、最大で1メガバイトのデータを保存することが可能である。代替Artcardは、1600dpiを超える印刷解像度で、数メガバイトのデータを保存することが可能である。以下の二つの表は、ある印刷解像度に対する代替Artcardの実効データ記憶容量を要約するものである。
【0474】
代替Artcardのフォーマット
代替Artcard上のデータ構造は、データの復元を補助するため特別に設計されている。このセクションは代替Artcardのデータ(裏)面のフォーマットを説明する。
【0475】
ドット
代替Artcardのデータ面のドットはモノクロでもよい。例えば、黒色ドットが、所定の望ましい印刷解像度で白色背景に印刷される。その結果として、「黒色ドット」は物理的に「白色ドット」から区別される。図47には、黒色ドット及び白色ドットの拡大図の様々な例が示されている。白色背景上の黒色ドットのモノクロ方式は、好ましくは、ブラー効果のある読み出し環境においてダイナミックレンジを最大にするために選択される。黒色ドットが特定のピッチ(例えば、1600dpi)で印刷されているとしても、ドット自体は、ドットが隣接させて印刷されたときに、隣接した直線が作成されるように、少し大きくされる。ドットは、実際には滲みの結果として一つに併合されるかもしれないが、図47の例示的な画像では併合されていない。黒色のキザキザはもっと取り除かれるであろう。好適な実施例に記述された代替Artcardは、ドットサイズの柔軟に変化することを許容するが、最良の結果を得るためには、正確なドットサイズ、及び特定の印刷技術用のインク/印刷動作をより詳細に調べるべきである。
【0476】
このArtcardの実施例の説明中、用語ドットは、代替Artcard上に物理的に印刷されたドット(インク、熱、電子写真、ハロゲン化銀等)を意味する。代替Artcardリーダーが代替Artcardを走査するとき、ドットは、ナイキストの定理を充たすために、少なくとも印刷された解像度の2倍でサンプリングされる必要がある。用語画素は、代替Artcardリーダー装置からのサンプル値を意味する。例えば、1600dpiのドットが4800dpiで走査されるとき、ドットの各次元に3個の画素、即ち、1ドット当たりに9個の画素が存在する。サンプリングプロセスは後述される。
【0477】
図48を参照すると、典型的な代替Artcardのデータ面1101が示されている。各代替Artcardは、白色境界領域1103によって囲まれた「アクティブ」領域1102により構成される。白色境界1103は、データ情報を格納しないが、代替Artcardリーダーによってホワイトレベルを較正するため使用される。アクティブ領域は、データブロック、例えば、1104の配列であり、各データブロックは、8個の白色ドット、例えば、1106のギャップによって隣のデータブロックから分離されている。印刷解像度に依存して、代替Artcard上のデータブロック数は変化する。1600dpiの代替Artcard上で、配列は8×8でもよい。各データブロック1104は、627×394ドットの次元を有する。ブロック間ギャップ1106が8白色ドットである場合、代替Artcardのアクティブエリアは、5072×3208ドット(1600dpiのとき、8.1mm×5.1mm)である。
【0478】
データブロック
図49を参照すると、単一のデータブロック1107が示されている。代替Artcardのアクティブ領域は、同一構造のデータブロック1107の配列により構成される。各データブロックの構造は、クロックマーク1109によって囲まれたデータ領域1108と、境界1110と、Target1111である。データ領域は、符号化データだけを含み、クロックマーク、境界、及びターゲットは、特に、データ領域の位置検出を補助し、領域内からのデータの正確な復元を保証するために設けられる。
【0479】
各データブロック1107の次元は、627×934ドットである。この中で、595×384ドットの中央エリアはデータ領域1108である。周囲ドットは、クロックマーク、境界、及びターゲットを保持するため使用される。
【0480】
境界及びクロックマーク
図50はデータブロックを示し、図51及び図52は、そのデータブロックの拡大エッジ部分を示す。図51及び図52に示されるように、二つの5ドット高の境界及びクロックマーク領域1170及び1177が各データブロックに存在し、一方はデータ領域の上方に、もう一方はデータ領域の下側にある。例えば、上端の5ドット高領域は、(データブロックの長辺を引き延ばす)外側黒色ドット境界線1112と、(境界線が独立していることを保証する)白色ドット分離線1113と、3ドット高のクロックマークの組1114と、により構成される。クロックマークは、白色及び黒色行の間で交互に代わり、黒色ブロックの両端から8番目の列で黒色クロックマークから始まる。クロックマークドットとデータ領域内のドットとの間は分離されていない。
【0481】
クロックマークは、代替Artcardが180度回転させて挿入された場合に、同じ相対的な境界/クロックマーク領域が出現するという点で対称性がある。境界1112、1113は、データがデータ領域から読み出されるときに、垂直方向に追従するため、代替Artcardが使用することを意図されている。クロックマーク1114は、データがデータ領域から読み出されるときに、水平方向に追跡することが意図されている。白色のドット直線による境界とクロックマークの分離は、読み取り中にブラー効果が発生する結果として望ましい。境界は、このようにして、両側が白色の黒色直線になり、読み出し時の周波数応答の改良に役立つ。白色と黒色の間で交互に代わるクロックマークは、垂直次元ではなく、水平次元である点を除いて、類似した結果を生ずる。任意の代替Artcardは、追跡のために使用することを意図しているならば、クロックマーク及び境界の位置を見つけなければならない。次のセクションは、クロックマーク、境界及びデータへの方向を示すため設計されたターゲットを取り扱う。
【0482】
ターゲット領域内のターゲット
図54に示されるように、二つの15ドット幅のターゲット領域1116及び1117が各データブロックに存在する。一方はデータ領域の左側に存在し、他方はデータ領域の右側に存在する。ターゲット領域は、方位のため使用される1列のドットによってデータ領域から分離される。ターゲット領域1116及び1117の目的は、クロックマーク、境界、及びデータ領域までの進み方を指定することである。各ターゲット領域は、6個のターゲット、例えば、1118を含み、6個のターゲットは、代替Artcardリーダーによって簡単に検出できるように設計される。次に、図53を参照すると、単一Target1120の構造が示されている。各Target1120は、15×15ドットの黒色正方形であり、中心構造1121とランレングス符号化ターゲット番号1122と、を含む。中心構造1121は、単純な白色十字であり、ターゲット番号コンポーネント1122は、単純な2列の白色ドットであり、各列はターゲット番号の各部分に対し2ドットの長さである。したがって、ターゲット番号1のターゲットidの1122は2ドットの長さであり、ターゲット番号2のターゲットidの1122は4ドット幅であり、以下同様に続く。
【0483】
図54に示されるように、ターゲットは、カード挿入に関して回転不変性を有するように配置される。即ち、左のターゲットと右のターゲットは、180度回転している点を除いて同じである。左のターゲット領域1116において、ターゲットは、Target1から6が上端から下端へそれぞれ位置決めされるように配置される。右のターゲット領域において、ターゲットは、ターゲット番号1から6が下端から上端へ位置決めされるように配置される。ターゲット番号idは、常に、データ領域までの半分のところにある。図54の拡大部分図は、右のターゲットが、180度回転している点を除いて、左のターゲットと同一である様子を明瞭に示している。
【0484】
図55に示されるように、Target1124及び1125は、特に、中心が55ドット離されてターゲット領域内に配置される。その上、Target1(1124)の中心から上部クロックマーク領域の第1のクロックマークドット1126までの距離は55ドットであり、ターゲットの中心から下部クロックマーク領域の第1のクロックマークドット(図示せず)までの距離は55ドットである。両方の領域の第1の黒色クロックマークは、ターゲット中心とちょうど一致して始まる(8番目のドット位置は15ドット幅のターゲットの中心である)。
【0485】
図55の略構成図には、ターゲット中心の間の距離と、上部境界/クロックマーク領域内オンTarget1(1124)から第1の黒色クロックマーク(1126)の第1のドットまでの距離が示されている。上部及び下部の両方のターゲットからクロックマークまでの距離は55ドットであり、代替Artcardの両側は対称性があるため(180度回転しているため)、カードは、左から右へ、又は右から左へ読み出される。読み出し方向とは無関係に、方位はデータ領域からデータを抽出するため決定する必要がない。
【0486】
方位列
図56に示されるように、各データブロックには2個の1ドット幅の方位列1127及び1128が存在する。一方はデータ領域の直ぐ左側にあり、他方はデータ領域の直ぐ右側にある。方位列は、代替Artcardリーダーに方向情報を与えるため設けられる。(左ターゲットの右にある)データ領域の左側には、単一の白色ドット列1127が隣接する。(右ターゲットの左にある)データ領域の右側には、単一の黒色ドット列1128が隣接する。ターゲットは回転不変性があるので、これらの二つのドット列によって、代替Artcardリーダーは、代替Artcardの方向、即ち、カードが正しく挿入されたか、又は逆向きに挿入されたかを決定できるようになる。代替Artcardの観点からは、ドットの劣化が無いと仮定すると、次の二つの可能性が存在する。即ち:
*データ領域の左側のドット列が白色であり、データ領域の右側の列が黒色であるならば、リーダーは、カードが書き込まれたときと同じように挿入されたことを認識する;
*データ領域の左側のドット列が黒色であり、データ領域の右側の列が白色であるならば、リーダーは、カードが後ろ向きに挿入され、データ領域がそれに応じて回転していることを認識する。リーダーは、代替Artcardから正しく情報を復元するため、適切な動作を選択しなければならない。
【0487】
データ領域
図57に示されるように、データブロックのデータ領域は、各列が384ドットを含む595列により構成され、全部で228480ドットがある。これらのドットは、原データを得るために、解釈され、復号化される。各ドットは単一ビットを表現するので、228480ドットは228480ビット、即ち、28560バイトを表現する。各ドットの解釈は以下の通りである。
【0488】
【表50】
Figure 2001523900
しかし、ドットから得られたビットの実際の解釈は、原データから代替Artcardのデータ領域内のドットへのマッピングの理解が必要である。
【0489】
原データのデータ領域ドットへのマッピング
次に、最大サイズが910082バイトの原データファイルを取得し、それを、1600dpi代替Artcard上の64個のデータブロックのデータ領域内のドットへマッピングするプロセスを説明する。代替Artcardリーダーは、代替Artcard上のドットから原データを抽出するためこのプロセスを逆転するであろう。一見して、データをドットにマッピングすることは簡単なことに思われ、即ち、2値データは1と0により構成されるので、黒色ドット及び白色ドットを簡単にカードに書き込むことができるであろう。しかし、この方式は、インクがフェイドし、カードの一部がごみ、汚れ、或いは、場合によっては傷によって損なわれることを許容しない。誤り検出符号化を行わない限り、カードから取得されたデータが正確であるかどうかを検出する方法は無い。更に、冗長符号化を行わない限り、検出された誤りを正す方法はない。したがって、マッピングプロセスの目的は、データ復元を非常に確実に行い、代替Artcardリーダーに、データを正しく読み出したことを認識する能力を与えることである。
【0490】
原データファイルをデータ領域ドットへマッピングするために、以下の三つの基本的なステップが関係する:
*原データを冗長符号化する;
*局部的に生じた代替Artcardの損傷の影響を低減するため、符号化データをシ決定論的にャッフルする;
*シャッフルされた符号化データをドットとして代替Artcardのデータブロックに書き込む。
【0491】
これらの各ステップは以下のセクションで詳細に考察される。
【0492】
リード・ソロモン符号化を使用する冗長符号
データの代替Artcardへのマッピングは、冗長符号化を利用する方法に大きく依存している。バースト誤りを取り扱い、最小限の冗長性で効率的に誤りを検出し訂正する能力を備えているリード・ソロモン符号化を選択する方が好ましい。リード・ソロモン符号化は、Wicker,
S. と Bhargava, V. による''Reed−Solomon Codes and
their Application'', IEEE Press, 1994、Rorabaugh, Cによる''Error Coding Cookbook'', McGraw−Hill,
1994、及びLyppens, H.による''Reed−Solomon Error Correction'', De. Dobb's Journal, Volume 22,
Issue 1, January 1997のような標準的なテキストで適切に説明されている。
【0493】
リード・ソロモン符号化用の様々なパラメータを使用することが可能であり、異なるシンボルサイズ及び異なる冗長性レベルが含まれる。好ましくは、以下の符号化パラメータ、
*m=8
*t=64
が使用される。
【0494】
m=8とすることは、シンボルサイズが8ビット(1バイト)であることを意味する。また、リード・ソロモン符号化されたブロックサイズnは255バイト(28−1シンボル)であることを意味する。最大でt個のシンボルの訂正を行うため、最終的なブロックサイズで2t個のシンボルが冗長シンボルを用いて採用されなければならない。t=64とすることは、誤りがある場合に、1ブロック毎に64バイト(シンボル)を訂正可能であることを意味する。255バイトの各ブロックは、128(2×64)冗長バイトを有し、残りの127バイト(k=127)は原データを保持するため使用される。このようにして、
*n=255
*k=127
である。
【0495】
実際の結果では、127バイトの原データが符号化され、255バイトブロックのリード・ソロモン符号化データが得られる。符号化された255バイトブロックは、代替Artcard上に記憶され、その後、代替Artcardリーダーの復号化によって元の127バイトに戻される。データブロックのデータ領域の単一列内の384ドットは、48バイト(384/8)を保持し得る。595列は28560バイトを保持し得る。これは、112個のリード・ソロモンブロックに達する(各ブロックは255バイトを含む)。完全な代替Artcardの64個のデータブロックは、全部で7168個のリード・ソロモンブロック(1リード・ソロモンブロック当たりに255バイトのとき、1827840バイト)を保持し得る。7168個のリード・ソロモンブロックのうちの2個は、制御情報のため確保されるが、残りの7166個はデータを記憶するため使用される。各リード・ソロモンブロックは127バイトの実際のデータを保持し、代替Artcard上に記憶できるデータの総量は910082バイト(7166×27)である。原データがこの総量未満である場合、データは、正確な個数のリード・ソロモンブロックに適合させるため、符号化することができ、次に、符号化されたブロックは、7166個の全てが使用されるまで複製可能である。図58は利用される符号化の全体的な形態の説明図である。
【0496】
2個の制御ブロック1132及び1133の各々は、残りの7166個のリード・ソロモンブロックを復号化するために必要な同じ符号化情報、即ち、
フルメッセージ(16ビット格納ロー/ハイ)中のリード・ソロモンブロックの個数と、
メッセージ(8ビット)の最後のリード・ソロモンブロック内のデータバイトの個数と、
を収容する。
【0497】
これらの2個の数は、32回繰り返され(96バイトを消費)、残りの31バイトは確保され、0にセットされる。各制御ブロックは、次に、リード・ソロモン符号化され、127バイトの制御情報は255バイトのリード・ソロモン符号化データに変換される。
【0498】
制御ブロックは、生き残る可能性を高くするため2回記憶される。その上、制御ブロック内のデータの繰り返しは、リード・ソロモン符号を使用する場合に特に重要である。間違いの無いリード・ソロモン符号化ブロックにおいて、データの最初の127バイトは、正しく原データであり、もし、制御ブロックが復号化に失敗したとき(64個を超えるシンボルに誤りがあるとき)、原メッセージを復元するために参照することができる。このようにして、制御ブロックが復号化に失敗した場合、2個の復号化パラメータの最も確からしい値を決定するために、3バイトのセットを検査することができる。復元可能であることは保証されないが、冗長性によって可能性は高くなる。例えば、制御ブロックの最後の159バイトが破壊され、最初の96バイトは完全に大丈夫である。最初の96バイトを参照すると、数字の繰り返しセットが見つかる。これらの数字は、残りの7166個のリード・ソロモンブロックにあるメッセージの残りの部分を復号化するため巧く利用することができる。
【0499】
一例として、正確に9967バイトのデータを含むデータファイルを想定する。必要なリード・ソロモンブロックの数は79個である。最初の78個のリード・ソロモンブロックは完全に利用され、9906バイト(78×127)が使用される。79番目のブロックには、61バイトのデータしか含まれない(残りの66バイトは全て0である)。
【0500】
代替Artcardは、7168個のリード・ソロモンブロックにより構成される。最初の2ブロックは制御ブロックであり、次の79ブロックは符号化データであり、次の79ブロックは符号化データの複製であり、次の79ブロックは符号化データの別の複製であり、以下同様に続く。79個のリード・ソロモンブロックを90回記憶した後、残りの56個のリード・ソロモンブロックは、79ブロックの符号化データのうちの最初の56ブロックの別の複製である(符号化データの最後の23ブロックは、代替Artcard上に十分な場所が存在しないので、これ以上記憶されない)。リード・ソロモン符号化される前の各制御ブロックデータ内の127バイトの16進表現が図59に示されている。
【0501】
符号化データのスクランブル処理
全ての符号化ブロックがメモリ内に隣接して格納されているならば、最大で1827840バイトのデータ(2個の制御ブロックと、7166個の情報ブロックとを合わせて全部で7168個のリード・ソロモン符号化ブロック)を代替Artcard上に記憶することができる。好ましくは、データは、この段階で代替Artcard上にそのまま記憶されるのではなく、即ち、1個のリード・ソロモンブロックの255バイトの全てがカード上で物理的に一体として記憶されるのではない。カードに物理的な破損を生じさせるごみ、汚れ、又は歪みは、一つのリード・ソロモンブロック内の64バイト以上を破壊する可能性があり、そのブロックは復元できなくなる。リード・ソロモンブロックの複製が無い場合、代替Artcardの全体を復号化し得ないことになる。
【0502】
これに対するソリューションは、代替Artcard上に多数のバイトが存在し、代替Artcardは合理的な物理サイズを有するという点を活かすことである。したがって、データはスクランブル処理され、一つのリード・ソロモンブロックからのシンボルが相互に接近しないことが保証される。勿論、カードが劣化する異状ケースでは、リード・ソロモンブロックを復元することは不可能であるが、平均的に、データのスクランブル処理によってカードを非常に頑強にすることができる。選択されたスクランブル方式は単純であり、図14に概略的に示されている。リード・ソロモンブロックからのバイト0の全ては、まとめて配置され(1136)、次に、全てのバイト1等も同様である。したがって、7168個のバイト0と、7168個のバイト1等が存在する。代替Artcard上の各データブロックは28560バイトを記憶することができる。この結果として、代替Artcard上の64個のデータブロックの各々に、各リード・ソロモンブロックからの約4バイトが収容される。
【0503】
このスクランブル方式の下では、代替Artcard上の16個のデータブロック全体に対する完全なダメージによって、1リード・ソロモンブロック毎に64個のシンボル誤りが生じる。即ち、代替Artcardにその他のダメージが無い場合、たとえデータの複製が無くても、全てのデータは完全に復元可能である。
【0504】
スクランブル処理された符号化データを代替Artcardへ書き込み
原データがリード・ソロモン符号化され、複製され、スクランブル処理されると、1827840バイトのデータを代替Artcardに記憶する必要がある。代替Artcard上の64個のデータブロックの各々は、28560バイトを記憶する。
【0505】
データは、単純に代替Artcardのデータブロックへ書き出されるので、第1のデータブロックはスクランブル付きデータのうちの最初の28560バイトを格納し、第2のデータブロックは次の28560バイトを格納し、以下同様に続く。
【0506】
図61に示されるように、データブロック内で、データは列に関して左から右へ書き込まれる。このため、データブロック内の最も左側の列は、28560バイトのスクランブル付きデータのうちの最初の48バイトを格納し、最後の列は、28560バイトのスクランブル付きデータのうちの最後の48バイトを格納する。列内では、バイトは、ビット7から始めて、同時に1ビットずつ、上から下へ書き込まれ、ビット0で終了する。ビットがセット(1)されている場合、黒色ドットが代替Artcardに配置され、ビットがクリア(0)されている場合、ドットは配置されず、カードの白色背景カラーのまま残される。
【0507】
例えば、1827840バイトのデータの組は、代替Artcardに記憶されるべき7168個のリード・ソロモン符号化ブロックをスクランブル処理することによって作成できる。最初の28560バイトのデータは最初のデータブロックに書き込まれる。最初の28560バイトのうちの最初の48バイトはデータブロックの最初の列に書き込まれ、次の48バイトは次の列に書き込まれ、以下同様に続く。28560バイトのうちの最初の2バイトが16進のD3
5Fである場合を想定する。バイト0のビット7が最初に格納され、次にビット6が格納され、以下同様に続く。次に、バイト1のビット7からバイト1のビット0までが格納される。各「1」は黒色ドットとして格納され、各「0」は白色ドットして格納されるので、これらの2バイトは、代替Artcard上では、以下のドットの組として表現され、
*D3(1101 0011)は、黒、黒、白、黒、白、白、黒、黒になり、
*5F(0101 1111)は、白、黒、白、黒、黒、黒、黒、黒になる。
【0508】
代替Artcardの復号化
このセクションは、代替Artcardから正確かつ確実な形で原データを抽出する処理を取り扱う。特に、前の章で説明した代替Artcardのフォーマットを前提として、代替Artcardから元の予め符号化されたデータを抽出する方法を説明する。
【0509】
代替Artcardを復号化する前提の一部として多数の一般的な考察が存在する。
【0510】
ユーザ
代替Artcardの目的は、様々なアプリケーションで使用するためのデータを保存することである。ユーザは、代替Artcardを代替Artcardリーダーに挿入し、データが「妥当な時間」内にロードされることを期待する。ユーザの観点からは、モーター輸送が代替Artcardを代替Artcardリーダーへ動かす。これは、問題となる遅れとしては認識されない。なぜならば、代替Artcardは動いているからである。代替Artcardが停止した後の時間は遅延として認識され、代替Artcard読み出し方式において最低限に短縮されるべきである。理想的な状態では、代替Artcardの全体が移動中に読み出され、これにより、カードの移動が停止した後に遅延が認識されない。
【0511】
好適な実施例の目的のため、代替Artcardを物理的にロードするための妥当な時間は1.5秒に決める。代替Artcardの移動が停止した後の付加的な復号化のための時間を最低限に短縮すべきである。代替Artcardのアクティブ領域は代替Artcardの表面の大部分を覆うので、時間的な関心をその領域に限定することができる。
【0512】
ドットのサンプリング
代替Artcard上のドットは、ナイキストの定理(Nyguist‘s Theorem)を充たすため、少なくとも印刷された解像度の2倍でCCDリーダー等によってサンプリングしなければならない。実際には、これよりも高いレートでサンプリングする方がよい。代替Artcardリーダーの環境では、ドットは、好ましくは、各次元に関してドットが印刷された解像度、即ち、単一ドットを定義するために9画素を必要とする解像度の3倍の解像度でサンプリングされる。代替Artcardのドットの解像度が1600dpiである場合、代替Artcardリーダーのイメージセンサは、4800dpiで画素を走査しなければならない。勿論、ドットがイメージセンサと正確に位置合わせされていない場合、図62に示されるような最悪の最も起こり易いケースでは、ドットは4×4画素エリアに亘って検出されるであろう。
【0513】
サンプリングされる各画素は1バイト(8ビット)である。各画素の下位2ビットは、有意なノイズを含む可能性がある。したがって、復号化アルゴリズムは、耐ノイズ性が要求される。
【0514】
位置合わせ/回転
ユーザが代替Artcardを回転なしに完全に位置合わせされた状態で代替Artcardリーダーに挿入する可能性は極めて低い。リーダーの入口及びモーター輸送のグリップにおけるある種の物理的制約は、挿入された後、代替ArtcardがCCDに対して挿入時の最初の角度で保たれることを保証する。好ましくは、この回転角度は、図63に示されるように最大で1度である。読み出しプロセス中にジッタ及びモーターのガタによって角度が僅かに外れる可能性はあるが、基本的に1度の限界内に収まると考えられる。
【0515】
代替Artcardの物理的寸法は86mm×55mmである。1度の回転は、86mmがCCDの下を通過したとき、カードの実効高さを1.5mm(86sin1°)だけ長くするので、必要なCCD長に影響を与える。
【0516】
代替Artcardの読み出しに対する1度の回転の影響は、CCDからの1本の走査線が代替Artcardからの多数の異なるドット列を含むことである。これは、画素の列に対するドットのドリフトを表した図63に拡大された形態で示されている。同図では誇張されているが、実際のドリフトは、57画素毎に最大で1画素列になる。
【0517】
代替Artcardが回転していないとき、単一のドット列は3本の画素走査線によって読むことができる。代替Artcardの回転が大きくなると、局部的な影響が増加する。読み出されるドットの数が増加すると、回転の影響が加わる時間が長くなる。これらの要因のうちのいずれかが増大すると、代替Artcard上の単一列から所定のドットの組を得るために読み出す必要がある画素走査線の数が増加する。以下の表は、特定の代替Artcard構造において単一のドット列のために必要な画素走査線の本数を示している。
【0518】
【表51】
Figure 2001523900
代替Artcardの全体を読むため、87mm(86mmと1°の回転による1mmの和)を読む必要がある。4800dpiの場合、これは、16252列の画素列に相当する。
【0519】
CCD(又はその他のリニアイメージセンサ)の長さ
CCD自体の長さは、
−代替Artcardの物理的高さ(55mm)
−物理的な代替Artcardの挿入時の垂直方向動き(1mm)
−最大1°の挿入時回転(86sin1°=1.5mm)
に適合しなければならない。
【0520】
これらの要因を組み合わせると、全体の長さは57.5mmになる。
【0521】
代替Artcardリーダーの代替ArtcardイメージセンサCCDが4800dpiで走査するとき、1本の走査線は10866画素である。簡単のため、この数字を11000画素に切り上げる。代替Artcardのアクティブ領域の高さは3208ドット、即ち、9624画素である。データ領域の高さは384ドット、即ち、1152画素である。
【0522】
DRAMサイズ
代替Artcardの読み出し及び復号化に必要なメモリ量は、理想的には最低限に削減される。典型的な代替Artcardリーダーの配置は、内蔵型システムであり、その場合、メモリリソースは貴重である。このことは、回転の影響によって更に重大な問題になる。上述の通り、代替Artcardの回転が大きくなると、原ドットを効率的に復元するために要する走査線の数が増加する。
【0523】
アルゴリズムの複雑さと、ユーザの認知する遅延と、頑強性と、メモリ使用量との間にはトレードオフがある。最も簡単なリーダーアルゴリズムの一つは、単に代替Artcardの全体を走査し、次に、リアルタイムの制約無しに全データを処理することであろう。これは、大規模のメモリ容量を必要とするだけではなく、代替Artcardの読み出しプロセスと並行に行われるリーダーアルゴリズムよりも長時間を要するであろう。
【0524】
代替Artcardの読み出し及び復号化のために実際に必要なメモリ量は、符号化されたデータを、少量のスクラッチ空間(1から2KB)と共に保持するために必要なスペースの量の2倍である。1600dpiの代替Artcardの場合、これは、4MBのメモリ必要量を意味する。実際のメモリ使用量は以下のアルゴリズムの説明で詳述される。
【0525】
転送レート
DRAM帯域幅の前提条件は、タイミングを考慮するために行う必要があり、特に、代替Artcardリーダーは、典型的に、内蔵型システムの一部であるので、アルゴリズム設計にある程度の影響を与える。
【0526】
Rambus Incの''Direct Rambus
Technology Disclosure'', Oct 1997に記載されているような標準的なRambus
Direct(ラムバスダイレクト)RDRAMアーキテクチャが想定され、ピークデータ転送レートは1.6GB/秒である。75%の効率(容易に実現できる)を想定すると、平均で1.2GB/秒のデータ転送レートが得られる。したがって、16バイトのブロックにアクセスするために要する平均時間は12nsである。
【0527】
汚染データ
物理的に破損した代替Artcardがリーダーに挿入されることがあり得る。代替Artcardは、傷を付けられるか、汚れ若しくはごみによって歪みを生じるかもしれない。代替Artcardリーダーが全てを完全に読み出すことは想定できない。汚染データの影響は、ブラー効果によって更に悪化させられる。なぜならば、汚染データが周囲のきれいなドットに影響を与えるからである。
【0528】
ブラー効果環境
ブラー効果は、次の2種類の経路で代替Artcard読み取り環境に組み込まれる:*代替ArtcardからCCD間での距離の特性を原因とする自然的なブラー効果;
*代替Artcardの歪み。
【0529】
代替Artcard像の自然的なブラー効果は、CCDから検出されたデータのオーバーラップが存在するときに生じる。ブラー効果は役に立つ場合がある。なぜならば、ブラー効果は、検出データに高周波数が存在しないこと、及びCCDによって失われたデータが存在しないことを保証するからである。しかし、CCD画素によって覆われたエリアが非常に広い場合、非常に多くのブラー効果が現れ、データを復元するために要するサンプリングの条件が充たされない。図64は検出データの重なり合いの略説明図である。
【0530】
別の形態のブラー効果は、代替Artcardが熱ダメージのために僅かに歪むときに生じる。垂直方向の次元に歪みがあるとき、代替ArtcardとCCDの間の距離は一定ではなく、ブラー効果のレベルはそのエリアの中で変化する。
【0531】
黒色ドット及び白色ドットは、代替Artcardがブラー効果のある読み出し環境で最良のダイナミックレンジを与えるように選択された。ブラー効果は、所与のドットが黒色であるか、又は白色であるかを決定するときに問題を生じる。
【0532】
ブラー効果が増大すると、所与のドットは周辺ドットから受ける影響が大きくなる。その結果として、特定のドットのダイナミックレンジは減少する。白色ドット及び黒色ドットの各々が起こり得るあらゆるドットの組によって囲まれる場合を考える。9個のドットにブラー効果が現れ、中央ドットがサンプリングされる。図65は、黒色ドット及び白色ドットに対して得られた中央ドット値の分布の説明図である。
【0533】
この図は、典型的なブラー効果を意図している。0から約180までの曲線1140は黒色ドットのレンジを示す。75から250までの曲線1141は白色ドットのレンジを示す。しかし、ブラー効果が大きくなると、2本の曲線はレンジの中央の方へ向かってシフトし、交わるエリアが増大し、所与のドットが黒色であるか、白色であるかを判定することがより困難になる。交わりの中心点での画素値は曖昧であり、ドットが黒色である可能性と白色である可能性は等しい。
【0534】
ブラー効果が増大すると、読み出しビット誤りの確率が増加する。都合良く、リード・ソロモン復号化アルゴリズムは、t個のシンボル誤りまで正常にこれらに対処することができる。図65は、特定のシンボル誤り率の場合に復元できない代替Artcardのリード・ソロモンブロックの予測数のグラフである。リード・ソロモン復号化方式が優れた性能を示し、次に、実質的に低下することに注意すべきである。リード・ソロモンブロックの複製が無い場合、1ブロックに誤りが生じるだけでデータを復元できなくなる。勿論、ブロック複製を行った場合、代替Artcard復号化の機会が増加する。
【0535】
図66は、誤りのあるリード・ソロモンブロックの個数に対応するシンボル(バイト)誤りだけを示している。対処可能なブラー効果の量と、カードに生じたダメージの量との間にはトレードオフが存在する。全ての誤り検出及び訂正はリード・ソロモンデコーダによって行われるので、リード・ソロモンデータブロック毎に対処可能な誤りの個数は有限である。ブラー効果によって取り込まれる誤りが増加すると、代替Artcardのダメージによる誤りの中で対処可能な誤りの個数は減少する。
【0536】
代替Artcard復号化の概要
上述の通り、ユーザが代替Artcardを代替Artcard読み取りユニットに挿入するとき、モーター輸送は、理想的には、代替Artcardを運び、モノクロリニアCCDイメージセンサの傍らを通過させる。カードは次元毎に印刷された解像度の3倍の解像度でサンプリングされる。代替Artcard読み取りハードウェア及びソフトウェアは、1度までの回転と、モーター輸送によって生じるジッタ及び振動と、代替ArtcardからCCDまでの距離の変動によって生じるブラー効果を補正する。データのデジタルビットイメージが、以下に説明される複雑な方法によって、サンプリングされた像から抽出される。リード・ソロモン復号化は、代替Artcard上の生データの25%までの任意に分布したデータコラプションを訂正する。約1MBの訂正データが1600dpiカードから抽出される。
【0537】
復号化に関連するステップは図67に示されるようなステップである。
【0538】
復号化プロセスに必要なステップは、
*印刷された解像度の3倍の解像度で代替Artcardを走査する(例えば、4800dpiで1600dpiの代替Artcardを走査する)ステップ1144と、
*カード上で走査されたドットからデータビットマップを抽出するステップ1145と、
*代替Artcardが逆向きに挿入された場合に、ビットマップを反転するステップ1146と、
*符号化データをスクランブル解除するステップ1147と、
*ビットマップからのデータをリード・ソロモン復号化するステップ1148と、
である。
【0539】
アルゴリズムの概要
フェーズ1−リアルタイムExtractingBitImage
利用可能なメモリ(4MB)と、1600dpiの代替Artcardの走査された全画素を保持するための必要メモリ(172.5MB)との簡単な比較によって、カードが複数回読み出されない限り(現実的な選択肢ではない)、画素データからのビットマップの抽出は、代替ArtcardがCCDの傍を通過させられる間に、オンザフライ方式でリアルタイムに実行する必要がある。このフェーズでは、二つのタスク、即ち、
*代替Artcardを4800dpiで走査するタスク
*カード上で走査されたドットからデータビットマップを抽出するタスク
を実行しなければならない。
【0540】
ビットイメージの回転及びスクランブル解除は、ビットイメージ全体が抽出されるまで行えない。したがって、抽出されたビットイメージを保持するためにメモリ領域を割り当てることが必要である。ビットイメージは、2MBの範囲内で容易に収容され、抽出プロセスで使用するための2MBが確保される。
【0541】
CCDからの現在の走査線だけを調べる間にビットイメージを抽出するのではなく、窓として機能するバッファを代替Artcardに割り付け、最新のN本の走査線読み出しを記憶することが可能である。メモリ必要量は、代替Artcardの全体がこのようにして記憶されることは許容しないが(172.5MBが必要になるであろう)、190画素列を記憶するため2MBを割り付けることは(各走査線は11000バイト以上を必要としない)、ExtractingBitImageプロセスを簡単化させる。
【0542】
したがって、4MBメモリの使用法は以下の通りである:
*抽出されたビットイメージのための2MB;
*走査された画素のための〜2MB;
*フェーズ1のスクラッチデータのために1.5KB(アルゴリズムによる要求次第)。
【0543】
フェーズ1に要する時間は1.5秒である。なぜならば、この時間は、代替ArtcardがCCDの傍を通過し、物理的にロードされるために要する時間であるからである。
【0544】
フェーズ2−ビットイメージからのデータ抽出
ビットイメージが抽出されると、ビットイメージはスクランブル解除され、場合によっては180°回転させることが必要である。ビットイメージは次に復号化される。フェーズ2は、Artcardの動きが停止している点でリアルタイム必要条件が無く、ユーザが時間経過を認識することだけが問題である。したがって、フェーズ2は、代替Artcardを復号化する残りのタスクに関係する。即ち、
*ビットイメージを再編成し、代替Artcardが逆向きに挿入された場合には反転する;
*符号化されたデータをスクランブル解除する;
*ビットイメージからのデータをリード・ソロモン復号化する。
【0545】
フェーズ2への入力は2MBビットイメージバッファである。スクランブル解除及び回転は、その場では実行し得ないので、第2の2MBバッファが必要である。フェーズ1で走査された画素を保持するため使用される2MBバッファは不要になっているので、回転させられたスクランブル無しデータを記憶するため使用可能である。
【0546】
リード・ソロモン復号化タスクは、スクランブル無しのビットイメージを取得し、それを910082バイトに復号化する。復号化は元の位置で実行可能であるが、指定された別の場所で実行してもよい。復号化プロセスは、補助的なメモリバッファを必要としない。
【0547】
したがって、4MBのメモリの使用法は以下の通りである:
*(フェーズ1からの)抽出されたビットイメージのための2MB;
*スクランブル無しの、回転された可能性のあるビットイメージのための〜2MB;
*フェーズ2のスクラッチデータのための<1KB(アルゴリズムによる要求次第)。
【0548】
フェーズ2に要する時間はハードウェアに依存し、リード・ソロモン復号化のために要する時間によって制限される。LSIロジックのL64712のような専用コア、又は等価的なCPU/DSPの組み合わせを使用することにより、フェーズ2は0.32秒を要することが推定される。
【0549】
フェーズ1−ExtractingBitImage
これは、アルゴリズムのリアルタイムフェーズであり、CCDによって走査されたような代替Artcardからビットイメージを抽出することに関連する。
【0550】
図68に示されるように、フェーズ1は、二つの非同期的なプロセスストリームに分解することができる。そのうちの第1のストリームは、単に、CCDからの代替Artcardの画素をリアルタイムで読み出し、その画素をDRAMへ書き込む。第2のストリームは、画素を参照し、ビットを抽出する。第2のプロセスストリームは、それ自体が二つのプロセスに分解される。第1のプロセスは、大域的なプロセスであり、代替Artcardのスタートの位置検出に関する。第2のフェーズはExtractingBitImage固有である。
【0551】
図69は、データ/プロセスの観点からのデータフロー説明図である。
【0552】
タイミング
1600dpi代替Artcardの全体に対して、最大で16252画素列を読み出すことが必要である。代替Artcardの全体に対する合計時間が1.5秒である場合、これは、様々なプロセスの経過中に、1画素列当たりの最大時間が92296nsであることを意味する。
【0553】
プロセス1−CCDからの画素読み出し
CCDは、代替Artcardを4800dpiで走査し、1列当たりに11000個の1バイト画素を生成する。このプロセスは、CCDからデータを取得し、それをDRAMへ書き込むだけであり、DRAMから画素データを読み出している他のプロセスからは完全に独立している。図70には関連したステップが示されている。
【0554】
画素は、190列の全画素列を保持し得る2MBバッファに連続して書き込まれる。バッファは、常に、最近に読み出された190列を保持する。その結果として、画素データを読み出そうとするプロセス(例えば、プロセス2及びプロセス3)は、最初に、所定の列が探索する場所を知る必要があり、次に、要求されたデータが実際にバッファ内に存在することが確実であるように十分に高速でなければならない。
【0555】
プロセス1は、現在のCurrentScanLineが他のプロセスから利用できるようにさせるので、他のプロセスは、未だ読み出されていない走査線からの画素へのアクセスを試みないことを保証することができる。
【0556】
単一のデータ列(11000バイト)をDRAMへ書き出すために要する時間は、11000/16*12=8256nsである。
【0557】
プロセス1は、したがって、利用可能なDRAM帯域幅の9%未満(8256/92296)しか使用しない。
【0558】
プロセス2−代替Artcardのスタート検出
このプロセスは、走査された代替Artcard上のアクティブエリアの位置検出と関連している。このステージへの入力はDRAM(プロセス1によってそこに収容された)からの画素データである。出力は、代替Artcard上の最初の8個のデータブロックに対する境界の組であり、プロセス3への入力として要求される。プロセス3の上位レベル概要が図71に示されている。
【0559】
代替Artcardは、挿入時に垂直方向の動きが1mmある。1度の回転によって、更に、1.5mm(86sin1°)の垂直方向の動きが生じる。その結果として、全部で垂直方向の動きは2.5mmである。1600dpiのとき、これは、約160ドットの動きに相当する。単一のデータブロックの高さは394ドットに過ぎないので、この動きは、データブロックの半分よりも少し少ない。データブロックが存在する場所をより良く推定するためには、代替Artcard自体を検出しなければならない。
【0560】
したがって、プロセス2は、
*代替Artcardのスタートを位置検出する部分と、もし、検出されたならば、
*代替Artcardのスタートに基づいて最初の8個のデータブロックの境界を計算する部分と、
を含む。
【0561】
代替Artcardのスタート位置検出
代替Artcardエリアの外側で走査された画素は黒色である(表面は黒色のプラスチック、又はその他の非反射型表面でもよい)。代替Artcardエリアの境界は白色である。画素列を1列ずつ処理し、画素を黒色又は白色の何れかに関してフィルタ処理するならば、黒色から白色への変化点は、代替Artcard上のスタートを特徴付ける。最高レベルのプロセスは以下の通りである:
Figure 2001523900
ProcessColumn関数は単純である。走査された列の二つのエリアからの画素は、それらが黒色又は白色のどちらであるかを判定するため閾値フィルタに通される。一定数の白色画素を待ち、所定の個数が検出されたとき、代替Artcardのスタートを報せることが可能である。画素列を処理するロジックは以下の疑似コードに示されている。列中に代替Artcardが検出されなかった場合、0が返される。さもなければ、検出された位置の画素数が返される:
Figure 2001523900
データブロック境界の計算
このステージでは、代替Artcardが検出されている。代替Artcardの回転に応じて、代替Artcardの上部又は代替Artcardの下部の何れかが検出されている。プロセス2の第2ステップはどちらが検出されたかを判定し、フェーズ3のためのデータブロック境界を適切にセットする。
【0562】
フェーズ3を見ると、フェーズ3はデータブロックセグメント境界に関して動作することがわかる。各データブロックは、データブロックのデータ領域を位置検出するためにターゲットを探索すべき場所を決定するため、StartPixel及びEndPixelを含む。
【0563】
画素値がカードの上半分に存在する場合、それを第1のStartPixel境界としてそのまま使用することができる。画素値がカードの下半分に存在する場合、画素値が最後のセグメントのEndPixel境界になるように逆行させることが可能である。代替Artcardのデータサイズの幅で前進又は後退し、各セグメントに適切な境界をセットする。これにより、代替Artcardからのデータ抽出を開始する準備が整う:
Figure 2001523900
MaxPixel値はプロセス3で定義され、SetBounds関数は、0及びMaxPixelに対するStartPixel及びEndPixelクリッピングをセットするだけである。
【0564】
プロセス3−画素からのビットデータ抽出
これは代替Artcardリーダーアルゴリズムの心臓部である。このプロセスは、CCD画素データからのビットデータ抽出処理に関係する。このプロセスは、本質的に、プロセス2によって作成され、プロセス3によって維持されたスクラッチ情報に基づいて、画素データからビットイメージを作成する。このプロセスの上位レベル概要は図72に示されている。
【0565】
単に代替Artcardの画素列を読み出し、どの画素がどのデータブロックに属しているかを判定するのではなく、プロセス3は、その逆の作用をする。プロセス3は、所定のデータブロックの画素を探索すべき場所がわかっている。プロセス3は、これを行うため、論理的な代替Artcardを8個のセグメントに分割する。各セグメントは、図73に示されるように8個のデータブロックを含む。
【0566】
図示されたセグメントは論理的な代替Artcardと一致する。物理的に、代替Artcardはある量だけ回転させられている可能性が高い。セグメントは、論理的な代替Artcard構造に固定されたままであるため、回転に依存しない。あるセグメントは、以下の2状態のうちの一方をとり得る:
*LookingForTaregets:この状態では、このセグメントの正確なデータブロック位置は未だ決定されていない。ターゲットは、セグメント境界によって指定された境界内の画素列データを走査することによって位置検出されている。ターゲット、並びに、黒色及び白色のためにセットされた境界を用いてデータブロックが位置検出されると、状態は、ExtractingBitImageへ変化する;
*ExtractingBitImage:この状態では、データブロックは正確に位置検出されており、データビットは同時に1ドット列ずつ抽出され、代替Artcardビットイメージに書き込まれる。データブロッククロックマークの追跡は、回転とは無関係に正確なドット復元を与えるので、セグメント境界は無視される。データブロック全体が抽出されると、新しいセグメント境界が、現在位置に基づいて次のデータブロックに対して計算される。状態は、LookingForTargetsへ変化する。
【0567】
このプロセスは、各領域から8個ずつの64データブロックの全てが抽出されたときに終了する。
【0568】
各データブロックは595のデータ列により構成され、各データ列は48バイトである。好ましくは、データブロック用の2個の方位列がそれぞれ48バイト毎に抽出され、全部で1データブロック当たりに28656バイトが抽出される。簡単のため、2MBのメモリを64×32Kのチャンクに分割することができる。所定のセグメントのn番目のデータブロックは、
SrartBuffer + (256k*n)
で表される場所に格納される。
【0569】
セグメントのデータ構造
8個のセグメントの各々は、データ構造が関連付けられる。各セグメントを定義するデータ構造は、スクラッチデータエリアに格納される。その構造は以下の表に列挙することができる。
【0570】
【表52】
Figure 2001523900
プロセス3の上位レベル
プロセス3は、各セグメントに対して繰り返して、セグメントの現在状態に依存して単一ラインの処理を実行するだけである。擬似コードは以下のように簡潔である:
Figure 2001523900
プロセス3は、指定された時間が経過しても終了しない場合には、外部制御プロセスによって停止される必要がある。これは、データが抽出できなかった場合に限られるであろう。簡単な仕組みは、プロセス1が代替Artcardの読み出しを終了した後にカウントダウンを開始する仕組みである。プロセス3がその時間までに終了しなかった場合、代替Artcardからのデータは復元不可能である。
【0571】
CurrentState =LookingForTargets
ターゲットは、同時に1画素列ずつ画素の列を読み出すことによって検出されるのであって、(StartPixelとEndPixelの間にある)所定の画素のバンド内のドットを検出することによって画素のある種のパターンが検出されるのではない。画素列は、全てのターゲットが検出されるか、又は指定された数の列が処理されるまで、同時に1列ずつ処理される。その時点で、ターゲットを処理することが可能であり、データはクロックマークを用いて位置検出される。状態は、データを抽出する時であることを示すためExtractingBitImageに変更される。十分な数の有効ターゲットを位置検出できなかった場合、データブロックは無視され、失敗したデータブロック内の列を確実にスキップし、次のデータブロック内でターゲットを探索するプロセスを再開する。これは以下の擬似コードで表すことができる:
Figure 2001523900
ProcessPixelColumn関数
各画素列は、ターゲットを識別するある種の画素のパターンを探索するため、指定された境界内(StartPixelとEndPixelの間)で処理される。単一ターゲット(ターゲット番号2)の構造は、既に図54に示されている通りである。
【0572】
画素の観点から、ターゲットは、以下の事項によって識別することができる:
*左の黒色領域:これは、多数の隣接した黒色画素により構成された多数の画素列であり、ターゲットの最初の部分を構築する;
*ターゲット中心:これは、更なる黒色列の中心にある白色領域である;
*ターゲット番号:これは、黒色で囲まれた白色領域であり、白色領域はその長さによってターゲット番号を定義する;
*第3の黒色領域:これは、ターゲット番号の後の二つの黒色ドット領域である。
【0573】
要求されるプロセスの概要は図74に示されている。
【0574】
識別は黒色又は白色画素だけに基づいているので、各列からの画素1150は、黒色又は白色を検出するためフィルタ1151を通され、次に、ランレングス符号化1152される。ランレングスは、次に、状態機械1153へ送られ、状態機械は、最後の3個のランレングスと、最後から4番目の色を取得する。これらの値に基づいて、ターゲット候補は、識別ステージの各々を通過する。
【0575】
最大及び最小収集プロセスGatherMin&Max1155は、セグメントの処理中に見つかった最小値及び最大値を保持するだけである。これらは、ターゲットが位置検出されたとき、BlackMax、WhiteMin、及びMidRange値をセットするため使用される。
【0576】
各セグメントは、ターゲットの探索においてターゲット構造体の組を保持する。ターゲット構造体自体はメモリ内を動き回らないが、幾つかのセグメント変数はこれらのターゲット構造体へのポインタのリストを指示する。これらの3個のポインタリストを再度示す。
【0577】
【表53】
Figure 2001523900
これらのリストポインタの各々と関連したカウンタ、即ち、TargetsFound、PossibleTargetCount、及びAvailableTargetCountが存在する。
【0578】
代替Artcardがロードされる前に、TargetsFound及びPossibleTargetCountは0にセットされ、AvailableTargetCountは28(ターゲット境界の最小サイズは40画素であり、データエリアは約1152画素であるので、調査中のターゲット構造体候補の最大数)にセットされる。ターゲットポインタレイアウトの一例は図75に示される。
【0579】
新しいターゲット候補が検出されるとき、それらは、AvailableTargetsリスト1157から取得され、ターゲットデータ構造体は更新され、この構造体へのポインタはPossibleTargetsリスト1158に追加される。ターゲットが完全に検証されたとき、そのターゲットはLocatedTargetsリスト1159へ追加される。ターゲット候補が最終的にターゲットではないことが判明した場合、ターゲット候補はAvailableTargetsリスト1157へ戻される。この結果として、いつでも循環している28個のターゲットポインタが常に存在し、リストの間を移動している。
【0580】
ターゲットデータ構造体1160は以下の形式をとり得る。
【0581】
【表54】
Figure 2001523900
ターゲット検出モジュール1162(図74)内のProcessPixelColumn関数は、全てのランレングスを一つずつ調べ、(StartPixelによって)ランを既存のターゲット候補と比較するか、又は今までに知られていないターゲット候補が検出された場合に、新しいターゲット候補を作成する。全てのケースにおいて、比較はS0.colorが白色であり、S1.colorが黒色である場合に限り行われる。
【0582】
次に、ProcessPixelColumnの擬似コードを示す。第1のターゲットが肯定的に識別された場合、ターゲットをチェックすべき最後の列は、そこから最大距離の範囲内にあるとして決定される。1°の回転がある場合、最大距離は18画素列である:
Figure 2001523900
Figure 2001523900
AddToTargetはターゲット検出モジュール内の関数であり、特定のランを所与のターゲットに加算することができるかどうかを判定する:
*ランがターゲットの開始位置の許容範囲内に入るならば、そのランは現在のターゲットと直接的に関連付けられるので、それに適用することが可能である;
*ランがターゲットの前で始まる場合、既存のターゲットが依然としてOKであり、そのランとは関係がないと想定する。したがって、ターゲットはそのままの状態で残され、返値FALSEは、ランが適用されなかったことを呼び出し元へ通知する。呼び出し元は、引き続いてランをチェックして、ランがその固有の全く新しいターゲットを開始するかどうかを調べる;
*ランがターゲットの後で始まる場合、そのターゲットが候補ターゲットではなくなったと考える。状態は、NotATargetに変更され、返値TRUEが返される;
ランをターゲットに適用すべき場合、特別の動作が現在の状態と、S1、S2及びS3のランの組に基づいて実行される。AddToTargetの擬似コードは以下の通りである:
Figure 2001523900
画素ランのタイプはDeterminRunTypeにおいて以下のように識別される。
【0583】
【表55】
Figure 2001523900
状態推定手続EvaluateStateは現在の状態及びランタイプに依存して動作する。
【0584】
その動作は以下に表形式で示される。
【0585】
【表56】
Figure 2001523900
ターゲット処理
位置検出されたターゲット(LocatedTargetsリスト内)は、位置検出された順序で記憶される。代替Artcardの回転に依存して、これらのターゲットは、画素昇順又は画素降順である。その上、ターゲットから復元されたターゲット番号は、誤りがあるかもしれない。また、間違ったターゲットを復元したかもしれない。クロックマーク推定量が取得できる前に、ターゲットは、無効ターゲットが確実に廃棄されるように処理する必要があり、有効ターゲットは、間違っているならばターゲット番号が修復される(例えば、ごみのために破損されたターゲット番号)。二つの主要なステップが関連している:
*ターゲットを画素昇順にソートするステップ;
*誤りのあるターゲット番号を見つけ、修復するステップ。
【0586】
最初のステップは簡単である。ターゲット検索の性質は、データが画素昇順又は画素降順の何れかで常に記憶されるべきことを意味する。簡単なスワップソートは、6個のターゲットが既に正しくソートされているならば、最大で14回の比較がスワップ無しに行われる。データがソートされていない場合、14回の比較は3回の3回のスワップと共に行われる。以下の擬似コードはソーティングプロセスを示す:
Figure 2001523900
誤ったターゲット番号を位置検出し修復することは、多少複雑になる。順番に、検出されたN個のターゲットの各々が正しいと仮定される。他のターゲットは、この「正しい」ターゲットと比較され、TargetNが正しい場合に変更を必要とするターゲットの個数がカウントされる。変更の回数が0であるならば、全てのターゲットは既に正しい筈である。さもなければ、他のターゲットに対して要求する変更の回数が最も少ないターゲットが変更の基準として使用される。所与のターゲットのターゲット番号及び画素位置が、「正しい」ターゲットの画素位置及びターゲット番号と比較されたときに、相互に関連しないならば、変更が登録される。この変更は、ターゲットのターゲット番号の更新を意味し、或いは、ターゲットの削除を意味する。上昇するターゲットは、(既にソートされているので)昇順の画素を有すると仮定することができる:
Figure 2001523900
多くの場合、この関数は bestChanges
= 0 で終了しており、これは変更が要求されないことを意味している。そうでない場合、変更を適用する必要がある。変更を適用する機能は、targetNumber との比較までは、(上述の擬似コードにおいて)変更をカウントすることと同一である。変更アプリケーションは以下の通りである:
Figure 2001523900
変更ループの最後に、LocatedTargetsリストをコンパクトにして、全てのヌルターゲットを削除する必要がある。
【0587】
この手続の最後に、数個のターゲットが存在する可能性がある。残っている全てのターゲット(少なくとも2個のターゲットが必要である)は、クロックマーク及びデータ領域の位置を検出するため使用される。
【0588】
図55に示されるように、上側領域の第1のクロックマークドット1126は、第1のTarget1124の中心から55ドット離れている(これはターゲット中心間の距離と同じである)。クロックマークドットの中心は更に1ドット遠ざかり、黒色境界線1123は第1のクロックマークドットから更に4ドット離れている。下側領域の第1のクロックマークドットは、上側領域の第1のクロックマークドット1126から正確に7ターゲットの距離(7×55ドット)離れている。
【0589】
Target1及び6が見つかっていると仮定し得ないので、最も上側のターゲット及び最も下側のターゲットを使用する必要があり、どのターゲットが使用されているかを判定するためターゲット番号を使用する。この時点で少なくとも2個のターゲットが必要である。その上、ターゲット中心は、実際のターゲット中心の推定値に過ぎない。それは、ターゲット中心をより正確に位置検出することである。ターゲットの中心は、黒色に囲まれた白色である。したがって、画素次元と列次元の両方で極大を見つけることが望ましい。これには、連続した画像を再構築することが必要である。なぜならば、最大値が整数バウンダリ(本例の推定値)に厳密に合わせられる可能性は殆ど無いからである。
【0590】
連続した画像をターゲットの中心の周りに構築する前に、2個のターゲット中心のより良い推定値を作成することが必要である。既存のターゲット中心は、実施には、ターゲット中心の境界ボックスの左上座標である。ターゲットの中心を画成するエリアを見つけるため各画素を一つずつ調べ、最高値を有する画素を検出することは、簡単なプロセスである。同じ最高画素値を有する画素は2個以上存在する場合もあるが、中心値の推定には1個の画素があればよい。
【0591】
擬似コードは簡単であり、2個のターゲットの各々に対して実行される:
Figure 2001523900
このプロセスの最後に、ターゲット中心座標は、実際の中心の1画素の範囲に収まるべきターゲットの最も白い画素を指示する。ターゲット中心のより正確な位置を構築するプロセスには、推定されたターゲット中心の両側に3個ずつで、ターゲットの7個の走査線スライスの連続信号を再構築することが含まれる。検出された7個の最大値(上記の画素スライスの各々につき1個ずつ)は、列次元において連続信号を再構築し、次に、その次元における最大値の位置を検出するために使用される:
Figure 2001523900
FindMaxは、元の1次元信号に基づくサンプル点を再構築し、最大値の位置及び検出された最大値を返す関数である。使用される信号再構築/再サンプリング方法は、図76に示されるように、Lanczos3窓sinc関数である。
【0592】
Lancoz3窓sinc関数は、再構築された次元から、推定位置Xの周りに集められた、即ち、X−3、X−2、X−1、X、X+1、X+2、X+3にある7(画素)サンプルを取得する。X−1からX+1の間に、0.1の間隔で点を再構築し、最大となる点を決定する。最大値である位置が新しい中心になる。カーネルの性質上、XとX+1の間の点に対してコンボリューションカーネルに必要なエントリーは6個だけである。X−1からXに対して6個の点と使用し、XからX+1に対して6個の点を使用し、X−1からX+1間での画素値を得るために全体として7点が必要である。なぜならば、要求された画素の一部は一致するからである。
【0593】
最も上側のターゲットから最も下側のターゲットまでに正確な推定値が与えられた場合、上側領域及び下側領域に対して第1のクロックマークドットの位置を以下のようにして計算することができる:
Figure 2001523900
これにより第1のクロックマークドットが得られる。列位置は、クロックマークの中心へ到達するため、データエリアから更に1ドット遠くへ動かすことが必要である。また、画素位置は、境界線の中心へ到達するため、更に4ドット遠ざける必要がある。deltaColumn及びdeltaPixelの疑似コード値は、55ドットの距離(ターゲット間の距離)に基づいているので、これらのデルタは、クロックマーク座標に適用される前に、それぞれ、1/55及び4/55によって縮小しなければならない。これは以下の通りに表現される:
kDeltaDotFactor =
1/DOTS_BETWEEN_TARGET_CENTRES
deltaColumn *= kDeltaDotFactor
deltaPixel *= 4 * kDelteDotFactor
UpperClock.pixel -= deltaPixel
UpperClock.column -= deltaColumn
LowerClock.pixel += deltaPixel
LowerClock.column += deltaColumn
UpperClock及びLowerClockは、ターゲットの中心とちょうど合致した第1のクロックマークに対する有効クロックマーク推定値である。
【0594】
黒色及び白色画素/ドットレンジの設定
データをデータエリアから抽出する前に、黒色及び白色ドットの画素レンジを確認する必要がある。LookingForTaregets中に現れた最小値及び最大値は、それぞれ、WhiteMin及びBlackMaxに保存されているが、これらは、データ抽出に関してこれらの変数の有効な値を表現していない。それらは、単に、記憶の便宜上、使用されるだけである。以下の疑似コードは、出現した最小画素及び最大画素に基づいてWhiteMin及びBlackMaxの良い値を獲得する方法を示している:
MinPixel = WhiteMin
MaxPixel = BlackMax
MidRange = (MinPixel + MaxPixel)/2
WhiteMin = MaxPixel - 105
BlackMax = MinPixel + 84
CurrentState = ExtractingBitImage
ExtractingBitImage状態は、データブロックが、ターゲットによって既に正確に位置検出された状態であり、ビットデータは、同時に1ドット列毎に抽出中であり、代替Artcardビットイメージに書き込まれている。データブロッククロックマーク/境界の追跡によって、回転とは無関係に正確なドット復元が行われ、セグメント境界は無視される。データブロック全体(595個のデータ列と2個の方位列を併せて、48バイトずつの597列)が抽出されると、新しいセグメント境界が現在位置に基づいて次のデータブロックのために計算される。この状態は、LookingForTargets状態に変更される。
【0595】
所与のドット列の処理には以下の二つのタスクが必要である:
*第1のタスクは、クロックマークを用いて特定のデータのドット列の位置を検出することである;
*第2のタスクは、ドット列を追跡して、1ドットにつき1ビットずつビット値を集めることである。
【0596】
これらの二つのタスクは、列のデータが代替Artcardから読み出され、DRAMへ転送された場合に限り行うことができる。これは、プロセス1がどの走査線まで到達しているかをチェックし、それをクロックマーク列と比較することによって判定される。ドットデータがDRAMに存在するとき、クロックマークを更新し、クロックマークを次のドット列に対する推定値へ進める前に、列からデータを抽出することが可能である。このプロセスの概要は、以下の疑似コードに示されている。具体的な関数については後述する:
Figure 2001523900
ドット列の位置検出
所定のドット列は、ドットを読み出し、データを抽出する前に、位置検出されなければならない。これは、データブロックの上側及び下側境界に沿ってクロックマーク/境界線を追跡することによって実現される。位相ロックループと等価的なソフトウェアが使用され、たとえクロックマークが破損されていても、クロックマーク位置の良い推定が確実に行われる。図77は、例示的なデータブロックの左上の説明図であり、そのデータブロックのコーナーには、ターゲットエリアの外側へ広がる3ドット高のクロックマーク1166と、白色行と、黒色境界線と、が現されている。
【0597】
初期的に、第1の黒色クロックマークの位置の推定値が(ターゲット位置に基づいて)提供される。正確な垂直位置(画素)を得るため黒色境界が使用され、正確な水平位置(列)を得るため、例えば、クロックマーク1166が使用される。これらは、UpperClock及びLowerClockの位置に反映される。
【0598】
クロックマーク推定値が取得され、その近傍の画素を調べることにより、連続した信号が再構築され、正確な中心が決定される。2次元をクロックマークと境界に分解しているので、これは、簡単な1次元プロセスであり、2回実行する必要がある。しかし、これは、位置合わせの相手側の黒色クロックマークが存在するとき、2ドット列について1回だけ行われる。白色クロックマークの場合、単に推定値を使用し、推定値はそのままにしておく。或いは、(常に存在するので)ドット列毎に境界に基づいて画素座標を更新してもよい。実際上、(黒色クロックマークを含む)1列おきに両方の座標を更新すれば十分である。なぜならば、この動作中の解像度は非常に精細だからである。したがって、このプロセスは次のようになる:
Figure 2001523900
所定の許容度(MAX_CLOCKMARK_DEVIATION)を上回る偏差が存在する場合、検出された信号は無視され、推定値からの最大許容度に収まる偏差だけが許容される。この点に関して、この機能はフェーズロックループの機能と類似している。したがって、DetermineAccurateUpperDotCenter関数は以下の疑似コードによって実現される:
Figure 2001523900
また、DetermineAccurateLowerDotCenter関数は、境界からクロックマークまでの向きが負方向である(+3ドットではなく、−3ドットである)点を除くと同様である。
【0599】
GetAccuratePixel及びGetAccurateColumnは、座標が与えられた場合に、一次元だけの観点で正確なドット中心を決定する関数である。正確なドット中心の決定は、信号を再構成し、最小信号値が検出された位置を見つけるプロセスである(これは、ターゲット中心は黒色ではなく白色であるために、信号の最大値の位置を検出することによりターゲット中心の位置を検出するプロセスとは異なる)。このアプリケーションの信号再構成/再サンプリングのために選択された方法は、図76を参照して説明したようなLanczos3窓sinc関数である。
【0600】
クロックマーク又は境界は何らかの方法で、おそらくは、ひっかきによって、傷つけられている可能性がある。再サンプリングによって得られた新しい中心値と推定値との差が許容量を超える場合、中心値は最大許容量だけ動かされる。それが無効な位置である場合、データ回復に使用するために十分に接近しているはずであり、更なるクロックマークはその位置に再度合わせられる。
【0601】
第1のデータドットの中心と後続のドットへのデルタの決定
正確なUpperClock及びLowerClock位置が決定されると、第1のデータドットの中心(CurrentDot)と、列内の後続のドットへ進めるためにその中心位置に加算されるべきデルタ量(DataDelta)とを計算することができる。
【0602】
最初に行うべきことは、ドット列のデルタを計算することである。これは、単に、LowerClockからUpperClockを減算し、2点間のドット数で除算することによって実現される。実際にはドット数の逆数を乗算することが可能である。なぜならば、ドット数は代替Artcardに関して定数であり、且つ乗算の方が高速に行われるからである。画素次元のデルタと列次元のデルタを獲得するため、異なる定数を使用することが可能である。画素のデルタは二つの境界間の距離であり、列のデルタは二つのクロックマークの中心間である。このようにして、関数DeternineDataInfoは二つの部分からなる。第1の部分は次の擬似コードによって表される:
kDeltaColumnFactor =
1/(DOTS_PER_DATA_COLUMN+2+2-1)
kDeltaPixelFactor =
1/(DOTS_PER_DATA_COLUMN+5+5-1)
delta = LowerClock.column -
UpperClock.column
DataDelta.column = delta *
kDeltaColumnFactor
delta = LowerClock.pixel - UpperClock.pixel
DataDelta.pixel = delta * kDeltaPixelFactor
次に、列の第1のデータの中心を決定することが可能である。クロックマークの中心から第1のデータドットの中心までの距離は2ドットであり、境界の中心から第1のデータドットの中心までの距離は5ドットである。この関数の第2の部分は次の擬似コードによって表される:
CurrentDot.column = UpperClock.column +
(2*DataDelta.column)
CurrentDot.pixel = UpperClock.pixel +
(5*DataDelta.pixel)
ドット列の追跡
ドット列はクロックマークに追従する位相ロックループから見つけられたので、残っていることは、その列を下って各ドットの中心でドット列をサンプリングすることだけである。変数CurrentDot点は現在列の第1のドットの中心に決定される。列の次のドットへ進むためには、DataDeltaを加算するだけでよい(2回の加算:1回は列座標のため、もう1回は画素座標のため)。所定の座標におけるドットのサンプリング(バイリニア補間)が行われ、ドットの中心を表現する画素値が決定される。画素値は、次に、そのドットのビット値を決定するため使用される。しかし、より良いビット判定を行うため、同一ドットライン上の2個の周辺ドットに対する中心値と関連して、その画素値を使用することが可能である。
【0603】
抽出されたドット列内のドットに対する全ての画素はこの時点でDRAMにロードされていると仮定してもよい。なぜならば、ラインの両端(クロックマーク)がDRAMに存在するならば、これらの2個のクロックマークの間のドットも間違いなくDRAMに存在するからである。更に、データブロック高さは十分に低いので(384ドット高にすぎない)、単なるデルタだけがラインの全長を越えるために十分であることが保証される。カードが8個のデータブロック高さに分割されている理由の一つは、単一のデータブロックに関して行うことができる保証と同じ厳格な保証を、カードの全高に亘って行うことが不可能だからである。
【0604】
単一ラインのデータ(48バイト)を抽出する上位レベルプロセスは、以下の疑似コードで表される。データバッファポインタは、各バイトが保存されるのに伴ってインクリメントされ、連続したバイト及びデータの列が確実に連続的に保存される:
Figure 2001523900
GetPixel関数はドット座標(固定小数点)を取得し、バイリニア補間によって中心画素値に達するため、4個のCCD画素をサンプリングする。
【0605】
DetermineCenterDot関数は、ビット値が決定されたドットの両側にあるドット中心を表現する画素値を取得し、その中心ドットのビット値の値を知的に推定することを試みる。図64の一般化されたブラー効果曲線から、以下の三つの一般的なケースが考えられる:*ドットの中心画素値はWhiteMinよりも小さいので、確実に黒色ドットである。したがって、ビット値は必ず1である;
*ドットの中心値はBlackMaxよりも大きいので、確実に白色ドットである。したがって、ビット値は必ず0である;
*ドットの中心値は、BlackMaxとWhiteMinの間のどこかにある。ドットは黒色かもしれないし、白色かもしれない。したがって、このビットの値が問題になる。ビットの値を合理的に推定するため、多数の方式が考えられている。これらの方式は、精度に対して複雑さのバランスを取り、ある種のケースでは、保証された解決策が存在しないことを考慮する必要がある。誤ったビット判定を行うケースでは、ビットのリード・ソロモンシンボルに誤りが生じ、フェーズ2のリード・ソロモン復号化ステージで訂正しなければならない。
【0606】
画素値がBlackMaxとWhiteMinの間に入るときにドットの値を決定するため使用される方式は、あまり複雑ではないが、優れた結果を与える。この方式は、門対となっているドットの左及び右にあるドット中心の画素値を使用して、中心ドットのよりもっともらしい値を決定する。即ち、
*両側の2個のドットがMidRange(平均ドット値)の白色側に存在する場合、中心ドットが白色であるならば、「確実に」白色であると推定することができる。その中心ドットが不確実な領域に存在するということは、そのドットが黒色であり、その値をより不確実にするため周辺の白色ドットによる影響を受けたということを示す。したがって、そのドット値は黒色であると考えられるので、そのビット値は1である;
*両側の2個のドットがMidRangeの黒色側に存在する場合、中心ドットが黒色であるならば、「確実に」黒色であると推定することができる。その中心ドットが不確実な領域に存在するということは、そのドットが白色であり、その値をより不確実にするため周辺の黒色ドットによる影響を受けたということを示す。したがって、そのドット値は白色であると考えられるので、そのビット値は0である;
*一方のドットがMidRangeの黒色側に存在し、もう一方のドットがMidRangeの白色側に存在するならば、中心ドット値をそのまま使用して決定する。中心ドットがMidRangeの黒色側に存在するならば、黒色(ビット値1)を選択する。さもなければ、白色(ビット値0)を選択する。
【0607】
このロジックは以下のように表現される:
Figure 2001523900
ここから、周辺画素値の使用は、中心ドットの状態の優れた指標を与え得ることが認められる。ここで説明した方式は、同じ行からのドットだけを使用しているが、単一のドットライン履歴(前のドットライン)の使用は、明らかに代替的な構成になるであろう。
【0608】
次の列のためのクロックマーク更新
ある列の第1のデータドットの中心が決定されると、クロックマーク値は不要になる。それらは、その列に対するデータが獲得された後、次の列の準備のため更新する方が好都合である。クロックマークの向きは、ドット列に沿って下りるドットの追跡方向に対して垂直であるため、列を更新するため画素デルタを使用し、両方のクロックの画素を更新するため列デルタを使用することが可能である:
UpperClock.column += DataDelta.pixel
LowerClock.column += DataDelta.pixel
UpperClock.pixel -= DataDelta.column
LowerClock.pixel -= DataDelta.column
この時点で、次のドット列の推定値が得られる。
【0609】
タイミング
タイミングの必要条件は、DRAM利用率が100%を超えない限り充たされ、並列アルゴリズムの追加によってタイミングが増大されるがDRAM利用率は100%を超えない。DRAM利用率はプロセス1に関して特定され、このプロセス1は各画素を1回ずつ連続的に書き込み、DRAM帯域幅の9%を消費する。
【0610】
このセクションに記載されるようなタイミングは、DRAMが代替Artcardリー
ダーアルゴリズムの要求に容易に対処し得ることを示す。したがって、タイミングのボトルネックは、DRAMアクセスではなく、ロジック速度に関するアルゴリズムの実装であろう。しかし、アルゴリズムは、アーキテクチャの単純さに留意して設計され、メモリサイクル毎に最小限の個数の論理演算しか要求しない。この点で、実装された状態機械又は等価的なCPU/DSPアーキテクチャが以下のサブセクションに記載されているように実行可能である限り、目標速度は達成されるであろう。
【0611】
ターゲット位置検出
ターゲットは画素列の境界内の画素を読み出すことによって位置検出される。各画素は高々1個ずつ読み出される。ランレングスエンコーダが十分高速に動作する場合を考えると、ターゲットの位置検出の限界はメモリアクセスである。したがって、アクセスはプロセス1のタイミング、即ち、DRAM帯域幅の9%利用率よりは悪化しないであろう。
【0612】
したがって、ターゲット位置検出中の(プロセス1を含む)DRAMの総利用率は18%であり、ターゲットロケータは、常に、代替Artcardのイメージセンサ画素リーダーに追従している。
【0613】
ターゲットの処理
ターゲット番号をソートしチェックするためのタイミングは取るに足らない。2個のターゲット中心の各々のより良い推定値を見つけるためには、12組の12画素の読み出し、即ち、全部で144回の読み出しを必要とする。しかし、正確なターゲット中心の修復は些細ではなく、2組の推定を必要とする。各ターゲット中心の調整には、8組の20種類の6エントリー型コンボリューションカーネルが必要である。このようにして、その合計は、8×20×6回の乗算−累算=960に達する。その上、7組の7画素を獲得するため49回のメモリアクセスが必要である。したがって、1ターゲット当たりの総数は、144+960+49=1153であり、これは、画素の列内の画素数(1152)とほぼ同数である。このように、各ターゲット推定は、1行の画素を処理するために要する時間を消費する。ターゲットが2個の場合、実質的に2列の画素列に要する時間を消費する。
【0614】
ターゲットは、第1の画素列上でターゲット番号の後に確実に識別される。方位列の前には2列のドット列が存在するので、6列の画素列が存在する。ターゲット位置検出プロセスは、最初の画素列を使い果たすが、残りの5列の画素列は全く処理されない。したがって、データエリアは、他のプロセス時間に影響を与えることなく、利用可能な時間の2/5内に位置検出することができる。
【0615】
利用可能な時間の残りの3/5は、白色及び黒色画素のレンジを割り当てる些細なタスクのために十分であり、1タスクは高々2から3マシーンサイクルを使用する。
【0616】
データ抽出
タイミングに関して、次の二つの部分を考慮すべきである:
*正確なクロックマーク及び境界値を取得すること;
*ドット値を抽出すること。
【0617】
クロックマーク及び境界値は、1ドット列おきにしか収集されない。しかし、より正確にするためにクロックマーク推定値を更新する毎に、20種類の6エントリー型コンボリューションカーネルを評価しなければならない。平均的に、1ドット列当たりにそのうちの2個が存在する(2ドット列毎に4個)。境界に基づいて画素座標を更新するためには、同じ画素走査線からの7画素だけが必要である。しかし、列座標を更新するためには、異なる列、即ち、異なる走査線からの7画素が必要である。走査線エントリー毎に1回のキャッシュミスが生じ、同じ走査線内の画素に対して2回のキャッシュミスが生じる最悪ケースの状況を想定すると、全部で8回のキャッシュミスが起こる。
【0618】
ドット情報を抽出するためには、1ドット毎に(ドットを定義する平均9個ではなく)4画素だけを読み出す。1152画素(384ドット)のデータエリアを想定すると、せいぜい、これは、9画素ドットではなく4画素ドットを読み出すことによって、72回のキャッシュ読み出しを節約するに過ぎない。最悪ケースは、57画素毎に1列だけ移動する1°の回転であるが、節約の程度が僅かに悪化するだけである。
【0619】
最悪の場合、読み出すキャッシュラインの数は、データエリア内の画素によって使われたキャッシュラインよりも少なくなる、といっても構わない。したがって、アクセスはプロセス1、即ち、DRAM帯域幅の9%利用率よりも悪化することはない。
【0620】
したがって、データ抽出中(プロセス1を含む)のDRAM総利用率は18%であり、データ抽出部は、常に、代替Artcardのイメージセンサ画素リーダーに追従する。これにより実装されるターゲット処理プロセスでは、ターゲットの処理は、かなり非効率的な方法によって実行されるが、依然として、必要に応じて、データ抽出プロセス中に迅速に追従する。
【0621】
フェーズ2−ビットイメージ復号
フェーズ2は、代替Artcardのデータ復元アルゴリズムの非リアルタイムフェーズである。フェーズ2の先頭で、ビットイメージは代替Artcardから抽出されている。ビットイメージは、代替Artcardのデータ領域から読み出されたビットを表現する。一部のビットには誤りがあり、おそらく、代替Artcardは挿入時に回転させられているので、データ全体は180°回転している。フェーズ2は、この符号化されたビットイメージから原データを確実に抽出することに関係している。基本的に、図79に示されるように3ステップが実行される:
*代替Artcardが逆向きに挿入されているならば反転して、ビットイメージを再編成する;
*符号化されたデータをスクランブル解除する;
*ビットイメージからのデータをリード・ソロモン復号化する。
【0622】
3ステップの各々は別個のプロセスとして定義され、あるプロセスの出力は次のプロセルの入力として要求されるので、連続して実行される。最初の2ステップを単一プロセスに併合することは簡単であるが、説明の便宜上、ここでは、別個のプロセスとして取り扱う。
【0623】
データ/プロセスの観点からみると、フェーズ2は図80に示されるような構造を有する。
【0624】
プロセス1及び2のタイミングは無視することが可能であり、その間に1/1000秒未満しか消費しない。プロセス3(リード・ソロモン復号)は、約0.32秒を消費し、これがフェーズ2のために必要な合計時間になる。
【0625】
ビットイメージ再編成、必要に応じて反転
DRAM内のビットマップは、この時点で、代替Artcardから取得されたデータを表現する。しかし、ビットイメージは連続していない。ビットイメージは64個の32k単位のチャンクに分割され、データブロック毎に1チャンクがある。32kチャンクの各々は、28656個の有効バイトだけ、即ち、
最も左側の方位列からの48バイトと、
真のデータ領域からの28560バイトと、
最も右側の方位列からの48バイトと、
未使用の4112バイトと、
を格納する。
【0626】
画素データ(フェーズ1のプロセス1によって格納)のために使用される2MBバッファは、再編成されたビットイメージを保持するために使用可能である。なぜならば、画素データはフェーズ2の間では要求されないからである。再編成の最後に、正しく向きを与えられた連続したビットイメージは、2MB画素バッファに収容され、リード・ソロモン復号化のための準備ができている。
【0627】
カードの向きが正しい場合、最も左側の方位列は白色であり、最も右側の方位列は黒色である。カードが180°回転している場合、最も左側の方位列は黒色であり、最も右側の方位列は白色である。
【0628】
カードが正しい向きにされているかどうかを判定する簡単な方法は、白色ビットに対する黒色ビットの比率が圧倒的であるブロックが見つかるまで、各データブロックを一つずつ使用して、データの最初及び最後の48バイトをチェックすることである。以下の擬似コードはこの方法を例示し、カードが正しい向きに置かれているときTRUEを返し、そうではなければFALSEを返す:
Figure 2001523900
データは、この時点で、カードが正しい向きであるかどうかに基づいて認識できるはずである。最も簡単なケースは、カードが正しい向きにされている場合である。この場合、データは、方位列を除去し、データ全体を連続させるために、少しだけ動かす必要がある。これは、以下の擬似コードに示されるように元の位置で非常に簡単に実現される:
Figure 2001523900
それ以外の場合は、データを実際に反転させる必要がある。データを反転させるアルゴリズムは非常に簡単であるが、簡単にするために、256バイトのテーブルReverseを用いる。ここで、Reverse[N]の値はNのビット反転である:
Figure 2001523900
両方のプロセスのタイミングは無視することが可能であり、1/1000秒未満しか消費しない:
*2MB連続読み出し(2048/16×12ns=1536ns);
*2MB実効的連続バイト書き込み(2048/16×12ns=1536ns)。
【0629】
符号化画像のスクランブル解除
ビットイメージは、1827840個の連続した、正しい向きにされた、スクランブル付きのバイトである。バイトは、1ブロックが255バイト長からなる7168個のリード・ソロモンブロックを生成するために、スクランブル解除されなければならない。スクランブル解除プロセスは非常に簡単であるが、スクランブル解除処理は元の場所で実行できないので、別個の出力バッファを必要とする。図80は、スクランブル解除プロセスが行われるメモリの説明図である。
【0630】
以下の疑似コードはスクランブル解除プロセスの実行方法を規定する:
Figure 2001523900
このプロセスのためのタイミングは無視することが可能であり、1/1000秒未満しか消費しない:
*2MB連続読み出し(2048/16×12ns=1536ns);
*2MB非連続バイト書き込み(2048×12ns=24576ns)。
【0631】
このプロセスの終了時、スクランブル無しデータがリード・ソロモン復号化のために準備できる。
【0632】
リード・ソロモン復号化
代替Artcardの読み出しの最後の部分は、リード・ソロモン復号化プロセスであり、ここでは、約2MBのスクランブル無しデータが約1MBの有効代替Artcardデータに復号化される。
【0633】
このアルゴリズムは、同時に一つのリード・ソロモンブロックを復号化し、(必要であれば)元の場所で実行可能である。なぜならば、符号化されたブロックは復号化されたブロックよりも大きく、冗長バイトがデータバイトの後に格納されているからである。
【0634】
最初の2個のリード・ソロモンブロックは制御ブロックであり、ビットイメージから抽出されるべきデータのサイズに関する情報を含んでいる。このメタ情報は、最初に復号化する必要があり、得られた情報が真のデータを復号化するため使用される。真のデータの復号化は、単に同時に一つずつデータブロックを復号化する問題である。特定のブロックの復号化が失敗した場合、控えのデータブロックを使用することが可能である。
【0635】
最上位レベルのリード・ソロモン復号化を疑似コードで提示する:
Figure 2001523900
DecodeBlockは、標準的なリード・ソロモンブロックデコーダであり、m=8及びt=64を使用する。
【0636】
GetControlData関数は、復号化エラーが生じない限り簡単である。この関数は、成功するまで、同時に一つの制御ブロックを復号化するためDecodeBlockを呼び出すだけである。制御パラメータは、復号化されたデータの最初の3バイトから抽出することができる(destBlocksはバイト0及び1に格納され、lastBlock
はバイト2に格納される)。復号化エラーが存在する場合、この関数は、32組の3バイトをトラバースし、最も確からしい値の組を決定しなければならない。一つの簡単な方法は、3バイトの中から2個の連続した等しいコピーを見つけ、これらの値が正しい値であるとして決めることである。他の方法は、出現する3バイトの組の種類数をカウントし、最もよく出現する組が正しい組であると決める。
【0637】
リード・ソロモン復号化に要する時間は実装に依存する。リード・ソロモン復号化プロセスを実行するために専用コア(例えば、LSIロジックのL64712)を使用可能であるが、アプリケーションに応じて(通常、復号化されたデータを用いて何かを実行するために)内蔵型システムの全体でより汎用的に使用できるCPU/DSPの組み合わせを選択する方が好ましい。勿論、復号化時間はCPU/DSPの組み合わせの場合にも十分に高速でなければならない。
【0638】
L64712は、毎秒50Mビット(毎秒約6.25MB)のスループットがあるので、時間は、最大で2MB読み出し及び1MB書き込みのメモリアクセス時間ではなく、リード・ソロモンデコーダの速度によって制約される。最悪のケース(全ての2MBが復号化を必要とするケース)に要する時間は、従って、2/6.25秒=約0.32秒である。勿論、以下の改良を含む多数の改良を考えることができる。
【0639】
読み出し環境のブラー効果が大きいほど、所定のドットは周辺ドットからより大きい影響を受ける。好適な実施例による現在の読み出しアルゴリズムは、ドット値に関してより優れた決定を行うため、同一列内の周辺ドットを使用する能力を備えている。前の列のドットは既に復号化されているので、前の列のドット履歴は、画素値が不確実なレンジに含まれるドットの値を決定する際に役に立つ。
【0640】
初期ステージに関する別の可能性は、それを完全に取り除き、データブロックの初期境界を必要とされる境界よりも広くし、ターゲット処理関数をより知的にすることである。これは、全体的な複雑さを軽減する。データブロックの独立性を維持するために注意する必要がある。
【0641】
制御ブロック機構はより頑強にすることができる:
*制御ブロックは、(本例のケースのように)隣接させるのではなく、最初のブロック及び最後のブロックでもよい。これは、ある種の異常なダメージ状況に対する保護を高めるであろう;
*第2の改良は、リード・ソロモン復号化ステップが失敗した場合に使用される補助的なレベルの冗長性/誤り検出を制御ブロック構造に取り入れることである。パリティのような簡単な仕組みは、リード・ソロモンステージが失敗した場合に、制御情報のもっともらしさを改良する。
【0642】
フェーズ5 Varkスクリプト実行
Artcard9を読み出し、それを復号化するために要する総時間は、したがって、約2.15秒である。ユーザがはっきりとわかる遅延は、実際には0.65秒(フェーズ3及び4の合計)に過ぎない。なぜならば、Artcardは1.5秒後に移動を停止するからである。
【0643】
Artcardがロードされると、Artvarkスクリプトを解釈しなければならない。スクリプトを直ちに実行するのではなく、スクリプトは「プリント」ボタン13(図1)が押下されたときだけに実行される。スクリプトを実行するための所要時間は、スクリプトの複雑さに応じて変化し、プリントボタンの押下と、実際のプリントボタンと、実際の印刷動作との間で認識される遅延を考慮しなければならない。
【0644】
上述の通り、VLIWプロセッサ74は、コンピュータ利用の費用がかかるVark関数を加速するデジタル処理システムである。CPUコア72によってソフトウェアで実行される関数と、VLIWプロセッサ74によってハードウェアで実行される関数のバランスは、実装に依存する。VLIWプロセッサ74の目的は、全てのArtcardスタイルがユーザからみて遅いと感じられない時間内で実行することを助けることである。CPUが高速で強力になると共に、ハードウェア加速を必要とする関数の数は減少し続ける。VLIWプロセッサは、以下の時間的に重要な関数の汎用ハードウェア高速化を可能にさせるマイクロコード化されたALUサブシステムを含む:
1)汎用ソフトウェア処理のための画像アクセス機構
2)画像コンボルバ
3)データ駆動型画像ワーパー
4)画像スケーリング
5)画像モザイク
6)アフィン変換
7)画像コンポジッター
8)色空間変換
9)ヒストグラムコレクタ
10)画像の照明
11)ブラシスタンパー
12)ヒストグラムコレクタ
13)CCDイメージから内部画像への変換
14)画像ピラミッドの構築(ワーパーによってブラッシングのため使用される)。
【0645】
以下の表は、ALUモデルに実装された場合の各Vark演算の所要時間を要約したものである。ALUモデルを使用する関数を実装する方法は後述される。
【0646】
【表57】
Figure 2001523900
例えば、CCD画像を変換するため、ヒストグラム収集、及び(画像強調用)ルックアップ色置換のために1画素当たりに9+2+0.5サイクル、即ち、11.5サイクルを要する。1500×1000画像の場合、これは、172500000、即ち、1コンポーネント当たりに約0.2秒、即ち、全3コンポーネント当たりに0.6秒である。簡単なワープを追加すると、全体で、0.6+0.36、即ち、ほぼ1秒になる。
【0647】
画像コンボルバ
コンボルブは中心画素周りの重み付き平均化である。この平均は、単純な加算でもよく、絶対値の和でもよく、和の絶対値でもよく、或いは、0で丸められた和でもよい。
【0648】
画像コンボルバは汎用コンボルバであり、可変サイズ係数カーネル内の値を変えることによって様々な関数を実現できる。サポートされるカーネルサイズは、3×3、5×5、及び7×7だけである。
【0649】
図82を参照すると、コンボリューションプロセスの一例340が示されている。コンボルバプロセス341に供給される画素コンポーネント値は、ボックス読み出しイタレータ342から与えられる。イタレータ342は行単位で画像データを供給し、各行内では、画素毎に画像データを供給する。コンボルバ341からの出力は、順次書き込みイタレータ344へ送られ、順次書き込みイタレータ344は有効画像フォーマットで合成画像を格納する。
【0650】
係数カーネル346は、DRAM内のルックアップテーブルである。カーネルは、ボックス読み出しイタレータ342と同じ順序に係数が並べられる。各係数エントリーは8ビットである。単純な順次読み出しイタレータは、カーネル346を指定し、係数を与えるため使用される。これは、カーネルサイズと一致する画像幅ImageWidthの画像をシミュレーションし、ループオプションがセットされるので、カーネルは連続して供給される。
【0651】
ALUユニット上のコンボルブプロセスの一実施形態は図81に示されている。以下の定数がソフトウェアによってセットされる。
【0652】
【表58】
Figure 2001523900
制御ロジックは、1画素当たりの乗算/加算の回数をカウントダウンするため使用される。カウント(ラッチ2に累算)が0に達するとき、生成される制御信号は(ラッチ1からの)現在のコンボルブ値を書き出し、カウントをリセットするため使用される。このようにして、一つの制御ロジックブロックは、多数の並列コンボルブストリームのために使用される。
【0653】
各サイクルに、乗算ALUは、画素の適切な部分を組み込むため、1回の乗算/加算を実行することができる。全ての値を総計するために要するサイクル数は、したがって、カーネル内のエントリーの個数である。これは計算制約であるため、画像を複数のセクションに分割し、それらを異なるALUユニットで並列に処理することが適切である。
【0654】
7×7カーネル上で、各画素に要する時間は49サイクル、即ち、490nsである。各キャッシュラインは32画素を保持するので、メモリアクセスのために利用可能な時間は、((32−7+1)×490ns)、即ち、12740nsである。7本のキャッシュラインを読み出し、1本を書き込むために要する時間は、より悪いケースであって、1120ns(全てのアクセスが同じDRAMバンクへのアクセスであるとして、8*140ns)である。その結果として、リソースが無制限であるならば、最大10画素を並列に処理することが可能である。ALUの個数が限定されている場合、最高で4画素を並列に処理することができる。従って、7×7カーネルを使用してコンボリューションを実行するために要する時間は、0.18375秒(1500*1000*490ns/4=183750000ns)である。
【0655】
5×5カーネル上で、各画素に要する時間は25サイクル、即ち、250nsである。各キャッシュラインは32画素を保持するので、メモリアクセスのために利用可能な時間は、((32−5+1)×250ns)、即ち、7000nsである。5本のキャッシュラインを読み出し、1本を書き込むために要する時間は、より悪いケースであって、840ns(全てのアクセスが同じDRAMバンクへのアクセスであるとして、6*140ns)である。その結果として、リソースが無制限であるならば、最大7画素を並列に処理することが可能である。ALUの個数が限定されている場合、最高で4画素を並列に処理することができる。従って、5×5カーネルを使用してコンボリューションを実行するために要する時間は、0.09375秒(1500*1000*250ns/4=93750000ns)である。
【0656】
3×3カーネル上で、各画素に要する時間は9サイクル、即ち、90nsである。各キャッシュラインは32画素を保持するので、メモリアクセスのために利用可能な時間は、((32−3+1)×90ns)、即ち、2700nsである。3本のキャッシュラインを読み出し、1本を書き込むために要する時間は、より悪いケースであって、560ns(全てのアクセスが同じDRAMバンクへのアクセスであるとして、4*140ns)である。その結果として、リソースが無制限であるならば、最大10画素を並列に処理することが可能である。ALU及び読み出し/書き込みイタレータの個数が限定されている場合、最高で4画素を並列に処理することができる。従って、3×3カーネルを使用してコンボリューションを実行するために要する時間は、0.03375秒(1500*1000*90ns/4=33750000ns)である。この結果として、各出力画素は、計算をするためにカーネルサイズ/3サイクルを要する。実際のタイミングは以下の表に要約されている。
【0657】
【表59】
Figure 2001523900
画像コンポジッター
コンポジット処理は、最終画像における前景及び背景の適切な比率を制御するため、マット又はチャンネルを使用して前景画像を後景画像に加算することである。好ましくは、通常コンポジット処理及び付随コンポジット処理の二つのスタイルのコンポジット処理がサポートされる。二つのスタイルの規則は、
通常コンポジット処理:新しい値=前景+(背景−前景)a
付随コンポジット処理:新しい値=前景+(1−a)背景
である。
【0658】
相違点は、付随コンポジット処理の場合、前景はマットによって予め乗算されているのに対して、通常コンポジット処理の場合、そのようにされていないことである。コンポジットプロセスの一例は図83に示されている。
【0659】
アルファチャネルは、レンジ0から1に対応した0から255の値をとる。
【0660】
通常コンポジット
通常コンポジットは、
背景+(背景−前景)*α/255
として実装される。
【0661】
X/255による除算は、257X/65536によって近似される。コンポジットプ
ロセスの実装例は図84に詳細に示され、以下の定数がソフトウェアによってセットされる。
【0662】
【表60】
Figure 2001523900
4個のイタレータが必要であるため、コンポジットプロセスは1画素当たりに1サイクルを要し、ALUの半分しか利用しない。コンポジットプロセスは一つのチャンネルだけで実行される。3チャンネル画像を互いにコンポジットするためには、コンポジッターは、各チャンネルに1回ずつの合計3回実行されなければならない。
【0663】
フルサイズの単一チャンネルをコンポジットするための所要時間は、0.015秒(1500*1000*1*10ns)であり、3チャンネル全てをコンポジットするために0.045秒を要する。
【0664】
255による除算を近似するため、257倍した後に65536で除算する。これは、1回の加算(256*x+x)と、その結果の最後の16ビットの無視(丸めの目的を除く)とによっても実現可能である。
【0665】
図42に示されるように、コンポジットプロセスは、3個の順次読み出しイタレータ351−353と、1個の順次書き出しイタレータ355とを必要とし、乗算器ALUと共にアダーALUと共にアダーを使用するマイクロコードとして実装される。コンポジット時間は1画素当たり1サイクル(10ns)である。付随コンポジット処理と通常コンポジット処理は別々のマイクロコードを必要とするが、1画素当たりの平均時間は同じである。
【0666】
コンポジット処理は単一チャンネルだけで実行される。一つの3チャンネル画像を互いにコンポジットするために、コンポジッターは、チャンネル毎に1回ずつ、併せて3回実行される。aチャンネルは各コンポジットに対して同一であるため、それは毎回読み出される必要がある。しかし、最良ケースでの4×32バイトのキャッシュラインの転送(読み出し又は書き込み)は320nsを要する。パイプラインは、平均で1画素コンポジット当たりに1サイクルを与え、32画素をコンポジットするために32サイクル、即ち、320ns(100MHz)を要するので、チャンネルは実質的に無制限で読み出される。したがって、全チャンネルは、
1500/32*1000*320ns=15040000ns=0.015秒
でコンポジットされる。
【0667】
フルサイズの3チャンネル画像をコンポジットするための所要時間は0.045秒である。
【0668】
画像ピラミッド構築
ワーピング、タイリング、及びブラッシングのような幾つかの関数は、所定の画素のエリアの平均値を必要とする。所与の各エリアの値を計算するのではなく、これらの関数は、好ましくは、画像ピラミッドを利用する。既に図33に示されたように、画像ピラミッド360は、実質的に多重解像度画素マップである。原画像は1:1表現である。各次元での2:1によるサブサンプリングは、元のサイズの1/4の画像を生成する。このプロセスは画像全体が単一画素によって表現されるまで続く。
【0669】
画像ピラミッドは原画像から構築され、原画像によって占められたサイズの1/3(1/4+1/16+1/64+...)を使う。原画像が1500×1000である場合、対応した画像ピラミッドは約1/2MBである。
【0670】
画像ピラミッドは、コンボルブのカーネルを各次元で2画素ずつ前進させるワン・イン・フォー入力画像に基づいて実行される3×3コンボルブによって構築することができる。3×3コンボルブは、単純な4画素の平均化よりも高い精度を生じ、異なるピラミッドレベルの座標の差が1レベル毎に1ビットだけシフトすることによって得られるという付加的な利点がある。
【0671】
ピラミッド全体の構築は、ピラミッドの各レベルで1回ずつピラミッドレベル構築関数を呼び出すソフトウェアループに依拠している。
【0672】
ピラミッドの1レベルを生成するためのタイミングは、入力画像の解像度の(9/4)*(1/4)である。なぜならば、原画像の1/4のサイズの画像を生成しているからである。このようにして、1500×1000画像に対して、
ピラミッドのレベル1を生成するためのタイミング=9/4*750*500=843750サイクルであり、
ピラミッドのレベル2を生成するためのタイミング=9/4*375*250=210938サイクルであり、
ピラミッドのレベル3を生成するためのタイミング=9/4*188*125=52735サイクルであり、
以下同様に続く。
【0673】
総時間は、原画像1画素当たりに3/4サイクル(画像ピラミッドは原画像サイズの1/3であり、各画素は計算に9/4サイクルを要し、即ち、(1/3)*(9/4)=3/4)である。1500×1000画像の場合、(100MHz)で1125000サイクル、即ち、0.011秒である。このタイミングは単一色チャンネルに対するタイミングであり、3色チャンネルは0.034秒の処理時間を要する。
【0674】
汎用データ駆動型画像ワーパー
ACP31は、入力画像の画像ワーピング操作を実行可能である。画像ワーピングの原理は理論的に周知である。ワーピングのプロセスに関する一つの完全な教科書は、Geroge
Wolbergによる''Digital Image Warping'', IEEE Computer Society Press,
Los Alamitos, California,
1990である。ワーピングプロセスは、Artcard9によって供給されたデータの一部を形成するワープマップを使用する。ワープマップは、必要条件に応じて任意的に寸法を決めることができ、入力画素の出力画素へのマッピングの情報を提供する。残念なことに、任意的に寸法を決められたワープマップの利用は、画像ワーパーによって解決されるべき多数の問題を生じる。
【0675】
図85を参照すると、A×B次元のワープマップ365は、ある大きさ(例えば、0から255の8ビット値)の配列値により構成され、この配列値は理論的な入力画像の座標を表現し、理論的な入力画像の座標は同じ配列座標インデックスを有する対応した「理論的な」出力画像へマップされる。残念ながら、出力画像、例えば、出力画像366は固有の次元C×Dを有し、これは、固有の次元E×Fを有する入力画像とは全く異なる。したがって、出力画像366が、出力画素毎に、対応した入力画像のエリア又は領域を決定できるように、ワープマップ365のマッピングを容易に行えるようにする必要がある。出力画素色データは、対応した入力画像のエリア又は領域から構築される。出力画像366内の各出力画素に対して、最初に、ワープマップ365から対応したワープマップ値を決定することが必要である。このため、出力画像画素がワープマップテーブル365内の小数位置にマッピングされるときに、周辺ワープマップ値をバイリニア補間することが必要である。このプロセスの結果は、ワープマップ365内の各データ値のサイズによって寸法が決められる「理論的な」画像内での入力画像画素の位置を与える。これらの値は、理論的な画像を対応した実際の入力画像367へマッピングするため再度スケーリングしなければならない。
【0676】
実際の値を決定するため、出力画像画素はエイリアシング効果を回避するように選ばれるべきであり、最終的な出力画像画素値に寄与する入力画像画素367の領域を決定するために隣接した出力画像画素を調べる必要がある。この点に関して、以下でより明らかにされるように、画像ピラミッドが利用される。
【0677】
画像ワーパーは画像をワープさせるため以下の幾つかのタスクを実行する:
−出力画像サイズに一致するようにワープマップをスケーリングする;
−各出力画素に表現される入力画像画素の領域のスパンを決定する;
−入力画像ピラミッドからトライリニア補間によって最終的な出力画素値を計算する。
【0678】
ワープマップスケーリング
前述の通り、データ駆動型ワープでは、ワープマップは、出力画素毎に、対応した入力画像マップの中心を記述することが必要である。前述のように単一ワープマップを用いる代わりに、インターリーブされたx及びy値情報を格納すると、X座標及びY座標を別個のチャンネルとして取り扱うことが可能である。
【0679】
その結果として、好ましくは、二つのワープマップが設けられ、XワープマップはX座標のワーピングを表し、YワープマップはY座標のワーピングを示す。前述のように、ワープマップ365は、スケーリング中の画像とは異なる空間解像度でもよい(例えば、32×32ワープマップ365は、1500×1000画像366のワープを適切に記述する)。その上、ワープマップは、ワープ中の画像のサイズに対応した8又は16ビット値によって表現可能である。
【0680】
所定のワープマップから入力画像空間に点を生成するために幾つかのステップが含まれる:
1.出力画像に対してワープマップ内に対応した位置を決定する;
2.次のステップのため、ワープマップから値をフェッチする(これは、ワープマップがほんの8ビット値である場合に、解像度ドメインにおけるスケーリングを必要とする);
3.実際の値を決定するためワープマップのバイリニア補間を行う;
4.入力画像ドメインに対応するように値をスケーリングする。
【0681】
最初のステップは、出力画像における現在のX/Y座標にスケール倍率(XとYで異なる場合がある)を乗算することにより実行される。例えば、出力画像が1500×1000であるならば、ワープマップは150×100であり、XとYの両方は1/10によってスケーリングされている。
【0682】
ワープマップから値をフェッチするためには、二つのルックアップテーブルにアクセスすることが必要である。一方のルックアップテーブルは、ルックアップテーブルから8又は16ビットのエントリーを読み出し、常に16ビット値を返す(元の値が8ビットしかない場合、上位8ビットをクリアする)。
【0683】
パイプラインの次のステップは、参照されたワープマップ値をバイリニア補間することである。
【0684】
最後に、バイリニア補間からの結果がスケーリングされ、ワープされるべき画像と同じドメインに収容される。このようにして、ワープマップのレンジが0から255である場合、Xを1500/255でスケーリングし、Yを1000/255でスケーリングする。
【0685】
補間プロセスは図86に示されているようなプロセスであり、以下の定数がソフトウェアによってセットされる。
【0686】
【表61】
Figure 2001523900
以下のルックアップテーブルが使用される。
【0687】
【表62】
Figure 2001523900
スパン計算
ワープマップ365からの点は入力画像367内の画素領域の中心の位置を示す。隣接した出力画像画素の入力画像画素の間の距離は領域のサイズを示し、この距離は、スパン計算によって近似することができる。
【0688】
図87を参照すると、ワープマップP1の所定の現在点に対して、同じライン上の前のポイントはP0であり、前のラインの同じ位置にあるポイントはP2である。P1とP0の間、並びに、P1とP2の間で、X及びYの絶対距離を決定する。X又はYの最大距離は、実際の形状を近似する正方形であるスパンになる。
【0689】
好ましくは、点は、垂直方向ストリップの出力順に処理され、P0はストリップ内の同じ線で先行する点であり、P1がストリップ内の最初の点であるとき、P0は、前のストリップの対応した線の最後の点を表す。P2は同一ストリップ内の前の線の点であるため、32エントリーの履歴バッファに保持され得る。スパン計算プロセスの原理は図88に示され、そのプロセスの詳細は図89に示されている。
【0690】
以下のDRAMのFIFOが使用される。
【0691】
【表63】
Figure 2001523900
32ビット精度のスパン履歴が保持されるので、1500画素幅の画像がワープされる場合、12000バイトの一時記憶が必要になる。
【0692】
スパン364の計算は、二つのアダーALU(一方はスパン計算用であり、もう一方はP0及びP2の履歴をループしカウントするためのものである)を使用し、以下のように7サイクルを要する。
【0693】
【表64】
Figure 2001523900
履歴バッファ365、366は、キャッシュ型のDRAMである。「前のライン」(P2履歴の場合)バッファ366は、32エントリーのスパン精度である。「前の点」(P0履歴の場合)バッファ365は、(ストリップの線の点1から31の計算のため)殆どの場合に使用される1個のレジスタを必要とし、DRAMにバッファされた履歴値の組はストリップの線の点0の計算に使用される。
【0694】
スパン履歴の32ビット精度は、P2履歴を保持するため4本のキャッシュラインと、P0履歴のための2本のキャッシュラインと、を必要とする。P0の履歴は、32画素からなる8本の線毎に1回ずつ、(ImageHeight*4)バイトの一時記憶空間に書き込まれ、読み出される。このようにして、1500画素の高さの画像がワープされるとき、6000バイトの一時記憶が必要であり、全部で6本のキャッシュラインが必要である。
【0695】
トライリニア補間
平均化されるべき入力画像からエリアの中心及びスパンを決定した後、ワーププロセスの最終部分は、出力画素の値を決定することである。単一の出力画素は、理論的に入力画像全体によって表現できるので、出力画素に寄与する入力画像の特定のエリアを実際に読み出し平均化するためには、非常に時間を消費する可能性がある。その代わりとして、入力画像の画像ピラミッドを使用することにより画素値を近似することができる。
【0696】
スパンが1以下である場合、所与の座標の周辺で原画像の画素を読み出し、バイリニア補間を実行するだけでよい。スパンが1よりも大きい場合、二つの適切なレベルの画像ピラミッドを読み出し、トライリニア補間を実行する必要がある。二つのレベルの画像ピラミッドの間にリニア補間を実行することは、厳密に正確ではないが、許容可能な結果を与える(それは結果画像にブラー効果が生じる側で判断を誤る)。
【0697】
図90を参照すると、一般的には、あるスパン「s」が与えられた場合に、ln2s(370)及びln2s+1(371)によって与えられる画像ピラミッドレベルを読み出すことが必要である。Ln2sは、sの上位ビットセットを復号化するだけである。ピラミッドの二つのレベル370、371の各々で画素値の値を決定するためバイリニア補間を実行し、レベル間で補間を実行しなければならない。
【0698】
図91に示されるように、最終的な出力値373を得るため、ピラミッドレベル間で補間を行う前に、最初に各画素ピラミッドレベルのX及びYに関して補間を行うことが必要である。
【0699】
画像ピラミッドアドレスモードは、ピラミッドレベルs及びs+1上の(x,y)における画素座標に対するアドレスを生成する。各レベルの画像ピラミッドは、xの方向に連続した画素を格納する。したがって、xに関する読み出しはキャッシュヒットする可能性が高い。
【0700】
適度なキャッシュヒットのコヒーレンスは、出力画像の局所領域が典型的に入力画像と局所的にコヒーレントである(おそらく、スケールは異なるが、同じスケールでコヒーレントである)ときに獲得される。入力画像と出力画像との関係を知ることはできないが、出力画素は、キャッシュコヒーレンスを最大限に利用するため、(垂直ストリップイタレータによって)確実に垂直ストリップに書き込まれる。
【0701】
トライリニア補間は、パイプラインとして4個の乗算ALU及び4個全てのアダーALUを使用し、メモリアクセスの必要がない場合を想定すると、平均的に2サイクル程度で完了し得る。しかし、全ての補間値は画像ピラミッドから得られるので、補間速度はキャッシュコヒーレンスに完全に依存する(その他のユニットはワープマップスケーリング及びスパン計算を実行するためビジーであることは言うまでもない)。できるだけ多数のキャッシュラインを画像ピラミッド読み出しのために利用できるべきである。最良の速度は、2個の乗算ALUを使用して8サイクルである。
【0702】
出力画素は、二つのキャッシュラインを使用する垂直ストリップ書き込みイタレータによってDRAMに書き込まれる。この速度は、従って、1出力画素当たりに8サイクルの最小値で制限される。ワープマップのスケーリングに必要なサイクルが8サイクル以下であるならば、全体的な速度は変化しない。さもなければ、スループットはワープマップをスケーリングするために要する時間である。殆どの場合に、ワープマップは写真のサイズと適合するまで拡大される。
【0703】
1画素当たりに必要なサイクル数が8サイクル以下のワープマップをスケーリングする場合、画像の1個のカラーコンポーネントを変換するための所要時間は0.12秒(1500*1000*8サイクル*1サイクル当たりに10ns)である。
【0704】
ヒストグラムコレクタ
ヒストグラムコレクタは、入力として画像チャンネルを取得し、出力としてヒストグラムを生成するマイクロコードプログラムである。チャンネルの画素の各々は、レンジ0−255に収まる値をとる。その結果として、ヒストグラムテーブルには全部で256画素が存在し、各エントリーは32ビットであり、1500×1000の全画像のカウントを十分に収容することができる。
【0705】
図92に示されるように、ヒストグラムは全画像の要約を表現するので、順次読み出しイタレータ378は入力として十分にである。ヒストグラム自体は、完全にキャッシュされ、32個のキャッシュライン(1K)を必要とする。
【0706】
マイクロコードは二つのパスを有し、初期化パスでは、全てカウントを0にセットし、次に、「カウント」ステージは、画像から読み出された各画素の適切なカウンタをインクリメントする。第1のステージは、アドレスユニットと単一のアダーALUとを必要とし、ヒストグラムテーブル377のアドレスを初期化する。
【0707】
【表65】
Figure 2001523900
第2のステージは、画像からの実際の画素を処理し、4個のアダーALUを使用する。
【0708】
【表66】
Figure 2001523900
アダー2のサイクル2からの零フラグは、入力画素が同じである間、マイクロコードアドレス2に留まるため使用される。入力画素が変化したとき、新しいカウントはマイクロコードアドレス3に書き出され、処理はマイクロコードアドレス2で再開する。マイクロコードアドレス4は最後に使用され、それ以上読み出される画素は存在しない。
【0709】
ステージ1は、256サイクル、即ち、2560nsを要する。ステージ2は、画素の値に応じて変わる。ルックアップテーブル置換のための最悪ケースの時間は、あらゆる画素がその近傍と同じではない場合に、1画像画素当たりに2サイクルである。単一カラーのルックアップに要する時間は0.03秒(1500×1000×1画素当たり2サイクル×1サイクル当たり10ns=30000000ns)である。3個のカラーコンポーネントに要する時間はこの量の3倍、即ち、0.09秒である。
【0710】
色変換
色変換は、
ルックアップテーブル置換、及び
色空間変換
の二つの主要な方法で実現される。
【0711】
ルックアップテーブル置換
図86に示されるように、画素の色を変換するための最も簡単な方法の一つは、任意に複雑な変換関数をルックアップテーブル380にエンコードすることである。画素のコンポーネントカラー値は、画素の新しいコンポーネント値をルックアップ381するため使用される。順次読み出しイタレータから読み出された画素毎に、その新しい値が新カラーテーブル380から読み出され、順次書き込みイタレータ383へ書き込まれる。入力画像は、メモリ帯域幅を効率的に利用するため、半分ずつ同時に処理される。以下のルックアップテーブルが使用される。
【0712】
【表67】
Figure 2001523900
総プロセスは、二つの順次読み出しイタレータ及び二つの順次書き込みイタレータを必要とする。二つの新カラーテーブルは、256バイト(1バイトからなる256個のエントリー)を保持するため、各々に8個のキャッシュラインが必要である。
【0713】
したがって、ルックアップテーブル置換に要する平均時間は1画像画素当たり1/2サイクルである。単一カラーのルックアップに要する時間は0.0075秒(1500×1000×1画素当たり1/2サイクル×1サイクル当たり10ns=7500000ns)である。三つのカラーコンポーネントのための所要時間はこの量の3倍、即ち、0.0225秒である。各カラーコンポーネントは、ソフトウェアの制御下で次々に処理される。
【0714】
色空間変換
色空間変換は、色空間の間を動くときに限り必要である。CCD画像はRGB色空間で撮影され、印刷はCMY色空間で行われ、一方、ACP31のクライアントは、Lab色空間で画像を処理する可能性が高い。入力色空間チャンネルの全ては、典型的に、各出力チャンネルのコンポーネント値を決定するために要求される。このような論理的プロセスが図94の385に示されている。
【0715】
簡潔に言うと、Lab、RGB及びCMYの間の変換は、かなり簡単である。しかし、特定の装置の個別の色プロファイルは著しく変化し得る。その結果として、将来のCCD、インク、及びプリンタを可能にさせるため、ACP31は、色空間変換ルックアップテーブルからのトライリニア補間によって色空間変換を実行する。
【0716】
色コヒーレンスは、線ベースではなく、エリアベースである傾向がある。トライリニア補間ルックアップ中にキャッシュコヒーレンスを補助するため、画像を垂直ストリップで処理することが最良である。このようにして、読み出しイタレータ386−388及び書き出しイタレータ389は、垂直ストリップイタレータである。
【0717】
トライリニア色空間変換
各出力カラーコンポーネントに対して、入力色空間を出力色空間へマッピングする単一の3次元テーブルが必要になる。例えば、CCD画像をRGBからLabへ変換するため、CCDの物理的特性に較正された3個のテーブル、即ち、
RGB->L
RGB->a
RGB->b
が必要になる。
【0718】
LabからCMYへ変換するため、インク/プリンタの物理的特性に較正された3個のテーブル、即ち、
Lab->C
Lab->M
Lab->Y
が必要になる。
【0719】
8ビット入力カラーコンポーネントは、変換テーブルへのインデックス付けのため、固定小数点数(3:5)として取り扱われる。整数の3ビットはインデックスを与え、小数の5ビットは補間として使用される。3ビットは8個の値を与えるので、3次元で512エントリー(8×8×8)が得られる。各エントリーのサイズは1ビットであり、1テーブル当たり512バイトが必要である。
【0720】
したがって、色空間変換プロセスは図95に示されるように実装され、以下のルックアップテーブルが使用される。
【0721】
【表68】
Figure 2001523900
トライリニア補間は、8個の値の間の補間を返す。ルックアップから各8ビット値を返すために1サイクルを要し、全部で8サイクルを要する。トライリニア補間は、1サイクル当たり2個の乗算ALUが使用されたとき、8サイクルを使用する。一般的なトライリニア補間情報はこの文書のALUセクションに記載されている。ルックアップテーブル用の512バイトは16個のキャッシュラインに詰め込まれる。
【0722】
画像の単一のカラーコンポーネントを変換するための時間は0.105秒(1500*1000*7サイクル*1サイクル当たり10ns)である。3コンポーネントを変換するため、0.415秒を要する。都合良く、プリントアウト用の色空間変換は、プリントアウト中にオンザフライ方式で行われる。
【0723】
カラーコンポーネントが別々に変換される場合、それらは入力色空間コンポーネントを上書きしなければならない。なぜならば、入力色空間からの全てのカラーコンポーネントは各コンポーネントを変換するために必要になるからである。
【0724】
補間を実行するために1個の乗算ユニットだけが使用されるので、Lab->CMY変換の全体を単一パスとして行うことが可能である。このためには、三つの垂直ストリップ読み出しイタレータと、三つの垂直ストリップ書き込みイタレータと、が必要であり、3個の変換テーブルに同時にアクセスする。その場合、入力画像へ書き戻し、余分なメモリを使用しないことも可能である。しかし、3個の変換テーブルへのアクセスは、各々に対するキャッシュ処理の1/3に相当し、プロセス全体では高いレイテンシーを生じることになる。
【0725】
アフィン変換
写真を用いて画像をコンポジットする前に、画像を回転、スケーリング、及び並進することが必要である。画像が並進だけされている場合、直接的なサブピクセル平行移動関数を使用する方が高速になる。しかし、回転、拡大、及び並進は、単一のアフィン変換に組み込むことができる。
【0726】
汎用アフィン変換は、加速関数として組み込みことが可能である。アフィン変換は2次元に制限され、縮小される場合、入力画像はスケール関数によって予めスケーリングされるべきである。汎用アフィン変換を備えることにより、出力画像を同時に1ブロックずつ構築することが可能になり、画像に対して多数の変換を実行するために要する時間を削減できる。なぜならば、多数の変換の全てを同時に適用できるからである。
【0727】
変換行列はクライアントによって与えられる必要があり、行列は、望まれる変換の逆行列でなければならない。即ち、その行列を出力画素座標に適用することによって入力座標が得られる。
【0728】
2次元行列は、通常、以下の3×3配列、即ち、
【0729】
【数1】
Figure 2001523900
によって表現される。
【0730】
第3列は常に[0,0,1]であるため、クライアントはそれを指定しなくてもよい。その代わりに、クライアントはa,b,c,d,e,fを指定する。
【0731】
左上画像画素の座標が(0,0)として表される入力画像内の座標(x,y)が与えられた場合、入力座標は、(ax+cy+e,bx+dy+f)によって指定される。入力座標が決定されると、入力画像は、その画素値に達するためサンプリングされる。入力画像画素のバイリニア補間は、計算された座標における画素の値を決定するため使用される。アフィン変換は平行線を保存するので、画像は、最高の平均入力画像キャッシュコヒーレンスを得るため32画素幅の出力垂直ストリップで処理される。
【0732】
3個の乗算ALUは、バイリニア補間を2サイクル内で実行するために必要である。乗算ALU1及び2は、線Y及び線Y+1のそれぞれについてXに関してリニア補間を実行し、乗算ALU3は、乗算ALU1及び2によって出力された値の間でYに関するリニア補間を実行する。
【0733】
Xに関して出力線を横切って右へ移動するとき、2個のアダーALUは、「a」を現在のX値に加算し、「b」を現在のY値に加算することによって、実際の入力画像座標を計算する。次の線(最大で32画素を処理した後の垂直ストリップ内の次の線、又は新しい垂直ストリップの最初の線)へ進んだとき、X及びYを所与のブロックに対する予め計算されたスタート座標値定数に更新する。
【0734】
入力座標を計算するプロセスは図96に示され、同図では、以下の定数がソフトウェアによってセットされる。
【0735】
画素計算
入力画像座標が得られると、入力画像をサンプリングする必要がある。ルックアップテーブルは、バイリニア補間の準備として指定された座標における値を返すため使用される。基本プロセスは図97に示され、以下のルックアップテーブルが使用される。
【0736】
【表69】
Figure 2001523900
アフィン変換は、全部で4個の乗算ALU及び全部で4個のアダーALUを必要とし、良好なキャッシュコヒーレンスがある場合、1出力画素当たり平均2サイクルでアフィン変換を実行できる。このタイミングは優れたキャッシュコヒーレンスを前提とし、この前提は画像に歪みが無い場合には成立する。最悪ケースでは、画像がかなり歪み、重要なVarkスクリプトが含まれている可能性は低い。
【0737】
128×128画像を変換するために要する時間は、0.00033秒(32768サイクル)である。これが4チャンネル(aチャンネルを含む)を備えたクリップ画像である場合、必要な総時間は0.00131秒(131072サイクル)である。
【0738】
垂直ストリップ書き込みイタレータは画素を出力するため必要である。読み出しイタレータは不要である。しかし、アフィン変換アクセラレータは、入力画像画素にアクセスするために要する時間によって制約されるので、できるだけ多数のキャッシュラインが入力画像からの画素の読み出しに割り付けられるべきである。少なくとも32が利用可能であり、好ましくは、64以上が利用可能である。
【0739】
スケーリング
スケーリングは、基本的に画像の再サンプリングである。画像の拡大はアフィン変換関数を用いて実行できる。縮小を含む一般化された画像のスケーリングは、ハードウェア加速型スケール関数によって行われる。スケーリングはX及びYに関して独立に行われるので、異なるスケール倍率を各次元で使用することができる。一般化されたスケールユニットは、位置合わせに関して、アフィン変換スケール関数と適合しなければならない。
【0740】
一般化されたスケーリングプロセスは図98に示されている。Xに関するスケールは図99に示されるようにFantの再サンプリングアルゴリズムによって達成される。
【0741】
以下の定数がソフトウェアによってセットされる。
【0742】
【表70】
Figure 2001523900
以下のレジスタは一時変数を保持するため使用される。
【0743】
【表71】
Figure 2001523900
Yに関するスケールプロセスは図100に示され、X画素の順番の処理を考慮するためFantの再サンプリングアルゴリズムの僅かに変更されたバージョンによっても実現される。
【0744】
以下の定数がソフトウェアによってセットされる。
【0745】
【表72】
Figure 2001523900
以下のレジスタが一時変数を保持するため使用される。
【0746】
【表73】
Figure 2001523900
以下のDRAM FIFOが使用される。
【0747】
【表74】
Figure 2001523900
画像モザイク処理
画像のモザイク処理はタイリングの一形態である。モザイク処理は、特別に設計された「タイル」を、水平方向及び垂直方向に複数回、第2の(通常はより大きい)画像空間へコピーする処理を含む。モザイク処理されたとき、小さいタイルは継ぎ目のないピクチャーを形成する。この一例は、レンガ壁の区画の小さいタイルである。それは、モザイク処理されたときに、完全なレンガ壁を形成するように設計される。尚、モザイク処理には、スケーリング、又はサブピクセル平行移動が含まれないことに注意すべきである。
【0748】
モザイク処理を行うために最もキャッシュコヒーレントな方法は、画像をライン毎に順次に出力し、同じ入力画像のラインを、そのラインの区間の間、繰り返すことである。ラインが終了したとき、入力画像は次のラインへ進められるべきである(出力ラインをはさんで複数回それを繰り返すべきである)。
【0749】
モザイク関数の概要は図101の390に示されている。順次読み出しイタレータ392は入力タイルの単一ラインを連続して読み出すようにセットアップされる(スタートラインは0であり、エンドラインは1である)。各入力画素は、書き込みイタレータ393−395の三つ全てに書き込まれる。アダーALUのカウンタ397は、出力ライン中の画素数をカウントダウンし、ラインの最後にシーケンスを終了する。
【0750】
ラインの処理の最後に、小さいソフトウェアルーチンは、マイクロコード及び順次読み出しイタレータ(これは、FIFOをクリアし、タイルのライン2を繰り返す)を再始動する前に、順次読み出しイタレータのスタートライン及びエンドラインレジスタを更新する。書き込みイタレータ393−395は更新されず、出力画像の対応した部分へ書き込み続けるだけである。正味の効果として、タイルが出力ラインをはさんで1ライン繰り返され、タイルが垂直方向に繰り返される。
【0751】
このプロセスはメモリ帯域幅を完全には使用しない。なぜならば、入力画像におけるキャッシュコヒーレンスは優れているが、モザイク処理を他のサイズのタイルと共に機能させることができないからである。このプロセスは、1個のアダーALUを使用する。3個の書き込みイタレータ393−395の各々が、画像の1/3に書き込む(画像をタイルサイズの境界に分割する)ならば、モザイクプロセスの全体は1出力画像画素当たり1/3サイクルの平均速度で行われる。1500×1000の画像の場合、これは、0.005秒(5000000ns)と一致する。
【0752】
サブピクセルトランスレータ
画像を背景とコンポジットする前に、X及びYの両方に関してサブピクセル量で画像を平行移動させることが必要である。サブピクセル平行移動は、各次元に1画素ずつ画像のサイズを増加することができる。画像の外側の領域の値は、定数値(例えば、黒色)又はエッジ画素繰り返しのようなクライアントによって決定される値である。典型的に、黒色を使用する方がよい。
【0753】
サブピクセル平行移動プロセスは図102に示されている。所定の次元のサブピクセル平行移動は、
Pixelout = Pixelin *
(1-Translation) + Pixelin-1 * Translation
によって定義される。
【0754】
これは、補間の形式、即ち、
Pixelout= Pixelin-1 +
(Pixelin - Pixelin-1) * Translation
として表現することができる。
【0755】
単一の乗算ALU及び単一のアダーALUを組み合わせて使用する単一(又は平均)サイクル補間エンジンの実装は簡単である。X及びYの両方に関するサブピクセル平行移動は、二つの補間エンジンを必要とする。
【0756】
Yに関するサブピクセル平行移動を行うため、二つの順次読み出しイタレータ400、401が必要になり(一方は、同じ画像から他の画像よりも進んでいるラインを読み出す)、一つの順次書き込みイタレータ403が必要になる。
【0757】
第1の補間エンジン(Yに関する補間)は、二つのストリームからのデータペアを受け取り、それらの間を線形に補間する。第2の補間エンジン(Xに関する補間)は、単一の1次元ストリームとしてそのデータを受け取り、値の間を線形に補間する。両方のエンジンは平均として1サイクルで補間を行う。
【0758】
各補間エンジン405、406は、平均的に1出力画素当たり1サイクルでサブピクセル平行移動を実行する能力を備えている。したがって、全体的な時間は1出力画素当たり1サイクルであり、2個の乗算ALUと2個のアダーALUが必要である。
【0759】
サブピクセル平行移動関数から32画素を出力するために要する時間は、平均で320ns(32サイクル)である。これは、DRAMへの完全な4個のキャッシュラインアクセスに十分な時間であり、3個の順次イタレータの使用はタイミング原価以内に十分に収まる。
【0760】
画像をサブピクセル平行移動するために要する総時間は、したがって、出力画像の1画素当たり1サイクルである。サブピクセル平行移動されるべき典型的な画像は、サイズ128*128のタイルである。出力画像サイズは129*129である。このプロセスは、129*129*10ns=166410nsである。
【0761】
画像タイル貼り関数もサブピクセル平行移動アルゴリズムを使用するが、サブピクセル平行移動処理されたデータを書き出す必要はなく、そのデータを更に処理する。
【0762】
画像タイルタイラー
画像をタイル貼りする上位レベルアルゴリズムはソフトウェアで実行される。タイルの配置が決定されると、適切な着色タイルを合成しなければならない。各タイルの画像への実際のコンポジット処理は、マイクロコード化されたALUによってハードウェアで行われる。タイルのコンポジット処理は、背景画像へのテクスチャ貼り付けとカラー貼り付けの両方を含む。ある種のケースでは、背景に加えられる実際のテクスチャ量と、予定されたテクスチャ量とを比較し、貼り付けられるカラーをスケーリングするためこれを使用することが望ましい。これらのケースでは、テクスチャを先に貼り付けることが必要である。
【0763】
カラー貼り付け機能及びテクスチャ貼り付け機能はある程度独立しているので、これらはサブ関数に分離される。
【0764】
種々のテクスチャスタイル及びカラーリングスタイルのための4チャンネルタイルコンポジット当たりのサイクル数は以下の表に要約されている。
【0765】
【表75】
Figure 2001523900
タイルカラーリング及びコンポジット処理
タイルは、(タイル全体に)一定色を具備するか、又は入力画像から各画素値を取るようにセットされる。これらの両方のケースは、不透明度を拡大縮小するため、テクスチャ処理ステージからのフィードバックがある(シニングペイントと同様)。
【0766】
4ケースに対するステップは以下のように要約できる:
−タイルの不透明度値をサブピクセル平行移動する;
−(テクスチャ貼り付けからのフィードバックが有効である場合)タイルの不透明度を選択的にスケーリングする;
−画素の色を(一定に、又は画像マップから)決定する;
−画素を背景画像上でコンポジットする。
【0767】
4ケースの各々は、関数を実行するために要する時間を最小限に抑えるため、別々に取り扱われる。単一カラーチャンネルのカラーコンポジット処理スタイル当たりの時間は以下の表に要約されている。
【0768】
【表76】
Figure 2001523900
一定色
この場合、タイルは、ソフトウェアによって決定された一定色を具備する。ACP31が一つのタイルを設置する間に、ソフトウェアは次のタイルの配置及びカラーリングを決定することができる。
【0769】
タイルの色は、タイル貼りされている画像をスケーリングした画像へのバイリニア補間によって決定することが可能である。スケーリングされた画像は、作成し、画像ピラミッドの所定の位置に保存することが可能であり、タイル演算の全体に対して1回だけ実行すればよい。サイズが128×128である場合、画像は、各次元に関して、128:1で縮小される。
【0770】
フィードバック無し
タイルのテクスチャ処理からのフィードバックが無いとき、タイルは、指定された座標に設置されるだけである。タイル色は、画素の色毎に使用され、コンポジットのための不透明度は、タイルのサブピクセル平行移動処理された不透明度チャンネルから由来する。このケースでは、カラーチャンネル及びテクスチャチャンネルは、タイル貼りパスの間に完全に独立して処理可能である。
【0771】
プロセスの概要は図103に示されている。タイルのサブピクセル平行移動410は、1出力画素当たり1サイクルの平均時間の場合、2個の乗算ALU及び2個のアダーALUを使用して実行することができる。サブピクセル平行移動からの出力は、背景順次読み出しイタレータからの背景画像で一定タイル色412をコンポジット処理411する際に使用されるべきマスクである。
【0772】
コンポジット処理は、1コンポジット当たり1サイクルの平均時間の場合、1個の乗算ALU及び1個のアダーALUを用いて実行できる。したがって、必要条件は、3個の乗算ALU及び3個のアダーALUである。4個の順次イタレータ413−416が必要であり、それらの内容を読み書きするために320nsを要する。サブピクセル並行移動及びコンポジットのために要する1画素当たりの平均サイクル数の場合、バッファを読み書きするための十分な時間がある。
【0773】
フィードバック付き
タイルのテクスチャ処理からのフィードバックがあるとき、タイルは指定された座標に配置される。タイル色は、画素の色毎に使用され、コンポジットのための不透明度は、フィードバックパラメータによってスケーリングされたサブピクセル平行移動処理された不透明度チャンネルから由来する。このようにして、テクスチャ値は、カラー値が貼り付けられる前に計算しなければならない。
【0774】
プロセスの概要は図97に示されている。タイルのサブピクセル平行移動は、1出力画素当たり1サイクルの平均時間の場合、2個の乗算ALU及び2個のアダーALUを使用して実行することができる。サブピクセル平行移動からの出力は、フィードバック順次読み出しイタレータ420から読み出されたフィードバックに応じてスケーリングされるべきマスクである。このフィードバックはスケーラ(1個の乗算ALU)421へ送られる。
【0775】
コンポジット処理426は、1コンポジット当たり1サイクルの平均時間の場合、1個の乗算ALU及び1個のアダーALUを用いて実行できる。したがって、必要条件は、4個の乗算ALU及び4個のアダーALUである。プロセス全体は、平均的に1サイクル内で完了可能であるが、ボトルネックはメモリアクセスである。なぜならば、5個の順次イタレータが必要になるからである。十分なバッファリングが行われる場合、平均時間は1画素当たり1.25サイクルである。
【0776】
入力画像からの色
タイルの画素に着色する一つの方法は、入力画像の画素から色を取り出すことである。ここでも、コンポジット処理には、テクスチャ処理からのフィードバック付きとフィードバック無しの二つの可能性がある。
【0777】
フィードバック無し
この場合、タイル色は、入力画像内の対応する画素から簡単にもたらされる。コンポジット処理用の不透明度は、サブピクセルシフトされたタイルの不透明度チャンネルに由来する。
【0778】
プロセスの概要は図105に示されている。タイルのサブピクセル平行移動425は、1出力画素当たり1サイクルの平均時間の場合、2個の乗算ALU及び2個のアダーAL
Uを使用して実行することができる。サブピクセル平行移動からの出力は、(入力画像428から読み出された)タイルの画素色を背景画像429とコンポジット処理426する際に使用されるべきマスクである。このフィードバックは、スケーラ(1個の乗算ALU)431へ送られる。
【0779】
コンポジット処理434は、1コンポジット当たり1サイクルの平均時間の場合、1個の乗算ALU及び1個のアダーALUを用いて実行できる。したがって、必要条件は、3個の乗算ALU及び3個のアダーALUである。プロセス全体は平均して1サイクル以内に完了可能であるが、ボトルネックはメモリアクセスである。なぜならば、5個の順次イタレータが必要になるからである。十分なバッファリングが行われる場合、平均時間は1画素当たり1.25サイクルである。
【0780】
フィードバック付き
この場合、タイル色は、やはり入力画像内の対応する画素から簡単にもたらされるが、コンポジット処理用の不透明度は、テクスチャ処理パス中に実際に適用されたテクスチャ高さの相対的な量による影響を受ける。このプロセスは図106に示されている。
【0781】
タイルのサブピクセル平行移動431は、1出力画素当たり1サイクルの平均時間の場合、2個の乗算ALU及び2個のアダーALUを使用して実行することができる。サブピクセル平行移動からの出力は、フィードバック順次読み出しイタレータ432から読み出されたフィードバックに応じてスケーリング431されるべきマスクである。
【0782】
コンポジット処理は、1コンポジット当たり1サイクルの平均時間の場合、1個の乗算ALU及び1個のアダーALUを用いて実行できる。
【0783】
したがって、必要条件は、4個の乗算ALU及び3個のアダーALUである。プロセス全体は平均して1サイクル以内に完了可能であるが、ボトルネックはメモリアクセスである。なぜならば、6個の順次イタレータが必要になるからである。十分なバッファリングが行われる場合、平均時間は1画素当たり1.5サイクルである。
【0784】
タイルテクスチャ処理
各タイルはそのテクスチャチャンネルによって定義される表面テクスチャを有する。テクスチャは、サブピクセルへ移行移動され、次に、出力画像に貼り付けられる。テクスチャコンポジット処理には、
テクスチャ配置と、
25%背景+タイルのテクスチャと、
平均高さアルゴリズムと、
の3種類のスタイルがある。
【0785】
更に、平均高さアルゴリズムはカラーコンポジット処理のためのフィードバックパラメータを節約する。
【0786】
テクスチャコンポジット処理スタイル毎に要する時間は以下の表に要約される。
【0787】
【表77】
Figure 2001523900
テクスチャ置換
このケースでは、タイルからのテクスチャは、図107に示されるように、画像のテクスチャチャンネルを置き換える。タイルのテクスチャのサブピクセル平行移動436は、1出力画素当たり1サイクルの平均時間で、2個の乗算ALU及び2個のアダーALUを使用して実行できる。サブピクセル平行移動からの出力は、順次書き込みイタレータ437へそのまま供給される。
【0788】
テクスチャ置換コンポジット処理に要する時間は1画素当たり1サイクルである。テクスチャ値の100%が常に背景に貼り付けられるので、フィードバックは無い。したがって、チャンネルを特定の順序で処理する必要はない。
【0789】
25%背景+タイルのテクスチャ
この例では、タイルからのテクスチャは既存テクスチャ値の25%に加えられる。新しい値は元の値以上でなければならない。その上、テクスチャチャンネルは8ビットしかないので、新しいテクスチャ値は255でクリップされる。利用されるプロセスは図108に示されている。
【0790】
タイルのテクスチャのサブピクセル平行移動440は、1出力画素当たり1サイクルの平均時間で、2個の乗算ALU及び2個のアダーALUを使用して実行できる。サブピクセル平行移動440からの出力は、アダー441へ供給され、背景テクスチャ値の1/4
442に加算される。最小値及び最大値関数444は、サブピクセル平行移動のために使用されない2個のアダーによって設けられ、出力は順次書き込みイタレータ445に書き込まれる。
【0791】
このスタイルのテクスチャコンポジット処理のために要する時間は1画素当たり1サイクルである。テクスチャ値の100%は、(たとえ、255でクリッピングされたとしても)背景に貼り付けられたと考えられるので、フィードバックは無い。したがって、チャンネルを特定の順序で処理する必要はない。
【0792】
平均高さアルゴリズム
このテクスチャ貼り付けアルゴリズムでは、タイルに基づいて平均高さが計算され、各画像の高さは平均高さと比較される。画素の高さが平均よりも小さい場合、ストローク高さが背景高さに加えられる。画素の高さが平均以上である場合、ストローク高さが平均高さに加えられる。このようにして、背景ピークはストロークを細くする。この高さは、背景がストローク貼り付けを0まで細くすることを避けるため、最小限の量で増加するように拘束される(しかし、最小限の量は0になり得る)。高さは、テクスチャチャンネルが8ビット解像度であるため、255で切り取られる。
【0793】
貼り付けられたテクスチャと貼り付けられる予測量との差のフィードバックが存在し得る。フィードバック量は、タイルの色の貼り付けの際に倍率として使用可能である。
【0794】
両方のケースで、平均テクスチャは、ソフトウェアによって提供され、スケーリングされたテクスチャマップに関するバイレベル補間を実行することにより計算される。ソフトウェアは、現在のタイルが貼り付けられている間に、次のタイルの平均テクスチャ高さを決定する。ソフトウェアは、付加する最小限の厚さを与え、この最小限の厚さは、典型的に、タイル貼り付けプロセスの全体で一定である。
【0795】
フィードバック無し
フィードバックが無い場合、テクスチャは、図109に示されるように、背景テクスチャに貼り付けられるだけである。
【0796】
4個の順次イタレータが必要であり、これは、プロセスが1サイクルの間でパイプライン化できるならば、メモリの高速性が遅れないために十分であることを意味する。
【0797】
タイルのテクスチャのサブピクセル平行移動450は、1出力画素当たり1サイクルの平均時間で、2個の乗算ALU及び2個のアダーALUを使用して実行できる。最小値及び最大値関数451、452は、1サイクル以内に全演算を完了するため、別個のアダーALUを必要とする。テクスチャのサブピクセル平行移動によって既に2が使用されているので、1サイクル平均時間のために十分な残り時間が無い。
【0798】
したがって、1画素のテクスチャを処理するための平均時間は2サイクルである。フィードバックが存在せず、コンポジット処理のカラーチャンネルの順序は無関係であることに注意する必要がある。
【0799】
フィードバック付き
これは、概念的にはフィードバック無しの場合と同じであるが、但し、標準的なテクスチャ貼り付けアルゴリズムの処理の他に、実際に貼り付けられたテクスチャの割合を記録しなければならない。この割合は、引き続きタイルの色を背景画像にコンポジット処理するための倍率として使用可能である。フローチャートは図110に示され、以下のルックアップテーブルが使用される。
【0800】
【表78】
Figure 2001523900
ソフトウェアで設けられた1/Nテーブル460の256個のエントリーの各々は16ビットであり、連続して保持するため16個のキャッシュラインが必要である。
【0801】
タイルのテクスチャのサブピクセル平行移動461は、1出力画素当たり1サイクルの平均時間で、2個の乗算ALU及び2個のアダーALUを使用して実行できる。最小値関数462及び最大値関数463の各々は、1サイクル以内に全演算を完了するため、別個のアダーALUを必要とする。テクスチャのサブピクセル平行移動によって既に2が使用されているので、1サイクル平均時間のために十分な残り時間が無い。
【0802】
したがって、1画素のテクスチャを処理するための平均時間は2サイクルである。フィードバックデータエリア(タイルサイズの画像チャンネル)のために十分な空間を割り付けるべきである。テクスチャは、タイルの色が貼り付けられる前に貼り付けられるべきである。なぜならば、フィードバックがタイルの不透明度をスケーリングするため使用されるからである。
【0803】
CCD画像インターポレータ
ISI83(図3)によってCCDから獲得される像は750×500画素である。像がISIによって撮影されたときのカメラの向きは、画像の上部が「上」に対応するように、画素を0、90、180又は270度回転させるために使用される。全ての画素は、(最大で3というよりも)R、G又はBカラーコンポーネントだけを有するので、これらが回転しているという事実は、画素値を解釈する際に考慮されなければならない。カメラの向きに応じて、2×2画素ブロックの各々は、図111に示されたコンフィギュレーションの何れかを有する。
【0804】
CCD撮影された像を処理のために有用な形式に変換するために、CCD撮影された像に以下の幾つかの処理を行うことが必要である:
−CCD像の低サンプルレートカラーコンポーネントのアップ補間(画素の正しい向きを解釈);
RGBから内部色空間への色変換;
−750×500から1500×1000へ内部空間画像をスケーリング;
−プレーナーフォーマットで像を書き込み。
【0805】
像のチャンネル全体は、ワーピングを可能にさせるため、同時に利用できることが必要である。小規模メモリモデル(8MB)の場合、一時的オブジェクトとして全解像度で単一のチャンネルを保持するための空間しかない。このため、色変換は単一のカラーチャンネルへの変換である。このプロセスに関する制約要因は色変換である。なぜならば、色変換は、RGBから内部色空間へのトライリニア補間を含み、このトライリニア補間は、1チャンネル当たり0.026ns(750×500×1画素当たり7サイクル×1サイクル当たり10ns=26250000ns)を要するプロセスだからである。
【0806】
内部色空間画像をスケーリングする前に色変換を実行することが重要である。なぜならば、これは、スケーリングされる画素数(したがって、全体のプロセス時間)を4の倍率で削減するからである。
【0807】
全ての変換に対する必要条件がALUスキームに当てはまる訳ではない。変換は、したがって、以下の二つのフェーズに分解される:
フェーズ1:CCD像の低サンプルレートカラーコンポーネントのアップ補間(画素の正しい向きを解釈);
RGBから内部色空間への色変換;
プレーナーフォーマットでの像の書き込み;
フェーズ2:750×500から1500×1000へ内部空間画像をスケーリング。
【0808】
スケール関数の分離は、小さい色変換後の画像は大きい画像と同時にメモリ内に存在すべきであることを意味する。フェーズ1からの出力(0.5MB)は、通常、画像ピラミッド(1MB)のために確保されたメモリエリアに安全に書き込まれる。フェーズ2からの出力は、一般的な拡大されたCCD像である。スケーリングの分離によって、更に、スケーリングをアフィン変換によって実現することが可能になり、これは、簡単な1:2の拡大ではない様々なCCD解像度を許容する。
【0809】
フェーズ1:低サンプルレートカラーコンポーネントのアップ補間
3カラーコンポーネント(R、G及びB)の各々は、所与の画素に対して色変換を実行するためアップ補間される必要がある。色変換は7サイクルを使用するので、補間を実行するため1画素当たりに7サイクルがある。
【0810】
Gの補間は簡単であり、図112に示されている。向きに応じて、実際の画素値Gは、
奇数ライン上の奇数画素及び偶数ライン上の偶数画素と、偶数ライン上の奇数画素及び奇数ライン上の偶数画素との間で交互に代わる。両方のケースで、リニア補間が要求される全てである。Rコンポーネント及びBコンポーネントの補間は、図113及び図113に示されるようにもっと複雑である。なぜならば、水平方向及び垂直方向において、同図から分かるように、3行の画素に同時にアクセスすることが要求されるので、3個の順次読み出しイタレータが必要であり、各順次読み出しイタレータは単一行によってオフセットされる。その上、各行のためのラッチを用いて、同じ行の前の画素へアクセスする。
【0811】
したがって、各画素は、CCDからの1個のコンポーネントと、他の2個のアップ補間されたコンポーネントと、を格納する。一方のコンポーネントがバイリニア補間されているとき、他方はリニア補間されている。補間係数は定数0.5であるため、補間は、加算及び1ビット右シフトによって(1サイクル以内に)計算することが可能であり、係数0.5のバイリニア補間は、3回の加算及び2ビット右シフト(3サイクル)によって計算可能である。必要な総サイクル数は、単一の乗算ALUを使用した場合4である。
【0812】
図115は、回転0の偶数ライン偶数画素(EL,EP)及び奇数ライン奇数画素(OL,EP)のケースを示し、図116は、回転0の偶数ライン奇数画素(EL,OP)及び奇数ライン偶数画素(OL,OP)のケースを示している。他の回転は、これらの2個の表現の少し異なる形式である。
【0813】
色変換
RGBからLabへの色空間変換は、汎用色空間変換関数に関して説明された方法と同じ方法を使用して実現され、1画素当たり8サイクルを要するプロセスである。フェーズ1の処理は図117を参照して説明される。
【0814】
RGBのアップ補間は4サイクル(1個の乗算ALU)を必要とするが、色空間の変換は、ルックアップ転送時間のため、1画素当たり8サイクル(2個の乗算ALU)を必要とする。
【0815】
フェーズ2
画像スケーリング
このフェーズは、CCD解像度(750×500)から作業用写真解像度(1500×1000)への画像のアップ補間と関係する。スケーリングは、1:2の縮尺のアフィン変換を実行させることにより行われる。汎用アフィン変換のタイミングは1出力画素当たり2サイクルであり、本ケースでは、0.03秒のスケーリング時間の経過を意味する。
【0816】
画像照明
画像が処理された後、画像を一つ以上の光源によって照明することができる。光源は以下の何れの型でもよい:
1.指向性型−無限の距離があるので、単一方向へ平行光を投じる;
2.オムニ型−全方向へ非焦点光を投じる;
3.スポット型−特定の目標点へ焦点ビームを投光する。スポット光に関連した円錐及び半影部が存在する。
【0817】
シーンは、反射角を変化させるため関連したバンプマップを有する。周辺光も選択的に照明されたシーンに存在する。
【0818】
加速された照明のプロセスでは、単一の光源によって一つの画像チャンネルを照明することに関心がある。多数の光源を、1光源当たりに1パスの多数のパスとして、単一の画像チャンネルに適用することが可能である。多数のチャンネルは、バンプマップがある場
合も無い場合も、同時に一つずつ処理可能である。
【0819】
ある画素における法線表面ベクトル(N)は、もし存在するならば、バンプマップから計算される。バンプマップが存在しない場合、デフォルト法線ベクトルは、画像面に垂直、即ち、N=[0,0,1]である。
【0820】
ビューイングベクトルVは、常に、画像平面に垂直、即ち、V=[0,0,1]である。
【0821】
指向性光源の場合、画素から光源への光源ベクトル(L)は、画像全体中で一定であり、画像全体に対して1回計算される。(有限の距離にある)オムニ光源の場合、光源ベクトルは、画素毎に独立に計算される。
【0822】
周辺光の画素の反射は、IakaOdに従って計算される。
【0823】
光源の画素の散乱及び鏡面反射は、Phongモデル:
fattIp[kdOd(N・L) + ksOs(R・V)n]
に従って計算される。
【0824】
光源が無限大である場合、光源強度は画像全体に亘って一定である。
【0825】
各光源は1画素当たりに3個の寄与度、即ち、
周辺光寄与度
散光寄与度
鏡面寄与度
を有する。
【0826】
光源は以下の変数を用いて定義される。
【0827】
【表79】
Figure 2001523900
同じ反射係数(k,k,k)がカラーコンポーネント毎に使用される。
【0828】
所与の画素の値は、周辺光寄与と、各光の拡散寄与及び鏡面寄与の合計との和に一致する。
【0829】
照明計算のサブプロセス
散光寄与度を計算するため、様々なその他の計算が必要である。それらの計算の中には、
1/ΔX


N・L
R・V
att
fcp
の計算が含まれる;
サブプロセスは、
周辺光
散光
鏡面
の寄与度を計算するためにも定義される。
【0830】
サブプロセスは、光源の全体的な照度を計算するために使用できる。4個の乗算ALUしか存在しないので、特定のタイプの光源に対するマイクロコードは、性能のため適切に混ぜられたサブプロセスを含み得る。
【0831】
1/√Xの計算
Vark照明モデルはベクトルを使用する。殆どの場合に、正規化の目的のため、ベクトルの長さの逆数を計算することが重要である。長さの逆数を計算するためには、1/([x]の平方根)の計算が必要である。
【0832】
論理的に、このプロセスは、図118に示されるような入力及び出力を有するプロセスとして表現可能である。図119を参照すると、この計算は、推定値をルックアップし、次に、以下の関数:
Vn+1 = 1/2 Vn(3-XVn 2)
を1回繰り返すことによって行うことが可能である。
【0833】
繰り返しの回数は、要求される精度に応じる。このケースでは、16ビットの精度が必要である。したがって、テーブルは、8ビットの精度であり、1回の繰り返しだけが必要である。以下の定数はソフトウェアによってセットされる。
【0834】
【表80】
Figure 2001523900
以下のルックアップテーブルが使用される。
【0835】
【表81】
Figure 2001523900
Nの計算
Nは表面法線ベクトルである。バンプマップが存在しない場合、Nは一定である。バンプマップが存在する場合、Nは画素毎に計算しなければならない。
【0836】
バンプマップ無し
バンプマップが無いとき、固定法線Nは、以下の性質、即ち、
N=[X,Y,Z]=[0,0,1]
||N||=1
1/||N||=1
正規化されたN=N
を有する。
【0837】
これらの性質は、具体的に法線ベクトル及び1/||N||を計算する代わりに使用することが可能であり、他の計算を最適化することができる。
【0838】
バンプマップ有り
図120に示されるように、バンプマップが存在する場合、Nは、X次元とY次元のバンプマップ値を比較することによって計算される。図120は、同じ行及び列における画素に関して画素P1に対するNの計算を示しているが、P1自体での値も含まれる。Nの計算は、スケール倍率(X及びYで同じ倍率)で乗算することにより、解像度に依存しないようにされる。このプロセスは、図121に示されるような入力及び出力(Zは常に1である)を有するプロセスとして表現できる。
【0839】
は常に1である。X及びYは未だ正規化されていない(なぜならば、Z=1である)。Nの正規化は、N.Lが計算されるまで遅延されるので、1/||N||による乗算は、3回ではなく1回である。
【0840】
Nを計算する実際のプロセスは図122に示されている。
【0841】
以下の定数がソフトウェアによってセットされる。
【0842】
【表82】
Figure 2001523900
Lの計算
指向性光
光源が無限遠であるとき、光源は実効的な一定光ベクトルLを有する。Lは、
L=[X, Y

||L||=1
1/||L||=1
のようにソフトウェアによって正規化され、計算される。
【0843】
これらの性質は、具体的にL及び1/||L||を計算する代わりに使用することが可能であり、他の計算を最適化することができる。このプロセスは図123に示されている。
【0844】
オムニ光及びスポット光
光源が無限遠ではないとき、Lは現在点Pから光源PLまでのベクトルである。P=[X
, 0]であるため、Lは、
L=[X, Y

=X−XPL
=Y−YPL
=−ZPL
によって与えられる。1/||L||を乗算することにより、X、Y、及びZの各々を正規化する。(後で正規化の際に使用される)1/||L||の計算は、
V=X +Y +Z
を計算し、次に、
−1/2
を計算することによって実行される。
【0845】
このケースでは、Lの計算は、図124に示されるような入力及び出力を有するプロセスとして表現可能である。
【0846】
及びYは照度が計算されている画像の座標である、Zは常に0である。
【0847】
Lを計算する実際のプロセスは図125に示されている。
【0848】
以下の定数がソフトウェアによってセットされる。
【0849】
【表83】
Figure 2001523900
N.Lの計算
ベクトルNとベクトルLの内積の計算は、
+Y+Z
によって定義される。
【0850】
バンプマップ無し
バンプマップが無いとき、Nは一定[0,0,1]である。したがって、N.LはZに簡約化される。
【0851】
バンプマップ有り
バンプマップが存在するとき、内積を直接計算する必要がある。正規化されたNコンポーネントを取り込むのではなく、正規化されていないNと正規化されたLの内積を得た後に正規化を行う。Lは、(一定であるとき)ソフトウェアによって正規化されるか、又はL計算プロセスによって正規化される。このプロセスは図126に示されている。
【0852】
Nは、1になるように定義されているので、入力として不要である。しかし、その代わりに、結果を正規化するために1/||N||が必要とされる。N.Lを計算する実際の一プロセスは、図127に示されている。
【0853】
R・Vの計算
R・Vは鏡面寄与度の計算への入力として必要である。V=[0,0,1]であるため、Zコンポーネントだけが必要である。したがって、R・Vは、
R・V=2ZN(N.L)−Z
に簡約化される。
【0854】
加えて、非正規化Z=1であるため、正規化Z=1/||N||である。
【0855】
バンプマップ無し
最も簡単な実装は、Nが一定(即ち、バンプマップ無し)のときである。N及びVは定数であるため、N.L及びR・Vは、
V=[0, 0, 1]
N=[0, 0, 1]
L=[X, Y

N.L=Z
R・V=2Z(N.L)−Z
=2Z−Z
=Z
として簡単化される。
【0856】
Lが一定(指向性光源)であるとき、正規化Zは、R・Vが要求されるときに、定数の形で与えることができる。Lが変化するとき(オムニ光及びスポット光のとき)、正規化Zはオンザフライ方式で計算しなければならない。それは、L計算プロセスの出力として獲得される。
【0857】
バンプマップ有り
Nが一定ではないとき、R・Vを計算するプロセスは、一般化された式、即ち、
R・V=2Z(N.L)−Z
を実施するだけである。入力及び出力は図128に示され、実際の実装は図129に示されている。
【0858】
減衰定数の計算
指向性光
光源が無限遠であるとき、光の強度は画像一面で変化しない。したがって、減衰定数fattは1である。この定数は、無限遠光源の照明計算を最適化するために使用可能である。
【0859】
オムニ光及びスポット光
光源が無限遠ではないとき、光の強度は次式、
att=f+f/d+f/d
に従って変化する。
【0860】
係数f、f及びfを適切にセットすることにより、光強度を一定に、距離に関して線形に、或いは、距離の平方によって減衰させることができる。
【0861】
d=||L||であるため、fattの計算は、図130に示されるような入力及び出力を有するプロセスとして表現可能である。
【0862】
attを計算する実際のプロセスは図131に定義される。
【0863】
以下の定数がソフトウェアによってセットされる。
【0864】
【表84】
Figure 2001523900
円錐及び半影ファクタの計算
指向性光及びオムニ光
これらの二つの光源は集光されないので、円錐又は半影を持たない。円錐−半影スケーリングファクタfcpは1である。この定数は、指向性光源及びオムニ光源の照明計算を最適化するために使用できる。
【0865】
スポット光
スポット光は特定の目標点(PT)に集光する。スポット光の強度は、像の特定の点が円錐内にあるか、半影にあるか、又は円錐/半影領域の外側にあるかによって変化する。
【0866】
図132を参照すると、半影一に対するfcpのグラフが示されている。円錐の内部470でfcpは1であり、半影の外部471でfcpは0である。円錐のエッジから半影の終わりまで、光強度は3次関数472に従って変化する。
【0867】
半影475及び円錐476の計算のための様々なベクトルが図133及び図134に示されている。
【0868】
図134に示されているように1次元に関して像の表面を調べることにより、3個の角A、B及びCが定義される。Aは、目標点479と光源478と円錐の終端480の間の角度である。Cは、目標点479と光源478と半影の終端481の間の角度である。これらの両方は所与の光源に対して一定である。Bは、目標点479と光源478と計算対象一482の間の角度であり、像上で計算される点毎に変化する。
【0869】
ここで、レンジAからCを0から1に正規化し、Bが、次式、
(B−A)/(C−A)
によってその角度レンジの間に収まる距離を見つける。
【0870】
そのレンジは0から1のレンジに丸められ、この値は、fcpの3次近似のためのルックアップとして使用される。
【0871】
したがって、fattの計算は、図135に示されるような入力及び出力を有するプロセスとして表現可能であり、fcpを計算する実際のプロセスは図136に示され、以下の定数がソフトウェアによってセットされる。
【0872】
【表85】
Figure 2001523900
以下のルックアップテーブルが使用される。
【0873】
【表86】
Figure 2001523900
周辺光寄与の計算
像に当てられる光の数とは無関係に、周辺光寄与が各画素に対して1回ずつ実行され、バンプマップには依存しない。
【0874】
周辺光計算プロセスは図131に示されるような入力及び出力を備えたプロセスとして表現可能である。このプロセスを実装するためには、図138に示されるように入力画像からの各画素(O)を定数値(I)によって乗算することが必要であり、以下の定数がソフトウェアによってセットされる。
【0875】
【表87】
Figure 2001523900
散光寄与の計算
表面に当てられた各光は拡散照明を生じる。拡散照明は、次式、
散光=k(N.L)
によって表される。2種類の実装形態を考えることができる。
【0876】
実装例1−定数N及びL
N及びLの両方が定数であるとき(指向性光でバンプマップが無いとき)、
N.L=Z
である。したがって、
散光=k
である。
【0877】
だけが変数であるため、散光寄与を計算する実際のプロセスは図139に示されるようなものであり、以下の定数がソフトウェアによってセットされる。
【0878】
【表88】
Figure 2001523900
実装例2−非定数N及びL
N又はLの何れかが非定数であるとき(ビットマップ、又はオムニ光若しくはスポット光からの照明であるとき)、散光計算は、次式、
散光=k(N.L)
に従って直接実行される。
【0879】
散光計算プロセスは図140に示されるような入力を備えたプロセスとして表現可能である。N.Lは、N.L計算プロセスを使用して計算するか、又は定数として与えられる。散光寄与を計算する実際のプロセスは図141に示されるようなプロセスであり、以下の定数がソフトウェアによってセットされる。
【0880】
【表89】
Figure 2001523900
鏡面寄与の計算
表面に当てられた各光は鏡面照明を生ずる。鏡面照明は、次式、
鏡面光= k(R・V)
によって表される。ここで、
=ksc+(1−ksc)I
である。
【0881】
鏡面光計算プロセスは二つの実装形態がある。
【0882】
実装例1−定数N及びL
第1の実装例は、N及びLの両方が定数であるとき(指向性光でバンプマップ無し)である。N、L及びVは一定であるので、N.L及びR・Vも一定である:
V=[0, 0, 1]
N=[0, 0, 1]
L=[X, Y

N.L=Z
R・V=2Z(N.L)−Z
=2Z−Z
=Z
このようにして、鏡面光計算は、
鏡面光=k
=k (ksc+(1−ksc)I
=ksc +(1−ksc)I
として簡略化される。
【0883】
鏡面光計算ではOだけが変数であるため、鏡面光寄与の計算は、図142に示されるような入力及び出力を備えたプロセスとして表現可能であり、鏡面光寄与を計算する実際のプロセスは図143に示され、以下の定数がソフトウェアによってセットされる。
【0884】
【表90】
Figure 2001523900
実装例2−非定数N及びL
この実装例は、N又はLの何れかが一定ではないとき(ビットマップ、又はオムニ光若しくはスポット光からの照明であるとき)である。これは、R・Vを与える必要があることを意味し、R・Vを計算しなければならない。
【0885】
鏡面光計算プロセスは、図144に示されるような入力及び出力を備えたプロセスとして表現可能である。図145は、鏡面光寄与を計算する実際のプロセスを表し、以下の定数がソフトウェアによってセットされる。
【0886】
【表91】
Figure 2001523900
以下のルックアップテーブルが使用される。
【0887】
【表92】
Figure 2001523900
周辺光が唯一の照明であるとき
周辺光寄与が唯一の光源である場合、このプロセスは非常に簡単である。なぜならば、図146に示されているようなプロセス全体で周辺光を加える必要がないからである。像は、垂直方向に二つの区画に分割し、周辺光ロジックを複製することにより、半分の各々を同時に処理することが可能である(このようにして、全部で2個の乗算ALU及び4個の順次イタレータを使用する)。したがって、タイミングは、周辺光を適用する1画素当たり1/2サイクルである。
【0888】
典型的な照明のケースは、一つ以上の光によって照らされるシーンである。これらのケースでは、周辺光計算は非常に手軽であるため、周辺光計算は各光源の処理と共に収容される。処理されるべき最初の光は、正確なI設定値を持つべきであり、後続の光は、Iの値を0にすべきである(多重の周辺光寄与を避けるため)。
【0889】
周辺光が別個のパスとして(第1のパスではなく)処理されるならば、周辺光を現在の計算値に加えることが必要である(同じアドレスへの読み書きが必要である)。プロセスの概要は図147に示されている。
【0890】
このプロセスは、3個の像イタレータと1個の乗算ALUを使用し、平均で1画素当たり1サイクルを要する。
【0891】
無限光源
無限光源のケースでは、像全体で一定の光源強度が得られる。L及びfattの両方は定数である。
【0892】
バンプマップ無し
バンプマップが無いとき、一定法線ベクトルN[0,0,1]が存在する。照明の複雑さは、N、L及びfattが一定であることによって著しく軽減される。バンプマップ無しの単一の指向性光を当てるプロセスは図147に示され、以下の定数がソフトウェアによってセットされる。
【0893】
【表93】
Figure 2001523900
単一の無限光源の場合、図148に示されるような論理演算を実行することが求められ、ここで、KからKは以下の値をもつ定数である。
【0894】
【表94】
Figure 2001523900
このプロセスは、K、K及びKが定数であるため簡単化することができる。基本的に(乗算ALUのうちの3個を使用する)鏡面光寄与と散光寄与の計算が複雑であるため、周辺光計算を4番目の乗算ALUとして安全に加えることが可能である。処理される第1の無限光源は、真の周辺光パラメータIを備え、後続の全ての無限光は、Iに0をセットすることができる。周辺光計算は実質的に無くなる。
【0895】
無限光源が照射される第1の光である場合、他の光源による既存の寄与度を取り込む必要はなく、その状況は図149に示され、定数は以下の値をとる。
【0896】
【表95】
Figure 2001523900
無限光源が照射される第1の光ではない場合、先行して処理された光によって生成された既存の寄与度を取り込む必要があり(同じ定数が当てはまる)、状況は図148に示されている。
【0897】
第1のケースでは、2個の順次イタレータ490、491が必要であり、第2のケースでは、3個の順次イタレータ490、491、492が必要である(余分のイタレータは先行の光の寄与度を読み出すために必要である)。両方のケースで、バンプマップ無しの無限光源の適用は1画素当たり1サイクルを要し、オプションとして周辺光の適用が含まれる。
【0898】
バンプマップ有り
バンプマップが存在するとき、法線ベクトルNは画素毎に計算することが必要であり、一定光源ベクトルLに適用される。1/||N||はR・Vを計算するために使用され、R・Vは鏡面光計算2プロセスへの入力として要求される。以下の定数がソフトウェアによってセットされる。
【0899】
【表96】
Figure 2001523900
バンプマップ順次読み出しイタレータ490は、バンプマップの現在ラインを読み出す役割を担う。現在ラインは、Xに関するスロープを決定するため入力として与えられる。バンプマップ順次読み出しイタレータ491、492は、現在ラインの上下のラインを読み出す役割を担う。それらはYに関するスロープを決定するため入力を提供する。
【0900】
オムニ光
オムニ光源のケースでは、光ベクトルL及び減衰定数fattは像の中で画素毎に変化する。したがって、L及びfattの両方は画素毎に計算しなければならない。
【0901】
バンプマップ無し
バンプマップが無いとき、一定法線ベクトルN[0,0,1]が存在する。Lは画素毎に計算しなければならないが、N.L及びR・Vの両方は、Zに簡単化される。バンプナップが無いとき、オムニ光の適用は図149に示されるように計算され、以下の定数がソフトウェアによってセットされる。
【0902】
【表97】
Figure 2001523900
このアルゴリズムは、オプションとして、先行の光源からの寄与を取り込み、周辺光計算を含む。周辺光は1回だけ取り込めばよい。他の全ての光パスに対して、周辺光計算プロセスにおける適切な定数は0にセットされるべきである。
【0903】
図示されるようなアルゴリズムは全部で19回の乗算/累算を必要とする。ルックアップのために必要な時間は、Lの計算中の1サイクルと、鏡面光寄与計算中の4サイクルである。したがって、5サイクルの処理時間が実現可能な最良のものである。その関数のためにALUを最適にマイクロコード化できない場合には、必要な時間は6サイクルまで増加する。オムニ光を関連したビットマップの無い像へ適用するための速度は1画素当たり6サイクルである。
【0904】
バンプマップ有り
オムニ光が関連したバンプマップを備えた像に照射されるとき、N、L、N.L及びR・Vの計算は全てが必要である。オムニ光を関連したバンプマップを備えた像に適用するプロセスは図150に示され、以下の定数がソフトウェアによってセットされる。
【0905】
【表98】
Figure 2001523900
このアルゴリズムは、オプションとして、先行の光源からの寄与を取り込み、周辺光計算を含む。周辺光は1回だけ取り込むことが必要である。他の全ての光パスに対し、周辺光計算プロセス内の適切な定数は0にセットされるべきである。
【0906】
図示されるようなアルゴリズムは全部で32回の乗算/累算を必要とする。ルックアップのために要する時間は、LとNの両方の計算中に1サイクルずつと、鏡面光寄与計算のための4サイクルである。しかし、NとLのために必要なルックアップは同じである(したがって、2個のLUが3個のLUを実装する)。8サイクルの処理時間が適切である。その関数のためのALUを最適にマイクロコード化できない場合、必要な時間は9サイクルまで延長される。オムニ光を関連したビットマップ付きの像に適用する速度は1画素当たり9サイクルである。
【0907】
スポット光
スポット光はオムニ光と類似しているが、減衰定数fattが、目標の周りに効率的に光を集める円錐/半影ファクタfcpによって変更されている点が相違する。
【0908】
バンプマップ無し
バンプマップが無いとき、一定法線ベクトルN[0,0,1]が存在する。Lは画素毎に計算しなければならないが、N.L及びR・Vの両方は、Zに簡単化される。図151は、像へのスポット光の照射の説明図であり、以下の定数がソフトウェアによってセットされる。
【0909】
【表99】
Figure 2001523900
このアルゴリズムは、オプションとして、先行の光源からの寄与を取り込み、周辺光計算を含む。周辺光は1回だけ取り込めばよい。他の全ての光パスに対して、周辺光計算プロセスにおける適切な定数は0にセットされるべきである。
【0910】
図示されるようなアルゴリズムは全部で30回の乗算/累算を必要とする。ルックアップのために必要な時間は、Lの計算中の1サイクルと、鏡面光寄与計算中の4サイクルと、円錐/半影計算における2組の4サイクルルックアップである。
【0911】
バンプマップ有り
スポット光が関連したバンプマップを備えた像に照射されるとき、N、L、N.L及びR・Vの計算は全てが必要である。単一のスポット光を関連したバンプマップを備えた像に適用するプロセスは図152に示され、以下の定数がソフトウェアによってセットされる。
【0912】
このアルゴリズムは、オプションとして、先行の光源からの寄与を取り込み、周辺光計算を含む。周辺光は1回だけ取り込むことが必要である。他の全ての光パスに対し、周辺光計算プロセス内の適切な定数は0にセットされるべきである。図示されるようなアルゴリズムは全部で41回の乗算/累算を必要とする。
【0913】
プリントヘッド44
図153は、論理的に8セグメントにより構成され、各々がページの一部分に2層のシアン、マゼンタ、及びイエローを印刷する単一のプリントヘッドの論理的レイアウトの説明図である。
【0914】
印刷用セグメントのローディング
何かを印刷する前に、プリントヘッドの8セグメントの各々は、最終出力画像における以下の相対的な行に対応した6行のデータがロードされなければならない:
行0=ラインN、イエロー、偶数ドット0、2、4、6,8、...
行1=ラインN+8、イエロー、奇数ドット1、3、5、7、...
行2=ラインN+10、マゼンタ、偶数ドット0、2、4、6,8、...
行3=ラインN+18、マゼンタ、奇数ドット1、3、5、7、...
行4=ラインN+20、シアン、偶数ドット0、2、4、6,8、...
行5=ラインN+28、シアン、奇数ドット1、3、5、7、...
各セグメントは、ページの異なる部分にドットを印刷する。各セグメントは、1色の750ドット、即ち、ある行に375個の偶数ドットと、別の行に375個の奇数ドットを印刷する。8個のセグメントは、位置に対応したドットを含む。
【0915】
【表100】
Figure 2001523900
各ドットは、プリントヘッドセグメントに1ビットで表現される。データは、データをセグメントのBitValue(ビット値)ピンに置くことによって、同時に1ビットだけロードされ、BitClock(ビットクロック)に従ってそのセグメントのシフトレジスタへクロック供給されなければならない。データは単一のレジスタにロードされるので、ビットをローディングする順序は正しい筈である。データは10MHzの最大レートでプリントヘッドにクロック供給することができる。
【0916】
全てのビットがロードされると、ビットはプリントヘッド出力バッファへ並列に転送され、印刷の準備が完了する。この転送はセグメントのParallelXferClockピン上の1個のパルスによって実行される。
【0917】
印刷制御
電力を節約するため、プリントヘッドの全てを必ずしも同時に印刷しなくてもよい。制御ラインの組は、特定のドットの印刷を可能にさせる。ACPのような外部コントローラは、速度及び/又は電力の必要条件に応じて、同時に印刷されるドット数、並びに、プリントパルスの間隔を変更することが可能である。
【0918】
各セグメントは、5本のNozzelSelect(ノズル選択)ラインを含み、ノズル選択ラインは1行当たり32組のノズルを選択するため復号化される。各行には375個のノズルがあるので、各組には12個のノズルがある。更に、色の偶数行と奇数行に1本ずつの、2本のBankEnable(バンクイネーブル)ラインが設けられる。最後に、各セグメントは、Cカラー、Mカラー及びYカラーの各々に1本ずつの、3本のColorEnable(カラーイネーブル)ラインを含む。あるColorEnableライン上のパルスは、カラーの指定行の指定されたノズルに印刷を行わせる。パルスは、典型的に、2
sの間隔である。
【0919】
全てのセグメントが、NozzelSelectラインと、BankEnableラインと、ColorEnableライン(プリントヘッドへ外部から配線されている)の同じ組によって制御される場合、以下の事項が成立する。
【0920】
奇数バンク及び偶数バンクの両方が同時に印刷をする場合(両方のBankEnableビットがセットされている場合)、1セグメント当たり24個のノズル、即ち、全部で192個のノズルが同時に発射し、5.7ワットを消費する。
【0921】
奇数バンクと偶数バンクが独立に印刷をする場合、1セグメント当たり12個のノズルだけが、即ち、全部で96個が同時に発射し、2.85ワットを消費する。
【0922】
印刷ヘッドインタフェース62
印刷ヘッドインタフェース62は、ACPをプリントヘッドに接続し、データと適切な信号の両方を外部プリントヘッドへ供給する。プリントヘッドインタフェース62は、VLIWプロセッサ74と、CPU上で実行されるソフトウェアアルゴリズムの両方と協働して動作し、約2秒のうちに写真を印刷する。
【0923】
プリントヘッドインタフェースへの入出力の概要は図154に示されている。アドレス及びデータバスがCPUによって使用され、プリントヘッドインタフェースの種々のレジスタのアドレスを指定する。単一のBitClock出力ラインは、プリントヘッド上の8セグメントの全てに繋がる。8本のDataBits(データビット)ラインは、1本ずつが各セグメントに接続され、(BitClockパルスに基づいて)プリントヘッドの8セグメントへ同時にクロックインされる。例えば、同時に、ドット0はセグメントへ転送され、ドット750はセグメント1へ転送され、ドット1500はセグメントへ転送され、以下同様である。
【0924】
VLIW出力FIFOは、ディザ処理された2レベルC、M及びYの6000×9000解像度印刷画像を、8本のDataBitsラインへ出力するために正しい順序で格納する。ParallelXferClockは、プリントヘッドの8セグメントの各々へ接続されるので、単一パルスによって、全てのセグメントがそれぞれのビットを同時に転送する。最後に、NozzleSelectライン、BankEnableライン及びColorEnableラインが8セグメントの各々へ接続され、プリントヘッドインタフェースは、C、M及びYドロップパルスの間隔、並びに、各パルスで印刷されるドロップの数を制御できるようになる。プリントヘッドインタフェースのレジスタは、0から6μsのパルス間隔、典型的に2μsの間隔を指定することができる。
【0925】
画像印刷
画像がArtcamのユーザの管理下に置かれる前に、以下の2フェーズ、即ち、
1.印刷されるべき画像の準備
2.準備された画像の印刷
を行うことが必要である。
【0926】
画像の準備は1回だけ実行すればよい。画像印刷は必要に応じて何回で実行できる。
【0927】
画像準備
印刷用の画像の準備には、
1.写真画像の印刷画像への変換
2.プリンタの向きの出力に揃えるために印刷画像(内部色空間)の回転
3.(必要に応じて)圧縮されたチャンネルのアップ補間
4.内部色空間から特定のプリンタ及びインクに適したCMY色空間への色変換
が含まれる。
【0928】
画像準備の最後に、4.5MBの正しく向きを決められた1000×1500CMY色空間画像の印刷準備が完了する。
【0929】
写真画像の印刷画像への変換
写真画像を印刷画像へ変換するためには、画像処理を実行するためVarkスクリプトを実行することが必要である。このスクリプトは、デフォルト画像強調スクリプト、又は現在挿入中のArtcardから取り出されたVarkスクリプトである。Varkスクリプトは、CPUによって実行され、VLIWベクトルプロセッサによって実行される関数で加速される。
【0930】
印刷画像の回転
メモリ内の画像は、最初、上端が上向きになるように方向を合わされる。これにより、Vark処理を簡単にすることができる。画像が印刷される前に、画像は、プリントロールの向きと揃えられなければならない。再アライメントは1回だけ実行すればよい。印刷画像の引き続くプリントは、予め適切に回転されているであろう。
【0931】
適用されるべき変換は、ユーザがArtcamの「撮像」ボタンを押したときに、CCDからの捕捉中に適用された変換の単に逆変換である。元の回転が0であるならば、変換は不要である。元の回転が+90度であるならば、印刷前に−90度(270度と同じである)回転する必要がある。この回転を適用するために使用される方法は、Vark加速されたアフィン変換関数である。アフィン変換エンジンは、各カラーチャンネルを独立に回転させるため呼び出される。カラーチャンネルは元の位置で回転できないことに注意する必要がある。その代わりに、カラーチャンネルは、拡大された単一チャンネル(1.5MB)のために先に使用されたスペースを利用することが可能である。
【0932】
図155は、Lab画像の回転の一例の説明図であり、aチャンネル及びbチャンネルは4:1に圧縮されている。Lチャンネルは、不要になったスペース(単一チャンネルエリア)へ回転させられ、次に、aチャンネルは、Lの後に残された空きスペースに回転させられ、最後に、bを回転させることができる。三つのチャンネルを回転するために要する総時間は0.09秒である。これは、最初の画像印刷の前に許容可能な時間の経過である。後続のプリントは、このオーバーヘッドを生じない。
【0933】
アップ補間及び色変換
Lab画像は、印刷前にCMYへ変換しなければならない。Lab画像のaチャンネル及びbチャンネルが圧縮されているかどうかに応じて、様々な処理が行われる。Lab画像が圧縮されているならば、aチャンネル及びbチャンネルは色変換が行われる前に伸長されなければならない。Lab画像が圧縮されていないならば、色変換は唯一の必要なステップである。Lab画像は、(aチャンネル及びbチャンネルが圧縮されているならば)アップ補間し、CMY画像へ変換される。スケール及び色変換を組み合わせた単一のVLIWプロセスを使用することができる。
【0934】
色変換を実行するために使用される方法は、Vark加速型色変換関数である。アフィン変換エンジンは、各カラーチャンネルを独立に回転させるため呼び出し可能である。カラーチャンネルはそのままの位置で回転できない。その代わりに、カラーチャンネルは拡大された単一チャンネル(1.5MB)のために先に使用されたスペースを利用することが可能である。
【0935】
画像印刷処理
画像印刷処理は、正しい向きに置かれた1000×1500CMY画像を取り込み、外部プリントヘッドへ送信されるべきデータ及び信号を生成することに関係する。このプロセスは、VLIWプロセス及びプリントヘッドインタフェースと協働するCPUを必要とする。
【0936】
Artcam内の画像の解像度は1000×1500である。印刷された画像は、6000×9000ドットの解像度があり、非常に簡単な関係:1画素=6×6=36ドットが得られる。図156に示されるように、各ドットは16.6μmであるため、6×6平方ドットは100平方μmである。各ドットは2レベルであるため、出力をディザ処理する必要がある。
【0937】
画像は約2秒で印刷されるべきである。9000行のドットの場合、これは、各行を印刷する間の時間が222μsの時間であることを意味する。プリントヘッドインタフェースは、この時間内に6000ドットを生成しなければならず、平均して1ドット毎に37nsである。しかし、各ドットは3色により構成されるので、プリントヘッドインタフェースは、約12ns内に、即ち、ACPの1クロックサイクル(100MHzで10ns)のうちに各カラーコンポーネントを生成しなければならない。一つのVLIWプロセスは、印刷されるべき次の6000ドットのラインを計算する役割を担う。奇数と偶数のC、M及びYドットは、6種類の1000×1500画像ラインからの入力をディザ処理することによって生成される。第2のVLIWプロセスは、先に計算された6000ドットのラインを取り込み、1回の転送でプリントヘッドインタフェースからプリントヘッドへ転送されるべき8個のセグメントのための8ビットのデータを正確に生成する役割がある。
【0938】
CPUプロセスは、プリントライン毎に3回ずつ(1カラーコンポーネント当たり1回ずつ=2秒間に27000回)第1のVLIWプロセス3内のレジスタを更新し、第2のVLIWプロセス内のレジスタをプリントライン毎に1回ずつ(2秒間に9000回)更新する。CPUは、これを行うために、VLIWプロセスよりも1ラインだけ先に進んでいる。
【0939】
最後に、プリントヘッドインタフェースは、VLIW出力FIFOから8ビットデータを取り込み、それをそのままプリントヘッドへ出力し、BitClock信号を適切に生成する。全てのデータの転送が終わった後、ParallelXferClock信号が次のプリントラインのデータをロードするため生成される。データのプリントヘッドへの転送と連動して、別個のタイマーが、プリントヘッドインタフェース内部レジスタによって指定されたNozzleSelectライン、ColorEnableライン及びBankEnableラインを使用して、プリントヘッドの異なるプリントサイクルのための信号を生成する。
【0940】
更に、CPUは、印刷プロセス中にパラレルインタフェースを介して種々のモーター及び裁断機を制御する。
【0941】
C、M及びYドット生成
このプロセスへの入力は、印刷のため正しい向きに置かれた1000×1500CMY画像である。この画像は圧縮されていない。図157に示されるように、VLIWマイクロコードプログラムは、CMY画像を取り込み、プリントヘッドインタフェースによって要求された、ディザ処理されるC、M及びY画素を生成する。
【0942】
このプロセスは、三つのカラーコンポーネントの各々に対して1回ずつの3回実行される。このプロセスは、並列に実行される二つのサブプロセスを含未、一方は奇数ドットを生成し、他方は偶数ドットを生成する。各サブプロセスは入力画像から1画素を取り込み、3個の出力ドットを生成する(なぜならば、1画素=6出力ドットであり、各サブプロセスは偶数ドットと奇数ドットの何れかに関連しているからである)。1個の出力ドットが1サイクル毎に生成されるが、入力画素は3サイクル毎に1回だけ読み出される。
【0943】
元のディザセルは64×64形のセルであり、各エントリーは8ビットである。この元のセルは、奇数セルと偶数セルに分割されるので、各々は64の高さのままであるが、32エントリーの幅しかない。偶数ディザセルは、元のディザセル画素0、2、4等を格納し、一方、奇数ディザセルは、元のディザセル画素1、3、5等を格納する。ディザセルはラインを超えて繰り返されるので、2個のディザセルの各々の単一の32バイトラインは、ライン全体の間に必要であり、したがって、完全にキャッシュすることができる。単一のプロセスラインのうちの奇数ライン及び偶数ラインは、8ドットラインだけ離して交互にされるので、奇数ディザセルの8ライン毎に回転させることが好都合である。したがって、奇数ディザセルと偶数ディザセルの両方に同じオフセットを使用することが可能である。この結果として、偶数ディザセルのラインは元のディザセルのラインLの偶数エントリーに対応し、奇数ディザセルのラインは元のディザセルのラインL+8の奇数エントリーに対応する。
【0944】
このプロセスは、カラーコンポーネントの各々に対して1回ずつの3回実行される。CPUソフトウェアルーチンは、奇数ライン及び偶数ライン用の順次読み出しイタレータがプリントヘッドに対応した正しい画像ラインを確実に指定しなければならない。例えば、1組の18000ドット(3組の6000ドット)を生成するため、
・イエロー偶数ドットライン=0、したがって、入力イエロー画像ライン=0/6=0
・イエロー奇数ドットライン=8、したがって、入力イエロー画像ライン=8/6=1
・マゼンタ偶数ドットライン=10、したがって、入力マゼンタ画像ライン=10/6=1
・マゼンタ奇数ドットライン=18、したがって、入力マゼンタ画像ライン=18/6=3
・シアン偶数ドットライン=20、したがって、入力シアン画像ライン=20/6=3
・シアン奇数ドットライン=28、したがって、入力シアン画像ライン=28/6=4
である。この後に続く入力画像ラインの組は、
・Y=[0,1], M=[1,3], C=[3,4]
・Y=[0,1], M=[1,3], C=[3,4]
・Y=[0,1], M=[2,3], C=[3,5]
・Y=[0,1], M=[2,3], C=[3,5]
・Y=[0,2], M=[2,3], C=[4,5]
である。
【0945】
しかし、ディザセルデータはカラーコンポーネント毎に更新しなくてもよい。3カラーのディザセルは同じになるが、コンポーネント毎に2ドットラインずつオフセットしている。
【0946】
ディザ処理された出力は順次書き込みイタレータに書き込まれ、奇数及び偶数のディザ処理されたドットは2個の別々の出力に書き込まれる。同じ2個の書き込みイタレータが3個の全てのカラーコンポーネントに対して使用されるので、それらは、奇数及び偶数ドットの分割の範囲内で連続的である。
【0947】
1組のドットがプリントラインに対して生成される間に、先に生成されたドットの組が、次のセクションで説明されるような第2のVLIWプロセスによって併合される。
【0948】
併合8ビットドット出力生成
このプロセスは、図158に示されるように、1ラインのディザ処理されたドットを取り込み、VLIW出力FIFOを介してプリントヘッドインタフェースへ出力するための8ビットのデータストリームを生成する。このプロセスは、ライン全体が準備されることを必要とする。なぜならば、このプロセスは、ディザ処理されたラインの殆どを同時に準ランダムアクセスする必要があるからである。以下の定数がソフトウェアによってセットされる。
【0949】
【表101】
Figure 2001523900
順次読み出しイタレータは、前に生成されたドットのラインを指定し、イタレータのレジスタは単一カラーコンポーネントへのアクセスを制限するためセットアップされている。後続の画素の間の距離は375であり、あるラインと次のラインとの間の距離は1バイトになるように与えられる。その結果として、8個のエントリーが「ライン」毎に読み出される。単一の「ライン」は、プリントヘッドへロードされる8ビットに対応する。画像の「ライン」総数は375にセットされる。少なくとも8個のキャッシュラインを順次読み出しイタレータに割り当てることにより、完全なキャッシュコヒーレンスが維持される。8ビットをカウントする代わりに、8個のマイクロコードステップが暗黙的にカウントを行う。
【0950】
生成プロセスは、最初に、偶数ドットから全てのエントリーを読み出し、8個のエントリーを1バイトに合成し、その1バイトをVLIW出力FIFOへ出力する。3000個の全部の偶数ドットが読み出された後、3000個の奇数ドットが読み出され、処理される。ソフトウェアルーチンは、1カラーコンポーネント毎に1回ずつ、即ち、1ライン毎に3回ずつ奇数及び偶数の順次読み出しイタレータのドットのアドレスを更新しなければならない。二つのVLIWプロセスは、全部で8個のALUとVLIW出力FIFOを必要とする。CPUが上述のように二つのプロセスでレジスタを更新できる限り、VLIWプロセッサは、プリンタに追従するために十分な速さでディザ処理された画像ドットを生成し得る。
【0951】
データカードリーダー
図159は、読み出すためArtcard9を挿入することができるカードリーダー500の一形態を示す図である。図158は図159のリーダーの分解斜視図である。カードリーダーはコンピュータシステムに相互連結され、CCD読み出し機構35を含む。カードリーダーは、挿入されたArtcard9を挟むピンチローラー506及び507を含む。一方のローラー、例えば、ローラー506は、二つのローラー506及び507の間のカード9を一様な速度で前進させるためのArtcardモーター37によって駆動される。Artcard9は、一連のLEDライト512の上を通過させられ、一連のLEDライトは、半円形の断面を有する透明なプラスチックモールド514内に収容される。この断面は、例えば、LED512からの光を、カード9がLED512の傍を通過するときに、カード9の表面に集める。その表面から、光は、約480dpiの解像度に構成された高解像度リニアCCD34へ反射される。Artcard9の表面は、約1600dpiのレベルまでエンコードされているので、リニアCCD34は、約3倍の乗数でArtcard表面をスーパーサンプルする。Artcard9は、リニアCCD34が1インチ当たり約4800回の読み出しのレートでArtcardの移動方向にスーパーサンプルできるような速度で更に駆動される。走査されたArtcardのCCDデータはArtcardリーダーからACP31へ送られ処理される。光センサにより構成できるセンサ49は、カード13の有無を検出するために機能する。
【0952】
CCDリーダーは、下側基板516と、透明な成形されたプラスチックを含む上側基板514と、を有する。二つの基板の間に、半導体製造プロセスによって製作された薄く長いリニアCCDアレイを含むリニアCCDアレイ34が挿入される。
【0953】
図160を参照すると、CCDリーダーユニットの一構成例の部分断面斜視側面図が示されている。一連のLED、例えば、LED512は、カード9がCCDリーダー34の表面を通過するときに発光するように動作する。放出された光は、上側基板523の一部分を透過する。この基板は、LED512から放出された光を、カード9上の表面上の点、例えば、点532に集めるように湾曲した周囲を有する部分、例えば、部分529を含む。焦点が合わされた光は、点532から、CCDアレイ34の方へ反射される。誇張されて示された一連のマイクロレンズ、例えば、マイクロレンズ534は、上側基板523の表面に形成される。マイクロレンズ523は、表面全体から受光した光を、CCDアレイ34の感光部に入射する光を検知するCCDリーダー34の表面上の点に対応した下の焦点536に集めるように作用する。
【0954】
上記の装置には多数の改良が考えられる。例えば、リニアCCD34上の感知デバイスは千鳥状でもよい。対応したマイクロレンズ34は、千鳥状のCCDセンサに対応するように、光を千鳥状の一連のスポットへ集光させるために相応に形成することができる。
【0955】
読み出しを助けるため、Artcard9のデータ表面エリアは、図38を参照して既に説明したように、チェッカー盤のようなパターンで変調させてもよい。その他の形態の高周波変調も実現可能である。
【0956】
Artcardプリンタが記憶装置Artcard上のデータをプリントアウトするものとして提供できることは明らかである。したがって、Artcardシステムは、Artcam装置の外部に情報を配信する一般的な形態として利用することが可能である。Artcardプリンタは、Artcardを高品質印刷面にプリントアウトすることが可能であり、多数のArtcardを同じ用紙に印刷し、後で分離することができる。Artcard9の第2の面には、引き続く記憶のために、Artcard9に記憶されたファイル等に関する情報を印刷することができる。
【0957】
したがって、Artcardシステムは、CD−ROM、磁気ディスク等の他の形態の記憶装置の代わりに使用するために適した簡単化された形態の記憶装置を可能にさせる。Artcard9は、大量生産可能であり、そのため、再分配用に実質的に低価格の形態で生産できる。
【0958】
プリントロール
図162には、Artcamのプリントロール42及びプリントヘッド部が示されている。用紙/フィルム611は、連続した「ウェブのような」プロセスで、印刷機構15へ送られ、印刷機構15は、更なるピンチローラー616−619、及びプリントヘッド44を含む。
【0959】
ピンチローラー613は、駆動機構(図示せず)に連結され、プリントローラー613の回転時に、フィルム611の形態の「用紙」は、印刷機構615の中へ通され、ピクチャー出力スロット6から出される。回転式裁断機構(図示せず)は、要求された写真サイズで用紙611のロールを切断するために利用される。
【0960】
したがって、プリンタロール42は、写真用にイメージ化されたピクチャーを印刷する印刷機構615に「用紙」611を供給する役割を果たすことが明白である。
【0961】
図163には、プリントロール42の分解斜視図が示されている。プリントロール42は、ピンチローラー612、613の動作の下で出力される出力プリンタ用紙611を含む。
【0962】
次に、図164には、「用紙」フィルムロールが除かれた図163のプリントロール42のより完全な分解斜視図が示されている。プリントロール42は、インク貯蔵セクション620、用紙ロールセクション622、623、及び外側ケーシングセクション626、627からなる三つの主要部品を含む。
【0963】
最初にインク貯蔵セクション620を参照すると、インクリザーバ又はインク供給セクション633が設けられている。印刷用インクは、三つのブラダー型の容器630から632に収容される。プリンタロール42は、フルカラー出力インクを提供するものとする。したがって、第1のインクリザーバ又はブラダー容器630はシアン色インクを収容する。第2のリザーバ631はマゼンタ色インクを収容し、第3のリザーバ632はイエロー色インクを収容する。リザーバ630から632の各々は、容積寸法が異なっているかもしれないが、実質的に同じ容積サイズを有するように設計される。
【0964】
インク貯蔵セクション621、633は、カバー624と共に、プラスチックセクションから製作することが可能であり、ヒートシール、紫外線照射等を用いて一体的にできるように設計される。サイズが等しくされたインクリザーバ630から632の各々は、対応したインクチャンネル639から641に連結され、リザーバ630から632より対応したインク出力ポート635から637へのインクの流れを可能にさせる。インクリザーバ632はインクチャンネル641及び出力ポート637を具備し、インクリザーバ631はインクチャンネル640及び出力ポート636を具備し、インクリザーバ630はインクチャンネル639及び出力ポート7637を具備する。
【0965】
動作中に、インクリザーバ630から632は、対応したインクで充たされ、セクション633はセクション621に接合される。インク貯蔵セクション630から632は、折り畳み可能なブラダーでもよく、インクがインクチャンネル639−641を行き来できるようにさせ、インク出力ポート635から637と流体的に連通される。更に、必要に応じて、空気取り入れ口が設けられ、インクチャンネルリザーバ630から632に関連した圧力を要求通りに維持することができる。
【0966】
キャップ624は、空気圧取り入れ口からアクセス可能な加圧型キャビティを形成するため、インク貯蔵セクション620に接合することができる。
【0967】
インク貯蔵セクション621、633及び624は、一体的なユニットとして一つに連結され、プリンタロールセクション622、623の内側へ挿入できるように設計される。プリンタロールセクション622、623は、対応したメス型部分(図示せず)と結合するオス型部分645から647を用いてスナップフィットによって一体的に結合されるように設計される。同様に、メス型部分654から656は、対応したオス型部分660から662と結合するように設計される。用紙ロールセクション622、623は、したがって、一体的にスナップで留められるように設計される。ロール内のフィルムの一端は、二つのセクション622、623が一つに接合されたとき、二つのセクション622、623の間で締め付けられる。プリントフィルムは、必要に応じて、プリントロールセクション622、625上で回転させることができる。
【0968】
前述の通り、インク貯蔵セクション620、621、633、624は、用紙ロールセクション622、623の内側に挿入できるように設計される。プリンタロールセクション622、623は、オンデマンドでフィルムを与えるため、静止したインク貯蔵セクション621、633及び624の周りで回転することができる。
【0969】
外側ケーシングセクション626及び627は、更に、プリントロールセクション622、623の周りで結合できるように設計される。更に、ピンチローラー、例えば、612、613のそれぞれの端は、カバー626、627内で対応したキャビティ、例えば、670に留められるように設計され、ローラー613は、プリントフィルムを供給し、プリントロールから排出するため外部(図示せず)から駆動される。
【0970】
最後に、キャビティ677は、プリントロール42に関連した情報を記憶するためのシリコンチップ集積回路型装置53を挿入し案内するため、インク貯蔵セクション620、621に設けることが可能である。
【0971】
図155及び図164に示されるように、プリントロール42は、Artcamカメラ装置に挿入され、カップリングユニット680と結合するように設計され、カップリングユニット680は、シリコンチップ53との配線を行うコネクタパッド681を含む。更に、コネクタ680は、インク供給ポート635から637との4個の接続用のエンドコネクタを含む。インク供給ポートは、次に、インク供給ライン、例えば、682へ接続され、インク供給ラインは、次に、プリントヘッド供給ポート、例えば、687へ相互連結され、必要に応じてインクをプリントヘッド44へ流す。
【0972】
ロールを形成するため利用される「メディア」611は、適当な画像を上に印刷するために設計された様々な材料により構成することが可能である。例えば、不透明な回転可能なプラスチック材料が利用され、透明なプラスチックシートを使用することにより透明性が使用され、メタリックシートフィルムの利用によってメタリック印刷が行われ得る。更に、プリンタロール42内に布を利用し、布に画像を印刷することも可能であるが、適当な剛性又は適当な裏当てを有する材料だけが利用できることに注意する必要がある。
【0973】
印刷メディアがプラスチックであるとき、インクを定着させ、吸収する層でその印刷メディアを覆うことが可能である。更に、幾つかのタイプの印刷メディア、例えば、不透明白色マット、透明フィルム、艶消し透明フィルム、3次元立体印刷用のレンチキュラーアレイフィルム、金属化フィルム、格子又はホログラムのようなエンボス方式の光学的に可変のデバイス、裏面に予め印刷が施されたメディア、及び磁気記録層を含むメディア、を使用できる。金属泊を利用するとき、金属泊は、ポリマーベースをもつことが可能であり、薄い(数ミクロンの)アルミニウム又はその他の金属の蒸着層で覆われ、次に、インクプリンタ機構を介してインクを受容するように適合した透明な保護層で覆われる。
【0974】
使用されるプリントロール42は、カメラ装置の内部に挿入され、要求に応じて画像の印刷用のインク及び用紙を提供できるように設計される。インク出力ポート635から637は、カメラ装置内の対応したポートと適合する。ピンチローラー672、673は、カメラ装置の制御下で用紙をカメラ装置へ供給できるように作動される。
【0975】
図164に示されるように、実装されたシリコンチップ53は、プリントロール42の一方の端に挿入される。図165では、認証チップ53がより詳細に示され、この認証チップ53は、チップ53からチップが挿入されている対応したカメラへ詳細を通信する4本の通信リード線680から683を含む。
【0976】
図165を参照すると、チップは、小型集積回路687をエポキシに入れ、ボンディングリード線、例えば、688を外部通信リード線680から683へ繋ぐことにより、単独で作成され得る。集積チップ687は、約400平方ミクロンであり、スクライブ境界は100ミクロンである。続いて、チップは、プリントロール42のキャビティの適切な表面に貼り付けられる。図165の装置の分解図である図166には、ボンディングパッド681、682に相互連結された集積回路67が示されている。
【0977】
図164Aから164Eにおいて、参照番号1100は、全体的にプリントカートリッジ1100を示す。プリントカートリッジ1100は、本発明によれば、インクカートリッジ1102を含む。
【0978】
プリントカートリッジ1100はハウジング1104を含む。図2により詳細に示されているように、ハウジング1104は、上側成形部品1106及び下側成形部品1108によって画成される。成形部品1106及び1108は、クリップ1110によって挟まれる。ハウジング1104はラベル1112によって被われ、ラベル1112はカートリッジ1100に魅力的な外観を与える。ラベル1112は、ユーザがカートリッジ1100を使えるようにするための情報を搭載する。
【0979】
ハウジング1104はチャンバー1114を画成し、チャンバー内にインクカートリッジ1102が収まる。インクカートリッジ1102は、ハウジング1104のチャンバー1114に固定して担持される。
【0980】
フォーマーに巻き付けられたフィルム/メディア1118のロール1126を含むプリントメディア1116の補給品はハウジング1104のチャンバー1114に収容される。フォーマー1120は、インクカートリッジ1102に摺動自在に収容され、インクカートリッジに対して回転自在である。
【0981】
図164Bに示されるように、上側成形部品1106及び下側成形部品1108は一体としてクリップされ、出口スロット1122が画成され、用紙1118の舌状部は出口スロットを通して排出される。
【0982】
カートリッジ1100はローラー組立体1124を含み、ローラー組立体1124は、用紙1118がロール1126から供給されるときに用紙1118のカールを取り除くために役立ち、スロット1122を介して用紙1118を押し出すために役立つ。ローラー組立体1124は、駆動ローラー1128と、2個の従動ローラー1130と、を含む。従動ローラー1130は、リブ1132に回転自在に支持され、リブ1132は、ハウジング1104の下側成形部品1108のフロア1134から盛り上がっている。ローラー1130は、駆動ローラー1128と一体となって、用紙1118がハウジング1104から排出されるときに、用紙1118の速度及び位置を制御するため、用紙1118に正のトラクションを与える。ローラー1130は、ポリスチレンのような適当な合成プラスチック材料の射出成形部品である。この点に関して、上側成形部品1106及び下側成形部品1108は、同様に、ポリスチレンのような適当な合成プラスチック材料の射出成形部品である。
【0983】
駆動ローラー1128は、ハウジング1104の上側成形部品1106及び下側成形部品1108の各々の側壁に画成された合わせリセス1138及び1140の間に回転自在式に係留されている駆動シャフト1136を含む。駆動ローラー1128の反対側の端1142は、ハウジング1140の上側成形部品1106と下側成形部品1108に適当な構成(図示せず)で回転自在に保持されている。
【0984】
駆動ローラー1128は、ツーショット射出成形部品であり、高衝撃ポリスチレン製のシャフト1136を含み、シャフト1136の上に、エラストマ又はゴムローラー部分1144の形をした軸受手段が成形されている。これらの部分1144は、用紙1118を確実に係止し、用紙1118がカートリッジ1100から供給されるときに、用紙1118の滑りを防止する。
【0985】
ハウジング1104から突起するローラー1128の端は、十字形構造体1146(図164A)の形をした係合体を有し、この十字形構造体は、プリントカートリッジ1100が取り付けられるカメラのような装置のプリントヘッド組立体の歯車付き駆動インタフェース(図示せず)と結合する。この構造体は、用紙1118がプリントヘッドに供給される速度を、プリントヘッドによる印刷と確実に同期させるので、インクが用紙1118上で正確に位置合わせされることを保証する。
【0986】
インクカートリッジ1102は、直円柱押出成形部品の形をした容器1148を含む。この容器1148は、ポリスチレンのような適当な合成プラスチック材料から押出成形される。
【0987】
本発明の好適な実施形態において、プリントカートリッジ1100が共に使用されるプリントヘッドは、多色プリントヘッドである。したがって、容器1148は、複数の、より詳細には、4個のコンパートメント、即ち、リザーバ1150に分割される。各リザーバ1150は、異なる色、又は異なるタイプのインクを収容する。一実施形態では、リザーバ1150に収容されるインクは、シアンインク、マゼンタインク、イエローインク、及びブラックインクである。本発明の他の実施形態では、3種類の有色インクであるシアンインク、マゼンタインク及びイエローインクがリザーバ1150のうちの3個に収容され、4番目のリザーバ1150は、赤外線スペクトルだけで可視化されるインクを収容する。
【0988】
図164C及び164Dに明瞭に示されているように、容器1148の一端は、エンドキャップ1152によって閉じられる。エンドキャップ1152は複数の開口1154が画成されている。開口1154は各リザーバ1150と関連付けられているので、エンドキャップ1152が設けられた容器1148の端でリザーバ1150内は大気圧で維持される。
【0989】
シール構造体1156は、エンドキャップ1152が設けられている端側で容器1148に設けられる。シール構造体1156は、各リザーバ1150に摺動自在に受容されたゲル状材料からなる四分円形ペレット1158を含む。ペレット1158のゲル状材料は、熱硬化性ゴムと炭化水素からなる化合物である。炭化水素は白色鉱物油である。熱硬化性ゴムは、ペレット1158が通常の動作温度でその形状を維持し、同時に、ペレット1158がその関連したリザーバ1150内で摺動できるように、鉱物油に十分な剛性を与える共重合体である。適当な熱硬化性ゴムは、シェル石油会社によって「Karton」(登録商標)の名前で販売されている熱硬化性ゴムである。共重合体は、ゲルのような粘度を各ペレット1158に与えるために十分な量でその化合物内に存在する。典型的に、共重合体は、使用されるタイプに応じて、約3%から20%の重量パーセントの量で存在するであろう。
【0990】
使用中に、この化合物は加熱され、その結果として流体になる。各リザーバ1150に特定のタイプのインクが詰められると、溶融状態の化合物は各リザーバ1150に注入され、化合物はペレット1158を形成するため固まる。ペレット1158の裏側の大気圧、即ち、エンドキャップ1152と向かい合うペレットの端における大気圧は、インクがリザーバ1150から引き出されるときに、自動注油式であるペレット1148が容器1148の反対側へ向かって滑ることを保証する。ペレット1158は、逆さにされた容器からインクが出て空になることを止め、リザーバ1150内のインクが汚れることを妨げ、リザーバ1150内のインクが乾燥することを妨げる。更に、ペレット1158は、リザーバ1150からのインクの漏れを防止するため疎水性である。
【0991】
容器1148の反対側の端は、インク鍔成形部品1160によって閉じられる。成形部品1160に支持されたバッフル1162は、エラストマーシール成形部品1164を受容する。疎水性であるエラストマーシール成形部品1164は、内部にシーリング幕1166が画成されている。各シーリング幕1166にはスリット1168が設けられているので、プリントヘッド組立体からの合わせピン(図示せず)は、スリット1168を通して挿入可能であり、容器1148のリザーバ1150と流体的に連通される。中空突起1170は、インク鍔成形部品1160の反対側から突起する。各突起1170は、関連したリザーバ1150とぴったり合うように成形され、インク鍔成形部品を容器1148の端に位置決めする。
【0992】
図164Cを参照すると、インク鍔成形部品1160は、キャリア又は隠し板成形部品1172によって正しい位置に維持される。隠し板成形部品1172には、四つ葉のクローバー形状の窓1174が画成され、この窓1174を介して、エラストマーシール成形部品1164へアクセスすることができる。隠し板成形部品1172は、ハウジング1104の上側成形部品1106と下側成形部品1108との間に係留される。隠し板成形部品1174と、ハウジング1104の上側成形部品1106及び下側成形部品1108のそれぞれの内面から延びるウェブ1176及び1178は、コンパートメント1180を画成する。エアーフィルタ1182はコンパートメント1180に収容され、端部成形部品1174によって正しい位置に保たれる。エアーフィルタ1182はプリントヘッド組立体と協働する。エアーは、プリントヘッド組立体のノズルガードの至る所へ吹き付けられ、ノズルガードのクリーニングを行う。このエアーは、隠し板1172内の入口側開口1184に収容されたピン(図示せず)を用いてエアーフィルタ1182を通して引き出すことによって濾過される。
【0993】
エアーフィルタ1182は、図164Eに更に詳細に示されている。エアーフィルタ1182はフィルタ媒体1192を含む。フィルタ媒体1192は、合成ファイバに基づくものであり、フィルタリング目的のため利用可能な表面積を増加させるため溝付きの形で配置される。紙ベースのフィルタ媒体1192の代わりに、他の繊維性芯材を使用してもよい。
【0994】
フィルタ媒体1192は密閉容器1194に収容される。密閉容器1194は、底成形部品1196及び蓋1198を含む。ハウジング1104のコンパートメント1180に収容するために、密閉容器1194は、部分的に環状、即ち、馬蹄形にされる。このようにして、密閉容器1194は、一対の対向端1200を有する。吸気開口1202が各端1200に画成される。
【0995】
排気開口1204は蓋1198に画成される。排気開口1204は、最初、フィルム、又は膜1206によって閉鎖されている。フィルタ1182がコンパートメント1180の正しい位置に取り付けられたとき、排気開口1204は隠し板成形部品1172の開口1184と位置合わせされる。プリントヘッド組立体からのピンがフィルム1206を貫通し、エアーがノズルガードとプリントヘッド組立体のプリントヘッドに吹き付けられる前に、エアーフィルタ1182を介して雰囲気からエアーを引き込む。
【0996】
底成形部品1194は、密閉容器1194の正しい位置にフィルタ媒体1192を設置するための位置決め構造体1208及び1210を含む。位置決め構造体1208は複数のピンの形をなし、一方、位置決め構造体1210は、フィルタ媒体1192の端1214を係止するリブの形をしている。
【0997】
フィルタ媒体1192が底成形部品1196の正しい位置に設置された後、蓋1198は、蓋1198で底成形部品1196を密閉するため超音波溶接、又は類似した方法によって、底成形部品1196に固定される。
【0998】
プリントカートリッジ1100が組み立てられたとき、膜又はフィルム1186は、窓1174を閉鎖するために隠れ板成形部品1172の外側端に被せられる。この膜又はフィルム1186は、使用するために、ピンによって孔を開けられ、又は破裂されられる。フィルム1186は、破片がインクリザーバ1150に侵入することを防止する。
【0999】
認証チップ1188の形の認証手段は、隠れ板成形部品1172の開口1190に収容される。認証チップ1188は、プリントカートリッジ1100が装置のプリントヘッド組立体と互換性があり、準拠していることを保証するため、プリントヘッド組立体1188による問い合わせを受ける。
【1000】
認証チップ
認証チップ53
好適な実施形態の認証チップ53は、正しく製造されたプリントロールだけがカメラシステムで利用されることを保証する責任がある。認証チップ53は、プリントロールシステムに限定されない任意の消耗品に関して利用されるときに一般的に有用である技術を利用する。消耗品を必要とする(トナーカートリッジを必要とするレーザープリンタのような)他のシステムの製造者は、消耗品を認証する問題で苦労し、成功のレベルは様々である。その殆どは、専用化されたパッケージングに頼っている。しかし、これは、家庭での詰め替え作業や複製品製造を抑えない。コピー作成を防止することは、不完全に製造された代用消耗品が基本システムを損傷することを防ぐために重要である。例えば、濾過が不十分なインクは、インクジェットプリンタのプリントノズルを詰まらせ、消費者はシステム製造者に責任を負わせ、許可されていない消耗品の使用を認めない。
【1001】
認証の問題を解決するために、認証チップ53は、認証コードと、コピー防止のために特別に設計された回路と、を含む。このチップは、標準的なフラッシュメモリ製造プロセスを使用して製造され、インク及びトナーカートリッジのような消耗品に組み込むことができる程度に低価格である。一旦プログラミングされると、認証チップは、後述するように、NSA持ち出し(エクスポート)ガイドラインに準拠する。認証は、非常に大規模であり、且つ常に成長している分野である。以下の説明は、消耗品の認証だけに関連している。
【1002】
記号名
以下の記号名が本実施形態の説明を通じて使用される。
【1003】
【表102】
Figure 2001523900
基本用語
Mで示されたメッセージは平文である。Mを、Mの実体が隠された暗号文Cに変換するプロセスは、暗号化と呼ばれる。CをMへ逆変換するプロセスは、復号化と呼ばれる。暗号化関数をEで表し、復号化関数をDで表すことにより、以下の恒等式:
E[M]=C
D[C]=M
が得られる。したがって、以下の恒等式:
D[E[M]]=M
が成り立つ。
【1004】
対称暗号化方式
対称暗号化アルゴリズムとは:
暗号化関数Eが鍵Kに依存する;
復号化関数Dが鍵Kに依存する;
はKから導出可能である;
はKから導出可能である;
というアルゴリズムである。
【1005】
殆どの対称アルゴリズムにおいて、Kは通常Kと等しい。しかし、KがKと等しくない場合であっても、一方の鍵がもう一方の鍵から導出可能であるならば、数学的な定義のためには単一の鍵があれば十分である。したがって、
[M]=C
[C]=M
と表せる。
【1006】
誰でも知っている教科書から洗練された現代のアルゴリズムまでの非常に多数の対称アルゴリズムが存在する。それらの殆どは、現在の暗号解読技術がKを導出し得る程度で攻撃に成功し得るという点において不確かである。特定の対称アルゴリズムの安全性は、通常、アルゴリズムの強度、及び鍵の長さからなる二つの事項の関数である。以下のアルゴリズムは、認証チップに利用するために適した特徴を含んでいる:
DES;
ブローフィッシュ(Blowfish);
RC5;
IDEA。
【1007】
DES
DES(データ暗号化規格)は米国及び国際規格であり、暗号化と復号化に同じ鍵が使用される。鍵の長さは56ビットである。これは、ハードウェアとソフトウェアで実装されるが、当初の設計はハードウェア専用であった。DESで使用される当初のアルゴリズムは、米国特許第3962539号に記載されている。トリプルDESの変形と称されるDESの変形はより安全性が高いが、3個の鍵:K、K及びKを必要とする。これらの鍵は、
K3[DK2[EK1[M]]]=C
K3[EK2[DK1[C]]]=M
という形で使用される。
【1008】
トリプルDESの主な利点は、既存のDESの実装を使用して単一鍵のDESよりも安全性を高くすることができる点である。特に、トリプルDESは、112ビットの鍵の長さと等価的な保護を与える。トリプルDESは、単純に期待されるような168ビット鍵(3×56)と等価的な保護を与えるものではない。トリプルDESの復号化及び/又は符号化を実行する機器は米国から持ち出すことができない。
【1009】
ブローフィッシュ(Blowfish)
Blowfishは、1994年にSchneierによって最初に提案された対称ブロック暗号方式である。これは、32ビットから448ビットまでの可変長鍵を使用する。更に、これはDESよりもかなり高速である。Blowfishアルゴリズムは、鍵拡張部と、データ暗号化部の二つの部分により構成される。鍵拡張は、最大で448ビットの鍵を、全部で4168バイトの複数のサブ鍵配列へ変換する。データ暗号化は、16ラウンドのFeistelネットワークによって行われる。全ての演算は、32ビット語上でのXORと加算であり、1ラウンド当たりに4回のインデックス配列ルックアップを含む。復号化は、サブ鍵が逆順に使用されることを除いて暗号化と同じである点に注意する必要がある。したがって、実装の複雑さは、このような対称性をもたない他のアルゴリズムよりも低減される。
【1010】
RC5
1995年にRon Rivestによって設計されたRC5は、ブロックサイズ、鍵のサイズ、及びラウンド回数が可変である。しかし、典型的に、RC5は、64ビットのブロックサイズと128ビットの鍵を使用する。RC5アルゴリズムは、鍵拡張部と、データ暗号化部の二つの部分により構成される。鍵拡張は、鍵を2r+2個のサブ鍵(ここで、r=ラウンド回数である。)に変換し、各サブ鍵はwビットである。64ビットのブロックサイズで、16回のラウンドの場合(w=32,r=16)、サブ鍵配列は全部で136バイトである。データ復号化は、モジュロー2の加算と、XORと、ビット回転と、を使用する。
【1011】
IDEA
1990年にLai及びMasseyによって開発されたIDEA暗号方式の最初の具体化された形はPESと呼ばれる。1991年にBiham及びShamirによって差分解読法が発見された後、このアルゴリズムは強化され、その結果は1992年にIDEAとして発表された。IDEAは、64ビットの平文ブロックを操作するために128ビット鍵を使用する。暗号化と復号化のために同じアルゴリズムが使用される。このアルゴリズムは、一般的に、現在利用可能な最も安全なブロックアルゴリズムであると考えられている。これは、1993年に発行された米国特許第5214703号に記載されている。
【1012】
非対称暗号化方式
他に使用できるアルゴリズムは非対称アルゴリズムである。非対称暗号化アルゴリズムとは:
暗号化関数Eが鍵Kに依存する;
復号化関数Dが鍵Kに依存する;
は合理的な時間内にKから導出不能である;
は合理的な時間内にKから導出不能である;
というアルゴリズムである。
【1013】
したがって、
K1[M]=C
K2[C]=M
である。
【1014】
これらのアルゴリズムは、一方の鍵Kが公開されるので、公開鍵とも称される。したがって、誰でも(Kを使用して)メッセージを暗号化し得るが、対応した復号鍵(K)を持っている人だけがそのメッセージを復号化して読むことができる。殆どの場合に、以下の恒等式:
K2[M]=C
K1[C]=M
が成立する。
【1015】
この恒等式は非常に重要である。なぜならば、公開鍵Kを所持する人は誰でもMを見ることができ、そのMはKの所有者からのものであることが分かるからである。他の人はCを生成することができない。なぜならば、Cを生成し得ることは、Kを知っていることを意味するからである。合理的な時間内にKからKを導出できないこと、並びに、その逆にKからKを導出できないことは、当然、合理的な時間という概念によって曖昧になる。再々実証されているように、長時間を要することが予想される計算は、より高速化されたコンピュータ、新しいアルゴリズム等の導入によって実現可能になる。非対称アルゴリズムの安全性は、大きい数(より具体的には、二つの大きい素数の積である大きい数)を素因数分解すること、及び有限において離散対数関数を計算することの困難さの二つの問題のうちの一方の困難さに基づいている。大きい数の素因数分解は、現代の数学の理解においては難問であることが推測される。しかし、素因数分解は予測されるよりも速く容易になっているということが問題である。Ron
Rivestは、1977年に、125桁の素因数分解には40000兆年かかると言っていた。1994年に129桁の素因数分解が行われた。Schneierによれば、1980年代における512ビットの数から得られた安全性のレベルを現在得るためには、1024ビットの数が必要であるとされている。その鍵が数年続くとすると、1024ビットでも十分ではない。Rivestは1990年に鍵の長さの評価を改め、2005年まで高い安全性を維持するためには1628ビットを提唱し、2015年まで持ちこたえる高い安全性のためには1884ビットを提唱している。一方、Schneierは、2015年まで企業及び政府からの保護を得るためには2048ビットが必要であることを示唆している。
【1016】
多数の公開鍵暗号化アルゴリズムが存在する。その殆どは実際には実装不可能であり、その多くは、所与のMに対して非常に大きいCを生成するか、又は巨大な鍵を必要とする。更に、その他のものは、たとえ安全であるとしても、非常に低速であるため数年の間には実施できない。このため、多数の公開鍵システムは、ハイブリッド方式であり、公開鍵の仕組みは対称セッション鍵を送信するために使用され、セッション鍵が実際のメッセージのために使用される。全てのアルゴリズムは、鍵選択の点で問題がある。乱数はどうしても安全性が不十分である。大きい素数p及びqは慎重に選ぶことが必要であり、ある種の組み合わせは簡単に素因数分解できるという弱点がある(一部の弱い鍵は検査することができる)。しかし、それにもかかわらず、鍵選択は、例えば、単に、1024ビットをランダムに選択するというような単純なことではない。その結果として、鍵選択プロセスも安全でなければならない。
【1017】
公開の精査の下で使用中の実際的なアルゴリズムの中で、以下のアルゴリズム:
RSA;
DSA;
EIGamal;
は利用するために適している。
【1018】
RSA
Rivest、Shamir及びAdlemanの名前にちなんで命名されたRSA暗号システムは、最も広く使用されている公開鍵暗合システムであり、世界中の多くで事実上の標準である。RSAの安全性は、2個の素数(p及びq)の積である大きい数の素因数分解の困難さに依存していると考えられる。p及びqの生成には多数の制約がある。それらは、両方共に大きいことが必要であり、ビット数が同じであり、しかも、互いに近似していてはならない(そうでなければ、pqは√pqと近似する)。その上、多くの場合に、p及びqは強い素数でなければならないことが指摘されている。RSAアルゴリズムの特許は1983年に発行された(米国特許第4405829号)。
【1019】
DSA
DSA(デジタル署名規格)は、デジタル署名標準(DSS)の一部として設計されたアルゴリズムである。規定されているとおり、このアルゴリズムは一般的な暗号化には使用できない。その上、RSAに対して、DSAは署名検証の際に10から40倍速度が遅い。DSAは、SHA−1ハッシュアルゴリズム(以下の一方向関数の定義を参照せよ。)を明示的に使用する。DSA鍵生成は、qがp−1を割り切るような2個の素数p及びqの検出に依拠している。Schneierによれば、1024ビットのp値が長期間のDSA安全性のために必要である。しかし、DSA標準は、pの値が1024ビットよりも大きくなることを認めていない(pは、更に、64ビットの倍数でなければならない)。米国政府はDSAアルゴリズムを所有し、少なくとも一つの関連特許(1993年に発行された米国特許第5231688号)を保持する。
【1020】
EIGamal
EIGamal方式は、暗号化とデジタル署名の両方に使用される。その安全性は有界で離散対数関数を計算することの困難さに依拠している。鍵選択には、g及びxがpよりも小さくなるような、素数pと2個の乱数g及びxの選択が必要である。次に、y=gx
mod pを計算する。公開鍵は、y、g及びpである。秘密鍵はxである。
【1021】
暗号によるチャレンジ−レスポンスプロトコル及びゼロ知識証明
チャレンジ−レスポンスプロトコルの一般的な原理は、カメラシステムに適したアイデンティティ認証を提供することである。チャレンジ−レスポンスの最も簡単な形態は秘密パスワードの形態をとる。AはBに秘密パスワードを尋ね、Bが正しいパスワードで応答したとき、AはBが真正であることを表明する。この種の簡単なプロトコルには三つの主要な問題点がある。第一に、一旦Bがパスワードを公表すると、任意のオブサーバCはパスワードが何であるかを知る。第二に、Aはパスワードを検証するためにパスワードを知ることが必要である。第三に、CがAになりすました場合、Bは(CがAであると思い)Cにパスワードを与え、これにより、Bを危険にさらす。著作権のあるテキスト(例えば、俳句)を使用することは、弱い代用である。なぜならば、(例えば、知的所有権が遵守されない国では)誰でもパスワードをコピーすることができると考えられるからである。暗号によるチャレンジ−レスポンスプロトコルの考え方は、唯一のエンティティ(要求者)が、そのエンティティに関して知られている秘密情報の知識を実証することによって、プロトコル中に秘密情報自体を検証者に明かすことなく、自分のアイデンティティを他者(検証者)へ渡すことである。暗号によるチャレンジ−レスポンスプロトコルの一般化されたケースでは、ある種の方式により検証者はその秘密情報を知り、それ以外の場合には、その秘密情報は検証者にさえ知られていない。この実施形態の説明は、特に認証に関係しているので、認証の試し要される実際の暗号によるチャレンジ−レスポンスプロトコルは、適当なセクションで詳述される。しかし、ゼロ知識証明の概念はここで説明する。最初に、Feige、Fiat及びShamirによって明らかにされたゼロ知識証明プロトコルは、認証目的用のスマートカードで広く使用されている。このプロトコルの有効性は、未知の素因数分解による大きい合成整数の平方根モジュローの計算がコンピュータの能力で実施不可能である、という仮定に基づいている。これは、おそらく、大きい整数の素因数分解が困難であるという仮定と等価であろう。尚、要求者は著しい計算パワーをもっていなくてもよいことに注意する必要がある。スマートカードは、数回のモジュロー乗算だけを使用してこの種の認証を実現する。ゼロ知識証明プロトコルは米国特許第4747668号に記載されている。
【1022】
一方向関数
一方向関数Fは、入力Xに作用し、XがF[X]から判定できないようなF[X]を返す。Xのフォーマットに制限が無く、F[X]がXよりも少ないビットを格納する場合、衝突が存在する筈である。衝突は、同じF[X]値を生ずる2個の異なるX値、即ち、X≠Xであり、しかも、F[X]=F[X]となるようなX及びXとして定義される。XがF[X]よりも多数のビットを格納する場合、入力は、出力を生成するために何らかの方法で圧縮されなければならない。殆どの場合に、Xは、特定のサイズのブロックに分割され、多数のラウンドに亘って圧縮され、あるラウンドの出力が次のラウンドへの入力である。このハッシュ関数の出力は、Xが使い尽くされた後の最後の出力である。圧縮関数CFの疑似衝突は、2個の異なる初期値V及びVとして定義され、2個の入力X及びX(同一であるかもしれない)は、CF(V,X)=
CF(V,X)となるように与えられる。疑似衝突が存在しても、所与のXに対するXの計算が簡単になるわけではないことに注意する必要がある。
【1023】
高速に計算できる一方向関数だけに関心がある。更に、様々な実装において再現可能である決定論的な一方向関数だけに関心がある。一例として、F[X]がFの呼び出しの間の時間であるFを考える。所与のF[X]に対して、Xは決定可能である。なぜならば、XはFによって均等に使用されないからである。しかし、Fからの出力は様々な実装において異なる。したがって、この種のFに興味はない。
【1024】
本実施形態の認証チップの実装の説明の範囲では、以下の形式の一方向関数:
未知鍵を使用する暗号化;
乱数シーケンス;
ハッシュ関数;
メッセージ認証コード;
だけに関心がある。
【1025】
未知鍵を使用する暗号化
メッセージが未知鍵Kを使用して暗号化されたとき、暗号化関数Eは事実上一方向性である。この鍵が無い場合、E[M]からMをK無しに獲得することはコンピュータ能力的に実施不能である。暗号化関数は、鍵が隠されている限り一方向性である。暗号化アルゴリズムは衝突を生成しない。なぜならば、Eは、関数Dを使用してMを再構築できないようなE[M]を生成するからである。この結果として、F[X]は、一方向関数FがEであるならば、少なくともXと同数のビットを格納する(情報は失われない)。(上記の)対称暗号化アルゴリズムは、暗号化に基づく一方向関数を生成する非対称アルゴリズムよりも有利である。その理由は、
所定の強さの暗号化アルゴリズム用の鍵は、非対称アルゴリズムよりも対称アルゴリズムの方が短くなり、
対称アルゴリズムの方が高速に計算でき、必要なソフトウェア/シリコンが少ない、からである。
【1026】
優れた鍵の選択は選択された暗号化アルゴリズムに依存する。ある種の鍵は特定の暗号化アルゴリズムの場合に強くないので、全ての鍵の強さをテストすることが必要である。鍵選択のために実行されるべきテストの回数が増えるほど、その鍵が隠された状態を保つ可能性が低くなる。
【1027】
乱数シーケンス
乱数シーケンスR,R,...,R,Ri+1を考える。F[X]が乱数シーケンス内のX番目の乱数を返すような一方向関数を定義する。しかし、F[X]は様々な実装において所定のXに関して再現可能であることを保証しなければならない。したがって、乱数シーケンスは、本当の意味でランダムではない。その代わりに、乱数シーケンスは疑似乱数であり、生成器は特殊なシードを利用する。
【1028】
優れた乱数生成器の定義に関して多数の問題がある。Knuthは、生成器を「良くする」要因(統計的テストを含む)、生成器の構築に関する一般的な問題を説明している。大半の乱数生成器は、i−1番目の状態からi番目の乱数を生成し、i番目の数を決定するための唯一の方法は、0番目の数からi番目の数までを繰り返すことである。iが大きい場合、i回の繰り返しを待つことは実際的ではない。しかし、あるタイプの乱数生成器はランダムアクセスを許可しない。Blum、Blum及びShubは、理想的な生成器に関して、「短いシードから、校正なコインの連続的な反転によって完全に発生させられたように見える長い(ビットの)シーケンスを素早く生成するためには疑似ランダムシーケンス生成器が好ましい」のように定義している。彼らは、X
mod n型の生成器、一般的には、BBS生成器と呼ばれる生成器を定義した。現在の暗号化方式が依拠しているある種の仮定を前提とした場合、BBS生成器は非常に厳しい統計的テストに合格することを示した。
【1029】
BBS生成器は、Blum整数であるnの選択に依拠している(n=pqであり、p及びqは大きい素数であり、p≠qであり、p mod 4=3であり、q mod 4=3である)。生成器の初期状態は、xによって与えられ、ここで、x=x
mod nであり、xは、nよりも相対的に優良なランダム整数である。i番目の疑似ランダムビットは、xの最下位ビットであり、x=xi−1
mod nである。付加的な性質として、p及びqの知識は、x=x
mod n、但し、y=2 mod ((p−1)(q−1))によって、シーケンス内のi番目の数の直接的な計算を可能にさせる。
【1030】
p及びqの知識がない場合、生成器は、繰り返しを実行しなければならない(計算の安全性は大きい数の素因数分解の困難さに依存する)。当初定義されたとき、BBS生成器に関する主要な問題は、単一の出力ビットのために必要な作業量であった。このアルゴリズムは、殆どのアプリケーションに対して遅すぎると考えられていた。しかし、モンゴメリ型リダクション演算の出現によって、より実際的な実装形態が生じた。その上、Vazirani及びVaziraniは、nのサイズに依存して、生成器の安全性を譲歩することなく、より多数のビットをxから安全に取り出せることを示した。x毎に1ビットだけが必要であるとするならば、Nビット(したがって、ビット生成器関数のN回の反復)がNビット乱数を発生させるために必要である。外部オブザーバーにとって、特定のビットの組が与えられた場合に、半々の確率以外で次のビットを決定する方法は無い。x、p及びqが秘密にされている場合、それらは鍵として作用し、出力ビットストリームを取り出し、x、p及びqを計算することはコンピュータ能力的に実施不能である。また、所定の疑似ランダムビットの組を発生させるために使用されたiの値を決定することは、コンピュータ能力的に実施不能である。この最後の特徴によって、生成器は一方向性になる。異なるiの値が、所定の長さの同じビットシーケンス(例えば、32ビットのランダムビット)を生じさせる可能性がある。たとえ、x、p及びqが既知であるとしても、予定のF[i]に対して、iは確率の組として導出できるだけであり、特定の値として導出できない。(勿論、iのドメインが既知であるならば、確率の組は更に限定される)。しかし、良好なp及びqと、良好なシードxの選択に関して問題がある。特に、Ritterは、xを選択する際の問題について記述している。この問題の性質は、BBS生成器が既知長さの単一のサイクルを生成しないことである。その代わりに、BBS生成器は、縮退(長さゼロ)サイクルを含む様々な長さのサイクルを生成する。このように、BBS生成器は、短いサイクルかもしれないランダム状態を用いて初期化することが不可能である。
【1031】
ハッシュ関数
ハッシュ関数として知られている特殊な一方向関数は、任意長さのメッセージを固定長さのハッシュ値へマップする。ハッシュ関数はH[M]のように表される。入力は任意長さであるため、ハッシュ関数は固定長さの出力を生ずるため圧縮コンポーネントを有する。また、ハッシュ関数は、衝突の検出を困難にさせ、H[M]からMに関する情報の決定を困難にさせるため、オブファスケイションコンポーネントを含む。衝突は実際に存在するので、殆どのアプリケーションは、所与のXに対して、H[X]=H[X]となるようなXを見つけることが困難であるという点で、ハッシュアルゴリズムが耐プレイメージ性であることを必要とする。その上、殆どのアプリケーションは、ハッシュアルゴリズムが耐衝突性である(即ち、H[X]=H[X]となるような2個のメッセージX及びXを見つけることが困難である)ことを要求する。耐衝突性のあるハッシュ関数が理想的な意味で存在し得るかどうかは、未確定の問題である。ハッシュ関数の主なアプリケーションは、デジタル署名アルゴリズムを適用する前に、入力メッセージをデジタル「指紋」に変形することである。デジタル署名との衝突の一つの問題は以下の例に示されている。
【1032】
Aは、「私はBに100ドルの借りがある。」という長いメッセージMを持っている。Aは、自分の秘密鍵を用いてH[M]を署名する。どん欲なBは、H[M]=H[M]であり、MがBにとって有利であるような衝突メッセージM、例えば、「私はBに100万ドルの借りがある。」を探索する。明らかに、このようなMを見つけることが困難であることを保証することはAの利益である。
【1033】
耐衝突性のある一方向ハッシュ関数の例は、SHA−1、MD5、及びRIPEMD−160であり、これらは全てMD4から導かれる。
【1034】
MD4
Ron Rivestは1990年にMD4を発表した。他の全ての一方向ハッシュ関
数はMD4から何らかの方法によって導出されるので、ここでは、MD4を説明する。MD4は、衝突を探索されるのではなく、計算可能であるという点で、現在では、完全に破られたと考えられている。上記の例において、Bは、元のメッセージMと同じハッシュ値を用いて、代わりのメッセージMを普通に発生させることができる。
【1035】
MD5
Ron Rivestは1991年に、安全性の高まったMD4として、MD5を発表した。MD4と同様に、MD5は128ビットのハッシュ値を生成する。Dobbertinは、最近の攻撃後のMD5の状態を説明している。彼は、MD5において疑似衝突を見つける方法を説明し、圧縮関数の弱点を指摘し、つい最近、衝突が発見された。即ち、MD5は、衝突の存在がひどい結果を招くデジタル署名スキームの圧縮に使用されるべきではない。しかし、MD5は、一方向関数として依然として使用することができる。その上、HMAC−MD5の構造は、これらの最近の攻撃による影響を受けない。
【1036】
SHA−1
SHA−1はMD5と非常に類似しているが、160ビットのハッシュ値を有する(MD5は128ビットのハッシュ値しかない)。SHA−1は、デジタル署名標準(DSS)で使用するため、NIST及びNSAによって設計され発表された。最初に発表された説明はSHAと呼ばれたが、その後直ぐに、おそらくSHAの安全性の欠陥を訂正するために改訂され、SHA−1となった(但し、NSAは変更の原因となった数学的な理由を発表していない)。SHA−1に対する暗号攻撃は知られていない。また、SHA−1は、単にハッシュ結果が長くなったという理由で、力ずくの攻撃に対する耐性がMD4又はMD5よりも強い。米国政府は、SHA−1及びDSAアルゴリズム(DSSの一部として定められたデジタル署名認証アルゴリズム)を保有し、少なくとも一つの関連特許(1993年に発行された米国特許5231688号)を保持する。
【1037】
RIPEMD−160
RIPEMD−160は、その前進であるRIPEMD(1992年に欧州委員会のRIPEプロジェクトのために開発された)から導出されたハッシュ関数である。その名前から分かるように、RIPEMD−160は、160ビットのハッシュ結果を生成する。32ビットアーキテクチャのソフトウェア実装のため合わされたRIPEMD−160は、10年間以上に亘って高いセキュリティレベルを提供することを予定されている。RIPEMD−160に対する攻撃の成功例は存在しないが、RIPEMD−160は比較的新しく、大規模に解読されていない。最初のRIPEMDアルゴリズムは、従来のMD4に対する暗号攻撃に対抗するために特に設計された。最近のMD5に対する攻撃は、RIPEMDの128ビットハッシュ関数においても類似した弱点を明らかにした。この攻撃は理論的な弱点を示しただけであるが、Dobbertin、Preneel及びBosselaersは、RIPEMDを新しいアルゴリズムRIPEMD−160へ更に強化した。
【1038】
メッセージ認証コード
メッセージ認証の問題は以下のようにまとめることができる:
Aは、Bからのメッセージであると推測されるメッセージが本当にBからのメッセージであることをどのようにして確信するか?
メッセージ認証はエンティティ認証とは異なる。エンティティ認証の場合、一つのエンティティ(要求者)は、自分のアイデンティティを他者(検証者)に対して照明する。メッセージ認証の場合、所定のメッセージが自分の思う人からのメッセージであることを保証すること、即ち、メッセージが発信元から宛先までの途中で改ざんされていないことを保証することに関係する。一方向ハッシュ関数はメッセージに対する保護が十分ではない。MD5のようなハッシュ関数は、元の入力を代表するハッシュ値を発生させ、元の入力がハッシュ値から導出できないことに基づいている。AとBの間にいるEからの簡単な攻撃は、Bからのメッセージを途中で盗み、自分のメッセージで置き換えることである。たとえ、Aが元のメッセージのハッシュを送信したとしても、Eは自分の新しいメッセージのハッシュで簡単に置き換えることができる。一方向ハッシュだけを使用した場合、AはBのメッセージが変更されたかどうかを知る方法がない。メッセージ認証の問題に対する一つのソリューションは、メッセージ認証コード、即ち、MACだえる。BがメッセージMを送信するとき、Bは、受信者にMが本当にBからのメッセージであることがわかるようにMAC[M]を送信する。これを実現するため、BだけがMのMACを生成可能であり、更に、AはMAC[M]と対照してMを検証し得ることが必要である。これは、Mを秘密にする必要がないときに、M−MACの暗号化が有効であることとは異なることに注意する必要がある。ハッシュ関数からMACを構築する最も簡単な方法は、対称アルゴリズムを用いてハッシュ値を暗号化すること、即ち、
入力メッセージをハッシュ化 H[M]
ハッシュを暗号化 E[H[M]]
である。
【1039】
これは、最初にメッセージを暗号化して、次に、暗号化されたメッセージをハッシュ化するよりも安全性が高い。任意の対称又は非対称暗号化関数を使用することができる。しかし、(上記のような)暗号化を使用する技術の代わりに、鍵依存型の一方向ハッシュ関数を使用する方が以下の幾つかの点で有利である:
速度:一方向ハッシュ関数は一般的に暗号化よりも高速に動作するため;
メッセージサイズ:E[H[M]]は少なくともMと同じサイズであるが、H[M]は固定サイズ(通常、Mよりもかなり小さい)であるため;
ハードウェア/ソフトウェア必要条件:鍵付きの一方向ハッシュ関数は、典型的に、それらの暗号ベースの代案よりも遙かに複雑さが抑えられている;
一方向ハッシュ関数の実装は、暗号化装置又は復号化装置であるとはみなされないので、米国の国外持ち出し規制の対象ではない。
【1040】
尚、ハッシュ関数は、当初は、鍵を格納したり、メッセージ認証をサポートしたりするためには設計されていなかったことに注意する必要がある。その結果として、メッセージを秘密プレフィックス、サフィックス、又は両方と連結する種々の関数を含む、メッセージ認証を実行するためにハッシュ関数を使用する、ある種のアドホックな方法が提案されている。これらのアドホックな方法の殆どは、洗練された手段によって巧く攻撃された。付加的なMACは、XORスキーム及びテプリッツ(Toeplitz)行列に基づいて提案されている(LFSRベース構造の特殊なケースを含む)。
【1041】
HMAC
特にHMAC構造は、インターネットメッセージ認証セキュリティプロトコル用のソリューションとして認められ始めている。HAMC構造は、基礎となるハッシュ関数をブラックボックス的に使用して、ラッパーとして作用する。ハッシュ関数の置換は、安全性又は性能上の理由から求められるならば、簡単に行われる。しかし、HMAC構造の主要な利点は、基礎となるハッシュ関数がある程度の合理的な暗号強度を有するならば、HMAC構造は安全であることが証明できること、即ち、HMACの強度は、ハッシュ関数の強度と直接的に関連していることである。HMAC構造はラッパーであるため、任意の反復ハッシュ関数をHMACで使用することが可能である。その例には、HMAC−MD5、HMAC−SHA1、HMAC−RIPEMD160等が含まれる。以下のような定義:
H=ハッシュ関数(例えば、MD5又はSHA−1)
n=Hから出力されたビット数(例えば、SHA−1の場合160ビット、MD5の場合128ビット)
M=MAC関数が適用されるべきデータ
K=2当事者によって共有される秘密鍵
ipad=0x36の反復64回
opad=0x5Cの反復64回
を与えると、HMACアルゴリズムは:
0x00バイトをKの最後に付加することによってKを64バイトへ拡張する;
(1)で作成された64バイト文字列をipadでXOR演算する;
(2)で作成された64バイトにデータストリームMを付加する;
(3)で発生されたストリームにHを適用する;
(1)で作成された64バイト文字列をopadでXOR演算する;
(4)からの結果Hを(5)からの結果である64バイトに付加する;
(6)の出力にHを適用し、結果を出力する;
のようになる。したがって、
HMAC[M]=H[(KAopad)|H[(KAipad)|M]]
である。
【1042】
推奨される鍵長さは少なくともnビットであるが、64バイト(ハッシュ化ブロックの長さ)よりも長くなってはならない。nビットよりも長い鍵は、関数の安全性を上乗せしない。HMACは、オプションとして、最終的な出力の丸め、例えば、160ビットから128ビットへの丸めを行うことできる。HMAC設計者の規約(RFC)は、このアルゴリズムが最初に発表された1年後の1997年に発行された。設計者は、HMACに対する既知の最強の攻撃は、ハッシュ関数Hに対する衝突の頻度に基づく攻撃であり、最低限度で適当なハッシュ関数に対して全く実際的ではないということを公表している。より最近では、リプレイ防止機能付きHMACプロトコルが、所定の時間内でのM、HMAC[M]コンビネーションの捕捉及び再生を防止するために規定されている。
【1043】
乱数及び時変性メッセージ
一方向関数としての乱数生成器の使用については既に説明した。しかし、乱数生成器の理論は、暗号法、セキュリティ、及び認証と非常に絡み合っている。優れた乱数生成器の定義に関して多数の問題がある。Knuthは、生成器をよくするもの(統計的テストを含む)、及び生成器の構築に関する一般的な問題を説明している。乱数の用法の一つは、メッセージが時間的に変化することを保証することである。Aがコマンドを暗号化し、それをBへ送信するシステムを想定する。暗号化アルゴリズムが所与の入力と同じ出力を生成する場合、攻撃者は、簡単にメッセージを記録し、Bを欺くためにそれを再生することが可能である。攻撃者は、暗号化機構を破壊する必要がなく、(Aになりすましている間に)Bに対して再生すべきメッセージがわかれればよい。その結果として、メッセージは、しばしば、そのメッセージ(したがって、その暗号化された対応部分)が常に変化することを保証するため、乱数及びタイムスタンプを含む。乱数生成器は、しばしば、鍵を生成するためにも使用される。したがって、現時点では、全ての生成器は、この目的のためには不確かであると言って差し支えない。例えば、Berlekamp−Masseyアルゴリズムは、LFSR乱数生成器に対する従来の攻撃法である。LFSRの長さがnであるならば、2nビットのシーケンスは、鍵生成器を構成するLFSRを決定するために十分である。しかし、乱数生成器の唯一の役目は、メッセージが時間的に変化することを保証することであるならば、生成器及びシードのセキュリティは、セッション鍵生成の場合のように重要ではない。しかし、乱数シード生成器が危険にさらされ、攻撃者が未来の「乱数」を計算可能であるならば、一部のプロトコルが攻撃者に対して開放されたままにされ得る。新しいプロトコルはこの状況に関して検討されるべきである。要求される実際のタイプの乱数生成器は、インプリメンテーションと、その生成器の使用目的と、に依存するであろう。生成器には、Ron
RivestによるRC4のようなBlum、Blum、及びShubストリーム暗号、SHA−1及びRIPEMD−160のようなハッシュ関数、並びに、LFSR(線形フィードバックシフトレジスタ)及びそれらのより最近の対応物であるFCSR(キャリー付きフィードバックシフトレジスタ)のような従来の生成器が含まれる。
【1044】
攻撃
このセクションは、認証チップのような認証暗号システムを破るために行われる可能性のある様々なタイプの攻撃を説明する。攻撃は、物理的な攻撃と論理的な攻撃に大別される。物理的な攻撃は、暗号システムの物理的な実装を破壊する(例えば、鍵を取り出すためにチップを壊して開ける)方法を表し、論理的な攻撃は、実装に依存しない暗号システムへの攻撃を含む。論理的なタイプの攻撃は、プロトコル又はアルゴリズムに対して機能し、以下の三つのうちの何れかを実行しようとする:
認証プロセスを完全に回避する;
あらゆる質問に回答できるように、力ずく又は推論によって秘密鍵を取得する;
鍵を用いることなく各質問に正しい回答を与えるため、認証用の質問及び回答の性質を十分に検出する。
【1045】
次に、攻撃のスタイル及び形式を詳細に説明する。セキュリティチップによって使用されるアルゴリズム及びプロトコルとは無関係に、チップの認証部の回路は物理的な攻撃を受ける可能性がある。物理的な攻撃は、以下の4つの主要な形で現れるが、攻撃の形態は変化し得る:
認証チップを完全に回避する;
動作中にチップを物理的に検査する(破壊的及び非破壊的);
チップを物理的に分解する;
チップを物理的に改変する。
【1046】
次に、攻撃のスタイル及び形式を詳細に説明する。このセクションは、これらの攻撃に対するソリューションを提案するものではない。このセクションは、各攻撃タイプを説明するだけである。調査は、(インターネット認証のような他のある種のシステムではなく)あるシステムに取り付けられた認証チップ53の状況に限定されている。
【1047】
論理的な攻撃
これらの攻撃は、暗号システムの物理的な実装形態に依存しない。これらは、プロトコル、アルゴリズムの安全性、及び乱数生成器に作用する。
【1048】
暗号文だけの攻撃
これは、攻撃者が、全て同じアルゴリズムを使用して暗号化された一つ以上の暗号化メッセージをもつ場合である。攻撃者の目的は暗号化メッセージから平文メッセージを獲得することである。理想的には、鍵を復元することが可能であり、その結果、将来のすべてのメッセージを復元可能である。
【1049】
既知平文攻撃
これは、攻撃者が、平文と、平文の暗号化形式の両方をもつ場合である。認証チップの場合、既知の平文の攻撃は、攻撃者がシステムと認証チップの間のでーたフローを見ることができる場合である。入力及び出力は(攻撃者によって選別されることなく)観測され、弱点を見つけるため解析され得る(例えば、バースデー攻撃、又は区別の付く興味ある入力/出力のペアの探索によって)。既知平文攻撃は、選択平文攻撃よりも弱いタイプの攻撃である。なぜならば、攻撃者はデータフローしか観測できないからである。既知平文攻撃は、ロジックアナライザを、システムと認証チップの間の配線に接続することによって実行し得る。
【1050】
選択平文攻撃
選択平文攻撃は、暗号解読者が任意の選択されたメッセージを暗号システムへ送信し、その応答を観測できる能力を備えている場合である。暗号解読者がアルゴリズムを知っているならば、特定の出力を別の関数の入力へ供給することによって利用可能な入力と出力の間の関係があるであろう。内蔵型認証チップを使用するシステムでは、選択平文攻撃を防止することは難しい。なぜならば、暗号解読者は、論理的に自分がシステムであるふりをして、任意の選択されたビットパターンストリームを認証チップへ送信できるからである。
【1051】
適応的選択平文攻撃
このタイプの攻撃は選択平文攻撃と類似しているが、攻撃者が先行の試験の結果に基づいて後続の選択された平文テキストを変更し得る点で異なる。上述のシステム/認証チップのシナリオがコピー機及びトナーカートリッジのような消耗品のために利用されるときは、確実にこのケースである。なぜならば、特に、システムと消耗品の両方は誰でも入手できるようにされているからである。
【1052】
ブルートフォース攻撃
鍵ベースの暗号システムアルゴリズムを破るための保証付きの方法は、単純に全ての鍵を試してみることである。最終的に正しい鍵が見つけられるであろう。これは、ブルートフォース攻撃として知られている。しかし、鍵候補の数が増加すると、より多くの鍵を試してみる必要があり、正しい鍵を見つけるために(平均的に)要する時間が長くなる。N個の鍵がある場合、最大でN回の試行が必要である。鍵の長さがNビットであるならば、最大で2回の試行が必要であり、半分だけの試行(2N−1)後に鍵を見つけるチャンスは50%である。Nが長くなればなるほど、鍵を見つけるために要する時間が長くなるので、鍵の安全性が高まる。勿論、攻撃が最初の試行で鍵を当てる可能性はあるが、この可能性は鍵が長くなると共に低下する。ここで、56ビットの鍵長さを考える。最悪ケースでは、鍵を見つけるために全部で256回のテスト(7.2×1016回のテスト)を行わなければならない。1977年に、DiffieとHellmanは、100万個のプロセッサにより構成され、各プロセッサが毎秒100万回のテストを実行刷る能力を備えたDES解読専用機械を発表した。このような機械は任意のDESコードを破るためには20時間を要する。鍵長さが128ビットの場合を考える。最悪ケースでは、鍵を見つけるために全部で2128回のテスト(3.4×1038回のテスト)を行わなければならない。これは、各々が毎秒10億回のテストを実行する1兆個のプロセッサ上で10億年を要する。鍵長さが十分に長い場合、ブルースフォース攻撃は非常に長い時間を要するので、攻撃者の努力に値しない。
【1053】
推測攻撃
このタイプの攻撃は、攻撃者が単に鍵を「推測」しようとする場合である。攻撃としては、ブルースフォース攻撃と同じであり、成功の確率は鍵の長さにかかっている。
【1054】
量子コンピュータ攻撃
nビット鍵を解読するため、適切なアルゴリズムに埋め込まれたnキュビットを有する量子コンピュータ(NMR、オプティカル、又はケージドアトム)を構築しなければならない。量子コンピュータは、実効的に、2個の同時コヒーレント状態に存在する。デコヒーレントを生じることなく正しいコヒーレント状態を抽出することが要領である。今までのところ、これは、2キュビットのシステム(4コヒーレント状態で存在する)によって達成されている。数年の間に、これを6キュビット(64の同時コヒーレント状態をもつ)まで拡張することは可能であると思われる。
【1055】
残念なことに、キュビットを付加する毎に、鍵を表現する信号の相対強度が半分になる。これは、特に、暗号方式的に安全なシステムで使用される長い鍵の場合に、直ぐに鍵取り出しの重大な障害になる。その結果として、量子コンピュータを使用した、暗号方式的に安全な鍵(例えば、160ビット)に対する攻撃は、おそらく実施される可能性はなく、量子コンピュータが、認証チップの商業的な耐用年限中に50キュビット以上のキュビット数を達成する可能性は非常に低い。たとえ、50キュビットの量子コンピュータを使用しても、160ビット鍵を解読するために、2110回のテストが必要である。
【1056】
意図的なエラー攻撃
一部のアルゴリズムの場合、攻撃者は悪い入力の結果から有用な情報を収集することができる。有用な情報の範囲は、エラーメッセージ文から、エラーを発生させるために要した時間までに亘る。簡単な一例は、ユーザID/パスワードのスキームである。エラーメッセージが通常「間違ったユーザID」であるならば、攻撃者が「間違ったパスワード」というメッセージを取得したとき、ユーザIDが正しいことを知る。メッセージが常に「間違ったユーザID/パスワード」であるならば、攻撃者に与えられる情報は遙かに少ない。より複雑な例は、最近発表された、安全なウェブサイトから暗号コードを解読する方法である。この攻撃には、特定のメッセージをサーバーへ送信することと、エラーメッセージ応答を観測することとが含まれる。応答は、鍵を学習するために十分な情報を与え、応答が無くても何らかの情報が得られる。アルゴリズムの一例として、時間は、誤りのあるビットが入力メッセージ中に検出されたときに直ちにエラーを返すアルゴリズムの場合に知ることができる。ハードウェア実装形態に依存して、攻撃者が、応答の時間を計り、エラー応答に要した時間に基づいて1ビットずつ変更し、このようにして鍵を獲得することは、簡単な方法である。チップ実装形態の場合、必要な時間がインターネット経由の場合よりもかなり高い精度で観測できることは確実である。
【1057】
バースデー攻撃
この攻撃は、有名な「バースデーパラドックス」(実際には全くパラドックスではない)にちなんで命名された。ある人が他の人と同じ誕生日である確率は365分の1である(閏年は考えない)。したがって、室内の183人のうちの一人があなたと同じ誕生日である確率は50%よりも高い筈である。しかし、室内に23人の人がいれば、何れか二人の誕生日が同じである確率は50%を超える。その理由は、23人によって253通りのペアが生じるからである。バースデー攻撃は、ハッシングアルゴリズム、特に、ハッシングとデジタル署名を組み合わせるアルゴリズムに対する一般的な攻撃である。メッセージが生成され、既に署名されている場合、攻撃者は、同じ値にハッシュする衝突メッセージを探す必要がある(あなたと同じ誕生日の人を見つけることと類似している)。しかし、攻撃者がメッセージを生成可能であるならば、バースデー攻撃が作用し始める。攻撃者は、同じハッシュ値をもつ二つのメッセージを探し(何れか二人が同じ誕生日である場合と類似している)、一方のメッセージだけがそれに署名をした人に受け入れられ、もう一方は攻撃者の役に立つ。その人が元のメッセージに署名をし終えたならば、攻撃者は、その人は別のメッセージに署名をしたことを主張するだけでよく、数学的にどちらのメッセージが原本であるかを示す方法は無い。なぜならば、両方のメッセージは同じ値にハッシュするからである。ブルートフォース攻撃が一致を判定するための唯一の方法であるとすると、バースデー攻撃によるnビット鍵の脆弱化は2n/2である。バースデー攻撃を受ける可能性のある128ビットの長さの鍵は、事実上64ビットの長さしかない。
【1058】
連鎖攻撃
これらの攻撃は、ハッシュ関数の連鎖性に対して行われる攻撃である。連鎖攻撃は、ハッシュ関数の圧縮関数に的を絞る。このアイデアは、ハッシュ関数が一般的に任意の長さの入力をとり、入力nビットを同時に処理することによって、一定の長さの出力を生成する点に基づいている。1ブロックからの出力は次のブロックへの連鎖変数セットとして使用される。入力全体に対する衝突を見つけるのではなく、このアイデアは、入力連鎖変数セットが与えられた場合に、本来のメッセージと同じ出力連鎖変数を生じる代用ブロックを見つけることである。特定のブロックの選択数は、ブロックの長さに基づいている。連鎖変数がcビットであり、ハッシング関数はランダムマッピングのように挙動し、ブロック長さがbビットであるならば、このようなbビットブロックの個数は、約2b/2c個である。代用ブロックを見つけるためのチャレンジは、このようなブロックが考えられる全てのブロックのうちの疎部分集合であることである。SHA−1の場合、512ビットブロックの個数は、約2512/2160、即ち、2352個である。ブルートフォース検索によってブロックを見つける見込みは2160分の1である。
【1059】
完全ルックアップテーブルによる代用
チップへ送信された可能性のあるメッセージの数が少ない場合、鍵を解読するために複製品製造者は不要である。その代わりに、複製品製造者は、システムによって送信されたコードに対する純正チップからのレスポンスの全てを記録したROMをチップに組み込むことが可能である。鍵が長くなり、レスポンスが長くなると共に、このようなルックアップテーブルに必要な空間が大きくなる。
【1060】
疎ルックアップテーブルによる代用
チップへ送られたメッセージが、実効的にランダムではなく、ある程度予測可能であるならば、複製品製造者は完全ルックアップテーブルを提供しなくてもよい。例えば:
メッセージが単なるシリアル番号であるならば、複製品製造者は、過去及び未来の予測シリアル番号を格納するルックアップテーブルを提供すればよい。これらのシリアル番号が1019個を超える可能性は低い;
テストコードが単なる日付であるならば、複製品製造者はアドレスとして日付を使用してルックアップテーブルを生成することができる;
テストコードが、シリアル番号又は日付をシードとして用いる疑似乱数であるならば、複製品製造者は、まさに、システム内の疑似乱数生成器を解読する必要がある。これは、おそらく難しくはないであろう。なぜならば、複製品製造者はシステムのオブジェクトコードを入手できるからである。複製品製造者は、蓄積された認証コードへアクセスするためこれらのコードを使用して、内容アドレス可能メモリ(又は、その他の疎配列ルックアップ)を生成するであろう。
【1061】
差分暗号解読
差分暗号解読は、入力ストリームのペアが既知差分を用いて生成され、符号化ストリームの差分が解析される攻撃を表す。既知差分攻撃は、DES及びその他の同様のアルゴリズムで使用されるようなSボックスの構造にかなり依存している。HMAC−SHA1のような他のアルゴリズムはSボックスを持たないが、攻撃者は、
最小差分入力及びそれに対応した出力
最小差分出力及びそれに対応した入力
の統計的解析を行うことによって差分的な攻撃を実行し得る。
【1062】
殆どのアルゴリズムは、差分暗号解読のプロセスが記載された後、差分暗号解読に対して補強された。これは、各暗号化方式に専用のセクションで対称とされている。しかし、一部の密かに開発された近年のアルゴリズムは破られている。なぜならば、開発者がある種のスタイルの差分攻撃を考慮せず、自分のアルゴリズムを公開の精査の対象としなかったからである。
【1063】
メッセージ置換攻撃
ある種のプロトコルでは、媒介物はメッセージの一部又は全部を置換可能である。これは、真の認証チップが消耗品内の再使用可能な複製チップにプラグインされる場合である。複製チップは、システムと認証チップの間の全てのメッセージを盗み取り、多数の置換攻撃を実行し得る。ヘッダとその後に続く内容とを格納したメッセージを例として考える。攻撃者は有効ヘッダを生成し得ないが、特に、有効レスポンスが「はい、あなたのメッセージを受信しました。」のようなものであるならば、メッセージの固有の内容を置換することができる。たとえ、リターンメッセージが「はい、以下のメッセージを受信しました...」であったとしても、攻撃者は、肯定応答を本来の送信者へ返信する前に、元のメッセージを置換することができる。メッセージ認証コードは、殆どのメッセージ置換攻撃に対抗するために開発された。
【1064】
鍵生成器のリバースエンジニアリング
疑似乱数生成器が鍵を生成するため使用される場合、複製品製造者は、生成器プログラムを取得するか、又は使用されたランダムシードを推測する可能性がある。これは、ネットスケープのセキュリティプログラムが最初に破られたときの方法である。
【1065】
認証全体の回避
認証プロトコルには認証プロセス全体の回避を可能にする問題があり得る。この種の攻撃の場合、鍵は全く無関係であり、攻撃者は鍵を復元する、又は鍵を推定する必要がない。電源投入時に認証を行なうが、その他のときには認証しないシステムを例として考える。複製認証チップを含む再使用可能な消耗品は、真正認証チップを利用する場合もある。複製認証チップ53は、認証呼び出しのため真正チップを使用し、次に、その後の真正認証チップの状態データをシミュレーションする。認証を回避する別の例は、消耗品が使用された後に限りシステムが認証する場合である。複製認証チップは、消耗品の使用後で、認証プロトコルが完了する前に(或いは、開始される前に)コネクションの失敗をシミュレーションすることにより単純な認証回避を実行できる。「ケンタッキーフライドチップ」ハックと呼ばれる悪名の高い攻撃は、衛星テレビジョンシステム用のマイクロコントローラチップを置換する。加入者が受信料の支払いを停止したとき、システムは、「使用不能」メッセージを送出するであろう。しかし、新しいマイクロコントローラは、このメッセージを検出するだけで、それを消費者の衛星テレビジョンシステムへ渡さない。
【1066】
強盗/賄賂攻撃
鍵を知っている人は、それを他の誰かに教える可能性がある。この秘密の暴露は、強制(賄賂、強盗等)、報復(例えば、不満を抱いている従業員)、又は単に信条のために行われる。これらの攻撃は、通常、鍵を推測する他の試みよりも安価かつ容易である。一例として、Divx規格の開発に関わることを要求した多数の人々は、近年(1998年5/6月)、Divx仕様解読解読装置の開発に参加したいという趣旨で、即ち、信条によって、多種多様なDVDニュースグループで主張している。
【1067】
物理的攻撃
以下の攻撃は、攻撃者が物理的にアクセスできるシリコンチップに認証機構が実装されていることを前提としている。最初の攻撃であるROM読み出しは、鍵がROMに保存されているときの攻撃を表し、残りの攻撃は秘密鍵がフラッシュメモリに保存されることを前提としている。
【1068】
ROM読み出し
鍵がROMに保存されている場合、鍵を直接読み出すことが可能である。ROMは、このように(非対称暗号方式で使用するための)公開鍵を保持するため安全に使用することができるが、秘密鍵を保持するためには使用できない。対称暗号方式では、ROMは全く当てにならない。著作権付きテキスト(例えば、俳句)を鍵として使用することは不十分である。なぜならば、鍵の複製は、知的所有権が遵守されない国で行われることが想定されるからである。
【1069】
チップのリバースエンジニアリング
チップのリバースエンジニアリングでは、攻撃者は、チップを分解し、回路を解析する。回路が解析されてしまうと、チップのアルゴリズムの内部動作を復元することができる。ルーセント・テクノロジー社は、回路を映像化するため、TOBIC(ツー・フォトンOBICの略であり、OBICはOptical
Beam Induced Current光ビーム誘導電流の頭文字である。)と呼ばれるアクティブな方法を開発した。主としてスタティックRAM解析のために開発されたプロセスは、全ての裏材を取り除き、裏面を鏡面仕上げまで磨き、表面に光を集光させる。励起波長は、特にICに電流を誘導しないように選択される。19世紀にケルクホフスは、アルゴリズムの内部動作がスキームの単なる秘密であるならば、スキームは解読されたも同然である、という暗号解読に関する基本的な仮説を立てた。ケルクホフスは、秘密性は完全に鍵の中に存在しなければならない、ということを明記している。その結果として、チップのリバースエンジニアリングに対する最良の保護策は、内部動作を無関係にすることである。
【1070】
認証プロセスの不当使用
あらゆる複製品製造者はシステムと消耗品の両方のデザインを入手していることを想定しなければならない。同じチャンネルが、システムと信頼できるシステム認証チップとの間、並びに、信頼できない消耗品認証チップとの間の通信のために使用されるならば、信頼できないチップが「正しい回答」を得るために信頼できるチップに問い合わせをする可能性がある。もしそうであるならば、複製品製造者は鍵を決定する必要がないであろう。彼らは、システム認証チップからの応答を使用してシステムをだますだけでよい。認証プロセスを不当使用する別の方法は、論理的攻撃「認証プロセスの回避」と同じ方法に従って、認証プロセスが行われるとき、システムとの接続の失敗をシミュレーションし、電源遮断等をシミュレーションする。
【1071】
システムの変更
この種の攻撃は、システム自体が複製消耗品を受け入れるように変更される攻撃である。攻撃は、システムROMの変更、消耗品の配線し直し、又は極端なケースでは、完全な複製システムである。この種の攻撃は、各個のシステムが変更されることが必要であり、殆どの場合に所有者の承諾が必要であろう。通常は、消費者がこのような変更を行うために明らかな利益が必要である。なぜならば、このような変更は、典型的に、保証を無効にさせ、殆どの場合に費用が掛かるからである。消費者にとって明らかな利益のあるこのような変更の一例は、固定リージョン型DVDプレーヤーをリージョンフリー型DVDプレーヤーに変更するソフトウェアパッチである。
【1072】
従来のプロービングによるチップ動作の直接視
チップ動作がSTM又は電子ビームを使用して直接監視できるならば、鍵は、内部不揮発性メモリから読み出され、作業レジスタへ取り込まれるときに記録できる。従来の3形態のプロービングは、ICの通電中にICの上面又は前面に直接アクセスすることが必要である。
【1073】
不揮発性メモリの直接視
チップが、フラッシュメモリのフローティングゲートを放電させることなく露出するためにスライスされているならば、鍵は、おそらく、STM又はSKM(走査ケルビン顕微鏡)を使用して直接監視できる。しかし、ゲートを放電させることなくこのレベルでチップをスライスすることはおそらく実施不可能である。湿式エッチング、プラズマエッチング、イオンミリング(集光イオンビームエッチング)、又は化学機械研磨は、ほぼ確実にフローティングゲート上に存在する小さい電荷を放出する。
【1074】
状態変化によって生じる光バーストの監視
ゲートの状態が変化するとき、少量の赤外線エネルギーが放出される。シリコンは赤外線透過性であるため、これらの変化はチップの下側から回路を注視することによって観測できる。放出プロセスは弱いが、天文学で使用するために開発された超高感度機器を用いて検出できる程度に輝いている。IBMによって開発されたこの技術は、PICA(ピコセコンド・イメージング・サーキット・アナライザ)と呼ばれる。レジスタの状態が時点tで既知であるならば、レジスタ切り替わり時間の監視によって、時点t+nにおける正確な値が明らかになり、データが鍵の一部分であるならば、その部分は解読される。
【1075】
EMIの監視
電子回路が動作しているときには、かならず微弱な電磁信号が放出される。比較的低価格(数千ドル)装置はこれらの信号を監視できる。これは、攻撃者が鍵を推測するために十分な情報を与える。
【1076】
dd 変動の監視
鍵を監視できないとしても、レジスタが状態を変化させるときにはかならず電流の変動が生じる。信号対雑音比が十分に高い場合、攻撃者は、ハイビット又はロービットをプログラミングするときに生じるIddの差を監視することができる。Iddの変化は鍵に関する情報を示し得る。このような攻撃は、スマートカードを解読するために既に使用されている。
【1077】
差分故障解析
この攻撃は、イオン化、マイクロ波放射、又は環境ストレスによってビット誤りが取り込まれることを前提としている。殆どのケースでは、このような誤りは、鍵を明らかにするであろう役に立つ変更ではなく、チップに悪影響を与える(例えば、プログラムコードを破壊させる)可能性が高い。ROM上書き、ゲート破壊等のような目標としている故障は、有用な結果を生じる可能性が更に低い。
【1078】
クロック誤作動攻撃
チップは、典型的に、一定のクロック速度レンジ内で適切に動作するように設計されている。一部の攻撃者は、チップを非常に高いクロック速度で動作させることによってロジックに故障を生じさせ、又は特定の間隔で特定の時間にクロック誤作動を生じさせることを試みる。このアイデアは、回路が適切に機能しない乱調状態を作ることである。一例として、ANDゲートは、(乱調状態のために)入力と入力の論理積ではなく、常に入力をスルーする。攻撃者がチップの内部構造を知っているならば、攻撃者は、アルゴリズム実行中の正確な時点で乱調状態を取り入れ、これにより、鍵に関する情報を明らかにすることができる(或いは、最悪ケースでは、鍵自体を明らかにする)。
【1079】
電源攻撃
クロック信号に誤動作を引き起こす代わりに、攻撃者は電源に誤動作を生じさせることができ、電力は動作電圧レンジを外れるように増加又は減少させられる。正味の効果はクロック誤動作の場合と同じであり、特定の命令の実行に誤りを生じさせる。このアイデアは、CPUが鍵をXOR演算することを停止させること、又はデータを1ビット位置だけシフトすることを停止させること等である。鍵に関する情報を明らかにするために、特定の命令が目標にされる。
【1080】
ROMの上書き
ROMの単一ビットは、レーザーカッター顕微鏡を使用して、ロジックの向きに応じて、1又は0に書き換えることができる。あるオペコード/オペランドのセットがある場合、攻撃者が条件付きジャンプを無条件ジャンプへ書き換えること、又はたぶんレジスタ転送の宛先を変更することは簡単なことである。目標命令が慎重に選択されたならば、鍵が明らかにされるであろう。
【1081】
EEPROM/フラッシュの変更
EEPROM/フラッシュ攻撃は、ROM攻撃と類似しているが、レーザーカッター顕微鏡技術が個別のビットのセットとリセットの両方に使用できる点で異なる。これは、アルゴリズムの変更の適用範囲を非常に拡大する。
【1082】
ゲート破壊
AndersonとKuhnは、BihamとShamirがDESに関する攻撃を発表した高速ソフトウェア暗号化に関する1997年のワークショップのランプセッションで、ゲート破壊を説明している。この攻撃は、従来のブロック暗号(DES)のハードウェア実装内の個々のゲートを破壊するためレーザーカッターを使用するものであった。この攻撃の正味の効果は、レジスタの特定のビットを強制的に「無価値」にすることである。BihamとShamirは、特定のレジスタに強制的にこのような影響を与えることの効果−丸め関数からの出力の最下位ビットが0にセットされる、を説明している。左半分と右半分の最下位6ビットを比較することにより、鍵の数ビットを復元することができる。このようにして多数のチップにダメージを加えると、完全な鍵の復元を容易に行うために、鍵に関する十分な情報を明らかにすることができる。このように変更された暗号化チップは、暗号化と復号化はもはや逆の関係ではなくなるという性質をもつであろう。
【1083】
上書き攻撃
フラッシュメモリを読み出す代わりに、攻撃者は、単に、レーザーカッター顕微鏡を用いて単一ビットをセットする。攻撃者が前の値を知らないとしても、新しい値がわかる。チップが動作し続けるならば、そのビットの元の状態は、新しい状態と同じであるはずである。チップが動作しなくなった場合、そのビットの元の状態は、現在の状態の論理否定NOTである。攻撃者は、鍵の各ビットに対してこの攻撃を実行し、最大でnチップを使用してnビット鍵を獲得することができる(新しいビットが古いビットと一致するならば、新しいビットは次のビットを決定するために必要ではない)。
【1084】
テスト回路攻撃
殆どの回路は、製造上の欠陥を検査するために特に設計されたテスト回路を備えている。これは、BIST(ビルト・イン・セルフ・テスト)とスキャンパスとを含む。非常に頻繁に、スキャンパス及びテスト回路は、内蔵された全てのラッチへのアクセス及びリードアウト機構を含む。一部のケースでは、テスト回路は特定のレジスタの内容に関する情報を与えるために使用される可能性がある。テスト回路は、しばしば、チップが全ての製造上のテストに合格すると、一部のケースではチップ内の特定の配線を切ることによって、無効状態にされる。しかし、やる気のある攻撃者は、テスト回路を再接続して、動作可能状態にし得る。
【1085】
残留メモリ
値は、電源が取り外された後、長期間RAMに残存するが、不揮発性とみなされるまで長期間残存することはない。攻撃者は、機密情報がRAM(例えば、作業用レジスタ)へ移された後、電源を取り外し、RAMから値を読み出そうとすることが可能である。この攻撃は、通常のRAMチップを有するセキュリティシステムに対して最も有効である。典型的な例として、セキュリティシステムは、コンピュータケースが開けられたときにトリガーされる自動電源遮断機能付きで設計されていた。攻撃者は、単にケースを開け、RAMチップを取り外し、メモリ残留を利用して鍵を取り出せばよかった。
【1086】
チップ窃盗攻撃
認証チップの耐用期間に多数のステージが存在する場合、これらのステージの各々は、チップが盗み取られた場合のセキュリティ用の派生問題の観点で調べる必要がある。例えば、情報が複数のステージでチップにプログラミングされる場合、ステージ間でチップを窃盗したならば、攻撃者は鍵情報を入手できるか、又は攻撃のための労力が軽減される可能性がある。同様に、チップが、製造直後であり、プログラミングの前に盗み取られた場合、攻撃者に論理的利益又は物理的利益があるだろうか?
必要条件
消耗品を認証する問題に対する従来のソリューションは、典型的に、物理的なパッケージングについての特許に依存している。しかし、これは、家庭での詰め替え作業や産業財産権の保護の弱い国における複製品製造を止められない。その結果、より高レベルの保護が必要である。したがって、認証メカニズムは、システムが消耗品を安全かつ容易に認証できるようにする認証チップ53内に構築される。ここでは、消耗品を認証するシステムだけに限定すると(システムを認証する消耗品については考えない)、次の2レベルの保護を考えることができる:
プレゼンスオンリー認証
この場合、認証チップが存在することだけがテストされる。認証チップは、最プログラミングすることなく、別の消耗品で再使用することができる;
消耗品ライフタイム認証
この場合、認証チップの存在がテストされるだけではなく、認証チップ53は、消耗品の耐用期間に限り持続しなければならない。チップを再使用する場合、チップは、完全に消去され、再プログラミングされなければならない。これらの二つの保護レベルは、異なる必要条件を取り扱う。ここでは、主に、大量生産消耗品の複製品を防止するため、消耗品ライフタイム認証に関心がある。このケースでは、各チップは、認証対象である消耗品に関するセキュア状態情報を保持しなければならない。尚、消耗品ライフタイム認証チップは、プレゼンスオンリー認証チップを必要とするあらゆる状況で使用できることに注意する必要がある。認証の必要条件、データ記憶完全性の必要条件、及び製造の必要条件は、別々に検討すべきである。以下のセクションは各々の必要条件を簡単に説明する。
【1087】
認証
プレゼンスオンリー認証と消耗品ライフタイム認証の両方に対する認証必要条件は、システムが消耗品を認証するケースに限定される。プレゼンスオンリー認証の場合、認証チップが物理的に存在することが保証されなければならない。消耗品ライフタイム認証の場合、状態データが実際に認証チップに由来すること、及び状態データが途中で改ざんされていないこと、が保証される必要がある。これらの問題は切り離すことができず、改ざんされたデータは新しい送信元からのものであり、送信元を判定できない場合、改ざんの問題を解決できない。機密性があり、セキュリティ専門家によって精査されていない自家製のセキュリティ法に基づく認証方法を提供するだけでは不十分である。したがって、主要な必要条件は、専門家の精査に耐えた手段による認証を提供することである。認証チップ53によって使用される認証スキームは、論理的手段による打破に抵抗できなければならない。論理的タイプの攻撃は費用が掛かり、次の三つの事柄:
認証プロセスを完全に回避する;
あらゆる質問に回答できるように、力ずく又は推論によって秘密鍵を取得する;
鍵を用いることなく各質問に正しい回答を与えるため、認証用の質問及び回答の性質を十分に検出する;
のうちの一つを実行しようとする。
【1088】
データ記憶完全性
認証プロトコルは、通信されるメッセージ中のデータ完全性の保証に対押しているが、データ記憶完全性も必要である。次の2種類のデータ:
秘密鍵のような認証データ;
シリアル番号及びメディア残量等の消耗品状態データ;
を認証チップ内に記憶しなければならない。
【1089】
これらの二つのデータタイプのアクセス必要条件は全く異なる。したがって、認証チップ53は、各タイプの完全性必要条件を考慮する記憶/アクセス制御メカニズムを必要とする。
【1090】
認証データ
認証データは機密保持されなければならない。認証データは、チップの耐用期間の製造/プログラミングステージの間にチップに記憶される必要があるが、それ以降、チップから取り出されることは許可されるべきではない。認証データは、不揮発性メモリから読み出されることに対抗できなければならない。認証スキームは鍵が推論によって取得できないことを保証する役目があり、製造プロセスは鍵が物理的手段によって取得できないことを保証する役目がある。認証データ記憶エリアのサイズは、必要な鍵、及び認証プロトコルによって義務づけられるような秘密情報を保持するために十分な大きさでなければならない。
【1091】
消耗品状態データ
各認証チップ53は、消耗品状態データのうちの256ビット(32バイト)を記憶できる。消耗品状態データは以下のタイプに分類される。アプリケーションに依存して、以下のタイプのデータ項目の各々の数は異なる。単一のデータ項目に対する最大数は32ビットであると仮定する:
リードオンリー;
リードライト;
デクリメントオンリー。
【1092】
リードオンリーデータは、チップの耐用期間の製造/プログラミングステージの間にチップに保存できなければならないが、それ以降、変更を許されるべきではない。リードオンリーデータの例は、消耗品バッチ番号及びシリアル番号である。
【1093】
リードライトデータは、変更可能な状態情報であり、例えば、特定の消耗品が使用された最後の時間である。リードライトデータ項目は、消耗品の耐用期間中、無制限の回数で読み書きをすることができる。それらは、消耗品に関するあらゆる状態情報を記憶するため使用できる。このデータに対する唯一の必要条件は、不揮発性メモリに保持されるべきである、ということである。攻撃者はシステムへのアクセス権を獲得し得るので(リードライトデータへの書き込みが可能であり)、攻撃者はこのタイプのデータフィールドを変更する可能性がある。このデータタイプは秘密情報のために使用されるべきではなく、不確かであると考えるべきである。
【1094】
デクリメントオンリーデータは、消耗品リソースの利用可能度をカウントダウンするため使用される。例えば、コピー機のトナーカートリッジは、デクリメントオンリーデータ項目としてトナー残量を記憶する。カラープリンタ用のインクカートリッジは、各インク色の量をデクリメントオンリーデータ項目として記憶し、3個(シアン、マゼンタ及びイエローの各々に1個ずつ)、又は5から6個のデクリメントオンリーデータ項目を必要とする。この種のデータ項目の必要条件は、一旦、製造/プログラミングステージで初期値を用いてプログラミングされると、値を減少させることだけが可能である、ということである。それは、最小値に達すると、それ以上は減少し得ない。デクリメントオンリーデータ項目は、消耗品ライフタイム認証だけで必要になる。
【1095】
製造
認証チップ53は、理想的には、低価格消耗品の認証メカニズムとして組み込むことができるように低製造コストであるべきである。認証チップ53は、フラッシュのような標準的な製造プロセスを使用すべきである。これは:
製造場所の非常に広範囲の選択を可能にさせること;
明確であり、且つ正常に動作するテクノロジーを使用すること;
コストを低減すること;
が必要である。
【1096】
使用される認証スキームとは無関係に、チップの認証部の回路は物理的攻撃に対抗できなければならない。物理的な攻撃は、以下の4つの主要な形で現れるが、攻撃の形態は変化し得る:
認証チップを完全に回避する;
動作中にチップを物理的に検査する(破壊的及び非破壊的);
チップを物理的に分解する;
チップを物理的に改変する。
【1097】
理想的には、チップは米国から持ち出せるべきであるので、認証チップ53をセキュア暗号化装置として使用可能であってはならない。これは優先度の低い必要条件である。なぜならば、他の国にも認証チップを製造し得る多数の企業が存在するからである。いずれにせよ、米国からの国外持ち出し規制は変わり得る。
【1098】
認証
消耗品を認証する問題に対する従来のソリューションは、典型的に、物理的なパッケージングについての特許に依存している。しかし、これは、家庭での詰め替え作業や産業財産権の保護の弱い国における複製品製造を止められない。したがって、より高レベルの保護が必要である。機密性があり、セキュリティ専門家によって精査されていない自家製のセキュリティ法に基づく認証方法を提供するだけでは不十分である。ネットスケープの最初の独自に開発したシステム、及び携帯電話で私用されるGSM不正防止ネットワークは、設計秘密主義によって生じたセキュリティの脆弱性である。両方のセキュリティシステムは、それらの企業がオープン設計プロセスに従っていたならば検出できたであろう従来の手段によって破られた。ソリューションは、専門家の精査に耐えた手段による認証を提供することである。多数のプロトコルを消耗品認証のために使用することが可能である。ここでは、公表されたセキュリティ方法だけを使用し、この新しい方法によって知られた動作を使用する。全てのプロトコルにおいて、スキームの安全性は、秘密アルゴリズムではなく、秘密鍵に依拠する。プロトコルの全ては、時変性チャレンジ(即ち、毎回異なるチャレンジ)に依存し、レスポンスはチャレンジと秘密情報に依存する。チャレンジは乱数を含むので、観測者は後続のアイデンティフィケーションに関する有益な情報を集めることができない。プレゼンスオンリー認証と消耗品ライフタイム認証の各々のために二つのプロトコルが提案される。プロトコルは認証プロセスのために必要な認証チップの個数が異なるが、全てのケースで、システムは消耗品を認証する。ある種のプロトコルは、1個又は2個のチップで動作するが、他のプロトコルは2個のチップだけで動作する。使用される認証チップが1個であるか2個であるかとは無関係に、システムは認証判定を行う役割を担う。
【1099】
シングルチップ認証
唯一の認証チップ53が認証プロトコルのために使用される場合、単一チップ(チップAと呼ぶ)は、システム(システムと呼ぶ)に対し、チップAが真正であることを伝える責任がある。プロトコルの開始時に、システムは、チップAの真正性を確信できない。システムは、チップAとチャレンジ−レスポンスプロトコルを実行し、チップの真正性を判定する。全てのプロトコルにおいて、消耗品の真正性は、チップの真正性に直接的に基づいている。即ち、チップAが真正であるとみなされるならば、消耗品も真正であるとみなされる。データフローは図167に示されている。シングルチップ認証プロトコルの場合、システムは、ソフトウェア、ハードウェア、又は両者の組み合わせのどれでもよい。重要なことは、システムは安全ではなく、攻撃者がROMを調べることによって、又は回路を調べることによって容易にリバースエンジニアリングをすることができる、ということである。システムは、それ自体で安全になるようには特に設計されていない。
【1100】
ダブルチップ認証
別のプロトコルでは、2個の認証チップが図168に示されるように必要になる。単一のチップ(チップA)は、システム(システムと呼ぶ)に対し、チップAが真正であることを伝える責任がある。認証プロセスの一部として、システムは、信頼できる認証チップ(チップTと呼ぶ)を利用する。ダブルチップ認証プロトコルでは、システムは、ソフトウェア、ハードウェア、又は両者の組み合わせのどれでもよい。しかし、チップTは物理的な認証チップでなければならない。あるプロトコルでは、チップT及びチップAは同じ内部構造を備え、他のプロトコルでは、チップT及びチップAは異なる内部構造を備えている。
【1101】
プレゼンスオンリー認証(不確かな状態データ)
このレベルの消耗品認証の場合、認証チップ53の存在を確認することだけに関心がある。認証チップは状態情報を格納し得るが、その状態情報の伝送は安全であるとは考えられない。二つのプロトコルが提案される。プロトコル1は2個の認証チップが必要であり、プロトコル2は1個又は2個の認証チップを使用して実現可能である。
【1102】
プロトコル1
プロトコル1はダブルチッププロトコルである(2個の認証チップが必要になる)。各認証チップは以下の値を格納する:
K F[X]用の鍵。秘密でなければならない;
R 現在の乱数。秘密でなくてもよいが、チップインスタンス毎に異なる初期値でシードされなければならない。Random関数の呼び出し毎に変化する。
【1103】
各認証チップは以下の論理関数を格納する:
Random[] Rを返し、Rをシーケンス内で次へ進める;
F[X] 一方向関数Fを秘密鍵Kに基づいてXに適用した結果であるF[X]を返す。
【1104】
プロトコルは以下の通りである:
システムはチップTからのRandom[]を要求する;
チップTはRをシステムへ返す;
システムはチップT及びチップAの両方からのF[R]を要求する;
チップTはFKT[R]をシステムへ返す;
チップAはFKA[R]をシステムへ返す;
システムは、FKT[R]をFKA[R]と比較する。それらが一致しているならば、チップAは有効であるとみなされる。一致しないならば、チップAは無効であるとみなされる。
【1105】
データフローは図169に示されている。システムは、F[R]メッセージを理解する必要がない。システムは、チップAからの応答とチップTからの応答が同じであることをチェックするだけでよい。したがって、システムは鍵を必要としない。プロトコル1の安全性は以下の2カ所にある:
F[X]の安全性。認証チップだけが秘密鍵を格納するので、
信頼できる認証チップ53(チップT)によって生成されたF[X]と一致するF[X]をXから生成し得るチップは真正に違いない;
全ての認証チップによって生成されたRのドメインは大きく、非決定論的である筈である。全ての認証チップによって生成されたRのドメインが小さいならば、複製品製造者は鍵を解読しなくてもよい。その代わりに、複製品製造者は、システムによって送信されたコードに対する純正チップからのレスポンスの全てが記録されたROMを自分のチップに組み込むことができる。Random関数は厳密に認証チップ内に収容しなくてもよい。なぜならば、システムは、同じ乱数シーケンスを生成する可能性を秘めているからである。しかし、それは、システムの設計を簡単化し、乱数生成器の安全性が認証チップを使用する全ての実装形態に対して同一であり、システム実装においてエラーが起こる可能性を減少させる。
【1106】
プロトコル1には複数の利点がある:
Kは認証プロセス中に明らかにされることがない;
Xが与えられたとき、複製チップは、Kを用いないで、又は実際の認証チップへアクセスしないで、F[X]を生成できない;
システムは、特に、インクジェットプリンタのような低価格システムにおいて容易に設計できる。なぜならば、暗号化又は復号化がシステム自体によって要求されないからである;
広範囲の鍵付き一方向関数が存在し、対称暗号化、乱数シーケンス、及びメッセージ認証コードが含まれる;
一方向関数は必要なゲート数が少なく、非対称アルゴリズムよりも簡単に検証することができる;
鍵付き一方向関数のための安全な鍵サイズは、非対称(公開鍵)アルゴリズムの場合と同程度に大きくする必要がない;
F[X]が対称暗号化関数であるならば、最小限の128ビットは、適切な安全性を提供することができる。
【1107】
しかし、このプロトコルには問題がある:
これは選択テキスト攻撃の対象になりやすい。攻撃者は、チップを自分専用のシステムにプラグインし、選択されたRを生成、出力を観測することができる。鍵を見つけるため、攻撃者は、特定のF[M]を生成するRを探索することも可能である。なぜならば、多数の認証チップを並列にテストできるからである;
選択された一方向関数に応じて、鍵生成は複雑化し得る。よい鍵を選択する方法は、使用されるアルゴリズムに依存する。ある種の鍵は一定のアルゴリズムに対して弱い;
鍵付き一方向関数の選択自体は重要ではない。特許保護に由来するライセンスを必要とする場合もある。
【1108】
媒介物は、平文メッセージMをチップAへ渡す前に平文メッセージMに作用することが可能であり、これは、チップAがMを見るまで媒介物がMを見ない場合には好ましい。媒介物がMを全く見ない場合にはより好ましい。
【1109】
Fが対称暗号化である場合、適切なセキュリティのために必要な鍵サイズのため、チップは米国から国外へ持ち出せない。なぜならば、チップは強い暗号化装置として使用できるからである。
【1110】
プロトコルが非対称暗号アルゴリズムとしてFを用いて実現されるならば、対称の場合を上回る利点は無く、鍵をより長くする必要があり、シリコン内の暗号化アルゴリズムがより高価になる。プロトコル1は、鍵の安全性を維持するため、2個の認証チップを用いて実現しなければならない。すなわち、各システムは認証チップが必要であり、各消耗品は認証チップが必要である。
【1111】
プロトコル2
あるケースでは、システムは大規模の処理能力を備えている。或いは、例えば、大量に製造されたシステムの場合、チップTをシステムに統合することは望ましい。非対称暗号アルゴリズムの使用によって、システムのチップT部を不確かにすることが許容される。したがって、プロトコル2は非対称暗号方式を使用する。このプロトコルの場合、各チップは以下の値を格納する:
K E[X]及びD[X]用の鍵である。チップA内で秘密にされるべきである。チップT内で秘密にする必要がない;
R 現在の乱数。秘密でなくてもよいが、チップインスタンス毎に異なる初期値でシードされなければならない。Random関数の呼び出し毎に変化する。
【1112】
以下の関数が定義される:
E[X] チップTだけ。E[X]を返す。但し、Eは非対称暗号化関数Eである;
D[X] チップAだけ。D[X]を返す。但し、Dは非対称暗号化関数Dである;
Random[] チップTだけ。R|E[R]を返す。RはシードSに基づく乱数である。乱数シーケンス内でRを次へ進める。
【1113】
公開鍵KはチップT内にあり、一方、秘密鍵KはチップAにある。KがチップTにあることは、チップTをソフトウェア又はハードウェアで実現できるという利点がある(但し、Rのシードはチップ又はシステム毎に異なる)。したがっって、プロトコル2は、シングルチッププロトコルとしてもダブルチッププロトコルとしても実現できる。認証のためのプロトコルは以下の通りである:
システムはチップTのRandom関数を呼び出す;
チップTはR|EKT[R]をシステムへ返す;
システムはチップAの関数Dを呼び出し、EKT[R]を渡す;
チップAは、DKA[EKT[R]]によって獲得されたRを返す;
システムは、チップAからのRとチップTによって生成された元のRを比較する。それらが一致しているならば、チップAは有効であるとみなされる。一致しないならば、チップAは無効であるとみなされる。
【1114】
データフローは図170に示されている。プロトコル2には次の利点がある:
(秘密鍵)は認証プロセス中に明らかにされることがない;
KT[X]が与えられたとき、複製チップは、Kを用いないで、又は実際のチップAへアクセスすることなく、Xを生成できない;
≠Kであるため、チップTは、完全にソフトウェアで、不確かなハードウェアで、又はシステムの一部として実現できる。チップA(消耗品内)だけが安全な認証チップであることを要求される;
チップTが物理的なチップであるならば、システムは容易に設計できる;
多数の十分に文書化され暗号解読された非対称アルゴリズムの中から、特許が開放されライセンスフリーであるソリューションを含む、インプリメンテーション用のアルゴリズムを選択することができる。
【1115】
しかし、プロトコル2には多数の固有の問題がある:
十分な安全性のため、各鍵は2048ビットにする必要がある(これに対して、プロトコル1の対称暗号方式の場合、最小値は128ビットである)。暗号化及び復号化アルゴリズムによって使用される関連した中間メモリは、相応に大きくなる;
鍵生成は重要である。乱数は優れた鍵ではない;
チップTがコアとして実装された場合、チップTを所与のシステムASICに連結することが難しい;
チップTがソフトウェアとして実装された場合、システムの実装がプログラミングエラー及び厳密ではないテストに対して無防備であるだけではなく、コンパイラ及び数学的プリミティブの完全性をシステムのインプリメンテーション毎に厳密にチェックしなければならない。これは、単純に十分にテストされたチップを使用する場合よりも複雑であり、且つコスト高である;
多数の対称アルゴリズムが特に差分暗号解読(選択テキスト攻撃に基づいている)に対抗するため強化されているにもかかわらず、秘密鍵Kは選択テキスト攻撃の対象になりやすい;
チップA及びチップTが同じ認証チップのインスタンスである場合、各チップは、非対称暗号化及び復号化の両方の機能を備える必要がある。その結果として、各チップは、プロトコル1のために必要なチップよりも大型化し、複雑化し、高価になる;
認証チップが、コストを節約し、設計/テストの複雑さを低減するため2個のチップに分割された場合、2個のチップを依然として製造する必要があり、スケールメリットが減少する。これは、システムの消耗品に対する相対的な個数によって相殺されるが、依然として考慮することが必要である;
プロトコル2の認証チップは、米国から国外へ持ち出すことができない。なぜならば、それらは、強力な暗号化装置であるとみなされるからである。
【1116】
たとえ、プロトコル2用の鍵を選択するプロセスが簡単であるとしても、プロトコル2は、(鍵サイズ及び機能的実装の両方の)シリコン実装のコストが高いため、現時点では実際的ではない。したがって、プロトコル1がプレゼンスオンリー認証のためのプロトコルとして選択される。
【1117】
本物の認証チップを使用する複製消耗品
プロトコル1及び2は、チップAが本物の認証チップであるかどうかをチェックするだけである。それらは、消耗品自体が有効であるかどうかを調べるためのチェックを行わない。認証に関する基本的な前提として、チップAが有効であるならば、消耗品は有効である。したがって、複製品製造者は本物の認証チップを複製消耗品に挿入することが可能である。以下の二つのケースを検討する:
状態データが認証チップに書き込まれないケースでは、チップは完全に再使用可能である。したがって、複製品製造者は、有効な消耗品を複製消耗品にリサイクルすることができる。これは、認証チップを消耗品の物理的パッケージングに融合することによって困難になるが、詰め替え作業者を止められないであろう;
状態データが認証チップに書き込まれるケースでは、チップは、新品か、部分的に使用されているか、又は完全に使い切られている。しかし、これは、複製品製造者によるピギーバック攻撃の使用を止められず、複製品製造者はピギーバックとして本物の認証チップを具備したチップを構築する。攻撃者のチップ(チップE)は、媒介物である。電源投入時、チップEは、本物の認証チップ53から固有のメモリへ全ての記憶状態値を読み込む。チップEは、次に、システムからの要求を検査し、要求に応じて様々な動作をとる。認証要求は、本物の認証チップ53へそのまま渡すことができ、一方、リード/ライト要求は、本物の認証チップの動作と似ているメモリによってシミュレーションされ得る。このようにして、認証チップ53は、常に、電源投入時に新品であるかのように見える。チップEがこれを行うことができるのは、データアクセスは認証されないからである。
【1118】
システムを欺いて、システムのデータアクセスが成功したと思わせるために、チップEは、依然として本物の認証チップを必要とし、第2のケースでは、複製チップが本物のチップの他に必要になる。その結果として、プロトコル1及び2が有効になるのは、複製品製造者が本物の認証チップ53を消耗品に埋め込むことの費用対効果がよくない場合である。消耗品をリサイクルできない、又は簡単に詰め替えできないならば、プロトコル1又はプロトコル2の使用によって十分な保護が得られる。複製動作を成功させるためには、各複製消耗品は、有効な認証チップを具備しなければならない。そのチップは、まとめて盗み取るか、又は古い消耗品から取り出さなければならない。これらの再生チップの量は(それらを再生する労力と共に)ビジネスの基盤とするためには不十分であり、セキュアデータ転送(プロトコル3及び4を参照)の保護を追加する実益はない。
【1119】
鍵の寿命
上記の二つのプロトコルの一般的な問題は、一旦、認証鍵が選択されると、それを変更することが容易ではない点である。ある種の状況では、鍵が危険にさらされることは問題ではないが、他の場合には、鍵を危うくすることは致命的である。例えば、車/車キーシステム/消耗品のシナリオでは、消費者は、1組の車/車キーだけを保有する。各車は異なる認証鍵を有する。その結果として、車キーの損失は個々の車を危うくするだけである。所有者がこのことを問題であると考えるならば、所有者は、車のエレクトロニクス内のシステムチップを交換することによって、新しい「車キー」を入手しなければならない。所有者の鍵は、新しい「車のシステム認証チップ」と連動するように再プログラミング/交換する必要がある。これに対して、大量消耗品市場(例えば、プリンタのインクカートリッジ)の鍵が危うくなることは、複製インクカートリッジ製造者が自分専用の認証チップを製造可能にさせる。既存のシステムに対する唯一のソリューションはシステム認証チップを更新することであり、これは、コストが掛かり、物流的に困難な課題である。いずれにしても、消費者のシステムは既に正常に機能し、既存の機器を妨害しようとする動機がない。
【1120】
消耗品ライフタイム認証
この消耗品認証のレベルでは、認証チップの存在を確認すること、並びに、認証チップが消耗品と同じ期間だけ確実に存続することに関心がある。認証チップが存在することを確認することに加えて、認証チップのメモリ空間の書き込み及び読み出しも同様に認証されなければならない。このセクションでは、認証チップのデータ記憶完全性は安全であると仮定し、メモリの一部はリードオンリーであり、他の一部はリード/ライトであり、その他はデクリメントオンリーである(より詳しくは、データ記憶完全性というタイトルの章を参照のこと)。二つのプロトコルが存在する。プロトコル3は2個の認証チップを必要とし、プロトコル4は1個又は2個の認証チップを使用して実現することができる。
【1121】
プロトコル3
このプロトコルはダブルチッププロトコルである(2個の認証チップが必要になる)。このプロトコルの場合、各認証チップは以下の値を格納する:
K1[X]を計算するための鍵。秘密にしなければならない;
K2[X]を計算するための鍵。秘密にしなければならない;
R 現在の乱数。秘密でなくてもよいが、チップインスタンス毎に異なる初期値でシードされなければならない。Test関数によって定義されるように認証が成功する毎に変化する;
M 認証チップ53のメモリベクトル。この空間の一部はチップ毎に異なるべきである(乱数でなくてもよい)。
【1122】
各認証チップは以下の論理関数を格納する:
F[X] 内部関数専用。一方向関数Fを鍵K又は鍵Kの何れかに基づいてXに適用した結果であるF[X]を返す;
Random[] R|FK1[R]を返す;
Test[X,Y] FK2[R|X]=Yであるならば、1を返しRを進める。そうでなければ、0を返す。0を返すために要する時間は、全ての不良な入力に対して同じでなければならない;
Read[X.Y] FK1[X]=Yであるならば、M|FK2[X|M]を返す。そうでなければ、0を返す。0を返すために要する時間は、全ての不良な入力に対して同じでなければならない;
Write[X] Mのうち正当に書き換え可能な部分にXを書き込む。
【1123】
チップAを認証し、チップAのメモリMを読み出すためには、
システムはチップTのRandom関数を呼び出し、
チップTはR|F[R]を生成し、これをシステムへ返し、
システムはチップAのRead関数を呼び出し、R、F[R]を渡し、
チップAはM及びF[R|M]を返し、
システムはチップTのTest関数を呼び出し、M及びF[R|M]を渡し、
システムはチップTからのレスポンスをチェックする。レスポンスが1であるならば、チップAは真正であるとみなされる。0であるならば、チップAは無効であるとみなされる。
【1124】
チップAのメモリMへのMnewの書き込みを認証するためには、
システムはチップAのWrite関数を呼び出し、Mnewを渡し、
読み出しのための認証手続きが実行され、
チップAが真正であり、Mnew=Mであるならば、書き込みは成功である。そうでなければ、書き込みは失敗した。
【1125】
読み出し認証のデータフローは図171に示されている。プロトコル3に関して最初に注意しなければならないことは、F[X]を直接呼び出せないことである。その代わりに、F[X]は、Random、Test及びReadによって間接的に呼び出される:
Random[]はFK1[X]を呼び出す。Xは呼び出し元によって選択されない。XはRandom関数によって選択される。攻撃者は、希望のX、FK1[X]のペアを獲得するためには、Random、Read、及びTestの複数回の呼び出しを使用してブルートフォース検索を実行しなければならない;
Test[X,Y]はFK2[X]を呼び出す。結果をそのまま返すのではなく、結果をYと比較し、1又は0を返す。所定のXに対してFK2[R|X]の様々な値を試して、Testを複数回呼び出すことによってKを推論しようとする試みは、Rが攻撃者によって選択できないブルートフォース検索まで軽減される;
Read[X,Y]はFK1[X]を呼び出す。X及びFK1[X]は、呼び出し元によって供給されなければならないので、呼び出し元は、前もってX、FK1[X]ペアが分かっていなければならない;
この呼び出しは、Y≠FK1[X]であるならば0を返すので、呼び出し元は、Kに対するブルートフォース攻撃のためRead関数を使用することができる;
Read[X,Y]はFK2[X|M]を呼び出す。Xは呼び出し元によって供給されるが、XはRandom関数によって既に与えられた値だけをとり得る(なぜならば、X及びYはKによって検証されている)。このため、選択テキスト攻撃は、最初に、Randomからペアを収集しなければならない(事実上、ブルートフォース攻撃である)。その上、Mの一部だけが選択テキスト攻撃で使用される。なぜならば、Mの一部は一定であり(リードオンリー)、Mのデクリメントオンリー部分は、消耗品毎に1回ずつ使用できる。次の消耗品で、Mのリードオンリー部分は異なる。
【1126】
[X]が間接的に呼び出されることは、認証チップへの選択テキスト攻撃を阻止する。攻撃者は、望ましいRが現れるまで、Random、Read、及びTestを複数回呼び出すことによって選択されたR、FK1[R]ペアしか獲得できないので、Kへのブルートフォース攻撃は、Kへの制限選択テキスト攻撃を実行するために必要である。Kへの選択テキスト攻撃における試みは制限されるであろう。なぜならば、テキストを完全に選択できないからであり、Mの一部はリードオンリーであり、依然として各認証チップに対して異なる。2番目に注意すべきことは、2個の鍵が使用されることである。小さいサイズのMが与えられた場合、2種類の鍵K及びKは、F[R]とF[R|M]の間に相関が無いことを保証するため使用される。したがって、Kは、差分攻撃からKを保護するために使用される。1個のより長い鍵を使用することは不十分である。なぜならば、Mは256ビットだけであり、Mの一部分しか消耗品の耐用期間中に変化しないからである。そうでなければ、攻撃者は、ある種の未発見の技術によって、限定されたMの変化が、特定のRのビット組み合わせに与える影響を判定し、FK1[X]に基づいてFK2[X|M]を計算できる可能性がある。付加的な事前計算として、チップAのRandom関数及びTest関数は無効にされるべきであり、その結果、R、F[R]のペアを生成するため、攻撃者は、チップTのインスタンスを使用する必要があり、その各々はチップAよりも高価である(なぜならば、システムは各チップTに対して獲得されなければならないからである)。同様に、Random、Read及びTestの呼び出しの間の遅れは最小限にされるべきであり、その結果として、攻撃者はこれらの関数を高速で呼び出すことができない。このようにして、各チップは、ある時間に、特定の個数のX、F[X]のペアだけを明らかにする。プロトコル3の唯一の特有のタイミング必要条件は、返り値0(不良な入力を示す)が、誤りが入力のどこに存在するかとは無関係に、同じ時間で生成されるべきである、ということである。したがって、攻撃者は、入力値に関する誤りが何であるかに関して学習できない。これは、RD関数とTST関数の両方に対しても成り立つ。
【1127】
プロトコル3に関して注意すべき別の事項は、チップAからのデータ読みだしにもチップAの認証が必要になる、ということである。システムは、FK2[R|M]が正しく返された場合に、メモリ(M)の内容はチップAが主張している内容そのものであることを確認できる。複製チップは、Mがある値であると偽る(例えば、消耗品が一杯詰まっているように見せかける)かもしれないが、複製チップは、システムによって渡された任意のRに対して、FK2[R|M]を返すことができない。このように、事実上の署名、FK2[R|M]は、認証チップAがMを送信したことだけではなく、MがチップAとシステムの間で改ざんされていないことをシステムに保証する。最後に、上述のWrite関数は書き込みを認証しない。書き込みを認証するため、システムは、各書き込みの後に読み出しを実行しなければならない。プロトコル3には幾つかの基本的な利点がある:
及びKは認証プロセス中に明らかにされることがない;
Xが与えられたとき、複製チップは、Kを用いないで、又は本物のチップAへアクセスすることなく、FK2[X|M]を生成できない;
システム自体によって暗号化又は復号化が必要ではないため、特に、インクジェットプリンタのような低コストシステムにおいて、システムは簡単に設計できる;
対称暗号方式、乱数シーケンス、及びメッセージ認証コードを含む広範囲の鍵ベースの一方向関数が存在する;
鍵付き一方向関数は必要なゲート数が少なく、非対称アルゴリズムよりも簡単に検証することができる。);
鍵付き一方向関数のための安全な鍵サイズは、非対称(公開鍵)アルゴリズムの場合と同程度に大きくする必要がない。F[X]が対称暗号化関数であるならば、最小限の128ビットで適切な安全性を提供することができる。
【1128】
したがって、プロトコル3の場合、チップAを認証する唯一の方法は、チップAのメモリの内容を読み出すことである。このプロトコルの安全性は、基本となるF[X]スキームと、すべてのシステムの組に亘るRのドメインと、に依存する。F[X]は鍵付き一方向関数であればよいが、それを非対称暗号として実現することに利点はない。鍵はより長くすることが必要であり、暗号化アルゴリズムはシリコン内でより高価になる。このため、非対称アルゴリズムと共に使用するための第2のプロトコル、即ち、プロトコル4が生じる。プロトコル3は、鍵を秘密のまま保つために2個の認証チップで実現する必要がある。即ち、各システムは認証チップを必要とし、各消耗品は認証チップを必要とする。
【1129】
プロトコル4
あるケースでは、システムは大規模の処理能力を備えている。或いは、例えば、大量に製造されたシステムの場合、チップTをシステムに統合することは望ましい。非対称暗号アルゴリズムの使用によって、システムのチップT部を不確かにすることが許容される。したがって、プロトコル4は非対称暗号方式を使用する。このプロトコルの場合、各チップは以下の値を格納する:
K E[X]及びD[X]用の鍵である。チップA内で秘密にされるべきである。チップT内で秘密にする必要がない;
R 現在の乱数。秘密でなくてもよいが、チップインスタンス毎に異なる初期値でシードされなければならない。Test関数によって定義されるように認証が成功する毎に変化する;
M 認証チップ53のメモリベクトル。この空間の一部はチップ毎に異なるべきである(乱数でなくてもよい)。
【1130】
Read関数で何かを検証する意味はない。なぜならば、誰でも公開鍵を使用して暗号化できるからである。したがって、以下の関数が定義される:
E[X] 内部関数だけ。E[X]を返す。但し、Eは非対称暗号化関数Eである;
D[X] 内部関数だけ。D[X]を返す。但し、Dは非対称暗号化関数Dである;
Random[] チップTだけ。E[R]を返す;
Test[X,Y] D[R|X]=Yであるならば、1を返しRを進める。そうでなければ、0を返す。0を返すために要する時間は、全ての不良な入力に対して同じでなければならない;
Read[X] M|E[R|M]を返す。但し、R=D[X]である(入力をテストしない);
Write[X] Mのうち正当に書き換え可能な部分にXを書き込む。
【1131】
公開鍵KはチップT内にあり、一方、秘密鍵KはチップAにある。KがチップTにあることは、チップTをソフトウェア又はハードウェアで実現できるという利点がある(但し、Rはシステム毎に異なる乱数でシードされる)。チップAを認証し、チップAのメモリMを読み出すためには、
システムはチップTのRandom関数を呼び出し、
チップTはEKT[R]を生成し、これをシステムへ返し、
システムはチップAのRead関数を呼び出し、EKT[R]を渡し、
チップAはM|EKA[R|M]を返し、最初にDKA[EKT[R]]によってRを獲得し、
システムはチップTのTest関数を呼び出し、M及びEKA[R|M]を渡し、
チップTはDKT[EKA[R|M]]を計算し、それをR|Mと比較し、
システムはチップTからのレスポンスをチェックする。レスポンスが1であるならば、チップAは真正であるとみなされる。0であるならば、チップAは無効であるとみなされる。
【1132】
チップAのメモリMへのMnewの書き込みを認証するためには、
システムはチップAのWrite関数を呼び出し、Mnewを渡し、
読み出しのための認証手続きが実行され、
チップAが真正であり、Mnew=Mであるならば、書き込みは成功である。そうでなければ、書き込みは失敗した。
【1133】
読み出し認証のデータフローは図172に示されている。有効なチップAだけにRの値がわかる。なぜならば、Rは認証関数に渡されないからである(それは暗号化された値として渡される)。RはE[R]を復号化することによって獲得しなければならず、これは、秘密鍵Kを使用することによってのみ行える。Rが獲得されると、RはMに付加され、結果が再符号化される。チップTは、復号化された形式のEKA[R|M]=R|Mを検証することができ、これにより、チップAは有効である。K≠Kであるため、EKT[R]≠EKA[R]である。プロトコル4には以下の利点がある:
(秘密鍵)は認証プロセス中に明らかにされることがない;
KT[X]が与えられたとき、複製チップは、Kを用いないで、又は実際のチップAへアクセスすることなく、Xを生成できない;
≠Kであるため、チップTは、完全にソフトウェアで、不確かなハードウェアで、又はシステムの一部として実現できる。チップAだけが安全な認証チップであることを要求される;
チップT及びチップAは異なる鍵を格納するので、チップTの激しいテストによってもKに関して何も明らかにならない;
チップTが物理的なチップであるならば、システムは容易に設計できる;
多数の十分に文書化され暗号解読された非対称アルゴリズムの中から、特許が開放されライセンスフリーであるソリューションを含む、インプリメンテーション用のアルゴリズムを選択することができる;
チップAの要求がチップTへ向けられるようにシステムを再配線できるとしても、K≠Kであるため、チップTはチップAに対して回答できない。攻撃は、認証プロトコルを回避するため、システムROM自体へ向けられるべきであろう。
【1134】
しかし、プロトコル4には多数の問題がある:
全ての認証チップは、非対称暗号化及び復号化の両方の機能を収容する必要がある。その結果として、各チップは、プロトコル3のために必要なチップよりも大型化し、複雑化し、高価格化する;
十分な安全性のため、各鍵は2048ビットにする必要がある(これに対して、プロトコル1の対称暗号方式の場合、最小値は128ビットである)。暗号化及び復号化アルゴリズムによって使用される関連した中間メモリは、相応に大きくなる;
鍵生成は重要である。乱数は優れた鍵ではない;
チップTがコアとして実装された場合、チップTを所与のシステムASICに連結することが難しい;
チップTがソフトウェアとして実装された場合、システムの実装がプログラミングエラー及び厳密ではないテストに対して無防備であるだけではなく、コンパイラ及び数学的プリミティブの完全性をシステムのインプリメンテーション毎に厳密にチェックしなければならない。これは、単純に十分にテストされたチップを使用する場合よりも複雑であり、且つコスト高である;
多数の対称アルゴリズムが特に差分暗号解読(選択テキスト攻撃に基づいている)に対抗するため強化されているにもかかわらず、秘密鍵Kは選択テキスト攻撃の対象になりやすい。
【1135】
プロトコル4の認証チップは、米国から国外へ持ち出すことができない。なぜならば、それらは、強力な暗号化装置であるとみなされるからである。
【1136】
プロトコル3の場合と同様に、プロトコル4の唯一の特有のタイミング必要条件は、返り値0(不良な入力を示す)が、誤りが入力のどこに存在するかとは無関係に、同じ時間で生成されるべきである、ということである。したがって、攻撃者は、入力値に関する誤りが何であるかに関して学習できない。これは、RD関数とTST関数の両方に対しても成り立つ。
【1137】
TST呼び出しの変化
2個の認証チップが使用される場合、理論的には、複製品製造者はシステム認証チップを、TSTの各呼び出しに1(成功)を返すもので置換することが可能である。システムは、多数回、間違ったハッシュ値を用いてN回に亘ってTSTを呼び出すことによってこれをテストし、その結果が0であることを予測することができる。TSTが最後に呼び出されたとき、チップAからの真の戻り値が渡され、その戻り値は信頼できる。TSTを呼び出す回数が問題になる。呼び出しの回数はランダムでなければならない。これにより、複製チップ製造者は前もって回数を知り得ない。システムがクロックを持っているならば、クロックからのビットは、間違ったTST呼び出しを何回行わなければならないかを決めるために使用される。それ以外の場合、チップAからの戻り値を使用できる。後者のケースでは、攻撃者は、依然として、複製チップTがチップAからの戻り値を監視できるようにするため、システムを書き換えることができ、これにより、正しいハッシュ値を知ることができる。最悪のケースは、勿論、システムが、認証された消耗品を必要としない複製システムによって完全に置き換えられた場合であり、これは、システムを書き換え、変更する限界のケースである。このため、TST呼び出しの変化はオプションであり、システム、消耗品、及び変更が行われる可能性に依存する。このようなロジックをシステムに追加することは、システムがより複雑になるので、(例えば、小型デスクトッププリンタの場合)それだけの価値があるとは考えられない。これに対して、このようなロジックをカメラに追加することは、それだけの価値があると考えられる。
【1138】
本物の認証チップを使用する複製消耗品
消耗品部分を使用する前に消耗品残量をデクリメントすることは重要である。消耗品が先に使用されると、複製消耗品は、特別の既知アドレスへの書き込みの間に、接触の不備のふりをして、新しい消耗品のように見えるからである。この攻撃は、依然として、各消耗品に本物の認証チップが必要であることが重要である。
【1139】
鍵の寿命
上記の二つのプロトコルの一般的な問題は、一旦、認証鍵が選択されると、それを変更することが容易ではない点である。ある種の状況では、鍵が危険にさらされることは問題ではないが、他の場合には、鍵を危うくすることは致命的である。
【1140】
プロトコルの選択
プロトコル2及び4の鍵の選択が簡単であるとしても、両方のプロトコルは、(鍵サイズと機能的な実装の両面で)シリコン実装のコストが高いため、現時点では実際的ではない。したがって、選択されるプロトコルは、プロトコル1及び3である。しかし、プロトコル1及び3は、多数の同じコンポーメントを含み、
どちらも書き込み及び読み出しアクセスが必要であり、
どちらも鍵付き一方向関数の実装が必要であり、
どちらも乱数生成機能が必要である。
【1141】
プロトコル3は付加的な鍵(K)が必要であると共に、ある種の最小限の状態機械の変化:
Random中にFK1[X]を呼び出せるような状態機械の変更と、
K2[X]を呼び出すTest関数と、
K1[X]及びFK2[X]を呼び出すために状態機械のRead関数への変更と、
が必要である。
【1142】
プロトコル3はプロトコル1に対して最小限の変更だけが必要である。プロトコル3の方が安全性が高く、プレゼンスオンリー認証(プロトコル1)が要求されるような全ての状況で使用可能である。したがって、それは特に優れたプロトコルである。プロトコル1及び3の両方が鍵付き一方向関数を使用する場合に、一方向関数の選択をより詳細に説明する。以下の表は、適用可能な選択肢の属性の概要を示している。属性は、その属性が利点であることが分かるように表されている。
【1143】
【表103】
Figure 2001523900
この表を検討することによって、事実上、3種類のHMAC構造とランダムシーケンスとの間で選択されることがわかる。鍵サイズ及び鍵生成の問題は、ランダムシーケンスを除外する。多数の攻撃が既にMD5に対して実行されていることを考えると、ハッシュ結果は128ビットに過ぎないので、HMAC−MD5も除外される。したがって、HMAC−SHA1とHMAC−RIPEMD160の間で選択を行うことになる。RIPEMD−160は比較的新しく、SHA1のようには大規模に暗号解読されていない。しかし、SHA−1はNSAによって設計されているので、これは、否定的な属性として見られることもある。
【1144】
両者の間に大差がないのであれば、SHA−1がHMAC構造用に使用されるであろう。
【1145】
乱数生成器の選択
上述の各プロトコル(1−4)は、乱数生成器を必要とする。生成器は、全てのシステムの耐用期間に亘って生成される乱数が予測不能であるという意味で「優良」でなければならない。乱数が各システムに対して同一であるならば、攻撃者は、簡単に、本物の認証チップからの正しいレスポンスを記録し、そのレスポンスを複製チップ用のROMルックアップに収容することが可能である。このような攻撃の場合、K又はKを獲得しなくてもよい。したがって、各システムからの乱数は、予測不能であるために、即ち、非決定論的であるために十分に異なることが必要である。このようにして、R(ランダムシード)の初期値は、特定のビットが1であるか、又は0であるかに関する情報が存在しない物理的にランダムな現象から収集された物理的に生成された乱数を用いてプログラミングされるべきである。Rのシードは、決して、コンピュータ上で実行される乱数生成器で生成してはならない。そうでなければ、生成器アルゴリズム及びシードが解読され、攻撃者は、全てのシステムの全てのRの組を生成し、知ることができるようになる。
【1146】
各認証チップのRシードが異なることは、最初のRはランダムであり、且つあらゆるチップで予測不能であるということである。したがって、各チップで後続のRをどのようにして生成するかが問題になってくる。
【1147】
基本的なケースでは、Rは全く変更されない。その結果としてR及びFK1[R]は、Random[]の各呼び出しに対して同じである。それらが同一である場合、FK1[R]は、計算されるのではなく、定数にすることができる。攻撃者は、有効なルックアップテーブルを生成するために、単一の有効認証チップを使用し、そのシステムのために特にプログラミングされた複製チップ内でそのルックアップテーブルを使用することが可能である。定数Rは安全ではない。
【1148】
Rを変化させる最も簡単な概念的な方法は、Rを1ずつインクリメントすることである。Rは乱数から始められるので、種々のシステムにおけるその値はランダムである可能性が高い。しかし、初期Rを与えると、後続の全てのR値は直接的に決定できる(10000回繰り返すまでもなく、RはRからR+10000までの値をとる)。Rをインクリメントすることは、定数Rに対する上記の攻撃を受ける心配はない。Rは常に異なるので、代用される複製チップと同数の認証チップを無駄にすること無しに、特定のシステムに対するルックアップテーブルを構築する方法がない。
【1149】
アダーを使用するインクリメントの他に、Rを変化させる別の方法は、それをLFSR(線形フィードバックシフトレジスタ)として実現することである。これは、アダーよりもシリコンが少ないという利点があり、また、LFSRの値ドメインは順次アクセスによって決定されるので、攻撃者が特定のシステムに対するRのレンジを直接的に決定できないという利点もある。所定の初期Rが生成する値を決定するためには、攻撃者は、可能性を反復し、それらを列挙しなければならない。Rを変化させることの利点は、LFSRソリューションの場合にも明白である。Rは常に相違するので、(特定のシステムに専用の)複製チップが置換する認証チップと同数の認証チップを使い果たすこと無しに、特定のシステムに対するルックアップテーブルを構築する方法がない。したがって、Rを変更するために、これ以上複雑な関数を導入する利点はない。関数とは無関係に、攻撃者は、常に、シミュレーションによって値の組を、耐用期間を通じて繰り返すことが可能である。本来の安全性は、Rの初期ランダム性にある。Rを変更するためLFSRを使用することは、(アダーよりもシリコン使用量が少ない点を別にして)連続した数値レンジに限定されないという利点があるだけである(即ち、R、Rを計算によって直接知ることができないので、攻撃者はLFSRをN回繰り返さなければならない)。
【1150】
したがって、認証チップ内の乱数生成器は、160ビットのLFSRである。最大周期LFSR用の160ビットのタップ選択(即ち、LFSRは、0が有効な状態ではないので、全部で2160−1状態を循環する)によって、図173にしめされるようなビット159、4、2及び1が得られる。LFSRは疎構造であり、多数のビットがフィードバックに使用されるわけではない(160ビットの中から4ビットだけが使用される)。これは、暗号アプリケーションの場合に問題であるが、非順次数生成のアプリケーションの場合には問題ではない。Rの160ビットシード値は0以外の任意の乱数をとり得る。なぜならば、0が詰められたLFSRは0の際限のないストリームを生成するからである。上述のLFSRは最大周期LFSRであるため、全ての160ビットをそのままRとして使用することができる。出力ビットbから順番に数を構築する必要がない。TSTの呼び出しが成功する毎に、乱数(R)はビット1、2、4及び159をXOR論理演算し、その結果を上位ビットへシフトすることによって進められる。新しいR及び対応したFK1[R]は、次のRandomへの呼び出しの際に取り出すことができる。
【1151】
論理的攻撃への対抗
プロトコル3は認証チップによって使用される認証スキームである。このため、論理的手段による無効化に対し耐性であるべきである。プロトコル3に対する様々なタイプの攻撃の効果を説明したが、このセクションでは、プロトコル3の観点から攻撃の各タイプを詳述する。
【1152】
ブルートフォース攻撃
ブルートフォース攻撃はプロトコル3を破ることが保証されている。しかし、鍵の長さは、攻撃者がブルートフォース攻撃を実行するために要する時間が非常に長いので労力に値しない、ということを意味する。攻撃者は、複製認証チップを構築するためKを破るだけでよい。Kは、その他の形態の攻撃に対してKを強化するために設けられているだけである。Kへのブルートフォース攻撃は、したがって、160ビット鍵を破らなければならない。Kに対する攻撃は、最大で2160回の試行が必要であり、2159回の試行後に鍵を検出する確率は50%である。1兆個のプロセッサのアレイを想定すると、各々が毎秒100万回のテストを実行すると、2159回(7.3×1047)のテストには2.3×1023年を要し、これは宇宙の寿命よりも長い。世界には1億台のパーソナルコンピュータしか存在しない。それらが攻撃の際に(例えば、インターネットを介して)接続されたとしても、その数は、上述の1兆個のプロセッサの攻撃よりも10000倍少ない。更に、1兆個のプロセッサの製造がナノコンピュータの時代に可能になったとしても、鍵を獲得するために要する時間は宇宙の寿命よりも長い。
【1153】
推測攻撃
攻撃者が単に「鍵を推測」することは理論的に可能である。実際上、十分な時間があり、あらゆる数を試すならば、攻撃者は鍵を獲得するであろう。これは、上述のブルートフォース攻撃と同じであり、50%の成功率を達成する前に、2159回の試行をしなければならない。ある人が最初の試行で単に鍵を推測する機会みは2160である。これに対して、ある人が米国宝くじで一等賞を獲得し、同じ日に稲光によって死亡する確率は、226分の1に過ぎない。ある人が最初の試行で鍵を推測する確率は、2160分の1であり、これは、地球上の全ての原子の中から二人が全く同一の原子を選択することに匹敵することであり、即ち、非常に可能性が低い。
【1154】
量子コンピュータ攻撃
を破るため、適切なアルゴリズムに組み込まれた160キュビットを含む量子コンピュータを構築することが必要である。160ビット鍵に対する攻撃は実施不可能である。量子コンピュータの可能性のぎりぎりの見込みは、50年以内に50キュビットを達成することである。50キュビット量子コンピュータを使用したとしても、160ビット鍵を解読するためには、2110回のテストが必要になる。1億台の50キュビット量子コンピュータのアレイを想定し、各量子コンピュータが1マイクロ秒に250回の鍵(現時点での最も乱暴な推定を超えている)を試すことができるとするならば、鍵を見つけるために平均で180億年を要する。
【1155】
暗号文だけの攻撃
攻撃者は、RND及びRDへの呼び出しを呼び出し監視することによってKに対する暗号文だけの攻撃に出ること、及びRD及びTSTへの呼び出しを監視することによってKに対する暗号文だけの攻撃に出ることが可能である。しかし、これらの全ての呼び出しが、平文と、平文のハッシュ形式を明らかにするならば、攻撃は、より強力な攻撃の形態、即ち、既知平文攻撃に変わるであろう。
【1156】
既知平文攻撃
ロジックアナライザを、システムと認証チップの間の配線に接続し、これにより、データのフローを監視することは容易である。このデータのフローは、既知平文と、平文のハッシュ形式とを生じ、KとKの両方に対する既知平文攻撃に出るため使用できる。Kに対する攻撃に出るため、RND及びTSTへの多数の呼び出しを行うことが必要である(TSTへの呼び出しが成功し、有効チップ上のRDへの呼び出しが必要になる)。これは簡単であり、攻撃者は、システム認証チップと消耗品認証チップの両方をもつことが必要である。K、X、HK1[X]の各ペアが明らかになると、K、Y、HK2[X]のペアも明らかになる。攻撃者は更なる解析のためこれらのペアを収集しなければならない。このデータを用いて意味のある攻撃に出るためには何個のペアを収集すべきであるかという問題が生じる。統計的解析のためのデータの収集を必要とする攻撃の一例は差分暗号解読である。しかし、SHA−1又はHMAC−SHA1に対する攻撃は知られていないので、現時点では、収集されたデータの使い道はない。
【1157】
選択平文攻撃
暗号解読者が先行の調査の結果に基づいて後続の選択平文を変更する能力を備えているならば、Kは、単純な選択平文攻撃よりも強い攻撃の形式である適応的選択平文攻撃の一部の形式に無防備である。選択平文攻撃はKに対しては起こり得ない。なぜならば、呼び出し元には、RND関数への入力として使用されるRを変更する方法がないからである(RNDはKによるハッシュ化の結果を与える唯一の関数である)。Rをクリアすることは、鍵をクリアする効果があるので有用ではなく、SSIコマンドは新しいR値を格納する前にCLRを呼び出す。
【1158】
適応的選択平文攻撃
このタイプの攻撃はKに対して起こり得ない。なぜならば、Kは選択平文攻撃を許さないからである。しかし、この攻撃の一部の形式はKに対して起こる可能性があり、特に、システムと消耗品の両方は、典型的に、攻撃者が入手可能であるからである(システムは、特定の車のようなある種の場合には攻撃者からアクセスできない)。HMAC構造は、選択平文攻撃のあらゆる形式に対して安全性を提供する。その理由は主として、HMAC構造が2個の秘密入力変数(元のハッシュの結果と秘密鍵)を有するからである。このようにして、入力変数が秘密であるときに、ハッシュ関数自体の衝突を検出することは、平文ハッシュ関数の衝突を見つけることよりも難しい。その理由は、前者は、SHA−1から入力/出力のペアを生成するため、SHA−1への直接アクセス(プロトコル3では許可されない)を必要とするからである。攻撃者によって収集できる唯一の値は、HMAC[R]及びHMAC[R|M]である。これらは、SHA−1ハッシュ関数自体への攻撃ではなく、収集されたデータ間の統計的差分を調べる差分暗号解読攻撃まで攻撃を低減させる。SHA−1又はHMACに対して知られている差分暗号解読攻撃がないとすれば、プロトコル3は適応的選択平文攻撃に対抗する。
【1159】
意図的なエラー攻撃
攻撃者は、TST関数及びRD関数に対しては意図的なエラー攻撃しか出すことができない。なぜならば、これらは、鍵に対する入力を検証する唯一の関数であるからである。TSTとRDの両方の関数の場合、0値は、入力にエラーが見つかったときに生成され、それ以上の情報は与えられない。その上、0結果を生成するために要する時間は入力に依存せず、攻撃者はどのビットにエラーが存在するかに関する情報を得られない。したがって、意図的なエラー攻撃は効果がない。
【1160】
連鎖攻撃
全ての形式の連鎖攻撃は、ハッシュされるべきメッセージが数ブロックに広がっているか、又は入力変数を何らかの方法でセットできることを前提としている。プロトコル3で使用されるHMAC−SHA1アルゴリズムは、同時に単一の512ビットのブロックしかハッシュできない。その結果として、連鎖攻撃はプロトコル3に対してはあり得ない。
【1161】
バースデー攻撃
HMACに対して知られている最強の攻撃は、ハッシュ関数の衝突の頻度に基づくバースデー攻撃である。しかし、これは、SHA−1のような必要最小限度で合理的なハッシュ関数には全く実際的でない。また、バースデー攻撃は、攻撃者が署名付きのメッセージを管理するときに限り実現可能である。プロトコル3は、デジタル署名の形式としてハッシングを使用する。システムは、有効人種チップからのレスポンスに組み込まれるべき数を送信する。認証チップはH[R|M]を用いて応答しなければならないが、入力値Rをコントロールできないので、バースデー攻撃は実現不能である。なぜならば、メッセージは、事実上、既に生成され、署名されているからである。その代わりに、攻撃者は、同じ値にハッシュした衝突メッセージを探索しなければならない(あなたと同じ誕生日の人を見つける場合と類似している)。したがって、複製チップは、Rのハッシュと選択されたMがH[R|M]と同じハッシュ値を生ずるような新しい値Rを見つけようとしなければならない。しかし、システム認証チップは正しいハッシュ値を明らかにしない(TST関数はハッシュ値が正しいかどうかに依存して1又は0を返すだけである)。したがって、(衝突を見つけるために)正しいハッシュ値を見つける唯一の方法は、本物の認証チップに問い合わせることである。しかし、正しい値を見つけることは、Mを更新することを意味し、Mのデクリメントオンリー部分、及びMのリードオンリー部分は変更できないので、複製消耗品は、衝突を見つけようとする前に、本物の消耗品を更新しなければならない。代案は、成功を見つけるためのTST関数へのブルートフォース攻撃探索である(各複製消耗品はシステム消耗品へアクセスできることが必要である)。ブルートフォース検索は、上述の通り、この例では認証毎に、宇宙の寿命よりも長い時間を要する。ハッシュ値を適時に収集することは本物の消耗品をデクリメントしなければならないことを意味するので、複製消耗品がこの種の攻撃を仕掛ける意味がない。
【1162】
完全ルックアップテーブルによる代用
各システムの乱数シードは160ビットである。認証チップの最悪ケースの状況では、状態データが変更されない。その結果、一定値がMとして戻される。しかし、複製チップは、160ビット値であるFK2[R|M]を返し続けなければならない。結果が160ビットの160ビットルックアップテーブルを想定すると、これは、7.3×1048バイト、即ち、6.6×1036テラバイトを必要とし、近い将来に実施可能である空間よりも間違いなく大きい。これは、勿論、ROMのための値を収集する方法さえを考慮していない。したがって、完全なルックアップテーブルは完全に実現不可能である。
【1163】
疎ルックアップテーブルによる代用
疎ルックアップテーブルは、認証チップへ送信されたメッセージが、実効的にランダムではなく、ある程度予測可能である場合に限り実施可能である。乱数Rは、自然界のランダム事象から収集された未知乱数でシードされる。複製品製造者は全てのしすてむに対して考えられるRのレンジを知る可能性はない。なぜならば、各ビットが1であるか、又は0である確率は50%であるからである。全てのシステムにおけるRのレンジは未知であるため、全てのシステムで使用可能な疎ルックアップテーブルを構築することは不可能である。したがって、一般的な疎ルックアップテーブルによる攻撃は考えられない。しかし、複製品製造者は、ある特定のシステムに対するRのレンジを知ることは可能である。これは、LFSRに、特定のシステム認証チップのRND関数への呼び出しからの現在の結果をロードし、将来に向けて数回繰り返すことによって実現できる。これが行われた場合、特定のRのレンジに対するレスポンスだけを格納した特別なROM、即ち、その特定のシステムの消耗品に専用のROMを構築できる。しかし、攻撃者は、正しい情報をROMに収容し続けなければならない。したがって、攻撃者は、有効認証チップを検出し、Rの値毎にそれを呼び出すことが必要である。
【1164】
複製認証チップが完全な消耗品をリポートし、接続のロスと新しい完全な消耗品の挿入をシミュレーションする前に1回だけ使用できる場合を想定する。複製消耗品は、完全な消耗品の認証に対するレスポンス、及び部分的に使用された消耗費にに対するレスポンスを格納しなければならない。最悪ケースで、ROMは、システムの耐用期間に亘るRに関して、完全な消耗品及び部分的に使用された消耗品のエントリーを格納する。しかし、有効認証チップは、情報を生成するために使用され、部分的にそのプロセスで使用されるべきである。所定のシステムがn個のR値だけを生成するならば、必要な疎ルックアップROMは、Mに対する異なる値の個数によって乗算された10nバイトである。ROMを構築するために要する時間は、RD呼び出しの間に課された時間に依存する。
【1165】
それにもかかわらず、複製品製造者は、詰め替えのため返品される消耗品に頼らざるを得ない。なぜならば、最初の場所にROMを構築するコストは1個の消耗品を消費するからである。このような状況における複製品製造者のビジネスは、結果的に詰め替えにある。時間及びコストは、Rのサイズと、ルックアップに組み込まれるべきMの値の種類の数と、に依存する。その上、カスタム複製ROMは、一つ一つのシステムに適合する必要があり、(完全なデータ及び部分的に使用されたデータを提供するため)異なる有効認証チップがシステム毎に使用されなければならない。システム内の認証チップの使用は、したがって、この種の攻撃が複製品製造者にとって価値があるかどうかを判定するために検査しなければならない。一例は、耐用期間に約10000プリントを有するカメラシステムである。単一のデクリメントオンリー値(残りプリント数)と、RDの呼び出しの間に1秒の遅延がある場合を想定する。このようなシステムにおいて、疎テーブルは、構築に約3時間を要し、100Kを消費する。ROMを構成するためには、有効認証チップを消費することが必要であるので、料金は、1個の消耗品と複製消耗品の合計よりも高くしなければならないことに注意すべきである。このようにして、1個の消耗品に対してこの機能を実行することは(複製消耗品が同等の多数の認証消耗品に何とかして収容されない限り)費用対効果がよくない。複製品製造者がシステムの所有者毎にカスタムROMを構築する労力を惜しまないのであれば、より簡単なアプローチは、認証チップを完全に無視するようにシステムを更新することであろう、したがって、この攻撃は、システム毎の攻撃として実現可能であり、所定のシステム/消耗品の組み合わせに対してこのようなことが起こる可能性を判定しなければならない。その可能性は、消耗品及び認証チップのコストと、消耗品の寿命と、消耗品の利益幅と、ROMを生成するために要する時間と、得られるROMのサイズと、顧客が同じ複製チップ等を使用する詰め替えのために複製品製造者へ戻ってくるかどうかと、に依存する。
【1166】
差分暗号解読
既知差分攻撃は、DES及びその他の同様のアルゴリズムで使用されるようなSボックスの構造にかなり依存している。プロトコル3で使用されるHMAC−SHA1のような他のアルゴリズムはSボックスを持たないが、攻撃者は、
最小差分入力及びそれに対応した出力
最小差分出力及びそれに対応した入力
の統計的解析を行うことによって差分的な攻撃を実行し得る。
【1167】
この性質の攻撃に出るため、入力/出力ペアの組が収集される。プロトコル3からの収集は、既知平文攻撃、又は部分適応的選択平文攻撃による。明らかに、後者が選ばれる方が有用である。一般的にハッシュ化アルゴリズムは差分解析に対抗するように設計されている。特に、SHA−1は、特に80語の拡張によって、強化されているので、入力における最小限の差は、(128ビットハッシュ関数と比較して)多数のビット位置が変わる出力を生成するであろう。その上、収集される情報は、HMACアルゴリズムの性質により、直接的なSHA−1入力/出力ではない。HMACアルゴリズムは、既知の値を、未知の値(鍵)でハッシュし、このハッシュの結果が次に別個の未知の値で再ハッシュされる。攻撃者は、秘密値も、最初のハッシュの結果もわからないので、SHA−1からの入力及び出力は不明であり、あらゆる差分攻撃を極めて難しくさせる。以下では、認証チップからの最小限度の差の入力及び出力をより詳細に説明する。
【1168】
最小限度の差の入力
この場合、攻撃者は、X値、F[X]値の組を取得し、X値が最小限度の差であり、出力F[X]の間の統計的な差を検査する。攻撃は、最小限度のビット数だけの差があるX値に依存する。F[X]値を比較するために最小限度の差のX値をどのようにして獲得するかが問題である。
【1169】
:Kの場合、攻撃者は、最小限度の差X、FK1[X]ペアを統計的に検査しなければならない。しかし、攻撃者は、X値を選択できず、関連したFK1[X]値を獲得できない。X、FK1[X]ペアは、システム認証チップ上のRND関数を呼び出すことによってのみ生成することができるので、攻撃者はRNDを複数回呼び出し、観測された各ペアをテーブルに記録する。次に、FK1[X]の統計的解析を行うため、観測された値の中で十分に最小限度の差X値を探索しなければならない。
【1170】
:Kの場合、攻撃者は、最小限度の差X、FK2[X]ペアを統計的に検査しなければならない。X、FK2[X]ペアを生成する唯一の方法は、RD関数によるものであり、所定のY、FK1[Y]ペアに対してFK2[X]を生成し、ここで、X=Y|Mである。これは、Yと、Mの変更可能部分が攻撃者によって限られた範囲で選択され得ることを意味する。選択の量は、したがって、できる限り多くされるべきである。
【1171】
攻撃者の選択を制限する第1の方法はYを制限することである。なぜならば、RDはフォーマットY、FK1[Y]の入力を要求するからである。有効なペアはRND関数から容易に獲得できるが、それは、RNDの選択によるペアである。攻撃者は、RNDから適切なペアを獲得した場合に限り、又はKを知っている場合に限り、固有のYを提供することが可能である。RNDから適切なペアを獲得するためには、ブルースフォース探索が必要になる。Kを知ることは、RND関数から獲得されたペアへの暗号解読を実行することによってのみ、即ち、事実上の既知テキスト攻撃によってのみ論理的に実現可能である。RNDは1秒当たりに呼び出せる回数は決まっているが、Kはシステムのチップで共通である。したがって、既知ペアは並列に生成できる。攻撃者の選択を制限する第2の方法は、Mを制限すること、又は少なくとも攻撃者のM選択能力を制限することである。Mの制限は、Mの一部をリードオンリーにさせ、認証チップ毎に相違させ、Mの他の部分をデクリメントオンリーにすることで実現される。Mのリードオンリー部分は、理想的には、認証チップ毎に異なるべきであるので、シリアル番号、バッチ番号、又は乱数のような情報でもよい。Mのデクリメントオンリー部分は、攻撃者が異なるMを試すとき、その回数だけMのその部分だけをデクリメントすることができ、Mのデクリメントオンリー部分が0まで低下した後、その部分は再度変更し得ない、ということを意味する。新しい認証チップ53を獲得すると、新しいMを与えるが、リードオンリー部分は、前の認証チップのリードオンリー部分とは異なり、したがって、攻撃者のMを選択する能力が更に低下する。その結果として、攻撃者は、Y及びMに対する値を選択するチャンスが少ししか高めることができない。
【1172】
最小限度の差の出力
この場合、攻撃者は、X値、F[X]値の組を取得し、F[X]値が最小限度の差を表し、X値の間の統計的な差を検査する。攻撃は、最小限度のビット数だけの差があるF[X]値に依存する。KとKの両方に対し、攻撃者は所与のF[X]に対するX値を生成する方法がない。そうするためには、Fは一方向関数であるという事実に違反するであろう。その結果として、攻撃者がこの性質をもつ攻撃を組み込む唯一の方法は、全ての観測されたX、F[X]ペアをテーブルに記録することである。検索は、X値の統計的解析を行うため十分に最小限度の差F[X]値を見つけるため観測値の中で行われる。これが(Mに関する制限及びRの選択に関する制限のために非常に限定されている)最小限度の差の入力攻撃よりも多くの作業を必要とするならば、この攻撃は無益である。
【1173】
メッセージ置換攻撃
この種の攻撃を実行するためには、複製物製造者は本物の認証チップ53を格納する必要があるが、それは減少しないので、事実上、再使用可能である。複製認証チップは、メッセージを盗み取り、それを自分のメッセージで置き換える。しかし、この攻撃は攻撃者にとって成功しない。複製認証チップは、WRコマンドを本物の認証チップへ渡さないように選択するかもしれない。しかし、後続のRDコマンドは(WRが成功したかのうよう)正しいレスポンスを戻さなければならない。正しいレスポンスを返すためには、特定のR及びMについてのハッシュ値がわかっていなければならない。バースデー攻撃のセクションで説明したように、攻撃者は、本物のチップ内のMを実際に更新しなければハッシュ値を決定できないが、攻撃者はこれを行うことを望まない。システムによって送信されたRを変更することさえ役に立たない。なぜならば、システム認証チップは引き続くTSTの間にRをマッチさせなければならないからである。したがって、メッセージ置換攻撃は成功しない。これは、システムが消耗品を使用する前に消耗品残量を更新する場合に限り成り立つ。
【1174】
鍵生成器のリバースエンジニアリング
疑似乱数生成器が鍵を生成するため使用される場合、複製品製造者は、生成器プログラムを取得するか、又は使用されたランダムシードを推測する可能性がある。これは、ネットスケープのセキュリティプログラムが最初に破られたときの方法である。
【1175】
認証全体の回避
プロトコル3は、システムが消耗品の使用前に消耗品状態データを更新し、(書き込みを認証するため)全ての書き込みの後に読み出しを続けることを要求する。このように、消耗品の使用毎に認証を要求する。システムがこれらの二つの簡単なルールに固執するならば、複製品製造者は(疎ROMルックアップのような)上述の方法により認証をシミュレーションしなければならない。
【1176】
認証チップの再使用
上述のように、プロトコル3は、システムが消耗品の使用前に消耗品状態データを更新し、(書き込みを認証するため)全ての書き込みの後に読み出しを続けることを要求する。このように、消耗品の使用毎に認証を要求する。消耗品が使い切られた場合、その認証チップの適切な状態データ値は0まで減少している。したがって、チップは別の消耗品で使用できない。このことが成り立つのは、デクリメントオンリーデータ項目を保持する認証チップの場合だけであることに注意する必要がある。使用される毎にデクリメントさせられる状態データが無い場合、チップの再使用を阻止するものはない。これは、プレゼンスオンリー認証と消耗品ライフタイム認証との間の基本的な差異である。プロトコル3はその両方を可能にさせる。結論として、消耗品がシステムによって使用されるデクリメントオンリーデータ項目を備えている場合、認証チップは、秘密鍵を知っている有効なプログラミングステーションによって完全に再プログラミングされない限り、再使用不能である。
【1177】
コスト節約のため認証を省略する経営上の判断
外部攻撃には限られないが、コストを節約するため将来のシステムでは認証を省略する判断は、様々なマーケットに種々の影響を与えるであろう。大量生産消耗品の場合、販売開始後に認証を導入することは極めて困難であるということに留意しなければならない。なぜならば、認証された消耗品を要求するシステムは、流通中の旧式の消耗品と連携しないからである。同様に、ある段階で認証を打ち切ることも非現実的である。なぜならば、旧式のシステムは、新しい認証されていない消耗品と連携しないからである。第2のケースでは、旧式のシステムは、システム認証チップを、同じプログラミングインタフェースを具備しているが、そのTST関数が常に成功する単純なチップで置換することによって、個別に改造することが可能である。勿論、そのシステムは、常に成功するTST関数をテストし、停止するようにプログラミングしてもよい。車/車キー、又は扉/扉の鍵、又はその他の類似した状況のような特殊化したペアの場合、将来のシステムで認証を省くことは重要ではなく影響もない。なぜならば、消費者は、システムと消耗品認証チップの組全体を同時に購入しているからである。
【1178】
強盗/賄賂攻撃
この形態の攻撃は、以下の二つの環境の何れかでしか成功しない:
、K、及びRはチッププログラマによって既に記録されているか、又は
攻撃者は、将来のK、K、及びRの値を強制的に記録させることができる。
【1179】
プログラミングステーションの外部の人間又はコンピュータシステムが鍵を知らないとき、暴力や賄賂をもってしてもそれらを明らかにできない。この種の攻撃に対する安全性のレベルは、究極的に、システム/消耗品所有者が望ましいサービスのレベルに応じて行う判断である。例えば、自動車会社は、製造した全てのキーの記録を保存しようとするので、その車のため新しいキーの作成を要求することができる。しかし、これは、キーデータベースの全体が危険にさらされる可能性があり、攻撃者は製造者の既存の車に対するキーを作成できるようになる。これは、攻撃者が新しい車キーを作成することを可能にさせない。勿論、キーデータベース自体は、別の鍵で暗号化され、キーデータベースにアクセスするためには、一定の人数の人のそれぞれの鍵部分を一つに組み合わせることが必要である。特定の車にどのキーが使用されているかについての記録が保存されていないならば、キーを紛失した場合に補助キーを作成する方法はない。この場合、所有者は自分の車の認証チップと自分の車キーの全てを交換しなければないであろう。これは、必ずしも困った状況ではない。これに対して、プリンタのインクカートリッジのような消耗品の場合、一つの鍵の組み合わせが全てのシステム及び全ての消耗品に対して使用される。勿論、鍵のバックアップが保存されていないならば、誰もその鍵がわからず、攻撃はあり得ない。しかし、バックアップの無い状況は、インクカートリッジのような消耗品の場合に望ましくない。なぜならば、鍵が失われた場合、それ以上消耗品を製造できないからである。したがって、製造者は鍵情報のバックアップを幾つかの部分に保存すべきであり、何人かの人は、鍵全体の情報を明らかにするため、それぞれの部分を一つに結合することが必要である。これは、チッププログラミングステーションに再ロードしなければならない場合に要求される。いずれにしても、これらの攻撃はプロトコル3自体に対する攻撃ではない。なぜならば、人が認証プロセスに関与していないからである。そのかわりに、これは、チップのプログラミングステージに対する攻撃である。
【1180】
HMAC−SHA1
認証のためのメカニズムは、HMAC−SHA1アルゴリズムであり、
HMAC−SHA1(R,K)又は
HMAC−SHA1(R|M,K
の一方に従って動作する。
【1181】
次に、HMAC−SHA1アルゴリズムをここまでの説明よりも詳しく検討し、本来の定義よりもメモリリソース必要量が少なくなるアルゴリズムの最適化を説明する。
【1182】
HMAC
HMACアルゴリズムは、以下の定義を前提として進む:
H=ハッシュ関数(例えば、MD5又はSHA−1);
n=Hから出力されるビット数(例えば、SHA−1の場合に160ビット、MD5の場合に128ビット);
M=MAC関数が適用されるデータ;
K=両当事者で共有される秘密鍵;
ipad=0x36の64回の繰り返し;
opad=0x5Cの64回の繰り返し。
【1183】
HMACアルゴリズムは次の通りである:
0x00バイトをKの最後に追加することによりKを64バイトに拡張する;
(1)で作成された64バイト文字列をipadでXOR論理演算する;
(2)で作成された64バイト文字列にデータストリームMを追加する;
(3)で生成されたストリームにHを適用する;
(1)で作成された64バイト文字列をopadでXOR論理演算する;
(4)からの結果Hを(5)から得られた64バイト文字列に追加する;
(6)の出力にHを追加し、その結果を出力する。
【1184】
これにより、
HMAC[M]=H[(KAopad)|H[(KAipad)|M]]
である;
HMAC−SHA1アルゴリズムは、単にH=SHA−1となるHMACである。
【1185】
SHA−1
SHA−1ハッシングアルゴリズムは以下で要約するアルゴリズムに規定される。
【1186】
9個の32ビット定数が定義される。5個の定数は連鎖変数を初期化するため使用され、4個の付加的定数がある。
【1187】
【表104】
Figure 2001523900
最適化されていないSHA−1は、全部で2912ビットのデータ記憶を必要とする:
5個の32ビット連鎖変数:H、H、H、H及びHが定義される;
5個の32ビット作業変数:A、B、C、D及びEが定義される;
1個の32ビット一時変数:tが定義される;
80個の32ビット一時レジスタ:X0−79が定義される。
【1188】
以下の関数はSHA−1のために定義される。
【1189】
【表105】
Figure 2001523900
ハッシングアルゴリズムは、最初に、512ビットの倍数になるまで入力メッセージをパディングし、連鎖変数H1−5をh1−5で初期化する。パッドされたメッセージは、次に、512ビットチャンクで処理され、出力ハッシュ値は、連鎖変数:H|H|H|H|Hの連結によって与えられる最後の160ビット値である。次に、SHA−1アルゴリズムのステップを詳細に説明する。
【1190】
ステップ1 処理
SHA−1の第1ステップは、以下のように入力メッセージを512ビットの倍数になるまで詰め込み、連鎖変数を初期化する。
【1191】
【表106】
Figure 2001523900
ステップ2 処理
詰め込まれた入力メッセージが処理可能である。512ビットのブロック内でメッセージを処理する。各512ビットのブロックは、16×32ビット語の形であり、InputWord0−15として表される。
【1192】
【表107】
Figure 2001523900
ステップ3 終了
詰め込まれた入力メッセージの全ての512ビットのブロックが処理された後、出力ハッシュ値は、H|H|H|H|Hによって与えられる最後の160ビット値である。
【1193】
ハードウェア実装用の最適化
SHA−1のステップ2の手続は、ハードウェアのために最適化されていない。特に、80個の一時的な32ビットレジスタは、ハードウェア実装上の貴重なシリコンを使い果たす。このセクションは、16個の一時レジスタだけを使用するSHA−1アルゴリズムへの最適化を説明する。シリコンの削減は、2560ビットから512ビットまでへの減少であり、2000ビット以上の節約になる。これは、一部のアプリケーションでは重要でないが、認証チップの場合、記憶スペースはできるだけ縮小されるべきである。最適化の基礎は、元の16ワードメッセージブロックが80ワードメッセージブロックに拡張されるが、80ワードはアルゴリズムの間に更新されないことにある。その上、ワードは、前の16ワードだけに依存しているので、拡張されたワードは、16ワードが後方参照のため保持される限り、処理中にオンザフライ方式で計算可能である。どのレジスタを使おうとしているかを追跡するために循環カウンタが必要になるが、その効果は大量の記憶量を節約することである。単一の値jでXをインデックス付けするのではなく、繰り返しを通してカウントするため5ビットのカウンタを使用する。これは、5ビットレジスタを16又は20で初期化し、0に達するまでそれをデクリメントすることによって実現される。16個の一時変数を80個であるかのようにして更新するため、4個のインデックスが必要であり、各インデックスは4ビットレジスタである。4個の全てのインデックスはアルゴリズムの途中(ラップアラウンド付きで)インクリメントされる。
【1194】
【表108】
Figure 2001523900
ラウンド0及び1Aの間のN、N及びNのインクリメントは随意的である。ソフトウェア実装は、時間を要するので、それらをインクリメントせずに、16巡のループの最後に、全4個のカウンタは元の値になる。ハードウェアの設計者は、制御ロジックを節約するため、全4個のカウンタを同時にインクリメントしようとする。呼び出し元が512ビットのX0−15をロードするならば、ラウンド0は完全に省くことができる。
【1195】
HMAC−SHA1
認証チップ実装の場合、HMAC−SHA1ユニットは、二つのタイプの入力:Kを使用するR、及びKを使用するR|Mにハッシングを実行するだけである。入力は2個の一定長さであるため、HMACとSHA−1をチップ上に別個のエンティティとして設けるのではなく、それらを合成し、ハードウェアを最適化することができる。SHA−1のステップ1におけるメッセージのパディング(1ビット、0ビットの文字列、及びメッセージの長さ)は、異なるメッセージがパディング後に同じように見えないことを保証するために必要である。2タイプのメッセージしか取り扱わないので、パディングは定数0でもよい。その上、SHA−1アルゴリズムの最適化バージョンが使用され、16個の32ビットワードだけが一時記憶のために使用される。これらの16個のレジスタは、最適化されたHMAC−SHA1ハードウェアによって直接ロードされる。9個の32ビット定数h−1−5及びy1−4は依然として必要であるが、それらが定数であることは、ハードウェア実装に有利である。ハードウェアの最適化されたHMAC−SHA−1は、全部で、以下の1024ビットのデータ記憶を必要とする:
5個の32ビット連鎖変数:H、H、H、H及びHが定義される;
5個の32ビット作業変数:A、B、C、D及びEが定義される;
一時記憶及び最終結果のための5個の32ビット変数:Buff1601−5が定義される;
1個の32ビット一時変数:tが定義される;
16個の32ビット一時レジスタ:X0−15が定義される。
【1196】
以下の2セクションは、HMAC−SHA1への2タイプの呼び出しのためのステップを説明する。
【1197】
H[R,K
を使用してRの鍵付きハッシュを生成するケースでは、元の入力メッセージRは、160ビットの一定長さである。したがって、処理中にこのことを有利に活用することができる。SHA−1アルゴリズムの最初の部分の間にX0−15をロードするのではなく、X0−15を直接ロードし、これにより、SHA−1の最適化プロセスブロック(ステップ2)のラウンド0を省く。擬似コードは次のステップを行う。
【1198】
【表109】
Figure 2001523900
H[R|M,K
を使用してR|Mの鍵付きハッシュを生成するケースでは、元の入力メッセージは
、416(256+160)ビットの一定長さである。したがって、処理中にこのことを有利に活用することができる。SHA−1アルゴリズムの最初の部分の間にX0−15をロードするのではなく、X0−15を直接ロードし、これにより、SHA−1の最適化プロセスブロック(ステップ2)のラウンド0を省く。擬似コードは次のステップを行う。
【1199】
【表110】
Figure 2001523900
データ記憶完全性
確認証チップは、認証プロトコル3によって要求される変数を保持するため、不揮発性メモリを含む。以下の不揮発変数が定義される。
【1200】
【表111】
Figure 2001523900
これらの変数がフラッシュメモリにあるならば、古い値を置き換えるため新しい値を書き込むことは簡単ではないことに注意する必要がある。メモリは、最初に消去され、次に、適切なビットをセットされる。これは、フラッシュメモリベースの変数を変更するため使用されるアルゴリズムに影響を与える。例えば、フラッシュメモリはシフトレジスタとして簡単に使用できない。汎用演算でフラッシュメモリ変数を更新するためには、以下のステップが必要になる:
Nビット値全体を汎用レジスタに読み込む;
汎用レジスタに演算を実行する;
変数に対応したフラッシュメモリを消去する;
汎用レジスタにセットされたビットに基づいてフラッシュメモリロケーションのビットをセットする。
【1201】
認証チップのリセットはこれらの不揮発性変数に影響を与えない。
【1202】
Mとアクセスモード
変数M[0]からM[15]は、シリアル番号、バッチ番号、及び消耗品残量のような消耗品状態データを保持するため使用される。各M[n]レジスタは16ビットであり、Mベクトル全体で256ビット(32バイト)になる。クライアントは個々のM[n]変数を読み書きできない。その代わりに、Mで表されるベクトル全体が単一論理アクセスによって読み出し、又は書き込みをされる。MはRD(リード)コマンドを使用して読み出され、WR(ライト)コマンドを使用して書き込まれる。これらのコマンドは、KとKの両方が確定し(SIWritten=1)、認証チップが消耗品の信頼できないチップ(IsTrusted=0)である場合に限り成功する。Mは多数の異なるデータタイプを格納するが、それらは書き込み許可が異なるだけである。各データタイプは常に読み出すことができる。一旦クライアントメモリに入ると、256ビットはクライアントによって選択された何らかの方法で解釈できる。Mの256ビット全体は、認証の章で説明したようにセキュリティの理由から少量ずつ読み出すのではなく、同時に読み出される。様々な書き込み許可が以下の表に列挙されている。
【1203】
【表112】
Figure 2001523900
書き込みに要求される保護を実現するため、2ビットアクセスモード値がM[n]毎に定められる。以下の表は、2ビットアクセスモードビットパターンの解釈を定義する。
【1204】
【表113】
Figure 2001523900
16個のM[n]レジスタのための16組のアクセスモードビットは、単一のアクセスモードAccessModeレジスタにまとめられる。32ビットのAccessModeレジスタは、以下のように、n付きのM[n]に対応する。
【1205】
【表114】
Figure 2001523900
各2ビット値は、上位/下位のフォーマットで記憶される。したがって、M[0−5]がアクセスモードMSRであり、M[6−15]がアクセスモードROであるならば、32ビットAccessModeレジスタは、
11−11−11−11−11−11−11−11−11−11−01−01−01−01−01−01
である。
【1206】
WR(ライト)コマンドの実行中に、AccessMode[n]は各M[n]について調べられ、新しいM[n]値が古い方を置き換えるかどうかを判断する。AccessModeレジスタは認証チップのSAM(セットアクセスモード)コマンドを使用してセットされる。デクリメントオンリー比較は符号無しであり、負のレンジを要求するデクリメントオンリー値は、正のレンジにシフトさせなければならない。例えば、−50から50のレンジのデクリメントオンリーデータ項目を含む消耗品は、そのレンジが0から100へシフトされる。システムは、そのレンジ0から100を−50から50として解釈する。尚、殆どの場合に、デクリメントオンリーレンジはNから0であり、レンジシフトは必要ない。デクリメントオンリーデータ項目の場合、データは、最上位16ビット量から最下位16ビット量の順にM[n]から前方へ並べられる。最上位16ビット(M[n]に記憶されている)に対するアクセスモードは、MSRにセットされるべきである。残りのレジスタ(M[n+1]、M[n+2]等)は、それらのアクセモードがNMSRにセットされるべきである。誤ってNMSRにセットされ、関連したMSR領域が無い場合、各NMSR領域は、倍精度比較ではなく、独立であるとみなされる。
【1207】

は認証プロトコル中にRを変換するため使用される160ビット秘密鍵である。Kは、SSI(秘密情報セット)コマンドでK及びRと共にプログラミングされる。Kは秘密にされなければならないので、クライアントはKを直接読み出し得ない。Kを利用するコマンドはRND及びRDである。RNDは、R、FK1[R]のペアを返し、Rは乱数であり、一方、RDは入力としてX、FK2[R]のペアを要求する。Kは鍵付き一方向ハッシュ関数HMAC−SHA1で使用される。したがって、Kは、物理的にランダムな現象から収集された、物理的に生成された乱数でプログラミングされるべきである。Kは、決して、コンピュータ上で実行される乱数生成器で生成してはならない。認証チップの安全性は、決定論的では無い方法で生成されたK、K及びRに依存する。例えば、Kをセットするため、ある人は公正なコインを160回トスし、表を1として記録し、裏を0として記録する。Kは、CLRコマンドの実行時に自動的に0にクリアされる。それは、SSIコマンドだけによって非零値にセットすることができる。
【1208】

は認証プロトコル中にM|Rを変換するため使用される160ビット秘密鍵である。Kは、SSI(秘密情報セット)コマンドでK及びRと共にプログラミングされる。Kは秘密にされなければならないので、クライアントはKを直接読み出し得ない。Kを利用するコマンドはRD及びTSTである。RDは、M、FK2[M|X]のペアを返し、Xはパラメータのうちの一つとしてRD関数へ渡される。TSTは入力としてM、FK2[M|R]のペアを要求し、Rは認証チップのRND関数から獲得された。Kは鍵付き一方向ハッシュ関数HMAC−SHA1で使用される。したがって、Kは、物理的にランダムな現象から収集された、物理的に生成された乱数でプログラミングされるべきである。Kは、決して、コンピュータ上で実行される乱数生成器で生成してはならない。認証チップの安全性は、決定論的では無い方法で生成されたK、K及びRに依存する。例えば、Kをセットするため、ある人は公正なコインを160回トスし、表を1として記録し、裏を0として記録する。Kは、CLRコマンドの実行時に自動的に0にクリアされる。それは、SSIコマンドだけによって非零値にセットすることができる。
【1209】
RとIsTrusted
Rは、SSI(秘密情報セット)コマンドでK及びRと共にプログラミングされる160ビットの乱数シードである。Rは秘密にする必要がない。なぜならば、それは、RNDコマンドによって自由に呼び出し元へ与えられるからである。しかし、Rを変更できるのは認証チップだけであり、呼び出し元によって任意の選択した値にセットできない。Rは、TSTコマンド中に使用され、前のRND呼び出しからのRが、信頼できない認証チップ(チップA)においてFK2[M|R]を生成するために使用されたことを保証する。RND及びTSTの両方は、信頼されている認証チップ(チップT)だけで使用される。
IsTrustedは1ビットフラグレジスタであり、認証チップが信頼されているチップ(チップT)であるかどうかを決定する:
IsTrustedビットがセットされているならば、チップは信頼されているチップであるとみなされるので、クライアントはRND関数及びTST関数を呼び出すことができる(RD又はWRではない);
IsTrustedビットがクリアされているならば、チップは信頼されているチップであるとみなされない。したがって、RND関数及びTST関数を呼び出すことができない(その代わり、RDとWRを呼び出しても構わない)。システムは、消耗品上のRND又はTSTを決して呼び出す必要がない(なぜならば、複製チップはTSTのような関数に1を返すだけであり、RNDに対して一定値を返すだけである)。
【1210】
IsTrustedビットは、攻撃者によって獲得できる利用可能なR、FK1[R]の個数を減少させる付加的な利点があり、しかも認証プロトコルの完全性を維持する。有効なR、FK1[R]のペアを獲得するため、攻撃者は、システム認証チップが必要であり、これは、消耗品よりも高価であり入手が困難である。R及びIsTrustedビットの両方はCLRコマンドによって0にクリアされる。これらは共に、SSTコマンドの発行によって書き込まれる。IsTrustedビットは、SSIコマンドによって、非零シード値をRに格納することによってのみセットすることができる(Rは有効なLFSR状態であるために非零であり、これは全く合理的である)。Rは、ビット1、2、4及び159にタップが付いた160ビットの最大限の周期のLFSRによって変更され、TSTへの呼び出しが成功したときだけに(1が返された場合)変更される。
【1211】
システムで信頼されているチップ(チップT)になることが予定されている認証チップは、プログラミング中にそのIsTrustedビットがセットされるべきであり、消耗品で使用される認証チップ(チップA)は(プログラミング中にSSIコマンドでRに0を格納することにより)そのIsTrustedビットがクリアのままにされるべきである。IsTrustedビットを直接読み書きするためのコマンドは存在しない。認証チップの安全性は、K及びKのランダム性、並びに、HMAC−SHA1アルゴリズムの強度だけに依存するわけではない。攻撃者が疎ルックアップテーブルを構築することを妨げるため、認証チップの安全性は、全てのシステムの耐用期間に亘るRのレンジにも依存する。したがって、Rは、物理的にランダムな現象から収集された、物理的に生成された乱数でプログラミングされるべきである。Rは、決して、コンピュータ上で実行される乱数生成器で生成してはならない。Rの生成は決定論的であってはならない。例えば、信頼できるシステムチップで使用するためのRを生成するため、ある人は公正なコインを160回トスし、表を1として記録し、裏を0として記録する。0は信頼できるRに対する唯一の有効でない初期値である(又は、IsTrustedビットはセットされない)。
【1212】
SIWritten
SIWritten(秘密情報書き込み(Secret Information Written)1ビットレジスタは、認証チップ内に記憶された秘密情報の状態を保持する。秘密情報はK、K及びRである。クライアントはSIWrittenビットに直接アクセスできない。その代わりに、SIWrittenビットはCLRコマンドによってクリアされる(このコマンドは、K、K及びRもクリアする)。認証チップが、SSIコマンド(書き込まれる値とは無関係に)を使用して秘密鍵及び乱数シードでプログラミングされたとき、SIWrittenビットは自動的にセットされる。Rは厳密には秘密ではないが、攻撃者が選択されたR、FK1[R]のペアを獲得するために自分の固有の乱数シードを生成し得ないことを保証するため、RはK及びKと一緒に書き込まなければならない。SIWritten状態ビットは、K、K又はRにアクセスする全ての関数によって使用される。SIWrittenビットがクリアされている場合、RD、WR、RND及びTSTの呼び出しはCLRの呼び出しとして解釈される。
【1213】
MINTICKS
攻撃者が短時間の間にTST及びRD関数への多数の呼び出しを生成できないようにする二つのメカニズムが存在する。第1のメカニズムは、内部クロックが特定の最大値(例えば、10MHz)を超える速度で動作することを妨げるクロック制限ハードウェアコンポーネントである。第2のメカニズムは32ビットのMinTicks(最小チック)レジスタであり、これは、鍵付き関数への呼び出しの間に経過しなければならない最小のクロックチック回数を指定するため使用される。MinTicks変数はCLRコマンドによって0にクリアされる。ビットは、SMT(MinTicksセット)コマンドによってセットされる。SMTへの入力パラメータは、MinTicksのどのビットをセットすべきであるかを表現するビットパターンを含む。実際の効果は、攻撃者がMinTicksの単位でしか値を増加し得ないことである(なぜならば、SMT関数はビットをセットするだけである)。その上、呼び出し元がこのレジスタの現在の値を読み出すことができる関数は設けられていない。MinTicksの値は、動作クロック速度と、鍵付き関数呼び出しの間の合理的な時間の定め方(アプリケーションに固有)と、に依存する。1チックの間隔は動作クロック速度に依存する。これは、入力クロック速度と認証チップのクロック制限ハードウェアの最大値である。例えば、認証チップのクロック制限ハードウェアは10MHzにセットされるが(これは変更できない)、入力クロックは1MHzである。このケースでは、1チックの値は10MHzではなく、1MHzが基準になる。入力クロックが1MHzではなく20MHzであるならば、1チックの値は10MHzが基準になる(なぜならば、クロック速度は10MHzで制限されている)。
【1214】
1チックの間隔がわかると、MinTicks値をセットすることができる。MinTicksの値は、鍵付きRD及びTST関数への呼び出しの間に経過することが要求されるMinTicks数である。この値は、リアルタイム数であり、動作チックの長さで除算される。入力クロック速度が10MHzの最大クロック速度と一致する場合を想定する。鍵付き関数の呼び出しの間に1秒の最小値を求めるならば、MinTicksの値は10000000にセットされる。攻撃者がRND、RD及びTSTを何回も呼び出すことによってX、FK1[X]のペアを収集しようとしている場合を考える。TSTへの呼び出しの間の時間が1秒になるようにMinTicks値がセットされているならば、各ペアを生成するために1秒が必要になる。225個のペア(1.25Gbの記憶量しか必要にならない)を生成するため、攻撃者は1年以上を必要とする。264個のペアが必要になる攻撃は、1個のチップを使用すると、5.84×1011年が必要になり、10億個のチップが使用されるならば、584年が必要になり、このような攻撃は時間的に全く非現実的になる(記憶必要量については言うまでもない!)。
【1215】
に関しては、MinTicks変数は攻撃者を遅くさせ、攻撃のコストを高くするだけである。なぜならば、MinTicksは攻撃者が多数のシステムチップを並列に使用することを止めるものではないからである。しかし、MinTicksは、本当にKへの攻撃をより困難にさせる。なぜならば、各消耗品は異なるMを有するからである(Mの一部はランダムなリードオンリーデータである)。差分攻撃に出るためには、最小限度の差の入力が必要であり、これは、単一の消耗品(Mの実効的に定数部を含む)によって実現できる。最小限度の差の入力は、攻撃者が単一チップを使用することを要求し、MinTicksは、単一チップの使用をスローダウンさせる。差分攻撃を始めるために値の検索を開始するためのデータを取得するだけに1年を要するのであれば、これは攻撃のコストを上昇させ、複製消耗品の実効的な販売期間を短縮する。
【1216】
認証チップコマンド
システムは簡単なオペレーションコマンドセットによって認証チップと通信する。このセクションは、プロトコル3の実装のために必要な実際のコマンド及びパラメータを詳述する。認証チップは、最低限の実装としてシリアルインタフェースによってシステムと通信するものとして定義される。より幅広いインタフェース(例えば、8、16又は32ビット)によって動作する等価的なチップを定義することは慣用的なことである。オペコードの解釈は、IsTrustedビットの現在の値と、IsWrittenビットの現在の値と、に依存し得る。以下のオペレーションが定義される。
【1217】
【表115】
Figure 2001523900
Op=オペコード、T=IsTrusted値、W=IsWrtten値、
Mn=ニューモニック、[n]=パラメータに必要なビット数。
【1218】
この表に定義されていないコマンドは、NOP(ノーオペレーション)として解釈される。その例には、(IsTrusted値又はIsWritten値とは無関係である)オペコード110及び111と、IsWritten=0のときのSSI以外のオペコードと、が含まれる。RD及びRNDのオペコードは同じであり、WR及びTSTのオペコードも同じであることに注意する必要がある。オペコードの受け取り後に動かされる実際のコマンドは、(IsWrittenが1である限り)IsTrustedビットの現在値に依存する。IsTrustedビットがクリアされているところでは、RD及びWR関数が呼び出される。IsTrustedビットがセットされると、RND及びTST関数が呼び出される。2組のコマンドは、信頼されている認証チップと信頼されていない認証チップとの間で相互に排他的であり、同じオペコードはこの関係を強いる。各コマンドは引き続くセクションで詳細に検討される。一部のアルゴリズムは具体的に設計される。なぜならば、フラッシュメモリが不揮発変数の実現形態として想定されるからである。
【1219】
【表116】
Figure 2001523900
CLR(クリア)コマンドは、全ての認証チップメモリの内容を完全に消去するため設計される。これは、全ての鍵及び秘密情報と、アクセスモードビットと、状態データと、を含む。CLRコマンドの実行後、認証チップは、新しく製造されたときと丁度同じように、プログラマブル状態になる。それは、新しい鍵として再プログラムして、再使用することができる。CLRコマンドは、CLRコマンドオペコードだけにより構成される。認証チップはシリアルであるため、これは同時に1ビットずつ転送される。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、CLRコマンドは、CLRオペコードのビット0から2として送られる。全部で3ビットが転送される。CLRコマンドはいつでも直ちに呼び出すことができる。消去の順序は重要である。SIWrittenbit値は、(RND、TST、RD及びWRのような)鍵アクセス関数への更なる呼び出しを禁止するため、最初に消去されなければならない。AccessModeビットがSIWrittenの前にクリアされると、攻撃者は、それらがクリアされた後のある時点で電源を取り外し、Mを操作し、これにより、部分選択テキスト攻撃で秘密情報を取り出すよい機会を得る。CLRコマンドは以下のステップで実現される。
【1220】
【表117】
Figure 2001523900
チップがクリアされると、チップは再プログラミングと再使用の準備が完了する。ブランクチップは攻撃者にとって無用である。なぜならば、Mに対して任意の値を作成することが可能であるとしても(Mは読み出し及び書き込みが可能である)、K及びKが間違っているので鍵付き関数は全く情報を提供しないからである。CLRがCLR以外の任意のオペコードのために要求されるならば、入力パラメータビットを費やす必要がない。攻撃者はチップをリセットするだけでよい。CLRを呼び出す理由は、全ての秘密情報が破壊され、チップが攻撃者にとって無用になることを保証するためである。
【1221】
SSI−秘密情報セット(SET SECRET INFORMATION)
入力:K、K、R=[160ビット,160ビット,160ビット]
出力:無し
変更内容:K、K、R、SIWritten、IsTrusted。
【1222】
SSI(秘密情報セット(Set Secret
Information))コマンドは、K、K及びR変数にロードし、RND、TST、RD及びWRコマンドを後で呼び出すためSIWritten及びIsTrustedフラグをセットするため使用される。SSIコマンドは、SSIコマンドオペコードと、その後に続く、K、K及びRレジスタに格納されるべき秘密情報と、を含む。認証チップはシリアルであるため、これは同時に1ビットずつ転送されるべきである。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、SSIコマンドは、SSIオペコードのビット0−2と、その後に続く、Kに対する新しい値のビット0−159と、Kに対する新しい値のビット0−159と、最後に、Rに対するシード値のビット0−159として送られる。全部で483ビットが転送される。K、K、R、SIWritten、及びIsTrustedレジスタはCLRコマンドによって全て0にクリアされる。それらは、SSIコマンドを使用することによってのみセットすることができる。
【1223】
SSIコマンドは、データがK、K及びRにロードされた事実を格納するためフラグSIWrittenを使用する。SIWrittenフラグ及びIsTrustedフラグをクリアされているならば(これは、CLR命令後のケースである)、K、K及びRに新しい値がロードされる。何れかのフラグがセットされているならば、SSIの呼び出しの試みによって、CLRコマンドが実行される。なぜならば、攻撃者又は間違ったクライアントだけが、CLRを先に呼び出すことなく、鍵又はランダムシードを変更しようとするからである。また、SSIコマンドは、Rに対する値に依存してIsTrustedフラグをセットする。R=0であるならば、チップは信用できないとみなされ、したがって、IsTrustedは0のまま維持される。R≠0であるならば、チップは信用できるとみなされ、IsTrustedは1にセットされる。IsTrustedビットの設定は、SSIコマンドの間だけで行われることに注意する必要がある。認証チップが再使用されるならば、CLRコマンドは最初に呼び出されなければならない。その後、鍵は、SSIコマンドで安全にプログラムされ、新たな状態情報がSAM及びWRコマンドを用いてMへロードされる。SSIコマンドは以下のステップで実行される。
【1224】
【表118】
Figure 2001523900
RD−読み出し
入力:X、FK1[X]=[160ビット、160ビット、160ビット]
出力:M、FK2[X|M]=[256ビット、160ビット]
変更内容:R。
【1225】
RD(リード)コマンドは、信頼されない認証チップから状態データ(M)の256ビット全体を安全に読み出すために使用される。有効認証チップだけがRD要求に正しく応答する。RDコマンドからの出力ビットは、入力ビットとして、検証用の信頼された認証チップ上のTSTコマンドへ供給でき、最初の256ビット(M)は、TSTが(期待通りに)1を戻す場合に後で使用するため保存される。認証チップはシリアルであるため、コマンド及び入力パラメータは同時に1ビットずつ転送されるはずである。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、RDコマンドは、RDオペコードのビット0−2と、その後に続く、Xのビット0−159と、FK1[x]のビット0−159である。全部で320ビットが転送される。X及びFK1[X]は信頼された認証チップのRNDコマンドを呼び出すことによって獲得される。信頼されたチップのRNDコマンドから出力された320ビットは、したがって、信頼されないチップのRDコマンドへそのまま供給することが可能であり、それらのビットをシステムによって保存しなくてもよい。RDコマンドは、以下の条件が充たされたときに限り使用できる:
SIWritten=1 K、K、RがSSIコマンドによってセットアップされたことを示す;
IsTrusted=0 乱数シーケンスを生成することが許可されないのでチップは信頼されないことを示す。
【1226】
加えて、RDの呼び出しは、MinTicksRemainingレジスタが0に達するまで待たなければならない。そうなった後、レジスタには、MinTicksが再ロードされ、RDへの呼び出しの間に最小限度の時間が確実に経過する。MinTicksRemainingにMinTicksが再ロードされると、RDコマンドは入力パラメータが有効であることを検証する。これは、入力Xに対するFK1[X]を内部的に生成し、次に、得られた結果を入力FK1[X]と比較することによって行われる。この生成及び比較は、入力パラメータが正しいかどうかとは無関係に同じ時間を使用しなければならない。時間が同一ではない場合、攻撃者は、FK1[X]のどのビットが間違っているかに関する情報を得ることができる。入力パラメータが無効になるのは、間違ったシステム(誤ったビットを渡す)、間違ったシステムに間違った消耗品がある場合、不良の信頼されるチップ(不良なペアを生成する)、又は認証チップへの攻撃に限られる。一定値0は入力パラメータが間違っている場合に返される。0が返されるまでに要する時間は、あらゆる不良な入力に対して同じでなければならないので、攻撃者は何が無効であるかに関する情報を全く学習できない。入力パラメータが検証されると、出力値が計算される。Mの256ビットの内容は、M[0]のビット0−15、M[1]のビット0−15から、M[15]のビット0−15の順番に転送される。FK2[X|M]は計算され、ビット0−159として出力される。Rレジスタは、X、FK1[X]ペアの検証中に、値を格納するため使用される。その理由は、RNDとRDが相互に排他的であるためである。RDコマンドは以下のステップで実施される。
【1227】
【表119】
Figure 2001523900
RND−ランダム
入力:無し
出力:R、FK1[R]=[160ビット、160ビット]
変更内容:無し。
【1228】
RND(ランダム)コマンドは、RD及びTSTコマンドによって、後続の認証で使用するための有効R、FK1[R]ペアを獲得するためクライアントによって使用される。入力パラメータが無いので、RNDコマンドは単にRNDオペコードのビット0−2である。RNDコマンドは以下の条件が充たされた場合に限り使用できる:
SIWritten=1 KおよびRがSSIコマンドによってセットアップされたことを示す;
IsTrusted=1 チップは乱数シーケンスを生成することが許可されていることを示す。
【1229】
RNDは、RとFK1[R]の両方を呼び出し元へ返す。RNDコマンドの288ビット出力は、信頼されないチップのRDコマンドに入力パラメータとして供給することが可能である。クライアントはそれらを全く格納する必要が無い。なぜならば、それらは再度要求されないからである。しかし、TSTコマンドは、RDコマンドに渡された乱数が最初にRNDコマンドから取得されたものである場合に限り成功する。呼び出し元がRNDだけを複数回呼び出すならば、同じR、FK1[R]のペアが毎回返されるであろう。Rは、TSTへの呼び出しが成功であった後、シーケンス内の次の乱数へ進む。より詳しくはTSTの説明を参照せよ。RNDコマンドは以下のステップで実施される。
【1230】
【表120】
Figure 2001523900
TST−テスト(TEST)
入力:X、FK2[R|X]=[256ビット、160ビット]
出力:1又は0=[1ビット]
変更内容:M、R及びMinTicksRemaining(又は攻撃が検出されたならば全てのレジスタ)。
【1231】
TST(テスト(Test))コマンドは、信頼されない認証チップからのMの読み出しを認証するため使用される。TST(テスト)コマンドは、TSTコマンドオペコードと、その後に続く入力パラメータ:X及びFK2[R|X]と、により構成される。認証チップはシリアルであるため、これは同時に1ビットずつ転送されなければならない。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、TSTコマンドは、TSTオペコードのビット0−2と、その後に続く、Mのビット0−255と、FK2[R|M]のビット0−159である。全部で419ビットが転送される。最後の416入力ビットは、RDコマンドから信頼されない認証チップへの出力ビットとして獲得されるので、データ全体をクライアントが保存する必要はない。その代わりに、ビットは、信頼された認証チップのTSTコマンドへそのまま渡すことができる。Mのうちの256ビットだけがRDコマンドに秘密にされるべきである。TSTコマンドは、以下の条件が充たされたときに限り使用できる:
SIWritten=1 KおよびRがSSIコマンドによってセットアップされたことを示す;
IsTrusted=1 チップは乱数シーケンスを生成することが許可されていることを示す。
【1232】
加えて、TSTの呼び出しは、MinTicksRemainingレジスタが0に達するまで待たなければならない。そうなった後、レジスタには、MinTicksが再ロードされ、TSTへの呼び出しの間に最小限度の時間が確実に経過する。TSTは、内部M値を入力M値によって置き換えさせる。次に、FK2[M|R]が計算され、160ビット入力ハッシュ値と比較される。生成される単一出力ビットは、両者が同じであるならば1であり、両者が異なるならば0である。内部M値を使用することは、チップ上のスペースを節約し、RD及びTSTが相互に排他的なコマンドであることの理由である。出力ビットが1であるならば、Rはシーケンス内の次の乱数になるように更新される。これは、RD及びTSTテストが呼び出される毎に、呼び出し元に強制的に新しい乱数を使用させる。結果の出力ビットは、入力文字列全体が比較されるまでは出力されないので、TST関数内の比較を評価するために要する時間は常に同じである。このようにして、攻撃者は、実行時間、又は出力が与えられる前に処理されたビット数を比較できない。
【1233】
次の乱数は、160ビットの最大周期のLFSR(タップはビット159、4、2及び1で選択)を使用してRから生成される。Rの初期160ビット値はSSIコマンドによってセットアップされ、0以外のいかなる乱数でもよい(0で満たされたLFSRは際限のない0のストリームを生成する)。Rはビット1、2、4及び159をまとめてXOR論理演算し、XOR論理演算の結果をb159への入力として用いて160ビット全部を右へ1ビットシフトすることにより変換される。新しいRは次のRND呼び出しの際に返される。TSTから0を返すために要する時間は、全ての不良な入力に対して同じであり、攻撃者は無効な入力に関して何も学習し得ないことに注意する必要がある。
【1234】
TSTコマンドは以下のステップで実施される。
【1235】
【表121】
Figure 2001523900
尚、ステップ7では、単純にそのままRを進めることができない。なぜならば、Rはフラッシュメモリであり、セットされたビットが0になるためには消去しなければならないからである。電源が、古いRの値を消去した後で新しいRの値が書き込まれる前に、ステップ7の間に認証チップから取り外された場合、Rは消去されるが再プログラミングされない。したがって、IsTrusted=1でありながら、R=0であるという状況が生まれ、この状況が起こり得るのは攻撃者が原因となる場合だけである。ステップ4はこの事象を検出し、攻撃が検出された場合に動作する。この問題は、Rのための第2の160ビットフラッシュレジスタと有効性ビットとを設け、新しい値がロードされた後にトグル切替することで防ぐことができる。これは、スペースの理由で本実施形態には組み込まれていないが、チップ空間がそれを許容するならば、補助的な160ビットフラッシュレジスタがこの目的のために有用であろう。
【1236】
WR−書き込み(WRITE)
入力:Mnew=[256ビット]
出力:無し
変更内容:M。
【1237】
WR(書き込み(Write))コマンドは、認証チップ状態データを格納するMの書き込み可能な部分を更新するため使用される。WRコマンド自体は安全ではない。WRコマンドの後には、(RDコマンドによる)認証されたMの読み出しが続き、指定されたとおりに変更がなされたことを保証する。WRコマンドは、WRコマンドオペコードと、その後に続くMへ書き込まれるべき新しい256ビットのデータと、を渡すことによって呼び出される。認証チップはシリアルであるため、Mの新しい値は同時に1ビットずつ転送されなければならない。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、WRコマンドは、WRオペコードのビット0−2と、その後に続く、M[0]のビット0−15と、M[1]のビット0−15からM[15]のビット0−15まである。全部で259ビットが転送される。WRコマンドは、SIWritten=1のとき、即ち、K、K、RがSSIコマンドによってセットアップされたことを示すときに限り使用できる(SIWrittenが0であるならば、K、K、Rは未だセットアップされていないので、代わりにCLRコマンドが呼び出される)。特定のM[n]への書き込みの可能性は、AccesssModeレジスタに格納されているような対応したアクセスモードビットにより支配される。AccessModeビットはSAMコマンドを用いてセットできる。新しい値をM[n]へ書き込みとき、M[n]はフラッシュメモリであるということを考慮しなければならない。M[n]の全てのビットを消去した後、適切なビットをセットしなければならない。二つのステップが別々のサイクルで行われるので、攻撃の可能性は無防備のままである。攻撃者は、消去後、しかし、新しい値をプログラミングする前に、電源を取り外すことが可能である。しかしながら、攻撃者はこれを行っても利益がない:
この手段によってリード/ライトM[n]が0に変更されることは全く利益がない。なぜならば、攻撃者はWRコマンドを使用して任意の値を書き込めるからである;
この手段によってリードオンリーM[n]が0に変更されることによって、付加的なテキストペアを知ることができる(ここで、M[n]は元の値ではなく0である)。将来M[n]値を使用する場合、それらは既に0であるため、全く情報が与えられない;
デクリメントオンリーM[n]が0に変更されると、消耗品が使い切られる時間が早まるだけである。これは、消耗品を使用することによって得られるような何ら新しい情報を攻撃者に与えることはない。
【1238】
WRコマンドは以下のステップで実施される。
【1239】
【表122】
Figure 2001523900
SAM−アクセスモードセット(SET ACCESS MODE)
入力:AccessModenew=[32ビット]
出力:AccessMode=[32ビット]
変更内容:AccessMode。
【1240】
SAM(アクセスモードセット(Set Access Mode))コマンドは、AccessModeレジスタの32ビットをセットするため使用され、消耗品認証チップでの使用だけが有効である(IsTrustedフラグ=0の場合)。SAMコマンドは、SAMコマンドオペコードと、その後に続く、AccessModeレジスタにビットをセットするために使用される32ビット値と、を渡すことによって呼び出される。認証チップはシリアルであるため、データは同時に1ビットずつ転送されなければならない。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、SAMコマンドは、SAMオペコードのビット0−2と、その後に続く、AccessModeにセットされるビットのビット0−31と、である。全部で35ビットが転送される。AccessModeレジスタはCLRコマンドの実行時に限り0にクリアされる。00というアクセスモードはRW(リード/ライト)のアクセスモードを示すので、CLR後にAccessModeビットをセットしないことは、全てのMが読み書きできることを意味する。SAMコマンドだけがAccessModeレジスタのビットをセットする。したがって、クライアントは、32ビット語に適当なビットをセットし、入力パラメータとしての32ビット値を用いてSAMを呼び出すことにより、M[n]に対するアクセスモードビットをRWからRO(リードオンリー)へ変更可能である。これは、様々な時点での、おそらく製造プロセスの種々のステージにおけるアクセスモードビットのプログラミングを可能にさせる。例えば、リードオンリーランダムデータは、初期鍵プログラミングステージ中に書き込むことが可能であり、一方、消耗品シリアル番号のような項目のための第2のプログラミングステージが許可される。
【1241】
SAMコマンドはビットをセットするだけであるので、その効果は、M[n]に対応するアクセスモードビットをRWからMSR、NMSR又はROの何れかへ進行させ得ることである。尚、MSRのアクセスモードはROへ変更可能であるが、これは、攻撃者には役立たないことに注意する必要がある。なぜならば、不正に加工された認証チップへの書き込み後のMの認証は、書き込みが不成功であったことを検出し、オペレーションを中止するからである。ビットの設定は、フラッシュメモリが最も巧く機能する方法に対応する。AccessModeレジスタ内のビットをクリアする唯一の方法は、例えば、デクリメントオンリーM[n]をリード/ライトに変更するための唯一の方法は、CLRコマンドを使用することである。CLRコマンドは、AccessModeレジスタを消去(クリア)するだけではなく、鍵及び全てのMをクリアする。このようにして、M[n]に対応するAccessMode[n]ビットは、CLRコマンドの間で1回だけ有効に変更することができる。SAMコマンドは(適切なビットが入力パラメータによってセットされた後)AccessModeレジスタの新しい値を返す。入力パラメータを0としてSAMを呼び出すことにより、AccessModeは変更されず、したがって、AccessModeの現在値が呼び出し元へ返される。
【1242】
SAMコマンドは以下のステップで実施される。
【1243】
【表123】
Figure 2001523900
GIT−IsTrustedを取得(GET ISTRUSTED)
入力:無し
出力:IsTrusted=[1ビット]
変更内容:無し。
【1244】
GIT(IsTrusted取得(Get IsTrusted)コマンドは、認証チップ上のIsTrustedビットの現在値を読むため使用される。戻されるビットが1であるならば、認証チップは信頼できるシステム認証チップである。戻されるビットが0であるならば、認証チップは消耗品認証チップである。GITコマンドは、GITコマンドオペコードだけを含む。認証チップはシリアルであるため、これは同時に1ビットずつ転送されなければならない。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、SAMコマンドは、SAMオペコードのビット0−2として送信される。全部で3ビットが転送される。GITコマンドは以下のステップで実施される。
【1245】
【表124】
Figure 2001523900
SMT−MinTicksセット(SET MINTICKS)
入力:MinTicksnew=[32ビット]
出力:無し
変更内容:MinTicks。
【1246】
SMT(MinTicksセット(Set MinTicks))コマンドは、MinTicksレジスタのビットをセットし、TST及びRDへの呼び出しの間に経過すべきMinTicks数を定めるため使用される。SMTコマンドは、SMTコマンドオペコードと、その後に続く、MinTicksレジスタにビットをセットするために使用される32ビット値と、を渡すことによって呼び出される。認証チップはシリアルであるため、データは同時に1ビットずつ転送されなければならない。ビット順序は、各コマンドコンポーネントのLSBからMSBである。したがって、SMTコマンドは、SMTオペコードのビット0−2と、その後に続く、MinTicksにセットされるビットのビット0−31と、である。全部で35ビットが転送される。MinTicksレジスタはCLRコマンドの実行時に限り0にクリアされる。0という値は、鍵付き関数の呼び出しの間にチックを経過させなくてもよいことを示す。したがって、この関数は、クロック速度制限ハードウェアがチップに動作を許可する頻度で呼び出される。
【1247】
SMTコマンドはビットをセットするだけなので、その効果は、クライアントが値をセットできるようにさせ、更なる呼び出しが行われた場合に時間遅延を増大させるだけである。既にセットされたビットをセットすることは効果がなく、クリアされているビットをセットすることだけが、チップを更に遅くさせるために作用する。ビットの設定はフラッシュメモリが最も巧く機能する方法に対応する。MinTicksレジスタ内のビットをクリアする唯一の方法は、例えば、10チックの値を4チックの値に変更するための唯一の方法は、CLRコマンドを使用することである。しかし、CLRコマンドは、MinTicksレジスタを0にクリアするだけではなく、全ての鍵及びMをクリアする。したがって、それは攻撃者にとっては役に立たない。このようにして、MinTicksレジスタは、CLRコマンドの間で1回だけ有効に変更することができる。
【1248】
SMTコマンドは以下のステップで実施される。
【1249】
【表125】
Figure 2001523900
認証チップのプログラミング
認証チップは物理的に安全な環境内で論理的に安全な情報でプログラミングしなければならない。その結果として、プログラミング手続は論理的セキュリティと物理的セキュリティの両方を取り扱う。論理的セキュリティは、K、K、R及び乱数M[n]の値が、コンピュータではなく、物理的にランダムなプロセスによって生成されることを保証するプロセスである。また、それは、チップの部品のプログラミングされる順序が最も論理的に安全であることを保証するプロセスでもある。物理的セキュリティは、プログラミングステーションが物理的に安全であり、したがって、鍵生成ステージ期間と鍵の記憶の耐用期間の両方で、K及びKが秘匿されることを保証するプロセスである。その上、プログラミングステーションは、鍵を獲得又は破壊する物理的攻撃に対抗しなければならない。認証チップは、K及びKが秘匿されることを保証するための固有のセキュリティメカニズムを備えているが、プログラミングステーションはK及びKを安全に保持しなければならない。
【1250】
概要
製造後、認証チップは使用可能にされる前にプログラミングする必要がある。全てのチップにおいて、K及びKの値を確定しなければならない。チップがシステム認証チップを目的としているならば、Rの初期値を決めなければならない。チップが消耗品認証チップを目的としているならば、Rは0にセットし、M及びAccessModeの初期値も設定しなければならない。したがって、以下のステージが確認される:
システムと消耗品の間の繰り返しを決定する;
システム及び消耗品用の鍵を決定する;
システム及び消耗品用のMinTicksを決定する;
鍵、ランダムシート、MinTicks及び未使用Mをプログラムする;
状態データ及びアクセスモードをプログラムする。
【1251】
消耗品又はシステムが必要でなくなると、取り付けられた認証チップは再使用可能である。これは、もう一度ステージ4から始めて、チップを再プログラミングすることによって簡単に実現できる。各ステージは以下のセクションで説明する。
【1252】
ステージ0:製造
認証チップの製造は特別なセキュリティを必要としない。製造ステージでは、チップにプログラミングされている秘密情報はない。アルゴリズム及びチッププロセスは特別ではない。標準的なフラッシュプロセスが使用される。チップ製造者とプログラミングステーションの間での認証チップの盗難は、複製品製造者にブランクチップを与えることになるだけである。これは、認証チップの販売を危うくすることは殆どなく、認証チップによって何も認証されない。プログラミングステーションは、消耗品及びシステムのプロダクト鍵を含む唯一のメカニズムであるため、複製品製造者は、正しい鍵を用いてチップをプログラムできない。複製品製造者は、自分専用のシステム及び消耗品用にブランクチップをプログラミングすることは可能であるが、それらの品を見破られずに販売することは困難であろう。その上、1回の盗みではビジネスの基礎を置くことは難しいであろう。
【1253】
ステージ1:システムと消耗品の間の相互作用の決定
システムとは何か、及び消耗品とは何か、の判断は、認証チップのプログラミングが可能になる前に決定されるべきである。どの消耗品がどのシステムで使用可能であるかに関する判断をする必要がある。なぜならば、接続されるシステムと消耗品だけが同じ鍵情報を共有しなければならないからである。また、それらは、状態データの一部の解釈が未決定であっても、状態データ使用メカニズムを共有すべきである。簡単な例は、車と、車キーの場合である。車自体はシステムであり、車キーは消耗品である。各車には数個の車キーがあり、各キーは特定の車と同じ鍵情報を格納する。しかし、各車(システム)は(その車キーと共有される)異なる鍵をもつであろう。なぜならば、ある車の車キーが別の車で機能することが求められないからである。別の例は、特定のトナーカートリッジを必要とするコピー機の場合である。簡単に言えば、コピー機はシステムであり、トナーカットリッジは消耗品である。しかし、カートリッジとコピー機の間にどのような互換性があるかを判断する必要がある。この判断は、従来、トナーカートリッジの物理的パッケージングによって行われ、ある種のカートリッジは、新しいモデルのコピー機の設計判断に基づいて、その新しいモデルのコピー機に適合し、或いは、適合しない。認証チップが使用されるとき、連動すべきコンポーネントは同じ鍵情報を共有しなければならない。
【1254】
更に、消耗品はタイプ毎に、M(状態データ)の異なる分割方法が必要になる。Mの使用法は、アプリケーション毎に変化するものであり、M[n]及びAccessMode[n]の割付方法も同様である:
特定用途の消耗品状態データを定義する;
将来の使用のため(必要に応じて)一部のM[n]レジスタを確保する。それらを0にセットし、リードオンリーにセットする。値は互換性を保つためにシステムでテストすることができる;
残りのM[n]レジスタ(少なくとも1個、しかし、M[15]であってはならない)をリードオンリーにセットし、各M[n]の内容を完全にランダムにする。これによって、複製品製造者は認証鍵への攻撃がより困難になる;
以下の例は、状態データが編成される方法を示す。
【1255】
例1
車キーが付随した車を想定する。16ビット鍵番号は、所定の車の車キーを一意に識別するために十分足りる。Mの256ビットは以下の通り分割される。
【1256】
【表126】
Figure 2001523900
車製造者が全ての車の全ての論理的鍵を保持するならば、車キーを紛失したときに、新しい物理的な車キーを製造することは些細な問題である。新しい車キーは、M[0]に新しい鍵番号を格納するが、その車の認証チップと同じK及びKを含む。車システムは、特定の鍵番号を無効にすることができる(例えば、鍵を紛失したとき)。このようなシステムは、鍵0(マスター鍵)を最初に挿入し、次に全ての有効な鍵を挿入し、次に、鍵0をもう一度挿入することを要求するかもしれない。これらの有効な鍵だけが車と連動するようになる。最悪のケースでは、例えば、全ての車キーを紛失すると、その車に対する新しい論理的な鍵の組を生成し、必要に応じて、関連した物理的な車キーを生成することができる。カーエンジン番号は、その鍵を特定の車に結びつけるために使用される。将来用データは、レンタル情報、例えば、ドライバ/貸出者の詳細情報のような事項を格納する。
【1257】
例2
100000回のコピー毎に交換しなければならないコピー機画像ユニットの例を想定する。残りページ数を記憶するため32ビットが必要になる。Mの256ビットは次の通り分割される。
【1258】
【表127】
Figure 2001523900
10000回のコピー毎に交換しなければならない低品質画像ユニットが製作されたとき、32ビットのページカウントは、既存コピー機との互換性のためにそのまま使用される。これにより、数タイプの消耗品を同じシステムで使用できるようになる。
【1259】
例3
25枚の写真を格納するポラロイド型カメラの例を考える。残り写真数を記憶するためには16ビットのカウントダウンだけあればよい。Mの256ビットは次の通り分割される。
【1260】
【表128】
Figure 2001523900
M[2]の残り写真数は、同じカメラシステムと使用するための多数の消耗品タイプの構築を可能にさせる。例えば、写真数36の新しい消耗品は簡単にプログラムできる。カメラの発表後、2年が経過した場合を考えると、新しいタイプのカメラが発表されている。それは、古い消耗品を使用することが可能であるが、新しいフィルムタイプも処理できる。M[3]はフィルムタイプを定義するため使用できる。古いフィルムタイプは0であり、新しいフィルムタイプは他の新しい値である。新しいシステムはこれを利用することができる。元のシステムはM[3]に非零値を検出し、新しいフィルムタイプとの非互換性を認識する。新しいシステムは、M[3]の値を理解し、適切に応じる。古い消耗品との互換性を保つため、新しい消耗品及びシステムは、古いものと同じ鍵情報をもつことが必要である。新しいシステム及びその専用消耗品と完全に断ち切るためには、新しい鍵セットが必要になるであろう。
【1261】
例4
シアン、マゼンタ、及びイエローの三つのインクを格納するプリンタ消耗品の例を考える。各インク量は別々にデクリメントされるべきである。Mの256ビットは次の通り分割される。
【1262】
【表129】
Figure 2001523900
ステージ2:システム及び消耗品の鍵の決定
どのシステムとどの消耗品が同じ鍵を共有すべきであるかに関する決定がなされると、それらの鍵を定義しなければならない。したがって、K及びKの値が決定される。殆どのケースでは、K及びKは全体で1回だけ生成される。連動すべき(現在及び将来の)全てのシステム及び消耗品は、同じ鍵K及びKの値をもつ。したがって、K及びKは秘匿されなければならない。なぜならば、システム/消耗品の組み合わせに対するセキュリティメカニズム全体は、鍵が見られてしまうと、役に立たなくなるからである。鍵が暴露されると、その損害は、システム及び消耗品の数、並びに、それらを新たな暴露されていない鍵で再プログラミングすることの容易さに依存する。トナーカートリッジを用いるコピー機の場合、最悪のケースでは、複製品製造者は固有の認証チップを製造し(又は、さらに悪い場合には、それらを購入し)、判明した鍵でチップをプログラムし、固有の消耗品に挿入する。車キー付きの車のケースでは、各車は、異なる鍵の組をもつ。このことにより、2通りの一般的なシナリオが生まれる。第1のシナリオでは、車及び車キーがそれらの鍵を用いてプログラムされた後、K及びKが削除され、それらの値の記録が保持されず、即ち、K及びKを暴露する方法がない。しかし、その車のための予備の車キーは、車の認証チップを再プログラミングしない限り製作できない。第2のシナリオでは、車製造者はK及びKを保持し、その車のための新しいキーを製作可能である。K及びKの暴露は、ある者が特定の車専用の車キーを製作できることを意味する。
【1263】
したがって、認証チップで使用される鍵及びランダムデータは、非決定論的な手段によって生成されるべきである(完全にコンピュータで生成された疑似乱数は使用できない。なぜならば、それは、生成器のシードを知ることによって将来の全ての数が得られるという点で決定論的であるからである)。K及びKは、コンピュータではなく、物理的にランダムなプロセスによって生成されるべきである。しかし、ランダム性の自然発生源に基づくランダムビット生成器は、外因の影響を受けやすく、故障し易い。そのような装置は、統計的なランダム性を定期的にテストすべきであることが避けられない。
【1264】
簡単ではあるが、有用な乱数発生源は、SGIからのLavarand(登録商標)システムである。この生成器は、数分間隔で6個のラバランプを撮影するデジタルカメラを使用する。ラバランプは無秩序なタービュラント系を含む。得られたデジタル画像はSHA−1実装部に供給され、SHA−1実装部は、7方向のハッシュを生成し、デジタル化された画像から7バイト毎に160ビット値を生じる。7組の160ビットの合計は140バイトになる。この140バイトの値がBBS生成器に供給され、出力ビットストリームのスタート位置を決める。BBSからの出力160ビットは、鍵、又は認証チップ53である。
【1265】
非決定論的なランダムプロセスの極端な例は、クリーンルーム内で、Kのためにコインを160回トスし、Kのためにコインを160回トスすることである。それぞれの表又は裏に応じて、1又は0が鍵プログラマ装置のパネルに入力される。このプロセスは、(検証のための)数人の観測者が沈黙した状態(誰かが隠しマイクを持っているかもしれない)で行われる。重要なことは、安全なデータ入力及び記憶は、それほど簡単ではないということである。鍵プログラマ装置及び付随するプログラミングステーションの物理的セキュリティは、その固有の完全なドキュメントが必要である。鍵K及びKが決定された後、それらは、認証チップがその鍵を使用する必要のある限り保持されなければならない。最初の車/車キーのシナリオでは、K及びKは、単一のシステムチップ及び数個の消耗品チップがプログラムされた後に破壊されている。コピー機/トナーカートリッジのケースでは、K及びKは、トナーカートリッジがコピー機の役に立っている間に限り保持されなければならない。それらは秘匿されるべきである。
【1266】
ステージ3:システム及び消耗品のMinTicksの決定
MinTicksの値は、認証チップの動作クロック速度(システム固有)と、RD又はTST関数呼び出しの間の妥当な時間の根拠(アプリケーション固有)と、に依存する。単一チックの間隔は動作クロック速度に依存する。これは、入力クロック速度と認証チップのクロック制限ハードウェアの最大値である。例えば、認証チップのクロック制限ハードウェアは10MHzにセットされるが(これは変更できない)、入力クロックは1MHzである。このケースでは、1チックの値は10MHzではなく、1MHzが基準になる。入力クロックが1MHzではなく20MHzであるならば、1チックの値は10MHzが基準になる(なぜならば、クロック速度は10MHzで制限されている)。1チックの間隔がわかると、MinTicks値をセットすることができる。MinTicksの値は、鍵付きRD又はST関数への呼び出しの間に経過することが要求されるMinTicks数である。入力クロック速度が10MHzの最大クロック速度と一致する場合を想定する。TSTの呼び出しの間に1秒の最小値を求めるならば、MinTicksの値は10000000にセットされる。2秒のような値は、(1ページ当たりに1回の認証で、1ページが2から3秒毎に生成される)プリンタのようなシステムの場合には全く妥当な値である。
【1267】
ステージ4:鍵、ランダムシード、最終チック及び未使用Mのプログラム
認証チップは、製造後、状態が不明である。或いは、認証チップは、ある消耗品で既に使用済みであり、別の消耗品で使用するために再プログラムしなければならない。確認証チップの各々は、クリアされ、新しい鍵及び新しい状態データでプログラムされる。認証チップのクリア処理及びその後のプログラミングは、安全なプログラミングステーション環境で行われる。
【1268】
信頼されたシステム認証チップのプログラミング
チップが信頼されたシステムチップであるならば、Rのシード値が生成される。それは、物理的にランダムなプロセスから抽出された乱数であり、0ではない。以下のタスクは、以下の順に、安全なプログラミング環境で行われる:
リセット チップをリセット
CLR[]
Load R R(160ビットレジスタ)に物理的ランダムデータをロード
SSI[K,K,R]
SMT[MinTicksSystem]。
【1269】
ここで、認証チップはシステムへ挿入するための準備が完了している。認証チップは完全にプログラムされている。システム認証チップがこの時点で盗まれたならば、複製品製造者は、Kへの既知テキスト攻撃に出るために、又はKへの部分選択テキスト攻撃に出るために、R、FK1[R]のペアを生成すべくそれらを使用できる。これは、各々が信頼された認証チップを含む多数のシステムの購入と差がない。セキュリティは、認証プロトコルの強度と、K及びKのランダム性と、に依存する。
【1270】
信頼されない消耗品認証チップのプログラミング
チップが信頼されない消耗品認証チップである場合、プログラミングは信頼されたシステム認証チップのプログラミングとは少し異なる。最初に、Rのシード値は0である。それは、M及びAccessModeの値用の付加的なプログラミングを行う。未使用M[n]は0でプログラムされ、ランダムM[n]はランダムデータでプログラムされる。以下のタスクは、以下の順に、安全なプログラミング環境で行われる:
リセット チップをリセット
CLR[]
Load R R(160ビットレジスタ)に0をロード
SSI[K,K,R]
Load X X(256ビットレジスタ)に0をロード
Set 適当なM[n]に対応したXに物理的ランダムデータをセット
WR[X]
Load Y Y(32ビットレジスタ)に0をロード
Set 適当なM[n]に対応したYにリードオンリーアクセスモードをセット
SAM[Y]
SMT[MinTicksConsumable]。
【1271】
ここで、信頼されない消耗品チップは一般的な状態データでプログラムする準備が完了している。認証チップがこの時点で盗まれたならば、攻撃者は、制限選択テキスト攻撃を実行できる。最もよい状況では、Mの一部分はリードオンリー(0及びランダムデータ)であり、Mの残りは攻撃者によって(WRコマンドを用いて)完全に選択される。攻撃者による多数のRD呼び出しは、限定されたMに対するFK2[M|R]を獲得する。最悪の状況では、Mは攻撃者によって完全に選択される(なぜならば、256ビットの全てが状態データに使用されるためである)。しかし、どちらの場合でも、攻撃者はRの値を選択できない。なぜならば、RはRNDへの呼び出しによってシステム認証チップから供給されるためである。選択されたRを獲得する唯一の方法は、ブルートフォース攻撃である。ステージ4及び5が同じプログラミングステーションで実行された場合(好ましく、且つ理想的な状況)、認証チップはステージ間で取り外せないことに注意すべきである。この場合、認証チップがこの時点で盗まれる可能性はない。認証チップを1回でプログラムするか、又は2回でプログラムするかの決定は、システム/消耗品製造者の要求次第である。
【1272】
ステージ5:状態データ及びアクセスモードのプログラム
このステージは、消耗品認証チップの場合だけに必要である。なぜならば、M及びAccessModeレジスタはシステム認証チップ上では変更できないからである。M[n]の未使用及びランダム値は既にステージ4でプログラムされている。残りの状態データをプログラムする必要があり、関連したAccessMode値をセットする。このステージの速度は、MinTicksレジスタに格納された値によって制限されることに注意する必要がある。このステージは、ステージ4とステージ5が実行される場所/時間の物理的場所の違い又は時間の違いを考慮して、ステージ4から分離されている。理想的には、ステージ4及び5は同時に同じプログラミングステーションで実行される。ステージ4は有効認証チップを生成するが、それらに初期状態値(0以外)をロードしない。これは、チップのプログラミングを消耗品の生産ラインの運行と一致させることができる。ステージ5は何回も実行し、毎回、異なる状態データ値及びアクセスモード値を設定することが可能であるが、1回だけ実行され、残りの全ての状態データ値をセットし、残りの全てのアクセスモード値をセットする可能性の方が高い。例えば、生産ラインがセットアップされ、認証チップのバッチ番号及びシリアル番号が生産される物理的な消耗品に応じて生成される。これを一致させることは、状態データが物理的に異なる工場でロードされる場合にはかなり難しくなる。
【1273】
ステージ5のプロセスは、最初に、チップが有効消耗品チップであることを保証するために検査を行い、ここでは、認証チップからデータを収集するRDが含まれ、次に、初期データ値のWRが行われ、更に、新しいデータ値を永久的にセットするためSAMが行われる。これらのステップの概要を次に記載する:
IsTrusted=GIT[];
IsTrustedがセットされているならば、エラー(間違った種類のチップ!)で終了する;
有効な入力ペアを取得するため有効システムチップのRNDを呼び出し;
有効な入力ペアを渡して、プログラムされるべきチップのRDを呼び出し;
認証チップのRDからの結果をX(256ビットレジスタ)にロードする;
X及び消耗品チップが有効であることを保証するため有効システムチップのTSTを呼び
出し;
TSTが0を返したならば、エラー(システムに対し間違った消耗品チップ)で終了する。
Xのビットに初期状態値をセット;
WR[X];
Y(32ビットレジスタ)に0をロード;
新しい状態値のためのアクセスモードに対応したYのビットをセット;
SAM[Y]。
【1274】
勿論、検証(ステージ1から7)は、ステージ4及び5が同じプログラミングステーションで次々と行われる場合には行わなくてもよい。しかし、この検証は、ステージ5がステージ4とは別個のプログラミングプロセスとして実行される他の全ての状況では行われるべきである。これらの認証チップがここで盗まれた場合には、それらは既に特定の消耗品で使用するためにプログラムされている。攻撃者は、盗んだチップを複製消耗品に取り付けることができる。このような盗難は、複製された製品の個数を盗難されたチップの個数に制限する。1回の盗難では、複製品製造者が費用対効果に優れたビジネスを行うために十分な供給数が得られない。このチップの別の用途は、攻撃者が部分選択テキスト攻撃又はブルートフォース攻撃に出るために、認証チップ付きの同数の消耗品を購入しなくても済むことである。このような攻撃が行われても、鍵の特別な安全性の欠陥はない。
【1275】
製造
認証チップの回路は物理的攻撃に対抗できなければならない。製造インプリメンテーションガイドラインの概要を説明し、その後に、チップの物理的防御の仕様を(攻撃の順に)説明する。
【1276】
製造のガイドライン
製造に関する認証チップの実装用の一般的なガイドラインを以下に列挙する:
標準プロセス
最小サイズ(なるべく)
クロックフィルタ
雑音発生器
タンパー防止及び検出回路
タンパー検出付き保護メモリ
プログラムコードのローディング用ブート回路
鍵データパス用のFETの特殊実装
可能な場所でのポリシリコン層内のデータコネクション
過小過多電力検出ユニット
テスト回路無し。
【1277】
標準プロセス
認証チップは(フラッシュのような)標準的な製造プロセスで実装できる。これは、製造場所の非常に広範囲の選択を可能にさせること
明確であり、且つ正常に動作するテクノロジーを使用すること
コストを低減すること
を充たすために必要である。標準プロセスは物理的な保護メカニズムを可能にさせることに注意する必要がある。
【1278】
最小サイズ
認証チップ53は、低コスト消耗品のための認証メカニズムとして組み込むことができるように製造コストを低くしなければならない。したがって、チップサイズはできるだけ小さいままにすることが望ましい。各認証チップは、802ビットの不揮発性メモリが必要である。その上、最適化されたHMAC−SHA1に必要な記憶容量は1024ビットである。チップの残りの部分(状態機械、プロセッサ、CPU、又はプロトコル3を実施するために選択されたもの)は、トランジスタの個数が最小限に抑えられ、チップ当たりのコストが最小限になるように最低限に維持される。秘密鍵情報を保有する回路面積、また亜h、鍵に関する情報が漏れる虞のある回路面積も最小限に抑えられるべきである(特殊データパスのための以下のノンフラッシングCMOSを参照せよ)。
【1279】
クロックフィルタ
認証チップ回路は特定のクロック速度レンジで動作するように設計される。ユーザはクロック信号を直接供給するので、攻撃者は、処理中の特定の時点で回路に乱調状態を生じさせ用とする可能性がある。この一例は、高いクロック速度(回路が設計対象とした速度よりも高い)は、XORが適切に動作することを妨げ、2個の入力のうちの最初の入力がそのまま返される場合である。このようなスタイルの過渡現象障害攻撃は、秘密鍵情報を復元する際に非常に有効である。ここらか学ぶべきことは、入力クロック信号は信頼できないということである。入力クロック信号は信頼できないので、最大周波数までで動作するように制限されるべきである。これはいろいろな方法で実現できる。クロック信号をフィルタ処理する一つの方法は、「エッジオン」を遅延器へ渡すエッジ検出ユニットを使用することであり、次に、遅延によって入力クロック信号の通過を許可する。図174は、クロックフィルタ内のクロック信号フローの説明図である。遅延は、最大クロック速度が特定の周波数(例えば、4MHz)になるようにセットされる。この遅延はプログラマブルではなく、固定であることに注意すべきである。フィルタ処理されたクロック信号は、必要に応じて内部で更に分周される。
【1280】
雑音発生器
各認証チップは連続した回路雑音を発生する雑音発生器を含む。雑音は、チップの通常の動作からの他の電磁放射と干渉し、雑音をIdd信号に加える。雑音発生器の設置は、放射波長の長さのために認証チップに問題を起こさない。雑音発生器は、電子雑音、クロックサイクル毎の複数状態変化を発生し、タンパー防止及び検出回路用の疑似ランダムビットソースとして使用される。雑音発生器の簡単な実装は、非零の数でシードされた64ビットLFSRである。雑音発生器で使用されるクロックは、できるだけ多くの雑音を発生させるため、チップの最大クロックレートで動く。
【1281】
タンパー防止及び検出回路
1組の回路が認証チップへの物理的攻撃のテスト及び防止のために必要である。しかし、実際に攻撃として検出される者は、意図的な物理的攻撃ではないかもしれない。したがって、認証チップ内で以下の2タイプの攻撃、即ち、
物理的攻撃の出現を確信できる場合
物理的攻撃の出現を確信できない場合
を区別することが重要である。
【1282】
この2タイプの検出は、検出の結果として実行されることが違う。第1のケース、即ち、物理的攻撃の出現を確信できる場合、フラッシュメモリ鍵情報の消去が目的にかなった動作である。第2のケース、即ち、物理的攻撃の出現を確信できない場合、何かの間違いがあるかもしれない。動作を行うべきではあるが、秘密鍵情報を消去する動作ではない。第2のケースでとるべき適切な動作は、チップリセットである。検出されたものがチップに永久的な損傷を加える攻撃であるならば、次にも同じ状態が出現し、チップは再度リセットする。これに対して、検出されたものがチップの通常の動作環境の一部であるならば、このリセットは鍵を損ねない。
【1283】
回路が状況を理解できない事象の良い例は、電源誤動作である。この誤動作は、鍵に関する情報を暴こうとする意図的な攻撃かもしれない。しかし、それは、接続間違い、又は単に、電源遮断シーケンスの開始かもしれない。したがって、チップをリセットだけすることが最良であり、鍵を消去しない。チップが電源遮断中であれば、何も失われない。システムが故障している場合、リセットの繰り返しによって、消費者はシステムを修理する。両方のケースで、消耗品は損なわれていない。回路が状況を理解できる事象の良い例は、チップ内のデータラインの切断である。この攻撃が何らかの方法で検出された場合、これは、チップの故障(製造欠陥)、又は攻撃の結果に限られる。何れのケースでも、秘密情報の消去は、目的にかなった選択すべきステップである。
【1284】
この結果として、各認証チップは図示されるように2本のタンパー検出ラインを含む。一方は明確な攻撃用であり、もう一方は攻撃可能性のためのものである。これらのタンパー検出ラインには、多数のタンパー検出テストユニットが接続され、各ユニットは様々な形態のタンパーリングをテストする。その上、タンパー検出ライン及び回路自体は不正に手を加えられないことを保証したい。
【1285】
タンパー検出ラインの一方の端は、(一般的な動作回路よりも高速でクロッキングする)疑似ランダムビットのソースである。上記の雑音発生器回路は適当なソースである。生成されたビットは、2種類のパスを通り、一方のパスは原データを搬送し、他方は原データの反転を搬送する。これらのビットを搬送する配線は、一般的なチップ回路(例えば、メモリ、鍵操作回路等)よりも上の層にある。配線はランダムビット発生器もカバーする。ビットは、XORゲートによって多数の場所で再結合される。ビットが異なる場合(そうあるべきである)、1が出力され、特定のユニットによって使用される(例えば、メモリ読み出しからの各出力ビットはこのビット値とAND演算される)。ラインは、最終的に、フラッシュメモリ消去回路に集まり、そこで、XORからの0によって完全な消去がトリガーされる。ラインには多数のトリガーが取り付けられ、各々はチップ上の物理的攻撃を検出する。各トリガーは、GNDへ繋がれた大型nMOSトランジスタを有する。タンパー検出ラインは、このnMOSトランジスタを物理的に通る。テストが失敗したとき、トリガーはタンパー検出ラインを0にする。XORテストは、このクロックサイクル、又は次のクロックサイクル(平均的に)の何れかで失敗し、チップをリセット又は消去する。図175は、テストと、消去回路又はリセット回路の何れかに接続されたXORと、を用いるタンパー検出回路の基本原理の説明図である。
【1286】
タンパー検出ラインは、図176の大型nMOSトランジスタのレイアウトに示されているように、各Testの出力トランジスタのドレインを通る。タンパー検出ラインは切断できない。なぜならば、これは、ランダムソースからの1と0の流れを止めるからである。それにより、XORテストは失敗する。タンパー検出ラインは、各テストを物理的に通るので、タンパー検出ラインを切断することなく、特定のテストを除去することは不可能である。重要なことは、XORは、攻撃の機会を減らすため、タンパー検出ラインに沿って様々な場所からの値を取ることである。図177は、チップの様々な部分で使用されるタンパー検出ラインから多数のXORをとる状況を示している。これらのXORの各々は、各ユニット又はサブユニットで使用されるチップ正常ビットChipOKを生成しているとみなすことができる。
【1287】
サンプル用途としては、各ユニットにOKビットを設け、これを各サイクルで与えられたChipOKビットとAND演算することがある。OKビットはリセットで1がロードされる。OKビットが0であるならば、ユニットは次のリセットまで失敗(フェイル)である。タンパー検出ラインが正しく機能するならば、チップは、リセットを行うか、又は全ての鍵情報を消去する。リセット回路又は消去回路が破壊されているならば、このユニットは機能しないので、攻撃者を阻止する。リセットライン及び消去ライン、並びに、関連した回路の行き先は、非常に状況に敏感である。それは、個別のタンパーテストと非常に類似した方法で保護されるべきである。攻撃者がリセット回路に繋がる配線を簡単に切断できるのであれば、リセットパルスを生成しても意味がない。実際の実装形態は、リセットでクリアされるべき項目と、それらの項目をクリアする方法と、に依存する部分が大きい。
【1288】
最後に、図178は、タンパーラインがチップの雑音発生器回路を保護する様子を示す図である。発生器及びNOTゲートは同じ高さにあり、一方、タンパー検出ラインは発生器よりも高いところを通る。
【1289】
タンパー検出付き保護メモリ
秘密情報又はプログラムコードはフラッシュメモリに記憶するだけでは不十分である。フラッシュメモリ及びRAMは、プログラムコード又は鍵情報の特定のビットを変更(又はセット)使用とする攻撃者から保護されなければならない。使用されるメカニズムは、(上述の)タンパー検出回路で使用されているメカニズムに準拠する。ソリューションの第1の部分は、タンパー検出ラインが各フラッシュ又はRAMビットの直ぐ上を確実に通ることである。これは、攻撃者がフラッシュ又はRAMの内容をプローブできないことを保証する。配線の保護部の破損はタンパー検出ラインの切断である。この破損は、消去信号をセットするので、メモリの内容が消去される。タンパー検出ライン上の高周波雑音も受動的な観測の妨げになる。
【1290】
フラッシュに対するソリューションの第2の部分は、多重レベルデータ記憶装置を使用し、しかも、それらの多重レベルのうちのサブセットだけを有効ビット表現のために使用することである。一般的に、多重レベルフラッシュ記憶装置が使用されるとき、単一のフローティングゲートが2ビット以上を保持する。例えば、4電圧状態トランジスタは、2ビットを表現できる。最小電圧及び最大電圧がそれぞれ00及び11で表すことにすると、2個の中間電圧は01及び10を表す。認証チップの場合、単一ビットを表現するために2個の中間電圧を使用し、両端の2個は無効状態であるとみなす。攻撃者がゲートの回路を閉じる、又は切断することにより、ビットの状態を強制的にある方向又は別の方向にさせようとした場合に、無効電圧(従って、無効状態)が現れる。
【1291】
RAMに対するソリューションの第2の部分は、パリティビットを使用することである。レジスタのデータ部分は(攻撃後には一致しなくなる)パリティビットを使って検査できる。フラッシュ及びRAMから到来するビットは、共通タンパー検出ラインに接続された(1ビットに一つずつの)多数のテストユニットによって確認される。タンパー検出回路は、データが通過する最初の回路である(したがって、攻撃者によるデータラインの切断を阻止する)。
【1292】
プログラムコードのローディング用ブート回路
プログラムコードは、ROMではなく、多重レベルフラッシュに保持されるべきである。なぜならば、ROMはテストできない方法で変更されやすいからである。したがって、ブートメカニズムは、プログラムをフラッシュメモリに取り込むために必要である(フラッシュメモリは製造後中間状態になっている)。ブート回路はROM内には置かれず、小型の状態機械で十分である。そうでなければ、ブートコードは検出できない方法によって変更される。ブート回路は、全てのフラッシュメモリを消去し、消去が正しく動作したことを確認し、次に、プログラムコードをロードする。フラッシュメモリは、プログラムをローディングする前に消去しなければならない。そうでなければ、攻撃者はチップをブート状態に置き、既存の鍵を抽出しただけのプログラムをロードすることができる。状態機械は、新しいプログラムコードをロードする前に、全てのフラッシュメモリがクリアされていることを保証するため(攻撃者が消去ラインを切断していないことを保証するため)検査を行う。プログラムコードのローディングは、(鍵のような)秘密情報がロードされる前に、安全なプログラミングステーションによって行われる。
【1293】
鍵データパス用の特殊なFETの実装
CMOSインバータ(nMOSトランジスタと組み合わされたpMOSトランジスタを含む)場合の通常のFET実装の状況が図179に示されている。遷移中に、nMOSトランジスタとpMOSトランジスタの両方が中間的な抵抗値をもつ短い期間が存在する。その結果としての電源−グラウンド短絡回路は、電流を一時的に増大させ、実際上、CMOS装置によって消費される電流の大部分を占める。少量の赤外線光が短絡回路の期間に放出され、シリコン基板を介して観測することができる(シリコンは赤外線を透過する)。また、少量の光がトランジスタゲート容量と伝送ライン容量の充電中及び放電中に放出される。
【1294】
秘密鍵情報を操作する回路の場合、このような情報は秘匿されなければならない。代替的なノンフラッシングCMOS実装が、鍵、又はその鍵に基づいて部分的に計算された値を操作する全てのデータパスのため使用される。二つの重なり合わないクロックφ1及びφ2の使用によって、フラッシュしないメカニズムが得られる。φ1は全てのnMOSトランジスタの第2ゲートに接続され、φ2は全てのpMOSトランジスタの第2ゲートに接続される。遷移は、クロックと組み合わされた場合に発生する。φ1及びφ2は重なり合わないので、pMOS及びnMOSトランジスタは、同時に中間的な抵抗値をとることがない。その構成は図180に示されている。
【1295】
最後に、通常のCMOSインバータは、重要なノンフラッシングCMOSコンポーネントの近傍に配置することができる。これらのインバータは上記のタンパー検出ラインからそれらの入力信号を取り出す。タンパー検出ラインは通常の動作回路の何倍も高速に動作するので、正味の影響は、ノンフラッシングCMOSコンポーネントの各々の場所付近に高いレートで生じる光バーストである。明るい光は、付近の弱い光の観測を邪魔するので、観測者は、チップそのものでどのようなスイッチング動作が行われているかを検出し得ない。これらの通常のCMOSインバータは、回路雑音の量を効果的に増加させ、SN比を低下させ、役に立つEMIを覆い隠す。
【1296】
ノンフラッシングCMOSの使用によって多数の副作用が現れる:
チップの実効速度は、1クロックサイクル当たりのクロック立ち上がり時間の2倍だけ減少する。これは、認証チップの場合、問題にならない;
ノンフラッシングCMOSによって引き出される電流量が減少する(なぜならば、短絡回路が現れないからである)。しかし、これは、通常のCMOSインバータの使用によって相殺される;
クロックの配線によってチップ面積が増加し、特に、φ1及びφ2の多数のバージョンが様々な伝搬のレベルを考慮に入れるために要求されるからである。チップ面積の推定量は通常の実装の2倍である;
認証チップのフラッシュしないエリアの設計は、通常のCMOS設計を用いた場合よりも多少複雑になる。特に、標準的なセルコンポーネントが使用できず、そのエリアがフルカスタム化されるからである。これは、認証チップのように小さいものの場合、特に、チップ全体をこの方法で保護しなくても構わないときには、問題にならない。
【1297】
可能な場所でのポリシリコン層内の配線
どこでも可能であれば、鍵又は秘密データが流れる配線は、ポリシリコン層内に作られるべきである。必要であれば、メタル1に設けられるが、決して(タンパー検出ラインを含む)最上部のメタル層に設けるべきではない。
【1298】
過小過多電力検出ユニット
各認証チップは、電源攻撃を妨げるため、過小過多電力検出ユニットが必要である。過小過多電力検出ユニットは、電源誤動作を検出し、電源レベルがある許容範囲に収まることを保証するため、電圧基準に対して電源レベルをテストする。このユニットは、単一の電圧基準と、2個のコンパレータを含む。過小過多電力検出ユニットは、リセットタンパー検出ラインに接続してもよく、これにより、トリガーされたときにリセットを引き起こす。過小過多電力検出ユニットの副作用は、電源遮断中に電圧が降下したとき、リセットがトリガーされ、作業レジスタを消去することである。
【1299】
テスト回路無し
認証チップ上のテストハードウェアは簡単に脆弱性を持ち込み得る。その結果として、認証チップは、BIST又はスキャンパスを含むべきではない。したがって、認証チップは外部テストベクトルを用いてテスト可能にされる。これは、認証チップが複雑ではないので実現可能である。
【1300】
ROM読み出し
この攻撃は、鍵がアドレス指定可能なROMに記憶されていることに依存する。各認証チップはその認証鍵を、アドレス指定可能なROMではなく内部フラッシュメモリに記憶しているので、この攻撃は無関係である。
【1301】
チップのリバースエンジニアリング
チップのリバースエンジニアリングは、認証の安全性がアルゴリズムに由来している場合に限り有用である。しかし、本発明の認証チップは、アルゴリズムの秘密性ではなく、秘密鍵に依存している。これに対して、本発明の認証アルゴリズムは公開されていて、いずれにしても、大量生産消耗品の攻撃者は、チップの内部の詳細な設計図を獲得する可能性があったと考えられる。これらの要因から見て、チップ自体のリバースエンジニアリングは、記憶されたデータとは対照的に、脅威ではない。
【1302】
認証プロセスの不当使用
この攻撃がとり得る形態は幾つかあり、各々の形態は成功の程度に違いがある。全てのケースにおいて、複製品製造者はシステム設計と消耗品設計の両方を入手できると考えられる。ある攻撃者は、認証コードを生成するのではなく、システムを騙して有効なコードを返すチップを構築しようとする。この攻撃は以下の二つの理由から実現不可能である。第1の理由は、システム認証チップ及び消耗品認証チップは、物理的には同じであるとしても、別々にプログラムされている点にある。特に、RDオペコード及びRNDオペコードは同一であり、WRオペコードとTSTオペコードも同様である。システム認証チップはRDコマンドを実行できない。なぜならば、全ての呼び出しは、RDではなく、RNDへの呼び出しとして解釈されるからである。この攻撃が失敗する第2の理由は、別々のシリアルデータラインがシステムからシステム認証チップ及び消耗品認証チップへ設けられるからである。その結果として、どちらのチップも、もう一方へ送信される内容、或いは、もう一方から受信される内容を見ることができないからである。攻撃者が、(消耗品残量をデクリメントする)WRコマンドを無視する複製チップを構築した場合、プロトコル3は、その後のRDがWRは出現しなかったことを検出することを保証する。システムは、したがって、消耗品を使用しなくなり、攻撃者を阻止する。これは、攻撃者が認証前に接触の欠損をシミュレートした場合にも成り立ち、認証が行われないので、消耗品の使用は発生しない。したがって、攻撃者は、複製消耗品が受け付けられるように各システムを変更する範囲に制限される。
【1303】
システムの変更
変更の最も簡単な方法は、システムの認証チップを、TSTへの呼び出し毎に成功だけを通知するチップと置き換えることである。これは、認証毎に何回もTSTを呼び出し、最初の数回は偽の値を与え、TSTからの失敗の通知を要求するシステムによって妨げられる。TSTへの最後の呼び出しは成功することが予想される。TSTの偽の呼び出しの回数は、RD、又はシステムクロックから戻された結果の一部分から決定してもよい。残念ながら、攻撃者は、単に、システムを書き換えることができるので、新しいシステム複製認証チップ53は、消耗品チップ又はクロックから返された結果を監視できる。複製システム認証チップは、監視された値がそのTST関数へ与えられたときに、成功しか返さない。複製消耗品はRDのハッシュ結果として任意の値を返すことができ、複製システムチップはその値を有効であることを明らかにする。したがって、システムがシステム認証チップを何回も呼び出しても意味がない。なぜならば、書き換え攻撃は、全てのシステムに対してではなく、再配線されたシステムだけに対して正しく動作するからである。システムに対する類似した攻撃の形態は、システムROMの取り替えである。ROMプログラムコードは、認証が行われることの無いように変更可能である。これに関しては何もできない。なぜならば、システムは消費者の手にあるからである。勿論、これはあらゆる保証を無効にするが、消費者は、複製消耗品が非常に安価であり、且つ本物の品物よりも簡単に入手できるのであれば、変更する価値があると考えるであろう。
【1304】
システム/消耗品製造者は、したがって、この種類の攻撃がどの程度起こり得るかを判断しなければならない。このような調査は、システム及び消耗品の価格構成、システムサービスの頻度、物理的な変更を加えたときの消費者の利益、消費者がその変更を実行するために出向く場所を当然に含む。システムを変更する限界のケースは、複製品製造者が、複製消耗品を必要とする完全な複製システムを提供する場合である。これは、単なる競合、又は特許権の侵害である。いずれにしても、これは認証チップの目的の範囲外であり、複製される技術やサービスに依存する。
【1305】
従来のプロービングによるチップ動作の直接視
チップ動作を視察するためには、チップは動作していなければならない。しかし、タンパー防止及び検出回路は、鍵を処理又は保持するチップの区域を覆う。これらの区域を、タンパー防止ラインを通して見ることは不可能である。攻撃者は、単にタンパー防止層を通してチップをスライスできない。なぜならば、そうすることによって、タンパー検出ラインが破断し、電源投入時に全ての鍵を消去するからである。単に消去回路を破壊するだけでは不十分である。なぜならば、認証チップ内の多数のユニットに供給される多数のChipOKビット(このとき全て0)は、チップの通常の動作回路の機能を停止させるからである。攻撃のためにチップをセットアップするためには、攻撃者は、タンパー検出ラインを削除し、フラッシュメモリの消去を停止し、ChipOKラインを信頼していたコンポーネントを何とかして書き換えることが必要である。たとえ、この全てを実行できたとしても、チップをこのレベルまでスライスする動作は、鍵を保持する不揮発性メモリ内の電荷パターンを殆ど破壊し、プロセスを無益にするであろう。
【1306】
不揮発性メモリの直接視
認証チップがフラッシュメモリのフローティングゲートを露出させるようにスライスされ、それらを放電させない場合、鍵は、おそらくSTM又はSKMを用いて直接視できるであろう。しかし、ゲートを放電させずにチップをこのレベルまでスライスすることは、おそらく不可能である。湿式エッチング、プラズマエッチング、イオンミリング、又は化学機械研磨は、ほぼ確実にフローティングゲート上に存在する小さい電荷を放出する。これは、通常のフラッシュメモリの場合に成り立つが、多重レベルフラッシュメモリの場合にはより確かである。
【1307】
状態変化によって生じる光バーストの監視
秘密鍵情報を操作する回路の全ての区域は、上記のノンフラッシングCMOSに実現される。これは、大部分の光バーストの放出を阻止する。ノンフラッシングCMOSの直ぐ近くに配置された通常のCMOSインバータは、キャパシタの充電及び放電によって生じる僅かな放射を見えなくする。インバータはタンパー検出回路に接続されるので、インバータは、ノンフラッシングCMOSの状態変化毎に何回も(高いクロックレートで)状態を変化する。
【1308】
EMIの監視
上記の雑音発生器は回路雑音を誘起する。雑音は、チップの通常の動作からの他の電磁放射を妨害し、内部データ転送の有意な読み出しが曖昧になる。
【1309】
dd 変動の監視
この種の攻撃に対するソリューションは、Idd信号におけるSN比を減少させることである。これは、回路の雑音量を増大させ、信号量を減少させることにより実現される。雑音発生器回路(これは、EMI攻撃に対する防御としても機能する)は、Idd中の重要な情報を目立たなくするため、サイクル毎に十分な状態変化を引き起こす。その上、チップの鍵を伝搬するデータパスの特別なノンフラッシングCMOS実装は、状態変化が生じたときに電流が流れることを阻止する。これは、信号量を減少させる利点がある。
【1310】
差分故障解析
差分故障ビット誤りは、イオン化、マイクロ波放射、又は環境ストレスによって、目標とした形ではなく、取り込まれる。この種の攻撃の最も起こりやすい影響は、フラッシュメモリの変更(無効な状態を引き起こす)又はRAMの変更(不良パリティ)である。無効な状態及び不良なパリティは、タンパー検出回路によって検出され、鍵の消去を生じさせる。タンパー検出ラインは鍵操作回路を覆うので、鍵操作回路に取り込まれたあらゆる誤りは、タンパー検出ラインの誤りによって反映される。タンパー検出ラインが影響されるならば、チップは、継続的にリセットをするか、又は単にパワーアップ時に鍵を消去し、攻撃を無益にする。目標としていない攻撃に頼り、「チップのちょうど良い部分がちょうど良い方法で影響を受ける」ことを望むのではなく、攻撃者は、(上書き攻撃、ゲート破壊等の)目標とした故障を持ち込むことをやってみる方がよい。
【1311】
クロック誤作動攻撃
(上記の)クロックフィルタはクロック誤動作攻撃の実現性を除外する。
【1312】
電源攻撃
(上記の)過小過大電力検出ユニットは電源攻撃の実現性を除外する。
【1313】
ROMの上書き
認証チップは、プログラムコード、鍵、及び秘密情報を、ROMではなく、フラッシュメモリに格納する。したがって、この攻撃は可能性がない。
【1314】
EEPROM/フラッシュの変更
認証チップは、プログラムコード、鍵、及び秘密情報をフラッシュメモリに格納する。しかし、フラッシュメモリは、2本のタンパー防止及び検出ラインによって覆われている。これらのラインの何れか一方が(ゲートを破壊するプロセスにおいて)破断されると、攻撃はパワーアップ時に検出され、各チップは、(連続的に)リセットするか、又はフラッシュメモリから鍵を消去する。しかし、たとえ、攻撃者が何とかしてフラッシュメモリのビットへアクセスし、特定のビットを保持しているゲートを破壊するか、若しくは、省くことができるとしても、これは、そのビットを強制的に無充電、又はフル充電の状態にする。これらはどちらも、認証チップの多重レベルフラッシュメモリの使用法では無効状態である(二つの中間状態だけが有効である)。データ値がフラッシュから転送されたとき、検出回路は、消去タンパー検出ラインをトリガーさせ、これにより、フラッシュメモリの残りの部分を消去し、チップをリセットする。したがって、EEPROM/フラッシュメモリの変更攻撃は無益である。
【1315】
ゲート破壊攻撃
ゲート破壊攻撃は、単一ゲートを変更し、動作中にチップに情報を暴露させる攻撃者の能力に依存している。しかし、秘密情報を操作する回路は、2本のタンパー防止及び検出ラインの一方によって覆われている。これらのラインの何れか一方が(ゲートを破壊するプロセスにおいて)破断されると、攻撃はパワーアップ時に検出され、各チップは、(連続的に)リセットするか、又はフラッシュメモリから鍵を消去する。この種の攻撃に出るためには、攻撃者は、最初に、どのゲートを目標にすべきかを決定するためにチップをリバースエンジニアリングしなければならない。目標ゲートの場所が決定された後、攻撃者は、保護しているタンパー検出ラインを破断し、フラッシュメモリの消去を停止し、ChipOKラインを信頼していたコンポーネントを何とかして書き換えることが必要である。回路の書き換えはチップをスライスすることなく実行できず、たとえ、実行できたとしても、チップをこのレベルまでスライスする動作は、鍵を保持する不揮発性メモリ内の電荷パターンを殆ど破壊し、プロセスを無益にするであろう。
【1316】
上書き攻撃
上書き攻撃は、鍵の個々のビットを、その前の値を知ることなく、セットし得ることに依存している。それは、従来のプロービング攻撃と同じようにチップをプロービングし、ゲート破壊攻撃と同じようにゲートを破壊することに依存する。これらの両方の攻撃は(それぞれのセクションで説明したように)タンパー防止及び検出回路とChipOKラインを使用しているので成功しない。しかし、たとえ、攻撃者が何とかしてフラッシュメモリのビットへアクセスし、特定のビットを保持しているゲートを破壊するか、若しくは、省くことができるとしても、これは、そのビットを強制的に無充電、又はフル充電の状態にする。これらはどちらも、認証チップの多重レベルフラッシュメモリの使用法では無効状態である(二つの中間状態だけが有効である)。データ値がフラッシュから転送されたとき、検出回路は、消去タンパー検出ラインをトリガーさせ、これにより、フラッシュメモリの残りの部分を消去し、チップをリセットする。同じように、RAMから読み出された改ざんされている値のパリティチェックによって、消去タンパー検出ラインがトリガーされる。したがって、上書き攻撃は無益である。
【1317】
残留メモリ攻撃
認証チップ内の作業用レジスタ又はRAMは、電源が取り外されたとき、認証鍵の一部を保持している。作業用レジスタ及びRAMは、電源の取り外し後、ある時間その情報を保持し続ける。チップがスライスされ、レジスタ/RAMのゲートが、それらを放電させることなく露出されたとき、データは、STMを使用して、おそらく直接視できるであろう。第1の防御は、上述の電源誤動作攻撃に対する防御の説明からわかる。電源が取り外されると、リセット状態がメモリのクリアを引き起こすのとちょうど同じように、全てのレジスタ及びRAMがクリアされる。この攻撃が成功する見込みは、フラッシュメモリの読み出しの見込みよりもひくり。RAM電荷は(本質的に)フラッシュメモリよりも簡単に失われる。RAMを明らかにするためのチップのスライス化は、(電荷が、単に、メモリがリフレッシュされていないこと、及びスライス化を実行するために要する時間を原因として失われていないとしても)確実に電荷を失わせる。したがって、この攻撃は無益である。
【1318】
チップ窃盗攻撃
認証チップの耐用期間には、区別可能なフェーズが存在する。チップは、以下のステージの何れかのときに盗まれる可能性がある:
製造後、鍵をプログラミングする前;
鍵のプログラミング後、状態データをプログラミングする前;
状態データのプログラミング後、消耗品又はシステムに挿入する前;
システム又は消耗品に挿入された後。
【1319】
チップ製造とプログラミングステーションの間の盗難は、複製品製造者にブランクチップを与えるだけである。これは、認証チップの販売を危うくするだけであり、認証チップによって認証されるものはない。プログラミングステーションは、消耗品及びシステム製品鍵をもつ唯一のメカニズムであり、複製品製造者はチップを正しい鍵でプログラミングできない。複製品製造者は、自分専用のシステム及び消耗品用にブランクチップをプログラミングすることは可能であるが、それらの品を見破られずに販売することは困難であろう。盗難の第2の形態は、認証チップが2以上の別個のプログラミングフェーズを通るような状況だけで起こり得る。これは起こり得るが、可能性は低い。いずれにしても、最悪の状況は、状態データがプログラミングされておらず、全てのMがリード/ライトになっている場合である。このケースでは、攻撃者はチップに対して適応的選択テキスト攻撃に出ることが可能である。HMAC−SHA1アルゴリズムはこの攻撃に対抗できる。盗難の第3の形態は、プログラミングステーションと取付工場との間で行われる。認証チップは、既に特定のシステム用、又は特定の消耗品用にプログラムされている。これらのチップの唯一の用途として、泥棒はこれらを複製システム又は複製消耗品に収容する。複製システムは見当違いであり、複製システムは認証チップ53を必要とさえしないであろう。複製消耗品の場合、このような盗難は、複製品の数を盗み取られたチップの数に制限する。1回の窃盗は、複製品製造者が費用対効果に優れたビジネスを行うために十分な供給数が得られない。盗難の最後の形態は、システム又は消耗品自体の盗難である。盗難が製造者側で発生した場合、物理的セキュリティプロトコルを強化しなければならない。盗難が他の場所で行われた場合、それは、その品の所有者、及び警察又は保険会社だけの問題である。認証チップが使用するセキュリティメカニズムは、消耗品及びシステムが一般の人の支配下にあることを前提としている。その結果として、それらが盗まれても、鍵の安全性に重大な影響はない。
【1320】
認証チップ設計
認証チップは、物理的及び論理的外部インタフェースをもつ。物理的インタフェースは認証チップをどのように物理的システムに接続できるかを規定し、論理的インタフェースはシステムがどのように認証チップと通信できるかを規定する。
【1321】
物理的インタフェース
認証チップは、小型の4ピンCMOSパッケージである(実際の内部サイズは、0.25μmフラッシュプロセスを使用する約0.30mmである)。4ピンは、グランド(GND)、クロック(CLK)、パワー(Power)、及びデータ(Data)である。パワーは公称電圧である。電圧が公称電圧からある量以上変動すると、チップはリセットする。推奨されるクロック速度は4から10MHzである。内部回路は、クロック信号をフィルタ処理し、安全最大クロック速度を超えないことを保証する。データは、シリアルデータラインに沿って、同時に1ビットずつ送受信される。チップは、パワーアップ時、パワーダウン時にリセットを実行する。その上、チップ内のタンパー検出及び防止回路は、攻撃が検出された場合、(検出された攻撃に応じて)チップをリセットさせるか、又はフラッシュメモリを消去させる。特殊プログラミングモードは、CLK電圧を特定レベルに保持することによってイネーブル状態にされる。これは次のセクションで更に説明される。
【1322】
論理的インタフェース
認証チップは、ノーマルモードとプログラミングモードの二つの動作モードを有する。二つのモードが必要になる理由は、動作プログラムコードは、(安全性の理由から)ROMではなくフラッシュメモリに記憶されるからである。プログラミングモードは、製造後にテスト目的のため使用され、動作プログラムコードを詰め込み、一方、ノーマルモードは、その後のチップの使用のために用いられる。
【1323】
プログラミングモード
プログラミングモードはCLKライン上に特定電圧を所定の時間だけ維持することによって有効にされる。チップがプログラミングモードに入るとき、全てのフラッシュメモリは消去される(全ての秘密鍵情報及びプログラムコードを含む)。認証チップは、次に、消去を検証する。消去が成功であるならば、認証チップは、新しいプログラムコードに対応した384バイトのデータを受け取る。バイトは、バイトからバイト383の順に転送される。ビットは、ビットからビットの順に転送される。384バイト全部のプログラムコードがロードされると、認証チップはハングする。消去が成功しなかった場合、認証チップは全くデータをフラッシュメモリにロードすることなくハングする。チップがプログラムされた後、チップを再スタートすることができる。チップがCLKライン上の通常電圧でリセットされたとき、ノーマルモードに入る。
【1324】
ノーマルモード
認証チップは、プログラミングモードではないときには、ノーマルモードである。認証チップがノーマルモードでスタートアップしたとき(例えば、パワーアップリセット)、認証チップは、そのときフラッシュメモリのプログラムコード領域に格納されているプログラムを実行する。プログラムコードは、システムと認証チップの間に通信メカニズムを組み込み、システムからのコマンド及びデータを受け取り、出力値を生成する。認証チップはシリアル通信をするので、ビットは同時に1ビットずつ転送される。システムは、簡単なオペレーションコマンドセットによって認証チップと通信する。各コマンドは3ビットオペコードによって定義される。オペコードの解釈は、IsTrustedビット及びIsWrittenビットの現在値に依存する。
【1325】
以下のオペレーションが定義される。
【1326】
【表130】
Figure 2001523900
Op=オペコード、T=IsTrusted値、W=IsWritten値、
Mn=ニューモニック、[n]=パラメータに必要なビット数。
【1327】
この表に定義されていないコマンドは、NOP(ノーオペレーション)として解釈される。その例には、(IsTrusted値又はIsWritten値とは無関係である)オペコード110及び111と、IsWritten=0のときのSSI以外のオペコードと、が含まれる。RD及びRNDのオペコードは同じであり、WR及びTSTのオペコードも同じであることに注意する必要がある。オペコードの受け取り後に動かされる実際のコマンドは、(IsWrittenが1である限り)IsTrustedビットの現在値に依存する。IsTrustedビットがクリアされているところでは、RD及びWR関数が呼び出される。IsTrustedビットがセットされると、RND及びTST関数が呼び出される。2組のコマンドは、信頼されている認証チップと信頼されていない認証チップとの間で相互に排他的である。認証チップ上でコマンドを実行するため、(システムのような)クライアントは、コマンドオペコードと、その後に続く、そのオペコードに必要な入力パラメータと、を送る。オペコードは、最下位ビットから最上位ビットまで送られる。例えば、SSIコマンドを送るため、ビット1、0及び0がこの順に送られる。各入力パラメータも同じ方法で送られ、最初に最下位ビットから送られ、最後に最上位ビットまでが送られる。戻り値はこの方法で読み出され、最初に最下位ビットが読まれ、最後に最上位ビットが読まれる。クライアントは獲得するビット数がわかっていなければならない。
【1328】
一部のケースでは、あるチップのコマンドからの出力ビットは、別のチップのコマンドへの入力ビットとしてそのまま供給される。この一例は、RNDコマンドとRDコマンドである。信頼された認証チップ上のRNDへの呼び出しからの出力ビットはシステムによって保持されなくてもよい。その代わりに、システムは、その出力ビットをそのまま信頼されない認証チップのRDコマンドの入力へ転送することができる。各コマンドの説明は、それがその場合であるかを示している。各コマンドは後続のセクションで詳細に検討される。一部のアルゴリズムは、常駐レジスタがフラッシュメモリに保持されているので、特別に設計されている。
【1329】
レジスタ
認証チップ内のメモリは認証プロトコルによって要求される変数を記憶するため不揮発性メモリを含む。以下の不揮発性メモリ(フラッシュ)変数が定義される。
【1330】
【表131】
Figure 2001523900
アーキテクチャ概要
このセクション・章は、認証チップの必要な機能を実装することができる専用CPUの上位定義を与える。このCPUは汎用CPUではないことに注意する必要がある。認証ロジックを実装するためオーダーメードされている。WRITE、TST、RND等のような認証チップのユーザが目にする認証コマンドは、CPU命令セットでかかれた小型プログラムとして全て実装される。CPUは、32ビットのアキュムレータ(殆どのオペレーションで使用される)と、多数のレジスタと、を含む。CPUは、認証ロジックを実装するため専用に仕立てられた8ビット命令を含む。各8ビット命令は、典型的に、4ビットのオペコードと、4ビットのオペランドと、により構成される。
【1331】
動作速度
内部クロック周波数リミッタユニットは、チップが所定の周波数よりも速い速度で動作することを防止する。この周波数は、製造中にチップに組み込まれ、変更不可である。この周波数は約4から10MHzであることが推奨される。
【1332】
コンポジション及びブロック図
認証チップは以下のコンポーネントを含む。
【1333】
【表132】
Figure 2001523900
図181は認証チップの概略ブロック図である。タンパー防止及び検出回路は図示されない。雑音発生器、過小過大電力検出ユニット、及びプログラミングモード検出ユニットは、タンパー防止及び検出回路に接続され、残りのユニットへは接続されない。
【1334】
メモリマップ
図182はメモリマップの一例を示す図である。認証チップは外部メモリを持たないが、内部メモリを有する。内部メモリは9ビットによってアドレス指定され、32ビット幅又は8ビット幅である(アドレスに依存する)。32ビット幅メモリは不揮発性データ、HAMC−SHA1のため使用される変数、及び定数を保持するため使用される。8ビット幅メモリは、プログラムと、プログラムによって使用される様々なジャンプテーブルと、を保持するため使用される。アドレス分割(予備メモリレンジを含む)はアドレス生成及び復号化を最適化するため設計される。
【1335】
定数
図183は定数メモリマップの一例の説明図である。定数領域は32ビット定数により構成される。これらは、(32ビットの全部が0、及び32ビットの全部が1のような)単純な定数、HAMCアルゴリズムによって使用される定数、並びに、SHA−1アルゴリズムで使用するため必要な定数y0−3及びh0−4である。これらの値はリセットによって影響を受けない。定数を利用する唯一のオペコードはLDKである。このケースでは、オペランド及びメモリ配置は、アドレス生成及び復号化を最小限に抑えるため、密接に関連付けられている。
【1336】
RAM
図184はRAMメモリマップの一例の説明図である。RAM領域は、認証チップの汎用機能のために必要な32個のパリティチェック付き32ビットレジスタを含むが、チップの動作中だけである。RAMは揮発性メモリであり、一旦電源が取り外されると、値は失われる。実際上、メモリは、(メモリ残留のために)その値をパワーダウン後のある時間は維持するが、パワーアップ後に利用可能であるとは考えられない。これは、この文書の他のセクションで記載されているセキュリティの問題である。RAMは、HMAC−SHA1アルゴリズムで使用される変数、即ち、A−E、一時変数T、160ビット作業用ハッシュ値のためのスペースH、(HMACによって要求される)ハッシュ結果の一時記憶のためのスペースB160、及び拡張ハッシングメモリの512ビット用のスペースXを含む。全てのRAM変数は、リセット後に0にクリアされるが、プログラムコードはこれを当てにしてはならない。RAMアドレスを利用するオペコードは、LD、ST、ADD、LOG、XOR及びPRLである。全てのケースで、オペランド及びメモリ配置は、アドレス生成及び復号化を最小限に抑えるため、密接に関連付けられている(マルチワード変数は最上位ワードが先に格納される)。
【1337】
フラッシュメモリ−変数
図185はフラッシュメモリ変数メモリマップの一例の説明図である。フラッシュメモリ領域は、認証チップ内の不揮発性情報を格納する。フラッシュメモリは、電源の取り外し後もその値を維持し、次に電源が入れられたとき、変化していないことが期待できる。マルチステートフラッシュメモリに保持された不揮発性情報は、2個の160ビット鍵(K及びK)と、現在ランダム値(R)と、状態データ(M)と、MinTicks値(MT)と、AccessMode値(AM)と、IsWritten(ISW)フラグと、IsTrusted(IST)フラグと、を含む。フラッシュ値は、リセットによって変わらないが、プログラミングモードに入ったときに(0に)クリアされる。フラッシュアドレスを利用するオペレーションは、LD、ST、ADD、PRL、ROR、CLR及びSETである。全てのケースで、オペランド及びメモリ配置は、アドレス生成及び復号化を最小限に抑えるため、密接に関連付けられている。マルチワード変数K、K及びMは、アドレッシングの必要条件のため、最上位ワードから先に格納される。使用されるアドレッシングスキームは、Nで始まり、0で終わるインデックスによるベースアドレスオフセットである。このようにして、Mは最初にアクセスされるワードであり、Mは、ループ処理でアクセスされる最後の32ビットワードである。マルチワード変数Rは、同じインデキシングスキームを使用するLFSR生成を簡単にするため、最下位ワードから先に格納される。
【1338】
フラッシュメモリ−プログラム
図186はフラッシュメモリのプログラムメモリマップの一例の説明図である。第2のマルチステートフラッシュメモリ領域は、384×8ビットである。この領域は、JSR、JSI及びTBR命令のためのアドレステーブルと、DBRコマンド用のオフセットと、定数と、プログラム自体と、を格納する。フラッシュメモリは、リセットによって変わらないが、プログラミングモードに入ったときに(0に)クリアされる。一旦、プログラミングモードに入ると、8ビットフラッシュメモリに、新しい384バイトの組をロードすることができる。これが終了すると、チップはリセットされ、通常のチップ動作が行われる。
【1339】
レジスタ
多数のレジスタが認証チップに定義される。それらは、関数実行中に一時記憶として使用される。一部は算術関数用であり、他の一部はカウンティング及びインデキシングに使用され、その他はシリアルI/Oのため使用される。これらのレジスタは不揮発性(フラッシュ)メモリに保持しなくてもよい。それらは、(フラッシュメモリとは異なり)消去サイクル無しで読み出し又は書き込みをすることができる。秘密情報を格納する一時記憶レジスタは、タンパー防止及び検出回路並びにパリティチェックによって、物理的攻撃から保護されなければならない。全てのレジスタはリセット後に0にクリアされる。しかし、プログラムコードは特定の状態を前提とすべきではなく、レジスタ値を適切に設定すべきである。これらのレジスタは、タンパー防止及び検出回路のために定義された様々なOKビットを含まなくてもよいことに注意する必要がある。OKビットは種々のユニットに散在され、リセット後に1にセットされる。
【1340】
サイクル
1ビットサイクル値は、CPUがフェッチサイクル(0)であるか、実行サイクル(1)であるかを決める。サイクルは、実際には、前のサイクル値を保持する1ビットレジスタから得られる。サイクルは命令セットから直接アクセスできない。それは内部レジスタ専用である。
【1341】
プログラムカウンタ
6レベルの深さの9ビットプログラムカウンタアレイ(PCA)が定義される。それは、3ビットスタックポインタ(SP)によってインデキシングされる。現在プログラムカウンタ(PC)は、現在実行中命令のアドレスを格納し、事実上、PCA[SP]である。更に、9ビットAdrレジスタが定義され、(インデックス付きアクセス、又は間接メモリアクセスのための)現在メモリ基準の分解アドレスを格納する。PCA、SP及びAdrレジスタは、命令セットから直接アクセスできない。これらは内部レジスタ専用である。
【1342】
CMD
8ビットCMDレジスタは、現在実行中のコマンドを保持するため使用される。CMDレジスタレジスタは命令セットから直接アクセス不可であるが、内部レジスタ専用である。
【1343】
アキュムレータ及びZフラグ
アキュムレータは32ビット汎用レジスタである。これは、算術演算への入力の一つとして使用され、メモリレジスタ間で情報を転送するため使用されるレジスタである。Zレジスタは1ビットフラグであり、アキュムレータが書き込まれるときに更新される。Zレジスタはアキュムレータの零性を格納する。アキュムレータに最後に書き込まれた値が0であるならば、Z=1であり、最後に書き込まれた値が非0であるならば、Z=0である。アキュムレータとZレジスタの両方は命令セットから直接アクセス可能である。
【1344】
カウンタ
多数の専用カウンタ/インデックスレジスタが定義される。
【1345】
【表133】
Figure 2001523900
これらの全てのカウンタ・レジスタは、命令セットから直接アクセス可能である。これらに特定の値をロードするための専用命令が存在し、別の命令は、それらをデクリメント又はインクリメントし、或いは、特定のカウンタが零であるかどうかに応じて分岐する。2個の専用フラグ(レジスタではない)がC1及びC2に関連付けられ、これらのフラグはC1又はC2の零性を保持する。これらのフラグは、ループ制御のために使用され、以下に列挙される。これれのフラグはレジスタではないが、レジスタと同様にテストできる。
【1346】
【表134】
Figure 2001523900
フラグ
CPU動作モードに対応する多数の1ビットフラグが定義される。
【1347】
【表135】
Figure 2001523900
これらの全ての1ビットフラグは命令セットから直接アクセス可能である。専用命令がこれらのフラグをセット及びクリアするため設けられる。
【1348】
書き込み完全性のため使用されるレジスタ
【1349】
【表136】
Figure 2001523900
I/Oのため使用されるレジスタ
4個の1ビットレジスタがクライアント(システム)と認証チップの間の通信のため定義される。これらのレジスタは、InBit(入力ビット)、InBitValid(入力ビット有効)、OutBit(出力ビット)、及びOutBitValid(出力ビット有効)である。InBit及びInBitValidは、クライアントがコマンド及びデータを認証チップへ送るための手段を提供する。OutBit及びOutBitValidはクライアントが認証チップから情報を受けるための手段を提供する。クライアントは、コマンド及びパラメータビットを、同時に1ビットずつ認証チップへ送る。認証チップはスレーブ装置であるため、認証チップの観点では:
InBitからの読み出しは、InBitValidがクリアされている間はハングする。InBitValidは、クライアントが次の入力ビットをInBitに書き込むまでクリアされたままである。InBitの読み出しはInBitValidビットをクリアし、次のInBitをクライアントから読み出せるようになる。クライアントは、InBitValidビットがクリアされるまでビットを認証チップに書き込めない;
OutBitへの書き込みは、OutBitValidがセットされている間はハングする。OutBitValidは、クライアントがOutBitからビットを読み出すまでセットされたままである。OutBitの書き込みはOutBitValidビットをセットし、次のOutBitをクライアントが読み出せるようにする。クライアントは、OutBitValidビットがセットされるまで認証チップからビットを読み出せない。
【1350】
タイミングアクセスのため使用されるレジスタ
1個の32ビットレジスタがタイマーとして使用するため定義される。MTR(MinTicksRemaining)レジスタは、命令が実行されると、その都度デクリメントする。MTRレジスタが0になると、それは零に留まる。MTRは1ビットフラグMTRZに関連付けられ、MTRZはMTRの零性を格納する。MTRZが1であるならば、MTRレジスタは零である。MTRZが0であるならば、MTRレジスタは未だ零ではない。MTRは(リセット後、又は特定の鍵アクセス関数後)常にMinTicks値から始まり、最終的に0まで減少する。MTRをセットし、MTRZを専用命令でテストすることができるが、MTRの値は命令によって直接読み出せない。
【1351】
レジスタの要約
以下のテーブルは(レジスタ名の順に)全ての一時レジスタを要約する。そのテーブルは、レジスタ名と、サイズ(ビット単位)と、その指定されたレジスタがどこにあるかを列挙する。
【1352】
【表137】
Figure 2001523900
命令セット
CPUは、認証ロジックを実現するため特別に用意された8ビット命令で動作する。8ビット命令の大半は、4ビットオペコードと、4ビットオペランドと、により構成される。上位4ビットはオペコードを含み、下位4ビットがオペランドを含む。
【1353】
オペコード及びオペランド(要約)
オペコードは以下の表に要約されている。
【1354】
【表138】
Figure 2001523900
以下の表は、どのオペランドがどのオペコードと共に使用できるかを要約した表である。この表は、オペコードのニューモニックによってアルファベット順に並べられている。各オペランドのバイナリ値は、その次の表に示されている。
【1355】
【表139】
Figure 2001523900
以下のオペランド表は、4ビットオペランドの解釈を示し、全ての4ビットが直接解釈のため使用されている。
【1356】
【表140】
Figure 2001523900
以下の命令は、オペランドの最上位ビットに基づいて選択を行う。
【1357】
【表141】
Figure 2001523900
オペランドの下位3ビットは、オフセット(DBR,TBR)か、専用テーブル(SC)からの値であるか、LOGの場合のように、それらは論理演算のための第2の入力を選択する。解釈は、ADD、LD、及びSTオペコードの解釈と一致する。
【1358】
【表142】
Figure 2001523900
ADD−アキュムレータへの加算
ニューモニック: ADD
オペコード: 1000
用法: ADD 値。
【1359】
ADD命令は、指定されたオペランドを、モジュロー232の加法でアキュムレータに加算する。オペランドは、A、B、C、D、E、T、AM、MT、AE[C1]、H[C1]、B160[C1]、R[C1]、K[C1]、M[C1]、又はX[N4]のうちの一つである。また、Zフラグはこの演算中に、ロードされた値が零か非零かに応じてセットされる。
【1360】
CLR−ビットをクリア
ニューモニック: CLR
オペコード: 0110
用法: CLR フラグ/レジスタ。
【1361】
CLR命令は、指定された内部フラグ、又はフラッシュメモリレジスタをクリアさせる。フラッシュメモリのケースでは、CLR命令はある時間を要するが、次の命令は、フラッシュメモリの消去が終了するまで引き延ばされる。クリアできるレジスタは、WE及びK2MXである。クリアできるフラッシュメモリは、R、M[C1]、Group1、及びGroup2である。Group1は、IST及びISWフラグである。それらがクリアされると、唯一の有効な上位レベルコマンドはSSI命令である。Group2は、MT、AM、K1及びK2レジスタである。Rは別個に消去される。なぜならば、RはTSTへの呼び出し毎に更新されるからである。また、Mは、インデックスメカニズムによって消去され、Mの個々の部分を更新することができる。また、対応したSET命令がある。
【1362】
DBR−デクリメント及びブランチ
ニューモニック: DBR
オペコード: 0001
用法: DBR カウンタ、オフセット。
【1363】
この命令は、簡単なループを構築するメカニズムを提供する。オペランドのハイビットは、C1のテストか、C2のテスト(2個のカウンタ)を選択する。指定されたカウンタが非零であるならば、カウンタはデクリメントされ、所定のオフセットの値(符号拡張)がPCに加算される。指定されたカウンタが零であるならば、カウンタはデクリメントされ、処理はPC+1で継続する。8エントリーのオフセットテーブルがアドレス011000000(プログラムメモリの64番目のエントリー)に格納される。オフセットの8ビットは符号付き数として取り扱われる。このようにして、0xFFは−1として扱われ、0x01は+1として取り扱われる。典型的に、その値はループで使用するため負である。
【1364】
JSI−サブルーチン間接ジャンプ
ニューモニック: JSI
オペコード: 01001
用法: JSI(Acc)。
【1365】
JSI命令は、アキュムレータの現在値に依存したサブルーチンへのジャンプを可能にさせる。この命令は、現在PCをスタックへプッシュし、PCに新しい値をロードする。新しいPCの上位8ビットはジャンプテーブル2からロードされ(オフセットはアキュムレータの下位5ビットによって与えられる。)、PCの最下位ビットは0にクリアされる。このようにして、全てのサブルーチンは偶数アドレスでスタートしなければならない。スタックは、6個の実行レベル(5回のサブルーチン深さ)を提供する。プログラマは、この深さを超えないこと、又は戻り値が上書きされること(スタックがラップするため)を保証する責任がある。
【1366】
JSR−サブルーチンジャンプ
ニューモニック: JSR
オペコード: 001
用法: JSR オフセット。
【1367】
JSR命令は、最も一般的なサブルーチン構造の用法を提供する。この命令は、現在PCをスタックへプッシュし、PCに新しい値をロードする。新しいPCの上位8ビットはアドレステーブル1から与えられ、テーブルへのオフセットは5ビットオペランド(32通りのアドレスを実現できる)によって与えられる。PCの最下位ビットは0にクリアされる。このようにして、全てのサブルーチンは偶数アドレスでスタートしなければならない。スタックは、6個の実行レベル(5回のサブルーチン深さ)を提供する。プログラマは、この深さを超えないこと、又は戻り値が上書きされること(スタックがラップするため)を保証する責任がある。
【1368】
LD−アキュムレータへのロード
ニューモニック: LD
オペコード: 1011
用法: LD 値。
【1369】
LD命令は、指定されたオペランドからアキュムレータにロードする。オペランドは、A、B、C、D、E、T、AM、MT、AE[C1]、H[C1]、B160[C1]、R[C1]、K[C1]、M[C1]、又はX[N4]のうちの一つである。また、Zフラグはこの演算中に、ロードされた値が零か非零かに応じてセットされる。
【1370】
LDK−定数のロード
ニューモニック: LDK
オペコード: 1110
用法: LDK 定数。
【1371】
LDK命令は、アキュムレータに指定された定数をロードする。定数は、HMAC−SHA1のために必要な32ビット値と、汎用処理のために最も有用な全て0及び全て1と、である。したがって、
0x00000000
0x36363636
0x5C5C5C5C
0xFFFFFFFF
又は、C1でインデックス付けされたh及びy定数テーブルからの選択肢がある。hとyの定数テーブルは、HMAC−SHA1に必要な32ビットの表形式の定数を保持する。また、Zフラグはこの演算中に、ロードされた値が零か非零かに応じてセットされる。
【1372】
LOG−論理演算
ニューモニック: LOG
オペコード: 1001
用法: LOG 演算 値。
【1373】
LOG命令は、アキュムレータと指定された値に対して、32ビットのビット論理演算を実行する。LOG命令によってサポートされる2個の演算は、AND及びORである。ビットNOT及びXOR演算は、XOR命令によってサポートされる。アキュムレータとAND演算又はOR演算される32ビット値は、A、B、C、D、E、T、MT及びAMのうちの一つである。また、Zフラグはこの演算中に、(アキュムレータにロードされる)得られた32ビット値が零か非零かに応じてセットされる。
【1374】
ROR−右回転
ニューモニック: ROR
オペコード: 1100
用法: ROR 値。
【1375】
ROR命令は、アキュムレータを設定されたビット数だけ右へ回転する方法を提供する。アキュムレータの最上部に現れるビット(ビット31になる)は、アキュムレータの前のビット0の値でもよく、又は(フラグ、又はシリアル入力コネクションのような)外部1ビットフラグからでもよい。回転して溢れたビットはシリアルコネクションから出力してもよく、又は外部フラグと結合してもよい。許容されるオペランドは、InBit、OutBit、LFSR、RLFSR、IST、ISW、MTRZ、1、2、27、及び31である。また、Zフラグはこの演算中に、(アキュムレータにロードされる)得られた32ビット値が零か非零かに応じてセットされる。最も簡単な形式では、ROR命令用のオペランドは、アキュムレータを回転させるビット位置数を示す1、2,27、31のうちの一つである。これらのオペランドの場合、外部入力又は出力はなく、アキュムレータのビットが単に右へ回転させられる。オペランドがIST、ISW及びMTRZの場合、適切なフラグがアキュムレータの最上位ビットへ転送される。アキュムレータの残りの部分は、1ビット位置だけ右へシフトされ(ビット31がビット30になる等)、アキュムレータの最下位ビットはシフトされて溢れる。オペランドがInBitである場合、次のシリアル入力ビットがアキュムレータの最上位ビットへ転送される。次に、InBitValidビットはクリアされる。クライアントから入力ビットが得られない場合、実行は入力ビットが現れるまで一時停止される。アキュムレータの残りの部分は、1ビット位置だけ右へシフトされ(ビット31がビット30になる等)、アキュムレータの最下位ビットはシフトされて溢れる。
【1376】
オペランドがOutBitである場合、アキュムレータは右へ1ビット位置だけシフトされる。ビット0からシフトで送り出されたビットはOutBitフラグに格納され、OutBitValidフラグがセットされる。したがって、それは、クライアントによる読み出しの準備が完了する。OutBitValidフラグが既にセットされている場合、命令の実行は、OutBitがクライアントによって読み出される(そして、OutBitValidフラグがクリアされる)まで引き延ばされる。ビット31へシフトされた新しいビットはガーベッジ(実際には、現在のInBitレジスタの値)であると考えられる。最後に、RB及びXBRオペランドは、LFSRと倍精度シフトレジスタの実装を可能にさせる。RBの場合、シフトで送り出されたビット(形式的にビット0)は、RTMPレジスタに書き込まれる。RTMPレジスタの現在のレジスタはアキュムレータの新しいビット31になる。数個の32ビット値に複数のROR
RBコマンドを実行すると、倍精度の右回転/シフトが実現される。XRBは、RBと同様に動作し、RTMPレジスタの現在値がアキュムレータオン新しいビット31になる。しかし、XRB命令の場合、形式的にビット0であることが分かっているビットは、(RB命令の用に)単純にRTMPを置き換えない。その代わりに、そのビットはXORとRTMP演算され、その結果がRTMPに格納される。これにより、認証プロトコルによって要求される長いLFSRを実現できる。
【1377】
RPL−ビット置換
ニューモニック: RPL
オペランド: 1101
用法: ROR 値。
【1378】
RPL命令は、上位レベルWRITEコマンドを認証チップに組み込むため設計された。この命令は、アキュムレータの上位16ビットを、(アクセスモード値に依存して)最終的にMアレイに書き込まれた値で置き換えることを予定している。この命令は、3個のオペランド:Init、MHI及びMLOをとる。Initオペランドは、全ての内部フラグをセットし、後続の処理のためALU内のRPLユニットを準備する。アキュムレータは内部AccessModeレジスタへ転送される。アキュムレータは、WRITEコマンドを実行する場合には、RPL
Initへの呼び出しの前に、AMフラッシュメモリ場所からロードされるべきであり、TSTコマンドを実行する場合には、0でロードされるべきである。アキュムレータはそのまま変化しない。MHI及びMLOオペランドは、M[C1]の上位16ビット又は下位16ビットが(常に)アキュムレータの上位16ビットとの比較に使用されるかどうかを参照する。実行されるMHI及びMLO命令の各々は、初期化されたAccessMode値からの引き続く2ビットを使用する。最初のMHI又はMLOの実行は最下位2ビットを使用し、次の実行はその次の2ビットを使用し、以下同様である。
【1379】
RTS−サブルーチンからのリターン
ニューモニック: RTS
オペコード: 01000
用法: RTS。
【1380】
RTS命令は、直前に実行されたJSR又はJSI命令の後の命令で実行を再開させる。したがって、サブルーチンからの復帰と呼ばれる。実際には、この命令は、セーブされたPCをスタックからプルし、1を加え、得られたアドレスから実行を再開する。6個の実行レベル(5回のサブルーチン)が提供されるが、JSR及びJSI命令の各々と、RTSを合わせることはプログラマの責任である。先行するJSR無しに実行されたRTSは、スタックからプルされたアドレスから実行を開始させる。
【1381】
SC−カウンタセット
ニューモニック: SC
オペコード: 0101
用法: SC カウンタ 値。
【1382】
SC命令はカウンタに特定の値をロードするため使用される。オペランドは、カウンタC1とC2のうちのどちらにロードするかを決める。ロードされるべき値は、2、3、4、7、10、15、19及び31のうちの一つである。カウンタ値は、ループ処理及びインデックス処理のため使用される。C1とC2の両方は、(DBR命令と組み合わされたとき)ループ構造のため使用されるが、一方、C1だけが倍精度変数の32ビット部分をインデックス付けするため使用できる。
【1383】
SET−ビットセット
ニューモニック: SET
オペコード: 0111
用法: SET フラグ/レジスタ。
【1384】
SET命令は、特定のフラグ又はフラッシュメモリの設定を可能にさせる。また、対応したCLR命令がある。WEオペランド及びK2MXオペランドの各々は、後の処理のため指定されたフラグをセットする。ISTオペランド及びISWオペランドの各々は、フラッシュメモリの適切なビットをセットし、一方、MTRオペランドはアキュムレータの現在値をMTRレジスタへ転送する。SET
Nxコマンドは、N1からN4に以下の定数をロードする。
【1385】
【表143】
Figure 2001523900
参照される各初期X[N]は、最適化されたSHA−1アルゴリズムのインデックスN1からN4に対する初期状態と一致することに注意すべきである。各インデックス値Nがデクリメントするとき、有効なX[N]がインクリメントする。なぜならば、X個のワードは、最上位ビットの方からメモリに格納されるからである。
【1386】
ST−アキュムレータを保存
ニューモニック: ST
オペコード: 1111
用法: ST ロケーション。
【1387】
ST命令は、アキュムレータの現在値を指定されたロケーションに格納する。ロケーションは、A、B、C、D、E、T、AM、MT、AE[C1]、H[C1]、B160[C1]、R[C1]、K[C1]、M[C1]、又はX[N4]のうちの一つである。X[N4]オペランドはN4インデックスを進める副作用がある。格納が行われた後、N4はXアレイの次の要素を指示する。N4は1ずつデクリメントされるが、Xアレイはハイからローへ並べられているので、インデックスをデクリメントすると、アレイ内の次の要素へ進む。格納先がフラッシュメモリである場合、ST命令の効果は、アキュムレータ内のビットに対応したフラッシュメモリのビットがセットされることである。アキュムレータからの正確な値が格納されることを保証するために、適切なメモリロケーションを先に消去するCLR命令を確実に使用すべきである。
【1388】
TBR−テスト及びブランチ
ニューモニック: TBR
オペコード: 0000
用法: TBR 値 インデックス。
【1389】
テスト及びブランチ命令は、アキュムレータが零か非零かをテストし、アキュムレータの現在状態がテスト相手の状態と一致しているならば、所与のアドレスへ分岐する。ZフラグがTRBテストと一致するならば、PCを9ビット値で置き換え、ここで、bit0=0であり、上位8ビットはMUから与えられる。そうでなければ、PCを1だけインクリメントする。値オペランドは0又は1である。0は、アキュムレータが零であることについてのテストであることを示す。1は、アキュムレータが非零であることについてのテストであることを示す。インデックスオペランドは、テストが成功したときに実行をジャンプさせる場所を示す。オペランドインデックスの残りの3ビットはジャンプテーブル1の最下位8エントリーをインデックス付けする。上位8ビットはテーブルから取り出され、最下位ビット(ビット0)は0にクリアされる。CMDはリセット時に0にクリアされる。0はTBR0として翻訳され、これは、アキュムレータ=0である場合に、アドレスオフセット0に格納されたアドレスへ分岐することを意味する。アキュムレータ及びZフラグもリセット時にクリアされるので、テストが真であり、正味の効果はジャンプテーブルの0番目のエントリーに格納されたアドレスへのジャンプである。
【1390】
XOR−排他的論理和
ニューモニック: XOR
オペコード: 1010
用法: XOR 値。
【1391】
XOR演算は、アキュムレータとの32ビットのビットXORを実行し、結果をアキュムレータに格納する。オペランドは、A、B、C、D、E、T、AM、MT、X[N1]、X[N2]、X[N3]又はX[N4]のうちの一つである。また、Zフラグは、結果に応じて(即ち、アキュムレータにロードされた値に応じて)、この演算中にセットされる。ビットNOT演算は、(LDK命令を用いて)アキュムレータを0xFFFFFFFFとXOR演算することによって実行される。X[N]オペランドは、(演算後に)適切なインデックスを次の値へ進める副作用がある。XORが行われた後、インデックスはXアレイの次の要素を指示する。N4は、ST
X[N4]命令によって進められる。インデックスは1ずつデクリメントされるが、Xアレイはハイからローへ並べられているので、インデックスをデクリメントすると、アレイ内の次の要素へ進む。
【1392】
プログラミングモード検出ユニット
プログラミングモード検出ユニットは入力クロック電圧を監視する。クロック電圧が特定の値であるならば、消去タンパー検出ラインはトリガーされ、全ての鍵、プログラムコード、秘密情報等を消去し、プログラムモードに入る。プログラミングモード検出ユニットは通常のCMOSを用いて実装可能である。なぜならば、鍵はこのユニットを通過しないからである。このユニットはノンフラッシングCMOSで実現しなくてもよい。プログラミングモード検出ユニットをタンパー検出ラインで覆うべき特別の必要性はない。なぜならば、攻撃者は、CLR入力によってチップをプログラミングモードに移すことができるからである。プログラミングモードへ入るための信号として、消去タンパー検出ラインを使用することは、攻撃者が攻撃の一部としてプログラミングモードを使用したい場合に、消去タンパー検出ラインをアクティブにし、且つ機能させなければならないことを意味する。これは、認証チップへの攻撃を非常に困難にさせる。
【1393】
雑音発生器
雑音発生器は通常のCMOSで実現できる。なぜならば、鍵はこのユニットを通らないからである。このユニットはノンフラッシングCMOSで実現しなくてもよい。しかし、雑音発生器は、両方のタンパー検出及び保護ラインで保護されるべきであり、この結果として、攻撃者がこのユニットを改ざん使用とする場合、チップは、リセットするか、又は全ての秘密情報をクリアする。その上、LFSRのビットは、それらが改ざんされていないことを保証するため検証されるべきである(即ち、パリティチェック)。パリティチェックが失敗した場合、消去タンパー検出ラインがトリガーされる。最後に、雑音発生器の64ビット全部が単一ビットにOR演算される。このビットが0であるならば、消去タンパー検出ラインがトリガーされる。なぜならば、0はLFSRの無効状態だからである。OKビットセットアップを使用することは意味がない。なぜならば、雑音発生器はタンパー検出及び防止回路だけによって使用されるからである。
【1394】
状態機械
状態機械は、CPUの二つの動作サイクルを生成し、長いコマンドオペレーション中に引き延ばしを行い、オペレーティングサイクル中にオペコード及びオペランドを記憶する。状態機械は通常のCMOSで実現可能であり、その理由は、鍵がこのユニットを通らないからである。このユニットはノンフラッシングCMOSで実現しなくてもよい。しかし、オペコード/オペランドのラッチは、パリティチェックされるべきである。状態機械に格納されるロジック及びレジスタは、両方のタンパー検出ラインによって覆われるべきで
ある。これは、実行される命令が攻撃者によって変更されないことを保証する。
【1395】
認証チップは、汎用CPUの高速性及びスループットを要求しない。それは、認証プロトコルを実行できる速さで動作すればよく、それ以上に高速である必要はない。分岐制御を最適化し、又は次のオペコードをフェッチしている間にオペコードを実行する専用回路(及び、それに関連した全ての複雑さ)を具備するよりは、状態機械は、単純化した考え方を採用する。これは、設計時間を最小限に抑え、実装にエラーが起こる可能性を低減することに役立つ。
【1396】
状態機械の一般的な動作は、以下のサイクルの組を生成することである:
サイクル0:フェッチサイクル。これは、オペコードがプログラムメモリからフェッチされ、フェッチされたオペコードから実効アドレスが生成されるサイクルである;
サイクル1:実行サイクルこれは、オペランドが(サイクル0で)生成された実効アドレスによってルックアップされ(かもしれない)、オペレーション自体が実行されるサイクルである。
【1397】
正常な条件下で、状態機械は、サイクル:0、1、0、1、0、1...を生成する。しかし、あるケースでは、状態機械は、引き延ばしを行い、引き延ばし条件が終了するまで、各クロックチックでサイクル0を生成する。引き延ばし条件には、フラッシュサイクルの消去サイクル待ち、クライアントのシリアルデータの読み書きの待機、又は(タンパーリングによる)無効オペコード等が含まれる。フラッシュメモリがそのとき消去中であるならば、次の命令は、フラッシュメモリが消去され尽くすまで実行できない。これは、メモリユニットから送られるWait信号によって判定される。Wait=1であるならば、状態機械はサイクル0だけを生成する。シリアルI/O動作を原因とする引き延ばしには、2通りのケースがある:
オペコードがROR OutBitであり、既にOutBitValid=1であるケース。これは、現在オペレーションは、ビットをクライアントへ出力することを要求するが、クライアントは最後のビットを未だ読み出していないケースである;
オペレーションがROR InBitであり、InBitValid=0であるケース。これは、現在オペレーションがクライアントからのビットの読み出しを要求するが、クライアントが未だそのビットを供給していないケースである。
【1398】
両方のケースで、状態機械は、引き延ばし条件が終了するまで引き延ばしをしなければならない。したがって、次の「サイクル」は、古いサイクル又は前のサイクルと、CMD、Wait、OutBitValid、及びInBitValidの現在値と、に依存する。WaitはMUに由来し、OutBitValid及びInBitValidはI/Oユニットに由来する。サイクルが0であるとき、8ビットオペコードはメモリユニットからフェッチされ、8ビットCMDレジスタに収容される。CMDレジスタの書き込みイネーブルは、−サイクルである。このユニットからの二つの出力は、サイクルとCMDである。両方の値は、認証チップ内の他の全ての処理ユニットへ渡される。1ビットのサイクル値は、各ユニットにフェッチ又は実行サイクルが行われているかどうかを報せ、一方、8ビットのCMDは、各ユニットが特定のユニットに関連したコマンドのための適切な動作を行えるようにする。
【1399】
図187は、状態機械のコンポーネント間のデータフロー及び関係を示す図であり、同図では、
【1400】
【表144】
Figure 2001523900
である。
【1401】
Old及びCMDは、共にリセットで0にクリアされる。この結果によって第1のサイクルは1であり、これは、0CMDを実行させる。0はTBR
0として翻訳され、即ち、Accmulator=0ならば、アドレスオフセット0に格納されたアドレスへ分岐する。アキュムレータもリセットで0にクリアされるので、テストは真であり、正味の効果はジャンプテーブルの0番目のエントリーに格納されたアドレスへのジャンプである。2個のVALユニットがそれらを通過する値を検証するため設計される。各VALは、両方のタンパー防止及び検出ラインに接続されたOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー防止及び検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。VALの場合、チップが改ざんされたならば、実効サイクルは常に0である。このようにして、決してサイクル1にならないので、プログラムコードは実行されない。Oldが改ざんされたかどうかを検査する必要はない。なぜならば、攻撃者がOld状態を止めるならば、チップはそれ以上命令を実行しないからである。VALの場合、実効8ビットCMD値は、チップ改ざんされたならば、常に0であり、これは、TBR
0命令である。これは、あらゆるプログラムコードの実効を停止する。VALは、CMDが改ざんされていないことを保証するため、CMDからのビットにパリティチェックを行う。パリティチェックが失敗したならば、消去タンパー検出ラインがトリガーされる。
【1402】
I/Oユニット
I/Oユニットは外界とシリアル通信する。認証チップは、スレーブシリアル装置として動作し、クライアントからのシリアルデータを受け取り、コマンドを処理し、得られたデータをクライアントへシリアル送信する。I/Oユニットは通常のCMOSで実現できる。なぜならば、鍵がこのユニットを通らないからである。このユニットはノンフラッシングCMOSで実現しなくてもよい。更に、ラッチはパリティチェックしなくてもよい。なぜならば、攻撃者にとってそれらを破壊又は変更する利益がないからである。I/Oユニットは、タンパー検出ラインの何れかが破断された場合、0を出力し0を入力する。これは、攻撃者がリセット及び/又は消去回路を動作禁止状態にした場合に限り有効になる。なぜならば、タンパー検出ラインの何れかを破断することは、リセット又は全フラッシュメモリの消去を生じるからである。
【1403】
InBit、InBitValid、OutBit、及びOutBitValidの1ビットレジスタは、クライアント(システム)と認証チップとの間の通信のため使用される。InBit及びInBitValidは、クライアントがコマンド及びデータを認証チップへ送る手段を提供する。OutBit及びOutBitValidは、クライアントが認証チップから情報を得る手段を提供する。チップがリセットされたとき、InBitValid及びOutBitValidは共にクリアされる。クライアントは、同時に1ビットずつ、コマンド及びパラメータビットを認証チップへ送る。認証チップの観点では:
InBitからの読み出しは、InBitValidがクリアされている間はハングする。InBitValidは、クライアントが次の入力ビットをInBitに書き込むまでクリアされたままである。InBitの読み出しはInBitValidビットをクリアし、次のInBitをクライアントから読み出せるようになる。クライアントは、InBitValidビットがクリアされるまでビットを認証チップに書き込めない;
OutBitへの書き込みは、OutBitValidがセットされている間はハングする。OutBitValidは、クライアントがOutBitからビットを読み出すまでセットされたままである。OutBitの書き込みはOutBitValidビットをセットし、次のOutBitをクライアントが読み出せるようにする。クライアントは、OutBitValidビットがセットされるまで認証チップからビットを読み出せない。
【1404】
実際のコマンドの引き延ばしは、状態機械によって管理されるが、種々の通信レジスタ及び通信回路がI/Oユニットに存在する。
【1405】
図188はI/Oユニットのコンポーネント間のデータフロー及び関係を示す図である。
【1406】
【表145】
Figure 2001523900
シリアルI/Oユニットは、データピンを使って外界と外部的に通信する回路を含む。InBitUsed制御信号は、所定のクロックサイクル中にInBitを使用する何れかのユニットによってセットされるべきである(サイクルのあらゆる状態になり得る)。2個のVALユニットは、タンパー防止及び検出回路に接続された検証ユニットであり、各VALはOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー防止及び検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。
【1407】
VALの場合、チップが改ざんされたならば、チップからの実効ビット出力は常に0である。このようにして、攻撃者は有用な出力を生成できない。VALの場合、チップ改ざんされたならば、チップへの実効ビット入力は常に0である。このようにして、攻撃者は有用な入力を選択できない。I/Oユニットのレジスタを検証する必要はない。なぜならば、攻撃者はそれらを破壊又は変更することによる利益がないからである。
【1408】
ALU
図189は、算術論理ユニットの概略ブロック図である。算術論理ユニット(ALU)は、32ビットAcc(アキュムレータ)レジスタと、簡単な算術及び論理演算用の回路を含む。ALU及び全てのサブユニットは、ノンフラッシングCMOSで実現されるべきである。なぜならば、鍵がその中を通るからである。その上、アキュムレータはパリティチェックされる。ALUに収容されたロジック及びレジスタは、両方のタンパー検出ラインによってカバーされる。これは、鍵及び中間計算値が攻撃者によって変更されないことを保証する。1ビットのZレジスタは、アキュムレータの零性を格納する。Z及びアキュムレータレジスタの両方は、リセット後にクリアされる。Zレジスタはアキュムレータが更新されたときに更新され、アキュムレータは、LD、LDK、LOG、XOR、ROR、RPL及びADDの何れかのコマンドに対して更新される。各算術及び論理ブロックは、二つの32ビット入力、即ち、アキュムレータの現在値と、MUの現在32ビット出力と、に基づいて動作する。ここで、
【1409】
【表146】
Figure 2001523900
である。
【1410】
Acc及びZのWriteEnablesは、(Logicにより)CMD及びサイクルを考慮するので、これらの2ビットは、出力を選択するためにマルチプレクサMXにより要求されない。MXの出力選択は、CMDのビット6−3だけを要求するので、結果としてより簡単である。
【1411】
【表147】
Figure 2001523900
2個のVALユニットは、タンパー防止及び検出ラインに接続された検証ユニットであり、各VALはOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー防止及び検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。VALの場合、チップが改ざんされたならば、アキュムレータから出力された実効ビットは常に0である。これは、攻撃者がアキュムレータに関する何かを処理することを妨げる。VALはアキュムレータに対するパリティチェックを実行し、チェックが失敗したならば、消去タンパー検出ラインをセットする。VALの場合、アキュムレータの実効Z状態は、チップ改ざんされたならば、常に真である。このようにして、攻撃者はループ構造を作成できない。ALUの残りの機能ブロックは後述する。すべてがフラッシュしないCMOSで実現されるべきである。
【1412】
【表148】
Figure 2001523900
RPL
図190はRPLユニットの概略ブロック図である。RPLユニットはALU内のコンポーネントである。これは、認証チップのRPL
CMP機能を実現するため設計されている。RPL CMPコマンドは、AccessModeの値に基づいて、フラッシュメモリMへの安全な書き込みに使用するため特に設計された。RPLユニットは、シフトパルス毎に2ビット右シフトを実行するAMT(AccessModeTemp)と呼ばれる32ビットシフトレジスタと、WR擬似コードのEqEncounteredフラグ及びDecEncounteredフラグに直接基づいているEE及びDEと呼ばれる1ビットレジスタと、を含む。全てのレジスタはリセット後に0にクリアされる。AMTは、PRL
INITコマンドを用いて(アキュムレータを介して)32ビットAM値がロードされ、EE及びDEは、RPL MHIへの呼び出し及びRPL MLOへの呼び出しを用いて汎用書き込みアルゴリズムに従ってセットされる。EQブロック及びLTブロックはWRコマンド擬似コードに記載されている通りの機能を備えている。EQブロックは、2個の16ビット入力がビット一致であるならば、1を出力し、ビット一致でなければ、0を出力する。LTブロックは、アキュムレータから入力された上位16ビットがMXによってMUから選択された16ビット値よりも小さい場合に、1を出力する。比較は符号無しである。オペランドのビットパターンは組み合わせロジックがより簡単化されるように特に選択される。オペランドのビットパターンを利用するので、そのパターンをもう一度列挙する。
【1413】
【表149】
Figure 2001523900
MHI及びMLOは、ハイビットがセットされているので、Initのビットパターンと簡単に区別することができ、最下位ビットはMHIとMLOを区別するために使用できる。EEフラグ及びDEフラグは、RPLコマンドが発行されるたびに更新される。Initステージのため、2個の値を設定し、MHI及びMLOのため、EE及びDEの値を適切に更新する。したがって、EE及びDEのためのWriteEnableは以下の通りである。
【1414】
【表150】
Figure 2001523900
32ビットのAMTレジスタに関して、このレジスタには、RPL Initコマンドのときに、(MUから読み出された)AMの内容をロードし、RPL MLOコマンド及びRPL
MHIコマンドのためにAMTレジスタを右へ2ビット位置シフトさせる。これは、RPLオペランドの最上位ビット(CMD)に対して簡単にテストできる。したがって、AMTレジスタのためのWriteEnable及びShiftEnableは、以下の通りである。
【1415】
【表151】
Figure 2001523900
Logicからの出力は、マルチプレクサMXへの入力としても有用である。なぜならば、それは、現在の2個のアクセスモードビット、又は00(これは、アクセスモードRWを表すので、DE及びEEレジスタをリセットさせる)の何れかを通すために使用されるからである。したがって、MXは次の通りである。
【1416】
【表152】
Figure 2001523900
RPLロジックは、アキュムレータの上位16ビットだけを置換する。下位16ビットはそのまま通過する。しかし、(M[0−15]のうちの一つに対応する)MUからの32ビットのうちの、上位又は下位16ビットだけが使用される。したがって、MXはMHIとMLOを区別するためにCMDをテストする。
【1417】
【表153】
Figure 2001523900
DEレジスタ及びEEレジスタを更新するロジックは、WRコマンドの擬似コードと一致する。AccessMode値が00(=RW、これはRPL
INIT中に出現する)である入力は、DEとEEの両方に0(正しい初期値)をロードさせることに注意する必要がある。EEはLogicからの結果がロードされ、DEはLogicからの結果がロードされる。
【1418】
【表154】
Figure 2001523900
アキュムレータの上位16ビットはMへ書き込まれるべき値によって置き換えられる。したがって、LogicはWRコマンド擬似コードからのWEフラグと一致する。
【1419】
【表155】
Figure 2001523900
Logicからの出力は、マルチプレクサMXによる、アキュムレータからの元の16ビットと、M[0−15]からの値との間の選択を駆動するためそのまま使用される。アキュムレータからの16ビットが選択された場合(アキュムレータは変更されないで残される場合)、これは、アキュムレータ値がM[n]に書き込まれることを意味する。Mからの16ビット値が選択された場合(アキュムレータの上位16ビットを変更する場合)、これは、Mの16ビット値が変更されないことを意味する。したがって、MXは以下の形式をとる。
【1420】
【表156】
Figure 2001523900
AMTをパリティチェックする意味はない。なぜならば、攻撃者はMXへの入力を強制的に0にする方がよいからである(これにより、攻撃者は任意の値をMに書き込めるようになる)。しかし、攻撃者がチップ(全てタンパー検出テスト及び回路を含む)をレーザー切断する手間を選ぶならば、MXの入力を固定することにより制限選択テキスト攻撃を可能にさせるよりも優れたターゲットがある。
【1421】
ROR
図191は、ALUのRORブロックの概略ブロック図である。RORユニットは、ALU内のコンポーネントである。RORユニットは、認証チップのROR機能を実現するため設計される。RTMPという名前の1ビットレジスタは、RORユニットに格納される。RTMPはリセットで0にクリアされ、ROR
RBコマンド及びROR XRBコマンド中にセットされる。RTMPレジスタは、任意のタップ構造をもつ線形フィードバックシフトレジスタの実装を可能にさせる。XORブロックは、2個の1ビット入力、1ビット出力のXORである。RORnは、ブロックが便宜上示されているが、実際には、マルチプレクサMXに配線接続される。なぜならば、各ブロックは、単に、右へNビットシフトされた、32ビットの書き換えである。3個全てのマルチプレクサ(MX、MX及びMX)は8ビットのCMD値に依存する。しかし、RORオペコードのビットパターンはロジック最適化の目的のために並べられる。オペランドのビットパターンを利用するので、このパターンを再度列挙する。
【1422】
【表157】
Figure 2001523900
Logicは、RTMPにWriteEnable信号を与えるために使用される。RTMPレジスタは、ROR
RB及びROR XORコマンドの間だけ書き込まれるべきである。Logicは、InBitが使われたときならいつでも、制御信号を与えるために使用される。2個の組み合わせロジックブロックは次の通りである。
【1423】
【表158】
Figure 2001523900
マルチプレクサMXを用いて、RTMPに格納されるビットを選択する。Logicは、予めRBとXRBの一方へのCMD入力の範囲を限定する。したがって、これらの二つを区別するため、CMDをテストするだけでよい。以下の表は、CMDとMXから出力される値との間の関係を表現する。
【1424】
【表159】
Figure 2001523900
マルチプレクサMXを用いて、アキュムレータ入力のビット0を置換する予定の入力ビットを選択する。ここでは、少しの量の最適化を行う。なぜならば、個別の入力ビットは、典型的に、特定のオペランドに関係するからである。以下御表は、CMD3−0とMXから出力される値との間の関係を表現する。
【1425】
【表160】
Figure 2001523900
最後のマルチプレクサMXは32ビット値の最終的な回転を行う。再度、CMDオペランドのビットパターンが利用される。
【1426】
【表161】
Figure 2001523900
MinTicksユニット
図192は、MinTicksユニットのコンポーネント間のデータフロー及び関係を示す図である。MinTicksユニットは、認証チップ内の鍵付きオペレーションの間のプログラマブル最小遅延(カウントダウンを利用)の役目を担う。MinTicksユニットに収容されるロジック及びレジスタは、両方のタンパー検出ラインによってカバーする必要がある。これは、攻撃者が鍵付きの関数への呼び出しの間の時間を変更できないことを保証する。殆ど全てのMinTicksユニットは通常のCMOSで実現可能である。なぜならば、鍵は、殆どのこのユニットを通らないからである。しかし、アキュムレータは、SET
MTR命令で使用される。その結果として、この回路のこの小さい区域は、ノンフラッシングCMOSで実現しなければならない。MinTicksユニットの残りの部分はノンフラッシングCMOSで実現しなくてもよい。しかし、MTRZラッチ(以下を参照)はパリティチェックしなければならない。
【1427】
MinTicksユニットは、MTR(MinTicks残量(MinTicksRemaining))という名前の32ビットレジスタを含む。MTRレジスタは、次の鍵付き関数を読み出せるまでの残りクロックチック数を格納する。各サイクルに、MTRの値は、その値が0になるまで1ずつ減少させられる。MTRが0に達すると、それ以上減少しない。MTRZ(MinTicks残量レジスタ零MinTicksRegisterZero)という名前の補助的な1ビットレジスタは、MTRレジスタの現在の零性を反映する。MTRZレジスタが0である場合、MTRZは1であり、MTRZレジスタが0ではない場合、MTRZは0である。MTRレジスタはリセットによってクリアされ、SET
MTRコマンドを用いて新しいカウントにセットされ、アキュムレータの現在値をMTRレジスタへ転送する。
【1428】
ここで、
【1429】
【表162】
Figure 2001523900
であり、且つ
【1430】
【表163】
Figure 2001523900
である。
【1431】
サイクルはMTR及びMTRZのWriteEnableに接続されるので、これらのレジスタは実行サイクル中に、即ち、サイクル=1であるときに限り更新される。2個のVALユニットは、タンパー防止及び検出ラインに接続された検証ユニットであり、各VALはOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。VALの場合、MTRからの実効出力は0であり、これは、デクリメンターユニットからの出力が全て1であることを示し、これにより、MTRZは0のままであり、攻撃者が鍵付き関数を使用することは阻止される。また、VALは、MTRレジスタのパリティを検証する。パリティチェックが失敗した場合、消去タンパー検出ラインがトリガーされる。VALの場合、チップ改ざんされたならば、MTRZからの実効出力は0であり、MinTicksRemainingレジスタは未だ0に到達していないことを示し、これにより、攻撃者が鍵付き関数を使用することは阻止される。
【1432】
プログラムカウントユニット
図192は、プログラムカウントユニットのブロック図である。プログラムカウントユニット(PCU)は、9ビットのPC(プログラムカウンタ)と、分岐及びサブルーチン制御用のロジックと、を含む。プログラムカウントユニットは、通常のCMOSで実現できる。なぜならば、鍵はこのユニットを通らないからである。このユニットはノンフラッシングCMOSで実現しなくてもよい。しかし、ラッチはパリティチェックされる。その上、メモリユニットに収容されたロジック及びレジスタは、PCが攻撃者によって変更できないことを保証するため、両方のタンパー検出ラインで覆う必要がある。PCは実際には6レベル×9ビットのPCA(PCアレイ)として実装され、3ビットのSP(スタックポインタ)レジスタによってインデックス付けされる。PC及びSPレジスタはリセットで全てクリアされ、オペコードに従ってプログラム制御のフロー中に更新される。PCの現在値は、サイクル0(フェッチサイクル)の間にMUへ出力される。PCは、実行されるコマンドに基づいてサイクル1(実行サイクル)の間に更新される。殆どのケースで、PCは単に1ずつ増加する。しかし、(サブルーチン、又はその他のジャンプの形式により)分岐が現れたとき、PCはあ多らしい値で置き換えられる。新しいPC値を計算するメカニズムは、処理されるオペコードに依存する。
【1433】
ADDブロックはモジュロー2の単純なアダーである。入力は、PC値と、1(PCを1ずつ増加するため)、又は9ビットオフセット(ハイビットがセットされ、下位8ビットはMUから)の何れか一方である。“+1”ブロックは、3ビット入力を使用し、1ずつ増加する(ラップ付き)。“−1”ブロックは、3ビット入力を使用し、1ずつ減少する(ラップ付き)。種々のPC制御の形式は以下の通りである。
【1434】
【表164】
Figure 2001523900
JSRとJSI(ACC)に対して同じ動作がとられるので、Logicでそのケースを具体的に検出する。同じ考え方によって、LogicでJSI
RTSを具体的にテストする。
【1435】
【表165】
Figure 2001523900
PCを更新するとき、PCが完全に新しい項目によって置き換えられるべきか、又はアダーの結果によって置き換えられるべきかを決定しなければならない。これは、JSR及びJSI(ACC)の場合に成り立つが、テストビットがアキュムレータの状態と一致する限り、TBRにも成り立つ。TBR以外の全ては、Logicによってテストされるので、LogicはLogicの出力を入力として含む。Logicからの出力は、次に、新しいPC値を得るため、マルチプレクサMXによって使用される。
【1436】
【表166】
Figure 2001523900
【1437】
【表167】
Figure 2001523900
9ビットアダーへの入力は、1ずつ増加するか(普通のケース)、又はMUから読み出されたオフセットを加算するか(DBRコマンド)に依存する。Logicはtestを生成する。Logicからの出力は、これに応じてマルチプレクサMXによってそのまま使用される。
【1438】
【表168】
Figure 2001523900
【1439】
【表169】
Figure 2001523900
最後に、どのPCエントリーを使用するかについての選択は、SPの現在値に依存する。サブルーチンに入るとき、SPインデックス値はインクリメントされ、サブルーチンから戻るとき、SPインデックス値はデクリメントされる。全てのケースで、且つコマンドをフェッチしたいとき(サイクル0)、SPの現在値を使用する。Logicは、サブルーチンに入るときを通知し、Logicはサブルーチンから戻るときを通知する。マルチプレクサ選択は、したがって、以下のように定義される。
【1440】
【表170】
Figure 2001523900
2個のVALユニットは、タンパー防止及び検出ラインに接続された検証ユニットであり、各VALはOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。両方のVALユニットは、データビットをパリティチェックし、それらが有効であることを保証する。パリティチェックが失敗した場合、消去タンパー検出ラインがトリガーされる。VALの場合、SPレジスタからの実効出力は、チップが改ざんされたならば、常に0である。これにより、攻撃者がサブルーチンを実行することは阻止される。VALの場合、実効PC出力は、チップが改ざんされたならば、常に0である。これにより、攻撃者がプログラムコードを実行することは阻止される。
【1441】
メモリユニット
メモリユニット(MU)は、認証チップの内部メモリを含む。内部メモリは、9ビットのアドレスによってアドレス指定され、9ビットのアドレスはアドレス生成器ユニットから渡される。メモリユニットは、アドレスに応じて、適切な32ビット及び8ビット値を出力する。また、メモリユニットは、特殊なプログラミングモードを担い、これにより、プログラムがフラッシュメモリに入力される。メモリユニット全体の内容は、タンパーリングから保護されるべきである。したがって、メモリユニットに収容されたロジック及びレジスタは、両方のタンパー検出ラインによって覆われるべきである。これは、プログラムコード、鍵、及び中間データ値が攻撃者によって変更できないことを保証する。全てのフラッシュメモリは、マルチステートであり、無効電圧で読み出されたときにチェックしなければならない。32ビットRAMもパリティチェックされるべきである。メモリユニットを通る32ビットデータパスは、ノンフラッシングCMOSで実現できる。なぜならば、鍵はそのデータパスに沿って送られるからである。8ビットデータパスは、通常のCMOSで実現できる。なぜならば、鍵はそのデータパスに沿って送られないからである。
【1442】
定数
定数メモリ領域のアドレスレンジは、000000000−000001111である。したがって、レンジは00000xxxxである。しかし、次の48アドレスが予備であるならば、これは復号化中に利用できる。定数メモリ領域は、アドレスの上位3ビット(Adr8−6=000)によって選択され、下位4ビットは組み合わせロジックへ供給され、その4ビットは、以下の通り、32ビット出力値にマッピングされる。
【1443】
【表171】
Figure 2001523900
RAM
32エントリーの32ビットRAMのアドレス空間は、001000000−001011111である。したがって、レンジは0010xxxxxである。RAMメモリ領域は、したがって、アドレスの上位4ビット(Adr8−5=0010)によって選択され、下位5ビットはアドレス指定する値を選択する。連続的な32エントリーのアドレス空間が与えられた場合、RAMは、単純な32×32ビットRAMとして簡単に実現できる。CPUは、特殊な方法でレンジ00000−11111からの各アドレスを取り扱うが、RAMアドレスデコーダ自体は、アドレスを特別に取り扱うわけではない。全てのRAM値はリセットで0にクリアされるが、プログラムコードはこのことを当てにしてはならない。
【1444】
フラッシュメモリ−変数
32ビット幅フラッシュメモリのアドレス空間は、001100000−001111111である。したがって、レンジは0011xxxxxである。フラッシュメモリ領域は、したがって、アドレスの上位4ビット(Adr8−5=0111)によって選択され、下位5ビットはアドレス指定する値を選択する。フラッシュメモリは特別な消去が必要である。フラッシュメモリの消去を完了するためにはかなり長い時間を要する。したがって、Wait信号は、CLRコマンドの受信時にフラッシュコントローラの内部にセットされ、要求されたメモリが消去されたときに限りクリアされる。内部的に、特定のメモリレンジの消去ラインは一つに結合され、その結果として、以下の表に示されるように、2ビットだけが要求される。
【1445】
【表172】
Figure 2001523900
フラッシュ値はリセットによって変更されないが、プログラムコードは、ガーベッジ以外では、(製造後に)フラッシュの初期値をとるべきではない。フラッシュアドレスを利用するオペレーションは、LD、ST、ADD、RPL、ROR、CLR及びSETである。全てのケースで、オペランド及びメモリ配置は、アドレス生成及び復号化を最小限に抑えるため、密接に連結される。フラッシュメモリの全変数区域は、プログラミングモードへ入ったとき、及び明確な物理的攻撃を検出したときに消去される。
【1446】
フラッシュメモリ−プログラム
384エントリーの8ビット幅プログラムフラッシュメモリのアドレスレンジは、010000000−111111111である。したがって、レンジは01xxxxxxx−11xxxxxxxである。ROMスタートアドレスとアドレスレンジが与えられるならば、復号化は簡単である。CPUはアドレスレンジの一部を特殊は方法で取り扱うが、アドレスデコーダ自体はアドレスを特別に取り扱うわけではない。フラッシュ値はリセットによって変わらず、プログラムモードへ入ることによってのみクリアされる。製造後、フラッシュ内容はガーベッジであると見なされるべきである。384バイトは、プログラミングモードにあるときに限り、状態機械によってロードされる。
【1447】
MUのブロック図
図193は、メモリユニットのブロック図である。図示されたロジックは、32ビットデータ及び8ビットデータが別々のコマンドによって要求され、その結果として、復号化のために必要なビットが少なくなるということを利用する。図示されるように、32ビット出力及び8ビット出力は常に生成される。認証チップの残りの適切なコンポーネントは、単に、実行されるコマンドに依存して、32ビット値又は8ビット値を使用する。マルチプレクサMXは、真理表定数、RAM、及びフラッシュメモリの選択から出力された32ビットを選択する。3出力の間で選択するためには、2ビットだけが、即ち、Adr及びAdrが要求される。このようにして、MXの形式は以下の通りである。
【1448】
【表173】
Figure 2001523900
32ビットフラッシュメモリの特定の部分を消去するロジックはLogicによって満たされる。消去部分制御信号は、サイクル=1の間に、メモリの正しい部分へのCLRコマンド中に限りセットされるべきである。単一のCLRコマンドがあるレンジのフラッシュメモリをクリアすることに注意する必要がある。AdrはCLRのためのアドレスレンジとして十分である。なぜならば、レンジは、有効オペランドに対して常にフラッシュの範囲内に治まり、有効ではないオペランドに対して0である。32ビット幅フラッシュメモリのレンジ全体は、(攻撃者によって、又は意図的にプログラミングモードに入ることによって)消去検出ラインがトリガーされたときに消去される。
【1449】
【表174】
Figure 2001523900
フラッシュメモリの特定の部分に書き込むためのロジックは、Logicによって満たされる。WriteEnable制御信号は、サイクル=1の間に、フラッシュメモリレンジへの適切なSTコマンド中に限りセットされるべきである。Adr6−5だけのテストが許容される。なぜならば、STコマンドだけがフラッシュまたはRAMへ有効に書き込むからである(Adr6−5が00であるならば、K2MXは0でなければならない。)。
【1450】
【表175】
Figure 2001523900
WE(WriteEnable)フラグは、SET WEコマンドとCLR WEコマンドの実行中にセットされる。Logicはこれらの二つのケースをテストする。WEに書き込まれる実際のビットはCMDである。
【1451】
【表176】
Figure 2001523900
メモリのRAM領域へ書き込むためのロジックは、Logicによって満たされる。WriteEnable制御信号は、サイクル=1の間に、RAMメモリレンジへの適切なSTコマンド中に限りセットされる。しかし、これは、X[N]への書き込みが許可されるかどうかを管理するWEフラグによって改ざんされる。X[N]レンジはRAMの上位半分であり、これは、Adrを使用してテストできる。RAMのフルアドレスレンジとしてAdr6−5だけをテストすることが容認できる。なぜならば、STコマンドはフラッシュ又はRAMだけに書き込むからである。
【1452】
【表177】
Figure 2001523900
3個のVALユニットは、タンパー防止及び検出ラインに接続された検証ユニットであり、各VALはOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー防止及び検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。VALユニットは、データビットをパリティチェックし、それらが有効であることを保証する。VAL及びVALは、各データビットの状態をチェックすることにより検証し、VALはパリティチェックを実行する。妥当性テストが失敗したとき、消去タンパー検出ラインがトリガーされる。VALの場合、プログラムフラッシュからの実効出力は、チップが改ざんされているならば、常に0である(TBR
0として解釈される)。これは攻撃者が有用な命令を実行することを阻止する。VALの場合、実効32ビットは、チップが改ざんされたならば、常に0である。これにより、攻撃者は、鍵、又は中間記憶値を入手できない。8ビットフラッシュメモリは、プログラムコード、ジャンプテーブル、及びその他のプログラム情報を保持するため使用される。384バイトのプログラムフラッシュメモリは、(アドレスレンジ01xxxxxxx−11xxxxxxxを使用して)完全な9ビットのアドレスにより選択される。プログラムフラッシュメモリは、(攻撃者によって、又はプログラミングモード検出ユニットが原因でプログラミングモードに入ることによって)消去検出ラインがトリガーされたときに限り消去される。消去検出ラインがトリガーされたとき、プログラムフラッシュメモリユニット内の小型状態機械は、8ビットフラッシュメモリを消去し、消去を検証し、シリアル入力から新しい内容(384バイト)にロードする。以下の擬似コードは、消去検出ラインがトリガーされたときに実効される状態機械ロジックを説明する:
Figure 2001523900
プログラミングモード状態機械実行中に、0が8ビット出力にセットされる。0コマンドは、認証チップの残りの部分に、コマンドをTBR
0として解釈させる。チップが全部で384バイトをプログラムフラッシュメモリへ読み込んだとき、チップはハングする(無限ループに入る)。次に、認証チップはリセットされ、プログラムは正常に使用される。消去は、8ビットプログラムフラッシュメモリの新しい内容をロードするために使用される8ビットレジスタによって検証されることに注意すべきである。これは、攻撃が成功する見込みを低下させるために役立つ。なぜならば、プログラムコードは、消去を認証するため使用されるレジスタが攻撃者によって破壊された場合に、適切にロードされ得ないからである。更に、状態機械全体は、両方のタンパー検出ラインによって保護される。
【1453】
アドレス生成器ユニット
アドレス生成器ユニットは、メモリユニット(MU)へアクセスするための実効アドレスを生成する。サイクル0において、PCは次のオペコードをフェッチするためMUへ渡される。アドレス生成器は、サイクル1の実効アドレスを生成するため、戻されたオペコードを解釈する。サイクル1において、生成されるアドレスはMUへ渡される。アドレス生成器ユニットに格納されたロジック及びレジスタは、両方のタンパー検出ラインによってカバーされる。これは、攻撃者が生成されたアドレスを変更し得ないことを保証する。殆ど全部のアドレス生成器ユニットは通常のCMOSで実現できる。なぜならば、鍵が殆どのこのユニットを通らないからである。しかし、アキュムレータの5ビットはJSIアドレス生成で使用される。この結果として、回路のこの小さい区域は、ノンフラッシングCMOSで実現される。アドレス生成器ユニットの残りの部分は、ノンフラッシングCMOSで実現しなくてもよい。しかし、カウンタ及び計算されたアドレスのラッチはパリティチェックされるべきである。タンパー検出ラインの何れかが破断しているならば、アドレス生成器ユニットは、各サイクルでアドレス0を生成し、全てのカウンタは0に確定される。これは、攻撃者がリセットを禁止状態にするか、及び/又は、消去回路を禁止状態にした場合に始めて効果がある。なぜならば、正常な状況下では、タンパー検出ラインの破断は、リセット又は全てのフラッシュメモリの消去を生じさせるからである。
【1454】
アドレス生成の背景
アドレス生成用ロジックは、種々のオペコードとオペランドの組み合わせを調べることが必要である。オペコード/オペランドと、アドレスとの関係はこのセクションで検討され、アドレス生成器ユニットの基礎として使用される。
【1455】
定数
下位4エントリーは、汎用用途、並びに、HMACアルゴリズムのための簡単な定数である。LDKオペランドの下位4ビットは、これらの4個の値、即ち、0000、0001、0010及び0011のメモリ内アドレスの下位3ビットにそのまま対応する。y定数及びh定数もLDKコマンドによってアドレス指定される。しかし、アドレスは、オペランドの下位3ビットをC1カウンタ値のインバースでOR演算し、そのままのオペランドの第4ビットを保持することによって生成される。このようにして、LDK
yの場合、yオペランドは0100であり、LDK hの場合、hオペランドは1000である。反転したC1値は、yに対して000−011の範囲にあり、hに対して、000−100の範囲にあり、OR演算結果は正確なアドレスを与える。全ての定数に対して、最終アドレスの上位5ビットは常に00000である。
【1456】
RAM
変数A−Tは、それらのオペランド値の下位3ビットに直接関係したアドレスをもつ。即ち、LD、ST、ADD、LOG、及びXORコマンドのオペランド値0000−0101の場合、並びに、LOGコマンドのオペランド値1000−1101の場合、下位3ビットのオペランドアドレスビットは、最終アドレスを生成するため、001000の一定上位6ビットアドレスと共に使用される。残りのレジスタ値は、インデックス付きメカニズムによってアクセスできる。変数A−E、B160及びHは、C1カウンタ値によるインデックス付きとしてのみアクセス可能であり、Xは、N、N、N及びNによってインデックス付けされる。LD、ST及びADDコマンドの場合、C1によってインデックス付けされたAEのアドレスは、オペランドの下位3ビット(000)を取り、C1カウンタ値とOR演算することにより生成される。しかし、H及びB160のアドレスは、同じ方法では生成できない(そうでなければ、RAMアドレス空間は不連続になるであろう)。したがって、簡単な組み合わせロジックは、AEを0000に、Hを0110に、B160を1011に変換する。最終アドレスは、C1を4ビット値に加算し(4ビット値が得られる)、00100の一定上位5ビットアドレスを前に付加することによって得られる。最後に、レジスタのXレンジは、N、N、N及びNによるインデックス付きとしてのみアクセス可能である。XORコマンドの場合、インデックス付けのため任意のN1−4を使用可能であり、一方、LD、ST及びADDの場合、Nだけが使用可能である。LD、ST及びADDにおけるXのオペランドは、XN4オペランドと同じであるため、オペランドの下位2ビットは、使用すべきNを選択する。アドレスは、このようにして、00101の一定上位5ビット値と、選択されたNカウンタに由来する下位4ビットとして生成される。
【1457】
フラッシュメモリ−変数
変数MT及びAMのアドレスは、関連したコマンドのオペランドから生成される。オペランドの4ビットはそのまま使用され(0110及び0111)、00110の一定上位5ビットアドレスが前に付加される。変数R1−5、K11−5、K21−5、及びM0−7は、C1カウンタ値のインバースによるインデックス付きとしてのみアクセス可能である(付加的には、Rの場合には実際のC1値による)。簡単な組み合わせロジックは、R及びRFを00000に、K1又はK2がアドレス指定されているかどうかに応じてKを01000又は11000に、M(MHI及びMLOを含む)を10000に変換する。最終アドレスは、C1を5ビット値とOR演算(又は加算)し(RFの場合には、C1をそのまま使用し)、0011の一定上位4ビットを前に付加することによって獲得される。変数IST及びISWは各々が1ビット値に過ぎないが、任意のビット数によって実装できる。データは、0x00000000又は0xFFFFFFFFの何れかとして読み書きされる。それらは、ROR、CLR及びSETコマンドだけによってアドレス指定される。RORの場合、オペランドの下位ビットは、00111111の一定上位8ビット値と合成され、IST及びISWに対して、それぞれ、0011111110及び001111111が得られる。なぜならば、他のRORオペランドはメモリを使用せず、IST及びISW以外の場合には、返された値は無視できるからである。SET及びCLRの場合、IST及びISWは、0011の一定上位4ビットをIST(0100)から11110へのマッピング、及びISW(0101)から11111へのマッピングと組み合わせることによりアドレス指定される。IST及びISWは、RAMからのE及びTと同じオペランド値を共有するので、同じ復号化ロジックを下位5ビットのため使用することが可能である。最終アドレスは、ビット4、3及び1がセットされることを要求する(これは、オペランド値010xのテストの結果にOR演算することより行われる)。
【1458】
フラッシュメモリ−プログラム
プログラムフラッシュメモリ内でルックアップするためのアドレスは9ビットPC(サイクル0の場合)又は9ビットAdrレジスタ(サイクル1の場合)から直接もたらされる。TBR、DBR、JSR及びJSIのようなコマンドは、プログラムメモリ内の特定のアドレスでテーブルに記憶されたデータにしたがってPCを変更する。その結果として、アドレス生成は、一部の定数アドレスコンポーネントを利用し、コマンドオペランド(又はアキュムレータ)は実効アドレスの下位ビットを形成する。
【1459】
【表178】
Figure 2001523900
アドレス生成器ユニットのブロック図
図194はアドレス生成器ユニットの概略ブロック図である。アドレス生成器ユニットからの一次出力は、以下の表に示されるように、マルチプレクサMXによって選択される。
【1460】
【表179】
Figure 2001523900
CMDデータとMUからの8ビットを区別することが重要である:
サイクル0では、8ビットデータラインは、後のサイクル1で実行されるべき次の命令を保持する。この8ビットコマンド値は実効アドレスをデコードするため使用される。これに対して、CMDの8ビットデータは前の命令を保持するので、無視されるべきである;
サイクル1では、CMDラインは現在実行中の命令(サイクル0中に8ビットデータラインに保持されていた命令)を保持し、一方、8ビットデータラインは命令からの実効アドレスのデータを保持する。CMDデータはサイクル1中に実行されなければならない。
【1461】
したがって、MU又はCMDからの9ビットデータの選択は、以下の表に示されるようにマルチプレクサMXによって行われる。
【1462】
【表180】
Figure 2001523900
9ビットAdrレジスタはサイクル0毎に更新されるので、AdrのWriteEnableは〜サイクルに接続される。カウンタユニットはカウンタC1、C2(内部的に使用される)と、選択されたNインデックスを生成する。その上、カウンタユニットは、プログラムカウンタユニットによって使用されるフラグC1Z及びC2Zを出力する。様々な*GENユニットは、サイクル0中に、特有のコマンドタイプのアドレスを生成し、マルチプレクサMXは、PC(即ち、8ビットデータライン)によってプログラムメモリから読み出されるようなコマンドに基づいてそれらの間で選択を行う。生成された値は以下の通りである。
【1463】
【表181】
Figure 2001523900
マルチプレクサMXは以下の選択規準をもっている。
【1464】
【表182】
Figure 2001523900
VALユニットは、タンパー防止及び検出回路に接続された検証ユニットである。それはOKビットを含み、OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー防止及び検出ラインからのChipOK値とOR演算される。OKビットは、使用可能前の9ビットの実効アドレスとAND演算される。チップが改ざんされているならば、アドレス出力は常に0であり、これにより、攻撃者はメモリの他の部分へのアクセスが妨げられる。VALユニットは、実効アドレスビットにパリティチェックを実行し、それらが改ざんされていないことを保証する。パリティチェックが失敗であるならば、消去タンパー検出ラインがトリガーされる。
【1465】
JSIGEN
図195はJSIGENユニットの概略ブロック図である。JSIGENユニットはJSI
ACC命令のためのアドレスを生成する。実効アドレスは、単に、
JSIテーブル(0101)用のアドレスの4ビット上位部分と、
アキュムレータ値の下位5ビットと、
の連結である。
【1466】
アキュムレータは他の時点(ジャンプアドレスが生成されないとき)で鍵を保持することがあるので、その値は秘匿されなければならない。その結果として、このユニットはノンフラッシングCMOSで実現される。マルチプレクサMXは、単に、コマンドがJSIGENであるかどうかに基づいて、アキュムレータからの下位5ビット又は0の間で選択を行う。マルチプレクサMXは以下の選択規準をもっている。
【1467】
【表183】
Figure 2001523900
JSRGEN
図196はJSRGENユニットの概略ブロック図である。JSRGENユニットはJSR及びTBR命令のためのアドレスを生成する。実効アドレスは、単に、
JSRテーブル(0100)用のアドレスの4ビット上位部分と、
オペランドからのテーブル内のオフセット(JSRコマンド用の3ビットと、TBR用の3ビット+定数0ビット)と、
の連結からもたらされる。ここで、Logicは実効アドレスのビット3を生成する。このビットはJSRの場合にはビット3であり、TBRの場合には0である。
【1468】
【表184】
Figure 2001523900
JSR命令はビット5に1があるので(これに対して、TBRはこのビットが0である)、これをビット3とAND演算することにより、JSRの場合にはビット3を生成し、TBRの場合には0を生成する。
【1469】
DBRGEN
図197は、DBRGENユニットの概略ブロック図である。DBRGENユニットはDBR命令のためのアドレスを生成する。実効アドレスは、
DBRテーブル(011000)用のアドレスの6ビット上位部分と、
オペランドの下位3ビットと、
の連結からもたらされる。
【1470】
LDKGEN
図198は、LDKGENユニットの概略ブロック図である。LDKGENユニットはLDK命令のためのアドレスを生成する。実効アドレスは、
LDKテーブル(00000)用のアドレスの5ビット上位部分と、
オペランドのハイビットと、
オペランドの下位3ビット(下位が定数の場合)、又はC1とOR演算されたオペランドの下位3ビット(インデックス付き定数の場合)と
の連結からもたらされる。
【1471】
ORブロックは、C1の3ビットを、MUからの8ビットデータ出力からの下位3ビットとOR演算するだけである。マルチプレクサMXは、オペランドの上位ビットがセットされているか、又はセットされていないかに基づいて、実際のデータビットと、C1がOR演算されたデータビットとの間で選択を行うだけである。マルチプレクサへのセレクタ入力は、簡単なORゲートであり、bitをbitとOR演算する。マルチプレクサMXは以下の選択規準をもっている。
【1472】
【表185】
Figure 2001523900
RPLGEN
図199は、RPLGENユニットの概略ブロック図である。RPLGENユニットはRPL命令のためのアドレスを生成する。K2MXが0であるとき、実効アドレスは定数000000000である。K2MXが1であるとき(Mからの読み出しが有効な値を返すことを示す)、実効アドレスは、
M(001110)用のアドレスの6ビット上位部分と、
C1の現在値の3ビットと、
の連結からもたらされる。
【1473】
マルチプレクサMXは、K2MXの現在値に基づいて、2個のアドレスの間で選択を行う。したがって、マルチプレクサMXは以下の選択規準をもっている。
【1474】
【表186】
Figure 2001523900
VARGEN
図200は、VARGENユニットの概略ブロック図である。VARGENユニットはLD、ST、ADD、LOG及びXOR命令のためのアドレスを生成する。K2MX
1ビットフラグは、Mからの読み出しが定数0アドレス(0を返すが、書き込み不可である)にマッピングされるか、オペランドがKを指定したとき、K1とK2のどちらがアクセスされるか、を決定するため使用される。4ビットアダーブロックは2組の4ビット入力をとり、モジュロー2の加法で、4ビットの出力を生成する。シングルビットレジスタK2MXは、CLR
K2MX命令、又はSET K2MX命令の実行中だけに書き込まれる。Logicは、これらの条件に基づいてK2MX
WriteEnableをセットする。
【1475】
【表187】
Figure 2001523900
SET命令中にK2MX変数に書き込まれるビットは1であり、CLR命令中は0である。入力ビットのソースとして、オペコードの下位ビット(bit)を使用するのが好都合である。アドレス生成中に、組み合わせロジックとして実装された真理表は、以下の通り、ベースアドレスの一部を決定する。
【1476】
【表188】
Figure 2001523900
真理表は5ビットの出力を生成するが、下位4ビットは4ビットアダーへ送られ、そこで、下位4ビットはインデックス値(C1、N又はオペランド自体の下位3ビット)に加算される。最上位ビットはアダーへ送られ、5ビット結果を生成するために、アダー結果からの4ビット結果の前に付加される。アダーへの第2の入力はマルチプレクサMXに由来し、マルチプレクサMXは、C1、N、及びオペランド自体の下位3ビットからインデックス値を選択する。C1は3ビットしかないが、4番目のビットは定数0である。マルチプレクサMXは以下の選択規準をもっている。
【1477】
【表189】
Figure 2001523900
実効アドレスの第6ビット(bit)は、RAMアドレスの場合に0であり、フラッシュメモリアドレスの場合に1である。フラッシュメモリアドレスは、MT、AM、R、K、及びMである。bitの計算はLogicによって与えられる。
【1478】
【表190】
Figure 2001523900
定数1ビットが表現され、実効アドレスは全部で7ビットになる。これらのビットは、K2MXが0でなく、命令がLD、ADD又はST
M[C1]ではない限り、実効アドレスを形成する。後者では、実効アドレスは定数アドレス0000000である。両方のケースで、2個の0ビットが最終的な9ビットアドレスを形成するため前に追加される。この計算は、以下に示され、Logic及びマルチプレクサMXによって行われる。
【1479】
【表191】
Figure 2001523900
【1480】
【表192】
Figure 2001523900
CLRGEN
図201は、CLRGENユニットの概略ブロック図である。CLRGENユニットはCLR命令のためのアドレスを生成する。実効アドレスは常に、有効メモリアクセスオペランド用のフラッシュメモリにあり、無効オペランドに対して0である。CLR
M[C1]命令は、(VARGENユニットに保持された)K2MXフラグの状態とは無関係に、常に、M[C1]を消去する。真理表は、単純な組み合わせロジックであり、以下の関係を実現する。
【1481】
【表193】
Figure 2001523900
真理表に必要なロジックを削減することは簡単である。なぜならば、全部で4種類の主要なケースにおいて、実効アドレスの最初の6ビットは00であり、その後にオペランド(bit3−0)が続く。
【1482】
BITGEN
図202は、BITGENユニットの概略ブロック図である。BITGENユニットはROR及びSET命令のためのアドレスを生成する。実効アドレスは常に、有効メモリアクセスオペランド用のフラッシュメモリにあり、無効オペランドに対して0である。ROR及びSET命令は、IST及びISWフラッシュメモリアドレスだけにアクセスし(オペランドの残りはレジスタにアクセスする)、簡単な組み合わせロジック真理表はアドレス生成に十分である。
【1483】
【表194】
Figure 2001523900
カウンタユニット
図Y37は、カウンタユニットの概略ブロック図である。カウンタユニットは、カウンタC1、C2(内部で使用)と、選択されたNインデックスと、を生成する。更に、カウンタユニットは、外部で使用するための出力フラグC1Z及びC2Zを出力する。レジスタC1及びC2は、DBR命令又はSC命令のターゲットであるときに更新される。オペランドのハイビット(実効コマンドのbit)は、C1とC2の間で選択を行う。Logic及びLogicは、それぞれ、C1及びC2のためのWriteEnableを判定する。
【1484】
【表195】
Figure 2001523900
シングルビットフラグC1Z及びC2Zは、それらのマルチビットC1及びC2の対応した部分のNOR演算によって生成される。このようにして、C1Zは、C1=0のときに1であり、C2Zは、C2=0のときに1である。DBR命令中に、C1又はC2の何れかの値が1ずつデクリメントされる(ラップ付き)。デクリメンターユニットへの入力は、以下の通り、マルチプレクサMXによって選択される。
【1485】
【表196】
Figure 2001523900
C1又はC2に書き込まれた実際の値は、DBR命令又はSC命令が実行されたかどうかに依存する。マルチプレクサMXは、デクリメンターからの出力(DBR命令用)と、真理表からの出力(SC命令用)との間で選択を行う。5ビット出力のうちの最下位3ビットだけがC1に書き込まれることに注意する必要がある。マルチプレクサMXは、したがって、以下の選択規準をもっている。
【1486】
【表197】
Figure 2001523900
真理表は、SC命令を用いて、C1及びC2へロードされるべき値を保持する。真理表は、以下の関係を実現する簡単な組み合わせロジックである。
【1487】
【表198】
Figure 2001523900
レジスタN1、N2、N3及びN4は、XOR命令によって参照されたとき、次の値−1(ラップ付き)によって更新される。レジスタN4は、ST
X[N4]命令が実行されるときにも更新される。LD及びADD命令はN4を更新しない。その上、全部で4個のレジスタはSET Nxコマンド中に更新される。Logic4−7は、レジスタN1からN4のWriteEnableを生成する。どれもがLogicを使用し、Logicは、コマンドがSET
Nxである場合に1を生成し、そうでなければ0を生成する。
【1488】
【表199】
Figure 2001523900
送出された、又はデクリメンターへの入力として使用された実際のインデックス値は、マルチプレクサMXがオペランドの下位2ビットを使用して簡単に選択する。
【1489】
【表200】
Figure 2001523900
インクリメンターは、(マルチプレクサMXによって選択された)入力値のうちの4ビットを取得し、1を加え、4ビット結果を生成する(モジュロー2の加法による)。最後に、マルチプレクサMXは4時点で、(N毎に異なり、SET
Nxコマンド中にロードされる)定数値と、(XOR又はST命令中の)デクリメンターの結果と、の間で選択を行う。その値は、適当なWriteEnableフラグがセットされている場合に限り書き込まれ(Logic−Logicを参照せよ)、Logicはマルチプレクサのために安全に使用できる。
【1490】
【表201】
Figure 2001523900
SET Nxコマンドは、N1からN4に以下の定数をロードする。
【1491】
【表202】
Figure 2001523900
参照される各初期X[N]は、最適化されたSHA−1アルゴリズムのインデックスN1からN4の初期状態と一致する。各インデックス値Nがデクリメントするとき、実効X[N]はインクリメントする。その理由は、Xワードは最上位ワードから先にメモリに格納されているからである。3個のVALユニットは、タンパー防止及び検出回路に接続された検証ユニットであり、各VALはOKビットを含む。OKビットはリセットで1にセットされ、サイクル毎に両方のタンパー防止及び検出ラインからのChipOK値とOR演算される。OKビットはそのユニットを通過する各データビットとAND演算される。全てのVALユニットは、データビットをパリティチェックし、カウンタが改ざんされていないことを保証する。パリティチェックが失敗であるならば、消去タンパー検出ラインがトリガーされる。VALの場合、カウンタC1からの実効出力は、チップが改ざんされているならば、常に0である。これは、攻撃者が鍵の最初から最後までインデックス付けをするループ構造を実行することを阻止する。VALの場合、カウンタC2からの実効出力は、チップが改ざんされたならば、常に0である。これは、攻撃者がループ構造を実行することを阻止する。VALの場合、Nカウンタ(N1−N14)からの実効出力は、チップが改ざんされているならば、常に0である。これは、攻撃者がXの最初から最後までインデックス付けをするループ構造を実行することを阻止する。
【1492】
次に、図203を参照すると、フラッシュメモリ記憶装置701に格納された情報705が示されている。このデータには以下のものが含まれる。
【1493】
工場コード
工場コードは、プリントロールが製造された工場を示す16ビットコードである。これは、プリントロールテクノロジーの所有者に属する工場、又は許可を得てプリントロールを製造する工場を識別する。この数値の目的は、品質の問題がある場合に、プリントロールの由来する工場を追跡できるようにすることである。
【1494】
バッチ番号
バッチ番号は、プリントロールの製造バッチを示す32ビット番号である。この数値の目的は、品質の問題がある場合に、プリントロールの由来するバッチを追跡することである。
【1495】
シリアル番号
48ビットシリアル番号は、最大で28兆個まで各プリントロールを一意に識別できるようにするため設けられる。
【1496】
製造日
16ビット製造日は、有効期限が制限されている場合に、プリントロールの経年を追跡するため組み込まれる。
【1497】
メディア長さ
ロール上に残っているプリントメディアの長さはこの数値によって表される。この長さは、ミリメータ、又はプリントロールを使用するプリンタ装置の最小ドットピッチのような小さい単位で表現され、周知のC、H及びPの各フォーマット、並びに、印刷されるその他のフォーマットで残り写真数の計算を可能にさせる。この小さい単位を使用することによって、プレ印刷されたメディアとの同期を保つために高解像度が使用できることを保証する。
【1498】
メディアタイプ
メディアタイプデータはプリントロールに格納されているメディアを列挙する:
(1)透明
(2)乳白色
(3)不透明着色
(4)3次元レンチキュラー
(5)プレ印刷:長さ限定
(6)プレ印刷:非長さ限定
(7)金属箔
(8)ホログラフィック/光学的可変デバイス箔。
【1499】
プレ印刷メディア長さ
例えば、プリントロールの裏面に収容されているプレ印刷メディアの繰り返しパターンの長さがここに保存される。
【1500】
インク粘性
各インクカラーの粘性が8ビット数値として格納される。インク粘性数は、粘性を補償するためプリントヘッドアクチュエータ特性を調節する際に使用される(典型的に、粘性が高くなると、同じドロップボリュームを実現するためにはより長いアクチュエータパルスが必要になる)。
【1501】
1200dpi用の推奨ドロップボリューム
各インクカラーの推奨ドロップボリュームは8ビット数値として格納される。最も適切なドロップボリュームは、インク及び印刷メディア特性に依存する。例えば、要求されるドロップボリュームは、色素濃度又は吸収性が増加すると減少する。また、透明メディアは乳白色メディアの約2倍のドロップボリュームを必要とする。なぜならば、光は、透明メディアの場合、色素層を1回しか通過しないからである。
【1502】
プリントロールは、インクとメディアの両方を収容するので、顧客適合を実現することができる。ドロップボリュームは、推奨ドロップマッチに過ぎない。なぜならば、プリンタは1200dpiではないかもしれないし、また、プリンタは、印刷の明暗について調節されるかもしれないからである。
【1503】
インクカラー
染料色の各々のカラーが格納され、印刷前に画像に適用されるデジタル中間調を精細調整するために使用できる。
【1504】
残りメディア長さインジケータ
ロールに残っている印刷メディアの長さが数値によって表現され、カメラ装置によって更新される。長さは、C、H及びPの各フォーマット、並びに、印刷されるその他のフォーマットで残り写真数を計算できるように、小さい単位(例えば、1200dpiピクセル)で表現される。プレ印刷メディアとの同期を保つために高解像度を使用してもよい。
【1505】
著作権又はビットパターン
この512ビットパターンは、保存されたフラッシュメモリの内容を著作権保護可能にするために十分なASCII文字列を表現する。
【1506】
図204を参照すると、Artcam認証チップの記憶テーブル730が示されている。テーブルは、製造コード、バッチ番号、シリアル番号、及び日付を含み、上述のフォーマットと同じである。テーブル730は、更に、Artcam装置内のプリントエンジン上の情報731を含む。蓄積された情報は、プリンタエンジンタイプ、プリンタのDPI解像度、及びプリンタ装置によって作成されたプリント数のプリンタカウントを含む。
【1507】
更に、認証テスト鍵710が設けられ、これは、チップとチップの間でランダムに変化し、上述のアルゴリズムにおけるArtcamランダム識別コードとしても利用される。128ビットのプリントロール認証鍵713も設けられ、これはプリントロール内に保存されたキーと同等である。次に、512ビットパターンが保存され、その後に、Artcamの利用に適した120ビットの予備エリアが続く。
【1508】
上述のように、Artcamは、好ましくは、液晶ディスプレイ15を含み、液晶ディスプレイは、Artcamに格納されているプリントロールに残されたプリント数を示す。更に、Artcamは、3状態スイッチ17を含み、これにより、ユーザは、3種類の標準的なフォーマットC、H及びP(クラシック、HDTV及びパノラマ)を切り換えることが可能である。三つの状態間の切替後、液晶ディスプレイ15は、選択された特定のフォーマットが使用されるならば、プリントロールに残っている画像の枚数を反映するため更新される。
【1509】
液晶ディスプレイを正しく動作させるため、Artcamプロセッサは、プリントロールを挿入し、認証テストに合格した後、プリントロールチップ53のフラッシュメモリ記憶装置から読み出し、用紙残量を判定する。次に、出力フォーマット選択スイッチ17の値がArtcamプロセッサによって判定される。プリント長さを、選択された出力フォーマットの対応した長さで除算することにより、Artcamプロセッサは、プリント可能数を判定し、残りプリント数で液晶ディスプレイ15を更新する。ユーザが出力フォーマット選択スイッチ17を変更すると、Artcamプロセッサ31は、そのフォーマットに応じて出力ピクチャーの数を再計算し、再度、LCDディスプレイ15を更新する。
【1510】
プロセス情報をプリントロールテーブル705(図165)に保存することによって、Artcam装置はプロセスの変化、及びプリントロールのプリント特性の変化を利用することができる。
【1511】
特に、プリントヘッド内の各ノズルに加えられたパルス特性は、プロセス特性の変化を考慮するために変更可能である。図205を参照すると、Artcamプロセッサは、補助メモリROMチップに記憶されたソフトウェアプログラムを動かすために適合し得る。ソフトウェアプログラムであるパルスプロファイルキャラクタライザ771は、プリントロールから多数の変数を読み出すことができる。これらの変数には、プリントロール772上の残りロールメディア、プリンタメディアタイプ773、インクカラー粘性774、インクカラードロップボリューム775、及びインクカラー776が含まれる。これらの変数の各々は、パルスプロファイルキャラクタライザによって読み出され、対応した最も適しているパルスプロファイルは、従来の試行錯誤法によって決定される。パラメータは、インク出力の安定性を高めるために、各プリンタノズルで受け取られるプリンタパルスを変更する。
【1512】
明らかなように、認証チップは、重要かつ価値ある情報がプリンタロールと一体のプリンタチップに格納されている点で著しく進歩している。この情報は、対象となっているプリントロールのプロセス特性を、プリントロールのタイプ及びプリントロールに残っている用紙量と共に含む。
【1513】
更に、プリントロールインタフェースチップは、貴重な認証情報を提供し、耐タンパー性の形で構築することが可能である。また、このチップを利用する耐タンパー性のある方法が提供される。プリントロールチップの利用は、Artcam装置の迅速な出力フォームのために便利かつ効率的なユーザインタフェースを提供することができ、多数の写真フォーマットを出力でき、同時に、印刷装置に残っている写真の数のインジケータを提供することができる。
【1514】
プリントヘッドユニット
図206には、図162のプリントヘッドユニット615の分解斜視部分断面図が示されている。
【1515】
プリントヘッドユニット615は、像を形成するように要求に応じてインクドロップをプリントメディア611へ噴射するプリントヘッド44が中心に置かれる。プリントメディア611は、第1セット618及び616と、第2セット617及び619からなる2組のローラーの間に挟まれている。
【1516】
プリントヘッド44は電源、グランド、及び信号線810の制御下で動作し、電源、グランド、及び信号線810は、プリントヘッド44用の電源及び制御を提供し、テープ自動ボンディング(TAB)によってプリントヘッド44の表面に接合されている。
【1517】
重要なことは、適当に分離されたシリコンウェハー装置から構築することができるプリントヘッド44は、一連の異方性エッチ812に依拠し、ウェハーを介して、ほぼ垂直な側壁を有する。ウェハーを貫通するエッチ812は、後で取り出すためウェハーの裏側からインクをプリントヘッド表面に直接供給することができる。
【1518】
インクは、インクヘッド供給ユニット814を用いてインクジェットプリントヘッド44の裏側に供給される。インクジェットプリントヘッド44は、その表面に沿って、別々の色のインクを供給するため3つの別個の行をもつ。インクヘッド供給ユニット814は、インクチャンネルをシールする蓋815を含む。
【1519】
図207から図210には、インクヘッド供給ユニット814の多数の斜視図が示されている。図207から図210の各々は、長さに制限のないインクヘッド供給ユニットの一部だけを示し、図示された部分は典型的な細部を示す。図207には、底側斜視図が示され、図148は上側斜視図を示し、図209は拡大斜視部分断面図を示し、図210はインクチャンネルの詳細を示す上側斜視図であり、図211は上側斜視図であり、図212も同様である。
【1520】
インクヘッド供給ユニット814は、例えば、マイクロマシーン加工されたシリコンからではなく、射出成形プラスチックから形成する方がコスト的にかなり有利である。プラスチックインクチャンネルの製造コストは非常に低く、製造は十分に容易である。添付図面に示された設計は、所定の長さの1600dpiの3色モノリシックプリントヘッドを想定している。与えられた流速計算は、100mmフォトプリンタに対するものである。
【1521】
インクヘッド供給ユニット814は、必要な精細部の全てを含んでいる。蓋815(図206)は、インクヘッド供給ユニット814に永久的に接着されるか、又は超音波溶接され、インクチャンネルのシールを提供する。
【1522】
図209を参照すると、シアン、マゼンタ、イエローのインクが、インクインレット820−822に流入し、マゼンタインクはスルーホール824,825の中を流れ、マゼンタメインチャンネル826,827(図141)に沿って流れる。シアンインクは、シアンメインチャンネル830に沿って流れ、イエローインクはイエローメインチャンネル831に沿って流れる。図209に最もよく示されているように、シアンインクメインチャンネル内のシアンインクは、シアンサブチャンネル833に流れ込む。イエローサブチャンネル834は、同様に、イエローメインチャンネル831からイエローインクを受け取る。
【1523】
図210の最もよく示されているように、マゼンタインクもマゼンタメインチャンネル826,827からマゼンタスルーホール836,837へ流れる。図209に戻ると、マゼンタインクはスルーホール836,837から流出する。マゼンタインクは、マゼンタサブチャンネル、例えば、838に沿って流れ、次に、第2のマゼンタサブチャンネル、例えば、839に沿って流れ、その後、マゼンタトラフ840に流入する。マゼンタインクは、次に、マゼンタバイア、例えば、842を流れ、マゼンタバイアは、対応したインクジェットヘッドスルーホール(例えば、図166の812)と整列させられ、それらは、次に、インクをプリントアウト用のインクジェットノズルへ供給する。
【1524】
同様に、シアンサブチャンネル833内のシアンインクはシアンピットエリア849に流入し、それは、インクを二つのシアンバイア843,844に供給する。同様に、イエローサブチャンネル834は、イエローピットエリア46へ供給し、イエローピットエリアはイエローバイア847,848へ供給する。
【1525】
図210に示されるように、プリントヘッドは、プリントヘッドスロット850に収容できるように設計され、種々のバイア、例えば、851は、プリントヘッドウェハー内で対応したスルーホール、例えば、851と揃えられる。
【1526】
図206に戻ると、適切なインクがプリントヘッドチップ44の全体へ流れ、同時に、射出成形プロセスの制約を満たすように注意すべきである。プリントヘッドチップの裏側にあるインクスルーウェハーホール812のサイズは、約100μm×50μmであり、異なる色のインクを運ぶスルーホールの隙間は約170μmである。このサイズの形状は容易にプラスチック成形でき(コンパクトディスクはミクロンサイズの形状である)、理想的には壁の高さは、適当なスティフネスを維持するため、壁の厚さの数倍を超えてはならない。好適な実施形態は、少しずつ小さくなるインクチャンネルの階層構造を使用することによってこの問題を解決している。
【1527】
図211には、プリントヘッド44の表面の小部分870が示されている。表面は、シアン系列871、マゼンタ系列872、及びイエロー系列873からなる3系列のノズルに分割される。ノズルの各系列は、更に、2列、例えば、875、876に分割され、プリントヘッド44は、電源及び制御信号を接合する接合パッド878の系列を含む。
【1528】
プリントヘッドは、好ましくは、Artcam装置を含む用途のため創作された非常に多数のインクジェットの異なる形態に応じて構築される。これらのインクジェット装置は以下で詳述される。
【1529】
プリントヘッドノズルは、図206の異方性エッチホール812と同等のインク供給チャンネル880を含む。インクは、ウェハーの裏側から、供給チャンネル881を通り、次に、フィルタグリル882を通り、インクノズルチャンバー、例えば、883へ流れる。ノズルチャンバー883及びプリントヘッド44(図1)の動作は、既に説明した通りであり、上述の特許明細書に記載されている。
【1530】
インクチャンネル流体フロー解析
次に、インクフローの解析を説明すると、メインインクチャンネル826、827、830、831(図207、図141)は、約1mm×1mmであり、1色の全てのノズルに供給する。サブチャンネル833、834、838、839(図209)は約200μm×100μmであり、一つが約25のインクジェットノズルへ供給する。プリントヘッドスルーホール843、844、847、848及びウェハースルーホール、例えば、881(図221)は、100μm×50μmであり、プリントヘッドスルーホールのそれぞれの側で3個のノズルに供給する。各ノズルフィルタ882は8スリットを有し、各スリットは20μm×2μmの面積を有し、一つのノズルに供給する。
【1531】
上記のように構成されたインクジェットプリンタの圧力必要条件の解析を行った。解析は、写真印刷用の1600dpiの3色プロセスプリントヘッドに対するものである。プリント幅は100mmであり、1色毎に6250のノズルがあり、全部で18750のノズルがある。
【1532】
フルブラック印刷の場合に種々のチャンネルで必要な最大インク流速が重要である。これは、インクチャンネルに沿った圧力降下を決定し、したがって、プリントヘッドが表面張力だけで充満した状態を保つかどうか、保てない場合に、プリントヘッドを充満した状態に保つために必要なインク圧を決定する。
【1533】
圧力降下を計算するため、1600dpi動作に対して2.5pIのドロップボリュームを利用した。ノズルはもっと高速に動作する能力を備えているが、選択されたドロップ繰り返しレートは5kHzであり、これは、150mm長さの写真を2秒以内に印刷するために適当である。このようにして、極端なケースでは、プリントヘッドは、18750ノズルを有し、すべてが毎秒最大5000ドロップで印刷をする。このインクフローは、インクチャンネルの階層構造全体に広がる。各インクチャンネルは、全てのノズルが印刷をしているとき、事実上、一定数のノズルに供給する。
【1534】
圧力降下Δρは、Darcy−Weisbach式に従って計算した:
Δρ=ρUfL/2D
ここで、ρはインクの密度であり、Uは平均流速であり、Lは長さであり、Dは水力直径であり、fは無次元摩擦係数であり、以下の式で計算した:
f=κ/Re
ここで、Reはレイノルズ数であり、κは、チャンネルの断面積に依存する無次元摩擦係数であり、以下の式で計算した:
Re=UD/ν
ここで、νはインクの運動学的粘性である。
【1535】
矩形断面の場合、κは、
κ=64/(2/3+(11b/24a)(11b/24a)(2−b/a))
によって近似できる。
【1536】
式中、aは矩形断面の長辺であり、bは短辺である。矩形断面に対する水力直径Dは、
D=2ab/(a+b)
によって与えられる。
【1537】
インクは、チャンネルの長手方向の250点でメインインクチャンネルから抜かれた。インク粘性はチャンネルの先端から線形に降下し、チャンネルの終端で0まで降下するので、平均流速Uは最大流速の半分である。したがって、メインインクチャンネルに沿った圧力降下は、最大流速を用いて計算した圧力降下の半分である。
【1538】
これらの式を利用して、圧力降下を計算することにより、次の表が得られた。
【1539】
インクチャンネル寸法と圧力降下の表
【1540】
【表203】
Figure 2001523900
インクインレットからノズルまでの総圧力降下は、したがって、シアン及びイエローに関して約701Paであり、マゼンタに関して845Paである。これは、大気圧の1%未満である。勿論、印刷された画像がフルブラック未満の場合、インクフロー(したがって、圧力降下)はこれらの値よりも低下するであろう。
【1541】
インクヘッド供給ユニット用の金型製作
インクヘッド供給ユニット14(図1)は50μの外形と106mmの長さがある。射出成形ツールを従来の方法で加工することは実施不可能である。しかし、全体的な形状が複雑であるとしても、複雑な曲線は不要である。射出成形ツールは、メインインクチャンネル及びその他のミリメートルスケールの形状については従来のミリングを使用して製作可能であり、精細な形状はリソグラフ的に製作されたインセットを用いる。LIGAプロセスをインセットのために使用できる。
【1542】
単一の射出成形ツールは、簡単に50以上のキャビティを含む。ツールの複雑さの殆どはインセットにある。
【1543】
図206を参照すると、印刷システムはインク供給ユニット814及び蓋815を一体的に成形し、上述のようにそれらを一体的にシーリングする。次に、プリントヘッド44が対応したスロット850に設置される。粘着性シーリングストリップ852、853がマゼンタメインチャンネル上に置かれ、それらが適切にシールされることを保証する。テープ自動ボンディング(TAB)ストリップ810がインクジェットプリントヘッド44に接続され、タブボンディングワイヤはキャビティ855内に通る。図206、図207及び図212からよく分かるように、アパーチャスロット855から862は、ローラーの挿入の際のスナップのために設けられる。スロットは、ある程度の遊びをもってローラーを「クリッピングイン」し、次に、ローラーを容易に回転させる。
【1544】
図213から図217には、最終的に組み立てられたArtcam装置の内部の様々な斜視図が示され、装置には適当な番号が付されている:
・図213は、Artcamカメラの内部の上面側の斜視図であり、平らにされた部品が示されている;
・図214は、Artcamカメラの内部の底面側の斜視図であり、平らにされた部品が示されている;
・図215は、Artcamカメラの内部の第1の上面側の斜視図であり、Artcamに収容された部品が示されている;
・図216は、Artcamカメラの内部の第2の上面側の斜視図であり、Artcamに収容された部品が示されている;
・図217は、Artcamカメラの内部の第2の上面側の斜視図であり、Artcamに収容された部品が示されている。
【1545】
ポストカードプリントロール
図218を参照すると、好適な実施形態の一形態として、出力プリンタ用紙11は、画像が印刷されない面に、多数のプレ印刷された「ポストカード」型裏書き部分885を含む。ポストカード型セクション885は、プリペイド式郵便料金「スタンプ」886を含み、この「スタンプ」886は、関連した郵便当局からの印刷された認証により構成され、その当局の管轄区域内で、そのプリントロールが販売若しくは利用される。関連した管轄区域の郵便当局との合意によって、プリントロールは様々な郵便料金を利用できる。これは、特に、外国からの旅行者が国内の管轄内にいて、自国へ多数のポストカードを送る場合に便利である。更に、住所書式部分887が設けられ、通常のポストカードの形式で宛先発送の詳細を記入できる。最後に、メッセージ領域887が設けられ、私信を記入することができる。
【1546】
図218及び図219を参照して、カメラ装置の動作を説明すると、一連の画像890から892がプリントロールの第1面に印刷されたときの、対応した裏書き面が図218に示されている。したがって、各画像、例えば、891がカメラによって印刷されると、画像の裏面は、既にポストカード885になっているので、直ちに、管轄区域内の最も近い郵便ポストへ投函することができる。このように、パーソナル化されたポストカードを作成することができる。
【1547】
図219及び図220に示されるようなポストカードシステムを利用するとき、予め定められた画像サイズだけが可能であることは明白である。なぜならば、裏面のポストカード部分885と、表面の画像891との対応関係を維持しなければならないからである。これは、各ポストカードの裏書き書式シート885の長さの詳細を記憶するためプリントロール内に収容された認証チップのメモリ部分を利用することによって実現される。これは、各ポストカードのサイズを同じサイズにすること、又はそれぞれのサイズをプリントロールのオンボードプリントチップメモリに格納することによっても実現される。
【1548】
Artcamカメラ制御システムは、予め書式化されたポストカードを利用するとき、プリントロールは、各画像がポストカードの境界に収まるように画像を印刷するためだけに使用されることを保証することができる。勿論、多少の位置合わせ誤差を考慮できるように境界領域を各写真のエッジに設けることによってある程度の「遊び」が与えられる。
【1549】
図220から明らかであるように、ポストカードロールは、それを利用可能な特定の管轄区域内に旅行するとき、カメラユーザが事前に購入できる。ポストカードロールは、その外面に、購入国、各ポストカードの郵便料金、各ポストカードのフォーマット(例えば、C、H、P、又はこれらの画像モードの組み合わせ)、使用するのに適した国名、及びその日以降に郵便料金が不足になるかもしれない郵便料金期限を含む情報が印刷されている。
【1550】
したがって、カメラ装置のユーザは、関連したシーンに向けられた自分のハンドヘルドカメラを利用して、写真を撮影して、その画像が一方の面に掲載され、もう一方の面にはプリペイド式ポストカードの詳細が記載されている郵便で発送するためのポストカードを製作することが可能である。次に、このポストカードに宛先を指定し、短いメッセージを記入し、その後、直ぐに郵便で発送することができる。
【1551】
Artcam装置のソフトウェア動作に関して、種々のソフトウェア設計が可能であるが、ある設計では、各Artcam装置は、1組の緩く結合した機能モジュールにより構成され、これらの機能モジュールは、一つの埋め込み型アプリケーションによって連係した形で利用できるようにされ、装置の中心目的のために機能する。機能モジュールは、様々なクラスのArtcam装置において、異なる組み合わせで再使用され、アプリケーションはArtcamのクラスに特有である。
【1552】
殆どの機能モジュールは、ソフトウェアとハードウェアの両方のコンポーネントを含む。ソフトウェアは、ハードウェア抽象化レイヤによって、ハードウェアの細部からシールドされ、一方、モジュールのユーザは、抽象化ソフトウェアインタフェースによってソフトウェアインプリメンテーションからシールドされている。システムは、全体として、ユーザ始動、及びハードウェア始動のイベントによって駆動されるので、殆どのモジュールは、一つ以上の同期的なイベント駆動型プロセスを動かすことができる。
【1553】
一般的なArtcam装置を構成する殆どの重要なモジュールが図221に示されている。同図及びその後の図には、ソフトウェアコンポーネントが左側にsめされ、垂直点線901によって右側のハードウェアコンポーネントから分離されている。これらのモジュールのソフトウェアの面を次に説明する。
【1554】
ソフトウェアモジュール−Artcamアプリケーション902
ArtcamアプリケーションはArtcam装置の上位レベル機能を実現する。これは、通常、像の撮影、像に対する芸術的効果の適用、及び像の印刷を含む。カメラ指向のArtcam装置の場合、画像は、カメラマネージャ903によって捕捉される。プリンタ指向のArtcam装置の場合、画像は、ネットワークマネージャ904によって捕捉され、おそらく、この画像は他の装置によって送出された結果物である。
【1555】
芸術的効果は、ファイルマネージャ905によって管理される統合ファイルシステム内で行われる。芸術的効果は、スクリプトファイルとリソースのセット途により構成される。スクリプトは、画像処理マネージャ906によって翻訳され、画像に適用される。スクリプトは、通常、Artcardとして知られているArtCardsで出荷される。デフォルトとして、システムは、現在搭載されているArtcardに格納されているスクリプトを使用する。
【1556】
画像はプリントマネージャ908によって印刷される。
【1557】
Artcam装置がスタートアップしたとき、ブートストラッププロセスが、アプリケーションを開始する前に種々のマネージャプロセスを始動する。これにより、アプリケーションは、スタートしたときに、直ちに様々なマネージャからのサービスを要求できる。
【1558】
初期化後、アプリケーション902は、それ自体を以下に列挙されたイベントのハンドラーとして登録する。アプリケーションはイベントを受け取ったとき、表に記載された動作を実行する。
【1559】
【表204】
Figure 2001523900
カメラがディスプレイを含むとき、アプリケーションはユーザインタフェースマネージャ910によってグラフィカルユーザインタフェースを構築し、ユーザは現在日時、及びその他の編集可能なカメラパラメータを編集できるようになる。アプリケーションは、全ての常駐パラメータをフラッシュメモリに保存する。
【1560】
リアルタイムマイクロカーネル911
リアルタイムマイクロカーネルは、割込とプロセス優先順位に基づいて、予めプロセスをスケジューリングする。それは、プロセススケジューリングに非常に密接している統合プロセス間通信及びタイマーサービスを提供する。全ての他のオペレーティングシステム機能はマイクロカーネルの外部で行われる。
【1561】
カメラマネージャ903
カメラマネージャは、画像捕捉(撮像)サービスを提供する。それは、Artcamに組み込まれたカメラハードウェアを制御する。それは、抽象的カメラ制御インタフェースを提供し、カメラパラメータの問い合わせ及び設定、画像捕捉を可能にさせる。この抽象的インタフェースは、アプリケーションを他のカメラインプリメンテーションの細部から切り離す。カメラマネージャは以下の入力/出力パラメータ及びコマンドを利用する。
【1562】
【表205】
Figure 2001523900
【1563】
【表206】
Figure 2001523900
【1564】
【表207】
Figure 2001523900
カメラマネージャは、非同期イベント駆動型プロセスとして動く。それは、連結された状態機械の組を含み、各状態機械は一つの非同期オペレーションに対応する。それらは、オートフォーカス、フラッシュ充電、セルフタイマのカウントダウン、及び像の撮影を含む。初期化時、カメラマネージャはカメラハードウェアを既知状態にセットする。これは、通常の焦点距離の設定、及びズームの戻しを含む。カメラマネージャのソフトウェア構造は、図222に示されている。ソフトウェアコンポーネントは以下のサブセクションに記載されている。
【1565】
フォーカス固定913
ロックフォーカスは、フォーカス制御モード、露出制御モード、及びフラッシュモードに応じて、現在シーンに対して自動的にフォーカスと露出を調整し、必要に応じてフラッシュを動作可能状態にする。ロックフォーカスは、通常、ユーザが撮影ボタンを半押しすることによって始動される。これは、正常な像撮影シーケンスの一部であるが、ユーザが撮影ボタンを半押しのままにした場合、時間的に、実際の像の撮影からは分離される。これは、ユーザがスポットフォーかシング及びスポット測距をできるようにする。
【1566】
撮影914
撮影(像捕捉)は、現在シーンの像を撮影する。フラッシュモードがレッドアイ除去を含む場合、レッドアイランプを点灯し、シャッターを制御し、動作可能状態であれば、フラッシュをトリガーし、イメージセンサによって像を検知する。それは、カメラの向き、即ち、撮影像の向きを判定し、これにより、後の画像処理で、像は適切に向きを決められる。また、それは、後の画像処理中にブラーを取り除くため、撮像中にカメラの動きの有無を検出する。
【1567】
セルフタイム撮影915
セルフタイム撮影は、20秒タイマーのカウントダウン後に、現在シーンの像を撮影する。これは、カウントダウン中に、セルフタイマーLEDを用いて、ユーザにフィードバックを与える。最初の15秒間に、それは、LEDを点灯できる。最後の5秒間にLEDは点滅する。
【1568】
ビューシーン917
ビューシーンは、周期的に、イメージセンサを通して現在シーンを検知し、そのシーンをカラーLCDに表示させ、ユーザにLCDベースのビューファインダーを提供する。
【1569】
オートフォーカス918
オードフォーカスは、像の選択された領域が焦点が合っていると言えるまで十分に鮮明になるまで、焦点距離を変化させる。それは、イメージセンサの指定された領域から抽出された画像鮮明さメトリックが固定の閾値を超えた場合に領域の焦点が合うということを前提とする。それは、鮮明さの微分に関する勾配降下法を実行し、必要に応じて方向及びステップサイズを変えることによって、最適焦点距離を見つける。焦点制御モードがマルチポイントオートであるならば、視野全体に水平に配置された3個の領域が使用される。焦点制御モードがシングルポイントオートであるならば、視野の中心にある一つの領域が使用される。オートフォーカスは、フォーカスコントローラによって指定された有効焦点距離の範囲内で機能する。固定焦点装置の場合、これは、事実上、無効にされる。
【1570】
オートフラッシュ919
オートフラッシュは、シーンの照度がフラッシュを必要とする程度に薄暗いかどうかを判定する。これは、シーンの照度が所定の閾値以下であるならば、照度が十分に薄暗いとみなす。シーンの照度は、照度センサから獲得され、照度センサはイメージセンサの中央領域から照度メトリックを抽出する。フラッシュが必要であれば、フラッシュを充電する。
【1571】
自動露出920
シーン照度、絞り、および、シャッター速度は、撮影像の露出を決定する。望ましい露出は固定値である。露出制御モードがオートであるならば、自動露出は、所定のシーン照度に対して望ましい露出を生じる絞りとシャッター速度の組み合わせを決定する。露出制御モードが絞り優先であるならば、自動露出は、所定のシーン照度及び現在の絞りに対して望ましい露出を生じるシャッター速度を決める。露出制御モードがシャッター優先であるならば、自動露出は、所定のシーン照度及び現在のシャッター速度に対して望ましい露出を生じる絞りを決める。シーン照度は照度センサから取得され、照度センサはイメージセンサの中央領域から照度メトリックを抽出する。
【1572】
自動露出は、絞りコントローラ及びシャッター速度コントローラによって指定された有効絞り及びシャッター速度の範囲内で機能する。シャッター速度コントローラ及びシャッターコントローラは、殆どのArtcam装置では機械的シャッターの無いことを隠す。
【1573】
フラッシュが、マニュアル又はオートで有効にされている場合、実効的なシャッター速度はフラッシュの間隔であり、これは、典型的に、1/1000秒から1/10000秒である。
【1574】
画像処理マネージャ906(図221)
画像処理マネージャは、画像処理と芸術的効果サービスを提供する。これは、高速画像処理を実行するためArtcamに組み込まれたVLIWベクトルプロセッサを利用する。画像処理マネージャは、Vark画像処理言語で記述されたスクリプト用のインタープリタを具備する。したがって、芸術的効果は、Varkスクリプトファイルと、フォント、クリップ画像のような関連したリソースと、を含む。画像処理マネージャのソフトウェア構造は図223により詳細に示され、以下のモジュールを含む。
【1575】
画像の変換及び強調921
画像処理マネージャは、装置に依存しないCIE LAB色空間において、Artcamプリンタハードウェアの生成能力に適した解像度で、画像処理を実行する。撮影された像は、最初に、ノイズをフィルタ処理して強調される。それは、オプションとして、動きによって生じたブラー効果を取り除くために行われる。画像は、次に、装置に依存したRGB色空間から、CIE
LAB色空間へ変換される。像は、撮影時のカメラ回転の影響を相殺するため回転させられ、作業用画像解像度へスケール変換される。画像は、そのダイナミックレンジを利用可能なダイナミックレンジへスケーリングすることによって強調される。
【1576】
顔検出923
顔は、色相及び局部的特徴解析に基づいて撮影された像内で検出される。検出された顔領域のリストは、ワーピング及び吹き出しの配置のような顔専用効果を適用するためVarkスクリプトによって使用される。
【1577】
Vark画像処理言語インタープリタ924
Varkは、豊富な画像処理のセットで拡張された汎用プログラミング言語を含む。それは、プリミティブデータタイプの範囲(整数、実数、ブール、文字)、より複雑なタイプを構築するための集合データタイプの範囲(配列、文字列、レコード)、算術演算及び論理演算の豊富な組、条件付き及び反復制御フロー(if−then−else、while−do)、及び再帰的関数及び手続を提供する。また、それは、画像処理データタイプの範囲(画像、クリップ画像、マット、カラー、カラールックアップテーブル、パレット、ディザ行列、コンボリューションカーネル、等)、グラフィックデータタイプ(フォント、テキスト、パス)、画像処理関数の組(カラー変換、コンポジット処理、フィルタ処理、空間変換及びワーピング、イルミネーション、テキスト設定及びレンダリング)、及び上位レベルの芸術的関数の組(タイリング、ペインティング、及びストローキング)を提供する。
【1578】
Varkプログラムは二つの意味でポータブルである。それは、インタープリットされるので、CPU及びホストの画像処理エンジンに依存しない。装置に依存しないモデル空間及び装置に依存しない色空間を使用するので、それは、入力色特性、ホスト入力装置の解像度、出力色特性、及びホスト出力装置の解像度に依存しない。
【1579】
Varkインタープリタ924は、Varkスクリプトを構成するソースステートメントを解析し、そのスクリプトの意味を表現するパースツリーを生成する。パースツリーのノードは、プログラムのステートメント、エクスプレッション、サブエクスプレッション、変数、及び定数に対応する。ルートノードはメインプロシジャーステートメントリストに対応する。このインタープリタは、パースツリーのルートステートメントを実行することにより、プログラムを実行する。パースツリーの各ノードはその子にそれ自体を適切に評価又は実行するように要求する。例えば、ifステートメントノードは、条件表現ノードと、thenステートメントノードと、elseステートメントノードの三つの子を持つ。ifステートメントは、条件表現ノードに、それ自体を評価し、返されたブール値に基づいて、thenステートメント又はelseステートメントにそれ自体を実行させる。それは、実際の条件表現又は実際のステートメントは知らない。
【1580】
殆どのデータタイプの演算はパースツリーの実行中に行われるが、画像データタイプの演算は、パースツリーの実行後まで、延期される。これにより、画像演算が最適化され、最終的な画像に寄与する中間画素だけが計算される。これは、最終画像を、空間細分によって多数のパスで計算することを可能にさせ、これにより、必要なメモリ量を減少させる。
【1581】
パースツリーの実行中に、各画像関数は画像グラフを返すだけであり、この画像グラフは、ノードが画像オペレータを表し、リーフが画像を表すものであり、対応した画像オペレータをルートとし、その画像パラメータをルートの子とすることによって構築される。画像パラメータは勿論それ自体が画像グラフである。このようにして、それぞれの逐次的な画像関数は、より深い画像グラフを返す。
【1582】
パースツリーの実行後、最終画像に対応した画像グラフが得られる。この画像グラフは、次に、(任意の表現ツリーと同じように)深さ優先方式で実行され、以下の2点で最適化される。(1)最終画像に寄与する画素だけが所定のノードで計算される。(2)ノードの子は、メモリ必要量を最小限に抑える順番で実行される。画像グラフ中の画像オペレータは、最終画像を生成するために最適化された順序で実行される。計算集約的な画像オペレータは、Artcam装置に組み込まれたVLIWプロセッサを使用して加速される。画像グラフを実行するために必要なメモリ量が利用可能なメモリを超えたとき、最終画像領域は、必要なメモリが利用可能なメモリを超えなくなるまで細分される。
【1583】
巧く構築されたVarkプログラムの場合、最初の最適化は特に大きな効果があるとは思えない。しかし、最終画像領域が細分された場合、最適化はかなりの効果を生ずる可能性がある。細分化がメモリ必要量を減少させる効果的な技術として使用することができることが、まさにこの最適化である。画像オペレーションの実行を遅らせることの結果の一つは、プログラム制御フローを画像内容に依存させられないことである。なぜならば、画像内容はパースツリー実行中には分からないからである。実際上、これはそれほど制約にはならないが、それにもかかわらず、言語設計中には注意しなければならない。
【1584】
画像オペレーションの延期実行(又は遅延評価)の考え方については、Guibas and Stolfiによって記載されている(Guibas, L.J,., and J. Stolfi, ''A Language for Bitmap Manupulation'', ACM Transactions
on Graphics, Vol.1, No.3, July 1982,
pp.191−214)。彼らは、プログラムの実行中に同様に画像グラフを構築し、後続のグラフ評価中に、最終画像に寄与しない画素の計算を回避するため、結果領域を逆伝搬させる。Shantzisは、更に、利用可能な画素を画像グラフ評価中に前方へ伝搬させる(Shantzis,
M.A., ''A Model for Efficient and Flexible
Image Computing'', Computer Graphics Proceedings, Annual Conference
Series, 1994, pp.147−154)。Varkインタープリタは、Cameronによって提案された、より洗練されたマルチパス型ビットディレクショナル領域伝搬スキームを使用する(Cameron,
S., ''Efficient
Bounds in Constructive
Solid Geometry'', IEEE Computer Graphics & Appkications,
Vol.11, No.3, May
1991, pp.68−74)。メモリ使用量を最小限に押させるため実行順序を最適化する方法は、Shantzisに由来するが、標準的なコンパイラ理論に基づいている(Aho,
A. V., R. Sehi, and J.D.
Ullman, ''GeneratingCode from DAGs'', in Compilers: Principles, Techniques, and Tools,
Addison−Wesley, 1986, pp.557−567)。Varkインタープリタは、Shantzisよりも洗練されたスキームを使用するが、可変サイズ画像バッファをサポートする。メモリ使用量を減少させるため、領域伝搬と組み合わせて結果領域を細分することは、Shantzisに由来している。
【1585】
プリンタマネージャ908(図221)
プリンタマネージャは画像プリンティングサービスを提供する。それは、Artcamに組み込まれたインクジェットプリンタハードウェアを制御する。それは、抽象的プリンタ制御インタフェースを提供し、プリンタパラメータの問い合わせと設定を可能にさせ、画像を印刷される。この抽象的インタフェースは、アプリケーションをプリンタインプリメンテーションの詳細から切り離し、以下の変数を含む。
【1586】
【表208】
Figure 2001523900
【1587】
【表209】
Figure 2001523900
【1588】
【表210】
Figure 2001523900
【1589】
【表211】
Figure 2001523900
プリンタマネージャは非同期イベント駆動型プロセスとして実行される。それは、連結された状態機械の組を含み、各状態機械は一つの非同期オペレーションに対応している。これらは、画像を印刷し、プリントロールを自動マウントする。プリンタマネージャのソフトウェア構造は図224に示されている。ソフトウェアコマンドは後述される。
【1590】
プリントイメージ930
プリントイメージは供給された画像を印刷する。これは、印刷用の画像を準備するためVLIWプロセッサ回路を使用する。VLIWプロセッサ回路は、画像色空間を装置固有CMYに変換し、プリントヘッドで期待されるフォーマットで中間調バイレベルデータを生成する。
【1591】
プリントの間に、プリントロールを取り外すことができるように、用紙はプリントロールのリップに引き込まれ、ノズルはインク漏れ及び乾燥を防ぐためにキャップを被せることができる。実際の印刷がスタートする前に、従って、ノズルはキャップを取り外され、きれいにされ、用紙はプリントヘッドへ進められる。印刷自体は、画像が完全に印刷されるまで、VLIWプロセッサからラインデータを転送し、ラインデータを印刷し、用紙を進める。印刷の終了後、用紙は裁断機で切断され、プリントロールに引き込まれ、ノズルにキャップが被せられる。残りメディア長さはプリントロールで更新される。
【1592】
プリントロール自動マウント131
プリントロール自動マウントは、プリントロールの装着と取り外しに応答する。それは、プリントロールの装着と取り外しのイベントを生成し、このイベントは、アプリケーションによって処理され、状態表示を更新するため使用される。プリントロールは、プリントロールに組み込まれた認証チップと、Artcamに組み込まれた認証チップとの間でプロトコルに従って認証される。プリントロールが認証を失敗した場合、プリントロールは拒絶される。種々の情報がプリントロールから抽出される。用紙及びインク特性は、印刷プロセス中に使用される。残りメディア長さ及びメディアの固定ページサイズは、いずれにしても、プリントマネージャにより公表され、アプリケーションによって使用される。
【1593】
ユーザインタフェースマネージャ910(図221)
ユーザインタフェースマネージャは図225により詳細に示され、ユーザインタフェース管理サービスを提供する。それは、状態表示及び入力ハードウェアを制御し物理的ユーザインタフェースマネージャ911と、カラーディスプレイ上の仮想グラフィカルユーザインタフェースを管理するグラフィカルユーザインタフェースマネージャ912と、を含む。ユーザインタフェースマネージャは、仮想及び物理的入力をイベントに翻訳する。各イベントはそのイベントのために登録されたプロセスのイベントキュー入れられる。
【1594】
ファイルマネージャ905(図222)
ファイルマネージャは、ファイルマネージメントサービスを提供する。それは、統合階層ファイルシステムを提供し、その中では、全てのマウントされたボリュームのファイルシステムが現れる。Artcamで使用される一次着脱式記憶媒体はArtCardである。Artcardは、2値のドットのブロックによって高解像度で印刷され、2値のドットのブロックは、誤差を許容するリード・ソロモン符号化2値データを直接表現する。ブロック構造は、(Artcamで初期には使用されていない)適当なリード−ライトArtCard装置における追記及び追記−書き換えをサポートする。より高いレベルでは、ArtCardは、拡張型追記−書き換え可能ISO9660準拠CD−ROMファイルシステムを含み得る。ファイルマネージャのソフトウェア構造、及び特に、ArtCard装置コントローラは、図226に示されている。
【1595】
ネットワークマネージャ904(図222)
ネットワークマネージャは、赤外線(IrDA)及び汎用シリアルバス(USB)を含む様々なインタフェース上での家電製品ネットワーキングサービスを提供する。これは、Artcamシステムが撮影された画像を共有し、印刷のための画像を受信できる。
【1596】
クロックマネージャ907(図222)
クロックマネージャは日付及び時刻のクロックサービスを提供する。それは、Artcamに組み込まれたバッテリバックアップ型リアルタイムクロックを利用し、ユーザが時刻をセットしたときに実行される自動キャリブレーションに基づいて、クロック変動を自動的に調節する程度までそれを制御する。
【1597】
パワーマネージメント
システムが使用されていないとき、システムは、入力イベントの周期的走査が行われる休止電力状態に入る。入力イベントは、ボタンの押下、又はArtCardの挿入を含む。入力イベントが検出されると直ぐに、Artcam装置は、動作電力状態に戻る。その後、システムは入力イベントをいつもの通りに取り扱う。
【1598】
システムが動作電力状態であるときでさえ、個々のモジュールに関連したハードウェアは、典型的に窮し電力状態にある。これは、全体的な電力消費を削減し、プリンタの用紙切断機のような特に浪費のもとになるハードウェアコンポーネントが動作中に電源を独占できるようする。カメラ指向のArtcam装置は、デフォルトで、画像撮影モードである。即ち、カメラは動作状態であり、プリンタのような他のモジュールは休止状態である。つまり、カメラ以外の機能が始動されたとき、アプリケーションはカメラモジュールを明白に一時停止させなければならない。他のモジュールは、待機状態になると、自発的に一時停止する。
【1599】
ウォッチドッグタイマー
システムは、周期的な優先度の高いウォッチドッグタイマー割込を生成する。割込ハンドラーは、システムが最後の割込以降、進んでいない、即ち、システムが故障していると判断した場合、システムをリセットする。
【1600】
代替プリントロール
他の一実施形態では、適切に簡単に一つにはめ込まれた射出成形プラスチック部品によって大部分を構築することができる改良された形態のプリントロールが提供される。改良された形態のプリントロールは、多少構造が単純化されると共に、インク貯蔵容量が増加している。画像が印刷されるべきプリントメディアは、構造を簡単化するため、プラスチック製スリーブフォーマーの周りに巻き付けられる。インク媒体リザーバは、インクが流れ出る可能性ができるだけ少なくなる構造にされた一連の通気孔を有する。更に、ラバーシールがインク出口孔に設けられ、ラバーシールはプリントロールをカメラシステムに挿入する際に穿刺される。更に、プリントロールは、プリントメディア排出スロットを含み、排出スロットは周囲に成形された表面を有し、その表面は、プリントメディア放出スロットが、印刷又はカメラシステム内のプリントヘッドに対して正確な位置に置かれるように補助する。
【1601】
次に、図227から図231を参照すると、図227には、組み付けられた形式のシングルポイントロールユニット1001が示され、部分的に切断されてプリントロールの内部が表されている。図228及び図229は、それぞれ、左側及び右側の分解斜視図である。図230及び図231は図227から図229の内部コア部1007の拡大斜視図である。
【1602】
プリントロール1001は、内部インク補充部を含む内部コア部1007の周りに構築される。コア部1007の外側にはフォーマー1008が設けられ、フォーマーの周りに、用紙又はフィルム補給品1009が巻き付けられる。用紙補給品の周りには、二つのカバー部品1010、1011が設けられ、プリントロールの周りで一体としてスナップ式に留まり、図227に示されるようにカバーユニットを形成する。下側カバー部品1011はスロット1012を含み、そのスロットを通って、プリントメディア1004の出力がカメラシステムと相互連結する。
【1603】
二つのピンチローラー1038、1039が用紙を駆動ピンチローラー1040に圧迫するため設けられるので、それらは、一体として、ローラー1040の周りで用紙のカールを取り去る。このカールの取り除きは、長期間に亘ってプリントロールの形で蓄えられている用紙に加わる強いカールを打ち消すように作用する。ローラー1038、1039は、カバーベース部1077の端部及びローラーとスナップ式にフィットするため設けられ、ローラー1040は、駆動用の歯車付きの端部1043を含み、上側カバー部品1010とスナップ式にフィットし、用紙1004を間でしっかりと締め付ける。
【1604】
カバー部品1011は、端部隆起又はリップ1042を含む。端部リップ1042は用紙の出口孔を、カメラシステム内の対応した印刷熱プラテン構造体と正確にアライメントするため設けられる。このようにして、既存の用紙は、近傍のプリントヘッドに対して、正確にアライメント又は位置決めされ、用紙をプリントヘッドへ完全に案内する。
【1605】
図230及び図231を参照すると、射出成形部品から形成可能である内部コア部の分解斜視図が示され、このコア部は、内部スポンジ部分1034から1036を有する3個のコアインクシリンダが中心に置かれている。
【1606】
コア部の一端には、一連の通気チャンネル、例えば、1014から1016が設けられる。各通気チャンネル1014から1016は、第1の孔、例えば、1018を外部接点1019と相互連結し、外部接点は雰囲気に相互連結される。通気チャンネル、例えば、1014が後に続く通路は、好ましくは、曲がりくねった性質があり、あちこちに曲がりくねっている。通気チャンネルは、シーリングテープ1020の一部分によってシールされ、シーリングテープはコア部の端に被せられる。シーリングテープ1020の表面は、好ましくは、疎水性を高めるため、疎水性的に処理されているので、流体部分が通気チャンネルに進入することを防ぐ。
【1607】
コア部1007の第2の端には、3個の厚くなった部分1024、1025及び1026を含むラバーシーリングキャップ1023が設けられ、厚くなった各部分は一連の疎らな孔が存在する。例えば、部分1024は、疎らな孔1029、1030及び1031を含む。疎らな孔は、別個の厚くなった部分の各々からの1個の孔は1本の直線に並ぶように配置される。例えば、疎らな孔1031、1032及び1033(図230)は、全てが1本の線に並び、各孔は別個の厚くなった部分に由来する。厚くなった部分の各々は、対応したインク供給リザーバと対になり、3個の孔が穿刺されたとき、対応したリザーバと流体連通する。
【1608】
端部キャップユニット1044は、コア部1007に取り付けられる。端部キャップ1044は、認証チップ1033を挿入するためのアパーチャ1046を含み、その上、3個の突起を含む延長されたアダプタ(図示せず)を含み、3個の突起は、対応した孔(例えば、1048)を貫通し、シール1023の厚くなった部分(例えば、1033)を穿刺し、対応したインクチャンバー(例えば、1035)と相互連結する。
【1609】
更に、端部1044には、認証チップ1033が挿入され、認証チップは、プリントロールのカメラシステムへのアクセスを認証するため設けられる。したがって、このコア部は、3個の別個のチャンバーに分割され、各チャンバーは、別の色のインクと、内部スポンジと、を収容する。各チャンバーは、第1の端にインク出口を含み、第2の端に通気孔を含む。シーリングテープ1020のカバーは通気チャンネルを覆うために設けられ、ラバーシール1023はインクチャンバーの第2の端をシールするため設けられる。
【1610】
内部インクチャンバースポンジ、及び疎水性チャンネルは、プリントロールを移動可能な環境、多種多様な向きでも利用できるようにさせる。更に、スポンジは、それ自体に疎水化処理をすることができるので、インクをコア部から順序正しく追い出すことができる。
【1611】
一連のリブ(例えば、1027)は、コア部1007とプリントロールフォーマー1008との間の摩擦的接触を最低限にさせるため、コア部の表面に設けることができる。
【1612】
プリントロールの殆どの部分は、射出成形プラスチックから構成することが可能であり、プリントロールは、大きい内部インク貯蔵容量をもつ。簡単化された構造は、用紙のカールを取り除くメカニズムと、漏れを最小限に抑えるインクチャンバー通気孔と、を含む。ラバーシールは、インク供給チャンバーとの間に効率的な通路を設けるので、動作的能力が高まる。
【1613】
Artcardは、勿論、それ以外の様々な環境で使用される。例えば、Artcardは、組み込み型及びパーソナルコンピュータ(PC)アプリケーションの両方で使用可能であり、大量のデータ又はコンフィギュレーション情報への使い勝手のよいインタフェースを提供する。
【1614】
この結果として、多数のアプリケーションが見込まれる。例えば、ArtCardリーダーはPCに取り付けてもよい。PCのアプリケーションは多種多様である。最も簡単なアプリケーションは、低コスト読み出し専用配布媒体である。ArtCardは印刷されるので、社内のデータ配布のため使用されるならば、監査の証跡を与える。
【1615】
更に、PCは、しばしば、クローズドシステムのベースとして使用されるが、多数のコンフィギュレーション上のオプションが存在する。複雑なオペレーティングシステムのユーザ用インタフェースに頼るのではなく、ArtCardをArtCardリーダーに単に挿入するだけで、あらゆるコンフィギュレーション上の必要条件を満たすことができる。
【1616】
ArtCardの裏面は、アプリケーションとは無関係に、同一の視覚的外観を備えているが(なぜならば、データを格納しているからである)、ArtCarの表面はアプリケーションに依存している。表面は、アプリケーションの状況においてユーザに理解される。
【1617】
したがって、図Z35の装置は、本、新聞、雑誌、技術マニュアル等の形で情報の効率的な配信を行う。
【1618】
更なるアプリケーションでは、図Z36に示されるように、Artcard80の表面は、サンプル画像に適用される芸術的な効果を含む画像を表示する。カード80の裏面にプログラムされたデータを読み出すカードリーダー82を含むカメラシステム81を準備し、アルゴリズム的なデータをサンプル画像83に適用して出力画像84を生成することが可能である。カメラユニット81は、オンボードインクジェットプリンタと、サンプル画像データを処理するために十分な処理手段と、を含む。ArtCardの構想の更なるアプリケーションは、BizCardと呼ぶものであり、会社情報を名刺に記憶させる。BizCardは、会社情報の新しいコンセプトである。bizCardの表面は、図Z37に示されるように、外観と機能の点で現在の普通の名刺と全く同じである。それは、写真と連絡先情報とを含み、名刺と同じように多種多様なカードスタイルがある。しかし、各biZCardの裏面は、黒色ドットと白色ドットの印刷された配列を含み、会社に関する1から2メガバイトの情報を保持する。その結果は、3.5インチ形ディスケットの記憶装置が各名刺に取り付けられていることと同じである。
【1619】
情報は、会社情報、特定製品シート、ウェブサイトポインタ、電子メールアドレス、経歴等、bizCardの所有者が望む情報であれば何でも構わない。BizCardは、USBポートを用いて標準的なPCに接続可能なPC付属型カードリーダーのような如何なるArtCardリーダーでも読むことが可能である。BizCardは、ドキュメントとして専用組み込み装置に表示させてもよい。PCの場合、ユーザはそのbizCardをリーダーに挿入するだけでよい。bizCarは、好ましくは、ウェブサイトと全く同様に、通常のウェブブラウザを使用してナビゲートされる。
【1620】
所有者の写真及びデジタル署名を、会社の公開鍵へのポインタと共に収容することによって、各biZCardは、その人が、本当にその人本人であり、且つ指定の会社のために実際に働いている人であることを電子的に検証するために使用できる。その上、会社の公開鍵を指すことにより、biZCardは、安全な通信を簡単に開始させることができる。
【1621】
TourCardと呼ばれる更なるアプリケーションは、ある都市への旅行者及び訪問者のための情報を格納したArtCardのアプリケーションである。tourCardがArtcardブックリーダーに挿入されると、情報は次の形式をとり得る:
*地図
*公共輸送機関時刻表
*名所
*郷土史
*行事及び催事
*レストラン案内
*ショッピングセンター
TourCardは、観光客用パンフレット、ガイドブック、及び街角案内の低コスト代替物である。製造コストがカード1枚当たりわずか1セントであれば、tourCardは、観光客案内所、ホテル、及び観光地で、最低限のコスト、又は広告による資金援助があれば無料で配布可能である。ブックリーダーの携帯性は、これを旅行者にとって完璧なソリューションにする。TourCardは、ArtCardリーダーを備わっているコンピュータが任意のウェブブラウザ上でtourCardに符号化された情報を復号化することができる情報キオスクでも使用可能である。
【1622】
ブックリーダーの双方向性は、tourCardを非常に多用途化する。例えば、地図に格納されたハイパーテキストリンクは、呼び物ビルディングの歴史的物語を表示するために選択可能である。このように、旅行者は、その都市のガイド付きツアーに出かけることが可能であり、関連した交通機関の路線図及び時刻表は何時でも利用可能である。tourCardは、地図と、ガイドブックと、時刻表と、レストラン案内と、を別々にする必要性を無くし、各個の旅行者に対する簡単なソリューションを作成する。勿論、データカードにはこの他にも多くの利用可能性がある。例えば、新聞、学習案内、ポップグループカード、ベースボールカード、時刻表、音楽データファイル、製品パーツ、広告、テレビガイド、映画ガイド、見本市情報、雑誌のクーポンカード、レシピ、求人広告、医療情報、プログラム及びソフトウェア、競馬新聞、電子新聞、年次報告書、レストランガイド、ホテルガイド、バケーションガイド、翻訳プログラム、ゴルフコース情報、ニュース放送、コミック、気象詳細等がある。
【1623】
例えば、ArtCardは、本の内容、又は新聞の内容を含み得る。このようなシステムの一例は図Z35に示され、ArtCard70は、一方の面に本のタイトルを含み、もう一方の面には本の符号化された内容が印刷されている。カード70はリーダー72に挿入され、リーダー72には、カードリーダー72の折り畳みを可能にさせるフレキシブルディスプレイ73が含まれ得る。カードリーダー72は表示制御部74を含み、表示制御部は、前ページへの移動、次ページへの移動、及びカードリーダー72のその他の制御を可能にさせる。
アートカードの特別の使用
技術説明
技術04の説明
【1624】
さらなる改善では、アートカム装置は、マイクロフォン装置や関連の録音技術を装備するように適当に変更される。写真が撮られる時、周囲の音環境か、その画像に関係するメッセージのいずれかを録音する機会が与えられる。そして、録音された音声は、エンコード形式により出力写真の裏面に印刷される。そのエンコード化は高い復元性を有することが望ましい。その録音された音声は写真に関係する、永久的な音声録音を提供する。次に、再生装置は、エンコードされた音声をスキャンし、この情報を復号化するために提供される。
【1625】
ここで、図233を参照すると、アートカム配列のさらなる改善1601が概略形式で示されており、該配列では、画像1602がCCDセンサー1603により検知され、重要な計算リソースを有するアートカム中央プロセッサ1604に転送されるようになっている。該アートカム中央プロセッサ1604は、メモリー1605に画像を格納でき、該メモリ1605は、好ましくは、メモリーに結合された高速RAMBUS(登録商標)を備える。アートカム中央プロセッサ1604は、また、要求に応じてインスタント写真を提供するため、フルカラー写真、例えば1607の印刷のためにプリントヘッド1606の駆動を制御するようになっている。
【1626】
さらなる改善では、そのカメラ編成1601はサウンドチップ1610も備えており、該サウンドチップ1610は、ACPプロセッサ1604の制御下で、RAMBUS1611を介してメモリー1605に接続されている。そのサウンドチップ1610は、標準的又は専用形式であることができ、例えばサウンドマイクロフォン1613からアナログ入力1612を取り込むDSPプロセッサを備えることができる。或いは、チップの複雑度が増大するのに従い(ムーアの法則)、サウンドチップ1610の機能はACPチップ1604内に組込まれることができ、ACPチップ1604は、最先端のCMOS型集積回路チップを備えるのが好ましい。本発明の範囲内に該当する他の多くの種類の編成を提供できることは容易に明白であろう。
【1627】
サウンドチップ1610は、アナログ入力1612を対応するデジタル形式へ変換し、それをメモリー1605に格納するために転送する。録音プロセスは、カメラ装置上のボタン(図示せず)を押すことによって作動させることができ、そうでなければ、ボタンがACPプロセッサ1604の制御下にあって、録音プロセスは写真を撮るときに実質的に自動化されることができる。録音されたデータは、メモリ1605に格納される。
【1628】
図234を参照すると、カメラ編成は、好ましくは、2つのプリントヘッド1615,1616からなるプリンター装置1606を有し、第1のプリントヘッド1615はプリントメディア1617に画像を印刷するのに使用され、第2のプリントヘッド1616はプリントメディアの裏面に情報を印刷するのに使用される。
【1629】
図235を参照すると、写真メディア1617の裏面への見本の出力が示されている。該出力は図234のプリントヘッド1616にて印刷されたものである。その情報は、場所や日付や時間のデータ1620を含むことができる。そして、場所のデータは、キーボード入力により、或いは、GPSや同様のもののような、付属の位置決めシステムの利用によって与えられる。それらの情報1620は、印刷された画像の記録をユーザが整備するために、視認可能な形式で呈示される。重要なことは、画像1617の裏面には、エンコード形式の音声情報1622も印刷されているということである。エンコード形式は多種多様であることができるが、擦り傷、汚れ、書き込み、磨耗、回転、退色などを許容するよう、エンコード化は高い障害許容力を有する方法で行われるのが好ましい。図236には、データ1625の一部分が概略形式で示され、そのデータは、図234のプリントヘッド1616により印刷されるドット列を有する。その開示された手法は写真の裏面に約2.5メガバイトの任意のデータを保管し、この特別な場合には、音声データを含めることができる。符号化フォーマットは、データのリード・ソロモン符号化の利用に強く依存し、高い障害許容力を提供する。さらに、画像の検知を補助するよう、図236に示されるように、高周波“チェッカーボード状”模様がデータに追加されるように記載される。図234のプリントヘッドにより印刷されるドット列をデータが含むようなデータ部1625が図236に概略形式で示される。
【1630】
録音された音声を“再生”したいときは、読み取り装置1626を通り抜けるように写真1617を移動させる。その読み取り装置1626はピンチローラーを有しており、該ピンチローラーは写真を挟んだ状態で回転し、CCDリニアセンサー装置1627を該写真が通過するようにする。
【1631】
図238を参照すると、図237の音声読み取り装置1626の操作を示す概略形式が示されている。前記CCDリニアセンサー1627は第2のアートカム中央プロセッサ1628に接続されており、該プロセッサ1628は、写真の裏面に格納されているデータを読み取り復号化するよう適切に適合化されている。復号化された音声情報は、サウンド処理チップ1633を介してスピーカー1629で再生するためにメモリー1632に格納される。そのサウンド処理チップ1633はACPデコーダ1628の制御下で動作でき、ACPデコーダ1628は、音量制御、巻戻し、再生および早送り制御などを含むことのできる、種々のユーザ入力制御1633の下で動作する。
【1632】
重要なことには、上述の通り、アートカードの裏面にあたかも情報が印刷されているかのように、CCDリニアセンサー1627及びACPデコーダ1628は読み取りプロセスを実行する。
【1633】
好適な実施の形態の上記の説明から分るように、写真と関係する音声録音を提供するように、出力画像と関係する音声の自動録音のためのシステムが提供される。写真の裏面の画像出力を読み取るための音声読み取りシステムも開示される。
技術06の説明
【1634】
さらなる改善では、先述したアートカムは、後のデジタル画像の生成に利用されるカメラの向きを自動的に決定するための装置を含む。そして、そのアートカムは、画像生成に向きの情報を利用することを適切にプログラムされている。
【1635】
ところで、向きの情報を使用する多くの例が添付図面を参照して説明される。図239を参照すると、第1のポートレート写真1801が示されており、該写真1801には、カメラシステムに入力された日付けや撮影場所情報のような、ポートレート1801に関連した情報を配置するために領域1802が用意されている。さらに、そのポートレート1801は、顔などのような、画像の特定の目に見える部分を変形させる画像処理技術により処理されるかも知れないと予想される。これらの変形は、写真1801を撮影するカメラの向き決定に依存する。また、図239には、カメラが回転されたポートレートモードで使用された第2のポートレートモード画像1803が示されている。残念なことに、横向きモードの画像1801の画像データ1802が同じ位置にあるならば、該データは、最後の画像における望まれない領域1805に現われる。理想的には、ポートレートモードで写真が撮影されるとき、画像の特定の情報は場所1806に現われるべきであろう。なお、直角で、異方性で、画像内容の特定の方法で画像に与えられる画像処理効果は、画像が回転されるときに無駄になってしまうだろう。
【1636】
前記向きセンサー1846は向きを検知し、該検知された向きはACP1831によって、対応するデジタル向き角度に変換される。前記エリアイメージセンサー1802はカメラにより撮影される画像を検知し、該画像はACP1831に転送され、メモリー記憶装置1833に保存される。次に、検知された向きは、撮影された画像がポートレートモードか風景モードであるかを決定するために使用される。該検知された画像はメモリー記憶装置1833から読み取られ、再びメモリー記憶装置1833に出力される前に回転される。最後の結果が回転された画像1808である。また、検知された向きの情報を利用するための他の技術を挙げることができる。例えば、メモリー記憶装置1833に保存されている検知画像は、向き情報と関連付けて保存されることができ、該向き情報は、従来の回転マトリクスマッピング、世界座標系及び局所座標系マッピングに利用される。続いて、その情報の処理を行うコンピュータ・グラフィック・アルゴリズムは、回転向きに画像を操作するように処理している最中にその座標系を使用することができる。位置検知情報(例えば、図239の符号1806)が画像に組み入れられる場合には、このテキストは正しい向きに配置されることができる。さらに、カメラの向きは、顔検出のような、画像に適用される画像を特定するアルゴリズム技術に使用されることができる。顔の位置は大体分るので、向きの情報の利用は顔検出アルゴリズムを大幅に単純化する。
【1637】
向きセンサーは、例えばマーキュリーセンサのような、単純で安価な重力スイッチを含むことができ、或いは、マイクロマシンシリコン加速度計のような、より複雑な小規模の装置にすることができる。
技術07の説明
【1638】
さらに、プリントローラーの他の形態が構成されることができる。図241を参照すると、前述した装置の修正版に利用されるようなプリントロールの他の配列が概略的に示されている。重要なことには、使い捨てのプリントロール(例えば、1910)は、インクを集めることを許容するスポンジ部1912を有する“延長されたリーフ部分1911”を備える。従って、プリントヘッドを横切るように搬送されるフィルムや紙の端縁部へのプリントヘッドによる印刷を許容するため、運転中、前記スポンジ部1912はプリントヘッドの下方に配置される。
【1639】
そのスポンジ部1912は、使い捨てのプリントロール1910の一部を形成するので、プリントロールを使い切ったときにカメラの外に取り出され、それによって、余分の不用なインクがプリントヘッドから取り除かれる。
技術08の説明
【1640】
さらなる実施例では、最大のコントラストを確保するCCDデータストリームの処理によりオートフォーカスが実行される。CCDデータストリームに基づき焦点位置を決定する技術は公知である。例えば、Butterworth−Heinemannによって1993年に出版され、Leslie StroebelとRichard Zakiaにより編集された“The Encyclopedia of Photograpy”や、“Applied Photographic Optics(ロンドン及びボストン、フォーカルプレス、1988年)”にて言及されている。これらの技術は、第一に、入力画像の一部を覆う隣接画素間のコントラスト測定を行う。その画像は、正確なオートフォーカス設定を決定するためにACPにより処理される。
【1641】
このオートフォーカスの情報は、特定のモード、例えば、画像の中に顔の位置を見つけようとする場合にACPによって使用され、画像における顔の大体のサイズを案内することによって顔位置検知プロセスを簡素化している。
【1642】
図242を参照すると、顔検出アルゴリズムによる調査のために大体の画像の特徴を決定すべく使用される方法の見本2001が示されている。
【1643】
例えば、2002,2003,2004のような様々な画像がカメラ装置により取得される。焦点設定の詳細は、オートフォーカスの操作の副産物としてACPに保存される。加えて、ズーム・モータの現在位置もまた使用される(2006)。これらの設定のいずれもがACPにより決定される。次に、大体の奥行き位置(depth location)に応じた大きさとなる、画像中のオブジェクト(興味のあるオブジェクト)を含む画像を出力する前に、ACPは、検知した値に分析技術2008を適用する。
【1644】
次に、画像におけるオブジェクトの位置を見つけるため、該奥行きの値(depth value)が、入力された検知画像2011に加えてACP2031の顔検出アルゴリズム2010に利用される。近距離値2009はポートレート画像の高い可能性を示し、中距離値はグループ写真の高い可能性を示し、遠距離値は風景画像の高い可能性を示す。この可能性の情報は顔検出の目的としても使用されることができ、オブジェクトまでの距離に依存して適用される他の技術やクリップアートと共に、画像中に“描いた”ような効果を生成したり、画像を描いたりする場合に、様々なパラメータを選択するために使用されることができる。
技術09の説明
【1645】
さらなる実施例では、アートカム装置は、そのときのアイポジションを検知するアイポジションセンサーを有するように変更されることができる。その検知されたアイポジション情報は、その検知されたアイポジションに従った修正や変形等を行うため、カメラにより撮影されたデジタル画像を処理するために使用される。
【1646】
アイポジションセンサーの構成は当業者に知られており、多くの製品のカメラ(特に、キヤノン社のカメラ)にて使用されている。アイポジションセンサーは、ビューファインダから視聴者の目への赤外線の照射と、大体のアイポジションを決定するために検出され使用される反射とに依存している。
【1647】
図243を参照すると、アイポジション情報2110と画像2111とはアートカムのメモリーに格納されており、ACPによって処理が行われ(2112)、その処理画像は、プリントヘッドにより写真として印刷するために出力される。画像処理2112の形態は、アイポジション情報2110に依存してかなり変化されることができる。例えば、画像処理の第1の形態においては、画像中の顔の位置を検出して、様々なグラフィック・オブジェクト(例えば、顔との関係で一般的にオフセットしている吹き出し)を適用するために、顔検出アルゴリズムが画像2111に適用される。そのようなプロセスの一例が図244に示されており、第1の画像2115は3人の人間を示している。前記顔検出アルゴリズムの適用により、3つの顔2116,2117,2118が検出される。そして、アイポジション情報は、フレーム中に推定された目に最も近い顔選択するために使用される。第1の例においては、吹き出しは頭2116に対して配置される。第2の例2120においては、吹き出しは頭2117に対して配置され、第3の例2121においては、吹き出しは頭2118に対して配置されている。したがって、画像中の所定の顔の上方に吹き出し文字を配置するために、アートカードは、吹き出し適用アルゴリズムのコード化された形態と、処理された画像とを含むように提供される。
【1648】
アイポジション情報は多くの異なる方法で画像2111を処理するために使用することができるということは容易に理解される。局所的な、或いは特定の方法で焦点合わせの効果を適用し、顔やオブジェクトに特定の変形を与えることができる。さらに、行われた画像処理は、画像の芸術的な演出を含み、該演出は、芸術的な絵筆技術を適用することを含む。その芸術的なブラッシング方法は、アイポジション情報2110に従って特定の方法で適用され得る。最終的な処理画像2113は、要求に応じて印刷され得る。さらなる画像が撮影され、異なる出力画像の生成のため、異なるアイポジションが検出され使用される。
技術10の説明
【1649】
さらなる改善では、アートカムは、撮影画像の明るさのレベルを決定するために自動露出センサーを有するように構成変更されている。この自動露出センサーは、画像の一部分を引き立たせるため、設定された露光量に従って画像を処理するために使用される。
【1650】
望ましくは、前記エリアイメージセンサーは、画像を撮影するときの光の状態を決定するための装置を有する。該エリアイメージセンサーは、検出したレベルに従って、CCDにより取得されたダイナミックレンジの値を調整する。取得した画像はアートカム中央プロセッサに送られ、メモリーストアに格納される。前記エリアイメージセンサーにより測定された強度情報は、また、ACPに転送される。この情報は、保存されている画像に特定の効果を与えるため、ACPによって使用される。
【1651】
図245を参照すると、ACPによって画像を処理するため、自動露出設定情報2201が、保存されている画像2202に関連して使用される。処理された画像は、後でプリンターで印刷2204するためにメモリーに戻される。
【1652】
所定の光の状態に従って多数の処理ステップが実施されることができる。暗い場所で画像が撮影されたことを自動露出設定情報2201が示す場合には、画像の色をより強く、より深く、より鮮やかにするために、画像の画素の色が選択的にリマップされる。
【1653】
写真が撮影されるときが明るい状態であると自動露出情報が示す場合には、より明るく、よりサチュレートするように画像の色が処理される。画像の再配色は、色相・彩度・明度(HSV)フォーマットに画像を変換し、要求に従ってピクセル値を変更することにより行うことができる。該ピクセル値は、印刷の出力色フォーマットに変換して出力することができる。
【1654】
もちろん、数多くの異なる再配色技術が使用されるかも知れない。それらの技術は、好ましくは、読み出し装置に挿入されるアートカードに明確に示されている。他の方法としては、ある状態での使用のため、画像処理アルゴリズムが自動的に適用され、カメラの中に組み込まれることができる。
【1655】
他の方法としては、挿入されたアートカードは、画像に適用される、自動露出設定に限定された、多くの取扱いを有することができる。例えば、暗い画像には、蝋燭等を含むクリップ・アートが挿入されることができ、明るい画像には大きな太陽が挿入されることができる。
技術11の説明
【1656】
フラッシュを使用した結果、取得画像に生じる“赤目”の影響を除去することは、重要な処理の1つである。図246を参照すると、さらなる改善において、CCD装置により取得された画像は、フラッシュが使用されていた場合には、印刷のために処理された出力画像を形成するため、処理ステップ3を受けさせる。図247を参照すると、CCD装置による画像の取得の際にフラッシュが使用されていた場合に使用されることのできる、1つの特別な画像処理アルゴリズム2310が、より詳細に示されている。そのアルゴリズムは、好ましくは、CCDにより画像を取得するためにフラッシュが使用されたときにのみ使用される(2311)。そのアルゴリズムの目的は、フラッシュの利用による画像への影響を低減することである。そのような画像の影響は、写真画像において個々の眼が赤く見えるという、周知の“赤目”影響を含むことができる。また、フラッシュ光の反射面からの反射などのような他の影響は、別途、他のアルゴリズムを使用して処理することができる。画像における赤目の影響を排除するための第1ステップは、画像中における顔を決定することである(2312)。何らかの他の画質増強や色修正を行った後、通常光の下で人間の顔の色についてのHSVの値の地図で近接する範囲を決定することにより、顔検出プロセスが実行される。検出された範囲については、目や口や全体形状や重なりの決定を含む、様々な簡単なテストがなされる。その簡単なテストは、顔の可能性についての結果を生じさせることができ、閾値以上の場合には、画像での顔の位置を決定することができる。
【1657】
画像の中で顔が決定されると(2312)、その顔の中で眼の位置が見つけられる(2313)。そして、赤目除去処理が必要かどうかを決定するため、特別な範囲の色を判断する処理がそれぞれの眼に個別に行われる。もし、赤目除去処理が必要とされるならば、出力画像において、如何なる不連続さや起こり得る不自然さを生じないようにさせながら、赤色を減少させるようにすべく、目のエリアに対して修正アルゴリズムが適用される。もちろん、眼の中心点の周りのガウシアン・デグリーの形式を含む多くの異なる技術が使用される。最後に、メモリーストア2333の裏にアップデートされた形式で画像が書き込まれる(2316)。
【1658】
望ましくは、この時点で、フラッシュ光のスペクトル特性の影響を受けた色をリマップすることを含む、他の修正アルゴリズムが使用される。代わりに、挿入されるアートカードが、画像に適用される多くの処理(フラッシュの設定を特定する処理)を行うようにしても良い。例えば、蝋燭や光の球体(light globe)等のクリップアートが、如何なる閃光も無い画像中に閃光や大きな太陽が挿入されても良い。
技術12の説明
【1659】
さらなる改善においては、第2のインクジェットが写真の裏面への印刷のために用意されている。図248には、標準的な配列の概略図が示されている。ローラー(例えば、2404)に挟まれる紙2403に写真を印刷するためにプリントヘッド2402が用意されている。2つのインクジェット・プリントヘッド2402,2411を備えるという実施例に従い、図249には代替案2410が示されている。プリントヘッド2411は、写真に関連のある重要な情報を写真2403の裏面に印刷するために用意されている。例えば、その写真を撮った時間や日付が、そのインクジェット・プリントヘッド2411によってその裏面に印刷されることができる。加えて、そのアートカム装置はグローバル・ポジショニング・センサーを備えるかも知れない。該センサーは、アートカム中央プロセッサによってデータ取り出しが行われ、その写真が撮られた場所を確定するために利用されるかも知れない。この付加情報は、また、写真出力2403の裏面に印刷されるかも知れない。
技術13の説明
【1660】
プリントロールは堅く巻かれた形態で提供される。残念なことに、プリントロールを堅く巻いた結果として、プリントメディアの特性が、アートカムシステムにより出力される写真には過量のカールがもたらされるというようになるかも知れない。
【1661】
図250を参照すると、3個のローラー配列2511−2513を有するシステムを提供する、プリントロールの別の配列が示されている。そのローラー配列は、プリントロールを抜け出たプリントメディア2514に、しっかりとしたアンチカールを与える。それらの3つのローラー2511−2513はメディア2514を挟み込み、ピンチローラー(例えば、2517)によってプリントヘッド2516へ搬送される前にその紙にアンチカールを与える。それらの3つのローラー2511−2513は、プリントロールケース、或いはアートカム装置の内部に配置されることができる。
技術15の説明
【1662】
図251を参照すると、さらなる改善では、観察者2703に、立体的、或いは疑似三次元的な効果で見せるような写真画像を作ることが望まれる。これらの効果は、2つの画像をすぐ近くに同時に記録し、1つ目の画像を観察者の右眼2704に与え、2つ目の画像を観察者の左眼2705に与えることにより得ることができる。左眼と右眼のために画像を記録し、そして左眼には左の立体的画像を見せ、右眼には右の立体的画像を見せることにより、3次元の立体効果を作り出すことができる。
【1663】
さらなる改善では、左右の眼の画像を取得する、一連のレンズ状の透明な柱によって、写真や立体画像2702は、以下のように、よりはっきりとなるように、構成されるだろう。
【1664】
図252を参照すると、写真紙2702の表面部分の断面図が示されている。断面図2710に明らかなように、写真紙は、左右の立体視が可能となるようにデザインされた、一連のレンズ状の列を有する。画像は、透明な写真紙2710の底面2712に印刷される。
【1665】
1つの画素のピッチ2713は80μmで、ドットの配列ピッチ2714は20μmである。それ故に、1つの画素につき4つのドット2714−2717が配置される。2つのドット2714−2715は左側の立体視のために用意され、2つのドット2716−2717は右側の立体視のために用意される。その写真紙を見る右眼は右側の画素ドット2716,2717の像を取得し(2720,2721)、左眼は左側のドット2725,2726の像を取得する(2723,2724)。それ故、2つの画像がそれぞれの眼に別々に示され、実体写真効果が生じる。主として、2711のような各列(column)のレンズ状の外形に起因する実体写真効果。
【1666】
ここで、図253を参照すると、紙2710の下面部の斜視図が示されている。図253の説明図は、4つのドット2731−2734を有する画素のピッチに加えて、各ドット2730のドットピッチを示すために作図線を含む。図253に明らかなように、右側立体視のために用意された2つのドット2731−2732、及び、左側立体視のために用意された2つのドット2733−2734の4つのドットにより各画素が構成される。そのドット、例えば、2730はプリントメディア2710に配置されているので、該メディアが裏返された時に、正しい立体視が行われる。
【1667】
ここで、図254を参照すると、立体画像を撮像する1つの方法が論じられるだろう。望ましくは、携帯用カメラ装置に配置されたCCDカプラー2740,2741により2つの画像が撮像される。各CCD装置2740,2741は別々の画像を取得し、それら別々の画像は、図235に示されるような左右交互の方法で、立体処理ユニット2742にて結合されるべきである。画像が立体処理ユニット2742にて正しく交互配置されると、その画像は、プリントエンジン2743、及び、写真紙2710の表面2746にその画像をプリントするプリントヘッド2744に送られる。
【1668】
写真紙2710の現在位置が位置合わせユニット2750により検知され、その現在位置が、プリントヘッド2744の制御のためにプリントエンジン2743によりフィードバックされる。その位置は、LEDタイプの装置2780がプリントメディア2710のレンズ状面を照らすと共に、プリントメディア2710の反対側の光導電体2781が周期的な明るさの変化を測定することにより決定される。
【1669】
図255を参照すると、破線2750により示される位置合わせユニットの動作がここでさらに説明される。写真紙2710はローラー2751,2752に挟まれ、ローラー2752は、写真紙(プリントメディア)2710のレンズ状面2754に一致する面を有するように構成されている。その写真紙2710のレンズの周期が2780mmのオーダーなので、ローラー2752の表面は、写真紙2710のレンズ状面のように、誇張して示される。レンズ状写真紙の緻密な周期は、ローラー2752がプリントメディアの他の形態にも同様に使用できることを意味している。
【1670】
ローラー2752の表面は、ローラー2752との一定の空間的関係をプリントメディア2710が維持することを保証する。従って、要求に応じてローラー2752を回転し、それによってプリントヘッド2744を通過するようにプリントメディア2710を搬送するように、プリントローラー2751,2752はプリントエンジン2743の制御下で位置合わせユニット2750によりモニターされながら駆動される。結果として、プリントヘッド2744により印刷されるドットとレンズ状列との位置の合致が維持される。
【1671】
プリントメディア2710がプリントヘッドを通過するように搬送される際に、プリントヘッド2744により立体画像をプリントすることができる。プリントヘッド2744としては、フルページ幅のプリントヘッドが望ましい。
【1672】
もちろん、プリントヘッド2744に関連する、プリントメディア2710の現在位置を他の装置により決定することも可能である。
【1673】
図256を参照すると、好適な形状のレンズ状紙2761と、対応するインク供給(不図示)とを有するプリンターロール2760を結合することにより、カメラ装置が、提案された実施例の原則に従って提供され得る。その紙2761は、プリントローラー2760からピンチローラー2763,2763によってプリント装置2764に取り出される。該プリント装置2764は、さらに、ピンチローラー2765,2766、カッター2767、プラテン2769、ピンチローラー2751,2752、及びプリントヘッド2744を有する。立体画像はプリントヘッド2744によってプリントされ、その紙2761がカッター2767により切断された後に取り出される。その出力2770は透明な形態である。
【1674】
図257を参照すると、画像の排出物2770の上に、平坦な白の面2771を付着することができる。これは、透明2770を貼り付ける粘着面の使用により成し遂げられる。続いて、左右のステレオ画像を生成して、撮影画像に三次元効果を与えるように、図251に示されるように、レンズシステムを通して画像が視認される。図256に描かれたカメラシステムは、理想的には、写真を撮影して直ぐに立体写真を得たい場所に運ぶことができるような携帯用である。
技術17の説明
技術21の説明
【1675】
さらなる改善では、堅くロール状に巻かれて格納される画像メディアは、異方性のリブ構造を持つように処理され、ロール状で運ぶのに好適で、該プリントメディアに印刷された画像を見るときには該プリントメディアのカール度合いが減少されるようになっている。
【1676】
ここで図259を参照すると、この改善の本質に従って取り扱われるプリントメディア3311が示されている(3310)。該プリントメディア3311は、他の形態が好適だけれども、プラスチックの平面的なフィルムにて構成される。該プリントメディア3311は、図259の拡大図に示されるように、ポリマーのリブ状構造3312を有するように前処理されており、実際の列のピッチが約200mである。したがって、該プリントメディア331の一方の表面は、該プリントメディア331の全長を上下に走行する一連の列3312を有するように処理されている。該列3312の断面は図に拡大図で示されている。
【1677】
一連の列3312を使用することのメリットは、プリントメディア3311の表面部分に力3313が加えられた場合に明らかである。その列3312は、プリントメディア3311が堅く巻かれることを許容する一方で、3316の向きにプリントメディア3311が巻かれることに抵抗する。従って、加えられた如何なる力3313も、3315及び3316の両向きに伝達しそうである。そのメディア3311の異方性の性質は、3315及び3316の両向きに支持を与えるように機能するリブ3312によってもたらされ、それによってメディア3311のカールを制限する。また、その材料の異方性の強度は、ロールの中心軸に沿った強度で格納されることが許容される。
【1678】
図260を参照すると、ユーザの手3320,3321の中で画像3311を単に保持して、ポイント3324,3325に僅かな圧力を与えることによって、カーリングによる効果を減少させて、メディア3310上の画像を見ることができる。
【1679】
もちろん、異方性のメディアは、該メディアがプラスチック材料を含んでいる場合には多くの技術を利用して製造されることができる。例えば、それは、押し出し成形法により製造されることができる。或いは、他の技術が利用され得る。例えば、1つの製造方法が図261に模式的に示される(3340)。該方法では、ローラー3342,3343の間でメディア3341がプレスされるようになっている。図261(a)に示すように、ローラー3343はフラットな面を有し、ローラー3342はギザギザのある面3345を有している。説明のため、鋸状の外形は図261に拡大されている。
【1680】
メディアがそのようなプロセス3340での利用に適していない場合、異方性メディアは、互いに貼り合わされた2枚のフィルムの面を利用することによってもたらされる。そのようなプロセス3350は図262に示される。画像の印刷が望まれる第1面3351は、接着剤や熱融合等の方法によって要求通りに第2面3352に貼り付けられる。
【1681】
さらに、プリントメディアの製造の他の方法が可能である。例えば、図263及び図264を参照すると、プリントメディア3360の構造が断面図で示される。該プリントメディア3360の構造は、繊維型の中に引かれる、軟ポリエチレン・ナフタレートにより形成された繊維からなる強化ポリマーを含む第1繊維材料3361から形成される。ポリエチレン等を含む第2の熱流動ポリマー(heat−flowable−polymer)3362は、インク/画像の化学薬品のキャリッジのための“紙”の基材を提供するために使用される。繊維3361と印刷ベース3362とが、図264に示すように一体ユニットを形成するように、メディア・ポリマー3362は粘着力が残っている間(例えば、加熱後)繊維材料3361に押し付けられる。図263及び図264のメディアの配列は、多くの技術に従って作られることができる。次に、図265を参照すると、繊維状材料の成型スプール3380を使用する、第1のそのような技術が示されている。その技術では、多くのスプールと、対応する繊維3381とが、所望のプリントロール長に相当している。それらのスプール3380は、対応する繊維3381が第1ローラー3382に供給されるように配列されている。そして、それらの繊維3381は、加熱された粘着性のあるプリントメディアの層を該繊維に供給するプリントメディア塗布ユニット3384を通過するように引かれる。その後、ローラー3385,3386が、繊維とプリントメディアとが一つに融合するように必要な圧力を供給すると共に、最後に異方性面3388を形成するようにプリントメディアの面を平らにする。その後、該面3388は裁断され、上述のように異方性プリントメディアを形成するように巻かれる。
【1682】
もちろん、要望に応じて繊維状材料の形成を他の形態で行うことが可能である。例えば、図266には、タンク3390からファイバ3391を引く方法により繊維状材料を押し出して生成する1つの形態が示されている。図266の装置は図265のスプール3380に置き換えることができる。
技術24の説明
【1683】
さらなる改良版では、前記アートカムシステムに利用されるアルゴリズムが説明される。該アルゴリズムは、入力画像中における一群の画素を、出力画像では“ブラッシュストローク”で置き換えることにより、写真画像を“描いた”ような演出に自動変換するものである。該アルゴリズムは、ブラッシュストロークをヴァン・ゴッホ・スタイルに近付けるように、画像中のフラットな部分での主要なエッジを自動検出し、該エッジの方向の情報を増殖させる(propagate)ように働く。該アルゴリズムは、前述のアートカム装置にて履行するのに好適である。
【1684】
まず、図267を参照すると、そのアルゴリズムは多くのステップ3601を含む。これらのステップは、エッジを検出するために画像のフィルタリングをする第1ステップ(3602)を含む。次に、それらのエッジは、最終的なエッジを決定する処理(3605)の前に、閾値処理、或いは“スケルトン処理(3604)”される。そして、それらのエッジにベジエ曲線が適合(fit)される。次に、該曲線はオフセットされ(3607)、最終的な画像にブラッシュストロークが描かれる(3608)。それらの処理3607,3608は、画像がブラッシュストロークにより十分に覆われるようになるまで繰り返される。その後、画像への最後の“修正”が実行される(3609)。
【1685】
次にそれぞれのステップをより詳細に説明する。エッジを検出するためにフィルタリングをする第1のステップ(3602)では、図268に示すような係数の集合3612,3613を持つソーベル(Sobel)の3×3のフィルターが前記画像に適用される。ソーベルフィルターはデジタル画像処理にて使用される、良く知られたフィルターであり、その特性は、マサチューセッツのAddison−Wesley出版社により1992年に出版された、規範となる教科書“デジタル画像処理”にてGonzalez及びWoodsにより197−201頁に完全に討論されている。ソーベル微分フィルターは、フィルタリング前に画像をグレースケールに変換するか、或いは、画像を各カラーチャネルにフィルタリングして最大値を取ることにより適用されることができる。ソーベルフィルタリングにより、画像の画素単位のエッジ強度を示すグレースケール画像が作成される。
【1686】
次に、対応する二値画像を作成するために閾値処理が行われる(3603)。その閾値を変化させることができるが、最大強度値の50%の値が適切である。エッジを強化した画像(edge strength image)中の各画素が該閾値と比較され、もし閾値よりも大きければ“1”が出力され、閾値よりも小さければ“0”が出力される。この処理の結果、閾値エッジマップ(threshold edge map)が作成される。
【1687】
次に、図267のステップ3604では前記閾値エッジマップが“スケルトン処理”される。画像をスケルトンする処理は、上述参考教科書の491〜494頁や、他の標準的な教科書に完全に明確に記載されている。そのスケルトン処理は、前記閾値エッジマップにおける相当数の特徴を維持しつつ、“薄く”スケルトン化されたエッジマップを作成する。
【1688】
次のステップでは、画像におけるポイントのリストを含むデータ構造を生じさせる、スケルトン化されたエッジマップにおけるエッジが決定される。好ましくは、予め決められた最小値よりも長いエッジのみがリストに加えられる。
【1689】
前記スケルトン化された画像は、多重分岐が可能な1画素幅のエッジのみを有するので、C++コード片(code fragment)で表された次のアルゴリズムは、スケルトン化された画像において切れ目のないエッジに属するポイントを決定したり同定したりする1つの方法を提示する。それは、分岐したエッジを別々のエッジに分解し、各分岐の湾曲を最小限にする方向にエッジに沿って伸びることを選択する。例えば、分岐ポイントにて、最小の湾曲を生じさせる分岐を助ける。そのコードは以下の通りである。:
Figure 2001523900
Figure 2001523900
Figure 2001523900
Figure 2001523900
【1690】
スケルトン化されたエッジマップにこのアルゴリズムを使用することにより、少なくとも所定のサイズを有するエッジのリストが生成される。好適なサイズは、20画素長であることが分っている。
【1691】
図267の次のステップ3606では、ステップ3605にて得られた各エッジリストのそれぞれにベジエ曲線が適合される。エッジリストのそれぞれのため、区分的なベジエ曲線がポイントのリストに適合される。区分的ベジエ曲線を適合させる好適なアルゴリズムは、“デジタル化された曲線を自動的に適合させるためのアルゴリズム”シュナイダー,P.J.著、Glassner,A.S.編集、Graphics Gems、Academic出版、1990年にて説明されるようなシュナイダー曲線適合アルゴリズムである。このアルゴリズムは、パラメトリックの連続性ではなく幾何学的な連続性のみを目的とし、素早く収束するようにしている。シュナイダーアルゴリズムは機能的であり、もし適合度が乏しければ、最大エラー部で曲線を再分割し、該分割されたものに曲線を適合させる。次に、その分割部分での接線の推定は、分割点のいずれかのみを使用してなされる。密集した点集合のために、ローカルノイズが増幅される傾向がある。曲線を適合することの、改良された品質は、接線の基礎とした分割点から遠ざかる点を使用することで得られる。
【1692】
図267の次のステップ3607では、所望の“ブラッシュストローク幅”の半分だけ初期のカーブリストから曲線がオフセットされる。そのオフセットは、最初の主曲線の両側に平行となるように、互いにほぼ1ストローク幅だけ離れる2つの曲線を生じさせる。
【1693】
特定の区分的ベジエ曲線にほぼ平行な区分的ベジエ曲線を生成するため、次のステップを含むアルゴリズムが使用される。
i. 空のポイントリストの作成
ii. 空の接線(ベクトル)リストの作成
iii. 区分的ベジエ曲線を形成する曲線部分のそれぞれに選択されたポイントを評価し、特定のオフセット値によりそれらをオフセットさせる。前記ポイントリストにオフセットポイントを付け足し、対応する接線を前記接線リストに付け足す。
iv. 得られたポイントリストに区分的ベジエ曲線を適合させる。曲線を適合させるプロセスにおいて接線を予測するのではなく、オフセットポイントに関連した正確な接線を使用する。
【1694】
各曲線の区分は次のようにオフセットさせる:
i. 曲線値と、標準化された接線と、標準化された法線とを求める。その法線は、0.0以上1.0以下の、等間隔に配置されるパラメータ値(例えば、0.25の間隔)で画像のサイズが標準化される。
ii. 前記特定のオフセット値により法線をscaleする。
iii. 前記曲線のポイントと縮小された法線とを使用して線分を組み立てる。
iv. もし、2本の線分が交差するならば、1本の線分に関連するポイントを削除する。
v. 存続するポイント(surviving point)をポイントリストに付け足し、それらに対応する接線を接線リストに付け足す。もし、問題の線分が区分的曲線の最後のものであったなら、パラメータ値1.0に関連するポイントのみを付け足し、次の線分のパラメータ値0.0に関連するポイントは複写する。
【1695】
各曲線部分をオフセットさせるプロセスは次のように行われる。すなわち、
1. 初めに、0.0以上1.0以下の、ベジエ曲線上に等間隔に配置されるパラメータ値のため、各パラメータ値Pn(図269)のため、曲線値3630と、標準化された接線3631と、標準化された法線3632とが計算される。
2. 次に、特定のオフセット値により前記法線3632がscaleされる。
3. 次に、ポイント3630からポイント3636(scaleされた法線3634の端のポイント)までの線分が計算される。
4. 次に、その線分3630−3639は、曲線上の他の全てのポイント(例えば、3638,3639)がチェックされる。もし、いずれか2つの線分が交差しているならば、ポイントの1つ3636は廃棄される。存続するポイント(surviving point)をポイントリストに付け足し、それらに対応する接線を接線リストに付け足す。もし、問題の線分が区分的曲線の最後のものであったなら、パラメータ値1.0に関連するポイントのみを付け足し、次の線分のパラメータ値0.0に関連するポイントは複写する。
【1696】
図270を参照すると、一連のベジエ曲線区分(例えば、C1,C2等)を作成するため、図267のステップ3607に従った曲線のオフセットの最終結果が示されている。最初に、一定間隔で配置された一連のパラメータポイントP1−P5。次に、各ポイントP1−P5に対して、法線のポイントN1−N5(図269のポイント3636に対応する)が作成される。次に、それらのポイントN1−N5を利用して、区分的ベジエ曲線3640が作成される。このプロセスは、ポイントN6−N10を含む反対側の曲線3641にも適用される。このプロセスは、続く区分的曲線C2等にも適用される。この結果、互いに平行で、ほぼ1ブラッシュストロークの幅だけ離れて配置される2本の曲線3640,3641が得られる。
【1697】
次に、一連のブラッシュストロークが、前記曲線に沿って、出力画像中に配置される。それらのストロークは、曲線の接線方向に方向付けられる。各ブラッシュストロークは、他のブラッシュストロークと重ならない場所を規定するフットプリントによって規定される。そのフットプリントが出力画像中に既に表示されているフットプリントと重ならない場合には、ブラッシュストロークはその曲線に沿うようにのみ配置される。ブラッシュストロークが配置されていない曲線は廃棄され、ステップ3607と3608のプロセスが、曲線がなくなるまで(若干の修正を加えられながら)繰り返される。ステップ3607における若干の修正は、図270の曲線C1から曲線をオフセットさせる場合に必要な、半分のブラッシュストロークよりも大きく曲線をオフセットさせることである。
【1698】
上述の方法は、画像中の興味のあるオブジェクトから一連のブラッシュストロークが放射されるようにすることにも利用できる。
【1699】
与えられたサイズのブラッシュストロークで画像が覆われるのに続いて、より小さなブラッシュストロークでさらなる処理がなされ、画像においてブラッシュストロークの重要な特徴をさらに正しくするように、閾値レベルが高められる。そのようなテクニックは、細かさが要求される特定の部分にゴッホが使用するテクニックに近似している。
技術26の説明
【1700】
何らかの画像(例えば、写真)のために、該写真等の中の興味を引く領域(例えば、顔等の位置)を割り出せることが望まれる。一旦、画像中における顔の位置が特定されると、図271に示されるように、顔領域に対して吹き出しを配置するような、多くの奇抜な効果を実行する画像処理を単純にできる。顔領域が一旦検出されると、眼鏡のような顔に関連する物を配置する等、顔を変形させるというような他の効果を履行することができる。
【1701】
前述したように、画像における領域の検出は、領域に限定して芸術的効果を適用するというような、領域特異的処理に適用できる。例えば、背景の空の領域は幅広のブラッシュストロークで描き、最前面の顔の領域は細かいブラッシュストロークで描くと言った処理である。また、画像における特徴の決定等である。色を基準にした領域の検出は、検出される色が肌の自然な色合いであって、画像における人の顔の検出を行う時に極めて役に立つ。
【1702】
照明を変化させると、特定のスペクトルの色のオブジェクトが、輝度や彩度が変化されて画像中に現われるかも知れない。色相はオブジェクトの優位周波数(卓越周波数、dominant frequency)を評価するので、オブジェクトの色は、色相よりも輝度や彩度においての方が大きく異なる傾向がある。図272に示されるように、さらなる改善の方法3801は、輝度や彩度から色相を区別する色空間に、取得した画像をまず変換するという第1のステップを有する。そのようなもので、良く知られている2つの色空間としてはHLS色空間とHSV色空間がある。これらの色空間を含む様々な色空間は、フォーリー,J.D.、ヴァン・ダム、A.、フェイナー、S.K.、ヒューズ、J.F.、コンピュータグラフィックス、原理と実行、第二版、アディソンウェスレー、1990年、584―599ページのような標準的なテキストで十分に説明されている。
【1703】
次のステップは、多数の入力カラーシード(color
seed)を入力することである(3804)。各シード3805は次のように定義される。:
(1)色値のシードカラー範囲
(2)局部的な色の差の制限(a local
color difference limit)
(3)全体的な差の制限(a global
color difference limit)
【1704】
次のステップ3808はビットマップを構築するためにシードを処理することである。
【1705】
図271の方法における最後のステップ3807は、入力画像と同じ容量であって、入力画像中の画素が、シードのリスト3805により定義される色域に属することを示すビットマップを出力することである。この方法3801は、別々のパス3808の各シードの処理と、各パスの出力ビットマップと全体の出力ビットマップの結合を含む。個々のビットマップのどんなセット・ビットも全体のビットマップに書かれている。
【1706】
図273を参照すると、図272のステップ3808がより詳細に示されている。第1のステップ3820では、問題になっているシードが定義されるシードカラーレンジにシードがある全ての色について、シードビットマップが割り出される。次のステップ3821では、該シードビットマップにおける各シードのため、シード位置に連結される入力画像中の4コネクト又は8コネクトの領域を検出する“シード充填”アルゴリズムのためのシード位置として利用される。そのシード充填アルゴリズムは、シード出力ビットマップの領域に属する画素にフラッグを立てる。ステップ3821にてシード出力ビットマップ中でフラッグが立てられたシードは、それらが次のシード充填のためのスタートポイントとして使用されないように、ステップ3820で作成されたシードビットマップから消去される。
【1707】
全てのシードがシード充填処理のために使用されると、シードの全てのリストのために、シード出力ビットマップは全体的な出力ビットマップと結合される。
【1708】
上述の参考文献の979頁〜986頁に開示されているように、シード充填アルゴリズムは標準タイプである。しかしながら、該シード充填アルゴリズムは特定の画素関係テストを有する。
【1709】
もし、色が、前述の画素の色と局部的色差制限と同程度までに異なり、シードカラーと全体的色差制限と同程度までに異なるならば、画素は現在の領域の一部となる。その色差制限は各色成分毎に別々に決められる。スパンは検出されるか、左右から処理されるので、前述の画素は現在の画素の左の画素である。新しいスパンの初めの部分で、前述の画素の色は、もとのスパンの平均色となるようにされる。シードカラーは、シードカラー範囲の中間色となるようにされる。
【1710】
区別できる色の特徴であるが良く知られた顔のような領域を同定するために、1つのシードを使用するのではなく、シードのリストが使用される。
【1711】
局部的色差制限及び全体的色差制限の使用は、画像中の不連続を横切らずに、可能な限り領域を検出するために使用される。領域は様々な色を含むかも知れないが、これらは、その領域にわたって穏やかに変化する。領域における全体の色の変化は、局部的な色の変化よりも一般的に大きい。局部的色差制限の使用(imposing)は、画像の不連続部を横切るというリスクを減少させる。また、それは、全体的色差制限が控えめにならないことを許容する。その領域の検出は、例えば、徐々に明るく或いは暗くなる領域においてでさえより完全にできる。
【1712】
入力画像の色空間が色相を基準としている場合、低輝度又は低飽和のため、色相は少々当てにならないので、色相差制限は好ましくは輝度(又は輝度値)及び飽和によって縮小される。したがって、領域中の暗いエリアや飽和していないエリアにおいて色相が当てにならない場合には、検出された領域にそれらのエリアが含まれるようにその効果は縮小される。これは、もちろん、輝度及び飽和に関しての差制限が前提となっている。
【1713】
また、色相六角形の円の特性に一致して、色相差は正確に計算される。
【1714】
画像中のオブジェクトを検出する上記アルゴリズムを使用した場合に、非常に適切な結果がしばしば得られることは分っている。例えば、上記の方法は、多くの固体を有する画像であって、カラーシードが標準的な皮膚の色調にセットされた画像に利用された。その結果は、画像中の個々の顔の位置を正確に探すことができる。
技術27の説明
【1715】
さらなる改善では、図274に示すように、ソースとなる画像3901が、対応する“タイル状”のカラー画像3902に変換される。その変換処理については後述する。第1の実施例では、各タイル3094は、出力画像3902において標準的配列を取る。さらに、各タイル3904の色は、入力画像3901における対応画素3905の色から引き出したものである。出力画像におけるタイル化処理は、入力画像3901よりも高解像度で行われ、よって、そのタイル化処理は実際において低解像度画像にするために使用される。
【1716】
もちろん、タイルの形状としては、多くの異なるものが可能である。画像をタイル化するタイルの形状は、好ましくは、全体の画像をタイル化して複製する場合に“パターンユニット”に結合されると良い。例えば、図276に示すように、タイル3908と3909は、複製される際に画像をタイル状にして、パターンユニット3907として結合される。
【1717】
さらなる実施例においては、一つ一つのタイルは2つのチャンネルを持つ画像により規定される。第1のチャンネル3970は、図276に示すように、タイルの形状と不透明とを規定する。零でない不透明な領域3971は、タイルの一部である画素を規定する。各画素3971の値はその画素の不透明度を示す。図277及び図278を参照すると、第2のチャンネル3980は、高さ(height field)として、タイルにおける画素表面テクスチャを定義する。図278では、図277のA−A’線に沿った断面図が示されており、強度やピーク3991や傾斜3992,3993が示されている。
【1718】
そのアルゴリズムへの入力は以下の通りである。すなわち、
タイルとして再生されるべきカラー画像
上述したようなタイルのパターン
出力解像度
【1719】
付加される光学上の入力パラメータは下記のものである。
【1720】
該アルゴリズムからの出力は、入力画像にタイル状の演出を行うことである。
【1721】
繰り返しのタイル“パターンユニット”は次のように規定できる:
(1) パターンユニットのサイズ(行の数、列の数)
(2) 画像の第1画素のため、パターンユニットにおけるスタートポイントへのオフセット(行及び列のオフセット)
(3) 連続するパターンユニットの配置についての、垂直方向のオフセット
(4) パターンユニットを構成するタイルのリスト
(5) 1つのパターンユニットにおける、水平方向の連続的なタイルの配置のオフセット
(6) 該パターンの解像度(例えば、該パターンのタイル画像の解像度)
【1722】
該パターンの幅は、水平方向に連続的に配置されるタイルの列オフセットの合計により定義される。
【1723】
全てのオフセットは、連続する画素の組み合わせ(例えば、実数値の行及び列のオフセット)の中にある。このことは、タイルがサブ画素の正確さで配置されることを許容する。このことは、入力画像や出力画像や独立するタイルパターンの解像度を許容する。
【1724】
基本的なタイリング・アルゴリズムは、次のC++コードフラグメントにより実施される。すなわち、:
Figure 2001523900
Figure 2001523900
Figure 2001523900
【1725】
上述の通り、一つ一つのタイルは、その形状/不透明性チェンネルにより特徴付けられる形態を有している。そのタイルの形状並びにタイルの画像中における配置は、一緒になって、そのタイルによって覆われるところの、入力画像中の一連の画素を決定する。出力画像における、そのタイルの色は、その一連の画素に基づく。色を付与するという機能は、限定するものではないが、入力される色を1画素ずつコピーしたり、入力される色の平均を取ったり、入力される色の中央を取ったりすること等を含むようにしても良い。
【1726】
このように色が付されたタイルは、不透明度を無視して出力画像に直接描かれるかも知れないし、或いは、タイルの不透明度に従って出力画像に合成されるかも知れない。後者のケースでは、出力画像は最初に何らかの明度(例えば、黒)や何らかの任意の画像(例えば、入力画像自体)に初期化されなければならない。不透明なマスクやチャンネルを使用した合成画像は、例えばTomas Porter and Tom Duff(1984)“合成デジタル画像”SIGGRAPH会報1984年、253ページから259ページのような一般的な記事に開示されている標準的な合成技術を使用することができる。
【1727】
それぞれのタイルは、テクスチャチャンネルにより定義される表面テクスチャマップを有している。そのテクスチャチャンネルは、タイル中における各画素の相対的な表面高さを規定する。この高さ(height field)は、模擬的な入射光の反射角決定に使用される表面法線を決定するために後で使用される。タイルや、そのタイルが配置される部分の画像に模擬的な光が与えられる場合、表面テクスチャは視覚的により明白になる。
【1728】
タイルが出力画像に直接描かれるか、出力画像に合成されるか、いずれにせよ、最も単純なケースでは、タイルのテクスチャは出力画像のテクスチャチャンネルに直接書かれる。
【1729】
各タイルの不透明チャンネルは、タイルの背景への合成を制御する。加えて、画像サイズの不透明チャンネルは、タイル全体の背景への合成を制御するかも知れない。最も単純なケースでは、タイルの不透明度は、タイルの合成に使用される不透明度を生じさせる、大域的な不透明度(global opacity)によって測られる。図279を参照すると、大域的な不透明度を使用するプロセスの一例が示されている。第1のプロット4000では、折り返された不透明度プロフィール(例えば、4001,4002等)の単純な形状を持つ各タイルの、断面の輪郭の例が示されている。次に、不透明度4005の段階的増加からなる、好ましい大域的不透明度チャンネル4004が示されている。上述した単純なケースでは、増加している不透明度のエリア(例えば、4007)を有する不透明度4006を生じさせるため、大域的不透明プロフィール4004でタイル不透明プロフィール4001が測られる。
【1730】
もちろん、大域不透明チャンネルを伴った局所タイル不透明度の組み合わせのスキームは可能である。例えば、最初に、各タイルについて、画素の不透明度が平均化され、画素毎の不透明度は、画素毎の大域的不透明度ではなく、この平均化された不透明度によって測られる。
【1731】
上述したタイリング・アルゴリズムが、僅かな簡単な修正を行うことによって、描いたような効果を簡単に生じさせる上で役立つということは、驚きを持って発見されている。パターンユニットをブラッシュストロークの堆積として取扱い、各タイル画像がブラッシュストローク(例えば、ブラッシュヘアーの層や、ストローク端部で厚みを有するもの)に見えるようにすることにより、ストロークがオーバーラップされて、描いたような効果がタイル内やパターンユニット内に実行される。次に、このアルゴリズムは、連続的にパターン内でタイルを反復するよりもむしろ、無作為にストロークコレクションからストロークを選択するために修正される。さらに、下に描かれた、多くののテクスチュアリング、配置、彩色効果は代替的付加的に供給され得る。
【1732】
第一に、入力イメージ内に一般的には様々なレベルの細部がある。入力イメージは、タイリング又は彩色アルゴリズムを介して再現されたとき異なったレベルの細部を要求する。これは、多様な変化内でイメージの加工、それぞれの変化内の異なった程度のストロークコレクションの利用、それぞれの変化と(累積的な)バックグラウンドの合成によって達成され得る。画素単位の詳細な寸法で構成された、イメージサイズにされた細部マップは、それぞれの変化過程のイメージ部分を制御するために利用され得る。それぞれの変化は、その上でイメージの対応部分が処理される“細部境界”が与えられる。継続的な変化に、細部のレベルの増加とストロークコレクション割合の減少が与えられる。最初の変化はこのように、例えば全体のイメージを加工処理し、第2の変化は細部の確定したレベルを加え、第3の変化はなお多くの細部を加える、などである。これは、画家がどんどん細部を加えていくことによって絵画を精密にしていくのにいくらか類似している。この細部マップ自体は、イメージ内にエッジを配置すること、言い換えると派生したフィルターの間をイメージが通過することによって、簡単かつ自動的に生成され得る。
【1733】
タイルは概念上は柔軟性の無いもの(rigid)である。その表面のテクスチャは、背景の表面テクスチャや、重なり合う他のタイル(通常は如何なる他のタイルとも重なり合わないが)の表面テクスチャからの影響を受けることはない。他方では、ブラッシュストロークは概念的には柔軟である。その厚さや表面テクスチャは、背景の表面テクスチャや、重なり合う他のブラッシュストロークの表面ストラクチャの影響を受ける。特に、そのブラッシュストロークは、背景の凹部に充填される傾向があるが、背景の頂点(peak)では薄くなる傾向がある。(背景は、そのストロークに先行するブラッシュストロークの影響を含んでいる。)
【1734】
別の実施例においては、ブラッシュストロークが描かれる場合、幾つかの方法の内の一つによって、そのテクスチャは背景のテクスチャと結合される。まず、新しい背景高さを生じさせるために、ストローク高さは背景高さの一定割り合い(例えば、25%)だけ付加されるが、その高さは減少しないようにされる。このテクスチャの効果は図280(a) から(c) を参照して説明される。図280(a) においては、シングルタイルのブラッシュの断面輪郭の例が示されている。図280(b) においては、図280(a) のブラッシュパターン4010を覆う、画像部分の断面が一例として示されている。図280(c) においては、上述したルールを使用した結合処理の結果が示されている。線分4013,4014,4016,4017は、画像値4011が対応するブラッシュ値4010を超えるように、画像4011から直接取られたものである。しかしながら、4015の部分は、画像4011の対応部分の25%に、スト録4010のストローク高さを加えて計算されたものである。ストロークの下の背景が計算される。個々の画素において、背景の高さがもし平均よりも低ければ、ストローク高さは単に背景高さに加えられる。このようにして、背景の凹部にストロークが“充填”されるような擬態が行われる。もし、背景高さが平均に等しいか、平均よりも高ければ、ストローク高さはその平均に加えられる。このようにして、背景のピークによってストロークは薄くなる。背景がストロークを実質的に打ち破らない(例えば、ゼロまで薄くならない)ようにするため、その高さは、最小量(もちろん、ゼロを含む、最小ストローク厚さ)に応じて増加するようにされている。
【1735】
さらに、テクスチャー結合アルゴリズムの結果である、ストロークの正味の薄さを計算するため、ストロークの不透明度が計られるかも知れない。このようにして、背景のピークによりストロークが薄くなる場所は、より透明になる。
【1736】
タイル/ストロークの位置が決定されると、さらに、多くの方法によって処理がされるかも知れない。例えば、手によるタイルやストロークのポジショニングにおける自然なバリエーションを真似るため、タイル/ストロークの位置は、特定の範囲や特定の速度で任意にジッターされるかも知れない。ストロークよりもタイルを真似た場合、通常は、タイルが重ならないように、タイルのジッターの範囲が限定される。例えば、“内部タイルのギャップ”の幅のみが変化される。ブラッシュストロークを真似る場合、ブラッシュストロークは通常は重なるので、ストロークジッター範囲は通常はより狭く限定される。
【1737】
さらに、タイルやストロークの位置についてのより標準的なバリエーションを真似るため、置換マップに従って各タイルの位置が置換される。その置換マップは2つのチャンネルからなる。第1は行の置換を含み、第2は列の置換を含む。
【1738】
タイル/ストロークの色自体は、芸術的な効果のためにさらに処理されるかも知れない。例えば、
(1) 制限されたタイルや制限されたペイントパレットを真似るため、その色は、任意のパレットにマッピングされるかも知れない。
(2) タイルカラーの不完全性や、絵の具を混合するバリエーションを真似るため、その色は、特定の範囲及び特定の速度で任意にジッターされるかも知れない。
(3) その色のクロミナンスは、特定の速度で任意に変換されて、反対色を使用した印象派のスタイルを真似るかも知れない。
【1739】
タイル/ストロークの平均大域不透明度が決定されると、芸術的効果のためにさらに処理されるかも知れない。例えば、平均化された不透明度が、ゼロの不透明度や100%の不透明度に二値化されるかも知れない。このことは、タイルの不存在や存在を作り出す。もし、平均化された不透明度が二値化されたなら、大域的不透明度の再生は、入力画像に部分的に誤差拡散を行うことによって改良されるかも知れない。これは、画像中に重要な効果を生成するために見出されている。
【1740】
さらなる実施例が、アートカム装置の適切なプログラミングにより実行される。キャンバスに画像を“描く”ときの画家は、通常は、絵の具の色が限定されたパレットと、制約されたセットのものであって特徴的な筆遣いを形成するブラシとを用いて仕事をし、そして、独特の色や質感のキャンバスに描いている。そのことに気付くことにより、さらなる実施例が構築される。描くシーンをより真実に近付けたり真実から遠ざけたりするため、そのシーンについての画家のビジョンを描くため、画家は、異なる色の筆遣いを行う。いくつかの絵のスタイルが、シーンの特徴や色を再生するために試みられる。他のスタイルが、シーンの特徴や色についてのより多くの印象を取得するために試みられ、より単純で一様なブラッシュストロークや絵の具を混合したり重ね塗りしないことによって特徴づけられる。これらの印象派のスタイルは、写実派のスタイルに比べると より明るくより鮮明な色を達成するが、詳細な描写は犠牲にされる。
【1741】
“描かれた”演出となるように写真画像を自動的に変換するコンピュータシステムが、一般的には、入力画像中の画素から何らかの方法で取得した色のブラッシュストロークを出力画像中に入れる。そのようなシステムの課題は、上述したような、人が描くという行為の態様を取り入れることにある。印象派の演出を作り出す部分的解決法は、実際の芸術家の絵の具の色に基づくカラーパレットの構築と、入力画像に可能な限り一致させるような該パレットからのブラッシュストローク色の選択と、入力画像と整合する全体的な色を維持するための色の誤差拡散とにある。
【1742】
さらなる実施例においては、生の色だけを基準とするのではなく、ブラッシュストロークの最終的な色を基準とした画像を誤差拡散させるアルゴリズムが構築されている。この最終的な色は、絵の具の色や、ブラッシュの構成や、キャンバスの色や生地によって決定される。
【1743】
該アルゴリズムの入力は以下の通りである。すなわち、
* 絵の具の色が限定されたパレット
* それぞれが不透明マップ(opacity map)やバンプマップ(bump map)にて定義された一連のブラッシュストローク。バンプマップの使用は三次元グラフィック演出の当業者に良く知られていて、例えば、Graphic Gemsの4巻433−437ページに記載されている。
* 色画像やバンプマップにより規定されるキャンバス
* 絵画として再生されるカラー画像
【1744】
前記アルゴリズムの出力は、入力された画像の演出、つまり、ペイントパレットによって着色されたブラッシュストロークでキャンバスに“描く”ことである。該キャンバスやブラッシュストロークはテクスチャーされていると共に、これらのテクスチャーはペインティング工程の間は結合されているので、最終的なペインティングは一方向的に照らされるかも知れない。
【1745】
描かれたような効果を成し遂げるため、出力画像と入力画像との間で、より優れた色整合を成し遂げるための基本タイリングアルゴリズム(tiling algorithm)が使用される。最初のプロセスは、ブラッシュストロークのパレットフィードバックアルゴリズムである。このプロセスは、ストロークのカラーパレットの表を作成して実行される。図281に示す表4025は、ブラッシュストロークB1,B2,B3等により区分けされている。ブラッシュストロークセット中の各ブラッシュストロークBnのため、そして、ペイントパレットセット中の各ペイントカラーC1−CNのため、ストロークカラーS1−S4は、図282のフローチャートを参照して説明される通り、次のように決定される。すなわち、
1. ステップ4021にて、対応するブラッシュストロークB1を色付けるためにペイントカラーC1が使用される。
2. そして、不透明マップとバンプマップとを使用して、色つきのブラッシュストロークが空のキャンバスに合成される。
3. ステップ4023にて、描かれたストロークの平均色が計算される。この平均色が、図281のストロークカラーS1である。そして、ポインター(不図示)が、ストロークカラーパレット入力S1から、対応するペイントカラーパレット入力C1にポイントするためにセットされる。
4. そして、ストローク・カラー・テーブルが色によりソートされる。
【1746】
画像を描く場合、図283に示されるように、各ブラッシュストロークが通常の方法で選択される。そして、各ブラッシュストロークの所望の色が入力画像から通常の方法で決定される。しかしながら、ペイントカラーパレット中で最も近いペイントカラーCnは使用されない。その替わり、そのブラッシュストロークのため、ストロークカラーパレットの中で最も近いストロークカラーSnが使用される。次に、そのブラッシュストロークのためのペイントカラーとして、対応するペイントカラーCnが絵の具の色として使用される。
【1747】
該ペイントパレット中で利用できる色の範囲は制限されているため、通常は、所望の色と選択できる色Cnとの間にはいくらかの違いがある。この違い、或いは誤差は、誤差拡散を行う通常の方法で、入力画像の近接した部分に誤差拡散されることができる。所望の色とペイントカラーCnの違いの誤差は使用されない。代わりに、所望の色とストロークカラーSnとの違いである誤差が、この目的のため、ストロークを横断する平均色として使用される。実際のブラッシュストロークは他のストロークと重なるのに対して、ストロークパレット中のストロークは空のキャンバスに描かれるので、この平均色Snがストロークパレットにおける平均色と異なるかも知れないことに気付く。
【1748】
この方法は、他のペインティング・パラメータの効果が同じ方法で取り入れられるように拡張することができる。これは、ペインティング・メディウムの種類(パイン油、チョーク、チャコール等)や、キャンバスの種類(テクスチャー紙、グラス等)などを含む。各パラメータは、ストロークカラーパレットの多次元表に次元を加えるが、本質的なアルゴリズムは変化しない。
【1749】
芸術家は、時折、1つのブラッシュストロークに2色又はそれ以上を混合させる。印象派のスタイルでは、これらの色はしばしば十分には混合されず、また、混合されない色がストロークの分離された成分として視認される。
【1750】
上述したアルゴリズムにおいて、多数色のブラッシュストロークは1色のブラッシュストロークの一般化にすることができる。それは、多数の不透明度マップにより適宜されることができる。これらの不透明度マップは、ブラッシュストロークの共通の排他的領域のため、ゼロでない不透明度を定義する。それらは、全体的なブラッシュストロークの形状を規定する。そのアルゴリズムに次の修正を導入することにより、多数色のブラッシュストロークが提供される。
【1751】
一つ一つのブラッシュストロークのためにストロークカラーパレットが構築される場合、ペイントカラーパレットからのペンチカラーの可能な組み合わせでブラッシュストロークに色が塗られる。このことは、小さなペイントカラーパレットのため明らかに役立つ。各ストロークカラーパレットの入力は通常の方法で構築し、各ストロークカラーパレットは対応する多数のペイントカラーパレット入呂気宇。画像を描く場合、通常の方法で、ストロークカラーパレット中で最も近いストロークカラーを見つける。しかし、ストロークは、多数のペイントカラーで色づけされる。
技術30の説明
【1752】
図284を参照すると、アートカム装置のプログラムのさらなる改善のステップが示されている。標準的な技法の通り、ブラッシュストロークが区分的ベジエ曲線として特徴付けられると想定される。ブラッシュストロークは所定の厚みを持つと想定される。そのブラッシュストロークは一連のベジエ曲線からなる。第1のステップ4211は各区分的ベジエ曲線を処理することである。それぞれのベジエ曲線は、標準的な技術を使用して、最初に折れ線に変換される(4212)。次に、“最も速い”エッジ(その意味は以下で明らかになる)が、所定のインクリメントにおける最も速いエッジを“出発する(step along)ために使用される。その位置は、ブラッシュストローク4214を合成するために使用される。
【1753】
図285を参照すると、ブラッシュストローク4221の基礎を形成する第1のベジエ曲線4220が示されている。そのベジエ曲線4220を対応する一連の線分(例えば、4222)に変換するプロセス。折れ線の区分に線形近似するプロセスは標準的で良く知られており、普通の教科書に取り上げられている。その線形近似プロセスの一環として、各線の端点の法線(例えば、4224)がまた決定される。それらの法線は、必要ならば、線の傾きを補間する方法によって、点(例えば、4225)に隣接される線から決定されることができる。
【1754】
図286を参照すると、2本の線分4233,4234の拡大図が示されている。各点(例えば、4232)のために、法線(例えば、4233,4234)は、それぞれの側にブラッシュストロークの幅の距離だけ突き出ている。点4236は突き出た法線4237,4238を有している。次に、法線4233と法線4237との間の距離4239が測定され、法線4234と法線4238との間の距離4240が測定される。エッジ4239に沿って移動するbodyが、エッジ4240に沿うよりも早く移動しなければならないという意味で、最も長い距離を有する側に“最も速い”エッジが定義される。したがって、最も速いエッジは曲線の凸状のエッジである。
【1755】
最も速いエッジは、等しい量だけ離れたパラメータとしての所定数のポイントを定義するために使用される。図286の例は、線4239に沿って等間隔に規定された3つのポイント4243−4245が示されている。ほとんどの間隔は図286に示されたものよりも長い。
【1756】
次に、各ポイントのパレメータ位置が決定され、線4230に沿ったパラメータポイントを決定するために使用される。その位置は、ブラッシュストロークが配置される位置である。
【1757】
図287を参照すると、一連のブラシスタンプ4246,4247,4248が示されている。2つのスタンプ4246,4248は線の端の部分に使用され、部分4247は線の中央部分に沿って連続的に使用される。
【1758】
該ブラシスタンプは、マットチャネル、バンプマップチャネル及びフットプリントチャネルの3つの別々のチャネルにより定義される。図287の例では、ブラッシュのマットチャネルが示されている。“最大”テクニックとして知られている、第1のテクニックにおいては、マットチャネルやバンプマップチャネルは、分離されたブラッシングバッファにおいてブラッシュストロークを構築するために使用される。この合成技術においては、ブラッシュは最大不透明度を取ることにより構築される。そのバッファにて新しい不透明度が古い不透明度を超える場合、その不透明度は新しい不透明度に置き換えられる。生成された結果は、フォトショップにおけるエアーブラシやペインティングに近似したものとなる。
【1759】
第2の合成技術においては、“フットプリント”技術として知られる。現在のラインのための前述したブラッシュスタンプが画素のためのブラッシュバッファに書き込まれなかった場合にのみマット値が変更されるように、フットプリントチャネルが使用される。第3の技術においては、マットチャネルやバンプマップチャネルが使用されるが、このとき、マットチャネルやバンプマップチャネは最小である。
【1760】
上記の技術は、特に水彩画の効果を真似る場合に良い結果をもたらすことが分っている。次のコードセグメントは、さらに改良された実施例の処理を示す。:
Figure 2001523900
Figure 2001523900
Figure 2001523900
Figure 2001523900
Figure 2001523900
技術31の説明
【1761】
図288を参照すると、アートカム装置4302を含む、さらなる改善の配列(4310)が示されており、該アートカム装置4302は、適切な文字認識のできるタッチパッドLCDからなる文章入力装置4303に接続されている。代わりに、キーボード入力装置(例えば、4304)を文章入力装置とすることができる。文章入力装置の好適な形態は、前記アートカム装置4302に接続されるように適応されプログラムされたアップルのニュートン(登録商標)装置にて構成され得る。また、文章入力装置4303の他の形態が利用されることもできる。さらに、アートカム装置4302に挿入されるアートカード装置4305が提供され、該アートカードの表面に描かれている図に従って検知画像を(予め十分に検討されたように)処理するようになっている。
【1762】
図289を参照すると、さらなる改良版の操作に関しての好ましい形態が示されている。この操作の形態においては、アートカード4305は、ローマ字で規定されるフォントと、該フォントで特別の文字を作成する方法の説明とを含むVarkスクリプトで符号化されている。例えば、その説明は、そのフォントで新しい文字を作成するために外形を処理する方法を含む。
【1763】
入力装置4303,4304は入力装置フォントを有する。その入力装置フォントは、情報を表示するためにテキスト入力装置4303,4304によって使用される。特に、非ローマ字が使用される。したがって、入力装置4303,4304は、アートカード4305によって要求されるテキストの入力のために使用される。入力に基づき、フォントのアウトラインが、特別の文字の作成のためにアートカード4305に符号化された指示に従ってアウトラインを処理するアートカムユニット4302にダウンロードされる。それらの文字はアートカム装置4302によって作成され、印刷される出力画像の一部として表示される。
【1764】
この操作方法を使用することで、アートカム装置4302やアートカード装置4305にフォントの配列を保存することになしにアートカム装置4302の柔軟性が拡張される。この方法によれば、非ローマ字言語形式でアートカム装置4302を操作するために利用されるモデルの複雑さを減少すべく、テキスト入力装置(例えば、4303,4304)が各国ごとであることのみが必要である。
技術33の説明
【1765】
さらなる改善では、デジタル画像カメラで撮影し、前述の特許出願にて開示されているような所定のdpi(例えば、1600dpi)を持つインクジェットプリンターのようなプリント装置で印刷するという、カメラ画像の再生が望まれることが前提である。
【1766】
図290を参照すると、そのようなデジタル画像カメラ装置4501が、標準的な出力解像度の画像4502をプリントアウトするように設計されている。その画像4502は、マルチカラー出力(シアン、マゼンタ、イエロー)であって、入力画像の各色成分のためのドットの配列からなるインクジェットプリンター装置によって印刷される。出力された写真4502のコピーを希望する場合には、まず画像がスキャンされ、適切な色成分が抽出される。
【1767】
さらに改良された方法が図291に示されている。この方法では、写真画像4502がリニアCCD4510によって各色成分にスキャンされる。適切なリニアCCDは技術的に知られている。リニアCCD装置の構成及び操作の説明のために、「“CCDアレイ、カメラ、ディスプレイ”Gerald C Holst著、1996年発行、SPIE オプティカルエンジニアリング出版」のような標準的な文献が参考とされる。さらに、適切なセンサー装置は、家電についての電気電子技術者協会報告書で定期的に述べられている。
【1768】
CCDアレイ4510は、CCDヘッドの下を通過する画像をスキャンして信号を生成し、アナログ信号をデジタル信号に変換する。CCDアレイ4510は、写真のドット解像度の3倍である、1インチ当たり4800ドットにする。該CCDアレイ4510は、各色に対して一つずつ三原色、フィルター、CCDを有する。4800dpiは一連の千鳥配列CCDアレイを使用することにより達成される。
【1769】
前記データ値はフレームバッファコントローラ4512に転送され、色成分毎にフレームバッファ4513に保存される。保存された画像は、写真の上にプリントされ、前述したように、印刷時の約3倍の解像度であるCCDスキャニング解像度にてCCDによりスキャンされるとき、本来のドットの位置に配置されるように処理される。残念ながら、スキャンされた画像には多くの欠陥が存在するかも知れない。これらの欠陥は、写真4502がCCDスキャナー4510に送られるときの写真4502の微々たる回転に加えて、写真4502の傷や歪みの影響を含む、スキャニング工程に関連した欠陥を含む。
【1770】
パターンやドットを決めるための手順は、写真4502の回転を抽出するプロセスの使用に依存する。そのような回転を割り出す(determine)ため、多くの方法を利用することができる。
【1771】
例えば、インクドットのスキャンされたパターンは前記回転に基づく基本的特徴周波数(fundamental characteristic
frequencies)を有する。写真には、ドットの一般的な配列でインクが印刷されるので、その画像のフーリエ変換が、起こり得る回転を割り出すために使用される。その代案としては、写真の境界(abrupt boundary)やCCDの下方のスキャニング面(the underneath scanning surface of the CCD)からカードのエッジを割り出すことができる。さらに、画素の所望のドットピッチが決定(determine)される(1600dpi)。
【1772】
写真のスキャン画像の一端縁から、ドットがそれぞれの出力ドット位置に配置されているかどうかを判断するための処理がなされる。重要なことは、出力ドットの判定を行うように、カードを横切る同期を維持するという方法が使用される。1つのカラムから次のカラムへの間隙についての局部的な変化は極めて小さく、多くの変化は画像の長さを超えることは明らかである。
【1773】
回転や、隣接するドットの間隔を割り出す処理の1形態は、ドット中心(“重心”として知られたもの)の列を記録し(keep)、カラム中の重心をカラム方法によって書き換える(update)ことである。図292を参照すると、重心処理の一形態が示されており、画像領域4520は、カードの表面部分にて見本のインクドット4521を有している。各画素における各インクドットのサイズは、対応する画素サンプリングレートの約3倍である。一連の重心のマーク(例えば、4522)は、各カラムに保持(keep)されている。カラムC+1の重心マークにおいて初期の重心の回転を割り出すために、前に計算されていた重心マークや、隣接するカラムCの重心マークが利用される。例えば、重心マーク4523の初期位置を割り出すために、重心マーク4522,4524,4525が利用される。初期位置が割り出されると、さらなる調整が必要かどうかの判断のため、重心マーク4523の周りの画素値が調べられる。
【1774】
期待される位置から重心4523が動いているとの判定は、該ポイント4523の周りの画素値を調べることにより導き出される。その調査はX及びY方向で別々に行われ、その移動は、それらの方向で別々に行われる。
【1775】
多くの異なる方法が使用され得る。重心4523の微小な修正が必要かどうかを判断するための1つの方法は、図293に従って述べられる。この方法によれば、限定された数のインクドット配列のみが可能であることに気付く。これらの可能な配列は、図293に4530で示される通りのものであって、現在の画素(current pixel)4531と、隣接する2つの画素4532,4533を示す。それぞれのインクドット4531−4533は、CCDセンサーにて検知されるところの、ほぼ3つの画素値を有する。図293における各画素パターン4530のため、デジタル変換された後のCCD出力値4535の例を示す。CCDのサンプリング効果や、他の機械的及び明るさの効果のため、ドットパターンのCCD値4535は、AD変換されたガウス曲線(或いは、その一部)と同等なものをしばしば含む。したがって、切り立ったエッジは通常は与えられない。しかしながら、期待された断面は、最も近い断面を割り出すために得られたものを調べることができ、誤差はそれほど大きくはなく、よりフィットするために制限内に調整される。この方法によれば、新しい重心位置は第1のディメンジョン内にて得られる。もちろん、重心を調整するという課題は2つの方向において対称的であり、同じ処理ステップが他のディメンジョンにおいても適用される。多数の他の技術が、見本画像からトレーニングされたニューラル・ネットワークのような、より発展した技術が使用されるかも知れない。
【1776】
調整した位置が割り出されると、重心4523(図292)が僅かに調整され、重心割り出しの処理が続行される。その新しい重心位置から、特定の重心位置のためにオン又はオフのインクドットの値が記録されるべきかどうかを判断するために周囲の見本の値が調べられる。
【1777】
図291に戻ると、記録されたインクドット値はインクドット配列4516に保存され、同じ解像度(1600dpi)か異なる解像度でプリンター(例えば、4517に示すものであって、オリジナル写真4502に等しいインクドットの写真4518をコピーするためのもの)にて印刷するために利用される。この方法によれば、ネガの使用や、画像をデジタルで分割して保存することをしなくても、オリジナル写真からのコピーである高品質写真のコピーが得られる。
【1778】
もちろん、処理のスピードアップと、大容量のデータのセットをフレームバッファ等に保存する必要を排除するため、カスタマイズされたリアルタイムのパイプラインの基本設計概念の利用を含む、多くの改善が可能かも知れない。
技術34の説明
【1779】
さらなる改善では、アートカム装置は、2Dモーションセンサーを含むように変更さる。そのモーションセンサーは、2軸での動きを検出する小さな微小電気機械システム(MEMS)装置や、他の好適な装置を備えることができる。そのモーションセンサーはカメラ装置に取り付けることができ、その出力はアートカム中央プロセッサによりモニターされる。
【1780】
図294を参照すると、さらなる改善の好ましい配列の概略図が示されている。加速度計4601は、CCD装置から不鮮明な検知画像を受け取るアートカム中央プロセッサ4602に出力する。そのアートカム中央プロセッサ4602は、写真が撮影されたときのカメラの角速度を決定するために、前記加速時計の測定値を使用する。そして、その測定値(速度因子)は、好適にプログラムされたアートカードプロセッサー4602によって利用され、不鮮明な検知画像4603に対してボケ修正が行われ、ボケの無い出力画像4604が出力される。アートカードプロセッサ4602におけるボケ修正プログラムとしては、コンピュータプログラミングやデジタル画像修復の当業者により知られている標準的なアルゴリズムが使用される。例えば、“Selected Papers on Digital Image Restoration”、M.Ibrahim Sezan編集、SPIE Milestoneシリーズ、74巻、特に再版の167−175ページが参照される。更に、簡易化された技術は“Image Processing Handbook” 第2版、John C.Russ著、CRC出版発行、336−341ページで明らかにされている。
技術38の説明
【1781】
図295を参照すると、さらなる改善の方向に従った構成として、付属のプリンター5010の形態が示されている。該プリンター5010は、空洞5012の中に挿入されるプリントロール5011を有するように設計されている。該プリントロール5011は空洞5012に挿入されると共に、ローラー(例えば、5013,5014)を有している。該ローラーは、内部の紙を挟むと共に、画像の印刷のため、要求に応じて該紙をプリントヘッド5015に搬送する。理想的には、該プリントロール5011は、消耗されるインクを供給する装置に加え、プリントメディアを備えている。インクは、画像の印刷の際にプリントヘッド5015により消耗される。
【1782】
プリンター5010は、アートカムの実施例の適切な再加工により構築されることができる。プリンターは、USBポートを介してコンピュータ5024と通信する。プリンターユニット5018はプラスチック成形のケースであり、画像を印刷するための内部プリントヘッド5015を有する。
【1783】
そのプリントヘッド5015は、自動ボンディング技術によりプリントヘッドチップ5020に接続されている。プリンターユニット5018のサイズを減少させるため、該プリントヘッドチップ5020はフレキシブルな回路基板に取り付けられている。USB通信ケーブル5022を介してプリンターユニット5018に転送される描写(description)から画像を生成するため、該プリントヘッドチップは、最新の半導体製造技術により作られ、関連したメモリー等を有している。もちろん、他の多くのインターフェースの形式が利用され得る。プリンタヘッドチップは、予め説明され得る。
【1784】
従って、画像の印刷が望まれるとき、プリンターユニット5018に接続されているコンピュータシステム5024は、ケーブル5022を介してプリントユニット5018にページ記述言語(page description )を転送する。プリントチップ5020は、後でプリンタヘッド5015で印刷される画像を準備する。プリントロール5011は、消耗されるプリントメディアやインクを、使いやすい形態で供給し、プリンターユニット5018により使用されると、そのプリントロールは新しいプリントロールに置き換えられる。
技術40の説明
【1785】
さらなる適応では、カメラシステム及び印刷システムは免除され、大きなスクリーンの読み取り装置(large screen reader)に置き換えられる。アートカードは、裏面に情報が書き込まれ、その情報の表示が他の面に印刷されるように設定されている。例えば、アートカードは本のコンテンツや新聞のコンテンツを含むことができる。そのようなシステムの一例が図296に示されるものであって、アートカード5210はその一面に本のタイトルを有し、他の面には、印刷されたコード化されたデータを有する。カード5210は読み取り装置5212に挿入される。この読み取り装置5212は、折り畳むことができるようにフレキシブルなディスプレイ5213を備える。カードの読み取り装置5212は、前や後ろにページをめくったり、他の制御を行ったりするためのディスプレイ制御装置5214を有する。
【1786】
したがって、図296の構成のものは、本や新聞や雑誌や技術マニュアル等の形式で情報を効率良く配布できることが分る。
【1787】
数多くの変更及び/又は修正が、大まかに説明された本発明の精神または範囲から逸脱することなく、特定の実施の形態に示されるような本発明へなされてもよいことは、当業者によって理解されよう。したがって、本実施例は、図示されていてもされていなくても、あらゆる点で考慮されるべきである。
技術47の説明
【1788】
さらなる改良は、擬似的なブラッシュストロークを使用してキャンバスの上に画像を“描く”という処理について論じられる。バンプマップ技術が使用されることが前提であり、特に、使用される各画像が、画像表面のテクスチャーを規定するバンプマップを有することが前提である。
【1789】
図297には、見本としてのラウンドブラッシュ・バンプマップ5901が示されている。図298では、図297のA−A’線の断面が示され、該断面は、一般的なラウンドブラッシュストローク5901の表面の一般的外形5903を有する。図297のバンプマップを有するブラッシュストロークを一般的なへシアン形の“キャンバス”画像(バンプマップは図299に示され、B−B’線の高さは図300に示されたもの)に塗ることが前提である。その高さは、波状のピーク(例えば、5906)からなる。
【1790】
さらなる改善では、最終的なバンプマップの形成のために、図298のバンプマップと図300のバンプマップとが、供給された剛性因子に従って種々の方法で結合される。その剛性因子は、“剛性”のペイント、又は“フレキシブル”のペイントを使った効果を生じるように設計される。図301では、図298と図300の2つのバンプマップが低い剛性のブラッシュペイントのために結合された例が示されている。図302では、図298と図300の2つのバンプマップが高い剛性のブラッシュペイントのために結合された例が示されている。
【1791】
さらなる改善では、絵の具からなるブラッシュストロークが一定の可塑性を有していて背景の凹部に満たされるので、バンプマップの結合に際して、バンプマップは単純に付加されはしない。したがって、図301や図302の効果を成し遂げるためには、ブラッシュストロークのバンプマップは、背景のバンプマップであってローパスフィルターされたものに付加される。そのフォーパスフィルターは、絵の具の剛性因子によって決まる範囲(radius)を有している。該剛性因子が高ければ高いほど、フィルターの範囲は広くなり、透かして見える背景の表面テクスチャは少なくなる。ブラッシュストロークが薄かったり、何も無かったりする場所(ほとんどが縁部に沿っている)ではフィルターがかけられた背景の表面テクスチャが、実際の背景の表面テクスチャに収斂するように、ローパスフィルターの範囲はブラッシュストローク厚さに応じて変動される。
【1792】
図303及び図304を参照すると、初期の背景バンプマップを示す図303を用いた処理の例が示されている。バンプマップ5911の、ローパスフィルターがかけられたものを覆う状態の、剛性の高いペイント5912を図304は示し、ローパスフィルターがかけられたバンプマップ5913を覆う状態の、剛性の低いペイント5914を図305は示している。
技術48の説明
【1793】
さらなる改善では、入力画像の色域(color gamut)は出力画像の色域(color gamut)に“モーフ(morphed)”される。この出力画像の色域は、異なる複数の色域の試行という方法によって独断的に決定されたものである。さらなる改善では、理想的には、特定のスタイルのブラッシュストロークで画像を置き換えるというような、さらなる芸術的な処理にプレ処理ステップが使用される。そのブラッシュストロークは、画像から色を抽出し、該ブラッシュストロークは所望色域に関連する色を有する。
【1794】
最終的な出力画像を作成するステップは、図306に符号6010で示されたものである。第1のステップ6011は、望ましくはアートカム装置により検知された任意の入力画像を入力することである。その入力画像の色域は、所定範囲の色域の出力画像を作成するために“モーフ(Morphed)”又は“ワープ(Warped)”される(6012)。モーフィング処理については後述する。出力の色域が作成されると、次のステップでは、適正なブラッシュストローク技術が適用される。ブラッシュストローク技術は、大いなる変化をもたらすことのできる処理である。使用されるブラッシュストロークの実際の形態では、前述した技術が本発明に絶対必要である訳ではない。入力画像に対して、色域を制限した演出を行って出力画像を形成するためにそのブラッシュストローク技術が適用される。
【1795】
図307を参照すると、ガモットマッピングとモーフィングの問題の一例が示されている。L色空間であるユニバーサル色空間6021で多くの可能な色値が定義されてシングルの色空間が使用されることが前提である。この色空間の内部で、入力センサーは、ある範囲の明度6022を検知することができる。さらに、出力プリント装置は、プリンター色域6023における特定の範囲の色を出力できるものと仮定する。該プリンター色域は入力センサーの色域6022よりも小さいかも知れないし大きいかも知れない。芸術的色域6024は特定のスタイルに従って規定される。その芸術的色域6024は、様々な技術の使用を通じて慎重に構築することができる。例えば、所望の出力画像がスキャンされ、所望の出力画像は、L色空間の内部の特定の範囲を含むように、色のヒストグラムが構築される。所定の明度の3次元のL色空間のように図307が解釈できることは、コンピュータグラフィック関係の当業者によれば理解され得る。
【1796】
したがって、入力センサー色域6022の中の色を芸術的色域6024に移す(map)ことが必要である。さらに、残念ながら、芸術的色域6024は、特定の出力プリンター色域6023にとって“はみ出る色域”の色を含んでいる。そのようなケースでは、出力の色がプリンター色域6023内にあるために、芸術的な色域6024を移す(map)必要があるだろう。
【1797】
図308を参照すると、主要な要求は、L値6031をL出力値6032に移すための3次元ルックアップテーブル(例えば、6030)をアートカードが有するということである。好ましくは、その3次元ルックアップテーブル6030は、3次元マッピングのために定義される特定のポイントと、定義されたポイント間の中間値のマッピングのために利用される3次補間とを有するコンパクトな形式で提供される。
【1798】
図309を参照すると、1つの実質的に任意の入力ガモットスペース6040から第2の所望の出力ガモットターゲットスペース6041へのガモット・モーフィングを適用するための処理についての極めて一般的な例が示されている。潜在的には、入力ガモットスペース6040の内側であって出力ガモットターゲットスペース6041の外側にあるポイント(例えば、6042)をガモットマッピング処理は処理しなければならない。前記3次元カラールックアップテーブル6030は(2+1)のサイズを有する。nは、1から、最大色コンポーネント・プレシジョン(例えば、通常は8ビット)までの範囲である。任意のワープがルックアップテーブル内で符号化される。該テーブルの使用は、また、別々に準備された符号化ワープファンクションを独立させるアルゴリズムを生じさせる。そのアルゴリズムは、任意のワープ関数のための予測できる性能を有している。ワープ関数が連続することは要求されない。したがって、そのアルゴリズムにおいては、任意のワープ関数にとって強固である。
【1799】
そのルックアップテーブルは、整数の3D配列であり、実数の出力色コーディネートは入力コーディネートの順で配列される。このようにして、前方ワープ関数が符号化される。
【1800】
要求された画像のカラー・ワープが、1画素毎、出力画像の順に計算される。そのアルゴリズムは3Dカラールックアップテーブルへのランダムなアクセスを必要とするが、入力色は空間中では滑らかに変化するので、ランダムなアクセスは一般的には統一性(coherent)がある。入力及び出力画像へのシーケンシャルなアクセスが要求される。
【1801】
不可欠なトリリニア・ワープ・アルゴリズムは次の疑似C++コードで実施される。
Figure 2001523900
【1802】
前記ガモット圧縮プロセスは、ソースガモットにおける色の違いを維持しつつ、認知できる色の変化を最小限にするという方法で、ソースガモットの色を、より小さなターゲットガモットの色にマップさせようとする。ガモット圧縮の計算は色のワーピングから分断されるので、効果的なガモット圧縮は上述したルックアップテーブルで駆動されるプロセスを用いて実施される。
【1803】
ガモット圧縮アルゴリズムは3次元ルックアップテーブルの構築を含み、図309を参照して述べたような次の疑似コードで実施される。
Figure 2001523900
【1804】
ソースガモット又はターゲットガモットのいずれかがパレットフォームにて知られているならば、ガモット多面体はパレットポイントの凸包から計算される。
【1805】
図310を参照すると、芸術的効果の創造において一般的に活用される処理であって、後述の如くガモット・モーフィングと称される処理を使用して、何らかのソース・ガモット6050をターゲット・ガモット6051にマップさせるために上記処理が使用され得る。ガモット・モーフィングは、ソース・ガモット中の色をターゲット・ガモット中の色へのマッピングを直接コントロールするために使用される。
【1806】
ガモット圧縮と同様に、ガモット・モーフィングは、画像の色域(ガモット)を特定の芸術的スタイルに似させるために使用されるかも知れない。ガモット・モーフの計算はカラーワーピング処理から分断されるので、ガモット圧縮と同様に、効果的なガモット・モーフィングは、ルックアップテーブルを駆動するアルゴリズムによって実施されることができる。
【1807】
ガモット・モーフィングと共に、多くのソース・ガモット色(例えば、6053)が、同数の対応するターゲットガモット色(例えば、6054)に直接マップされる。ルックアップテーブル中のマップされたターゲットの残存しているターゲット色は、特定のターゲット色(例えば、6054)の加重和として計算される。そのターゲット色は好ましくは、各ルックアップテーブルのポイントから対応するソースカラーまでの距離の二乗の逆数により重み付けされる。
【1808】
ガモット・モーフィング・アルゴリズムが次の疑似コードにより具現化される。
Figure 2001523900
【1809】
前述の技術が最初に画像のガモットを所定のエリアに限定するために使用できることは、コンピュータグラフィックスにおける当業者には明白であろう。続いて、例えば、“点描画法”技術によって与えられると同様の効果を生じさせるため、制限されたガモット画像にブラッシュストロークフィルターが適用される。
技術53の説明
【1810】
前述のアートカムシステムの基本が図311に符号6501で示されている。そのアートカムシステム6501は、入力としてアートカード6503を必要とするアートカム6502に依存している。該アートカード6503は、出力写真6505の作成のため、画像のシーン(image scene)6504を処理するためのコード化された情報(指示情報)を有し、出力写真は、そのアートカード6503の指示情報に従って大幅に画像処理される。該アートカード6503は極度に高価とはならないようにされており、一面にはコード化された情報を含み、他の面には、アートカム6502に挿入された場合に生成されるであろう効果の描写を含んでいる。
【1811】
さらなる改善の方法に従って、図312に示すように、多数のアートカード6510が用意され、パックで販売される。各パックは、特定のサイズの衣服の着用に関連しており、カメラにより撮影された画像がマッピングされて衣服6512を着用したモデルの画像(例えば、6511)を有する。そのマッピングは、異なるアートカード6510でha
異なる衣服アイテムとすることも可能である。マッピングアルゴリズムの1つの形態が図313の6520に示される。該アルゴリズムでは、魅力的なワーピングの効果を生成する反復タイリングパターンに画像をマップするというワープマップを使用して、入力画像が最初にワープされる(6521)。もちろん、アートカード6503(図311)により与えられる、多くの他の形式のアルゴリズムが、材料の魅力的な形式を生成するために準備される。
【1812】
次に、第2のワープ6522は、第1のワープマップ6521の出力を、アートカード中の特定のモデルの画像にワープするために用意される。したがって、ワープ6522はアートカード特有である。その結果は、アートカム写真6505として印刷されるために出力される(6523)。したがって、ユーザは、望みの画像6504をアートカム6502に示すことができ、流行の衣服のモデルを有する画像の処理バージョンを有するアートカム写真6505を作成することができる。この処理は、希望の結果が得られるまで続けることができる。
【1813】
次に、布についての最終的な選択がなされた場合には、図314に示されるように、インクジェット布プリンタや関連の駆動制御電子機器等を有する布プリンター6534にUSBポートを介してアートカム6502が接続される(6503)。アートカム6502又はインクジェットプリンタ6534のどちらかが、布6535にガーメントピース(例えば、6536)を印刷するようにプログラムされている。ガーメントピースは、アートカードのモデルにより伝えられるのと同じ衣類を作成するため、オリジナルのワープ画像をその表面に有している。
【1814】
出力された布は、ガーメントピースを繋ぎ合わせるための指示6540に加えて、位置合わせと境界領域(例えば、6539)のためのタブ部(例えば、6538)を有している。好ましくは、その出力プログラムは、衣服の交差した継ぎ目上に連続して発生させるために縁取り部分のワープマッチングへの提供を含む。
【1815】
さらに、ユーザーインターフェースは、異なった形のボディーを考慮に入れるため、多くの異なった出力サイズを有する同じカードの利用に備えられる。アートカム技術の利用に基づいて、アートカム機構6502の利用によって、カスタムされた衣類の生産と適当な結果の迅速な描写のためにシステムを提供することが出来る。
技術54の説明 **
技術56の説明
【1816】
さらなる改善では、画像の効果を転送するために、先述したようなアートカム装置が複数、USBポートを介して接続されている。各アートカムの内部のコンピュータ部の適切なプログラムにより、画像効果の転送が成し遂げられる。
【1817】
好ましい配列は、図315に示されているように、一連のアートカム(例えば、6802,6803,6804)がそれらのUSBポートを介して接続されているというものである(6805)。それぞれのアートカム6802,6803,6804には、好適な画像処理プログラムが格納されたアートカード6807,6808,6809が備えられている。さらに、ネットワーク環境を利用するという指示をアートカード6807,6808,6809により与えることができる。そして、アートカム6802により検知された画像6810は、アートカード6807上の処理プログラムによって処理される。アートカード6808によって画像処理機能が適用されるアートカム装置(一連のアートカム装置の内の次のアートカム装置)6803に、その結果が転送される(6805)。このような目的のため、各アートカム装置は2つのUSBポートを持つように修正されている。最後のアートカム装置6804は、前述した画像処理の集積である出力6812を作成するため、アートカード6809に格納された処理を適用する。
【1818】
したがって、図315の構成6801は、1つの検知画像に対して多様な効果を与えることができる。もちろん、多くのさらなる改良は可能である。例えば、それぞれのアートカムは、次のアートカムへ画像を転送することに加えて、自身が処理した画像を印刷することもあり得る。加えて、経路を分離して、1つのアートカムを2つの異なった下流側アートカムに出力し、異なる最終画像を出力するようにする。加えて、ループ等も利用される。
技術57の説明
【1819】
さらなる改善では、開示されている技術は、双眼鏡セットに組み込まれるように適合されていて、双眼鏡のユーザからの要求により画像を印刷できるようになっている。まず、図316を参照すると、双眼鏡システムの一例が開示されている。該双眼鏡6901は、公知のタイプのものであり、本発明の原理に従って変形される。該双眼鏡は、レンズ入力を有する通常の光学レンズシステム6902,6902を有する。2つのレンズシステムは、コネクタープレート6906にヒンジシステム6904,6905を介して取り付けられている。その配列は大体従来的である。
【1820】
第1の光学レンズシステム6902はビーム・スプリッタ装置6908を有しており、該装置は、光学システム6902に入射された光の光路6909を2つの光路に分割する。第1の光路6910は、CCDシステム6914が取り付けられた側に向けられる。第2の光路6911は、接眼部6915の方向へ向けられる。該ビーム・スプリッタ装置6908は、光線6911の出力強度を弱くさせることとなる。したがって、光学レンズシステム6902の中のビーム・スプリッタ装置6908による減衰と一致させるようにするため、減衰フィルター6918を配置しても良い。
【1821】
したがって、CCD撮影装置6914は、光学レンズシステム6902で見るのと同じシーンを撮影することとなる。該CCD装置6914は、アートカム中央プロセッサやメモリー装置を有するプリント基板6920に取り付けられた処理システムに接続されている。そのアートカム中央プロセッサ装置は、重要な画像処理機能を有しており、画像をキャプチャーするように前記CCD装置を制御し、プリントヘッド装置6923を使用して画像を印刷するようにする。プリンターには、プリントメディアにインクを吐出するインクジェットプリント装置を使用する。該プリントメディアは、プリントメディアと印刷用インクとを含む着脱可能な使い捨て型プリントロール6925から供給される“紙”フィルム(実際には、適切なポリマー)からなる。該プリントロール6925はハウジング6925に収容されており、該ハウジングにはバッテリー6927が着脱可能に配置されている。
【1822】
ユーザがボタン6919を押し下げると、アートカム中央処理装置は、シーンを撮影するためにCCD6914を作動させる。CCD装置6914によってキャプチャーされた画像はACPプロセッサによって処理され、撮影したシーンを即座に永久的に記録すべく、プリントヘッドに転送されて即座に印刷される。プリントヘッドは再び上述のようになる。
【1823】
多くの改良が、さらなる改善を成し遂げることができる。例えば、アートカム中央プロセッサーに接続されるUSBポートが提供されて、画像処理アルゴリズムを双眼鏡6901にプレロードできるようにしても良い。そのルーチンを作動させるための一連のボタンを配置するようにしても良い。そのルーチンは様々な画像強調操作等を含む。加えて、画像の特徴を強調するため、多くの異なる方法で出力画像を修正するようにしても良い。日時や場所についての関連情報を画像に自動的に掲載することにより画像をさらに特徴付けるようにしても良い。加えて、観察者の座標もまた出力画像に即座に印刷されるように、該双眼鏡をGPSに接続しておいても良い。加えて、被写体の場所を特定するための距離測定装置の提供や、該被写体に関する情報の前記出力画像への表示のような他のオプションが行われるようにしても良い。
技術58の説明
技術59の説明
【1824】
さらなる改善では、開示された技術が、カード表面にフォールト・トレラント・データ配列を与えるために利用される。該データは、他のフォールト・トレラント配列に書き換えることによりアップデートされる。
【1825】
まず、図317を参照すると、カード表面にデータ(例えば、7102)が書き込まれて、完全にデータ配列が書き込まれた後のカード1701が示されている。各データ配列(例えば、7102)は、カード表面に示されている64個のデータブロックの配列で、約20KBの情報が符号化される。もちろん、他の配列は、各データブロック(例えば、7102)の中に書き込まれるデータ量をより少なくすることも、より多くすることも可能である。初期状態では、該カード7101はデータブロックは有していない。代わりに、多分、1つの利用データブロックがそのカードの表面に書き込まれている。
【1826】
図318を参照すると第2のカード7105が示されており、該カードでは、書き込まれた最後のデータブロックであるところの最新のデータブロック7106で12回“アップデート”されている。したがって、各カード(例えば、7105)は、該カードに与えられたデータブロック数に従ってアップデートされ、何回も使用される。
【1827】
図319を参照すると、1つのデータブロック(例えば、7108)の構成が示されている。該ブロックは、“アートカム”技術の縮小バージョンである。そのデータブロック7108はデータエリア7109からなり、該エリアは、印刷されたドット配列を有し、該ドットは、縁に沿った一連のクロック・マークに加えて、1画素幅のボーダーを有する。そのデータエリア7109のエッジに沿ってターゲット7110が配置され、該データエリア7109の位置決め及び読み取りをアシストするようになっている。各ターゲット7110の構成は図320に示される通りであって、たった一つの白のドットを囲む、大きな黒エリアからなる。もちろん、他の構成も可能である。該ターゲット7110はデータエリア7109を正確に位置決めするために提供される。さらに、それらのターゲット7110は、さらに、正確に検知され、正確な位置情報を導き出すために提供される。
【1828】
図321を参照すると、カード読み取り及び書き込み装置7120が示されている。図321の要点部分の拡大は図322に示されている。該装置7120は、情報が印刷されるカード7122を挿入するための細長い隙間7121を有している。多くのピンチローラー(例えば、7123,7124)が、プリントヘッド7125やリニアCCDスキャナー7126を横切るようにカードの移動を制御する。該スキャナー7126は、下を通過するデータをスキャンする。図322には、挿入されたカード722のためのプリントヘッド7125及びCCDスキャナー7126の配列の拡大図が示されている。
【1829】
図323を参照すると、CCDスキャナー7126へカード7122が挿入される様子が概略的に示されている。CCDスキャナー7126は、該スキャナーを通過するようにカード7122を搬送し、カード7122に保存されている情報が、CCDスキャナー7126に取り付けられているアートカム中央プロセッサユニットによってデコードされる。カードリーダーからカード7122を取り出したい場合、新たなブロックのカードへの書き込みが必要か否かの決定がなされる。新たなブロックの位置は前にスキャンされたCCDデータから分る。カードの取り出しは、カードをプリントヘッド7125及びCCDスキャナー7126を通過するように、図324に示されるようにして行われる。スキャナー7126はカード7122の現在位置をモニターしており、図325に示すように、四角の領域7128を新しいデータでアップデートすることが望まれる場合は、プリントヘッド7125によりインク滴を吐出する。そして、フロッピーディスクなどと似たような方法でカードは装置(図321)から取り出される。そして、そのカードは、全てのデータスペースが埋め尽くされて新たなカードが作成されるまで、継続的に使用される。
【1830】
それゆえ、カードを安価に作成し、情報配置のため弾力的な方法で利用可能であるという点で、前述のカードシステムの利用は、情報配置の効果的で安価な形式を提供するということが明白だろう。
【1831】
図326を参照すると、アートカード読み取り装置に利用される異なる機能のブロック図が示されている。プリントヘッド7125やリニアCCD7126は、適切にプログラムされたアートカム中央プロセッサー(ACP)チップ(ACP)7130の制御により操作される。ACP7130は、スキャンされたデータや他のデータ及びプログラムを保管するメモリー7131を備えている。さらに、ACPは、ピンチローラーを作動させる種々のモータ7132を制御する。もちろん、要求に応じて他の制御ボタン等も配置され得る。そのような編成の利用は、カード表面に格納された情報のモニタリングやアップデートのためのシステムを提供する。
技術60の説明
【1832】
さらなる改善では、ユーザの要求に応じて自身のアートカードを作成できるアートカード写真自動販売機が提供される。該自動販売機は通常の写真自動販売機と同様の方法で構成されるが、与えられた時間内にアートカードを自動作成するように構成されたコンピューテイショナル・リソースの要求のみが本質的要素ではない。
【1833】
まず、図327を参照すると、さらなる改善7201の機能要素が図解的に示されている。さらなる改善7201は、ユーザーの見本写真7203をスキャンするための高解像度スキャナー7202を有している。また一方、そのスキャナー7202をオプションとして、付加された度合いのリアリズムをアートカード作成システムに与えるため、ユーザが彼らの写真を処理することを許容しても良い。スキャナー7202によってスキャンされた写真7203は、適正なオペレーティングシステムとプログラムを有するハイエンドのPCタイプのコンピュータである基幹コンピュータシステム7204に転送される。該コンピュータ7204は、スキャンされた写真のストレージ、並びに写真プリンター及びアートカードプリンター7205のコントロールをする。写真プリンター及びアートカードプリンター7205は、好ましくは出力されたプリントメディアの両面に印刷することができ、前に開示したような印刷技術を使用することができる。該プリンター7205は、アートカード7207に加えてユーザの写真7206の処理されたものを出力する。アートカードは両面が印刷される。写真7206を生成するため、写真7203の画像処理のための符号化された指示を含む。該符号化された指示はアートカードフォーマットに出力される。
【1834】
該コンピュータシステム7204は、また、標準的なタッチ・スクリーン・タイプのようなユーザ・インターフェース7209を有している。該コンピュータシステム7204は、また、支払いシステム7210をコントロール又は内蔵している。該支払いシステム7210は、標準的なコイン又は紙幣の支払いシステム、或いは、取引の承認のためのクレジットカードのサービスプロバイダと適切なネットワーク接続をするクレジット支払いシステムより成る。加えて、エフトポス(EFTPOS)設備が提供されるかも知れない。
【1835】
ユーザが彼らの写真7203をスキャナースロット7202に挿入すると、写真はスキャンされ、保管され、続いて排出される。次に、“フォト・ブース”内に位置するユーザ・インターフェース7209をユーザが操作する。該ユーザ・インターフェース7209は支払いシステム7210に金を支払うための指示を最初に行う。しかしながら、該ユーザ・インターフェース7209の中核は、タッチスクリーンによる様々なアートカードの創作である。
【1836】
好適なユーザ・インターフェースの一例は、図328に示される。該ユーザ・インターフェースの中核は、後に述べる方法で処理される多くの見本サムネイル画像7213をユーザに示すことで構成される。最初に、例えば、会社のイベントや、誕生日のイベントや、季節のイベントや、処理のタイプ等のような画像の処理7213がサブジェクトエリアに配置される。ユーザは、タッチスクリーンによって好みの画像(例えば、7213)を選択する。好みの画像が存在しない場合、ユーザは矢印ボタン7214を押して、他の処理を表示させることができる。ユーザが画像7213を選択したとき、その画像に似た“テーマ”を有して、一連の処理を提示する代替物の生成にその画像が使用される。そのユーザは、選択された種類から画像を選択することを継続できる。
【1837】
好みの画像はセーブボタン7217の使用によりセーブすることができる。そして、そのユーザ・インターフェースは、セーブされている選択7218を示す。ナビゲーション・ボタン7215は前画面に戻るためのものであり、ナビゲーション・ボタン7216hは上位に戻るためのものである。この方法によれば、ユーザは、彼ら自身の特有のカスタマイズした要求を作るため、様々なアートカードを検索することができる。この方法によれば、独特の芸術的創作活動が、独特のアートカードの作成を促す。
【1838】
そのような様々なアートカードの作成は、作成プロセスにおける創作者の役割をユーザに与える遺伝的アルゴリズム技術に依存している。ここで、図329を参照すると、図327のコンピュータシステムにて実行されるアプリケーションのソフトウェア・レイアウトの例が示されている。該ソフトウェア・レイアウト7220は、実行できる画像処理の遺伝的プール7221と、特定の画像に適合させるテーマ処理とを備えている。この遺伝的プールは、新たな種類(属)の生成のための遺伝的アルゴリズム・コアによって利用される。遺伝的アルゴリズムの標準的なテキストを紹介すると、例えば、この分野において最新の処理が加えられている“遺伝的アルゴリズム”Golberg著がある。或いは、遺伝子のプログラミングの分野は利用され得、そして、この点で、“遺伝子プログラミング”と題名づけられたKozaによる一般的な研究を参照する。
【1839】
前記遺伝的アルゴリズムのコアは、また、新たで好適な画像を作成する際に、ユーザの選択7223を使用することができる。該遺伝的アルゴリズムのコアの出力は、タッチスクリーンディスプレイに表示するためにユーザインターフェースモジュール7225に転送される、適切な新しい画像を含む。
【1840】
再び図328に戻ると、ユーザが好みの選択を発見すると、受け付けボタン7219を押すことができる。これにより、ユーザによる支払いが要求されるとともに受け付けられる。また、アートカード7207を受け入れる他の装置(例えば、上述したアートカム装置)でユーザが利用できるように、アートカード7207には、一連の画像処理に加えてプリンタ7205に画像を出力させる指示がコンピュータシステム7204(図327)によりなされる。
【1841】
したがって、ユーザが別々に利用することのできる、複雑な、自分の名前を記入するようにカスタマイズされた画像を作成するシステムがさらなる改善によって提供されることは、当業者には明らかだろう。多くの画像の利用は、同様に重要な個性化に導くことのできるアートカードの重要な結合の急変動をもたらす。
【1842】
もちろん、多くの他のタイプの中核技術が画像の構築に使用されることができる。例えば、他の非遺伝的技術が適するかも知れない。最悪の場合、各画像の選択は手動で用意される。さらに、他のユーザーインターフェース機構が提供され得る。加えて、本発明は、標準のコンピュータシステムのような、自動販売機で無い環境で実行されることもできる。
【1843】
更なる改良の操作は、個人の創造性の重要な表現に備える。そして、芸術家による個々の創造が個々の芸術家等のアートカード“シリーズ”を提供する際に重要な価値を呈するかもしれないと考えられる。
技術61の説明
技術62の説明
【1844】
上述したアートカム配列の基本は、概略図の形態で図330に示されている。この配列は、画像やシーンを検知するためのCCDセンサー7402を有する。加えて、検知画像を処理するための画像処理アルゴリズムであってコード化されたものについての、アートカード7408の読み取りを行うために、アートカード読み込みセンサー7403が提供される。該CCDセンサー7402と該アートカード読み込みセンサー7403の両方は、検知した画像の処理のために複雑な計算能力を与えるアートカード中央処理ユニット(ACP)7404に接続されている。加えて、メモリーユニット7405が、画像や、検知したデータや、プログラムなどを保存しておくために用意されている。ACP7404に接続されているのは、内部のプリントロールから供給されるプリントメディアに最終的な写真7404を印刷するためのプリントヘッド7406である。
【1845】
さらなる改善では、独特な一連のアートカード7408がアートカード・リーダー7403に挿入されることにより、アートカム中央プロセッサー7404の独特のコントロールがなされる。第1の例は、図X2や図332に示されるものであって、重ね合わせた、或いは増大する画像の効果を与えるためのマルティプル・アートカードの使用を提供する。適切な複製アートカードは、図332に7410で示されたものであって、効果を生じさせるためにどのようにカメラ装置を操作するかに関しての指示が一側面に設けられている。他側の面には、その効果を生じさせるためのアートカム装置の操作の指示が設けられている。図331を参照すると、組み合わせた効果を生じさせるためのリピティションカードの操作の例が示されている。アートカムシステムは、あるシーンの検知画像又は保存画像を有している。第1のステップは、リピティション・モードにするため、アートカムシステムの操作を変更するコードを有するリピティションカード7413を挿入することである。続いて、第1のアートカード7414がアートカード読み込みセンサー7403に挿入され、そのカード7414の指示に従って画像に第1の効果が与えられる(符号7415参照)。続いて、リピティションカードが再び挿入され(符号7416)、次に、第2のアートカード7417が挿入され、例えば、画像にテキストメッセージを配置するという第2の効果が与えられる(符号7418)。次に、再びリピティションカード7419が挿入され、その後、第3のアートカード7420が挿入されて、さらなる効果が画像7421に与えられる。図331のプロセスは、所望の出力画像の形成のため、要求に従って繰り返し行われる。この方法によれば、1つの効果だけを有するアートカードから組み合わせの効果を作成するため、柔軟性を持って上述した装置が使用される。さらに、提供されるユーザ・インターフェースは、組み合わせの効果を作成する上において、シンプルで効果的である。もちろん、多くの変更を行うことができる。例えば、別の実施例においては、リピティションカードは1回だけ挿入され、一連のアートカードがそのリピティションカードに続いて挿入される。
【1846】
図333を参照すると、アートカムシステムの内部テストのための、別のアートカード7430が示されている。一つ一つのアートカムシステムには多くの内部テストルーチンが内部ROMに用意されている。そのテストは、アートカム中央プロセッサーに用意された翻訳言語での、特別な関数呼出しによりアクセスされる。そのルーチンは、アートカム装置の仕様であり、例えば、
プリントヘッドの動作状態を判断するためのテストパターンのプリントアウトと;
ノズルのクリーニングのため、及びプリントヘッドの操作が改良されるようなノズル配列のため、プリントヘッドの操作処理を行うテストパターンのプリントアウト(例えば、全てが黒のプリント)と;
プリントヘッドの操作の有効性を示すため、後の分析のためにテストパターンがプリントされること;
が含まれる。
【1847】
図334を参照すると、テストパターン7437のプリントアウトに加え、参考になる様々な内部データを有するテスト・アウトプット7435の見本が示されている。そのテストパターン7437は、そのカメラシステムに存在しているかも知れない何らかの問題を割り出す自動的又は主導的な方法によって後で調査することができる。さらなる改善は、アートカム装置にプログラムされ、ROMメモリーに格納されているソフトウェア・ルーチンの使用を通じて実行される。
【1848】
もちろん、前記ルーチンがアップデートされたり、変更されたりすることで、多くの改善が予想され得る。多くのテストは実際には制限されない。この方法によれば、カメラ装置の操作は、挿入されるカードに従って変更され得る。
技術63の説明
技術64の説明
【1849】
さらなる改善では、出力写真の裏面に音声メッセージを記録するために磁気感受性プリントメディア材料が使用される。アートカム装置は、写真の全面を覆う磁気レコーダの配列や、或いは、例えば、磁気的感受性のある写真中央部のような、磁気帯からなる磁気記録装置を含むように改変される。該アートカム装置にはさらに後で再生するための音声メッセージを録音できる能力が与えられる。
【1850】
さらなる改善では、アートカム装置は、マイクロフォン装置や関連の録音技術を装備するように適当に変更される。写真を撮影するとき、周囲の音環境か、その画像に関係するメッセージのいずれかを録音する機会が与えられる。そのプリントメディア又はフィルムは、テープメディアと同じように、磁気感受性を有するように前処理されている。出力写真の裏面全体、或いは磁気感受性帯に録音がなされる。録音された音声は、コード化された形式で出力写真の裏面に保持される。そのコード化は、好ましくは、高度なデジタル再現性のある形式である。その録音された音声は写真に関係する、永久的な音声録音を提供する。次に、再生装置は、コード化された音声をスキャンし、この情報を復号化するために提供される。
【1851】
図335を参照すると、上述した構成、つまり、画像7602がCCDセンサー7603により検知されアートカム中央プロセッサ7604に転送されるという構成を含むさらなる改善7601が、概略形式にて示されている。該アートカム中央プロセッサ7604は、好ましくは高速RAMBUS(登録商標)インターフェースのメモリーからなるメモリー7605に画像を格納する。また、アートカム中央プロセッサ7604は、写真の裏に記録をするための磁気記録ヘッド7616に加え、プリントヘッド7606(要求に応じてインスタント画像を提供するため、フルカラー写真7607を印刷するためのもの)の操作をコントロールするようになっている。
【1852】
さらなる改善では、カメラ編成7601は、ACPプロセッサ7604の制御下でRAMBUSバス7611経由でメモリー7605にインターフェース接続されているサウンドチップ7610を備えている。該サウンドチップ7610は、標準的形式とすることも、或いは専用形式とすることもでき、例えば、サウンドマイクロフォン7613からのアナログ入力7612を取得するDSPプロセッサを備えることができる。もう一つの方法として、チップの複雑さに伴って(ムーアの法則)、サウンドチップ7610の機能を、好ましくは最先端のCMOS型集積回路チップを備えるACPチップ7604に組み込むことができる。本発明の範囲内に該当する他の多くの種類の編成を提供できることは容易に明白であろう。
【1853】
サウンドチップ7610は、アナログ入力7612を対応するデジタル形式へ変換し、それをメモリー7605に格納するために転送する。そのような記録プロセスは、カメラ装置上のボタン(図示せず)を押すことによって作動させることができる。該ボタンはACPプロセッサ7604の制御下にあるか、そうでなければ、写真を撮るときに実質的に自動化されることができる。記録されたデータは、メモリー7605に格納される。
【1854】
図336を参照すると、カメラ編成は、好ましくは、プリンター装置7606(プリントメディア7617に画像を印刷するのに使用されるプリントヘッドを有する)と磁気記録プリントヘッド7616(プリントメディア7617の裏面に情報を印刷するのに使用される)とを備えている。図337を参照すると、フォトメディア7617の裏面に形成された磁気帯7618の出力例が示されている。その磁気帯は図336の記録ヘッド7616によって記録される。記録された情報は、場所や日付や時間のデータを含み、場所のデータはキーボード入力により、或いは、GPSや同様のもののような、付属の位置決めシステムの利用によって与えられる。重要なことには、画像7617の裏面に、コード化された音声情報が記録される。コード化の方法には多くの様々なものとすることができるが、好ましくは、エラーを許容するように、高度なフォールトトレラント方法でコード化される。その高度化の形式は、高度なフォールトトレラントを提供するため、データのリード・ソロモン符号化を利用するようにしても良い。
【1855】
図338を参照すると、録音された音声を“再生”したいときは読み取り装置7626を用い、ピンチローラーにて写真7617を挟み込みながら磁気センサー装置7627を通過させる。
【1856】
図339を参照すると、図338の音声読み取り装置7626の操作が概略形式で示されている。前記磁気センサー7627は第2のアートカム中央プロセッサ7628に接続されていて、写真の裏面に格納されているデータを読み取って復号化するようになっている。その復号化された音声情報はメモリー7632に格納され、サウンド処理チップ7633を介してスピーカー7629で再生される。そのサウンド処理チップ7633はACPデコーダー7628の制御下で操作され、ボリュームコントロールや巻き戻しや再生や早送り等の、ユーザの様々な入力制御7633に基づき順に操作される。
【1857】
さらなる改善についての上記説明から理解できるように、出力画像に関係する音声の自動録音のためのシステムが提供され、写真に関係する音声録音が行われる。また、写真の裏面に記録された画像を読み取るための音声読み取りシステムも開示される。数多くの変更及び/又は修正が、大まかに説明された本発明の精神または範囲から逸脱することなく、特定の実施の形態に示されるような本発明へなされてもよいことは、当業者によって理解されよう。例えば、ステレオおよびBフォーマット技術等のような、より複雑な音声録音再生技術への利用である。
技術65の説明
【1858】
さらなる改善では、プリントヘッドを使用して“ネガ”を印刷するよう、上述したアートカム装置が適正にプログラムされる。該ネガは、アートカード・センサー装置に挿入されて利用できるよう、標準的なアートカード形式に適合している。アートカード・センサー装置は“ネガ”アートカードに格納された情報を検知し、写真を印刷する。
【1859】
まず、図340を参照すると、要求に応じて画像を検知するセンサー装置7702と、アートカード情報を検知するためのカード読み取りセンサー7703とを備えた標準的なアートカム装置7701が、概略形式で示されている。それらのセンサー7702,7703は、アートカム装置の操作のための重要な計算手段であるアートカム中央プロセッサ7704の制御下で操作される。そのアートカム中央プロセッサ7704は、完全にベクトル化されたVLIW(very long instruction word)中央プロセッサに加えて、オンボードCPUを含むことができる。ACP7704は、取得した画像7702の処理に加えて、アートカード読み取り装置7703にて読み取ったアートカード(情報)の処理及び復号化を行う。内部プリントロールにより供給されるプリントメディアにプリントヘッド7706により印刷する処理画像を形成し、写真7707を出力するため、ACP7704はメモリー7705との間での処理を行う(interact)。該アートカムシステム7701は、完全なポータブルカメラシステムを構築するように設計されており、プリントヘッド7706(該プリントヘッドは、ACPプロセッサ7704の制御下において要求により写真7707の印刷を行うためのものである)に接続されたプリントロール(内蔵型で使い捨てできるものであって、印刷メディア及びインクを供給するためのものである)を備えている。
【1860】
図341を参照すると、図340のアートカムシステムの操作のステップであって、さらなる改善に従ったもの7710が示されている。さらなる改善では、まず、第1のアートカム装置を使って所望の画像が撮影される(7710)。次に、高度なフォールトトレラントであって、回復される出力データ形式を提供すべく、該撮影画像が処理される。その処理は、画像、複製されたデータ、データ値の配列にデータを疑似ランダムに展開するのに加えてリード−ソロモン符号化データの圧縮を含むことができる。その出力形式は、必要なら、画像の圧縮に加え、上述したような“アートカード”装置により提供されるのと同じにできる。アートカードの出力データに加え、検知画像のサムネイル画像がその符号化されたデータに沿って印刷される。
【1861】
そのアートカード編成は、図342に示されるように、CCDセンサー7702によって画像7720を取得すると共に、アートカムの“ネガ”のもの7721を出力するアートカム装置7701を備えている。該“ネガ”形式のものは、入力画像のサムネイル7724と、検知画像を高度に符号化したもの7722とを含む。図342には示されていないけれども、その出力されたものは、アートカム装置7701内の裁断装置によって線7725に沿って通常は切り取られる。
【1862】
データエリア7722は、該エリア7722の側縁に沿った一連の印(例えば、7727,7728)と共に印刷される。それらの印7727,7728は、スキャンされるときにデータエリア7722の正確な位置を与える。“ネガ”7721を印刷することにより、画像の半永久的な記録が得られる。この“ネガ”7721は、写真のネガを保存するのと同様の方法により保存される。取得した画像の、さらなる、高品質なコピーを必要とする場合には、前記アートカード“ネガ”が、図342のアートカム装置のアートカード読み取り装置7703の中へ挿入され(図341の7713)、アートカードデータは通常の方法で復号化され、オリジナル画像が得られる。符号化されているデータは、オリジナルな画像と、該画像をアートカム装置により印刷するために必要な指示を含むことができる。検知されたカードは復号化され(図341の7714)、要求に応じて何度も印刷され(7715)、オリジナル画像が得られる。つまり、検知された画像が出力される。よって、検知された画像を高解像度と高い回復力でコピーするシステムが得られる。
【1863】
他の実施例も構成することができる。例えば、前記“ネガ”データを、写真面の裏面に自動印刷する編成を利用しても良い。そのような編成は図343に示される。該図に示されるものは、写真7730の裏面であり、サムネイル部分7732に加えて、データ符号化エリア7731が印刷されている。したがって、該データエリア7731は、該カード7730の表面において、画像に関しての、半永久的で、高い精度の記録を提供することができる。
技術66の説明
【1864】
さらなる改善では、ランダムな出力の要求に応じて多数のアートカードを出力できるアートカード・プリンターが提供される。その製品のプリンターは、ネットワークを介して他の製品のプリンターと接続され、総合コンピュータシステムが、所定の要求に従ってアートカードを分配するためにネットワークを制御する。このような方法で、高い柔軟性を与えるため、アートカードの製造がコントロールされる。
【1865】
図344を参照すると、たった一つのアートカードプリンター7801が概略図の形式で示されている。該プリンターは、アートカードの上面に画像を印刷するためのプリントヘッド7802、及びアートカードの下面に画像取扱説明書(符号化されたもの)を印刷するためのプリントヘッド7803の2つのプリントヘッド7802,7803を備えている。該プリントヘッド7802はインク供給部7806を有する3色のプリントヘッドにすることができる。下面プリンター7803は1つのインク供給部7807を有する単色プリントヘッドにすることができる。プリンター7801は、要求に応じてアートカードをプリントアウトすべくコンピュータシステムの制御にて操作される。印刷した後、ベースプレート7810(流通目的のために多数のアートカードが配置されたもの)からアートカードを打ち出すためにパンチ装置7809が配置されている。所定の区域の要求に従った分配。
【1866】
図345を参照すると、アートカード交付システムの制御ネットワーク7820の一般的な配列が示されている。一連のプリンターコンピュータ装置(例えば、7821)が配置され、要求に応じて様々な形態を取ることのできるネットワーク7822に一緒に接続されている。中央統合コンピュータ7823がネットワーク7822及びプリンターコンピュータ(例えば、7821)を制御して、プリンターコンピュータ(例えば、7821)によってアートカードの組み合わせたものを印刷する指示を送るようになっている。プリンターコンピュータ(例えば、7821)は、要求に応じて地方に配置することができる。或いは、それらのプリンターコンピュータを中心(centrally)に配置しても良いが、様々な地方に送られ、或いは、様々な要求を満足するために命令されるかも知れない。それぞれのプリンターコンピュータは、アートカードの大きなキャッシュを有することができる。そのキャッシュは、メモリーや、ディスクや、各プリンターコンピュータに適宜配布されるCD−ROMに設けることができる。中央統合コンピュータは、プリンターコンピュータによって印刷されるべきアートカードのリストを配布する。加えて、新しいアートカードが該中央統合コンピュータ7832に読み込まれ、要求に応じ、関連するプリンターコンピュータ(例えば、7821)に送られる。その配布は、キャッシュされた配布配列の形式である。
【1867】
図346を参照すると、プリンターコンピュータの好適な編成7830の1つの形態が示されている。その編成7830は基幹コンピュータシステム7831を備え、該コンピュータシステム7831は、大きなメモリやディスクキャパシティを持つ、ハイエンドのPCタイプのコンピュータである。そのコンピュータシステムは7831は、図344の編成に従って配列されたアートカードプリンター7832に接続されている。該コンピュータシステム7831は、ネットワーク7834に加えて、キャッシュされるアートカード7833の大きなストアを備えている。よって、プリントアウトされるべきアートカードのリストは前記中央コンピュータから各プリンターコンピュータへ、アートカードの印刷のために転送される。
【1868】
図345の編成では、大きな組み合わせの複雑な配布の問題が打開され、配布のシステムの改良された形態であることが分る。
インクジェット技術
【1869】
本発明の実施例はインクジェットプリンタ型装置を使用している。もちろん、多くの異なる装置を使用することができる。しかしながら、現在ポピュラーなインクジェットプリント技術は適していそうにも無い。
【1870】
サーマルインクジェットでの最も重要な問題は電力消費である。インク滴の射出のエネルギー効率が悪いことに起因し、高速のために必要な電力は約100倍である。インクを吐出させる蒸気泡を生成するために、水の迅速な沸騰を必要とするからである。水は大変高い熱容量を有していて、サーマルインクジェットの利用において過熱される。これは、電気の入力を運動の出力に変換するため、約0.02%の効率を必要とする。
【1871】
ピエゾエレクトリックインクジェットでの最も重要な問題はサイズとコストである。ピエゾエレクトリッククリスタルは適当な駆動電圧にて非常に小さなデフレクション(deflection)を有していて、それ故、各ノズルのために大きなエリアが必要となる。また、各ピエゾエレクトリックのアクチュエータは、分離した基板の駆動回路に接続されなければならない。このことは、300程度のノズルの電流制限においては重要な問題ではないが、19,200のノズルを有するページ幅プリントヘッドの製造には大きな障害となる。
【1872】
理想としては、使用されたインクジェット技術は、非公開のデジタルカラープリンティングや、他のハイクォリティでハイスピードでローコストのプリント利用が要求される。デジタル写真の要求に合わせるため、新たなインクジェット技術が創出されてきた。目的の特徴は次のものである。:すなわち、
低電力(10ワット未満)
高解像度性能(1,600dpi又はそれ以上)
写真クォリティの出力
低製造コスト
小サイズ(横切り幅が最小となるようにページ幅を調整する)
ハイスピード(<1頁当たり2秒)
【1873】
これらの特徴の全ては、後述するインクジェットシステムにより、異なるレベルの困難さで突破されることが可能である。45個の異なるインクジェット技術は、高ボリュームの製造のために幅広い選択を与えるよう、受け継ぐ者によって発展されてきた。これらの技術は、後に記載する表に示すように、本出願人に指定された分離された応用を形成する。
【1874】
ここに示されるインクジェットの設計(デザイン)は、電池で駆動される1回使用のデジタルカメラから、卓上のネットワークプリンタや業務用のプリントシステムまで、幅の広いデジタルプリントシステムに適している。
【1875】
標準の装置を使用して簡単に製造するために、前記プリントヘッドは、MEMS後処理法によって、モノリシックの0.5ミクロンのCMOSチップに設計される。カラー写真の応用のため、前記プリントヘッドは100mmの長さで、インクジェットのタイプに応じた幅を有する。最小のプリントヘッドはIJ38であり、幅は0.35mmで、35mmのチップ面積を有する。そのプリントヘッドは19,200個のノズルとデータ及び制御回路を有している。
【1876】
インクは、射出成形されたプラスチック製のインク通路を経由して、プリントヘッドの背面に供給される。そのモールディングは50ミクロの特徴(features)が必要とされる。その特徴は、標準的な射出成型工具の中にリソグラフィでマイクロマシン加工されたインサートを使用して形成されることができる。インクは、ウエハの正面に形成されたノズル・チャンバーへ、ウエハを貫通するように形成された孔を通って流れる。そのプリントヘッドはTABによりカメラ回路に接続されている。

相互参照付きのアプリケーション
【1877】
次表は、最近出願された米国特許出願のガイドである。それらの出願は、これと共に一斉に提出され、特別なケースに言及するときに、その後の表で使用される参考を用いて検討されている。これらの出願は、また、対応する参考番号を有するオーストラリア仮特許出願(前述の表にて示されたような)のように出願されている。
【表212】
Figure 2001523900
【表213】
Figure 2001523900
ドロップ・オン・デマンド方式のインクジェット
【1878】
個々のインクジェットノズルの基本動作に関する11個の重要な特徴が特定されてきている。これらの特徴は大体は直角(orthogonal)であり、したがって、11次元のマトリクスとして解明されることができる。このマトリクスの11軸のほとんどは、本出願人により発展された記入事項を含む。
【1879】
次の表は、インクジェットタイプの11次元の表の軸を形成する。
アクチュエータ・メカニズム(18タイプ)
基本動作モード(7タイプ)
補助のアクチュエータ(8タイプ)
アクチュエータの増幅及び改良方法(17タイプ)
アクチュエータの動き(19タイプ)
ノズル補給方法(4タイプ)
吸入口への逆流を制限する方法(10タイプ)
ノズルの掃除方法(9タイプ)
ノズルプレート構造(9タイプ)
滴の噴出方向(5タイプ)
インクタイプ(7タイプ)
【1880】
これらの軸により表示された完全な11次元の表は、インクジェットノズルに関し、369億の可能な形態を含む。様々なインクジェット技術においてそれらの全てが実現可能ではないけれども、数百万は実行可能である。可能な形態の全てを説明することは、明らかに非現実的である。その代わり、いくつかのインクジェットタイプが詳細に吟味されてきた。それらが、上述の、指名されたIJ01からIJ45である。
【1881】
他のインクジェットの形態は、11軸の1又はそれ以上に沿って代替となる形態に置き換えることにより、これらの45の例から直ちに導き出すことができる。IJ01からIJ45のほとんどは、何らかの現在利用できるインクジェット技術より上位である特徴を、インクジェットプリントヘッドに作り込むことができる。
【1882】
発明者に知られている先行技術例がある場合には、これらの1又はそれ以上が、下記の表の例の欄に示される。該IJ01からIJ45のシリーズはまた、例の欄にも示されている。幾つかのケースでは、プリンタが、1つ以上の特徴を共有する場合には、1つの表に1回以上示されるかも知れない。
【1883】
好適な応用は以下のものを含む。すなわち、家庭用プリンタ、オフィス用ネットワークプリンタ、短期用デジタルプリンタ、業務用プリントシステム、布用プリンタ、ポケットプリンタ、インターネットwwwプリンタ、ビデオプリンタ、医療用画像、大判プリンタ、ノート型パソコン用プリンタ、ファックス機、工業用プリントシステム、写真コピー機、写真現像店等。
【1884】
前述した11次元のマトリクスで関連付けられた情報が以下の表に示される。
【1885】
【表214】
Figure 2001523900
【1886】
【表215】
Figure 2001523900
【1887】
【表216】
Figure 2001523900
【1888】
【表217】
Figure 2001523900
【1889】
【表218】
Figure 2001523900
【1890】
【表219】
Figure 2001523900
【1891】
【表220】
Figure 2001523900
【1892】
【表221】
Figure 2001523900
【1893】
【表222】
Figure 2001523900
【1894】
【表223】
Figure 2001523900
【1895】
【表224】
Figure 2001523900
【1896】
【表225】
Figure 2001523900
【1897】
【表226】
Figure 2001523900
【1898】
【表227】
Figure 2001523900
【1899】
【表228】
Figure 2001523900
【1900】
【表229】
Figure 2001523900
【1901】
【表230】
Figure 2001523900
【1902】
【表231】
Figure 2001523900
【1903】
【表232】
Figure 2001523900
【1904】
【表233】
Figure 2001523900
【1905】
【表234】
Figure 2001523900
【1906】
【表235】
Figure 2001523900
【1907】
【表236】
Figure 2001523900
【1908】
【表237】
Figure 2001523900
【1909】
【表238】
Figure 2001523900
【1910】
【表239】
Figure 2001523900
【1911】
【表240】
Figure 2001523900
【1912】
【表241】
Figure 2001523900
【1913】
【表242】
Figure 2001523900
インクジェットプリンティング
【1914】
相当数の新型のインクジェットプリンタが、好適な実施形態として、インクジェット技術に取って代わるために発展してきている。インクジェットデバイスの様々な組み合わせが、本発明の一部として開示されているプリンタデバイスの中に含めることができる。相互参照表により特別に示される、これらのインクジェットに関連するオーストラリアの仮特許の明細書がある。すなわち、
【表243】
Figure 2001523900
【表244】
Figure 2001523900
インクジェットの生産
【1915】
さらに、本出願は、多数のインクジェットプリンタの構築に、高度な半導体製造技術が使用されるかも知れない。好適な製造技術は、次の相互参照表に示されているオーストラリア仮特許の明細書中に開示されている。
【表245】
Figure 2001523900
【表246】
Figure 2001523900
【表247】
Figure 2001523900
流体の供給
【1916】
さらに、本実施例は、インクジェットヘッドへのインク配送システムを利用しても良い。一連のインクジェットノズルにインクを供給するための配送システムは、次の相互参照表に示されているオーストラリア仮特許の明細書中に開示されている。
【表248】
Figure 2001523900
MEMS技術
【1917】
さらに、本願は、インクジェットプリンタの配列を行う際に高度な半導体マイクロエレクトロメカニカル技術(MEMS技術)を利用しても良い。好適なマイクロエレクトロメカニカル技術は、次の相互参照表に示されているオーストラリア仮特許の明細書中に開示されている。
【表249】
Figure 2001523900
【表250】
Figure 2001523900
IR技術
【1918】
さらに、本願は、次の相互参照表に示されているオーストラリア仮特許の明細書中に開示されているような使い捨てカメラシステムを利用するようにしても良い。
【表251】
Figure 2001523900
ドットカード技術
【1919】
さらに、本願は、次の相互参照表に示されているオーストラリア仮特許の明細書中に開示されているようなデータ配信システムを使用するようにしても良い。
【表252】
Figure 2001523900
アートカム技術
【1920】
さらに、本願は、次の相互参照表に示されているオーストラリア仮特許の明細書中に開示されているアートカム型装置のようなカメラとデータ処理技術を使用するようにしても良い。
【表253】
Figure 2001523900
【表254】
Figure 2001523900
【表255】
Figure 2001523900
【1921】
当業者にとって、特定の実施例に示された本発明に対して、広範に述べられた発明の範囲及び精神から離脱することなく多様な変形や変更を加えることが可能である。本実施例は、従って例外的なものであり、制限的なものではないものとあらゆる面で考慮すべきである。
【図面の簡単な説明】
【1922】
【図1】
好適な実施例によって構成されたアートカム装置の説明図である。
【図2】
主要なアートカム電子コンポーネントの概略ブロック図である。
【図3】
アートカム中央プロセッサの概略ブロック図である。
【図3(a)】
VLIWベクトルプロセッサの詳細図である。
【図4】
処理ユニットの詳細図である。
【図5】
ALU188の詳細図である。
【図6】
入力ブロックの詳細図である。
【図7】
出力ブロックの詳細図である。
【図8】
レジスタブロックの詳細図である。
【図9】
クロスバー1の詳細図である。
【図10】
クロスバー2の詳細図である。
【図11】
読み出しプロセスブロックの詳細図である。
【図12】
読み出しプロセスブロックの詳細図である。
【図13】
バレルシフタブロックの詳細図である。
【図14】
アダー/ロジックブロックの詳細図である。
【図15】
乗算ブロックの詳細図である。
【図16】
I/Oアドレス生成器の詳細図である。
【図17】
画素蓄積フォーマットの説明図である。
【図18】
順次読み出しイタレータプロセスの説明図である。
【図19】
ボックス読み出しイタレータプロセスの説明図である。
【図20】
ボックス書き込みイタレータプロセスの説明図である。
【図21】
垂直ストリップ読み出し/書き込みイタレータプロセスの説明図である。
【図22】
垂直ストリップ読み出し/書き込みイタレータプロセスの説明図である。
【図23】
シーケンシャル生成プロセスの説明図である。
【図24】
シーケンシャル生成プロセスの説明図である。
【図25】
垂直ストリップ生成プロセスの説明図である。
【図26】
垂直ストリップ生成プロセスの説明図である。
【図27】
画素データ構造の説明図である。
【図28】
画素処理プロセスの説明図である。
【図29】
表示コントローラの概略ブロック図である。
【図30】
CCD像編成の説明図である。
【図31】
論理的画像用の蓄積フォーマットの説明図である。
【図32】
内部画像メモリー蓄積フォーマットの説明図である。
【図33】
画像ピラミッド蓄積フォーマットの説明図である。
【図34】
アートカードをサンプリングするプロセスの時系列の説明図である。
【図35】
スーパーサンプリングプロセスの説明図である。
【図36】
回転したアートカードを読み取るプロセスの説明図である。
【図37】
アートカードを復号化するために必要なステップのフローチャートである。
【図38】
単一のアートカードの左隅の拡大図である。
【図39】
検出用の単一ターゲットである。
【図40】
ターゲットを検出するため使用される方法の説明図である。
【図41】
二つのターゲット間の距離を計算する方法の説明図である。
【図42】
重心ドリフトのプロセスの説明図である。
【図43】
重心ルックアップテーブルの一形態を示す図である。
【図44】
重心更新プロセスの説明図である。
【図45】
好適な実施例において利用されるデルタ処理用ルックアップテーブルの説明図である。
【図46】
アートカードのスクランブルを解除するプロセスの説明図である。
【図47】
ドットの系列の拡大図である。
【図48】
ドットカードのデータ面の説明図である。
【図49】
単一データブロックの概略説明図である。
【図50】
単一データブロックの説明図である。
【図51】
図50のデータブロックの部分拡大図である。
【図52】
図50のデータブロックの部分拡大図である。
【図53】
単一ターゲット構造の説明図である。
【図54】
データブロックのターゲット構造の説明図である。
【図55】
データ領域のボーダークロック用領域に対するターゲットの位置関係の説明図である。
【図56】
データブロックのオリエンテーションカラムの説明図である。
【図57】
データブロックのドットのアレイの説明図である。
【図58】
リード・ソロモン符号化のデータの構造の概略説明図である。
【図59】
例示的なリード・ソロモン符号化プロセスの説明図である。
【図60】
リード・ソロモン符号化プロセスの説明図である。
【図61】
データブロック内の符号化されたデータのレイアウトの説明図である。
【図62】
代替的なアートカードをサンプリングする際のサンプリングプロセスの説明図である。
【図63】
回転した代替的なアートカードをサンプリングする一例の拡大図である。
【図64】
スキャニングプロセスの説明図である。
【図65】
スキャニングプロセスの起こり得るスキャニング分布の説明図である。
【図66】
シンボル誤りとリード・ソロモンブロック誤りの確率の間の関係を示す図である。
【図67】
復号化プロセスのフローチャートである。
【図68】
復号化プロセスのプロセス稼働図である。
【図69】
復号化におけるデータフローステップの説明図である。
【図70】
読み出しプロセスの詳細図である。
【図71】
代替的なアートカードの開始を検出するプロセスの詳細図である。
【図72】
ビットデータ抽出プロセスの詳細図である。
【図73】
復号化プロセスで利用されるセグメンテーションプロセスの説明図である。
【図74】
ターゲットを見つける復号化プロセスの詳細図である。
【図75】
ターゲットを見つける際に利用されるデータ構造の説明図である。
【図76】
Lancos3関数構造の説明図である。
【図77】
クロックマーク及びボーダー領域を示すデータブロックの部分拡大図である。
【図78】
ビットイメージを復号化する際の処理ステップの説明図である。
【図79】
ビットイメージを復号化する際のデータフローステップの説明図である。
【図80】
好適な実施例のスクランブル解除プロセスの説明図である。
【図81】
コンボルバの一実施形態の説明図である。
【図82】
コンボルブプロセスの説明図である。
【図83】
コンポジットプロセスの説明図である。
【図84】
通常のコンポジットプロセスの詳細図である。
【図85】
ワープマップを使用するワーププロセスの説明図である。
【図86】
ワープバイリニア補間プロセスの説明図である。
【図87】
スパン計算のプロセスの説明図である。
【図88】
基本スパン計算プロセスの説明図である。
【図89】
スパン計算プロセスの詳細な一実施形態の説明図である。
【図90】
画像ピラミッドレベルを読み取るプロセスの説明図である。
【図91】
バイリニア補間のためピラミッドテーブルを使用する方法の説明図である。
【図92】
ヒストグラム収集プロセスの説明図である。
【図93】
色変換プロセスの説明図である。
【図94】
色変換プロセスの説明図である。
【図95】
色空間変換プロセスの詳細図である。
【図96】
入力座標を計算するプロセスの説明図である。
【図97】
フィードバック付きコンポジット処理するプロセスの説明図である。
【図98】
汎用スケーリングプロセスの説明図である。
【図99】
Xスケーリングプロセスにおけるスケールの説明図である。
【図100】
Yスケーリングプロセスにおけるスケールの説明図である。
【図101】
モザイクプロセスの説明図である。
【図102】
サブピクセル移動プロセスの説明図である。
【図103】
コンポジットプロセスの説明図である。
【図104】
フィードバック付きでコンポジットするプロセスの説明図である。
【図105】
入力画像からの色でタイル貼りするプロセスの説明図である。
【図106】
フィードバック付きでタイル貼りするプロセスの説明図である。
【図107】
テクスチャ置換でタイル貼りするプロセスの説明図である。
【図108】
入力画像からの色でタイル貼りするプロセスの説明図である。
【図108】
入力画像からの色でタイル貼りするプロセスの説明図である。
【図109】
フィードバック無しでテクスチャを与えるプロセスの説明図である。
【図110】
フィードバック付きでテクスチャを与えるプロセスの説明図である。
【図111】
CCD画素の回転のプロセスの説明図である。
【図112】
緑色サブピクセルの補間のプロセスの説明図である。
【図113】
青色サブピクセルの補間のプロセスの説明図である。
【図114】
赤色サブピクセルの補間のプロセスの説明図である。
【図115】
奇数画素行に対し0度回転のCCD画素補間のプロセスの説明図である。
【図116】
偶数画素行に対し0度回転のCCD画素補間のプロセスの説明図である。
【図117】
Lab色空間への色変換のプロセスの説明図である。
【図118】
1/√Xの計算のプロセスの説明図である。
【図119】
1/√Xの計算の実施例の詳細説明図である。
【図120】
バンプマップによる法線計算のプロセスの説明図である。
【図121】
バンプマップによる照度計算のプロセスの説明図である。
【図122】
バンプマップによる照度計算のプロセスの詳細説明図である。
【図123】
指向性ライトを使用するLの計算のプロセスの説明図である。
【図124】
オムニライト及びスポットライトを使用するLの計算のプロセスの説明図である。
【図124】
オムニライト及びスポットライトを使用するLの計算の一実施形態の説明図である。
【図126】
N.L内積を計算するプロセスの説明図である。
【図127】
N.L内積を計算するプロセスの詳細説明図である。
【図128】
R.V内積を計算するプロセスの説明図である。
【図129】
R.V内積を計算するプロセスの詳細説明図である。
【図130】
減衰計算の入力及び出力の説明図である。
【図131】
減衰計算の実際の実施形態の説明図である。
【図132】
円錐ファクタのグラフの説明図である。
【図133】
半影計算のプロセスの説明図である。
【図134】
半影計算に利用される角の説明図である。
【図135】
半影計算への入力及び出力の説明図である。
【図136】
半影計算の実際の実施形態の説明図である。
【図137】
周辺光計算への入力及び出力の説明図である。
【図138】
周辺光計算の実際の実施形態の説明図である。
【図139】
散光計算の実際の実施形態の説明図である。
【図140】
散光計算への入力及び出力の説明図である。
【図141】
散光計算の実際の実施形態の説明図である。
【図142】
反射計算への入力及び出力の説明図である。
【図143】
反射計算の実際の実施形態の説明図である。
【図144】
反射計算への入力及び出力の説明図である。
【図145】
反射計算の実際の実施形態の説明図である。
【図146】
周辺光だけの独計算の実際の実施形態の説明図である。
【図147】
光計算のプロセス概要の説明図である。
【図148】
単一無限光源用の照明計算の一例の説明図である。
【図149】
バンプマップを用いないオムニ光源用の照明計算の一例の説明図である。
【図150】
バンプマップを用いるオムニ光源用の照明計算の一例の説明図である。
【図151】
バンプマップを用いないスポットライト光源用の照明計算の一例の説明図である。
【図152】
関連したバンプマップを用いて画像に単一スポットライトを当てるプロセスの説明図である。
【図153】
単一プリントヘッドの論理的レイアウトの説明図である。
【図154】
プリントヘッドインタフェースの構造の説明図である。
【図155】
Lab画像の回転のプロセスの説明図である。
【図156】
印刷画像の画素のフォーマットの説明図である。
【図157】
ディザリングプロセスの説明図である。
【図158】
8ビットドット出力を生成するプロセスの説明図である。
【図159】
カードリーダーの斜視図である。
【図160】
カードリーダーの展開斜視図である。
【図161】
アートカードリーダーのクローズアップ図である。
【図162】
プリントロール及びプリントヘッドの斜視図である。
【図163】
プリントロールの第1の展開斜視図である。
【図164】
プリントロールの第2の展開斜視図である。
【図165】
プリントロール認証チップの説明図である。
【図166】
プリントロール認証チップの拡大図である。
【図167】
一段階認証チップデータプロトコルの説明図である。
【図168】
二段階認証チップデータプロトコルの説明図である。
【図169】
第1のプレゼンスオンリープロトコルの説明図である。
【図170】
第2のプレゼンスオンリープロトコルの説明図である。
【図171】
第3のデータプロトコルの説明図である。
【図172】
第4のデータプロトコルの説明図である。
【図173】
最長期間LFSRの概略ブロック図である。
【図174】
クロック制限フィルターの概略ブロック図である。
【図175】
タンパー検出ラインの概略ブロック図である。
【図176】
特大のnMOSトランジスタの概略ブロック図である。
【図177】
タンパー検出ラインからの多数のXORの取り出しを説明する図である。
【図178】
タンパーラインがノイズ発生回路を覆う状態の説明図である。
【図179】
通常のFETの実施形態の説明図である。
【図180】
好適な実施例の修正されたFETの実施形態の説明図である。
【図181】
認証チップの略ブロックである。
【図182】
メモリマップの一例の説明図である。
【図183】
定数メモリマップの一例の説明図である。
【図184】
RAMメモリマップの一例の説明図である。
【図185】
フラッシュメモリ変数メモリマップの一例の説明図である。
【図186】
フラッシュメモリプログラムメモリマップの一例の説明図である。
【図187】
状態機械のコンポーネント間のデータフロー及び関係を示す図である。
【図188】
I/Oユニットのコンポーネント間のデータフロー及び関係を示す図である。
【図189】
算術論理ユニット(ALU)の概略ブロック図である。
【図190】
RPLユニットの概略ブロック図である。
【図191】
ALUのRORブロックの概略ブロック図である。
【図192】
プログラムカウンタユニットのブロック図である。
【図193】
メモリーユニットの概略ブロック図である。
【図194】
アドレス生成ユニットの概略ブロック図である。
【図195】
JSIGENユニットの概略ブロック図である。
【図196】
JSRGENユニットの概略ブロック図である。
【図197】
DBRGENユニットの概略ブロック図である。
【図198】
LDKGENユニットの概略ブロック図である。
【図199】
RPLGENユニットの概略ブロック図である。
【図200】
VARGENユニットの概略ブロック図である。
【図201】
CLRGENユニットの概略ブロック図である。
【図202】
BITGENユニットの概略ブロック図である。
【図203】
プリントロール認証チップに記憶された情報を示す図である。
【図204】
アートカム認証チップ内に記憶されたデータの説明図である。
【図205】
プリントヘッドパルス特徴付けプロセスの説明図である。
【図206】
プリントヘッドインク供給機構の拡大断面斜視図である。
【図207】
インクヘッド供給ユニットの底面斜視図である。
【図208】
インクヘッド供給ユニットの底面側の断面図である。
【図209】
インクヘッド供給ユニットの上面斜視図である。
【図210】
インクヘッド供給ユニットの上面側の断面図である。
【図211】
プリントヘッドの一部分の斜視図である。
【図212】
プリントヘッドユニットの拡大斜視図である。
【図213】
アートカムカメラの内部の上面側の斜視図であり、平らにされた部品が示されている。
【図214】
アートカムカメラの内部の底面側の斜視図であり、平らにされた部品が示されている。
【図215】
アートカムカメラの内部の第1の上面側の斜視図であり、アートカムに収容された部品が示されている。
【図216】
アートカムカメラの内部の第2の上面側の斜視図であり、アートカムに収容された部品が示されている。
【図217】
アートカムカメラの内部の第2の上面側の斜視図であり、アートカムに収容された部品が示されている。
【図218】
葉書プリントロールの裏書き部分の説明図である。
【図219】
画像印刷後の葉書プリントロールの対応した表画像の説明図である。
【図220】
顧客が購入できる状態のプリントロールの形態の説明図である。
【図221】
アートカムアプリケーション全体のソフトウェア/ハードウェアモジュールのレイアウトの説明図である。
【図222】
カメラマネージャのソフトウェア/ハードウェアモジュールのレイアウトの説明図である。
【図223】
画像処理マネージャのソフトウェア/ハードウェアモジュールのレイアウトの説明図である。
【図224】
プリンタマネージャのソフトウェア/ハードウェアモジュールのレイアウトの説明図である。
【図225】
画像処理マネージャのソフトウェア/ハードウェアモジュールのレイアウトの説明図である。
【図226】
ファイルマネージャのソフトウェア/ハードウェアモジュールのレイアウトの説明図である。
【図227】
代替的な形態のプリントロールの部分断面斜視図である。
【図228】
図227のプリントロールの左側の拡大斜視図である。
【図229】
単一プリントロールの右側の拡大斜視図である。
【図230】
プリントロールのコア部分の部分断面拡大斜視図である。
【図231】
プリントロールのコア部分の第2の拡大斜視図である。
【図232】
‘Bizcard’の正面図である。
【図233】
さらなる改良に従って構成されたカメラシステムを概略的に示す。
【図234】
出力メディアの表面と裏面に印刷をするためのプリンター装置を概略的に示す。
【図235】
写真の裏面における出力データの形式を示す。
【図236】
出力メディアの拡大された部分を示す。
【図237】
写真の裏面からデータを読み込むために使用される読み取り装置を示す。
【図238】
さらなる改良の装置の利用を示す。
【図239】
画像の向きの具体的な処理の概略的な例を示す。
【図240】
さらなる改良に従って構成されたカメラを使用した場合の画像の特有の効果を作る方法を示す。
【図241】
さらなる改良に従ったプリントロールを示す。
【図242】
さらに改良された実施例の方法を示す。
【図243】
さらなる改良の操作方法を示す。
【図244】
さらなる改良に従った画像処理の一形態を示す。
【図245】
さらなる改良の操作方法を示す。
【図246】
画像のキャプチャー及び出力のプロセスを示す。
【図247】
赤目除去のプロセスを示す。
【図248】
標準的なアートカム装置に従って構成された写真印刷編成を示す。
【図249】
さらなる改良に従って構成されたデュアルプリントヘッド編成を示す。
【図250】
さらなる改良のカール除去装置を示す。
【図251】
立体写真画像を見るプロセスを示す。
【図252】
立体写真効果を作成するために設計された、さらなる改善のレンズシステムを示す。
【図253】
立体写真画像の創造を示す部分斜視図である。
【図254】
さらなる改良に従って立体写真画像を作るための装置を示す。
【図255】
図254の位置決めユニットをさらに詳細に示す。
【図256】
立体写真画像の作成に好適なカメラ装置を示す。
【図257】
立体写真効果を改良すべく、不透明な裏当てを使用するプロセスを示す。
【図258】
プリントメディアに画像を生成する方法を概略的に示す。
【図259】
本発明に従って構成されたプリントメディアの構造を示す。
【図260】
さらなる改良に従って構成されたプリントメディアの利用を示す。
【図261】
さらなる改良に従ったプリントメディアの構造の第1形態を示す。
【図262】
本発明に従ったプリントメディアの構造のさらなる形態を示す。
【図263】
本発明に従ったプリントメディアの構造のさらなる形態の概略的な断面図を示す。
【図264】
本発明に従ったプリントメディアの構造のさらなる形態の概略的な断面図を示す。
【図265】
図263及び7に従ったプリントメディア構成の製造の一形態を示す。
【図266】
図265の編成を利用するために繊維材料を押し出すことによる製造の別の形態を示す。
【図267】
さらなる改良の主要ステップを示す。
【図268】
さらなる改良にて使用されるSobelフィルターの効果を示す。
【図269】
さらなる改良にて使用される曲線のオフセット方法を示す。
【図270】
さらなる改良にて使用される曲線のオフセット方法を示す。
【図271】
認識された顔を含む標準的な画像を示す。
【図272】
興味の領域を決定するための第1のフローチャートを示す。
【図273】
興味の領域を決定するための第2のフローチャートを示す。
【図274】
画像をタイリングする最初の工程を示す。
【図275】
画像のタイリングのための別のタイルパターンを示す。
【図276】
タイルの不透明なマスクを示す。
【図277】
図276のタイルのための、対応する表面テクスチャ高さを示す。
【図278】
図276のタイルのための、対応する表面テクスチャ高さを示す。
【図279】
画像を修正するためにglobal
opacigtyを使用する工程を示す。
【図280】
実際のペイントを混合させる効果を真似るための、ストローキング効果を修正する方法を示す。
【図281】
ブラッシュストロークのテーブルを作成する工程を示す。
【図282】
ストロークカラーパレットを作成する工程を示す。
【図283】
結果として起こるペインティング工程を示す。
【図284】
ブラッシュストロークを合成するさらなる実施例におけるステップのフローチャートを示す。
【図285】
ベジエ曲線の区分的線分への変換方法を示す。
【図286】
ブラッシュストロークプロセスを示す。
【図287】
さらなる実施例で使用される、好適なブラッシュスタンプを示す。
【図288】
さらなる改良の第1の編成を示す。
【図289】
さらなる改良の操作のフローチャートを示す。
【図290】
高解像度で印刷された画像の構成を示す。
【図291】
コピーを作成するための、図290の画像を処理するための装置を示す。
【図292】
centroidの処理ステップを示す。
【図293】
一連の検知したパターンを示す。
【図294】
さらなる改良の実施の図を示す。
【図295】
さらなる改良を示す。
【図296】
さらなる実施例のカード読み取り装置を示す。
【図297】
ブラシ・バンプマップを示す。
【図298】
ブラシ・バンプマップを示す。
【図299】
背景キャンバスのバンプマップを示す。
【図300】
背景キャンバスのバンプマップを示す。
【図301】
バンプマップを結合するプロセスを示す。
【図302】
バンプマップを結合するプロセスを示す。
【図303】
マップの背景を示す。
【図304】
さらなる改良に従ってバンプマップを結合するプロセスを示す。
【図305】
さらなる改良に従ってバンプマップを結合するプロセスを示す。
【図306】
芸術的な画像の生成のさらなる改良の方法におけるステップを示す。
【図307】
一つのガモットを第2のガモットにマッピングするプロセスを示す。
【図308】
さらなる改良の一実施形態を示す。
【図309】
ガモットリマッピングの好ましい形態を示す。
【図310】
さらなる改善にて使用されるガモット・モーフィングを示す。
【図311】
アートカム装置の基本操作を示す。
【図312】
さらなる改良で使用される一連のアートカードを示す。
【図313】
さらなる改良で使用されるアルゴリズムのフローチャート図である。
【図314】
本発明に従って作成される、印刷された布の出力の概略図である。
【図315】
さらなる改良の接続方式を示す。
【図316】
部分的に断面が描かれた、さらなる改良の斜視図を示す。
【図317】
書き込みデータエリア配列を有するカードを示す。
【図318】
限定された数の書き込みデータ領域のみを有するカードを示す。
【図319】
データ領域の構成を示す。
【図320】
ターゲット構成を示す。
【図321】
さらなる改良の装置を示す。
【図322】
図321を近づいて見た状態を示す。
【図323】
読み取り装置の中にカードを挿入するプロセスを示す。
【図324】
カードを取り出すプロセスを示す。
【図325】
カードにデータ領域を書くプロセスを示す。
【図326】
カードリーダーの構造の概略図である。
【図327】
さらなる改善の概略的な配列を示す。
【図328】
さらなる改善のインターフェースの例を示す。
【図329】
さらなる改善のソフトウェアモジュールの構成の一形態を示す。
【図330】
アートカムシステムの操作の概略図である。
【図331】
アートカムシステムの変形された操作の第1の例が示されている。
【図332】
アートカムの操作を変更するリピティションカードが示されている。
【図333】
アートカムの操作を変更するためのアートカードテストカードが示されている。
【図334】
アートカム装置の出力テスト結果を示す。
【図335】
さらなる改良に従って構成されたカメラシステムを概略的に示す。
【図336】
さらなる改良のプリンター装置及び録音装置を概略的に示す。
【図337】
写真の裏面の磁気帯の構成を示す。
【図338】
写真の裏面に録音されたデータを読むために使用される読み取り装置を示す。
【図339】
さらなる改良の装置の使用を示す。
【図340】
アートカム装置の機能部分の概略図を示す。
【図341】
さらなる改良を使用するステップを示す。
【図342】
さらなる改良に従ったアートカム装置の操作を示す。
【図343】
出力された“写真”の裏面に印刷された他の実施例を示す。
【図344】
さらなる実施例に従って構成されたプリンター装置の内部を示す。
【図345】
さらなる実施例に従って構成されたネットワーク配布システムを示す。
【図346】
図345のプリンターコンピュータの操作を概略的に示す。 [Document name] Statement
[Title of the Invention] A camera provided with an integrated printing system
[Claims]
[Claim 1]
With at least one area image sensor for shooting the scene;
With a camera processing device for processing the captured scene according to a predetermined scene conversion request;
With a printer for printing the processed image scene on print media using printing ink stored in one removable module located inside the camera system;
It is a camera system equipped with
A portable unit for capturing a scene with the area image sensor and printing the scene directly from the camera system with the printer.
A camera system characterized by being equipped with.
2.
A print roll for accommodating the print media and printing ink used by the printer is provided.
The print roll is removable with respect to the camera system.
The camera system according to claim 1.
3.
The print roll has an authentication chip containing authentication information.
The camera processor has been adapted to verify the authentication chip so that authentication is performed when the print roll is inserted into the camera system.
The camera system according to claim 2.
4.
The printer includes a drop-on-demand ink printer.
The camera system according to claim 1.
5.
Further includes a cutting device for the separation of printed photographs,
The camera system according to claim 1.
6.
The number of the area image sensors is at least two.
The camera processing device is a device that acquires a stereoscopic image from the area image sensor.
The print media is a means for three-dimensionally imaging the stereoscopic image in order to form a three-dimensional effect.
The camera system according to claim 1.
【Technical field】
[0001]
The present invention relates to an image processing method and an apparatus, and particularly discloses a digital instant camera having an image processing function.
0002.
The present invention further relates to the field of digital camera technology, and in particular discloses a digital camera with an integrated color printer.
[Background technology]
0003
For many years, conventional camera technology has relied on the equipment of optical processing systems that depend on the negative of the image projected on the photosensitive film. The photosensitive film is later chemically treated to allow the creation of positive prints that "fix" and reproduce the original image. Although such image processing techniques have become standard, full-color processing of images can be overly complex due to the uneconomical and difficult techniques required. In recent years, digital cameras have become available. These cameras typically rely on the use of charge-coupled devices (CCDs) to detect outstanding images. The camera typically has a storage medium for storage of detected scenes, in addition to a connector for transferring images to a computer device for subsequent image processing and printing.
0004
Such a device is inconvenient in that all images are stored by the camera and can only be printed after some time. In addition, the camera must have sufficient storage capacity for storing a large number of images, and in addition, the user of the camera can use the computer system for downloading images, printing with a computer printer, and the like. Must be accessed.
0005
In addition, Polaroid® type instant cameras that enable the generation of instant images have been used for some time. However, this type of camera is limited to producing images of limited size only, and there are many problems with the use of chemicals, especially the photographs made with these types of cameras. to degrade.
0006
When using such a device or other image capture device, it is desirable to properly capture audio and other environmental information when taking a picture.
0007
Further, it is well known that the first image given to the left eye and the second image given to the right eye cause the illusion of a three-dimensional plane. However, the conventional system requires complicated preparation, and an image (high fidelity image) very close to the actual product is usually impossible. Moreover, the general selection of images is limited to specially prepared images.
0008
It is generally necessary to be able to generate a stereoscopic image (high-fidelity stereoscopic image) that is extremely close to the actual product on demand, and in particular, to create an image with a portable camera device capable of freely taking a stereoscopic image.
0009
In addition, it would be great if such a camera photo image creation system could create an automatically customized postcard with an image captured by a camera device on one side and a postage paid stamp and address on the other side. Would be convenient for.
0010
In recent years, photo reproduction techniques for creating long "panoramic" views of images have become more and more common. These images are created on photo paper or the like. Also, to create an additional "panoramic" type of view, the composition of the image is longer than it is wide. Unfortunately, the photo paper on which the image is formed has problems if it is stored in a roll with a small diameter.
0011
In recent years, it has become quite common to place filters to create effects on images that resemble popular artistic painting styles. These filters are designed to capture an image and give an artistic rendition of one of the artistic styles to the first image to obtain a second image. One of the most popular artists of our time is Vincent van Gogh. One of the characteristics of this artist's work of art is that the direction of the brush stroke in the flat area of his painting positively follows the direction of the edges of the main objects in the painting. For example, his works entitled "Road with Cypress and Stars", "Starry Night" and "Doctor Gouache" are useful examples to explain this process. It would be desirable to provide a computer algorithm that automatically creates a "Van Gogh" effect on any input image and outputs it from a portable camera system.
0012
Unfortunately, warping systems are commonly used in high-end computers, and it is generally inconvenient to scan or print out images into the computer. When acquiring images using a portable camera or the like, it is generally necessary to transfer the acquired images to a computer system for image processing later and then process those images according to the request. It is especially inconvenient.
0013
Moreover, the effect of imitating various painting methods is often considered to be of great value. If we could go further and incorporate these effects into one simple form, they would be suitable for combining with a portable camera device capable of digital photography, thereby in the camera device. You will be able to generate the desired filtered image for the scene being captured.
0014.
Unfortunately, the demands of awkward systems in cameras manufactured today, such as digital image conversion technology and filter exchange technology, clearly cannot take advantage of technologies that are not yet available, and so far have been inspired by creativity. You can't use a filter that isn't done.
0015.
One of the most common methods of camera technology is traditional negative film and positive print photography. In this case, a camera is used to capture the scene on the negative film, which is processed to fix the negative image. A series of prints is then made from the negative film. In addition, a series of prints can be made immediately from negatives at any time. Unfortunately, digital cameras (including those proposed in this application) require permanent storage of captured and printed photographs in digital format if further copying of images is required later. Let's go. It may be inconvenient in general that a copy of a "photograph" simply requires the first print. Of course, instead, you can copy using a high-quality color photocopyer. Unfortunately, such devices have limited copy capability, and signal degradation often occurs when such copy forms are made. Obviously, a more preferred form of making a copy of the camera print is desired.
0016.
In addition, colors are limited due to media choices during undercoating, and almost all artistic paintings about landscapes use a limited gamut. Such restrictions are often used by artists to produce a variety of artistic effects. Classic examples of this process include well-known works of art such as:
-Camille Pissarro "L'le Lacroix-Rouen, the effect of fog" 1888, Philadelphia Museum of Art
-Charles Angrand "River Seine, Morning" -1889, Petit Palais Collection, Geneva
-Henri van de Velde "Crepuscule" -1892, Kroller-Muller National Museum, Otterlo
-Giorgio Surah "Ba-Butan's Sandy Beach, Onfleur" 1886-Tournai Museum
[0017]
It is desirable to create an output image from any input image that has similar effects and characteristics to those in the above list.
0018
Many creative decisions are made when some garment is created. The first is the shape and style of the garment, plus the color and type of cloth. For the time being, fashion designers try many different alternatives and try to draw the final fashion product before completing the garment.
0019
Such a process is generally inadequate for quick and flexible changes in clothing and the opportunity to quickly determine the final appearance of a fashion product.
0020
Binoculars and telescopes are well known. In particular, taking binoculars as an example, the device provides a telephoto magnification of the landscape to enhance the ability of the user's eyesight. In addition, devices such as night binoculars are also used to enhance the ability of the user's eyesight. Unfortunately, these systems rely on real-time, analog optics, making permanent recording of what they see difficult. One method that seems to be suitable for recording a permanent copy of a scene is to attach a sensor device such as a CCD that captures the scene and store it in a storage device for later printing. Unfortunately, such a structure is particularly disturbing when the use of binoculars in the field and in a highly portable condition is desired.
0021.
Many forms of information storage in a compressed state are well known. For example, in the field of computer equipment, the use of fixed or portable magnetic disk equipment is common. As for portable discs, "floppy disks" and "zip disks" and other methods of portable magnetic storage media are widely accepted in the market. Another form of portable storage is a compact disc "CD" that utilizes a series of elongated pits (arranged along a spiral track and read by a laser beam device). The use of CDs provides a very low cost form of storage. However, the technology required is quite complex and the use of rewritable CD-type devices is extremely limited.
0022.
Another method of storage is magnetic cards, often used for credit cards and similar. These cards typically have a magnetic band on the back to record information related to the user of the card. In recent years, the convenience of magnetic cards has been increasing in the form of smart card technology in which integrated circuit type devices are incorporated into cards. Unfortunately, the cost of such equipment is often high, and the complexity of the technology used is also significant.
[0023]
Traditional silver halide camera processing systems have resulted in the use of well-known "negatives" for the production of large numbers of prints. The negatives have typically become the source of prints, and their implementation has grown for care and protection for continuous use.
0024
In a coding system detected by a fault-tolerant method, there is an important concern as to how coding that enables efficient decoding is possible. Therefore, it is desired to provide an efficient coding system.
0025
Outline of the present invention
The present invention relates to providing an alternative form of a camera system including a digital camera with an integrated color printer. In addition, the camera is equipped with hardware and software to increase the apparent resolution of the image sensing system and transform the image into various "artistic styles" and graphic enhancements.
0026
According to a further aspect of the present invention, the processing is performed by at least one area image sensor for capturing a scene, a camera processor means for processing the captured scene according to a predetermined scene conversion request, and the like. A camera system including a printer for printing a scene of an image on a print medium, and a print media and a printing ink housed in one removable module inside the camera system is provided. The camera system includes a handheld unit for capturing a scene with the area image sensor and printing the scene with the printer directly from the camera system.
[0027]
The camera system preferably comprises a print roll for storing print media and a printing ink used by the printer. The print roll is removable from the camera system. Further, the print roll comprises an authentication chip containing the authentication information so that the authentication is performed when the print roll is inserted into the camera system, and the camera processing device interrogates the authentication chip. It is adapted to be.
[0028]
In addition, the printer includes a drop-on-demand ink printer and a cutting device for separating printed photographs.
[0029]
According to the first aspect of the present invention, at least one area image sensor for capturing a scene, a camera processing device for processing the captured scene according to a predetermined scene conversion request, and a scene of the processed image. A camera system is provided that includes a printer for printing on print media, and print media and printing ink housed in one removable module inside the camera system. The camera system includes a handheld unit for capturing a scene with the area image sensor and printing the scene with the printer directly from the camera system.
[0030]
Preferably, the camera system includes a print roll for storing the print media and printing ink used by the printer. The print roll is removable from the camera system. Further, the print roll comprises an authentication chip containing the authentication information so that the authentication is performed when the print roll is inserted into the camera system, and the camera processing device interrogates the authentication chip. It is adapted to be.
0031
In addition, the printer includes a drop-on-demand ink printer and a cutting device for separating printed photographs.
[0032]
A user interface for operating the device is provided according to a further aspect of the invention. The user interface has a card that is inserted into the device, and the surface of the card contains a visible description of the effect the card has on the output of the device.
0033
According to a further aspect of the invention.
With at least one area image sensor for capturing the scene;
With a camera processing device for processing the captured scene according to a predetermined scene conversion request;
With a printer for printing the processed image scene on print media;
With a removable module for storing the print media and printing ink for the printer;
A camera system equipped with is provided. The camera system includes a handheld unit for capturing a scene with the area image sensor and printing the scene with the printer directly from the camera system.
0034
According to a further aspect of the invention.
With a sensor means that detects images;
With a processing device for processing the detected image according to a predetermined processing request;
If so, with a voice recording device to associate and match the voice signal with the detected image;
With a printing device for printing the processed detection image in the first area of the print media supplied by the camera system and printing the encoded version of the audio signal in the second area of the print media;
A camera system equipped with is provided. Preferably, the detection image is printed on the first side of the print media and the encoded version of the audio signal is printed on the second side of the print media.
0035.
According to the present invention
With an area image sensor device that detects images;
With an image storage device for storing the detected image;
With a localization device that detects the orientation of the camera when detecting an image;
With a processing device for processing the detected image using the detected camera orientation;
A camera system equipped with is provided.
0036
According to a further aspect of the invention.
Capture images using focus adjustment technology;
Use focus setting as an indicator of the position of the configuration in the image;
The focus setting is used to process the image to produce an effect specific to the focus setting;
Print the image;
A digital image processing method comprising the above is provided.
0037
Preferably, the image is captured using zoom techniques and the zoom settings are used in a heuristic way to process parts of the image.
[0038]
According to a further aspect of the present invention, there is provided a method of processing an image taken by a digital camera equipped with an eye position detection device. The method includes the use of eye position information in the detected image in order to process the image with a spatially varying sense (depending on the eye position information).
[0039]
The step includes using eye position information to identify the location of the area of interest in the detected image. The process can include the placement of callouts on the image and the application of certain distortions to the image. Alternatively, the process also includes applying a brush stroke filter to the area of the eye position information for a finer image. Ideally, the camera can print the result of the process almost immediately.
0040
According to a further aspect of the invention, a method of processing an image taken by a digital camera with an automatic exposure setting is provided, the processing method comprising using the information to process the detected image.
[0041]
The information-using step described above uses the auto-exposure setting to determine the color remapping in the image because the color in the image is converted to the calculation of the auto-exposure setting to generate a corrected image. Including doing. The process makes the color of the remapped image deeper and more vibrant when the exposure setting indicates a dark state, and the color of the remapped image when the exposure setting indicates a bright state. But make it brighter and more saturated.
[0042]
Recently, digital cameras have become more and more popular. These cameras typically use a charge-coupled device (CCD) array to obtain the desired image and store the captured scene on an electronic storage medium (for subsequent image processing and printing). Do the computer system for later downloads). Typically, when using a computer system to print an image, sophisticated software is used to process the image as required.
[0043]
Unfortunately, such systems require significant post-processing of the captured image, usually presenting the image in the orientation in which it was taken and performing the necessary or required modifications of the captured image. Therefore, it depends on the post-treatment process. In addition, a lot of environmental information is lost when the picture is taken.
[0044]
According to a further aspect of the invention, a method of processing an image captured using a digital camera and a flash is provided, which method comprises the following steps.
(a) Discovery (identification) of distortion of the captured image due to the use of the flash.
(b) Modification of the image to locally reduce the effects of the distortion
0045
A digital camera that reduces the effects of flash distortion on a captured image in accordance with a second aspect of the invention.
(a) With a digital image capture device that captures images for image capture;
(b) With a distortion positioning device for finding the position of the flash-induced color distortion in the captured image;
(c) With an image distortion corrector connected to the distortion positioning device and the digital image capture device and adapted to process the captured image so as to reduce the effects of the distortion;
(d) With a display device connected to the image distortion correction device for display;
A digital camera equipped with is provided.
[0046]
A method for producing a stereoscopic image is provided according to a further aspect of the present invention.
(a) A camera device is used to capture the scene as a stereoscopic image;
(b) A stereoscopic image such as an integrally formed image is printed at a predetermined position on the first surface portion of the transparent print media on which the lens system is formed on the second surface, and the printed stereoscopic image is printed. Allow the left and right eyes of the observer of the captured image to see the scene as a stereoscopic image;
Including that.
[0047]
Print media and ink supply devices are provided according to a further aspect of the present invention. The feeding device is adapted to supply the ink and the print media for adhering the ink to the printing device. The feeder internally has a roll of media wound over a media former. Further, the feeding device is integrally formed inside the media and the ink feeding device, and is adapted to be connected to the printing device for supplying ink and print media to the printing device. It has at least one ink reservoir.
0048
According to a further aspect of the present invention, there is provided a print roll used in a camera image system, in which a large number of formatted postcard information is printed on the back surface at predetermined intervals.
[0049]
According to the second aspect of the present invention, a customized method for creating postcards is provided. The production method includes the following steps. That is, the use of a camera device with a backside having a large number of formatted postcard information areas in place, the imaging of a customized image on the corresponding image plane of the print roll, and the camera device. Use of the print roll to create postcards.
0050
According to a third aspect of the present invention, a method of sending a postcard having a camera image through a postal system is provided, the method comprising the following steps. That is, the step of selling a print roll that includes prepaid postage, the step of using the print roll in a camera system to create a postcard, and the step of sending the prepaid postcard by mail.
0051
The present invention further covers a camera system with an integrated printer device. The print media is removable from the camera system and includes a device for storing important information about the print media.
[0052]
The present invention further covers a camera system with an integrated printer device. The print media is removable from the camera system and provides authenticated access to the print media.
[0053]
According to a further aspect of the present invention, a flat print medium having a low degree of curling in use is provided. The print media has anisotropic rigidity in the direction of the plane. According to a second aspect of the present invention, there is provided a method of reducing curl in an image printed on a flat print medium having anisotropic rigidity. The method applies local pressure to the portion of the print media.
0054
The present invention further relates to a camera system having an integrated printer device. The camera system has an indicator of the number of images remaining on the printer. The indicator can display the number of prints remaining in many different modes.
0055
An automatic image processing method is provided according to a further aspect of the present invention. The processing method comprises locating features with high spatial variation in the image and drawing a series of brush strokes radiating from those areas with high spatial variation in the image. Preferably, the brush stroke is small in size in the vicinity of what is importantly characterized. In addition, the position of a predetermined portion of the brush stroke is below the jitter ring.
0056
According to a further aspect of the present invention, a warping method for distorting an input image is provided. The method is
A warp map for any output image of predetermined dimensions A × B, where each element of the warp map corresponds to the corresponding area in the theoretical input image to the coordinate position of the element. With the step of inputting the warp map to be mapped to the pixel position of the output image;
With the steps of reducing the warp map to the dimensions of the warp image to form a reduced warp map;
For each element of the reduced warp map, the step of calculating the contribution area in the input image from the value of that element and the value of the adjacent element;
With the step of determining the color of the output image for the pixels of the warp image corresponding to the element from the contribution region;
including.
[0057]
According to a further aspect of the invention, there is provided a method of increasing the resilience of data stored on media for reading by a sensor device. The method is
(a) A step of modulating data stored in a recoverable manner with a modulated signal with high frequency components;
(b) With the step of storing the data in the modulated format on the media;
(c) With the step of detecting the modulated and stored data by the sensor device;
(d) With the step of neutralizing the modulation of the modulated and stored data in order to detect the segregation of the position of the modulated and stored data;
(e) With the step of recovering the unmodulated data at rest from the modulated data at rest;
including.
0058.
A preferred embodiment of the present invention is a system provided within a camera system, the card reading system for reading data via a CCD type device for later decoding. .. Moreover, the description of the preferred embodiment relies heavily on the field of error control systems. Therefore, the person guided by this specification should be an expert in error control systems. In particular, "Error control system for digital communication and storage" Stefan. B. You should be familiar with standard texts and other standard texts, such as Wicker, Pretis Hall, 1995, especially the Reed-Solomon Code Review.
[0059]
An object of the present invention is to provide a method of converting a scanned image containing scanned pixels into a corresponding bitmap image, the method being described for each bit in the bitmap image. Has steps. That is,
a. The step of determining the expected position of the scanned image in the current bit from the position of the surrounding bits in the scanned image,
b. The step of determining an appropriate value of the bit from the value at the expected corresponding pixel position in the scanned image,
c. The step of determining the dimension of the center of gravity of the center of expected intensity at the expected position,
d. Steps to determine the dimensions of the center of gravity because of the pixels close to the periphery of the current bit in the scanned image,
e. If the dimension of the center of gravity extends in relation to the expected position, the step of adjusting the expected position to a pixel having the dimension of the extended center of gravity,
And have.
[0060]
According to a further aspect of the invention.
With a digital camera device that can detect images;
With an image processing data input card inserted into the digital camera device to process the image and adapted to give the digital camera device an image processing instruction (instruction to add text to the image);
A text input device having a series of non-Roman font characters used by the digital camera device in connection with the image processing instructions to create new text characters to be added to the image. With a text input device connected to the digital camera device to input the characters to be added;
A device for editing images and texts is provided.
[0061]
Desirably, font characters are sent to the digital camera device when requested by the device in accordance with the image processing instructions to create the new text characters. The image processing data input card includes a set of Roman font characters and non-Roman characters including at least one of Hebrew, Kirill, Arabic, Chinese and Chinese characters.
[0062]
According to a further aspect of the invention.
With a digital camera device that can detect images;
With an image processing data input card inserted into the digital camera device to process the image and adapted to give the digital camera device an image processing instruction (instruction to add text to the image);
A text input device having a series of non-Roman font characters used by the digital camera device in connection with the image processing instructions to create new text characters to be added to the image. With a text input device connected to the digital camera device to input the characters to be added;
A device for editing images and texts is provided.
[0063]
An object of the present invention is to take advantage of the new technology created and the advantages of a flexible method for processing digital images to be printed out, as well as the advantages of updated technology.
[0064]
According to a further aspect of the present invention, an image copying device for reproducing an input image consisting of a series of ink dots is provided, and the device is
(a) With an imaging array device that captures the input image at a sampling rate higher than the frequency of the dots in order to create a corresponding sample image;
(b) With a processing device that processes the image to determine the position of the print dots in the sample image;
(c) With a printing device that prints ink dots at positions on the print media that correspond to the positions of the print dots;
including.
[0065]
2. The image copying apparatus according to claim 1, wherein the copying apparatus prints a full-color copy of the input image.
[0066]
According to a further aspect of the present invention, a camera system for outputting a blurred image is provided. The camera system
With an image sensor that detects images;
A speed detecting means for detecting some movement of the image related to the external environment and generating a speed output indicating the movement;
With processor means that are connected to those image sensors and speed detection means and that are adapted to correct the blur of the image and output the corrected image;
It has.
[0067]
Desirably, the camera system is a portable handheld unit that is connected to a printing device for immediate output of the blurred correction image. The velocity detecting means can include an accelerometer such as a microelectromechanical system (MEMS) device.
[0068]
According to a further aspect of the present invention, a photosensor reading formation is provided, wherein the formation is:
(a) With a series of light emitter housings for inserting light emitting elements;
(b) With a light emitting element focusing device for focusing the light emitted from the series of light emitting elements on the surface of the object to be imaged;
(c) With a photosensor compartment for inserting a series of photosensor rows;
(d) With a focusing device that focuses the reflected light from the object to be imaged on the characteristic part of the CCD row;
To be equipped.
[0069]
According to an aspect of the present invention, a printer device connected to a computer system is provided. The printer device includes a printhead unit including an inkjet printhead for printing an image on a print medium, and further has a cavity for inserting a print roll unit which is a consumable item. The print roll unit contains print media and ink, which are consumables inserted into the cavity, and the ink is used by the inkjet printhead to print an image on the print media.
[0070]
According to a further aspect of the invention.
With a sensor device (sensing means) that detects images;
With a correction device that corrects the detected image according to the correction instruction input to the camera;
With an output device for outputting the modified image;
A digital camera system comprising the above, wherein the correction device is a series of PEs (Processing elements) arranged around a central crossbar switch. Desirably, the PE has an arithmetic logic unit (ALU) that operates under the control of a microcode store that has a writable control store. The PE can include an internal input / output FIFO for storing pixel data used in the device, and the modification device is a read / write FIFO for writing and reading pixel data of an image to the device. It is connected to the.
[0071]
Each PE can be arranged in a loop and each PE is independently connected to the nearest adjacent PE. The ALU receives a series of inputs connected to a series of central processing units in the ALU via an internal crossbar switch and has many internal registers for storage of temporary data. The central processing unit has at least one of a multiplier, an adder and a barrel shifter.
[0072]
The PE is further connected to a common data bus for transferring pixel data to the PE. The data bus is connected to a data cache, which functions as an intermediate cache between the PE and a memory store that stores images.
[0073]
According to a further aspect of the present invention, a method for decoding detected image data stored on a card at a high pitch rate in real time in a short time is provided, and the method
With the step of detecting the initial position of the image data;
With the step of decoding the image data in order to determine the corresponding bit pattern of the image data;
including.
[0074]
According to a further aspect of the present invention, there is provided a method of quickly decoding detection image data stored on a card at a high pitch rate, which is rotated, warped or marked, by a fault tolerant method.
With the step of determining the initial position of the start of the image data;
With the step of detecting the image data at a sampling rate higher than the pitch rate;
Each column is processed so that the detected image data in the column is processed by column processing, the expected position of the center (center of gravity) of each dot of the next column is kept, and the position of the expected next center of gravity is updated. With the step of making fine adjustment of the center of gravity in the case of processing;
Have.
[0075]
According to a further aspect of the present invention, in order to form a pixel array consisting of a dot array, a method for accurately detecting the dot value of the detected image data sampled at a rate higher than the pitch frequency of the dot array is provided. The method is
In the pixel array, the step of determining the expected center pixel corresponding to the expected center of gravity position;
A step of using the detection value of the center pixel and the detection value of many adjacent pixels as an index of a look-up table that outputs the value of a dot centered on the position of the pixel;
Consists of.
[0076]
According to a further aspect of the present invention, there is provided a method of accurately determining the dot position of the detected image data stored on the card at a high pitch rate and premised on the effects of rotation, warping and marking.
With the step of processing the image data in the column in the column format;
With the step of recording the dot pattern of the processed column of the pixel;
From the recorded dot pattern of the processed pixel, the step of setting the expected dot pattern to the latest column position;
With the step of comparing the expected dot pattern with the actual dot pattern of the detected image data at the latest column position;
The latest so that when the comparison is within a predetermined error, the actual dot position is returned to the latest column position in order to generate a new actual dot position and to fit the expected dot pattern. With steps using column positions;
With the step of using the actual dot position at the latest column position when determining the dot position of the next column;
including.
[0077]
According to a further aspect of the invention, there is provided a method of combining an image bump map to mimic the effect of a painting on an image, the method of which.
Defines an image canvas bump map that gives rise to a surface to be painted,
Define a paint bump map of the object drawn on the surface
Combining the image canvas bump map with the paint bump map to create a final combined bump map using a stiffness factor that determines the degree of modification of the paint bump map by the image canvas bump map. ,
including.
[0078]
According to a further aspect of the invention, there is provided a method of automatically processing an input image in order to produce an artistic effect.
Determine the mapping of the input gamot to a given output gamot to create the desired artistic effect,
Utilizing a mapping that maps the input image to an output image with a given output gamot.
Including that.
[0079]
Desirably, the method further comprises a step of post-processing the output image using a brushstroke filter.
[0080]
Further, preferably, the output gamut is formed by mapping a predetermined number of input gamut values to the corresponding output color gamut values and inserting a maintenance of the mapping from the input gamut values to the output color gamut values. .. The insertion process involves a weighted sum of a given number of mappings of the input gamut values to the output color gamut values.
[0081]
According to a second aspect of the invention, a method of compressing an input color gamut into an output color gamut is provided.
With the step of determining the zero chrominance value based on the strength of the current input color;
With the step of determining the source distance, which is the distance from the zero gamut value to the edge of the input color gamut;
With the step of determining a suitable edge of the output color gamut;
With the step of determining the target distance, which is the distance from the zero gamut value to the edge of the output color gamut;
A step of measuring the current input color intensity by a factor derived from the ratio of the source distance to the target distance, and
To be equipped.
[882]
Preferably, the current input color intensity is measured by a factor based on the distance of the current input color from the zero chrominance value point.
[0083].
According to a further aspect of the invention, a portable camera is provided for the output of images detected by the camera.
With a sensor device (sensing means) for detecting images;
With a tile device that adds a tile effect to a detected image to create a tiled image;
With a display device for displaying the tiled image;
It has.
[0084]
According to a further aspect of the invention, a portable camera is provided for the output of images detected by the camera.
With a sensor device (sensing means) for detecting images;
With a texture mapping device that adds a texture effect to the detected image in order to create a textured image;
With a display device for displaying an image to which the texture is added;
To be equipped.
[0085]
According to a further aspect of the present invention, a portable camera for outputting an image detected by the camera is provided.
With a sensor means for detecting images;
With a lighting device that gives a lighting effect to the detected image in order to create an illumination image that imitates the effect of a light source that emits light from the detected image;
With a display device for displaying the illumination image;
It has.
0083.
According to a further aspect of the invention.
With a series of input token signals input to the camera for processing the detected image for output to a display device that draws cloth clothing with the characteristics of the detected image;
With a camera device adapted to read the input token signal, detect the image, and process the image according to the read input token signal to form the output image;
With a display device adapted to display the output image;
A clothing creation system consisting of is provided.
[0087]
According to a further aspect of the present invention, a clothing creation system having an image sensor device and an image display device, mapping an arbitrary image portion detected by the image sensor device to clothing, and displaying the image on the image display device. Provided.
[0088]
According to a further aspect of the invention, a method of forming a processed image is provided, the method comprising connecting a series of camera processing units, each of which has been processed. Image processing is applied to the input image in order to form the output image. The first one of those camera processing units senses the image from the surroundings, and at least the last one of those camera processing units forms a non-fading output image.
[089]
According to a further aspect of the present invention, a portable image pickup device for viewing a distant subject is provided, and the image pickup device is provided.
With an optical lens system to magnify a subject that can be seen at a distance;
With a detection system for simultaneously detecting the subject;
With a processing device connected to the detection system to process the detected image and send it to the printer device;
With a printer device connected to the processing device to print an image detected by the portable imaging device on a print medium upon request;
It has.
[0090]
Preferably, the system further supplies the printer device with roll-shaped print media and ink, so that the removable print media supply device is arranged in a removable module connected to the printer device. Has.
[0091]
The printer device may include an inkjet printing device that provides a full-color printer for outputting the detected image.
[0092]
Further, a preferred embodiment is implemented as a binocular system including a beam splitter for projecting a distant subject onto the detection system.
[093]
According to a further aspect of the present invention, there is provided a system that reproduces a recorded voice encoded by a fault tolerant method as a series of dots printed on a card. The system
With an optical scanner device for visible scanning of recorded audio;
With a processing device connected to the optical scanner device so as to decode the scanned voice code to generate a voice signal;
With an audio emitter device connected to the processing device to reproduce the audio signal upon request;
To be equipped.
[0094]
The coding can include Reed-Solomon coding of the recorded voice and can include a radiofrequency modulated ink dot sequence to aid in scanning.
[0995]
The system includes a rod-shaped arm with an elongated hole for inserting the card.
[0906]
According to a further aspect of the present invention, the method provides a method of carrying information on a printed card.
With the step of dividing the surface of the card into many predetermined areas;
With the step of printing the first data to be stored in the first area of the predetermined area;
With the step of using the printed first predetermined area when reading the information stored on the card;
With the step of determining a second predetermined area that is not used to print the data, where additional information stored on the card will be printed when updating the information stored on the card;
Have.
[097]
Desirably, those areas are selected in a predetermined order. It is also printed using a high resolution ink dot printer, for example, to print data with fault tolerance provided by Reed-Solomon coding of the data. A border area for delineating the borders of the area is printed and provided, and a number of border target markers are provided to help indicate the location of the border area. These border targets consist of a large area of the first color and a small area of the second color located in the center of the area.
[0998]
Desirably, the data is printed using a high frequency modulated signal such as a checkerboard pattern. The printed material is a dot array having a resolution greater than about 1200 dots per inch, preferably a dot array having a resolution greater than at least 1600 dots per inch. The predetermined area can be arranged in a standard arrangement on the surface of the card, and the card can be sized and shaped like a typical rectangular credit card.
[00099]
According to a further aspect of the invention, there is provided a method of creating a series of instructions for image processing. The method is
With the step of displaying the initial array of sample images for the user to choose;
With the step of accepting the user to select at least one of the sample images;
Steps to use the selection results to create a further array of sample images;
Repeatedly applying the above steps until the user selects at least one final optimal image;
With the steps to create a sample image according to the above series of instructions;
With the step of outputting the series of instructions;
including.
[0100]
Further, the method includes scanning a user's photo and using the scanned photo as an initial image for creating each sample image. In addition to being printed visually on the second side of the card, the instructions can be printed in encoded form on the first side. In addition, the processed image itself is printed.
[0101]
Various techniques can be used to form images, including genetic algorithms and genetic programming techniques, to form the sequences. In addition, in the formation of further images, the'best so far'image is stored for use.
[0102]
Desirably, this method is performed on a computer system built into a vending machine that sells cards and photos.
[0103]
According to a further aspect of the present invention, an information storage device for storing information on an inserted card is provided, the device.
A sensor device that detects patterns printed on the surface of a card and arranged in a predetermined number of possible active areas of the card;
With a decoding device for decoding the detected pattern into the corresponding data;
With a printing device for printing a dot pattern on one of the active areas on the card surface;
With a positioning device that arranges the detected card at a known relative position of the sensor device and the printing device;
With
The detector is adapted to detect printed patterns in the latest motion print area of the card.
The decoding device is adapted to decode the detected pattern into the corresponding latest data.
The printing device is updated to the latest one of the active areas after the positioning device has been driven for accurate positioning of the card when an update of the latest data is required. Is adapted to print.
[0104]
The printing device preferably includes an inkjet printer device including a card width print head capable of printing the card width at one time. The positioning device may include a series of pinch rollers for controlling the movement of the card across the card. The printed pattern is arranged by a fault tolerant method, for example using Reed-Solomon decoding, and the decoding device has a suitable decoder for the fault tolerant pattern.
[0105]
According to a further aspect of the invention.
With an image sensor that detects images;
With a storage device for storing detected images and related system configurations;
With a data input device for inputting an image correction data module to correct the detected image;
With the image sensor, the storage device, and the processing device connected to the data input device for the control of the camera system in addition to the processing of the detected image;
With a printing device for printing the detected image on the supplied print media upon request;
Digital camera system equipped with, as well as
Based on the insertion of a further image correction module, there is provided a method of providing an image correction data module adapted to allow the processing device to modify the operation of the digital camera system.
[0106]
Desirably, the image modification data module has a card having the encoded data on its surface, the data is encoded by printing, and the data input device is an optical scanner for scanning the card surface. Has. The operation is corrected repeatedly, and the image is corrected in the order in which a series of image correction modules are inserted into the same image.
[0107]
According to a further aspect of the invention.
With an image sensor that detects images;
With a storage device for storing detected images and related system configurations;
With a data input device for inputting an image correction data module to correct the detected image;
With the image sensor, the storage device, and the processing device connected to the data input device for the control of the camera system in addition to the processing of the detected image;
With a printing device for printing the detected image on the supplied print media upon request;
The image correction data module is provided with a digital camera system adapted so that the processing apparatus performs a series of diagnostic tests on the digital camera system and prints the result through the printing apparatus.
[0108]
Desirably, the image modification data module has a card having encoded instruction data on one side thereof, and the processing apparatus has an apparatus for reading the instruction data encoded on the card. The diagnostic test may also have a cleaning cycle for the printer device to improve the operation of the printer device, such as by printing an all-black band in succession. Alternatively, the diagnostic test may include nozzle adjustment to improve the operation of the inkjet printer. In addition, various internal operating parameters of the camera system can be printed. If the camera system is equipped with a gravity impact sensor, the diagnostic test can also print the location of the sensor.
[0109]
According to a further aspect of the present invention, a camera system for generating an image is provided, wherein the camera system is a sensor that detects an image; a processing device for processing the detected image according to some predetermined processing request; and a print. A printing device for printing the detected image on the surface of the media; and a magnetic recording device for recording related information on the magnetically sensitive surface formed on the print media. The related information includes audio information related to the detected image, the printing device preferably prints the detected image on the first surface of the print media, and the magnetic recording device is on the second surface of the print media. Record the relevant information. The print media can be housed in a removable roll inside the camera system. In one embodiment, the magnetically sensitive surface can include strips affixed to the back surface of the print media.
[0110]
According to a further aspect of the present invention, there is provided a method of making a non-fading copy of an image captured by an image sensor of a portable camera device. The portable camera device includes an integrated computer device and an integrated printer device for printing on print media stored in the camera device, and the method detects an image with the image sensor. From the step of converting the image into a coded format having the sign property of fault tolerant; and the step of printing the coded form of the image as a recording that does not fade the image using the integrated printer device. Become.
[0111]
Preferably, the integrated printer device includes a device for printing on the first side and the second side of the print media, and the detected image and its visual processing are printed and encoded on the first side. The format is printed on the second side. The thumbnail of the detected image can be printed next to the encoded format of the image. Also, its fault-tolerant coding is the Reed-Solomon coding of the image, in addition to the permanent recording applying a checkered high-frequency modulated signal to a coding format with repeatable high-frequency spectral components. It also includes forming a version.
[0112]
According to the first aspect of the present invention, a sales system for selling an image processing card used in a camera device is provided. The camera device has a card processing interface for inserting an image processing card. The image processing card is for processing an image in the camera device. The sales system
With multiple printing devices for outputting image processing cards;
Each printing device is connected to a corresponding computer system for storage of a series of image processing card data required for creating the image processing card.
[0113]
Desirably, the computer system stores a series of image processing card data in a manner cached over a computer network. Then, the card distribution computer distributes a new image processing card to the computer system.
[0114]
The present invention has a specific use when the image processing card includes an event card (a seasonal card distributed to the computer system to print out the card for use in a seasonal event).
[0115]
According to a further aspect of the present invention, a data structure having a series of block data areas encoded on the surface of an object is provided, and each block data area is.
With a coded data area containing data to be decoded into a coded format;
With a series of clock mark configurations arranged to surround the first periphery of the coded data region;
A series of easily identifiable target configurations arranged so as to surround a second periphery of the coded data region;
Consists of.
[0116]
The block data area further includes an orientation data structure arranged around a third peripheral portion of the coded data area. The directional data structure can include a line of equal data points along the edges of the periphery.
[0117]
The clock mark configuration has a first line of equal data points in addition to a substantially adjacent second line of data points arranged along the edge of the coded data area. Can be done. The clock mark configuration can be arranged on the opposite side of the coded data area.
[0118]
The target configuration is a series of data point blocks (data) arranged so as to have a gap.
It has a set of points blocks), and the data points have a fixed value of the first magnitude (magunitude) except in the central part, and have a size opposite to the first size in the central part. .. The set of blocks further includes a target number display configuration having the values of a continuous group of opposite magnitudes.
[0119]
The data structure is ideally utilized in a series of dots printed on the surface of the substrate.
[0120]
According to a second aspect of the invention, a method of decoding a data structure encoded on the surface of an object is provided, the data structure having a series of block data areas, each block data area.
With a coded data area containing data to be decoded into a coded format;
With a series of clock mark configurations arranged to surround the first periphery of the coded data region;
A series of easily identifiable target configurations arranged so as to surround a second periphery of the coded data region;
The above method consists of
(a) Steps to scan the data structure;
(b) With the step of finding the start position of the data structure;
(c) With the step of determining the latest direction of the target configuration and searching for the position of the target configuration;
(d) The step of searching for the position of the clock mark configuration from the position of the target configuration;
(e) With the step of using the clock mark configuration to determine the expected position of the bit data in the encoded data area;
(f) Steps to determine the expected data value for each bit data;
Have.
[0121]
The clock mark configuration has a first line of equal data points in addition to a substantially adjacent second line of data points arranged along the edge of the coded data area. Can be done. The step to be used in (e) may also run along the second line of the data point using a pseudo-phase lock loop type algorithm to maintain the most up-to-date position in the clock mark configuration. Including.
[0122]
In addition, step (f) to determine is
Including dividing the detected bit value into three adjacent regions (ie, a central region, a first lower extreme region, and a second upper extreme region).
The first region contains those values and determines the bit value corresponding to the first region;
The second region contains those values and determines the bit value corresponding to the second region;
The central region contains those values, and a spatially enclosed value is used to determine whether the value is a first value or a second value.
[0123]
According to a further aspect of the invention, a method of determining the output data value of the detection data is provided, the method of which is:
(a) Including dividing the detected data value into three adjacent regions (ie, the central region, the first lower extreme region, and the second upper extreme region).
The first region contains those values and determines the bit value corresponding to the first region;
The second region contains those values and determines the bit value corresponding to the second region;
The central region contains those values, and a spatially enclosed value is used to determine whether the value is a first value or a second value.
[0124]
According to a further aspect of the present invention, a fluid supply device for supplying a plurality of different fluids to a plurality of different supply slots is provided. The supply slots are arranged at periodic intervals by alternately arranging the fluid supply devices.
With a fluid inlet device for each of several different fluids;
A flow path for each of the different fluids, with a main channel flow path connected to each of the supply slots;
With a subchannel channel connecting each of the supply slots to the corresponding main channel channel;
It has. The number of fluids is greater than two, at least two main channel fluid devices are formed on the first surface of the molded fluid supply unit, and the other main channel fluid devices have through holes that penetrate the surface of the part. It is formed on the upper surface of the molded product by a sub-channel flow path connected to the slot via.
[0125]
Desirably, the feeder is plastic injection molded and the pitch rate of the slots is equal to or less than 1000 per inch. In addition, a set of slots is formed to the width of the photo. Desirably, the fluid supply device has a plurality of roller slot devices for accommodating one or more pinch rollers, the fluid is made of ink, and the rollers are printed heads connected to the slots. The print media is controlled to cross. The slot is divided into a series of color slots arranged on the column.
[0126]
Preferably, at least one channel of the fluid feeder is exposed during manufacture and the exposed surface is sealed with sealing tape. Advantageously, the fluid feeder is provided by a TAB slot to obtain auto-bonded wires with tape.
[0127]
According to a further aspect of the present invention, an image printing printer device using at least one ink ejection device supplied through an ink supply path is provided.
With a series of ink supply ports, one for each output color, adapted to work with an ink supply device for supplying ink to the printer;
With a series of conductive connector pads along the outer surface of the printer device;
With a page width printhead that has a series of ink ejection devices that eject ink;
With an ink supply system that supplies ink from the ink supply port to the ink ejection device of the page width print head;
With a plurality of interconnect wires connecting the page width printhead to the conductive connector pad;
With
The printer device is adapted to be removably inserted into a housing device, the housing being provided with an interconnect for interconnection with the conductive connector pad and ink supply by the ink supply device. Therefore, it has an ink supply connector for interconnection with the ink supply port.
[0128]
Desirably, the plurality of interconnect wires wrap around the outer surface of the printer device and form an automatic tape bonding sheet connected to the conductive connector pad. The interconnected wires
A first set of wires interconnected to the conductive connector pads and arranged approximately parallel to each other along the overall length of the printhead.
A second set of wires arranged approximately parallel to each other from the surface of the printhead,
have. Each of the wires in the first set is connected to many of the wires in the second set. The ink supply port has a thin diaphragm portion. The diaphragm portion is perforated based on the ink supply connector being inserted into the housing device.
[0129]
The page width printhead may include a large number of substantially equally repeatable units, each of which has a predetermined number of ink ejection devices. The unit has a standard interface with a predetermined number of connecting wires, and each standard interface device is connected in groups to a conductive connector pad. The printhead itself can be made from a silicon wafer and separated into page width strips.
[0130]
According to a further aspect of the invention, a method of providing resistance to the monitoring of an integrated circuit is provided by a method of monitoring current fluctuations, the method comprising forming a spurious noise generating circuit that is part of the integrated circuit. Including.
[0131]
The noise generating circuit can include a random number generator such as an LFSR (Linear Feedback Shift Register).
[0132]
According to a further aspect of the present invention, a low power consumption CMOS circuit is provided. The circuit includes a p-type transistor having a gate connected to the first clock and the input, and an n-type transistor connected to the second clock and the input, and the CMOS circuit overlaps. It is operated by switching the first and second clocks by a method that does not.
[0133]
The circuit has high power switching characteristics.
It can be substantially adjacent to a second circuit with characteristics). The second circuit can have a noise generating circuit.
[0134]
According to a further aspect of the invention, a method of imparting resistance to monitoring of a memory circuit having multiple level states corresponding to different output states is provided, the method utilizing intermediate states only for a valid output state. Including that. The memory can be a flash memory and can also have one or more parity bits.
[0135]
According to a further aspect of the present invention, a circuit path attached to a random noise generator is used to monitor an attack that modifies an integrated circuit, and resistance to modifying the integrated circuit. A method of giving is provided.
[0136].
The circuits paths are opposite to each other and have a first path and a second path that are connected to various circuits and serve as an exclusive OR circuit for generating a reset output signal.
[0137]
According to a second aspect of the present invention, a tamper detection line is provided in which one end is connected to a large grounded resistor and the other end is connected to a second large resistor connected to a power source. The tamper detection line is further connected to a comparator that compares whether the expected voltage is within a predetermined tolerance. In the middle of the resistors connected to the series of tests, a large resistor is output so that the comparator outputs a reset signal if tampering is detected by one of the tests.
[0138]
According to a further aspect of the invention, an authentication system for determining the validity of ancillary units to be authenticated is provided.
With a central system unit for confirmation of the first and second secure keys;
With an object holding the first and second secure keys attached to the central system unit;
With
The object holding the second secure key is attached in a non-removable way and
The central system unit
The object holding the first secure key is queried to determine the first response.
Using the first response to query the object holding the second secure key to determine the second response,
further,
The object holding the second secure key is adapted to compare the first response with the second response to determine if it is attached to a valid mounting unit.
[0139]
The object holding the second secure key further includes a response with a magnitude factor that effectively diminishes monotonously so that the unit ceases to operate after a predetermined use of the mounting unit. Therefore, the mounted unit can include consumables.
[0140]
Further, the central system unit can query the object holding the first secure key for the number of received the first response, at which time the central system unit determines the second response. The first response is used when inquiring to the object holding the second secure key for the purpose, and the central system unit determines the effective range of the second response, so that the first secure key is used. The second response is used to query the unit holding the.
[0141]
The system is ideally used to authenticate printer consumables, such as ink in an inkjet printer.
[0142]
In fact, in a camera system having a built-in inkjet printer, preferred embodiments will be discussed in relation to the consumable ink, but the present invention is not limited thereto.
Description of Other Suitable Examples
[0143]
A digital image processing camera system configured according to a preferred embodiment is shown in FIG. The camera unit 1 includes means for inserting an integral print roll (not shown). The camera unit 1 includes an area image sensor 2 that detects an image 3 captured by the camera. As an option, a second area image sensor may be mounted in order to visualize the scene 3 and optionally obtain a product of the output effect of the stereoscopic image method.
[0144]
The camera 1 includes an optional color display 5 for displaying the image detected by the sensor 2. When the simple image is displayed on the display 5, the button 6 can be pressed, and as a result, the printed image 8 is output by the camera unit 1. In the following, a series of cards called Artcard 9 contains encoded information on one side and an image distorted by a particular effect generated by Artcard 9 on the other side. The Artcard 9 is inserted into the Artcard reader 10 on the side surface of the camera 1, and when inserted, an output image 8 distorted in the same manner as the distortion appearing on the surface of the Artcard 9 is obtained. Therefore, a user who wishes to produce a particular effect by using this simple user interface can insert one of a large number of Artcards 9 into the Artcard reader 10 and button to take a picture of the image 3. 19 can be utilized, resulting in a corresponding distorted output image 8.
[0145]
The camera unit 1 may include a number of other control buttons 13, 14 in addition to a simple LCD output display 15 for displaying explanatory information including the number of printouts remaining on the camera unit's internal print roll. .. In addition, various output formats can be controlled by the CHP switch 17.
[0146]
Next, referring to FIG. 2, a schematic diagram of the internal hardware of the camera 1 is shown. The internal hardware is centered around the Artcam Central Processor Unit (ACP) 31.
[0147]
Artcam central processor 31
The Artcam central processor 31 provides a number of functions that form the heart of the system. The ACP 31 is preferably implemented as a complex high speed CMOS system on chip. It is recommended to utilize a standard cell design with some full custom areas. Manufacture on a 0.25 micron CMOS process is required, with a reasonably small die area.
Achieve high density and speed.
[0148]
The functions provided by ACP31 include:
1. 1. Control and digitization of the area image sensor 2. The 3D stereoscopic version of ACP requires two area image sensor interfaces with a second optional image sensor 4 provided for stereoscopic effects;
2. Area image sensor compensation, reformatting, and image enhancement;
3. 3. Memory interface and management for storage device 33;
4. Interface, control and analog-to-digital conversion of the Artcard reader's linear image sensor 34 provided for reading data from the Artcard 9;
5. Extraction of raw Artcard data from digitized coded Artcard images;
6. Reed-Solomon error detection and correction of Artcard coded data. Coded surface of Artcard9 includes information on how to handle how image to generate an image distortion face the displayed effects of Artcard9. This information is in the form of a script, hereinafter referred to as a "Vark script". The Walk script is utilized by an interpreter running within ACP31 to produce the desired effect;
7. Interpretation of the Vark script on Artcard 9;
8. Perform image processing operations as specified by the Walk script;
9. Control of various motors for paper transport 36, zoom lens 38, autofocus 39, and Artcard driver 37;
10. Control of the cutting machine actuator 40 for the operation of the cutting machine 41 that cuts the photo 8 from the print roll 42;
11. Halftone of image data for printing;
12. Supply of print data to the print head 44 at an appropriate time;
13. Control of printhead 44;
14. Control of ink pumping to printhead 44;
15. Control of optional flash unit 56;
16. Reading and treatment based on various sensors in the camera, including the orientation sensor 46, autofocus 47 and Artcard insertion sensor 49;
17. Reading user interface buttons 6, 13 and 14 and actions based on them.
18. Control of status display 15;
19. Supplying the viewfinder and preview image to the color display 5;
20. Control of system power consumption including ACP power consumption by power management circuit 51;
21. Providing external communication 52 to a general-purpose computer (using part USB);
22. Reading and saving the information of the print roll authentication chip 53;
23. Reading and saving the information of the camera authentication chip 54;
24. Communication with the optional mini keyboard 57 for text correction.
[0149]
Crystal oscillator 58
The crystal oscillator 58 is used as a frequency reference for the system clock. Since the system clock is so high, the ACP 31 includes a phase-locked loop clock circuit to increase the frequency obtained from the crystal 58.
[0150]
Image sensing
Area image sensor 2
The area image sensor 2 converts the image passing through the lens into an electric signal. The area image sensor may be a charge-coupled device (CCD) or an active pixel sensor (APS) CMOS image sensor. Currently, available CCDs usually have fairly high image quality, but the development of CMOS imagers is currently very active. CMOS
Ultimately, imagers are expected to be substantially cheaper than CCDs with fewer pixels and can incorporate drive circuits and signal processing. CMOS imagers can be manufactured with CMOS manufacturing technology that is moving to 12 inch wafers. Therefore, the difference in manufacturing cost between the CCD and the CMOS imager increases, and it is likely that the CMOS imager will gradually be favored. However, at present, CCD is the best option.
[0151]
The Artcam unit will produce good results with a 1500x1000 type area image sensor. However, small sensors such as the 750x700 type may also be suitable in various markets. Artcam is less sensitive to the resolution of the image sensor than conventional digital cameras. The reason is that most of the styles in Artcard 9 process the image so that the lack of resolution is obscured. For example, if the image is distorted to simulate the effect of being transformed into an Impressionist painting, the low resolution of the original image can be used with minimal effect. Further examples where low resolution input images are typically unnoticed include image warps that produce highly distorted images, multiple reductions of images (eg, passport photos), and bump mapping for a base relief metal look. Includes texturing and photo composition into structured scenes.
[0152]
Allowing such a low resolution image sensor is an important factor in reducing the manufacturing cost of the Artcam unit 1 camera. Artcams with low cost 750x500 image sensors often produce better results than traditional digital cameras with very expensive 1500x1000 image sensors.
[0153]
Optional stereoscopic 3D image sensor 4
The three-dimensional version of the Artcam unit 1 includes an auxiliary image sensor 4 for stereoscopic operation. This image sensor is the same as the main image sensor. The circuit that drives the optional image sensor may be accommodated as a standard component of the ACP chip 31 in order to reduce the increase in design cost. Alternatively, a separate 3D Artcam
ACP may be designed. This option reduces the manufacturing cost of the mainstream single-sensor Artcam.
[0154]
Print roll authentication chip 53
The small chip 53 is housed in each print roll 42. This chip replaces the functionality of barcodes, optical sensors and wheels, as well as ISO / ASA sensors on other forms of camera film units such as APS (New Photo System) film cartridges.
[0155]
The authentication chip also provides the following other features:
1. 1. Storage of data, not mechanically and optically detected data from APS rolls;
2. Display of the remaining length of the medium with high resolution accuracy;
3. 3. Credentials to prevent inferior imitation print roll copying.
[0156]
The authentication chip 53 includes a 1024-bit flash memory, of which 128 bits are the authentication key and 512 bits are the authentication information. In addition, an encryption circuit is housed to ensure that the authentication key is not directly accessed.
[0157]
Printhead 44
The Artcam unit 1 is small enough, low power enough, fast enough, high quality good enough, and low cost good enough, and can be used with any color printing technology suitable for print rolls. Hereinafter, the print head will be specifically described.
[0158]
The specifications of the inkjet head are as follows.
[0159]
[Table 1]
Figure 2001523900
Optional ink pressure controller (not shown)
The function of the ink pressure controller depends on the type of inkjet printhead 44 built into the Artcam. With some types of inkjet, the ink pressure is simply atmospheric pressure, eliminating the need for an ink pressure controller. Other types of printheads require a stable positive ink pressure. In this case, the impression controller includes a pump and a pressure transducer.
[0160]
Other printheads require an ultrasonic transducer because the ink pressure typically produces regular vibrations of about 100 KHz. In this case, the ACP 31 controls the frequency phase and amplitude of these vibrations.
[0161]
Paper transport motor 36
The paper transport motor 36 moves the paper from inside the print roll 42 through the side of the print head at a constant speed. The motor 36 is a small motor geared down to an appropriate speed to drive the rollers that move the paper. High quality motors and mechanical gears are required to achieve high image quality, as mechanical backlash or other vibrations affect the printed dot line spacing.
[0162]
Paper transport motor driver 60
The motor driver 60 is a small circuit that amplifies the digital motor control signal from the APC 31 to a level suitable for driving the motor 36.
[0163]
Paper pull sensor
The paper pull sensor 50 detects a user pulling a photo from the camera unit during the printing process. The APC 31 reads out the sensor 50, and when this situation is detected, the APC 31 operates the cutting machine 41. The paper pull sensor 50 is incorporated to make the camera more absolute during operation. If the user attempts to forcibly pull out the paper during printing, the print mechanism 44 or print roll 42 will be damaged (in extreme cases). The general public is accustomed to doing this because it is allowed to pull the pod out of the Polaroid camera before it is completely ejected. Therefore, the general public is likely not to pay attention to the printed instructions that the paper should not be pulled out.
[0164]
The Artcam preferably restarts the photo printing process after the cutting machine 41 cuts the paper after the pull detection.
[0165]
The tension sensor may be implemented as a strain gauge sensor or as an optical sensor that detects a small plastic flag deflected by the torque generated on the paper drive roller when the paper is pulled. The latter embodiment is recommended due to its low cost.
[0166]
Paper cutting machine actuator 40
The paper cutting machine actuator 40 is a small actuator that causes the cutting machine 41 to cut paper at the end of a photograph or when the paper tension sensor 50 is activated.
[0167]
The paper cutting machine actuator 40 is a small circuit that amplifies the cutting machine control signal from the APC to the level required by the actuator 41.
[0168]
Artcard9
Artcard 9 is a program storage medium for the Artcam unit. As mentioned above, the program is in the form of a Walk script. Vark is a powerful image processing language developed specifically for the Artcam unit. Each Artcard 9 stores one Vark script, which defines one image processing style.
[0169]
Preferably, the VARK language is highly dedicated to image processing. By making it highly dedicated to image processing, the storage capacity required to store details on the card is substantially reduced. In addition, the convenience of creating new programs with enhanced effects is substantially improved. Preferably, the language is image warping with warp maps, convolution, color lookup tables, image posterization, image noise addition, image enhancement filters, painting algorithms, brush jitter and manipulation edge detection filters, tying. , Light source illumination, bump maps, text, face detection and object detection attributes, fonts including three-dimensional fonts, and a number of image processing functions including any composite pre-rendering icon. More details on the operation of the Walk language interpreter are described below.
[0170]
Therefore, by utilizing the linguistic structure as defined by the language created, new effects on any image are created, built for cheap storage on Artcard, and then to the camera owner. It can be distributed. Further, one side of the card is provided with an example explaining the effect of a particular VARK script stored on the other side of the card on an arbitrary captured image.
[0171]
By utilizing such a system, if the VARK interpreter is built into the camera device, it will be given a device-independent scenario, and as a result, the underlying technology will be completely changed in the long run. In that respect, camera technology can be disseminated without the risk of becoming significantly obsolete. In addition, it is possible to update the Vark script when a new filter is created and distributed in an inexpensive way, such as using a simple card for reading the card.
[0172]
Artcard 9 is a piece of thin white plastic in the same format as a credit card (length 86 mm, width 54 mm). Artcard is printed on both sides using a high resolution inkjet printer. This inkjet printer technology is considered to be the same technology used for Artcam with a resolution of 1600 dpi (63 dpi mm). A major feature of Artcard 9 is its low manufacturing cost. Artcard can be manufactured as fast as a wide web of plastic films. The plastic web is covered on both sides with a hydrophilic dye-fixing layer. The web is printed simultaneously on both sides using a page width color inkjet printer. The web is then cut into individual cards and punched out. One side of the card is printed with a human-readable representation of the effect Artcard 9 has on the detected image. This may be a simple standard image processed using the Vark script stored on the back of the card.
[0173]
On the back of the card is printed an array of dots that can be decoded by a Vark script that defines the image processing sequence. The printed area is 80 mm × 50 mm, and there are 157,6000 dots in total. This array of dots can represent at least 1.89 MByte of data. Extensive error detection and correction is incorporated into the array of dots for high reliability. This ensures that a substantial portion of the card is soiled, worn, wrinkled, or soiled without affecting the integrity of the data. The data coding method used is Reed-Solomon coding, where half of the data is used for error correction. As a result, each Artcard 9 can store the error-corrected 967 Kbyte data.
[0174]
Linear image sensor 34
The Artcard linear sensor 34 converts the above Artcard data image into an electrical signal. As in the case of the area image sensors 2 and 4, the linear image sensor is a CCD or APS.
It can be manufactured using CMOS technology. The effective length of the image sensor 34 is 50 mm, which matches the width of the data array on Artcard 9. To satisfy the Nyquist sampling theorem, the resolution of the linear image sensor 34 must be at least twice the maximum spatial frequency of the Artcard optical image reaching the image sensor. In practice, data detection becomes easier when the image sensor resolution is substantially higher than this. If a resolution of 4900 dpi (180 dpimm) is selected, a total of 9450 pixels will be given. This resolution requires a pixel sensor pitch of 5.3 μm. This can be easily achieved by using a staggered four-row 20 μm pixel sensor.
[0175]
The linear image sensor is mounted in a special package that includes an LED 65 for illuminating the Artcard 9 with a light pipe (not shown).
[0176]
The light pipe of the Artcard reader may be a molded light pipe with several functions:
1. 1. The light pipe uses all internal reflective facets to diffuse the light from the LEDs over the width of the card.
2. The light pipe uses an integrated cylindrical lens to collect light on a 16 μm wide strip of Artcard 9.
3. 3. The light pipe uses an array of molded microlenses to collect the light reflected from the Artcard into the pixels of the linear image sensor.
[0177]
Next, the operation of the Artcard reader will be described.
[0178]
Artcard leader motor 37
The Artcard reader motor advances the Artcard at a relatively constant speed and passes it through the linear image sensor 34. Since it is not cost effective to house the mechanical components of exact precision in the Artcard reader, the motor 37 is a standard small motor geared down to a suitable speed to drive a pair of rollers that move the Artcard 9. .. Since velocity fluctuations, backlash, and other vibrations affect raw image data, the circuits within the APC 31 provide extensive compensation for these effects to ensure that the Artcard data is read.
[0179]
The motor 37 is driven in the opposite direction when the Artcard is taken out.
[0180]
Artcard motor driver 61
The Artcard motor driver 61 is a small circuit that amplifies the digital motor control signal from the APC 31 to an appropriate level to drive the motor 37.
[0181]
Card insertion sensor 49
The card insertion sensor 49 is an optical sensor that detects the presence or absence of a card inserted in the card reader 34. After the signal from the sensor 49, the APC 31 initiates a card reading process, which includes the operation of the Artcard reader motor 37.
[0182]
Card eject button 16
The card eject button 16 (FIG. 1) is used by the user to retrieve the current Artcard, allowing another Artcard to be inserted. The APC 31 reverses the Artcard reader motor 37 in order to detect the button press and remove the card.
[0183]
Card status indicator 66
The card status indicator 66 is provided to notify the user of the status of the Artcard reading process. This may be a standard two-color (red / green) LED. When the card is read correctly and the integrity of the data is verified, the LED will continuously emit green light. If the card is defective, the LED will emit red light.
[0184]
If the camera is powered by a 1.5V battery instead of a 3V battery, the power supply voltage will be less than the forward voltage drop of the green LED and the LED will not emit light. In this case, a red LED is used, or the LED is powered by a voltage pump that feeds other circuits in the Artcam that require a higher voltage.
[0185]
64 Mbit DRAM 33
To perform a wide variety of image processing effects, the camera utilizes an 8 Mbyte memory 33. This can be provided by a single 64 Mbit memory chip. Of course, it may be replaced with a larger capacity DRAM storage capacity size as the memory technology changes.
[0186]
High-speed access to the memory chip is required. This can be achieved by using Rambus DRAM (burst access speed of 500 megabytes per second), or double data rate (DDR) SDRAM or SyncLink DRAM chips.
[0187].
Camera authentication chip
The camera authentication chip 54 is the same as the print roll authentication chip 53 except that it stores different information. The camera authentication chip 54 has three main purposes:
1. 1. Provide a secure means to compare the authorization code with the print roll authorization chip;
2. Provide a storage device for manufacturing information such as the serial number of the camera;
3. 3. Provide a small-capacity non-volatile memory for storing user information.
[0188]
display
Artcam includes an optional color display 5 and a small state display 15. The lowest cost consumer cameras are small TFTs, such as those found in some digital and video cameras.
Includes a color image display such as LCD5. The color display 5 is a major costly element of these versions of Artcam, and the backlit display 5 is a major source of power consumption.
[0189]
Status display 15
The state display 15 is an LCD based on a small passive segment, the current haloge.
It is similar to the LCD provided in silver cameras and digital cameras. Its main function is to display the number of prints remaining on the print roll 42 and icons for various standard camera functions such as flash status and battery status.
[0190]
Color display 5
The color display is a fully moving image display that operates as a viewfinder, as a confirmation of the printed image, and as a user interface display. Large display (eg, 4 inch diagonal) units are limited to expensive versions of Artcam units, as the cost of display 5 is approximately proportional to its area. Smaller displays, such as a color video camera's approximately 1 inch viewfinder TFT, are useful for medium artcams.
[0191]
Zoom lens (not shown)
The Artcam can include a zoom lens. This is the same zoom lens used in a standard electronic camera and may be a standard electronically controlled zoom lens similar to the zoom lens in a pocket camera. A suitable version of the Artcam unit includes a standard interchangeable 35mm SLR lens.
[0192]
Autofocus motor 39
The autofocus motor 39 changes the focus of the zoom lens. The motor is a small motor geared down to an appropriate speed to drive the autofocus mechanism.
[0193]
Autofocus motor driver 63
The autofocus motor driver 63 is a small circuit that amplifies the digital motor control signal from the APC 31 to an appropriate level to drive the motor 39.
[0194]
Zoom motor 38
The zoom motor 38 moves the front lens of the zoom in and out. The motor is a small motor geared down to an appropriate speed to drive the zoom mechanism.
[0195]
Zoom motor driver 62
The zoom motor driver 62 is a small circuit that amplifies the digital motor control signal from the APC 31 to an appropriate level to drive the motor.
[0196]
communication
The ACP 31 includes a universal serial bus (USB) interface 52 for communication with a personal computer. Not all Artcam models are planned to incorporate a USB connector. However, since the silicon area required for the USB circuit 52 is small, it is possible to accommodate the interface in a standard ACP.
[0197]
Optional keyboard 57
The Artcam unit includes an optional small keyboard 57 that customizes the text specified by Artcard. Any text that appears in an Artcard image can be edited, even in the form of complex metallic 3D fonts. The small keyboard includes a single-line alphanumeric LCD to display the original and edited text. This keyboard may be standard equipment.
[0198]
The ACP 31 includes a serial communication circuit that transfers data to and from a small keyboard.
[0199]
Power supply
The Artcam unit uses a battery 48. Depending on the Artcam option, this battery may be either a 3V lithium battery, a 1.5V AA alkaline battery, or any other battery device.
[0200]
Power management unit 51
Power consumption is an important design constraint in Artcam. It is desirable that either a standard camera battery (eg, a 3V lithium battery) or a standard AAA or AAA alkaline battery can be used. The degree of complexity of the electronic circuit of the Artcam unit is significantly higher than that of a 35mm photographic camera, but the power consumption is not always correspondingly high. The Artcam power supply is carefully managed so that all units are turned off when not in use.
[0201]
The most significant sources of power waste are the APC 31, area image sensors 2 and 4, various motors of the printer 44, the flash unit 56, and the optional color display 5. Then treat each part separately:
1. 1. ACP: Manufactured using 0.25 μm CMOS and operating at 1.5 V, ACP power consumption can be very low. The clocks to the various components of the ACP chip can also be very small. Clocks to various components of the ACP chip can be turned off when not in use, eliminating most of the standby current consumption. ACP is fully used for about 4 seconds per photo printed;
2. Area image sensor: Power is supplied to the area image sensor only when the user places his finger on the button;
3. 3. Printer power is supplied to the printer only during actual printing. This is about 2 seconds per photo. Even so, moderately low power printing should be used;
4. The motors required by Artcam are all low power small motors and typically operate for only a few seconds per photo;
5. The flash unit 45 is used only for some photographs. Its power consumption is easily provided by a 3V lithium battery with reasonable battery life.
6. The optional color display 5 is a major source of current waste for the following two reasons. The color display must be on for the entire time the camera is in use, and a backlight is required if a liquid crystal display is used. Cameras that incorporate color displays require larger batteries to achieve acceptable battery life.
[0202]
Flash unit 56
The flash unit 56 is a standard small electronic flash for consumer cameras.
[0203]
Overview of ACP31
FIG. 3 is a diagram showing the Artcam central processor (ACP) 31 in detail. The Artcam central processor provides all of Artcam's processing power. The ACP is designed for a 0.25 micron CMOS process with about 1.5 million transistors and about 50 mm.2Has an area of. Although the design of ACP31 is complicated, the design effort can be reduced by using data path compilation technology, macrocells, and IP cores. ACP31 is
RISC type CPU core 72 and
4-way VLIW vector processor 74 and
Direct RAMbus interface 81 and
CMOS image sensor interface 83 and
CMOS linear image sensor interface 88 and
USB serial interface 52 and
Infrared keyboard interface 55 and
Numeric LCD interface 84 and
Color TFT LCD interface 88 and
4 Mbyte flash memory 70 for program storage device 70 and
including. The RISC CPU, the Dilek RAMbus interface 81, the CMOS sensor interface 83, and the USB serial interface 52 may be cores supplied by the vendor. The ACP 31 is intended to operate at a clock speed of 200 MHz based on external 3V and internal 1.5V to minimize power consumption. The CPU core may operate at 100 MHz. The following two block diagrams, ie
Explanatory drawing of ACP31 alone, and
An exemplary Artcam, which gives a higher level diagram of the ACP31 connected to the rest of the Artcam's hardware.
Gives two perspectives on ACP31.
[0204]
Image access
As described above, the DRAM interface 81 plays a role of connecting another client unit of the ACP chip and the Rambus DRAM. In practice, each module in the DRAM interface is an address generator.
[0205]
There are three logical types of images manipulated by ACP. They are,
-The CCD image, which is the input image taken from the CCD, and
-The internal image format, which is the image format used internally by the Artcam device,
-Printed images, which are the output image formats printed by Artcam,
Is.
[0206]
These images typically differ in color space, resolution, and output and input color spaces that can vary from camera to camera. For example, a low-cost camera's CCD image will have different resolutions or different color characteristics than those used in high-cost cameras. However, all internal image formats are the same format in terms of color space across all cameras.
[0207]
Moreover, the three image types can also differ in which direction is "upward". The physical orientation of the camera gives rise to an idea of whether it is a portrait or a landscape, and this idea should be maintained throughout the process. Therefore, the internal image is always correctly oriented and rotation is performed on the image acquired from the CCD during the printing operation.
[0208]
CPU core (CPU) 72
The ACP 31 incorporates a 32-bit RISC CPU 72 to operate the Walk image processing language interpreter and perform the role of Artcam's general-purpose operating system. Any processor core will do as long as a wide variety of CPU cores are suitable and have sufficient processing power to perform the required core computing and control functions fast enough to meet consumer expectations. Absent. An example of a suitable core is LSI Logic's MIPS.
Includes R4000, StrongARM core. It is not necessary to maintain instruction set continuity between different Artcam models. Artcard compatibility is maintained regardless of future processor advances and changes. This is because the Vark interpreter only needs to be recompiled for each new instruction set. Therefore, the architecture of ACP31 can be freely evolved. Various manufacturers can manufacture various ACP31 chip designs without licensing or porting CPU cores. This device independence avoids chip vendor lock-in as Intel does in the PC market. The CPU operates at 100 MHz and has a single cycle time of 10 ns. This CPU needs to be fast enough to execute the Vark interpreter, even if the VLIW vector processor 74 is responsible for time-critical operations.
[0209]
Program cache 72
Even if the program code is stored in the on-chip flash memory 70, it is unlikely that the well-packed flash memory 70 can operate with a cycle time of 10 ns required by the CPU. Therefore, a small cache is required for excellent performance. The 16 cache lines, each of which is 32 bytes, total 512 bytes, which is large enough. The program cache 72 is defined in a chapter named Program Cache 72.
[0210]
Data cache 76
A small data cache 76 is required for excellent performance. This requirement generally arises because of the use of Rambus DRAM. Rambus DRAM can provide high-speed data in bursts, but is insufficient for single-byte access. The CPU accesses a memory caching system that allows the size of the CPU data cache 76 to be manipulated flexibly. A minimum of 16 cache lines (512 bytes) are recommended for good performance.
[0211]
CPU memory model
Artcam's CPU memory model consists of an area of 32MB. In the basic model of Artcam, the CPU memory model is composed of 8 MB of physical RDRAM off-chip, and a maximum of 16 MB of off-chip memory is provided. The ACP 31 has a 4 MB flash memory 70 for program storage, and finally 4 MB of address space is allocated to various registers and controls of the ACP 31. Therefore, the memory map for Artcam is as follows.
[0212]
[Table 2]
Figure 2001523900
An easy way to decode an address is to use address bits 23-24. That is,
When the bit 24 is cleared, the address is included in the lower 16 MB range and is therefore filled from the DRAM and the data cache 76. In most cases, DRAM is only 8MB, but 16MB is allocated to take into account the higher memory model Artcam.
If bit 24 is set and bit 23 is cleared, the address will be flushed.
It represents the 4 Mbyte range of memory 70 and is filled by the program cache 72.
If bit 24 = 1 and bit 23 = 1, the address is translated by the CPU memory decoder 68 into access to the requested component in the AC via the slow bus.
[0213]
Flash memory 70
The ACP 31 includes a 4 Mbyte flash memory 70 that stores the Artcam program. The flash memory 70 has a higher filling rate than the mask ROM and is expected to allow higher flexibility for testing the camera program code. The weak point of the flash memory 70 is the access time, which cannot be said to be sufficiently high with respect to the operating speed of 100 MHz (cycle time of 10 ns) of the CPU. Therefore, the high-speed program instruction cache 77 acts as an interface between the CPU and the low-speed flash memory 70.
[0214]
Program cache 72
A small cache is required for excellent CPU performance. This request is due to the low speed of the flash memory 70 that stores the program code. The 16 cache lines, each of which is 32 bytes, total 512 bytes, which is large enough. The program cache 72 is a read-only cache. The data used by the CPU program passes through the CPU memory decoder 68 and, if the address is in the DRAM, through the general purpose data cache 76. The separation allows the CPU to operate independently of the VLIW vector processor 74. If the amount of data required for a given process is low, as a result, that process can be entirely cached.
[0215]
Finally, the program cache 72 can be read by the CPU as data, not purely as a program instruction. This makes it possible to load a table, that is, microcode for VLIW, etc. from the flash memory 70. The address where the bit 24 is set and the bit 23 is cleared is filled from the program cache 72.
[0216]
CPU memory decoder 68
The CPU memory decoder 68 is a simple decoder that is suitable for CPU data access. The decoder translates the data address into an internal ACP register access by the internal slow bus, which allows memory-mapped I / O of the ACP register. The CPU memory decoder 68 interprets only the address where the bit 24 is set and the bit 23 is cleared. No caching is performed in the CPU memory decoder 68.
[0217]
DRAM interface 81
The DRAM used by Artcam is a single channel 64 Mbit (8 Mbyte) RAMbus RDRAM that operates at 1.6 GB / sec. RDRAM access is via a single channel (16-bit data path) controller. RDRAM has several effective modes of operation for low power operation. The Rambus specification describes a system with random 32-byte transfers that can achieve efficiencies of 95% or higher, but this is true if only part of the 32 bytes are used. Absent. By performing two reads followed by two writes to the same device, an efficiency of 86% or more can be obtained. Basic latency is needed for the turnaround of the bus changing from write to read, and the presence of a delayed write mechanism can further improve efficiency. For writes, write masks allow writing to a particular subset of bytes. These write masks will be set by the "dirty bits" of the internal cache. Rambus Direct RDRAM, in short, can easily achieve throughputs in excess of 1 GB / s and is combined with intelligent algorithms that make full use of 32 bytes of transfer knowledge (in most processes) to read multiple times per write. This means that a transfer rate exceeding 1.3 GB / sec is expected. 16 bytes can be transferred to and from the core every 10 ns.
[0218]
DRAM configuration
The DRAM configuration for Artcam of the basic model (8MB RDRAM) is shown below.
[0219]
[Table 3]
Figure 2001523900
Note: Uncompressed print images require 4.5MB (1.5MB per channel). The printed image should be compressed to accommodate the other objects in the 8MB model. If the chrominance channels are compressed 4: 1, each chrominance channel requires only 0.375 MB.
[0220]
The memory model described here assumes a single 8MB RDRAM. Some other models of Artcam have more memory and do not need to compress the printed image. Moreover, as the amount of memory increases, most of the final image can be manipulated at the same time, which can improve speed.
[0221]
It should be noted that the retrieval or insertion of the Artcard invalidates the 5.5MB area that holds the printed image, one channel of the magnified photographic image, and the image pyramid. This space is safely used by the Artcard interface to decode the Artcard data.
[0222]
Data cache 76
The ACP 31 includes a dedicated CPU instruction cache 77 and a general-purpose data cache 76. The data cache 76 handles all DRAM requests (reading and writing data) from the CPU, VLIW vector processor 74 and display controller 88. These requirements have very different aspects in terms of memory usage and algorithmic timing requirements. For example, the VLIW process processes an image in linear memory and looks up the values in the table for each value in the image. Most of the images need to be cached very little, but it is desirable to cache the entire lookup table so that no actual memory access is required. Due to these different requirements, the data cache 76 can intelligently define caching.
[0223]
The Rambus DRAM interface 81 has very fast memory access capability (average throughput is 32 bytes at 25 ns), but is insufficient to handle a single byte request. To reduce the effective memory latency, the ACP 31 includes 128 cache lines. Each cache line is 32 bytes wide. In this way, the total capacity of the data cache 76 is 4096 bytes (4KB). The 128 cache lines are organized into 16 programmable sized groups. Each of the 16 groups must be a set of contiguous cache lines. The CPU plays a role of determining the number of cache lines allocated to each group. Within each group, cache lines are packed according to a simple LRU (lowest frequency of use) algorithm. Regarding the CPU data request, the data cache 76 handles a memory access request in which the address bit 24 is cleared. When the bit 24 is cleared, the address falls within the range of the lower 16 MB, so that it can be handled from the DRAM and the data cache 76. In most cases, the DRAM has only 8MB, but 16MB is allocated taking into account the more memory model Artcam. If bit 24 is set, the address is ignored by the data cache 76.
[0224]
All CPU data requests are served from cache group 0. A minimum of 16 cache lines is recommended for good CPU performance, but the CPU can allocate any number of cache lines (other than 0) to cache group 0. The remaining cache groups (1 to 15) are allocated according to current requirements. This may mean allocation to a VLIW vector processor 74 program or display controller 88. For example, a 256-byte lookup table that is required to be always available would require eight cache lines. Only 2 to 4 cache lines are needed (depending on the size of the generated record and whether the write request is write-delayed over many cycles) to export the images sequentially. Let's go. Each cache line byte is associated with a dirty bit used to create a write mask when writing memory to the DRAM. Each cache line has a separate dirty bit associated with it, and whether this dirty bit was written to any of the bytes in the cache line (and therefore the cache line must be written back to the DRAM before it can be reused). Whether it must be). It should be noted that two different cache groups can access the same address in memory and get out of sync. The VLIW program writer is responsible for ensuring that this is not a problem. For example, it is perfectly reasonable to give one cache group the role of reading an image and another cache group the role of writing the modified image back to memory. It is advantageous to allocate cache lines in this way if the images are read or written in sequence. A total of eight buses 182 connect the VLIW vector processor 74 to the data cache 76. Each bus is connected to an I / O address generator. (There are two I / O address generators 189 and 190 per processing unit 178, and there are four processing units in the VLIW vector processor 74. Therefore, the total number of buses is eight. .)
In a given cycle, in addition to a single 32-bit (4 bytes) access to the CPU cache group (group 0), there are 8 simultaneous 16-bit (2 bytes) accesses to the remaining cache groups. Allowed on the bus of the book VLIW processor 74. The data cache 76 is responsible for handling requests fairly. In a given cycle, only one request to a particular cache group is processed. If there are eight address generators 189, 190 in the VLIW vector processor 74, each of the address generators may refer to a separate cache group. However, two or more address generators 189, 190 may access the same cache group, which is more reasonable in some cases. The CPU is responsible for ensuring that the cache groups are assigned the correct number of cache lines and that the various address generators 189, 190 of the VLIW vector processor 74 refer to a particular cache group accurately. .. As described above, the data cache 76 allows the display controller 88 and the VLIW vector processor 74 to be in operation at the same time. If it is believed that the behavior of these two components will never occur at the same time, a total of nine cache groups will suffice. The CPU may use cache group 0, the VLIW vector processor 74 and the display controller 88 may share the remaining eight cache groups and define a cache group that meets a particular request with only 3 bits (rather than 4 bits). it can.
[0225]
JTAG interface 85
A standard JTAG (Joint Test Subcommittee) interface is housed in ACP31 for testing purposes. Due to the complexity of the chip, various test techniques are required, including BIST (built-in self-test) and functional block separation. An overhead of 10% of the chip area is assumed for the entire chip test circuit. The test circuit is outside the scope of this document.
[0226]
Serial interface
USB serial port interface 52
This is a standard USB serial port, which connects to the low speed bus of the internal chip so that the CPU can control it.
[0227]
Keyboard interface 65
This is a standard low speed serial port, which is connected to the internal chip low speed bus so that the CPU can control it. The keyboard interface is designed to optionally connect to the keyboard to allow easy data entry for customizing prints.
[0228]
Authentication chip serial interface 64
These are two standard low speed serial ports, which are connected to the internal chip low speed bus so that the CPU can control them. The reason for having two ports is to connect to both the on-camera authentication chip and the print roll authentication chip using separate lines. If only one line is used, the manufacturer of the imitation print roll may design a chip that malfunctions the camera to use the code generated by the camera's authentication chip instead of generating an authorization code. it can.
[0229]
Parallel interface 67
The parallel interface connects the ACP 31 to a separate static electrical signal. The CPU can control each of these wires as memory-mapped I / O via a low speed bus. The table below lists the wiring to the parallel interface.
[0230]
[Table 4]
Figure 2001523900
VLIW Input and Output FIFA 78, 79
The VLIW input / output FIFO is an 8-bit wide FIFO used to connect the process and the VLIW vector processor 74. Both FIFOs are controlled by the VLIW vector processor 74, but can be cleared by the CPU or queried (eg, about the state).
[0231]
VLIW input FIFA 78
The client writes 8-bit data to the VLIW input FIFA 78 to allow the VLIW vector processor 74 to process the data. Clients include an image sensor interface, an Artcard interface, and a CPU. Each of these processes is freed from processing by simply writing the data to the FIFO and letting the VLIW vector processor 74 do all the heavy work. An example of using the use of VLIW input FIFA 78 by a client is an image sensor interface (ISI83). The image sensor interface 83 acquires data from the image sensor and writes the data in the FIFO. The VLIW process takes data from the FIFO, converts the data to the correct image data format, and writes it to the DRAM. As a result, the image sensor interface 83 is greatly simplified.
[0232]
VLIW output FIFA 79
The VLIW vector processor 74 writes 8-bit data to the VLIW output FIFO 79, and the client can read the data in the VLIW output FIFO. Clients include a printhead interface and a CPU. Both of these clients are freed from processing by simply reading the processed data from the FIFO and letting the VLIW vector processor 74 perform all the heavy work. The CPU can interrupt the data whenever it is contained in the VLIW output FIFO 79, allowing the data to be processed only when it becomes available, rather than constantly polling the FIFO. An example of using the use of VLIW output FIFA 79 by a client is a printhead interface (PHI62). The VLIW process takes an image, rotates the image in the correct orientation, performs color conversion, and dithers the resulting image according to printhead requirements. The printhead interface 62 only needs to read the dithered and formatted 8-bit data from the VLIW output FIFA 79 and pass the 8-bit data to the printhead outside the ACP 31. As a result, the printhead interface 62 is greatly simplified.
[0233]
VLIW vector processor 74
In order to realize the high processing requirements of Artcam, the ACP 31 includes a VLIW (Very Long Instruction Word) vector processor. A VLIW processor is a set of four identical processing units (eg, PU178) that are connected by a crossbar switch 183 and operate in parallel. Each processing unit, for example PU178, can perform four 8-bit multiplications, eight 8-bit additions, three 32-bit additions, I / O processing, and various logical operations in each cycle. .. The processing unit, eg, PU178, is microcoded, each equipped with two address generators 189, 190, and the cycles available for data processing can be fully used. The four processing units, such as PU178, are usually synchronized to achieve a closely interacting VLIW processor. With a 200 MHz clock, the VLIW vector processor 74 operates at 12 Gop (12 billion operations per second). Instructions are coordinated for image processing functions such as warping, artistic brushing, complex composite lighting, color conversion, image filtering, and compositing. These are two orders of magnitude faster than desktop computers.
[0234]
As shown in detail in FIG. 3A, the VLIW vector processor 74 is four processing units connected by a crossbar switch 183, eg PU178, and each processing unit, eg PU178, is a crossbar. Two inputs are supplied to the switch 183, and two outputs from the crossbar switch 183 are acquired. The two common registers form a control and synchronization mechanism for the processing unit, eg PU178. The eight cache buses 182 allow connection to the DRAM via the data cache 76, and the two buses lead to each processing unit, for example PU178 (one bus for each I / O address generator). ). Each processing unit, for example PU178, has an ALU (arithmetic logic unit) 188 (which stores a large number of registers for processing data and some kind of arithmetic logic), some kind of microcode RAM 196, and the outside world (others). Wiring to (including ALU) and. The local PU state machine operates by microcode, and the processing unit, for example, PU178, is controlled by this means. Each processing unit, eg, PU178, includes two I / O address generators 189, 190 that control the data flow between DRAM (via data cache 76) and ALU188 (via input FIFO and output FIFO). The address generator can read and write data (especially images in various formats), as well as tables and simulated FIFOs in DRAM. The format is customizable under software control, but is not microcoded. The data acquired from the data cache 76 is transferred to the ALU 188 via a 16-bit wide input FIFO. The output data is written to a 16-bit wide output FIFO, from which it is written to the data cache 76. Finally, all processing units, such as PU178, share a single 8-bit width VLIW input FIFA 78 and a single 8-bit width VLIW output FIFA 79. With a slow data bus connection, the CPU reads and writes registers in a processing unit, eg PU178, updates the microcode, and reads and writes common registers shared by all processing units in the VLIW vector processor 74, eg PU178. Becomes possible. Next, with reference to FIG. 4, more details are shown inside a single processing unit, eg, PU178, and the components and control signals will be described in detail below.
[0235]
Microcode
Each processing unit, eg, PU178, includes a microcode RAM 196 that holds a program for that particular processing unit, eg, PU178. Instead of storing the microcode in ROM, the microcode is stored in RAM and the CPU is responsible for uploading the microcode. Due to the same space on the chip, this trade-off reduces the maximum size of one function to the size of RAM196, but the number of functions written to the microcode is unlimited. Functions realized using microcode include ark acceleration, Artcard reading, and printing. The VLIW vector processor 74 scheme has several advantages in the case of ACP31:
Reduces hardware design complexity;
Hardware risk is reduced by reducing complexity;
Hardware design time does not depend on all the Walk features built into dedicated silicon;
The space on the chip is reduced overall (because many processes can be incorporated as microcode);
You can add functionality to Vark (by microcode) without impacting hardware design time.
[0236]
Size and content
Each processing unit, for example, the microcode RAM 196 loaded by the CPU controlling the PU 178 is 128 words, and each word is 96 bits wide. An overview of microcode sizes for controlling various units of processing units, such as PU178, is provided in the table below.
[0237]
[Table 5]
Figure 2001523900
With 128 instruction words, the processing unit, eg, the total microcode RAM 196 per PU 178, is 12288 bits, or exactly 1.5 KB. Since the VLIW vector processor 74 is composed of four identical processing units, eg PU178, this corresponds to 6144 bytes, or exactly 6KB. Some bits in the microcode word are used as control bits, while other bits are decoded. See the various unit descriptions that detail each interpretation of the bits of the microcode word.
[0238]
Synchronization between processing units, eg PU178
Each processing unit, for example PU178, includes a 4-bit synchronization register 197. It is a mask used to determine a processing unit that operates integrally, eg PU178, and one bit is set for each of the corresponding processing units acting as a single process, eg PU178. For example, if all processing units, such as PU178, function as a single process, each of the four synchronization registers 197 will all be set to 4 bits. If there are two synchronization processes for each of the two processing units, eg PU178, then the two processing units, eg PU178, are set with 2 bits in the synchronization register (corresponding to the PU itself). The other two processing units are set to another two bits in the synchronization register (corresponding to the PU itself):
The synchronization register 197 is used in two basic ways:
Stop and start a given synchronized process;
Pause execution within the process.
[0239]
Stop and start process
The CPU is responsible for loading the microcode RAM 196 and loading the execution address (usually 0) of the first instruction. When the CPU starts executing microcode, the microcode starts at the specified address.
[0240]
The microcode is executed only when all the bits of the synchronization register 197 are also set in the common synchronization register 197. Therefore, the CPU sets up all processing units, such as PU178, and then starts or stops the process with a single write to the common synchronization register 197.
[0241]
This synchronization scheme allows multiple processes to run asynchronously on a processing unit, eg PU178, and is stopped and started as a process, not as one processing unit, eg PU178, at the same time. ,
Pause execution in process
In a given cycle, a processing unit, eg, PU178, is required for reading from or writing to the FIFO (based on the operation code of the current microcode instruction). If the FIFO is empty at the time of the read request or full at the time of the write request, the FIFO request cannot be completed. The processing unit, eg, PU178, therefore asserts the process pause control signal 198. Process pause signals from all processing units, eg PU178, are fed back to all processing units, eg PU178. The synchronization register 197 is ANDed with four process pause bits, and if the result is non-zero, the write enable or FIFO strobe of the register of the processing unit, eg, PU178, is not set. Therefore, among the processing units that could not finish the task, for example, the processing units that form the same process group as PU178, for example, PU178, there is no processing unit whose register or FIFO has been updated during the cycle. .. This simple technique keeps a given process group in sync. In each subsequent cycle, the processing unit, eg, the state machine of PU178, attempts to re-execute this microcode instruction at the same address and continues to do so until successful. Of course, the common synchronization register 197 can be written by the CPU in order to stop the entire process as needed. This synchronization scheme allows any combination of processing units, such as PU178, to work together, with respect to pauses caused by the fact that each group is not ready to read or write data. , Affects only processing units that work together.
[0242]
Control and branching
During each cycle, each of the four basic inputs and compute units (read, adder / logic, multiplication / interpolation, and barrel shifter) in the processing unit, eg, ALU188 of PU178, has a calculation result of 0 during that cycle. Generates two state bits, a zero flag and a negative flag, which indicate whether it is negative or negative. In each cycle, one of these four state bits is selected by a microcode instruction output from a processing unit, eg, PU178. Four state bits (one for one processing unit, eg, ALU188 of PU178) are combined in the 4-bit common state register 200. During the next cycle, each processing unit, eg, the PU178 microcode program, selects one of the bits from the common state register 200 and branches to another microcode address depending on the value of the state bits. It is possible to do.
[0243]
State bit
Each processing unit, eg, ALU188 of PU178, includes a large number of input and compute units. Each unit produces two state bits, a negative flag and a zero flag. One of these state bits is output from a processing unit, such as PU178, when a special unit asserts a value on the 1-bit 3-state state bit bus. One state bit is output from the processing unit, eg PU178, and then combined with the state bits of another processing unit, eg PU178, to update the common status register 200. The microcode that determines the output state bit has the following format.
[0244]
[Table 6]
Figure 2001523900
Within the ALU188, the 2-bit select processor block value is decoded into four 1-bit enable bits, and different enable bits are transmitted to each processor unit block. The state selection bits (selecting zero or negative) are passed to all units to determine which bits should be output to the state bit bus.
[0245]
Branch in microcode
Each processing unit, eg, PU178, includes a 7-bit program counter (PC) that holds the current microcode address being executed. Normal program execution is linear, i.e., from address N in one cycle to address N + 1 in the next cycle. However, on a cycle-by-cycle basis, the microcode program has the ability to branch to different locations, or to test and branch state bits from the common state register 200. The microcode that determines the next execution address takes the form:
[0246]
[Table 7]
Figure 2001523900
ALU188
FIG. 5 is a diagram showing ALU188 in detail. A large number of dedicated processing blocks exist inside the ALU188 and are controlled by a microcode program. For the dedicated processing block,
A read block 202 that receives data from the input FIFO, and
A write block 203 that sends data via an output FIFO,
Addition and subtraction, adder / logic block 204 for comparison and logical operations,
Multiplication / Interpolation Block 205 for Multiplication Type Interpolation and Multiplication / Accumulation,
Barrel shift block 206, which shifts data on demand,
An input block 207 that receives data from an external crossbar switch 183,
Output block 208 that sends data to the external crossbar switch 183,
A register block 215 that holds data in the primary storage device,
Is included.
[0247]
Four dedicated 32-bit registers hold the results of the four major processing blocks:
The M register 209 holds the result of the multiplication / interpolation block;
The L register 209 holds the result of the adder / logic block;
The S register 209 holds the result of the barrel shifter block;
The R register 209 holds the result of the read block 202.
[0248]
In addition, there are two internal crossbar switches 213 and 214 for data transfer. The various processing blocks are further expanded in subsequent sections with the microcode definitions that belong to each block. The microcode is decoded in the block to supply control signals to various internal units.
[0249]
Data transfer between processing units, eg PU178
Each processing unit, for example PU178, can exchange data via an external crossbar. The processing unit, for example PU178, takes two inputs and outputs the two values to an external crossbar. In this way, two operands for processing can be obtained in a single cycle, but they are not actually used in the calculation until the next cycle.
[0250]
Input 207
This block is shown in FIG. 6 and has two registers In that receive data from an external crossbar.1And In2including. Registers can be loaded on a cycle-by-cycle basis or can remain intact. The selection bit for selecting from the eight inputs is output to the external crossbar switch 183. Microcode takes the following format.
[0251]
[Table 8]
Figure 2001523900
Output 208
The input is complemented by output 208. The output block is shown in detail in FIG. The output is Out1And Out2Both registers are output to the external crossbar every cycle for use by another processing unit, eg PU178. Also, the writing unit is Out1And Out2One of them can be written to one of the output FIFOs attached to the ALU188. Finally, both registers are available as inputs to the first crossbar 213, which allows the register values to be used as inputs to other units in the ALU188. In each cycle, one of the two registers can be updated according to the microcode selection. The data loaded in the specified register is D (selected from the first crossbar 213).0-D3One of, one of M, L, S and R (selected from the second crossbar 214), one of two programmable constants, or a fixed value of 0 or 1. The output microcode has the following format.
[0252]
[Table 9]
Figure 2001523900
Local registers and data transfer in ALU188
As mentioned above, the ALU188 contains four dedicated 32-bit registers to hold the results of the following four blocks:
The M register 209 holds the result of the multiplication / interpolation block;
The L register 209 holds the result of the adder / logic block;
The S register 209 holds the result of the barrel shifter block;
The R register 209 holds the result of the read block 202.
[0253]
The CPU has direct access to these registers and other units can select them as inputs via the second crossbar 214. In some cases, it may be necessary to delay the operation by one cycle or more. The register block consists of four 32-bit registers D0-D3Holds temporary variables that are being processed. One of the registers can be updated in each cycle, while all registers are in the other units (as well as In).1, In2, Out1And Out2Is output for use via the first crossbar 213. The CPU directly accesses these registers. The data loaded in the specified register is D (selected from the first crossbar 213).0-D3One of, one of M, L, S and R (selected from the second crossbar 214), one of two programmable constants, or a fixed value of 0 or 1. The register block 215 is shown in detail in FIG. The microcode for registers has the following format.
[0254]
[Table 10]
Figure 2001523900
1st crossbar 213
The first crossbar 213 is shown in detail in FIG. The first crossbar 213 is an input In1, In2, Out1, Out2, D0-D3Used to choose from. Seven outputs are generated from the first crossbar 213, three to the multiplication / interpolation unit, two to the adder unit, one to the register unit and one to the output unit. The control signals for the first crossbar 213 come from various units that use the crossbar input. There is no specific microcode separated for the first crossbar 213.
[0255]
2nd crossbar 214
The second crossbar 214 is shown in detail in FIG. The second crossbar 214 is used to select from the general purpose ALU188 registers M, L, S and R. Six outputs are generated from the first crossbar 213, two to the multiplication / interpolation unit, two to the adder unit, one to the register unit and one to the output unit. The control signal for the second crossbar 214 comes from various units that use the crossbar input. There is no specific microcode separated due to the second crossbar 214.
[0256]
Data transfer between a processing unit, eg PU178, and a DRAM or external process
Referring to FIG. 4, processing units, such as PU178, share data directly with each other via an external crossbar. The processing unit also transfers data to and from external processes and DRAM. Each processing unit, eg, PU178, includes two I / O address generators 189 and 190 to transfer data to and from the DRAM. The processing unit, eg, PU178, sends data to the DRAM via the output FIFO of the I / O address generator, eg, 186, or receives data from the DRAM via the input FIFO187 of the I / O address generator. .. These FIFOs are localized in a processing unit, such as PU178. In addition, there is a mechanism for sending and receiving data in the form of a common VLIW input FIFA 78 and a common VLIW output FIFA 79 shared by all ALUs with an external process. The VLIW input and output FIFO has only 8-bit width and is used for printing, reading Artcard, and transferring data to a CPU or the like. The local input and output FIFOs are 16 bits wide.
[0257]
reading
The read process block 202 of FIG. 5 is responsible for updating the R register 209 of the ALU188, which represents external input data to the VLIW microcoding process. For each cycle, the read unit can read from either the common VLIW input FIFO 78 (8 bits) or the two local input FIFOs (16 bits). A 32-bit value is generated and all or part of the data is transferred to the R register 209. The process is shown in FIG. The microcode for reading is listed in the table below. The interpretation of some bit patterns is deliberately chosen to aid decoding.
[0258]
[Table 11]
Figure 2001523900
writing
The write process block can write to either the common VLIW output FIFO 79 or one of the two local output FIFOs in each cycle. Note that since only one FIFO is written in a given cycle, one 16-bit value is output to all FIFOs and the lower 8 bits reach the VLIW output FIFO 79. The microcode controls which FIFO accepts that value. The process of data selection is shown in detail by FIG. Source value Out1And Out2Comes from the output block. They are just two registers. The writing microcode has the following format.
[0259]
[Table 12]
Figure 2001523900
Calculation block
Each ALU188 includes two calculation process blocks, namely an adder / logic process block 204 and a multiplication / interpolation process block 205. Further, a barrel shifter block is provided to assist these calculation blocks. The registers from register block 215 can also be used as temporary storage during pipeline operations.
[0260]
Barrel shifter
The barrel shifter process block 206 is shown in detail in FIG. 13, the input of which is obtained from the output of the adder / logic or multiplication / interpolation process blocks, or the result of the previous cycle of those blocks (ALU registers L and M). Be done. The selected 32 bits are barrel-shifted by an arbitrary number of bits in any direction (extending the code as necessary) and output to the S register 209 of the ALU188. The microcode for the barrel shift process block is listed in the table below. It should be noted that some bit pattern interpretations are deliberately chosen to aid in decoding.
[0261]
[Table 13]
Figure 2001523900
Adder / Logic 204
The adder / logic process block is shown in detail with reference to FIG. 14 and is designed for simple 32-bit addition / subtraction, comparison, and logical operations. A single addition, comparison, or logical operation can be performed in a single cycle, and the results are stored in the L register 209 of the ALU188. There are two main operands A and B, which are selected from either of the two crossbars or four constant registers. The selection of one crossbar allows the result of arithmetic operations in the previous cycle to be used, and the other accesses the operand previously calculated by this ALU or other ALU188. CPU has 4 constants (K1-KFour) Is the only unit to access. For example, when an operation such as (A + B) × 4 is required, the direct output from the adder can be used as an input to the barrel shifter, and is left by two without first latching on the L register 209. It can be shifted. The output from the adder is available in the multiplication unit for multiplication-accumulation operations. Microcode for adder / logic process blocks is listed in the table below. The interpretation of some bit patterns is deliberately chosen to aid decoding.
Microcode bit interpretation for adder / logic units
[0262]
[Table 14]
Figure 2001523900
Multiplication / Interpolation 205
The multiplication / interpolation process block is shown in detail in FIG. 15 as a set of 4 8x8 interpolation units, with 4 8x8 interpolation units being 4 separate 8s per cycle. It has the ability to perform x8 interpolation or can be combined to perform a single 16x16 multiplication. This indicates that up to four linear interpolations, one bilinear interpolation, or half of the trilinear interpolation can be performed in a single cycle. The result of interpolation or multiplication is stored in the M register 209 of ALU188. The two main operands A and B are selected from either of the general purpose registers of ALU188 or from the four programmable constants inside the multiplication / interpolation process block. Each interpolation block functions as a simple 8-bit interpolator [result = A + (BA) f] or as a simple 8 × 8 form multiplication [result = A * B]. If the operation is interpolation, A and B are four 8-bit numbers A0From A3(A0Is a low-order byte), and B0From B3Treated as. AGEN, BGEN and FGEN serve to arrange the inputs to the interpolation unit to match the operations performed. For example, to perform bilinear interpolation, each of the four values is multiplied by a different coefficient and the results are added, while the 16x16 type multiplication requires the coefficient to be zero. Microcode for adder / logic process blocks can be found in the table below. The interpretation of some bit patterns is intentionally selected to assist decoding.
[0263]
[Table 15]
Figure 2001523900
The same 4 bits are used for the selection of V and f, but the 4 choices immediately preceding V generally make no sense as f-numbers. Interpolation using a coefficient of 1 or 0 is meaningless, and it is unlikely that the previous multiplication or current result is a significant value for f.
[0264]
I / O address generators 189 and 190
The I / O address generator is shown in detail in FIG. The VLIW process does not directly access the DRAM. Access is done via two I / O address generators 189, 190, each I / O address generator containing a unique input and output FIFO. The processing unit, for example PU178, reads data from one of the two local input FIFOs and writes the data to one of the two local output FIFOs. Each I / O address generator is responsible for reading data from the DRAM and putting that data into an input FIFO, where the data can be read by a processing unit, such as PU178. Each I / O address generator is responsible for retrieving data (inserted by a processing unit, eg, PU178) from its output FIFO and writing it to DRAM. The I / O address generator is a state machine that generates and controls an address for acquiring and storing DRAM data via the data cache 76. It can be customized under CPU software control, but cannot be microcoded. The address generator is
Image italators used to repeat (read, write, or both) the pixels of an image from start to finish in a wide variety of ways.
Table I / O used to randomly access image pixels and table data to simulate a DRAM FIFO.
Generate an address that is roughly divided into two.
[0265]
Each of the I / O address generators 189 and 190 has its own bus wiring to the data cache 76 and has two bus wirings for one processing unit, eg PU178, across the VLIW vector processor 74. There are a total of 8 buses. The data cache 76 can act on a cycle-by-cycle basis for four processing units, eg, four out of a maximum of eight requests from PU178. The input FIFO and output FIFO are FIFOs having a depth of 8 entries and a width of 16 bits. A wide variety of address generations (image italators and table I / O) are described in later sections.
[0266]
register
The I / O address generator has a set of registers used to control address generation. The addressing mode also determines how the data is formatted and sent to the local input FIFO, and how the data is interpreted from the output FIFO. The CPU can access the registers of the I / O address generator via the low speed bus. The first set of registers defines housekeeping parameters for the I / O generator.
[0267]
[Table 16]
Figure 2001523900
The status register has the following values.
[0268]
[Table 17]
Figure 2001523900
Cache processing
Multiple registers are used to control the cache processing mechanism and specify the cache group used for input, output, etc. See the section on data cache 76 for more information on cache groups.
[0269]
[Table 18]
Figure 2001523900
Image iterator = sequential automatic pixel access
The main image element access methods for software and hardware algorithms are via image italators. The image italator performs all of the addressing and access of the pixel cache in the image channel and reads, writes, or reads and writes pixels for their clients. The read italator reads the pixels in a specific order for the client, and the write italator writes the pixels in a specific order for the client. The italator client reads pixels from the local input FIFO or writes pixels via the local output FIFO.
[0270]
The read image italator reads the inside of the image in a specific order and puts the pixel data into the local input FIFO. Each time the client reads a pixel from the input FIFO, the read italator puts the next pixel from the image into the FIFO (via the data cache 76).
[0271]
The written image italator writes the pixels in a specific order in order to write the entire image. The client writes the pixels to the output buffer, which is then read by the write image italator and written to the DRAM via the data cache 76.
[0272]
Typically, a VLIW processor has an input coupled to a read italator and an output coupled to a corresponding write italator. In terms of processing units, such as PU178 microprogramming, FIFOs are an efficient interface to DRAM. It is irrelevant how the memory is actually performed (rather than the logical order of the data). FIFOs are considered to be substantially limited in length, but in practice FIFOs are finite in length, resulting in delays in sorting and retrieving data, especially when multiple memory accesses conflict. .. There are various image italators that address the most common addressing requirements of image processing algorithms. In most cases, each read italator has a corresponding write italator. Various italators are listed in the table below.
[0273]
[Table 19]
Figure 2001523900
A 4-bit address mode register is used to determine the italator type.
[0274]
[Table 20]
Figure 2001523900
Access-only registers are used as follows.
[0275]
[Table 21]
Figure 2001523900
The flag register (access-only 1) contains a number of flags that determine the factors that influence the reading and writing of data. The flag register is configured as follows.
[0276]
[Table 22]
Figure 2001523900
Notes on read and write enable:
When the read enable is set, the I / O address generator acts as a read iterator, reading the images in a particular order and accommodating the pixels in the input FIFO.
[0277]
When the write enable is set, the I / O address generator acts as a write italator, writing images in a particular order and extracting pixels from the output FIFO.
[0278]
When both read and write enable are set, the I / O address generator operates as a read and write italator, reading pixels in the input FIFO and writing pixels from the output FIFO. Pixels are written only after they have been read. That is, the write italator does not advance beyond the read italator. Care should be taken when this mode is used to ensure a balance between input and output processing by VLIW microcode. It is also possible to specify different cache groups for reading and writing by loading different values into CasheGroup1 and cachegroup2.
[0279]
Notes on PassX and PassY:
When both PassX and PassY are set, the Y ordinate is stored in the input FIFO before the X ordinate.
[0280]
PassX and PassY are set only when the read enable bit is cleared. Instead of passing the ordinates to the address generator, the ordinates are housed directly in the input FIFO. The ordinates move forward when taken out of the FIFO.
[0281]
When the write enable bit is set, the VLIW program needs to ensure that the reading of ordinates from the input FIFO is balanced with the writing to the output FIFO. This is because writes only occur up to ordinate (see note above regarding read and write enable).
Note on loops:
When the loop bit is set, reading is restarted at [start pixel, start line] once [last pixel, last line] is reached. This is ideal when working with structures such as convolution kernels and dither cell matrices that need to read data repeatedly.
[0282]
Loop processing with read enable and write enable set can be useful in an environment where a single line history is maintained, but it is effective only when a read is performed before a write. If there is a FIFO effect (writing is done before reading in a length-constrained format), the appropriate table I / O addressing mode is used instead of the image italator.
[0283]
The loop process in which only the write enable is set creates the write window of the immediately preceding N pixels. It is used with an asynchronous process that reads data from the window. The Artcard read algorithm makes use of this mode.
[0284]
Sequential read and write italator
FIG. 17 is an explanatory diagram of the pixel data format. The simplest image italators are sequential read italators and corresponding sequential write italators. The sequential read italator shows the pixels from the channel line by line at the same time, from top to bottom, and within the same line, the pixels are shown from left to right. The padding byte is not shown to the client. This is most useful for algorithms that need to perform some kind of process for each pixel from the image, but do not care about the order of the pixels being processed, or require the data to be specifically in this order. It is a point. Complementing the sequential read italator is the sequential write italator. The client writes pixels to the output FIFO. The sequential write italator writes a valid image using the appropriate cache processing and the appropriate padding bytes. Each sequential italator requires access to two cache lines. At read time, 32 pixels are shown from one cache line, while other cache lines can be loaded from memory. At the time of writing, 32 pixels are written to one cache line, while the other pixels are written to the memory. The process of performing operations independently on each pixel of an image typically uses a sequential read iterator to obtain pixels and a sequential write iterator to write new pixel values to the corresponding locations in the target image. Will. Such processing is shown in FIG.
[0285]
In most cases, the original image and the target image are different and are represented by two I / O address generators 189 and 190. However, it is also effective to match the original image with the target image. This is because certain input images are read only once. In that case, the same iterator can be used for both input and output, and both the read enable register and the write enable register are set appropriately. For maximum efficiency, it is necessary to use two different cache groups, one for reading and one for writing. If the data is created by a VLIW process and should be written by a sequential write iterator, the PassX and PassY flags are used to generate the coordinates, which are then transmitted to the input FIFO. The VLIW process can use these coordinates to properly create output data.
[0286]
Box read italator
Box-reading italators are used to present pixels in the most convenient order for performing operations such as general purpose filters and convolves. This italator presents the pixel values in a square box around the sequentially read pixels. This box is limited to widths in the X and Y directions of 1, 3, 5 or 7 pixels (X box size and Y box size are the same value, or one dimension value is 1). Yes, the value of the other dimension is 3, 5 or 7). This process is shown in FIG.
[0287]
Box offset: This dedicated register is used to determine subsampling as to which input pixel is used as the center of the box. The normal value is 1, which means that each pixel is used as the center of the box. A value of "2" is useful when reducing the image to 4: 1 as in the case of building an image pyramid. Using the pixel addresses from the figure above, the box is centered in the order of pixels 0, 2, 8 and 10. The box read italator needs to access up to 14 (2 x 7) cache lines. Other cache lines can be loaded from memory while pixels are presented from one set of seven lines.
[0288]
Box write italator
There is no corresponding box write italator. This is because pixel duplication is required only at the time of input. Processes that use a box read italator for input will almost certainly use a sequential write iterator for output because they are in sync. A good example is the convolver. In the combiner, N input pixels are read out to calculate one output pixel. The process flow is as shown in FIG. When using the box read italator, the original image and the target image must not use the same memory. This is because the lines in the subsequent image need the original value (rather than the newly calculated one).
[0289]
Vertical strip read and write italator
In some examples, the images need to be written in the order of the output pixels, but the direction of coherence of the input pixels with respect to the output pixels is unknown. One example is rotation. If the image is rotated 90 degrees and the output image is processed horizontally, cache coherency is completely lost. On the other hand, the output image is processed at the same time based on the pixels of the width of one cache line, and the next (rather than advancing to the pixel corresponding to the next cache line on the same line) is processed. When proceeding to the line, cache coherency for the pixels of the input image is obtained. The same is true if the input pixel has known "block" coherence (such as color coherence), in which case the reads dominate the processing order and the writes to be synchronized must follow the same pixel order. It doesn't become. The order of pixels presented as input (vertical strip read) or expected output (vertical strip write) is the same. The order is the same for all lines of the image, from pixel 0 to pixel 31 on line 0, then from pixel 9 to pixel 31 on line 1, and so on, and then from pixel 32 to 63 on line 0, and so on. followed by. In the last vertical strip, exactly 32 pixels may not be present. In this case, only the actual pixels of the image are presented or scheduled as input. This process is shown in FIG.
[0290]
Processes that require only vertical strip write italators typically include a method of mapping input pixel coordinates given output pixel coordinates. The process accesses the pixels of the input image according to this mapping, and coherence is determined by providing a sufficient cache line on the "random access" reader for the input image. As shown in the process outline of FIG. 22, the coordinates are typically generated by setting the PassX and PassY flags of the vertical strip write iterator.
[0291]
Although it is not important to pair a write itarator with a sequential read itarator or a box read itarator, vertical strip write itarators make significant performance improvements when there is a significant mapping between input and output coordinates.
[0292]
It is important to pair the vertical strip read italator with the vertical strip write italator. In this case, if the input image and the output image are the same, it is possible to assign the vertical strip read iterator and the vertical strip write iterator to one ALU188. If coordinates are required, additional italators must be used with the PassX and PassY flags set. The vertical strip read / write italator presents pixels to the input FIFO and receives the output pixels from the output FIFO. Appropriate padding bytes are inserted on write. Each of the input and output requires at least two cache lines for good performance.
[0293]
Table I / O addressing mode
It is often necessary to look up the values in a table (like an image). The table I / O addressing mode provides this functionality and requires the client to put the index in the output FIFO. The I / O address generator holds the index, examines the data appropriately, and returns the examined value to the input FIFO for further processing by the VLIW client.
[0294]
One-dimensional, two-dimensional and three-dimensional tables are supported, and certain modes are intended for interpolation. To reduce VLIW client-side complexity, index values are treated as fixed-point numbers, and access-only registers define fixed-point and bits that should be treated as the integer part of the index. The data format is a limited format of general-purpose image features in that the pixel offset registers are ignored, and the data is assumed to be contiguous within a line, with 8 or 16 bits (1 byte) per data element. Or only 2 bytes) are allowed. The 4-bit address mode register is used to determine the I / O type.
[0295]
[Table 23]
Figure 2001523900
The access-only registers are as follows.
[0296]
[Table 24]
Figure 2001523900
FractX, FractY and FractZ are used to generate addresses based on indexes and interpret the format of indexes for significant bits and integer / decimal components. The various parameters are determined as needed by the number of dimensions of the indexed table. A one-dimensional table requires only FractX, and a two-dimensional table requires FractX and FractY. Each Fract value is composed of the number of decimal bits of the corresponding index. For example, the X index is in 5: 3 format. This indicates that the integer is 5 bits and the decimal is 3 bits. Therefore, FractX is set to 3. A simple one-dimensional lookup is in 8: 0 format, i.e., with no decimal components. FractX becomes 0. Zero offset is required only for 3D lookups and employs two interpretations. This is detailed in the 3D table lookup section. The flag register (access-only 1) contains a number of flags used to determine the factors that influence the read (in some cases, write) of the data. The flag register is configured as follows.
[0297]
[Table 25]
Figure 2001523900
With the exception of one-dimensional direct lookup and DRAM FIFO, all table I / O modes areSupports read only,Does not support writing. Therefore, in all I / O modes except the above two modes, the read enable bit is set and the write enable bit is cleared. One-dimensional direct lookup is
Read-only with the read enable bit set and the write enable bit cleared,
Write-only with read enable bits cleared and write enable bits cleared,
Read-modify-write with both read-enabled bits and write-enabled bits set, and
Supports 3 modes.
[0298]
The different modes are described in the 1D lookup section below. DRAM FIFO mode is
Write read mode with both read and write enable bits set
Only one mode is supported.
[0299]
This mode is described in the DRAM FIFO section below. The DataSize flag determines whether the size of each data element in the table is 8 bits or 16 bits. Only two data sizes are supported. 32-bit elements can be created in one of two ways, depending on the requirements of the process:
Read from two 16-bit tables at the same time and synthesize the results. This is convenient when timing matters, but it has the disadvantage of wasting two I / O address generators 189 and 190, with each 32-bit element read by the CPU as a 32-bit entity. Can't;
Read from the 16-bit power strip twice and synthesize the results. This is convenient because only one lookup is used, but different indexes must be generated and communicated to the lookup.
[0300]
One-dimensional structure
Direct lookup
Direct lookup is a simple indexing to a one-dimensional lookup table. By setting the appropriate bit in the flag register, the client has three access modes:
Read-only
Write-only
Read-modify-write
You can choose between.
[0301]
Read-only
The client sends the fixed-point index X to the output FIFO and the 8- or 16-bit value of the table [Int (X)] is returned to the input FIFO. The decimal component of index X is completely ignored. If the index is out of range, the edge repeat flag determines whether edge pixels are returned or constant pixels are returned. Address generation is as simple as:
If the data size indicates 8 bits, then X is a bit of FractX barrel-shifted to the right and the result is added to the base address ImageStart of the table;
If the data size indicates 16 bits, X is a FractX bit barrel-shifted to the right, and the result of a 1-bit shift to the left (bit 0 becomes 0) is added to the base address ImageStart of the table. ..
[0302]
The 8 or 16 bit data value at the resulting address is put into the input FIFO. One cycle is required for address generation, and one cycle is also required to transfer the requested data from the cache to the output FIFO (assuming a cache hit). For example, assuming that each entry is 16 bits and the index is a 12-bit 8: 4 fixed-point format, the value of a table of 256 entries is subtracted, FractX is 4 and the data size is 1. When the index is passed to the lookup, it shifts 4 bits to the right and the result shifts 1 bit to the left and adds it to ImageStart.
[0303]
Write-only
The client passes the fixed-point index X to the output FIFO and then an 8- or 16-bit value to be written to the specified location in the table. A complete transfer requires at least two cycles, one cycle for address generation and one cycle for data transfer from the FIFO to the DRAM. Any number of cycles can be provided between the VLIW process accommodating the index in the FIFO and the value to be written in the FIFO. Address generation is performed in the same manner as in read-only mode, but instead of reading data from that address, data from the output FIFO is written to that address. If the address is outside the range of the table, the data is deleted from the FIFO and not written to the DRAM.
[0304]
Read-modify-write
The client sends the fixed-point index X to the output FIFO and the 8- or 16-bit value of the table [Int (X)] is returned to the input FIFO. The next value contained in the output FIFO is written to the table [Int (X)] and replaces the previously returned value. A general-purpose processing loop is a process that reads a value from a certain location, changes the value, and writes the value back. The overall time is
The cycle of generating an address from an index and
The cycle of returning the value from the table and
A cycle of changing values in some way,
The cycle of writing the changed value back to the table,
4 cycles.
[0305]
There is no particular read / write mode in which the client presents a flag representing "read from X" or "write to X". The client can simulate "read from X" by writing the original value and "write to X" by simply ignoring the returned value. However, the use of such modes is not facilitated. This is because each operation uses a minimum of 3 cycles (no modification required) and uses 2 data accesses instead of the 1 access as is done by a particular read and write mode. ..
[0306]
Interpolation table
This is the same as direct lookup in read mode, except that for a given fixed-point index X, two values are returned instead of one. The values returned are table [Int (X)] and table [Int (X) + 1]. If any index is out of range, the edge repeat flag determines whether edge pixels are returned or constant pixels are returned. Address generation looks directly, except that the second address is simply (first address + 1) or (first address + 2), depending on whether it is 8-bit data or 16-bit data. Same as up. It takes two cycles to transfer the requested data to the output FIFO (assuming a cache hit), but one 16-bit fetch actually returns two 8-bit values from the cache to the address generator.
[0307]
DRAM FIFO
A special case of a read / write one-dimensional table is a DRAM FIFO. It is often necessary to simulate a FIFO of a given length using DRAM and an associated cache. The DRAM FIFO allows the client to write to the output FIFO as if it were one end of the FIFO, without explicitly indexing the table, and whether it is the other end of the same logical FIFO. Read from the input FIFO as follows. Two counters track the input and output positions of the simulated FIFO and cache it in the DRAM as needed. The client must see both the read and write enable bits in the flag register.
[0308]
An example of the usage of a DRAM FIFO is to retain a single-line history of a value. The initial history is written before the process starts. When a typical process completes a line, the value of the previous line is taken from the FIFO and the value of this line is put into the FIFO (this line becomes the previous line when processing the next line). The output FIFO is always full as long as the inputs and outputs match each other on average. As a result, this type of FIFO is efficient with no access delay (except when the overall length of the FIFO is very short, for example 3 or 4 bytes, in which case the purpose of the FIFO is Will hurt).
[0309]
2D table
Direct lookup
Two-dimensional direct lookup is not supported. A special bilinear lookup was achieved because all cases of 2D lookup are planned to be accessed for bilinear interpolation.
[0310]
Bilinear lookup
This kind of lookup is necessary for bilinear interpolation of data from 2D tables. Given fixed-point X and Y coordinates (Y, X in the output FIFO), four values are returned after lookup. Their values are (in order):
Table [Int (X), Int (Y)]
Table [Int (X) + 1, Int (Y)]
Table [Int (X), Int (Y) +1]
Table [Int (X) + 1, Int (Y) +1]
Is.
[0311]
The order of the returned values gives the best cache coherency. If the data is 8 bits, the two values are returned every cycle between the two cycles and the lower byte is the first data element. If the data is 16 bits, four values are returned in four cycles, one entry per cycle. It takes two cycles to generate an address. In the first cycle, the index (Y) barrel-shifted to the right by the FractY bit is multiplied by RowOffset and the result is added to ImageStart. In the second cycle, either the X index is shifted to the right by FractX bits and the result (for 8-bit data) or the result is shifted to the left by 1 bit (for 16-bit data). It is added to the result from the cycle. As a result, the address Adr becomes Table [Int (X),
Int (Y)] address:
Adr = ImageStart
+ ShiftRight (Y, FractY) * RowOffset
+ ShiftRight (X, FractX)
A copy of Adr is kept in AdrOld to fetch subsequent entries:
If the data is 8 bits, the timing is 2 cycles of address generation, followed by 2 cycles of data being returned (2 table entries per cycle);
If the data is 16 bits, the timing is 2 cycles of address generation, followed by 4 cycles of data being returned (1 entry per cycle).
[0312]
The following two tables show the address calculation method for 8-bit data size and 16-bit data size.
[0313]
[Table 26]
Figure 2001523900
[0314]
[Table 27]
Figure 2001523900
In both cases, the first cycle of address generation may overlap with the insertion of the X index into the FIFO, and the effective timing is as low as one cycle for address generation and four cycles of return data. If the index generation is two steps ahead of the result, there is no effective address generation time and the data is simply generated at the appropriate rate (2 or 4 cycles per set).
[0315]
3D lookup
Direct lookup
Since all cases of 2D lookup are expected to be accessed for trilinear interpolation, two special trilinear lookups are realized. The first is a simple look-up table and the second is for trilinear interpolation from the image pyramid.
[0316]
Tri-linear lookup
This type of lookup is useful for 3D data tables such as color conversion tables. Standard image parameters define a single XY plane of data, i.e. each plane consists of ImageHight rows, each row containing RowOffset bytes. In most environments, assuming a continuous plane, one XY plane is a series of ImageHight × RowOffset bytes. Rather than assuming or calculating this offset, the CPU software must provide the offset in the form of a 12-bit ZOffset register. For this type of lookup, given three fixed-point indexes in the order Z, Y, X, eight values from the lookup table:
Table [Int (X), Int (Y), Int (Z)]
Table [Int (X) + 1, Int (Y), Int (Z)]
Table [Int (X), Int (Y) +1, Int (Z)]
Table [Int (X) + 1, Int (Y) + 1, Int (Z)]
Table [Int (X), Int (Y), Int (Z) +1]
Table [Int (X) + 1, Int (Y), Int (Z) +1]
Table [Int (X), Int (Y) +1, Int (Z) +1]
Table [Int (X) + 1, Int (Y) + 1, Int (Z) +1]
Are returned in order.
[0317]
The order of the returned values gives the best cache coherency. If the data is 8 bits, the two values are returned every cycle during the 4 cycles and the lower byte is the first data element. If the data is 16 bits, 4 values are returned in 8 cycles, one entry per cycle. It takes 3 cycles to generate an address. In the first cycle, the index (Z) barrel-shifted to the right by the Fract Z bit is multiplied by the 12-bit ZOffset and added to the ImageStart. In the second cycle, the index (Y) barrel-shifted to the right by the FractY bit is multiplied by RowOffset and the result is added to the result of the previous cycle. In the second cycle, either the X index is shifted to the right by FractX bits and the result (for 8-bit data) or the result is shifted to the left by 1 bit (for 16-bit data). It is added to the result from the cycle. As a result, the address Adr becomes Table [Int (X),
Int (Y), Int (Z)] address:
Adr = ImageStart
+ (ShiftRight (Z, FractZ) * Z Offset)
+ (ShiftRight (Y, FractY) * RowOffset)
+ ShiftRight (X, FractX)
A copy of Adr is kept in AdrOld to fetch subsequent entries:
If the data is 8 bits, the timing is 2 cycles of address generation, followed by 2 cycles of data being returned (2 table entries per cycle);
If the data is 16 bits, the timing is 2 cycles of address generation, followed by 4 cycles of data being returned (1 entry per cycle).
[0318]
The following two tables show the address calculation method for 8-bit data size and 16-bit data size.
[0319]
[Table 28]
Figure 2001523900
[0320]
[Table 29]
Figure 2001523900
In both cases, the address generation cycle may overlap with the insertion of the X index into the FIFO, and the effective timing of a single one-time lookup is one cycle for address generation, and the return data. As low as 4 cycles. If the index generation is two steps ahead of the result, there is no effective address generation time and the data is simply generated at the appropriate rate (4 or 8 cycles per set).
[0321]
Image pyramid lookup
Measure the average color of a particular area of an image during brushing, tiling and warping
It is necessary to calculate. Rather than calculating values for each given area, these features utilize an image pyramid. A description and structure of the image pyramid is detailed in the section on internal image formats in the DRAM Interface 81 chapter of this document. This section relates to how to address a given pixel in a pyramid with respect to three ordered fixed-point indexes: levels (Z), Y, and X. The Image Pyramid Lookup expects 8-bit data entries, so the DataSize flag is completely ignored. After specifying Z, Y, and X, the following 8 pixels:
[Int (X), Int (Y)] level Int (Z) pixels
[Int (X) + 1, Int (Y)] level Int (Z) pixels
[Int (X), Int (Y) +1] level Int (Z) pixels
[Int (X) + 1, Int (Y) +1] level Int (Z) pixels
[Int (X), Int (Y)] level Int (Z) +1 pixel
[Int (X) + 1, Int (Y)] level Int (Z) + 1 pixels
[Int (X), Int (Y) +1] level Int (Z) +1 pixel
[Int (X) + 1, Int (Y) +1] level Int (Z) +1 pixels
Is returned via the input FIFO.
[0322]
The eight pixels are returned as 4x16 bit entries, and the X and X + 1 entries are combined high / low. For example, if the scaled (X, Y) coordinates are (10.4, 12.7), the first four pixels returned are (10,12), (11,12), ( 10, 13) and (11, 13). When the coordinates are out of the valid range, the client can choose to repeat the edge pixel or return the constant color value by means of the edge pixel repeat and the constant pixel register (only the lower 8 bits are used). When the image villamid is constructed, there is a simple mapping from level 0 coordinates to level Z coordinates. This method simply shifts the X or Y coordinate to the right by the Z bit. This needs to be done in addition to the number of bits already shifted to get the integer part of the coordinates (ie, the right shift of the FractX bit to the X coordinate and the right shift of FractY to the Y coordinate). The 24-bit ZOffset register is used as a pointer to the level information table to find the ImageStart and RowOffset for a given level of the image pyramid. This table is an array of records, where each record represents the level of a given pyramid ordered by the number of levels. Each record has a 16-bit offset ZOffset from ImageStart to the level of the pyramid (there is no 64-byte aligned address like the lower 6 bits of the offset) and a 12-bit ZRowOffset for that level. It is composed. Element 0 of the table has a ZOffset of 0, and when simply pointing to a full-size image, the ZRowOffset matches the general-purpose register RowOffset. The Zoffset value at element N of the table will be added to ImageStart to get an effective ImageStart at level N of the image pyramid. The RowOffset value of the element N of the table stores the RowOffset value for the level N. Software running on the CPU must properly set up the table before using this addressing mode. The outline of the actual address generation will be described below for each cycle.
[0323]
[Table 30]
Figure 2001523900
The address generation described above can be achieved using a single barrel shifter, two adders, and a single 16x16 multiplication / addition unit that produces 24 bits. Some cycles include two shifts, but they either have the same shift value (ie, the barrel shifter output is used twice) or the shift is one bit. It can be hard-wired. The following internal registers: ZAdr, Adr, ZInt, YInt, XInt, ZRowOffset, ZImageStart are required. Registers of type _Int require only a maximum of 8 bits, while other registers can have a maximum of 24 bits. This access method is used to look up the image pyramid address table (using Zadr) because the cache group 2 only reads from the image pyramid and does not write to the image pyramid. CacheGroup1 is used to look up the image pyramid itself (using Adr). The address table has about 22 entries (depending on the size of the original image), each entry being 4 bytes. Therefore, 3 or 4 cache lines should be assigned to cache group 2, and as many cache lines as possible should be assigned to CasheGroup1. The timing for returning a set of data is 8 cycles, and cycles 8 and 0 are considered to have overlapping operations, i.e., cycle 0 of the next request occurs during cycle 8. This is allowed because cycle 0 does not access memory and cycle 8 does not include any particular operation.
[0324]
Coordinate generation using VLIW vector processor 74
Some functions linked to the write italator require the X and / or Y coordinates of the current pixel being processed by part of the processing pipeline. Certain processing needs to be done at the end of each row or column being processed. In most cases, the PassX and PassY flags are sufficient to generate all the coordinates perfectly. However, if special requirements exist, the following functions can be used. This calculation can be expanded to multiple ALUs for single cycle generation, or may be done within a single ALU188 for multiple cycle generation.
[0325]
Sequential [X, Y] generation
When a process processes pixels sequentially according to a sequential read itarator (or creates pixels and writes the pixels to a sequential write itarator), the following process is the PassX flag / PassY flag, as shown in FIG. Can be used to generate X, Y coordinates instead of.
[0326]
The coordinate generator counts up to the image width ImageWidth with respect to the X coordinate, and increments the Y coordinate once for each imagewidth pixel. The actual process is shown in FIG. 24 and the following constants are set by the software.
[0327]
[Table 31]
Figure 2001523900
The following registers are used to hold temporary variables.
[0328]
[Table 32]
Figure 2001523900
The requirements are summarized as follows.
[0329]
[Table 33]
Figure 2001523900
Vertical strip [X, Y] generation
Because the process, as shown in FIG. 25, produces X, Y coordinates when the process processes the pixels to write them to the vertical strip write iterator and the PassX / PassY flags cannot be used for some reason. Can be used. This coordinate generator counts up to the image width ImageWidth with respect to the X coordinate, and only increments the Y coordinate once for each imagewidth pixel. The actual process is shown in FIG. 26, where the following constants are set by the software.
[0330]
[Table 34]
Figure 2001523900
The following registers are used to hold temporary variables.
[0331]
[Table 35]
Figure 2001523900
The requirements are summarized as follows.
[0332]
[Table 36]
Figure 2001523900
Calculations that occur once per vertical strip (two additions, one of which is associated with the MIN operation) are not included in general timing statistics. Because they are not the actual part of each pixel timing. However, they must be considered in programming microcode for a particular function.
[0333]
Image sensor interface (ISI83)
The image sensor interface (ISI83) acquires data from the CMOS image sensor and makes the data available for storage in DRAM. The image sensor has a 3: 2 aspect ratio, a typical resolution of 750 x 500 samples, and produces 375K (8 bits per pixel). Each of the 2 × 2 pixel blocks has a structure as shown in FIG. 27. The ISI 83 is a state machine that transmits control information including a frame synchronization pulse and a Pixel Clock pulse to an image sensor in order to read an image. Pixels are read from the image sensor and placed in the VLIW input FIFA 78. VLIW can then process and / or store pixels. This is shown in FIG. ISI83 is used in combination with a VLIW program that stores the detected photographic images in DRAM. The process is done in the following two steps:
A small VLIW program reads pixels from a FIFO and writes the pixels to a DRAM via a sequential write iterator;
The photographic image in the DRAM is rotated 90, 180 or 270 degrees depending on the orientation of the camera when the picture was taken.
[0334]
If the rotation is 0 degrees, step 1 only writes the photographic image to the final photographic image storage location, and step 2 is not executed. If the rotation is other than 0 degrees, the image is written to a temporary area (eg, a print image storage area) and then rotated and placed in the final photographic image storage location during step 2. Step 1 is a very simple microcode that retrieves data from the VLIW input FIFA 78 and sequentially writes the data to a write iterator. The rotation of step 2 is performed using an accelerated ark affine transformation function. The process is done in two steps to reduce design complexity and reuse the Vark affine transformation rotation logic already needed for the image. This is acceptable because both steps are completed within about 0.03 seconds, which is a very short time for the Artcam operator. Even so, the readout process is limited by sensor speed and takes 0.02 seconds to read the entire frame and about 0.01 seconds to rotate the image.
[0335]
The orientation is important for the conversion between the detected photographic image and the internal format image. This is because the relative positions of the R pixel, the G pixel, and the B pixel change with the orientation. The processed image needs to be rotated during the printing process in order to have the correct orientation for printing. Artcam's 3D model comprises two image sensors whose inputs are multiplexed into a single ISI83 (different microcodes but the same ACP31). Since each sensor is a frame storage type, both images can be acquired at the same time and transferred to the memory at the same time.
[0336]
Display controller 88
When the "Capture" button on the Artcam is pressed halfway, the TFT displays the current image (converted by a simple VLIW process) from the image sensor. When the shooting button is completely pressed, the shooting image is displayed. When the user presses the print button and image processing begins, the TFT is turned off. When the image is printed, the TFT is turned on again. The display controller 88 is used in the Artcam model with a built-in flat panel display. An exemplary display is a TFT LCD with a resolution of 240 x 160 pixels. The configuration of the display controller 88 is shown in FIG. The state machine of the display controller 88 includes registers, which control the timing of synchronous generation, from which display images are obtained (to the DRAM via the data cache 76 by a particular cache group), and the registers are the TFTs. Controls whether it should be operational (using TFT enable) at a point in time. The CPU can write to these registers via the low speed bus. In order to display an image of 240 × 160 pixels on an RGB TFT, three components are required for each pixel. The image acquired from the DRAM is displayed via three DACs, and one DAC is provided for each of the R, G, and B output signals. At an image refresh rate of 30 frames per second (60 fields per second), the display controller 88
240 x 160 x 3 x 30 = 3.5 MB / sec
Requires data transfer rate.
[0337]
This data rate is slower than the rest of the system. However, it is high enough to slow down the VLIW program during intensive image processing. The general principle of TFT operation reflects this.
[0338]
Image data format
As described above, the DRAM interface 81 is the RAMBUS with other client parts of the ACP chip.
Connect to and from DRAM. In effect, each module in the DRAM interface is an address generator:
There are three logical types of images manipulated by ACP. They are,
-CCD image, which is the input image captured from the CCD
-Internal image format used internally by the Artcam device
-Printed image, which is the output image format printed by Artcam
Is.
[0339]
These images typically differ in color space, resolution, and output and input color spaces that can vary from camera to camera. For example, the CCD image of a low-priced camera has different resolution and color characteristics from the CCD used in a high-priced camera. However, all internal image formats are the same in terms of color space in every camera.
[0340]
Moreover, the three image types can differ in which direction is "upward". The physical orientation of the camera gives rise to an idea of whether it is a portrait or a landscape, and this idea should be maintained throughout the process. Therefore, the internal image is always correctly oriented and rotation is performed on the image acquired from the CCD during the printing operation.
[0341]
CCD image organization
Although a wide variety of CCD image sensors can be used, it is assumed that the CCD itself is a 750 × 500 type image sensor and generates 375,000 bytes (8 bits per pixel). Each of the 2 × 2 pixel blocks has a structure as shown in FIG.
[0342]
The CCD image when stored in the DRAM has pixels continuous with predetermined lines adjacent to each other in the memory. Each line is accumulated one after another. The image sensor interface 83 is responsible for acquiring data from the CCD and storing the data in the DRAM in the correct orientation. In this way, the 0-degree rotation CCD image is obtained by G, R, G, R, G, R. .. .. Including the first line such as B, G, B, G, B, G. .. .. Includes a second line such as. If the CCD image is a human image and is rotated 90 degrees, the first line is R, G, R, G, R, G and the second line is G, B, G, B, G, B. ,. .. .. (Continued in the same way below).
[0343]
Pixels are stored in an interleaved format. This is because all color components are needed to convert the internal image format.
[0344]
It should be noted that ACP31 does not make a hypothesis about the CCD pixel format. This is because the actual CCD for imaging can change over time between Artcams. All processing performed by the hardware is controlled by major microcode to extend the usefulness of ACP31.
[0345]
Internal image organization
The internal image is typically composed of a large number of channels. For the Walk image,
Lab
Labα
LabΔ
αΔ
L
Is included, but is not limited to these.
[0346]
L, a and b correspond to the components of the Lab color space, α is the matte channel (used for compositing) and Δ is the bump (used during brushing, tiling, and illumination). It is a map channel.
[0347]
The VLIW processor 74 requires that the images be organized in a planar structure. Therefore, the Lab image has three separate memory blocks, i.e.
1 block for L channel
1 block for a channel
1 block for b channel
Is remembered as.
[0348]
Within the block of each channel, the pixels are stored adjacent to a given row (with some optional padding bytes), and the rows are stored one after the other.
[0349]
FIG. 31 shows an example of the storage format of the logical image 100. The logical image 100 is stored in a planar format having the sequentially stored color components L101, a102 and b103. Alternatively, the logical image 100 may be stored in a compressed format having an uncompressed L component 101 and a compressed A component 105 and a compressed B component 106.
[0350]
Referring to FIG. 32, the pixels of line n (110) are stored together in front of the pixels of line n + 1 (111). Images are stored in adjacent memory within a single channel.
[0351]
In the case of the 8MB memory model, the final printed image after the completion of all processing needs to be compressed in the chrominance channel. The compression of the chrominance channel can be 4: 1 and the overall compression is 12: 6 or 2: 1.
[0352]
Except for the final printed image, the Artcam image is typically uncompressed. Due to memory constraints, the software may choose to compress the final printed image of the chrominance channels by scaling each of these channels 2: 1. After this is done, the print Vark function used to print the image should be instructed to handle the chrominance channel designated as compressed. The print function is the only function that knows how to handle compressed chrominance, but even so, the print function only processes with a fixed 2: 1 compression ratio.
[0353]
It is possible to work on the compressed image to compress the image and then create the final print image, but this is not recommended as it causes a loss of resolution. Moreover, the image should be compressed only once as the final step before printout. While one compression is virtually unnoticed, multiple compressions cause considerable image degradation.
[0354]
Clip image organization
Clip images stored in Artcard are not explicitly supported by ACP31. The software is responsible for extracting images from the current Artcard and organizing the data into a format that can be recognized by ACP. If the images are stored in compressed form on Artcard, the software is responsible for decompressing them. This is because there is no specific hardware that supports the stretching of Artcard images.
[0355]
Image pyramid organization
During the brushing, tiling, and warping processes used to manipulate an image, it is often necessary to calculate the average color of a particular area of the image. Rather than calculating the value for each given area, these functions utilize an image pyramid. As shown in FIG. 33, the image pyramid is a de facto multi-resolution pixel map. The original image 115 is a 1: 1 representation. Low-pass filtering and 2: 1 subsampling in each dimension gives image 116, which is 1/4 of the original size. This process continues until the entire image is represented by a single pixel. The image pyramid is constructed from primitive internal format images and uses 1/3 (1/4 + 1/16 + 1/64 + ...) of the size occupied by the original image. For a 1500 x 1000 original image, the corresponding image pyramid is about 1/2 MB. The image pyramid is constructed by a particular Walk function and is used as a parameter of other Walk functions.
[0356]
Print image organization
The entire processed image is needed at the same time to print it. However, the print image output includes CMY dither images and is the only temporary image format used within the print image function. However, it should be noted that color conversion from the internal color space to the print color space is required. Moreover, the color conversion can be adjusted separately for each type of print roll of cameras with different ink characteristics. For example, sepia output is performed using a particular sepia toning Artcard, or using a sepia toning print roll (thus all Artcards work in sepia toning).
[0357]
Color space
As mentioned above, Artcam uses three color spaces depending on the type of image type.
[0358]
ACP has no direct knowledge of a particular color space. Instead, the ACP provides a CCD color space, an internal color space, and a printer color space, ie.
CCD color space: RGB and
Internal color space: Lab and
Printer color space: CMY and
Relies on the client's color space conversion table for conversion between;
By removing the color space transformation from ACP31
-Using different CCDs with different cameras
− Using different inks (of different print rolls over a long period of time) with the same camera
-Separate the CCD selection from the ACP design path
-Skillfully define the internal color space for accurate color processing
Will be possible.
[0359]
Artcard interface 87
The Artcard interface (AI) is used to acquire data from the linear image sensor and store which data in the DRAM as the Artcard passes under the linear image sensor. The image sensor generates 11000 8-bit samples per scan line and samples the Artcard at 4800 dpi. The AI is a state machine that sends control information including a LineSync pulse and a PixelClock pulse to a linear sensor in order to read an image. Pixels are read from a linear sensor and housed in a VLIW input FIFA 78. VLIW can then process and / or store pixels. AI contains several registers:
[0360]
[Table 37]
Figure 2001523900
The CPU must clear the VLIW input FIFA 78 before starting the scan. The status register has bits that are interpreted as follows.
[0361]
[Table 38]
Figure 2001523900
Artcard Interface (AI) 87
The Artcard interface (AI) 87 is responsible for acquiring an Artcard image from the Ardcard reader 34 and decoding it into original data (usually a Vark script). In particular, the AI 87 receives a signal from the Artcard scanner linear CCD34, detects the bit pattern printed on the card, converts the bit pattern into original data, and corrects the read error.
[0362]
If Artcard 9 is not inserted, the image printed from Artcam is nothing more than a detected photographic image organized by any standard image processing routine. Artcard 9 is a means for a user to modify a photo before printing it out. The simple task of inserting a particular Artcard 9 into an Artcam allows the user to define the complex image processing performed on the photographic image.
[0363]
If no Artcard is inserted, the photographic image is processed in the usual way to create a printed image. When a sheet of Artcard 9 is inserted into an Artcam, the effect of that Artcard is applied to the photographic image to produce a printed image. When the Artcard 9 is removed (when removed), the printed image reverts to a photographic image processed in a standard way. When the user presses a button to retrieve the Artcard, the event is contained in an event queue maintained by the operating system running on the Artcam central processor 31. When the event is processed (eg, after the current print has been done), the following situations occur:
[0364]
If the current Artcard is enabled, the printed image is marked invalid and the "process standard" event is queued for the event. When the event is finally processed, standard image processing operations are added to the photographic image to produce a printed image.
[0365]
The motor is started to retrieve the Artcard and a timed "motor stop" event is added to the event queue.
[0366]
Insert art card
When the user inserts the Artcard 9, the Artcard sensor 49 detects it and notifies the ACP 72. This causes the software to insert the "Artcard inserted" event into the event queue. When this event is processed, several situations occur:
The current Artcard is marked as invalid (not "none");
Printed images are marked as invalid;
The Artcard motor 37 is started to capture the Artcard;
Artcard interface 87 is instructed to read Artcard;
The Artcard interface 87 receives a signal from the Artcard scanner linear CCD34, detects the bit pattern printed on the card, corrects the error of the detected bit pattern, and generates a valid Artcard data block in the DRAM.
[0367]
Reading Data from Artcard CCD-General Consideration
As shown in FIG. 34, the data card read process has four phases while the pixel data is read from the card. The phases are as follows:
Data area detection on Phase 1 Artcard
Phase 2 Bit pattern detection from Artcard based on CCD pixels and writing as bytes
Phase 3-byte pattern descrambling and XOR operation
Phase 4 data decoding (Reed-Solomon decoding).
[0368]
As shown in FIG. 35, Artcard 9 must be sampled at least twice the printed resolution to satisfy the Nyquist theorem. In practice, it is better to sample at a higher rate. Preferably, the pixels are sampled at 3 times the resolution of the dots printed in each dimension (237) and 9 pixels are needed to define one dot. Therefore, when the resolution of Artcard 9 is 1600 dpi and the resolution of the sensor 34 is 4800 dpi, 9450 pixels can be obtained for each row by using a 50 mm CCD image sensor. That is, if 2 MB of dot data (in the case of 9 pixels per dot) is required, 2 MB * 8 * 9/9450 = 15978 columns = about 16000 columns are required. Of course, if the dots are not closely aligned with the sampled CCD, in the worst case possible, the dots will be detected in the 16 (4x4) pixel area (231).
[0369]
The Artcard 9 is slightly distorted due to thermal damage, rotates slightly (up to, eg, once) due to variations in insertion into the Artcard reader, and slightly to the true data rate due to fluctuations in the speed of the leader motor 37. Deviation may appear. Due to these changes, the sequence of data from the card cannot be read as the corresponding sequence of pixel data. As shown in FIG. 36, one rotation of the Artcard 9 causes pixels from a row on the card to be read as pixels over 166 rows.
[0370]
Finally, the Artcard 9 must be read within a reasonable amount of time for the human operator. Since the data on the Artcard covers most of the Artcard surface, timing issues can be limited to the Artcard data itself. A read time of 1.5 seconds is appropriate for an Artcard read.
[0371]
Artcard must be captured within 1.5 seconds. Therefore, all pixel data in 16000 columns needs to be read from the CCD 34 within 1.5 seconds, i.e. in 10667 columns per second. Therefore, the time available to read a row is 1/10667 seconds, or 93747 nanoseconds. Pixel data can be written to the DRAM one row at a time, completely independent of the process of reading the pixel data.
[0372]
The time to write one column of data (4 bits per pixel, and therefore 9450/2 bytes per byte can be read, so 9450/2 bytes) takes 8 cache lines. Shortened by use. If 4 lines are written at the same time, 4 banks can be drawn independently, and the overlap latency is shortened. In this case, 4725 bytes can be written at 11840 ns (4725/128 * 320 ns). In this way, the time required to write the predetermined column data to the DRAM uses less than 13% of the available bandwidth.
[0373]
Decryption of Artcard
Simply looking at the data size, if the entire Artcard pixel data as read by the linear CCD34 (140MB if each bit is read as a 3x3 array) is maintained, then the process should be adapted to 8MB of memory 33. Seems impossible. Therefore, the reading of the linear CCD, the decoding of the bitmap, and the unbitmap process should be performed in real time (while the Artcard 9 passes by the linear CCD 34), and these processes are performed on all images. It must work efficiently even if data storage is not made available.
[0374]
When Artcard 9 is inserted, the old stored print image and the enlarged photographic image become invalid. The new Artcard 9 may include instructions to create a new image based on the currently captured photographic image. Old print images are invalid, areas holding enlarged photographic images and image pyramids are invalid, leaving more than 5MB available as scratch memory during the read process. Strictly speaking, the 1MB area where the new raw data of Artcard should be written can be used as scratch data during the Artcard read process until the final Reed-Solomon decoding is done, and that 1MB area is available. It will be released again. The read process described here does not utilize the extra 1MB area (except for its use as the final destination for the data).
[0375]
It should also be noted that the descrambling process requires two sets of 2MB of memory area as the descrambling cannot be done in place. Fortunately, the 5MB scratch area contains enough space for this purpose.
[0376]
With reference to FIG. 37, a flowchart 220 of the steps required to decode the Artcard data is shown. These steps include reading the Artcard 221 and decoding the read data to generate the corresponding encoded, XORed, and scrambled bitmap data 223. Next, a checkerboard XOR operation is applied to the encoded and scrambled data 224 to generate the data. This data is then descrambled 227 to generate data 225, which is then subjected to Reed-Solomon decoding to generate the original raw data 226. Alternatively, the descrambling and XOR arithmetic processes may be performed together and do not require separate data paths. Each of the above steps is detailed below. As described with reference to FIG. 37, the Artcard interface has four phases, the first two of which are temporally significant and must be performed while the pixel data is being read from the CCD. :
Data area detection on Phase 1 Artcard
Phase 2 Bit pattern detection from Artcard based on CCD pixels and writing as bytes
Phase 3-byte pattern descrambling and XOR operation
Phase 4 data decoding (Reed-Solomon decoding).
[0377]
These four phases will be described in detail below.
[0378]
Phase 1: When the Artcard 9 passes through the CCD34, the AI must detect the start of the data area by reliably detecting the special target on the Arrcard on the left side of the data area. If the special target cannot be detected, the card is marked as invalid. This detection needs to be done in real time while the Artcard 9 passes through the CCD 34.
[0379]
Rotational invariance is given, if desired. In this case, the target repeats on the right side of the Artcard, but is associated with the lower right corner, not the upper corner. In this way, if the card is inserted in the "wrong" way, the target will eventually be oriented correctly. Phase 3, which will be described later, may be modified to detect the orientation of the data and take into account the possibility of rotation.
[0380]
Phase 2: Once the data is determined, the main read process begins, putting the pixel data from the CCD into the "Artcard data window", detecting the bits from this window, assembling the detected bits into bytes, and DRAM. Build a byte image in. This all needs to be done while the Artcard passes through the CCD.
[0381]
Phase 3: When all the pixels are read from the Artcard data area, the Artcard motor 37 is stopped, the byte image is descrambled and XORed. Real-time performance is not required, but the process must be fast enough not to bother human operators. This process takes a 2MB scrambled bit image and writes the scrambled / XORed bit image to a separate 2MB image.
[0382]
Phase 4: The final phase of the Artcard read process is the Reed-Solomon decoding process, where a 2MB bit image is decoded into a 1MB valid Artcard data area. Again, real-time performance is not required, but it is necessary for human operators to perform decryption quickly. If the decryption process is valid, the card is marked as valid. If the decoding fails, an attempt is made to decrypt the duplicate of the data in the bit image and the process is repeated until it succeeds or there is no duplicate image of the data in the bit image.
[0383]
The four-phase process described above requires 4.5MB of DRAM. 2MB is reserved for Phase 2 output and 0.5MB is reserved for scratch data between Phases 1 and 2. The remaining 2MB of space can hold more than 440 columns, with 4725 bytes per column. In practice, the pixel data being read is several columns ahead of the Phase 1 algorithm, and in the worst case it is about 180 columns behind Phase 2, but well within the limits of 440 columns. Fits in.
[0384]
Next, the actual operation of each phase will be described in detail.
[0385]
Data area detection on Phase 1-Artcard
This phase has to do with ensuring that the left side of the data area on Artcard 9 is detected. Accurate detection of the data area is achieved by accurate detection of the special target printed on the left side of the card. These targets are specifically designed to be easily detected even when there is a maximum rotation of 1 degree.
[0386]
With reference to FIG. 38, an enlarged view on the left side of Artcard 9 is shown. The left side of the card is divided into 16 bands 239, with a target, eg, 241 in the center of each band. Bands are logical in that no lines are drawn to separate them. FIG. 39 shows one target. Target 241 is a printed black square containing a single white dot. The idea is to first detect as many targets 241 as possible and then connect the locations of at least eight detected white dots into a single logical straight line. If this idea can be implemented, the start of the data area 243 will be a certain distance from this logical straight line. If not, the card is rejected as invalid.
[0387]
As shown in FIG. 38, the height of the card 9 is 3150 dots. Since the target (Target0) 241 is located at a certain distance of 24 dots from the upper left corner 244 of the data area, the target is the first of 16 areas of equal size of 192 dots (576 pixels). It fits well in the area 239 and there are no targets in the last pixel area of the card. The target 241 must be large enough to be easily detected, but not large enough to move out of the area when the card is rotated once. A suitable size of the target is a black square 241 of 31 x 31 dots (93 x 93 detection pixels) including white dots 242.
[0388]
In the worst case of one rotation, one row of shifts occurs every 57 pixels. Therefore, for a band with a size of 590 pixels, it is not possible to place any part of this symbol at the top or bottom 12 pixels, or at that location in the band, if the card is in the worst rotation state. Alternatively, the symbol will be detected in the wrong band when reading the CCD.
[0389]
Therefore, when the black portion of the rectangle is 57 pixels high (19 dots), at least 9.5 black pixels can be reliably read out in the same row by the CCD (half of the pixels fit in one row). , The worst case where the other half fits in the next row). The height needs to be 20 dots to ensure that at least 10 black dots are read out in the same row. In preparation for false positives at the start edge of the black dots, the number of dots is increased to 31 and 15 dots are placed on each side of the white dots placed at the target's local coordinates (15, 15). The 31 dots are 91 pixels, and the shift in the row is at most 3 pixels, which easily fits within the band of 576 pixels.
[0390]
In this way, each target is a block of 31 × 31 dots (93 × 93 pixels), and each target is
15 rows (45 pixel width rows out of 93 pixels) containing 31 black dots in each row,
A row containing 15 black dots (45 pixels), one white dot (3 pixels), and another 15 black dots (45 pixels).
15 columns (45 pixel width columns out of 93 pixels), each of which contains 31 black dots,
Consists of.
[0391]
Target detection
The target is not detected by detecting dots, but is detected by reading a row of pixels one row at a time at the same time. Within a given band, it is necessary to search for a large number of columns composed of a large number of adjacent black pixels that make up the left side of the target. It is then expected to find the white region in the center of the additional black column, and finally the black column is found to the left of the center of the target.
[0392]
Eight cache lines are required to obtain excellent cache performance when reading pixels. For each logical read, four sub-reads fill the four cache lines, while the other four cache lines are used. It efficiently uses up to 13% of the available DRAM bandwidth.
[0393]
As shown in FIG. 40, the detection mechanism FIFO that detects the target requires special wiring of the filter 245, the run length encoder 246, and the top three elements (S1, S2 and S3) for random access. including.
[0394]
The columns of input pixels are processed one column at a time until all targets are detected or a specified number of columns are processed. To process the columns, the pixels are read from the DRAM, passed through the filter 245 to detect 0s or 1, and then run length coded 246. The bit value and the number of adjacent bits of the same value are put into FIFA 247. Each entry of FIFA 249 fits in 8 bits, 7 bit 250 holds the run length, and 1 bit 249 holds the value of the detected bit.
[0395]
The run-length encoder 246 encodes only adjacent pixels within the 576 pixel (192 dots) region.
[0396]
The top three elements of FIFA 247 can be accessed 252 in random order. The (pixel) run length of these entries is filtered to three values: short, medium, and long, according to the table below.
[0397]
[Table 39]
Figure 2001523900
Focusing on the top three entries of FIFA 247, there are three interesting special cases.
[0398]
[Table 40]
Figure 2001523900
Preferably, the following information is retained for each region band.
[0399]
[Table 41]
Figure 2001523900
A total of 7 bytes will be given. Address generation is simplified if the total is 8 bytes. So 16 entries require 16 * 8 = 128 bytes, which fits perfectly with the 4 cache lines. The address range should go inside the scratches in the 0.5MB DRAM area. This is because the other phases utilize the remaining 4MB data area.
[0400]
The register value S2StartPixel254 is reset to 0 when the predetermined pixel sequence is started to be processed. As the entries in the FIFO go from S2 to S1, they are added to the existing S2StartPixel value (255), giving the exact position of the run currently defined in S2. Examining each of the three interesting cases in the FIFO, S2StartPixel can be used to determine the start of the black area of the target (Cases 1 and 2) and to determine the start of the white dot in the center of the target. It can be used (Case 3). The algorithm for processing columns is expressed as follows.
[0401]
[Table 42]
Figure 2001523900
The steps (process Column) involved in column processing are as follows.
[0402]
[Table 43]
Figure 2001523900
The processing for each of the three types of cases (processing cases) is as follows.
[0403]
Case 1:
[0404].
[Table 44]
Figure 2001523900
Case 2:
No special action is recorded other than setting the PrevCaseWasCase2 flag (the previous case was case 2) to identify case 3 (see step 3 processing the above column).
[0405]
Case 3:
[0406]
[Table 45]
Figure 2001523900
At the end of processing a given column, the current column is compared to the maximum number of columns for target detection. When the number of allowed columns is exceeded, the number of detected targets should be checked. If less than 8 are detected, the card is considered invalid.
[0407]
Process target
After the target is detected, the target needs to be processed. All targets are available, or only some targets are available. Some targets may have been misdetected.
[0408]
This phase of processing determines a mathematical straight line that passes through the centers of as many targets as possible. The greater the number of targets that the straight line passes through, the more reliable the target position will be detected. The limit is set to 8 targets. If a straight line passes through at least eight targets, it is considered to be the correct straight line.
[0409]
It's brute force, but it's okay to take a simple approach. This is because there is time to do so (see below), and reducing complexity simplifies testing. You need to determine a straight line between Target0 and Target1 (if both targets are considered valid) and determine the number of targets on this straight line. Next, a straight line between Target0 and Target2 is determined, and this process is repeated. Finally, the same process is executed on the straight line between Targets 1 and 2, the straight line between 1 and 3, and so on, and finally the same process is executed on the straight line between Targets 14 and 15. Assuming that all targets are detected, 15 + 14 + 13 +. .. .. = Perform 90 calculations (actually 1440 calculations because each set of calculations requires 16 tests) and select a straight line with the maximum number of targets detected along that straight line. There is a need to. The algorithm for finding the target position is, for example:
Figure 2001523900
As shown in FIG. 34, in the above algorithm, Δrow (264) and Δcolumn (263) are calculated between the targets 261 and 262 and the position of the target A in order to determine the CurrentLine 260 from the Target A261 and the TargetB. It is necessary. By adding Δrow and Δcolumn, it is possible to move from Target0 to Target1, and so on. The position of the detected (if actually detected) TargetN can be compared to the calculated predicted position of the TargetN on the straight line, and if it falls within the permissible range, the TargetN can be on the straight line. It is judged.
[0410]
Δrow and Δcolumn are
Δrow = (rowTargetA --rowTargetB) / (B
--A)
Δcolumn = (columnTargetA--columnTargetB) / (B-A)
Is calculated by. Next, the position of Target0,
row = rowTargetA-(A * Δrow)
column = columnTargetA-(A * Δcolumn)
Calculated by.
[0411]
Also, (row, column) is the actual rowTarget0And columnTarget0Compare with. In order to move from one predicted target to the next target (for example, from Target0 to Target1), Δrow and Δcolumn may be added to row and column, respectively. To check if each target is on a straight line, it is necessary to calculate the predicted position of Target0 and then perform one addition and one comparison for the coordinates of each target.
[0412]
After completing the comparison of all 16 targets with up to 90 straight lines, the result obtained is the best straight line through the effective target. If the straight line passes through at least eight targets (ie, MaxFound> = 8), then it is recognized that enough targets have been detected to form the straight line and the card can be processed. A card is considered invalid if there are less than eight targets passing through the best straight line.
[0413]
The resulting algorithm requires 180 divisions to calculate Δrow and Δcolumn, 180 multiplications / additions to calculate the position of Target0, and 2880 additions / comparisons. The time required to execute this process is the time required to read the pixel data of 36 columns, that is, 3374892 ns. Without taking into account the fact that addition takes less time than division, 3240 mathematical operations must be performed within 3374892ns. This corresponds to about 1040 ns per operation, or 104 cycles. Therefore, the CPU can safely execute all the processing of the target, and the complexity of the design is reduced.
[0414]
Update center of gravity based on data edge boundaries and clock marks
Step 0: Location detection of data area
The distance with respect to rows and columns from Target0 (241 in FIG. 38) to the upper left boundary 244 of the data area is a predetermined fixed distance, and there is a 1-dot column up to the vertical clock mark 276. Therefore, TargetA, Δrow and Δcolumn found in the previous step (Δrow and Δcolumn represent the distance between targets) are used to calculate the center of gravity or predicted position of Target0 as described above.
[0415]
Since the fixed pixel offset from Target0 to the data area is associated with the distance between the targets (192 dots between the targets, 24 dots between Target0 and the data area 243), simply set Δrow / 8 to the column coordinates of the center of gravity of Target0. All you have to do is add them (dot aspect ratio is 1: 1). The top coordinates are
(columnDotColumnTop= columnTarget0
+ (Δrow / 8)
(rowDorColumnTop= rowTarget0
+ (Δcolumn / 8)
Is defined as.
[0416]
The following Δrow and Δcolumn are updated to give the number of pixels between dots in a single column (rather than between targets) by dividing them by the number of dots between targets:
Δrow = Δrow / 192
Δcolumn = Δcolumn / 192
Further, by setting the currentColumn register (see Phase 2) to -1, the currentColumn register is incremented from -1 to 0 when Phase 2 starts after step 2.
[0417]
Step 1: Write the initial centroid delta (Δ) and bit history
It only writes the setup information needed for Phase 2.
[0418]
This can be achieved by writing 0 to all the Δrow and Δcolumn entries in each row and the bit history. The bit history is actually the predicted bit history. This is because it is known that there is a boundary row 277 on the left side of the clock mark row 276, and a white area exists in front of the boundary row 277. Therefore, the bit history is 011, 010, 011, 010, and the like.
[0419]
Step 2: Update the center of gravity based on the actual pixels read
The bit history is set up in step 1 according to the predicted clock marks and data boundaries. The actual centroid of each dot row is set more accurately (initially 0) by comparing the predicted data with the actual pixel values. The center of gravity update mechanism is realized only by executing step 3 of Phase 2.
[0420]
Phase 2-Bit pattern detection and write as bytes from Artcard based on read pixels
Since the dots from Artcard 9 require that at least nine pixels detected over three rows be presented, there are few points to perform a dot detection calculation for each detected pixel row. The processing time should be averaged over the appearance of the average dots to maximize the available processing time. As a result, the processing of the sequence of dots from the Artcard 9 can be contained within the time required to read the data of the three columns from the Artcard. In the most likely case, it takes four columns to present the dots, but the fourth column is the last column of one dot and the first column of the next dot. Therefore, processing should be limited to only three columns.
[0421]
Since the pixels from the CCD are written to the DRAM within 13% of the available time, 83% of the time, ie 83% of 93747 * 3, 83% of 281241ns = 233430ns, processes a row of dots. Is available for.
[0422]
Within the available time, it is necessary to detect 3150 dots and write their bit values to the raw data area of memory. Therefore, this process requires the following steps:
For each row of dots on Artcard,
Step 0: Proceed to the next dot sequence;
Step 1: Detect the top and bottom edges of the Artcard dot sequence (check the clock mark);
Step 2: Process the dot sequence, detect the bits, and store the bits properly;
Step 3: Update the center of gravity.
[0423]
Processes the logical dot sequence of Artcard, and the logical dot sequence can shift over 165 pixels, so in the worst case, process the first column until at least 165 columns are loaded into the DRAM. Can not. Therefore, Phase 2 ends at the same time after the read process is completed. The worst case time is 165 * 93747ns = 15468255ns, or 0.015 seconds.
[0424]
Step 0: Advance to the next dot
To advance to the next row of dots, add Δrow and Δcolumn to dotColumnTop to get the centroid of the dot at the top of the row. When doing this for the first time, it is at the clock mark string 276 on the left side of the bit image image data area, so it proceeds to the first data string. Since Δrow and Δcolumn represent the distance between dots in one column, Δrow is columned to move between the dot columns.dotColumnTopAdd to and row ΔcolumndotColumnTopIt is necessary to add to.
[0425]
The column number is recorded in a register named CurrentCoulmn to keep track of the column number being processed. The CurrentColumn register must be incremented each time the sensor advances to the next row of dots. When the CurrentColumn register is first incremented, it is incremented from -1 to 0 (see step 0 of phase 1). The CurrentColumn register determines when to end the read process (when maxColumns is reached), and after all 8 bits have been written to the byte (once every 8 dot string), the DataOutPointer is assigned to the next byte information. Used to advance to a line. The lower 3 bits determine how many bits are in the current byte.
[0426]
Step 1: Detect the top and bottom of the Artcard dot sequence
In order to process the dot sequence from Artcard, it is necessary to detect the top and bottom edges of the column. The row should form a straight line between the top and bottom of the row (except for local distortion etc.). Initially, dotCoulumnTop specifies clock mark sequence 276. All you have to do is toggle the predicted value, write the predicted value to the bit history, and proceed to step 2. The first task is to add the values of Δrow and Δcolumn to dotColumnTop to reach the first data dot in the column. Is.
[0427]
Step 2: Process the Artcard dot sequence
If the centers of gravity of the upper and lower ends of the column are given to the pixel coordinates, the column forms a straight line between them with as little variation as possible due to distortion or the like.
[0428]
Assuming that the process starts at the top of the column (coordinates of the center of gravity of the top) and goes down to the bottom of the column, the predicted dot centroids that follow are:
rownext= row + Δrow
columnnext= column + Δcolumn
Given as.
[0429]
This gives the address of the predicted centroid of the next dot in the column. However, to take into account local distortions and errors, add another Δrow and Δcolumn based on the dots detected in a given row immediately before. In this way, it is possible to consider the small drift that accumulates in the maximum drift of a percentage from the straight line connecting the top to bottom of the column.
[0430]
Therefore, we keep two values per row, but since the row history is used in step 3 of this phase, we store those two values in separate tables:
* Δrow and Δcolumn (2 @ 4 bits = 1 byte respectively);
* Line history (3 bits per line, 2 lines per byte are stored).
[0431]
For each row, it is necessary to read Δrow and Δcolumn to determine the change to the center of gravity. The read process requires 5% of the bandwidth and 2 cache lines:
76 * (3150/32) + 2 * 3150 = 13824ns = 5% of bandwidth.
[0432]
Once the center of gravity is determined, the pixels around the center of gravity are examined to detect the state of the dots, i.e. the value of the bits. In other words, the dots cover an area of 4x4 pixels. However, since sampling is performed at a resolution three times that of the dots, the number of pixels required to detect the dot state, that is, the bit value is much smaller than this. The number of pixel strings to be accessed at one time is only three.
[0433]
In the worst case with pixel drift due to 1% rotation, the center of gravity shifts by one column for every 57 pixel rows, but since the dot diameter is 3 dots, one column has 171 pixel rows (3 * 57). It will be effective against it. Since 1 byte contains 2 pixels, the number of bytes valid for each buffer read (4 cache lines) would be 86 (out of 128 reads) in the worst case.
[0434]
When a bit is detected, it needs to be written to DRAM. Bits from column 8 are stored as a set of adjacent bytes to minimize DRAM delay. Since every bit from a given dot sequence corresponds to the next bit position in a data byte, it is possible to read the old value of that byte, shift within the new bit, perform an OR operation, and write back that byte. It is possible.
[0435]
The read / shift and OR operation / write processes require two cache lines.
[0436]
When updating the bit history for a given line, it is necessary to read and write the bit history. Only 3 bits are required for the bit history per line, and the history of 2 lines can be stored in a single byte. The read / shift and OR operation / write processes require two cache lines.
[0437]
The total bandwidth required for bit detection and accumulation is listed in the table below.
[0438]
[Table 46]
Figure 2001523900
Dot detection
The process of detecting the value of the dot giving the centroid (ie, the value of the bit) is realized by inspecting the three pixel values and getting the result from the look-up table. This process is fairly straightforward and is shown in FIG. The radius of the dot 290 is about 1.5 pixels. Therefore, the pixel 291 that supports the center of gravity will be completely its dot value, regardless of the actual position of the center of gravity within that pixel. If the center of gravity exactly coincides with the center of the pixel 291 the upper pixel 292 and the lower pixel 293 of the center of gravity pixel, and the left pixel 294 and the right pixel 295 of the center of gravity pixel will be mostly their dot values. If the center of gravity is far from the exact center of pixel 295, it is likely that pixels other than the center pixel will be 100% covered by the dots.
[0439]
Although FIG. 42 shows only the center of gravity biased to the left and bottom of the center, it is clear that the same relationship holds for the center of gravity above and to the right of the center. In Case 1, the center of gravity coincides exactly with the center of the center pixel 295. The central pixel 295 is completely covered by the dots, and the top, bottom, left, and right pixels are also well covered by the dots. In case 2, the center of gravity is on the left side of the center of the central pixel 291. The center pixel is still completely covered by the dots, and the pixel 294 to the left of the center is completely covered by the dots. The upper pixel 292 and the lower pixel 293 are still sufficiently covered. In case 3, the center of gravity is below the center of the central pixel 291. The center pixel 291 is still completely covered by the dots 291 and the left pixel in the center is completely covered by the dots. The central left pixel 294 and right pixel 295 are still well covered. In case 4, the center of gravity is at the lower left of the center of the center pixel. The central pixel 291 is still completely covered by the dots 291 and the central left pixel 294 and the central lower pixel 294 are completely covered by the dots.
[0440]
The algorithm for updating the centroid uses the distance from the center of the center pixel 291 to the centroid to select the following three representative pixels and determine the dot value:
First pixel: Pixel including the center of gravity
Second pixel: If the X coordinate (column value) of the center of gravity is <1/2, it is the pixel on the left side of the first pixel, otherwise it is the pixel on the right side of the first pixel.
Third pixel: When the Y coordinate (row value) of the center of gravity is <1/2, it is the upper pixel of the first pixel, otherwise it is the lower pixel of the first pixel.
[0441]
As shown in FIG. 43, the value of each pixel is output to the pre-calculated look-up table 301. The three pixels are fed into a 12-bit look-up table, which outputs a dot value, a single bit indicating on or off. The look-up table 301 is constructed at the time of chip definition and is grouped into about 500 gates. The look-up table may be a simple threshold table, but the central pixel (first pixel) is heavily weighted.
[0442]
Step 3: Update the center of gravity Δs for each row in the column
The idea of Δs processing is to use the previous bit history to generate a complete dot at the predicted centroid position for each row in the current column. The actual pixels (from the CCD) are compared to the predicted perfect pixels. If both match, the actual center of gravity position is accurately included in the predicted position, so the center of gravity Δs is valid and does not need to be updated. Otherwise, it is necessary to carry out a process of updating the centroid Δs in order to best fit the predicted centroid position to the actual data. The new centroid Δs is used to process the dots in the next column.
[0443]
The update of the centroid Δs is performed as a subsequent process from step 2 for the following reasons: because
It reduces design complexity, which allows it to be performed as Phase 1 Step 2 with sufficient bandwidth remaining, allowing the DRAM buffer to be reused.
This is because it is guaranteed that all the data required to update the center of gravity can be used at the start of the process without any special pipeline.
[0444]
The centroid Δ is treated as Δcolumn and Δrow to reduce complexity.
[0445]
A given dot is 3 dots in diameter, but is likely to appear in a 4x4 pixel area. However, the edge of one dot is eventually included in the same pixel as the edge of the next dot. Therefore, in order to update the center of gravity, information other than the information regarding a given single dot is required.
[0446]
In FIG. 44, a single dot 310 from the front row is shown with a given center of gravity 311. In this example, the dot 310 has Δ extending in the range of four pixel rows 312 to 315, and is actually a dot of the previous dot row (coordinates = (Prevcolumn,).
A part of CurrentRow)) is in the current column of dots in the current row. If the dots in the current row and column are white, then only the dot information from the dots in the previous column (the dots in the current column are white) exists, so the pixel column 314 on the far right from the previous dot column is Expected to be a small value. From this, it can be seen that the higher the pixel value in the pixel sequence 315, the more the center of gravity is on the right side. Of course, if the dot on the right side is also black, the center of gravity can be adjusted because information cannot be obtained from the subpixel. The same is true for the left, top and bottom dots in dot coordinates (Prevcolumn, CurrentRow).
[0447]
From this, it can be seen that a maximum of 5 pixel columns and pixel rows are required. The situation can be simplified by considering the row and column centroids Δs separately and treating them as the same problem rotated 90 degrees.
[0448]
First, the case in the horizontal direction will be described. If the predicted pixel does not match the detected pixel, it is necessary to change the column center of gravity Δs. From the bit history, the value of the bit found for the current row of the current dot column, the previous dot string, and the previous dot string can be found. The predicted center of gravity position is also known. By using these two sets of information, it is possible to generate a 20-bit predictive bit pattern if the read is complete. The 20-bit bit pattern represents the predicted Δ value for every 5 pixels in the horizontal dimension. The first nibble represents the rightmost pixel of the leftmost dot. The next three nibbles represent three pixels passing through the center of dot 310 from the previous column, and the last nibble represents the leftmost pixel 317 of the rightmost dot (from the current column).
[0449]
If the predicted centroid is the center of the pixel, the 20-bit pattern is expected to be based on the table below.
[0450]
[Table 47]
Figure 2001523900
The pixels to the left and right of the center dot are 0 or D, respectively, depending on whether the bit is 0 or 1. The central 3 pixels are 000 or DFD, respectively, depending on whether the bit is 0 or 1. These values are based on the physical area occupied by the dots for a given pixel. Depends on the distance from the exact center of the pixel to the center of gravity, it predicts slightly shifted data, which actually affects only the pixels on either side of the center pixel. Since there are 16 possibilities, the distance from the center can be divided by 16 and that amount can be used to shift the predicted pixels.
[0451]
Once the 20-bit five-pixel prediction value is determined, it is compared to the actual pixel read. This is done by subtracting the predicted pixels from the actual pixels read out on a pixel-by-pixel basis, and finally adding the differences together in order to obtain the distance from the predicted Δ value.
[0452]
FIG. 45 is an explanatory diagram of one form that realizes the above algorithm, and includes a lookup table 320 that receives a bit history 322 and a center of gravity decimal component 323 and outputs a corresponding 20-bit number 324, and includes a 20-bit number. The 324 is subtracted 321 from the central pixel input 326 to generate a pixel difference 327.
[0453]
This process is performed once for the left and right shifts of the centroid by the quantity 1 of the Δcolumn with respect to the predicted centroid. The centroid with the smallest difference from the actual pixel is considered the "winner" and the Δcolumn is updated accordingly (preferably "no change"). As a result, the Δcolumn is not changed more than 1 for each dot sequence.
[0454]
This process is repeated for the vertical pixels, resulting in an update of the Δrow.
[0455]
Here, the prospect of parallelization is quite high. Depending on the clock rate selected for the ACP unit 31, these units can be placed in series (so that the three types of Δ tests are done in consecutive clock cycles) or in parallel. Can be placed in, which allows three types of tests to be performed simultaneously. If the clock rate is fast enough, there is no need for parallelization.
[0456]
Bandwidth initialization
It is necessary to read the old Δs of Δs and write them out again. This requires 10% of the bandwidth:
2 * (76 (3150/32) + 2 * 3150) = 27648ns = 10% of bandwidth.
[0457]
When updating Δs, it is necessary to read the bit history of a given column. Each byte contains a bit history of two rows, so it takes 2.5% of the bandwidth:
76 ((3150/32) / 2) 32) + 2 * (3150/2) = 4085ns = 2.5% of bandwidth.
[0458]
In the worst case where pixels drift by 1% rotation, the center of gravity shifts by one column for every 57 pixel rows, but since the dot diameter is 3 pixels, a given pixel row is 181 pixel rows (3 *). It is effective against 57). Since the bytes accommodate two pixels, the number of valid bytes in a cache read is 86 (out of 128 reads) in the worst case. The worst-case timing for the 5th row is therefore 31% bandwidth:
5 * (((9450 / (128 * 2)) * 320) * 128/86) = 88112ns = 31% of the bandwidth.
[0459]
The total bandwidth required to update the centroid Δ is listed in the table below.
[0460]
[Table 48]
Figure 2001523900
Phase 2 memory usage
The 2MB bit image DRAM area is read and written during Phase 2 processing. The 2MB pixel data DRAM area is read.
[0461]
A 0.5 MB scratch DRAM area is used to store row data. That is,
[0462]
[Table 49]
Figure 2001523900
Phase 3-Raw data descrambling and XOR operation
With reference to FIG. 37, the next step in decoding is descrambling the raw data and XORing. A 2MB byte image, such as that obtained from Artcard, is in scrambled and XORed format. This requires descrambling and re-XOR operations to obtain the bit image required for the Reed-Solomon decoder in Phase 4.
[0463]
Referring to FIG. 46, the descrambling process 330 acquires a 2MB scrambled bite image 331 and writes the descrambling 2MB image 332. Since this process cannot be reasonably performed in the same location, two sets of 2MB areas are used. The scrambled data 331 is in symbol block order arranged in a 16x16 array, and symbol block 0 (334) contains all symbol 0s from any codeword in random order. The symbol block 1 includes all symbols 1 from all codewords in random order, and so on. Since there are only 255 symbols, the 256th symbol block is not used at this time.
[0464]
The linear feedback shift register is used to determine the relationship between a position within a symbol block, eg, symbol block 334, and the codeword from which the symbol block is derived, eg, codeword 355. This works as long as the same seed as when the original Artcard image was generated is used. Since the time bottleneck is to wait for the DRAM to be ready to read / write to the non-sequential address, the XOR operation between bytes from other source lines and 0xAA and 0x55 is (in time). There are virtually no restrictions.
[0465]
The timing of the descrambling and XOR operation process is essentially 2MB of random byte read and 2MB of random byte write, i.e.
2 * (2MB * 76ns + 2MB * 2ns) = 327155712ns, that is, about 0.33 seconds. This timing does not assume cache processing.
[0466]
Phase 4-Reed-Solomon Decryption
This phase is a loop that repeats for a copy of the data in the bit image, sending a copy of the data to the Reed-Solomon decoding module until the decryption is successful or there are no more copies to decrypt.
[0467]
The Reed-Solomon decoder used may be a well-programmed VLIW processor or a separate hardwired device such as the LSI logic L64712. Since the L64712 has a throughput of 50 Mbits per second (about 6.25 MB per second), the time is not the memory access time for 2 MB reads and 1 MB writes (500 MB / sec for sequential access). Rather, it is constrained by the speed of the read-solomon decoder. The time required in the worst case is 2 / 6.25 seconds = about 0.32 seconds.
[0468]
Phase 5 Walk Script Execution
The total time required to read Artcard 9 and decode it is about 2.15 seconds. The apparent delay for the user is actually only 0.65 seconds (the sum of Phases 3 and 4). This is because Artcard stops moving after 1.5 seconds.
[0469]
When the Artcard is loaded, the Artvark script is interpreted. Instead of running the script immediately, the script is only run when the "Print" button 13 (FIG. 1) is pressed. The steps taken to execute the script depend heavily on the complexity of the script and must take into account the perceived delay between pressing the print button and the actual print button and the actual print taking place. It doesn't become.
[0470]
Alternative Artcard format
Of course, other artcard formats are also conceivable. The following describes such a new alternative artcard format with a number of suitable features. The following describes an alternative Artcard data format, a mechanism for mapping user data to dots on the alternative Artcard, and a fast alternative Artcard read algorithm for use in resource-deficient embedded systems.
[0471]
Overview of alternative Artcard
Alternate Artcards are used in both embedded and PC applications to provide an easy-to-use interface to large amounts of data or configuration information.
[0472]
The back side of the alternative Artcard has the same appearance regardless of the application (because it stores data), but the front side of the alternative Artcard is application dependent. The surface must be meaningful to the user in relation to the application.
[0473]
Alternative Artcard technology can be independent of print resolution. The idea of storing data as dots on a card means that if more dots can be placed in the same space (by increasing the resolution), then those dots can represent more data. It just does. A preferred embodiment assumes the use of 1600 dpi printing on an 86 mm × 55 mm card as an exemplary Artcard, but with other equivalent layouts, data sizes for other card sizes, and / or. , It is easy to determine other print resolutions. The readout technique remains intact regardless of the print resolution. After considering all decoding and other overheads, the alternative Artcard is capable of storing up to 1 megabyte of data at print resolutions up to 1600 dpi. The alternative Artcard can store several megabytes of data at print resolutions in excess of 1600 dpi. The following two tables summarize the effective data storage capacity of the alternative Artcard for a print resolution.
[0474]
Alternate Artcard format
The data structure on the alternative Artcard is specially designed to assist in data recovery. This section describes the format of the data (back) side of the alternative Artcard.
[0475]
Dot
The dots on the data surface of the alternative Artcard may be monochrome. For example, black dots are printed on a white background with a given desired print resolution. As a result, "black dots" are physically distinguished from "white dots". FIG. 47 shows various examples of enlarged views of black dots and white dots. The monochrome method of black dots on a white background is preferably selected to maximize the dynamic range in a reading environment with a blur effect. Even if the black dots are printed at a particular pitch (eg, 1600 dpi), the dots themselves are slightly enlarged so that when the dots are printed adjacent to each other, adjacent straight lines are created. The dots may actually be merged into one as a result of bleeding, but they are not merged in the exemplary image of FIG. Black knurls will be removed more. The alternative Artcard described in the preferred examples allows for flexible variation in dot size, but for best results, accurate dot size and ink / printing operation for a particular printing technique. Should be investigated in more detail.
[0476]
In the description of this Artcard embodiment, the term dot means a dot (ink, heat, electrophotographic, silver halide, etc.) physically printed on an alternative Artcard. When an alternate Artcard reader scans an alternate Artcard, the dots need to be sampled at least twice the printed resolution to satisfy the Nyquist theorem. The term pixel means a sample value from an alternative Artcard reader device. For example, when a dot of 1600 dpi is scanned at 4800 dpi, there are 3 pixels in each dimension of the dot, that is, 9 pixels per dot. The sampling process will be described later.
[0477]
With reference to FIG. 48, a typical alternative Artcard data plane 1101 is shown. Each alternative Artcard is composed of an "active" region 1102 surrounded by a white border region 1103. White border 1103 does not store data information, but is used to calibrate the white level by an alternative Artcard reader. The active region is an array of data blocks, eg 1104, each data block separated from adjacent data blocks by a gap of 8 white dots, eg 1106. The number of data blocks on the alternative Artcard varies depending on the print resolution. The sequence may be 8x8 on an alternative Artcard of 1600 dpi. Each data block 1104 has a dimension of 627 × 394 dots. When the inter-block gap 1106 is 8 white dots, the active area of the alternative Artcard is 5072 x 3208 dots (8.1 mm x 5.1 mm at 1600 dpi).
[0478]
Data block
With reference to FIG. 49, a single data block 1107 is shown. The active region of the alternate Artcard is composed of an array of data blocks 1107 having the same structure. The structure of each data block is a data area 1108 surrounded by a clock mark 1109, a boundary 1110, and a Target 1111. The data area contains only encoded data, and clock marks, boundaries, and targets are provided specifically to assist in the location detection of the data area and to ensure accurate restoration of data from within the area.
[0479]
The dimension of each data block 1107 is 627 x 934 dots. Among them, the central area of 595 × 384 dots is the data area 1108. Peripheral dots are used to hold clock marks, boundaries, and targets.
[0480]
Boundaries and clock marks
FIG. 50 shows a data block, and FIGS. 51 and 52 show an enlarged edge portion of the data block. As shown in FIGS. 51 and 52, there are two 5-dot height boundaries and clock mark areas 1170 and 1177 in each data block, one above the data area and one below the data area. is there. For example, the top 5 dot height region has an outer black dot border 1112 (which stretches the long side of the data block), a white dot separator 1113 (which guarantees that the border is independent), and a 3 dot height. It is composed of a set of clock marks 1114 and. The clock marks alternate between the white and black rows, starting with the black clock mark in the eighth column from both ends of the black block. There is no separation between the clock mark dots and the dots in the data area.
[0481]
The clock marks are symmetric in that the same relative boundaries / clock mark regions appear when the alternate Artcard is inserted with a 180 degree rotation. Boundaries 1112 and 1113 are intended to be used by alternative Artcards to follow vertically as data is read from the data area. Clock mark 1114 is intended to be traced horizontally as data is read from the data area. Separation of the boundary and the clock mark by the white dot straight line is desirable as a result of the blur effect occurring during reading. The boundary thus becomes a black straight line with white on both sides, which helps improve the frequency response during readout. Alternating clock marks between white and black give similar results, except that they are horizontal rather than vertical. Any alternative Artcard must find the location of clock marks and boundaries if it is intended to be used for tracking. The next section deals with targets designed to indicate clock marks, boundaries and directions to the data.
[0482]
Target in the target area
As shown in FIG. 54, there are two 15 dot wide target regions 1116 and 1117 in each data block. One is on the left side of the data area and the other is on the right side of the data area. The target area is separated from the data area by a row of dots used for orientation. The purpose of target areas 1116 and 1117 is to specify clock marks, boundaries, and how to travel to the data area. Each target region contains 6 targets, eg 1118, which are designed to be easily detected by an alternative Artcard reader. Next, with reference to FIG. 53, the structure of a single Target 1120 is shown. Each Target 1120 is a 15 × 15 dot black square and includes a central structure 1121 and a run length coded target number 1122. The central structure 1121 is a simple white cross, the target number component 1122 is a simple two rows of white dots, each row being two dots long for each portion of the target number. Therefore, the target id 1122 of the target number 1 has a length of 2 dots, and the target id 1122 of the target number 2 has a width of 4 dots, and so on.
[0483]
As shown in FIG. 54, the target is arranged to have rotational immutability with respect to card insertion. That is, the left target and the right target are the same except that they are rotated 180 degrees. In the target area 1116 on the left, the targets are arranged such that Targets 1 to 6 are positioned from the upper end to the lower end, respectively. In the target area on the right, the targets are arranged such that target numbers 1 to 6 are positioned from the bottom to the top. The target number id is always half way up to the data area. The enlarged partial view of FIG. 54 clearly shows how the right target is identical to the left target, except that it is rotated 180 degrees.
[0484]
As shown in FIG. 55, Targets 1124 and 1125 are particularly centered 55 dots apart in the target area. Moreover, the distance from the center of Target1 (1124) to the first clockmark dot 1126 in the upper clockmark region is 55 dots, and the first clockmark dot in the lower clockmark region from the center of the target (not shown). ) Is 55 dots. The first black clock mark in both regions begins exactly at the center of the target (the eighth dot position is the center of the 15 dot wide target).
[0485]
The schematic configuration diagram of FIG. 55 shows the distance between the target centers and the distance from the upper boundary / on-Target1 (1124) in the clock mark area to the first dot of the first black clock mark (1126). ing. The distance from both the top and bottom targets to the clock mark is 55 dots, and because the alternate Artcard is symmetrical on both sides (because it is rotated 180 degrees), the card can be left-to-right or right-to-right. Read to the left. Regardless of the read direction, the orientation does not need to be determined as the data is extracted from the data area.
[0486]
Direction sequence
As shown in FIG. 56, there are two 1-dot width azimuth sequences 1127 and 1128 in each data block. One is just to the left of the data area and the other is just to the right of the data area. The azimuth sequence is provided to provide directional information to the alternative Artcard reader. To the left of the data area (to the right of the left target) is a single white dot sequence 1127 adjacent. To the right of the data area (to the left of the right target) is adjacent a single black dot sequence 1128. Since the target is rotationally invariant, these two dot sequences allow the alternate Artcard reader to determine the direction of the alternate Artcard, i.e., whether the card was inserted correctly or in the opposite direction. From the point of view of the alternative Artcard, assuming that there is no dot deterioration, there are two possibilities: That is:
* If the left column of the data area is white and the right column of the data area is black, the reader recognizes that the card was inserted as if it had been written;
* If the left column of the data area is black and the right column of the data area is white, the reader recognizes that the card is inserted backwards and the data area is rotating accordingly. .. The reader must choose the appropriate behavior to properly restore the information from the alternate Artcard.
[0487]
Data area
As shown in FIG. 57, the data area of the data block is composed of 595 columns, each of which contains 384 dots, for a total of 228480 dots. These dots are interpreted and decoded to obtain the original data. Since each dot represents a single bit, 228480 dots represent 228480 bits, or 28560 bytes. The interpretation of each dot is as follows.
[0488]
[Table 50]
Figure 2001523900
However, the actual interpretation of the bits obtained from the dots requires an understanding of the mapping from the original data to the dots in the data area of the alternative Artcard.
[0489]
Mapping of original data to data area dots
Next, the process of acquiring an original data file having a maximum size of 91802 bytes and mapping it to dots in the data area of 64 data blocks on the 1600 dpi alternative Artcard will be described. The alternate Artcard reader will reverse this process to extract the original data from the dots on the alternate Artcard. At first glance, it seems easy to map the data to dots, that is, the binary data is composed of 1s and 0s, so black and white dots can be easily written to the card. Let's go. However, this method does not allow the ink to fade and a portion of the card to be damaged by debris, dirt, or even scratches. Unless error detection coding is performed, there is no way to detect whether the data obtained from the card is accurate. Moreover, there is no way to correct the detected error without redundant coding. Therefore, the purpose of the mapping process is to make the data recovery very reliable and to give the alternate Artcard reader the ability to recognize that the data has been read correctly.
[0490]
The following three basic steps are involved in mapping the original data file to the data area dots:
* Redundantly encode the original data;
* Deterministically shuffle the encoded data to reduce the effects of locally occurring alternative Artcard damage;
* Write the shuffled coded data as dots to the data block of the alternative Artcard.
[0491]
Each of these steps will be discussed in detail in the sections below.
[0492]
Redundant code using Reed-Solomon coding
The mapping of data to alternative Artcards relies heavily on methods that utilize redundant coding. It is preferable to choose Reed-Solomon coding, which handles burst errors and has the ability to efficiently detect and correct errors with minimal redundancy. Reed-Solomon encoding is available in Wicker,
S. And Bargava, V.I. By'&apos; Reed-Solomon Codes and
There Application'&apos;, IEEE Press, 1994, Rorabugh, C'&apos; Error Coding Cookbook'&apos;, McGraw-Hill,
1994, and Lyppens, H. et al. By'&apos; Reed-Solomon Error Correction'&apos;, De. Dobb's Journal, Volume 22,
It is well described in standard texts such as Issue 1, January 1997.
[0493]
Various parameters for Reed-Solomon encoding can be used, including different symbol sizes and different levels of redundancy. Preferably, the following coding parameters,
* M = 8
* T = 64
Is used.
[0494]
Setting m = 8 means that the symbol size is 8 bits (1 byte). The Reed-Solomon-encoded block size n is 255 bytes (2).8-1 symbol). In order to correct up to t symbols, 2 t symbols must be adopted with redundant symbols in the final block size. Setting t = 64 means that 64 bytes (symbols) can be corrected for each block when there is an error. Each block of 255 bytes has 128 (2 × 64) redundant bytes, and the remaining 127 bytes (k = 127) are used to hold the original data. In this way
* N = 255
* K = 127
Is.
[0495]
In the actual result, 127 bytes of original data are encoded to obtain 255 byte blocks of Reed-Solomon encoded data. The encoded 255-byte block is stored on the alternate Artcard and then returned to the original 127 bytes by decoding of the alternate Artcard reader. 384 dots in a single column of the data area of a data block can hold 48 bytes (384/8). Column 595 can hold 28560 bytes. This reaches 112 Reed-Solomon blocks (each block contains 255 bytes). A complete alternative Artcard's 64 data blocks can hold a total of 7168 Reed-Solomon blocks (182,840 bytes when 255 bytes per Reed-Solomon block). Two of the 7168 Reed-Solomon blocks are reserved for control information, while the remaining 7166 are used to store data. Each Reed-Solomon block holds 127 bytes of actual data, and the total amount of data that can be stored on the alternate Artcard is 91082 bytes (7166 x 27). If the original data is less than this total amount, the data can be encoded to fit the exact number of Reed-Solomon blocks, and then all 7166 encoded blocks are used. Can be duplicated until FIG. 58 is an explanatory diagram of the overall form of coding used.
[0496]
Each of the two control blocks 1132 and 1133 has the same coding information needed to decode the remaining 7166 Reed-Solomon blocks, i.e.
The number of Reed-Solomon blocks in a full message (16-bit storage low / high) and
The number of data bytes in the last Reed-Solomon block of the message (8 bits),
To accommodate.
[0497]
These two numbers are repeated 32 times (consuming 96 bytes), the remaining 31 bytes are reserved and set to 0. Each control block is then read-Solomon coded and 127 bytes of control information are converted into 255 bytes of Reed-Solomon coded data.
[0498]
The control block is stored twice to increase the chances of survival. Moreover, the repetition of the data in the control block is especially important when using Reed-Solomon codes. In a correct Reed-Solomon coded block, the first 127 bytes of data are the original data correctly, and if the control block fails to decode (more than 64 symbols are incorrect), the original. Can be referenced to restore the message. In this way, if the control block fails to decode, a set of 3 bytes can be inspected to determine the most probable values for the two decoding parameters. It is not guaranteed to be recoverable, but redundancy makes it more likely. For example, the last 159 bytes of the control block are destroyed and the first 96 bytes are perfectly okay. Referencing the first 96 bytes, you will find a repeating set of numbers. These numbers can be used successfully to decrypt the rest of the message in the remaining 7166 Reed-Solomon blocks.
[0499]
As an example, assume a data file containing exactly 9967 bytes of data. The number of Reed-Solomon blocks required is 79. The first 78 Reed-Solomon blocks are fully utilized and 9906 bytes (78 x 127) are used. The 79th block contains only 61 bytes of data (the remaining 66 bytes are all 0s).
[0500]
The alternative Artcard consists of 7168 Reed-Solomon blocks. The first two blocks are the control blocks, the next 79 blocks are the encoded data, the next 79 blocks are duplicates of the encoded data, the next 79 blocks are another duplicate of the encoded data, and so on. Continue in the same way. After storing 79 Reed-Solomon blocks 90 times, the remaining 56 Reed-Solomon blocks are another replica of the first 56 blocks of the 79 blocks of coded data (the end of the coded data). Twenty-three blocks of are not remembered anymore because there is not enough space on the alternative Artcard). A 127-byte hexadecimal representation in each control block data before Reed-Solomon encoding is shown in FIG.
[0501]
Scramble processing of coded data
A total of 7168 Reed-Solomons, including up to 1827840 bytes of data (2 control blocks and 7166 information blocks), if all coded blocks are stored adjacently in memory. The coded block) can be stored on the alternative Artcard. Preferably, the data is not stored as-is on the alternate Artcard at this stage, i.e., not all of the 255 bytes of a Reed-Solomon block are physically stored together on the card. .. Debris, dirt, or distortion that causes physical damage to the card can destroy more than 64 bytes in a Reed-Solomon block, and that block cannot be restored. Without a copy of the Reed-Solomon block, the entire alternative Artcard could not be decoded.
[0502]
The solution to this is to take advantage of the fact that there are many bytes on the alternative Artcard and the alternative Artcard has a reasonable physical size. Therefore, the data is scrambled to ensure that the symbols from one Reed-Solomon block do not approach each other. Of course, in anomalous cases where the card deteriorates, it is not possible to restore the Reed-Solomon block, but on average, scrambling the data can make the card very robust. The scramble method selected is simple and is schematically shown in FIG. All of the bytes 0 from the Reed-Solomon block are arranged together (1136), and so are all the bytes 1 and so on. Therefore, there are 7168 bytes 0, 7168 bytes 1 and the like. Each data block on the alternate Artcard can store 28560 bytes. As a result, each of the 64 data blocks on the alternate Artcard will contain about 4 bytes from each Reed-Solomon block.
[0503]
Under this scrambling scheme, complete damage to all 16 data blocks on the alternate Artcard results in 64 symbol errors per Reed-Solomon block. That is, if the alternative Artcard has no other damage, all the data can be completely restored, even if there is no duplication of the data.
[0504]
Write scrambled coded data to alternate Artcard
Once the original data has been Reed-Solomon encoded, duplicated and scrambled, 182,840 bytes of data need to be stored in the alternate Artcard. Each of the 64 data blocks on the alternate Artcard stores 28560 bytes.
[0505]
Since the data is simply written to the alternate Artcard data block, the first data block stores the first 28560 bytes of the scrambled data, the second data block stores the next 28560 bytes, and so on. Continue in the same way.
[0506]
Within the data block, data is written from left to right with respect to the columns, as shown in FIG. Therefore, the leftmost column in the data block stores the first 48 bytes of 28560 bytes of scrambled data, and the last column stores the last 48 bytes of 28560 bytes of scrambled data. To do. Within the column, the bytes start at bit 7 and are written bit by bit at the same time from top to bottom, ending at bit 0. If the bits are set (1), black dots are placed in the alternate Artcard, and if the bits are cleared (0), the dots are not placed and remain in the white background color of the card.
[0507]
For example, a set of 1827840 bytes of data can be created by scrambling 7168 Reed-Solomon coded blocks to be stored in the alternate Artcard. The first 28560 bytes of data are written to the first data block. The first 48 bytes of the first 28560 bytes are written to the first column of the data block, the next 48 bytes are written to the next column, and so on. The first 2 bytes of 28560 bytes are hexadecimal D3
It is assumed that it is on the 5th floor. Bit 7 of byte 0 is stored first, then bit 6 is stored, and so on. Next, bit 7 of byte 1 to bit 0 of byte 1 are stored. Since each "1" is stored as a black dot and each "0" is stored as a white dot, these two bytes are represented as the following set of dots on the alternative Artcard.
* D3 (1101 0011) becomes black, black, white, black, white, white, black, black,
* 5F (0101 1111) is white, black, white, black, black, black, black, black.
[0508]
Decryption of alternative Artcard
This section deals with the process of extracting the original data from the alternative Artcard in an accurate and reliable manner. In particular, a method of extracting the original pre-encoded data from the alternative Artcard will be described on the premise of the alternative Artcard format described in the previous chapter.
[0509]
There are a number of general considerations as part of the premise of decoding an alternative Artcard.
[0510]
User
The purpose of the alternative Artcard is to store data for use in various applications. The user inserts the alternate Artcard into the alternate Artcard reader and expects the data to be loaded within a "reasonable time". From the user's point of view, motor transport moves the alternate Artcard to the alternate Artcard reader. This is not recognized as a problematic delay. Because the alternative Artcard is working. The time after the alternate Artcard is stopped is recognized as a delay and should be reduced to a minimum in the alternate Artcard read method. In an ideal state, the entire alternative Artcard is read during movement so that no delay is recognized after the card has stopped moving.
[0511]
For the purposes of the preferred embodiment, a reasonable time to physically load the alternative Artcard is set to 1.5 seconds. The time for additional decoding after the alternative Artcard has stopped moving should be minimized. Since the active region of the alternative Artcard covers most of the surface of the alternative Artcard, temporal interest can be limited to that region.
[0512]
Dot sampling
The dots on the alternative Artcard must be sampled by a CCD reader or the like at least twice the printed resolution in order to satisfy Nyquist's Theorem. In practice, it is better to sample at a higher rate. In an alternative Artcard reader environment, the dots are preferably sampled at a resolution at which the dots are printed for each dimension, i.e. three times the resolution that requires nine pixels to define a single dot. If the dot resolution of the alternate Artcard is 1600 dpi, the image sensor of the alternate Artcard reader must scan the pixels at 4800 dpi. Of course, if the dots are not accurately aligned with the image sensor, in the worst and most likely cases as shown in FIG. 62, the dots will be detected over a 4x4 pixel area.
[0513]
Each pixel sampled is 1 byte (8 bits). The lower two bits of each pixel may contain significant noise. Therefore, the decoding algorithm is required to have noise immunity.
[0514]
Alignment / Rotation
It is highly unlikely that the user will insert the alternate Artcard into the alternate Artcard reader in a fully aligned state without rotation. Certain physical constraints on the entrance of the reader and the grip of the motor transport ensure that after insertion, the alternate Artcard is kept at the initial angle of insertion with respect to the CCD. Preferably, this rotation angle is at most 1 degree as shown in FIG. There is a possibility that the angle may deviate slightly due to jitter and motor backlash during the readout process, but it is basically considered to be within the limit of 1 degree.
[0515]
The physical dimensions of the alternative Artcard are 86 mm x 55 mm. One rotation affects the required CCD length as it increases the effective height of the card by 1.5 mm (86 sin 1 °) when 86 mm passes under the CCD.
[0516]
The effect of one rotation on the readout of the alternate Artcard is that one scan line from the CCD contains a number of different dot sequences from the alternate Artcard. This is shown in an enlarged form in FIG. 63, which shows the drift of dots with respect to a row of pixels. Although exaggerated in the figure, the actual drift is a maximum of one pixel row for every 57 pixels.
[0517]
When the alternate Artcard is not rotating, a single dot sequence can be read by the three pixel scan lines. As the rotation of the alternative Artcard increases, the local effect increases. As the number of dots read increases, the time affected by rotation increases. Increasing any of these factors increases the number of pixel scan lines that need to be read to obtain a given set of dots from a single row on the alternate Artcard. The table below shows the number of pixel scan lines required for a single dot sequence in a particular alternative Artcard structure.
[0518]
[Table 51]
Figure 2001523900
To read the entire alternative Artcard, it is necessary to read 87 mm (86 mm plus 1 mm with 1 ° rotation). In the case of 4800 dpi, this corresponds to 16252 pixels.
[0519]
Length of CCD (or other linear image sensor)
The length of the CCD itself is
-Physical height of alternative Artcard (55 mm)
-Vertical movement (1 mm) when inserting a physical alternative Artcard
− Rotation during insertion up to 1 ° (86 sin 1 ° = 1.5 mm)
Must conform to.
[0520]
When these factors are combined, the total length is 57.5 mm.
[0521]
When the alternative Artcard image sensor CCD of the alternative Artcard reader scans at 4800 dpi, one scan line is 10866 pixels. For simplicity, this number is rounded up to 11000 pixels. The height of the active region of the alternative Artcard is 3208 dots, or 9624 pixels. The height of the data area is 384 dots, that is, 1152 pixels.
[0522]
DRAM size
Ideally, the amount of memory required to read and decrypt the alternate Artcard is reduced to a minimum. A typical alternative Artcard reader deployment is a built-in system, where memory resources are valuable. This becomes a more serious problem due to the influence of rotation. As described above, as the rotation of the alternative Artcard increases, the number of scanning lines required to efficiently restore the original dots increases.
[0523]
There is a trade-off between algorithmic complexity, user-perceived delay, robustness, and memory usage. One of the simplest reader algorithms would simply scan the entire alternative Artcard and then process all the data without real-time constraints. Not only does this require a large amount of memory, but it will also take longer than the reader algorithm, which runs in parallel with the alternate Artcard read process.
[0524]
The amount of memory actually required for reading and decoding the alternate Artcard is twice the amount of space required to hold the encoded data along with a small amount of scratch space (1 to 2 KB). For an alternative Artcard of 1600 dpi, this means a memory requirement of 4 MB. The actual memory usage is detailed in the algorithm description below.
[0525]
Transfer rate
DRAM bandwidth prerequisites need to be made to take timing into account, and in particular, alternative Artcard readers have some impact on algorithm design, as they are typically part of the built-in system.
[0526]
Rambus Inc's'&apos; Direct Rambus
Standard Rambus as described in Technology Disclosure'&apos;, Oct 1997.
The Direct (Rambus Direct) RDRAM architecture is envisioned and the peak data transfer rate is 1.6 GB / sec. Assuming an efficiency of 75% (easily achieved), an average data transfer rate of 1.2 GB / sec is obtained. Therefore, the average time required to access a 16-byte block is 12 ns.
[0527]
Pollution data
A physically damaged alternative Artcard can be inserted into the reader. The alternative Artcard may be scratched or distorted by dirt or debris. It cannot be assumed that an alternative Artcard reader will read everything completely. The effects of pollution data are exacerbated by the blur effect. This is because the contamination data affects the clean dots around it.
[0528]
Blur effect environment
The blur effect is incorporated into the alternative Artcard reading environment in two ways: * A natural blur effect due to the characteristics of the distance between the alternative Artcard and the CCD;
* Alternative Artcard distortion.
[0529]
The natural blur effect of the alternative Artcard image occurs when there is an overlap of data detected from the CCD. The blur effect can be useful. This is because the blur effect ensures that there are no high frequencies in the detected data and that there is no data lost by the CCD. However, if the area covered by the CCD pixels is very large, a large number of blur effects will appear and the sampling conditions required to restore the data will not be met. FIG. 64 is a schematic explanatory view of the overlap of the detected data.
[0530]
Another form of blur effect occurs when the alternative Artcard is slightly distorted due to thermal damage. When there is distortion in the vertical dimension, the distance between the alternate Artcard and the CCD is not constant and the level of blur effect varies within that area.
[0531]
Black and white dots were selected so that the alternative Artcard would provide the best dynamic range in a blurry readout environment. The blur effect causes problems when determining whether a given dot is black or white.
[0532]
As the blur effect increases, a given dot is more affected by peripheral dots. As a result, the dynamic range of a particular dot is reduced. Consider the case where each of the white and black dots is surrounded by any possible set of dots. The blur effect appears on the 9 dots and the center dot is sampled. FIG. 65 is an explanatory diagram of the distribution of the center dot values obtained for the black dots and the white dots.
[0533]
This figure is intended for a typical blur effect. Curve 1140 from 0 to about 180 indicates the range of black dots. Curve 1141 from 75 to 250 indicates the range of white dots. However, as the blur effect increases, the two curves shift towards the center of the range, increasing the area of intersection, making it more difficult to determine if a given dot is black or white. It will be difficult. The pixel value at the center of intersection is ambiguous, and the possibility that the dots are black is equal to the possibility that they are white.
[0534]
As the blur effect increases, the probability of read bit errors increases. Conveniently, the Reed-Solomon decoding algorithm can successfully handle up to t symbol errors. FIG. 65 is a graph of the predicted number of alternative Artcard Reed-Solomon blocks that cannot be restored in the case of a particular symbol error rate. It should be noted that the Reed-Solomon decoding method shows excellent performance and then is substantially degraded. If there is no copy of the Reed-Solomon block, only one block will have an error and the data cannot be restored. Of course, when block duplication is performed, the chances of alternative Artcard decoding increase.
[0535]
FIG. 66 shows only symbol (byte) errors corresponding to the number of erroneous Reed-Solomon blocks. There is a trade-off between the amount of blur effect that can be dealt with and the amount of damage done to the card. Since all error detection and correction is performed by the Reed-Solomon decoder, the number of errors that can be dealt with for each Reed-Solomon data block is finite. As the number of errors captured by the blur effect increases, the number of errors that can be dealt with due to the damage of the alternative Artcard decreases.
[0536]
Overview of alternative Artcard decryption
As mentioned above, when the user inserts the alternate Artcard into the alternate Artcard reading unit, the motor transport ideally carries the alternate Artcard and passes it by the monochrome linear CCD image sensor. Cards are sampled at a resolution three times the printed resolution for each dimension. The alternative Artcard reading hardware and software compensates for the jitter and vibration caused by up to one rotation, motor transport, and the blur effect caused by variations in the distance from the alternative Artcard to the CCD. A digital bit image of the data is extracted from the sampled image by the complex method described below. Reed-Solomon decoding corrects any distributed data corruption up to 25% of the raw data on the alternate Artcard. About 1 MB of correction data is extracted from the 1600 dpi card.
[0537]
The steps associated with decoding are as shown in FIG.
[0538]
The steps required for the decryption process are
* In step 1144, scanning the alternative Artcard at a resolution three times the printed resolution (for example, scanning the alternative Artcard at 4800 dpi).
* Step 1145 to extract the data bitmap from the dots scanned on the card,
* Step 1146 to invert the bitmap when an alternative Artcard is inserted in the opposite direction,
* Step 1147 to descramble the encoded data,
* Step 1148 to read / solomon decode the data from the bitmap,
Is.
[0539]
Algorithm overview
Phase 1-Real-time Extracting BitImage
A simple comparison of the available memory (4MB) with the memory required to hold all the scanned pixels of the 1600dpi alternative Artcard (172.5MB), unless the card is read multiple times (practical). Extraction of the bitmap from the pixel data (not an option) needs to be performed in real time on the fly while the alternate Artcard is being passed by the CCD. In this phase, there are two tasks:
* Task to scan alternative Artcard at 4800 dpi
* The task of extracting a data bitmap from the dots scanned on the card
Must be executed.
[0540]
Bit image rotation and descrambling cannot be performed until the entire bit image has been extracted. Therefore, it is necessary to allocate a memory area to hold the extracted bit image. Bit images are easily accommodated within the 2MB range, leaving 2MB for use in the extraction process.
[0541]
Instead of extracting the bit image while examining only the current scan line from the CCD, it is possible to allocate a buffer that functions as a window to the alternative Artcard and store the latest N scan line reads. The memory requirement does not allow the entire alternative Artcard to be stored in this way (172.5MB would be required), but allocating 2MB to store the 190 pixel sequence (each scan). The line does not require more than 11000 bytes), which simplifies the ExtractingBitImage process.
[0542]
Therefore, the usage of 4MB memory is as follows:
* 2MB for extracted bit images;
* ~ 2MB for scanned pixels;
* 1.5KB for Phase 1 scratch data (depending on algorithmic requirements).
[0543]
The time required for Phase 1 is 1.5 seconds. This is because this time is the time it takes for the alternate Artcard to pass by the CCD and be physically loaded.
[0544]
Phase 2-Extracting data from bit images
Once the bit image is extracted, the bit image is descrambled and may need to be rotated 180 °. The bit image is then decrypted. Phase 2 has no real-time requirements in that the Artcard has stopped moving, and the only problem is that the user recognizes the passage of time. Therefore, Phase 2 involves the remaining task of decrypting the alternate Artcard. That is,
* Reorganize the bit image and invert it if the alternate Artcard is inserted in the opposite direction;
* Descramble the encoded data;
* Reed-Solomon decoding of data from bit images.
[0545]
The input to Phase 2 is a 2MB bit image buffer. A second 2MB buffer is required as descrambling and rotation cannot be performed on the fly. Since the 2MB buffer used to hold the pixels scanned in Phase 1 is no longer needed, it can be used to store rotated unscrambled data.
[0546]
The Reed-Solomon decoding task takes an unscrambled bit image and decodes it into 918022 bytes. Decryption can be performed in its original location, but it may be performed in another designated location. The decryption process does not require an auxiliary memory buffer.
[0547]
Therefore, the usage of 4MB of memory is as follows:
* 2MB for extracted bit images (from Phase 1);
* ~ 2MB for potentially rotated bit images without scrambling;
* <1KB for phase 2 scratch data (depending on algorithmic requirements).
[0548]
The time required for Phase 2 is hardware dependent and is limited by the time required for Reed-Solomon decoding. It is estimated that Phase 2 will take 0.32 seconds by using a dedicated core such as LSI Logic's L64712, or an equivalent CPU / DSP combination.
[0549]
Phase 1-ExtractingBitImage
This is the real-time phase of the algorithm and is related to extracting bit images from alternative Artcards such as those scanned by a CCD.
[0550]
As shown in FIG. 68, Phase 1 can be decomposed into two asynchronous process streams. The first stream of them simply reads the pixels of the alternative Artcard from the CCD in real time and writes the pixels to the DRAM. The second stream refers to the pixels and extracts the bits. The second process stream itself is broken down into two processes. The first process is a global process relating to the location of the start of the alternative Artcard. The second phase is unique to ExtractingBitImage.
[0551]
FIG. 69 is an explanatory diagram of the data flow from the viewpoint of data / process.
[0552]
timing
It is necessary to read a maximum of 16252 pixel strings for the entire 1600 dpi alternative Artcard. If the total time for the entire alternative Artcard is 1.5 seconds, this means that the maximum time per pixel string is 92296ns during the course of various processes.
[0553]
Process 1-Pixel readout from CCD
The CCD scans the alternative Artcard at 4800 dpi to generate 11000 1-byte pixels per row. This process only takes the data from the CCD and writes it to the DRAM, and is completely independent of other processes that read the pixel data from the DRAM. FIG. 70 shows the relevant steps.
[0554]
Pixels are continuously written to a 2MB buffer that can hold the entire 190 pixel sequence. The buffer always holds the most recently read 190 columns. As a result, the process attempting to read the pixel data (eg, process 2 and process 3) first needs to know where a given column looks, and then the requested data is actually It must be fast enough to ensure that it is in the buffer.
[0555]
Since process 1 makes the current CurrentScanLine available to other processes, it can be ensured that other processes will not attempt to access pixels from scan lines that have not yet been read.
[0556]
The time required to write a single data string (11000 bytes) to DRAM is 11000/16 * 12 = 8256ns.
[0557]
Process 1 therefore uses less than 9% of the available DRAM bandwidth (8256/92296).
[0558]
Process 2-Start detection of alternative Artcard
This process is associated with the location of the active area on the scanned alternative Artcard. The input to this stage is pixel data from DRAM (accommodated there by process 1). The output is a set of boundaries for the first eight data blocks on the alternate Artcard and is required as input to process 3. An overview of the higher levels of Process 3 is shown in FIG.
[0559]
The alternative Artcard has 1 mm of vertical movement when inserted. One rotation causes an additional 1.5 mm (86 sin 1 °) vertical movement. As a result, the total vertical movement is 2.5 mm. At 1600 dpi, this corresponds to a movement of about 160 dots. Since the height of a single data block is only 394 dots, this movement is a little less than half of the data block. In order to better estimate where the data block resides, the alternative Artcard itself must be detected.
[0560]
Therefore, process 2
* The part that detects the start of the alternative Artcard, and if it is detected,
* The part that calculates the boundaries of the first 8 data blocks based on the start of the alternative Artcard, and
including.
[0561]
Alternate Artcard start position detection
Pixels scanned outside the alternative Artcard area are black (the surface may be black plastic or other non-reflective surface). The boundaries of the alternative Artcard area are white. If the pixel sequences are processed row by row and the pixels are filtered for either black or white, the black-to-white change point characterizes the start on the alternative Artcard. The highest level process is:
Figure 2001523900
The ProcessColumn function is simple. Pixels from the two areas of the scanned column are passed through a threshold filter to determine whether they are black or white. It is possible to wait for a certain number of white pixels and notify the start of an alternative Artcard when a predetermined number is detected. The logic for processing the pixel sequence is shown in the pseudo code below. If no alternative Artcard is found in the column, 0 is returned. Otherwise, the number of pixels at the detected position is returned:
Figure 2001523900
Data block boundary calculation
At this stage, an alternative Artcard has been detected. Depending on the rotation of the alternative Artcard, either the upper part of the alternative Artcard or the lower part of the alternative Artcard is detected. The second step of process 2 determines which was detected and appropriately sets the data block boundaries for phase 3.
[0562]
Looking at Phase 3, it can be seen that Phase 3 operates on data block segment boundaries. Each data block includes a Start Pixel and an End Pixel to determine where to search for a target to locate the data area of the data block.
[0563]
If the pixel value is in the upper half of the card, it can be used as is as the first Start Pixel boundary. If the pixel value is in the lower half of the card, it can be reversed so that the pixel value is at the End Pixel boundary of the last segment. Move forward or backward across the data size range of the alternate Artcard and set the appropriate boundaries for each segment. This prepares you to start extracting data from the alternate Artcard:
Figure 2001523900
The MaxPixel value is defined in process 3, and the SetBounds function only sets StartPixel and EndPixel clipping for 0 and MaxPixel.
[0564]
Process 3-Bit data extraction from pixels
This is the heart of the alternative Artcard reader algorithm. This process involves bit data extraction processing from CCD pixel data. This process essentially creates a bit image from the pixel data based on the scratch information created by process 2 and maintained by process 3. A high-level overview of this process is shown in Figure 72.
[0565]
Rather than simply reading out the pixel sequence of the alternative Artcard to determine which pixel belongs to which data block, Process 3 has the opposite effect. Process 3 knows where to search for pixels in a given data block. To do this, process 3 divides the logical alternative Artcard into eight segments. Each segment contains eight data blocks as shown in FIG. 73.
[0566]
The segment shown is consistent with a logical alternative Artcard. Physically, the alternative Artcard is likely to have been rotated by a certain amount. The segments remain fixed to the logical alternative Artcard structure and are therefore rotation independent. A segment can be in one of two states:
* LookingForTaregets: In this state, the exact data block position for this segment has not yet been determined. The target is located by scanning the pixel sequence data within the boundaries specified by the segment boundaries. When the data block is located with the target and the boundaries set for black and white, the state changes to ExtractingBitImage;
* ExtractingBitImage: In this state, the position of the data block is accurately detected, and the data bits are simultaneously extracted one dot string at a time and written to the alternative Artcard bit image. Data block clock mark tracking provides accurate dot restoration regardless of rotation, so segment boundaries are ignored. When the entire data block is extracted, a new segment boundary is calculated for the next data block based on the current position. The state changes to Looking For Targets.
[0567]
This process ends when all eight 64 data blocks have been extracted from each region.
[0568]
Each data block is composed of 595 data strings, each data string being 48 bytes. Preferably, the two azimuth sequences for the data blocks are each extracted every 48 bytes, for a total of 28656 bytes per data block. For simplicity, 2MB of memory can be divided into 64x32K chunks. The nth data block of a given segment is
SrartBuffer + (256k * n)
It is stored in the location represented by.
[0569]
Segment data structure
Each of the eight segments has a data structure associated with it. The data structure that defines each segment is stored in the scratch data area. Its structure can be listed in the table below.
[0570]
[Table 52]
Figure 2001523900
Higher level of process 3
Process 3 only iterates over each segment to perform a single line of processing depending on the current state of the segment. The pseudocode is concise as follows:
Figure 2001523900
The process 3 needs to be stopped by the external control process if it does not end after the specified time has elapsed. This will only be the case if the data could not be extracted. A simple mechanism is that process 1 starts the countdown after finishing reading the alternative Artcard. If process 3 is not completed by that time, the data from the alternate Artcard is unrecoverable.
[0571]
CurrentState = LookingForTargets
The target is detected by simultaneously reading a row of pixels one pixel at a time, and by detecting dots in a band of predetermined pixels (between StartPixel and EndPixel), some pattern of pixels. Is not detected. Pixel sequences are processed one column at a time at the same time until all targets are detected or a specified number of columns are processed. At that point, the target can be processed and the data is positioned using the clock mark. The state is changed to ExtractingBitImage to indicate that it is time to extract the data. If a sufficient number of valid targets cannot be located, the data block is ignored, ensuring that the columns in the failed data block are skipped and the process of searching for targets in the next data block is restarted. This can be represented by the following pseudo code:
Figure 2001523900
ProcessPixelColumn function
Each pixel sequence is processed within a specified boundary (between StartPixel and EndPixel) to search for a pattern of certain pixels that identify the target. The structure of the single target (target number 2) is as already shown in FIG.
[0572]
From a pixel point of view, the target can be identified by:
* Left black area: This is a large number of pixel sequences composed of many adjacent black pixels, which constructs the first part of the target;
* Target center: This is the white area in the center of the additional black column;
* Target number: This is a white area surrounded by black, and the white area defines the target number by its length;
* Third black area: This is the two black dot areas after the target number.
[0573]
An overview of the required process is shown in Figure 74.
[0574]
Since the identification is based only on black or white pixels, the pixels 1150 from each row are filtered 1151 to detect black or white and then run length encoded 1152. The run lengths are then sent to the state machine 1153, which acquires the last three run lengths and the fourth to last color. Based on these values, the candidate target passes through each of the identification stages.
[0575]
The maximum and minimum collection process GatherMin & Max1155 only retains the minimum and maximum values found during the processing of the segment. These are used to set the BlackMax, WhiteMin, and MidRange values when the target is positioned.
[0576]
Each segment holds a set of target structures in the search for the target. The target structures themselves do not move around in memory, but some segment variables point to a list of pointers to these target structures. The list of these three pointers is shown again.
[0577]
[Table 53]
Figure 2001523900
There are counters associated with each of these list pointers: TargetsFound, PossibleTargetCount, and AvailableTargetCount.
[0578]
TargetsFound and PossibleTargetCount are set to 0 and AvailableTargetCount is 28 (the minimum size of the target boundary is 40 pixels and the data area is about 1152 pixels, so the target structure candidate under investigation is being investigated before the alternate Artcard is loaded. Is set to the maximum number of). An example of the target pointer layout is shown in FIG.
[0579]
When new target candidates are detected, they are retrieved from the AvailableTargets list 1157, the target data structure is updated, and a pointer to this structure is added to the PossibleTargets list 1158. When a target is fully validated, it is added to the Located Targets list 1159. If the candidate target is finally found not to be the target, the candidate target is returned to the Available Targets list 1157. As a result, there are always 28 target pointers in circulation, moving between the lists.
[0580]
The target data structure 1160 may take the form:
[0581]
[Table 54]
Figure 2001523900
The ProcessPixelColumn function in the target detection module 1162 (FIG. 74) examines all run lengths one at a time and compares the run with existing target candidates (by StartPixel), or a previously unknown target candidate. If detected, create a new target candidate. In all cases, the comparison is made only if S0.color is white and S1.color is black.
[0582]
Next, the pseudo code of ProcessPixelColumn is shown. If the first target is positively identified, the last column to check the target is determined to be within the maximum distance from it. With a 1 ° rotation, the maximum distance is a sequence of 18 pixels:
Figure 2001523900
Figure 2001523900
AddToTarget is a function within the target detection module that determines if a particular run can be added to a given target:
* If the run falls within the tolerance of the target's starting position, the run is directly associated with the current target and can be applied to it;
* If the run starts in front of the target, assume that the existing target is still OK and has nothing to do with that run. Therefore, the target is left as is, and the return value FALSE notifies the caller that the run has not been applied. The caller then checks the run to see if it starts its own brand new target;
* If the run starts after the target, it is considered that the target is no longer a candidate target. The state is changed to NotATarget and the return value TRUE is returned;
If a run should be applied to the target, a special action will be taken based on the current state and the set of runs for S1, S2 and S3. The pseudo code for AddToTarget is as follows:
Figure 2001523900
The pixel run type is identified in the Determin Run Type as follows.
[0583]
[Table 55]
Figure 2001523900
The state estimation procedure EvaluateState operates depending on the current state and run type.
[0584]
Its operation is shown in tabular form below.
[0585]
[Table 56]
Figure 2001523900
Target processing
Positioned targets (in the ListedTargets list) are stored in the order in which they were located. Depending on the rotation of the alternative Artcard, these targets are in pixel ascending or pixel descending order. Moreover, the target number restored from the target may be incorrect. You may also have restored the wrong target. Before the clock mark estimator can be obtained, the target must be processed to ensure that the invalid target is discarded, and the valid target will be repaired if the target number is incorrect (eg, for garbage). Corrupted target number). Two major steps are related:
* Step to sort targets in pixel ascending order;
* Steps to find and repair incorrect target numbers.
[0586]
The first step is simple. The nature of the target search means that the data should always be stored in either pixel ascending or pixel descending order. A simple swap sort will make up to 14 comparisons without swap if the 6 targets are already sorted correctly. If the data is not sorted, 14 comparisons are made with 3 3 swaps. The following pseudo code shows the sorting process:
Figure 2001523900
Positioning and repairing the wrong target number is a bit more complicated. In turn, it is assumed that each of the detected N targets is correct. Other targets are compared to this "correct" target and count the number of targets that need to be changed if TargetN is correct. If the number of changes is 0, then all targets should already be correct. Otherwise, the target with the least number of changes requested to other targets will be used as the basis for changes. Changes are registered if the target numbers and pixel positions of a given target are not interrelated when compared to the "correct" target pixel positions and target numbers. This change means updating the target number of the target or deleting the target. It can be assumed that the ascending target has pixels in ascending order (because it is already sorted):
Figure 2001523900
Often this function is bestChanges
It ends with = 0, which means no changes are requested. If not, the changes need to be applied. The ability to apply changes is the same as counting changes (in the pseudocode above) up to comparison with targetNumber. The modified application is:
Figure 2001523900
At the end of the change loop, you need to make the LocatedTargets list compact and remove all null targets.
[0587]
At the end of this procedure, there may be several targets. All remaining targets (requiring at least two targets) are used to detect the location of clock marks and data regions.
[0588]
As shown in FIG. 55, the first clock mark dot 1126 in the upper region is 55 dots away from the center of the first Target 1124 (this is the same as the distance between the target centers). The center of the clock mark dot is further separated by 1 dot, and the black boundary line 1123 is further separated by 4 dots from the first clock mark dot. The first clock mark dot in the lower region is exactly 7 target distances (7 x 55 dots) away from the first clock mark dot 1126 in the upper region.
[0589]
Since it cannot be assumed that Targets 1 and 6 have been found, it is necessary to use the top and bottom targets, and the target number is used to determine which target is being used. At this point at least two targets are needed. Moreover, the target center is only an estimate of the actual target center. It is to locate the target center more accurately. The center of the target is white surrounded by black. Therefore, it is desirable to find maximums in both pixel and column dimensions. This requires reconstructing a continuous image. This is because there is little possibility that the maximum value will be exactly matched to the integer boundary (estimated value in this example).
[0590]
Before building a contiguous image around the center of the target, it is necessary to make better estimates of the two target centers. The existing target center is, in practice, the upper left coordinate of the target center boundary box. Examining each pixel one by one to find the area that defines the center of the target and finding the pixel with the highest value is a simple process. There may be two or more pixels having the same maximum pixel value, but one pixel is sufficient for estimating the center value.
[0591]
Pseudocode is simple and runs against each of the two targets:
Figure 2001523900
At the end of this process, the target center coordinates indicate the whitest pixel of the target that should fit within the range of one pixel in the actual center. The process of constructing a more accurate position of the target center involves reconstructing the continuous signal of the seven scan line slices of the target, three on each side of the estimated target center. The seven maximum values detected (one for each of the above pixel slices) are used to reconstruct the continuous signal in the column dimension and then to detect the position of the maximum value in that dimension. :
Figure 2001523900
FindMax is a function that reconstructs a sample point based on the original one-dimensional signal and returns the position of the maximum value and the detected maximum value. The signal reconstruction / resampling method used is the Lanczos3 window sinc function, as shown in FIG.
[0592]
The Lancoz3 window sinc function is collected around the estimated position X from the reconstructed dimension, i.e. 7 (pixels) at X-3, X-2, X-1, X, X + 1, X + 2, X + 3. Get a sample. Between X-1 and X + 1, points are reconstructed at intervals of 0.1 to determine the maximum point. The position with the maximum value becomes the new center. Due to the nature of the kernel, the convolution kernel requires only 6 entries for points between X and X + 1. Use 6 points for X-1 to X, use 6 points for X to X + 1, and need 7 points overall to get pixel values between X-1 and X + 1. Is. This is because some of the requested pixels match.
[0593]
Given accurate estimates from the topmost target to the bottommost target, the position of the first clock mark dot with respect to the upper and lower regions can be calculated as follows: :
Figure 2001523900
As a result, the first clock mark dot is obtained. Since the column position reaches the center of the clock mark, it is necessary to move it one dot further away from the data area. Further, since the pixel position reaches the center of the boundary line, it is necessary to further move it by 4 dots. The pseudocode values for deltaColumn and deltaPixel are based on the distance of 55 dots (distance between targets), so these deltas are by 1/55 and 4/55, respectively, before being applied to the clockmark coordinates. Must be reduced. This is expressed as:
kDeltaDotFactor =
1 / DOTS_BETWEEN_TARGET_CENTRES
deltaColumn * = kDeltaDotFactor
deltaPixel * = 4 * kDelteDotFactor
UpperClock.pixel-= deltaPixel
UpperClock.column-= deltaColumn
LowerClock.pixel + = deltaPixel
LowerClock.column + = deltaColumn
The Upper Clock and Lower Clock are effective clock mark estimates for the first clock mark that exactly coincides with the center of the target.
[0594]
Black and white pixel / dot range settings
Before extracting the data from the data area, it is necessary to check the pixel range of the black and white dots. The minimum and maximum values that appear in LookingForTaregets are stored in WhiteMin and BlackMax, respectively, but they do not represent valid values for these variables for data extraction. They are only used for the convenience of memory. The following pseudocode shows how to get good values for WhiteMin and BlackMax based on the smallest and largest pixels that appear:
MinPixel = WhiteMin
MaxPixel = BlackMax
MidRange = (MinPixel + MaxPixel) / 2
WhiteMin = MaxPixel --105
BlackMax = MinPixel + 84
CurrentState = ExtractingBitImage
The ExtractingBitImage state is a state in which the data block has already been accurately positioned by the target, and the bit data is being extracted for each dot string at the same time and written to the alternative Artcard bit image. Data block clock mark / boundary tracking provides accurate dot restoration regardless of rotation and ignores segment boundaries. Once the entire data block (595 columns of 595 data and 2 azimuth columns combined, 597 columns of 48 bytes each) is extracted, a new segment boundary is calculated for the next data block based on the current position. To. This state changes to the LookingForTargets state.
[0595]
Processing a given dot sequence requires two tasks:
* The first task is to detect the position of a dot string of specific data using a clock mark;
* The second task is to track the dot sequence and collect bit values one bit per dot.
[0596]
These two tasks can only be performed if the column data has been read from the alternate Artcard and transferred to the DRAM. This is determined by checking which scan line the process 1 has reached and comparing it with the clock mark sequence. When the dot data is present in the DRAM, it is possible to update the clock mark and extract the data from the column before advancing the clock mark to the estimated value for the next dot string. An overview of this process is given in the pseudo code below. Specific functions will be described later:
Figure 2001523900
Dot row position detection
The predetermined dot sequence must be position-detected before reading the dots and extracting the data. This is achieved by tracking clock marks / boundaries along the upper and lower boundaries of the data block. Software equivalent to a phase-locked loop is used to ensure a good estimation of the clock mark position, even if the clock mark is corrupted. FIG. 77 is an explanatory view of the upper left of the exemplary data block, in which a clock mark 1166 having a height of 3 dots extending outside the target area, a white line, and a black boundary line are formed at the corners of the data block. It has been revealed.
[0597]
Initially, an estimate of the position of the first black clock mark is provided (based on the target position). Black boundaries are used to obtain accurate vertical positions (pixels), and clock marks 1166 are used, for example, to obtain accurate horizontal positions (columns). These are reflected in the positions of Upper Clock and Lower Clock.
[0598]
By acquiring the clock mark estimate and examining the pixels in the vicinity, the continuous signal is reconstructed and the exact center is determined. This is a simple one-dimensional process and needs to be run twice, as it decomposes the two dimensions into clock marks and boundaries. However, this is done only once for the 2-dot sequence when there is a black clock mark on the other side of the alignment. For white clock marks, simply use the estimate and leave the estimate as is. Alternatively, the pixel coordinates may be updated based on the boundary for each dot sequence (because it is always present). In practice, it is sufficient to update both coordinates every other column (including the black clock mark). This is because the resolution during this operation is very fine. So the process looks like this:
Figure 2001523900
If there is a deviation above a given tolerance (MAX_CLOCKMARK_DEVIATION), the detected signal is ignored and only deviations within the maximum tolerance from the estimate are allowed. In this respect, this feature is similar to that of a phase-locked loop. Therefore, the DetermineAccurateUpperDotCenter function is implemented by the following pseudo code:
Figure 2001523900
The DetermineAccurateLowerDotCenter function is the same except that the direction from the boundary to the clock mark is in the negative direction (-3 dots instead of +3 dots).
[0599]
GetAccuratePixel and GetAccurateColumn are functions that determine the exact dot center from a one-dimensional point of view, given the coordinates. Determining the exact dot center is the process of reconstructing the signal and finding the position where the minimum signal value was detected (this is because the target center is white instead of black, so the position of the maximum value of the signal is determined. It is different from the process of detecting the position of the center of the target by detecting it). The method chosen for signal reconstruction / resampling in this application is the Lanczos3 window sinc function as described with reference to FIG.
[0600]
Clock marks or boundaries may have been damaged in some way, perhaps by scratching. If the difference between the new center value obtained by resampling and the estimated value exceeds the tolerance, the center value is moved by the maximum tolerance. If it is an invalid position, it should be close enough to be used for data recovery and additional clock marks will be repositioned to that position.
[0601]
Determining the delta to the center of the first data dot and subsequent dots
Once the exact Upper Clock and Lower Clock positions have been determined, the center of the first data dot (CurrentDot) and the amount of delta to be added to that center position to advance to subsequent dots in the column (DataDelta) are calculated. can do.
[0602]
The first thing to do is to calculate the delta of the dot sequence. This is achieved by simply subtracting the Upper Clock from the Lower Clock and dividing by the number of dots between the two points. In reality, it is possible to multiply the reciprocal of the number of dots. This is because the number of dots is constant with respect to the alternative Artcard, and multiplication is faster. It is possible to use different constants to obtain pixel-dimensional deltas and column-dimensional deltas. The pixel delta is the distance between the two boundaries, and the column delta is between the centers of the two clock marks. In this way, the function DeternineDataInfo consists of two parts. The first part is represented by the following pseudocode:
kDeltaColumnFactor =
1 / (DOTS_PER_DATA_COLUMN + 2 + 2-1)
kDeltaPixelFactor =
1 / (DOTS_PER_DATA_COLUMN + 5 + 5-1)
delta = LowerClock.column-
UpperClock.column
DataDelta.column = delta *
kDeltaColumnFactor
delta = LowerClock.pixel --UpperClock.pixel
DataDelta.pixel = delta * kDeltaPixelFactor
It is then possible to determine the center of the first data in the column. The distance from the center of the clock mark to the center of the first data dot is 2 dots, and the distance from the center of the boundary to the center of the first data dot is 5 dots. The second part of this function is represented by the following pseudocode:
CurrentDot.column = UpperClock.column +
(2 * DataDelta.column)
CurrentDot.pixel = UpperClock.pixel +
(5 * DataDelta.pixel)
Dot sequence tracking
Since the dot sequence was found in a phase-locked loop that follows the clock mark, all that remains is to sample the dot sequence down the sequence and at the center of each dot. The variable CurrentDot point is determined at the center of the first dot in the current column. To move to the next dot in the column, you only need to add the DataDelta (two additions: one for column coordinates and one for pixel coordinates). Dot sampling (bilinear interpolation) at predetermined coordinates is performed, and the pixel value representing the center of the dot is determined. The pixel value is then used to determine the bit value of that dot. However, in order to perform better bit determination, it is possible to use the pixel value in relation to the center value for two peripheral dots on the same dot line.
[0603]
It may be assumed that all pixels for the dots in the extracted dot sequence are loaded into the DRAM at this point. This is because if both ends of the line (clock marks) are present in the DRAM, then the dots between these two clock marks are definitely present in the DRAM. Moreover, the data block height is low enough (only 384 dots high) to ensure that only a delta is sufficient to exceed the overall length of the line. One of the reasons the card is divided into eight data block heights is that it is not possible to provide the same rigorous guarantees that can be made for a single data block over the entire height of the card. Is.
[0604]
The high-level process that extracts a single line of data (48 bytes) is represented by the following pseudo code. The data buffer pointer is incremented as each byte is saved, ensuring that consecutive bytes and columns of data are saved continuously:
Figure 2001523900
The GetPixel function acquires dot coordinates (fixed point) and samples four CCD pixels to reach the center pixel value by bilinear interpolation.
[0605]
The DetermineCenterDot function acquires the pixel values that represent the dot centers on both sides of the dot for which the bit value has been determined, and attempts to intelligently estimate the bit value of the center dot. From the generalized blur effect curve of FIG. 64, the following three general cases can be considered: * Since the center pixel value of the dot is smaller than WhiteMin, it is definitely a black dot. Therefore, the bit value is always 1;
* Since the center value of the dot is larger than BlackMax, it is definitely a white dot. Therefore, the bit value is always 0;
* The center value of the dot is somewhere between BlackMax and WhiteMin. The dots may be black or white. Therefore, the value of this bit matters. Many methods have been considered to reasonably estimate the bit value. These schemes balance complexity against accuracy and, in some cases, consider that there is no guaranteed solution. In the case of making an erroneous bit determination, an error occurs in the Reed-Solomon symbol of the bit, and it must be corrected in the Reed-Solomon decoding stage of Phase 2.
[0606]
The method used to determine the dot value when the pixel value falls between BlackMax and WhiteMin is less complicated but gives excellent results. This method uses the pixel values at the center of the dots to the left and right of the pair of dots to determine the more plausible value of the center dot. That is,
* If the two dots on both sides are on the white side of the Mid Range (average dot value) and the center dot is white, it can be presumed to be "certainly" white. The presence of the central dot in an uncertain region indicates that the dot is black and has been influenced by the surrounding white dots to make its value more uncertain. Therefore, its bit value is 1 because its dot value is considered to be black;
* If the two dots on both sides are on the black side of the MidRange and the center dot is black, it can be presumed to be "certainly" black. The presence of the central dot in an uncertain region indicates that the dot is white and has been influenced by the surrounding black dots to make its value more uncertain. Therefore, the dot value is considered to be white, so its bit value is 0;
* If one dot is on the black side of the MidRange and the other dot is on the white side of the MidRange, the center dot value is used as it is to determine. If the center dot is on the black side of the Mid Range, select black (bit value 1). Otherwise, white (bit value 0) is selected.
[0607]
This logic is expressed as:
Figure 2001523900
From this, it is recognized that the use of peripheral pixel values can provide an excellent indicator of the state of the center dot. The method described here uses only dots from the same row, but the use of a single dot line history (previous dot line) would obviously be an alternative configuration.
[0608]
Clock mark update for next column
Once the center of the first data dot in a column is determined, the clock mark value is no longer needed. It is convenient to update them in preparation for the next column after the data for that column has been acquired. The orientation of the clock marks is perpendicular to the tracking direction of the dots descending along the row of dots, so use the pixel delta to update the column and the column delta to update the pixels of both clocks. Is possible:
UpperClock.column + = DataDelta.pixel
LowerClock.column + = DataDelta.pixel
UpperClock.pixel-= DataDelta.column
LowerClock.pixel-= DataDelta.column
At this point, an estimate of the next dot sequence is obtained.
[0609]
timing
The timing requirement is met as long as the DRAM utilization does not exceed 100%, and the timing is increased by the addition of the parallel algorithm, but the DRAM utilization does not exceed 100%. The DRAM utilization is specified for process 1, which continuously writes each pixel once and consumes 9% of the DRAM bandwidth.
[0610]
The timing as described in this section is such that DRAM is an alternative Artcard Lee.
It is shown that the requirements of the Dar algorithm can be easily dealt with. Therefore, the timing bottleneck will be the implementation of algorithms related to logic speed, not DRAM access. However, the algorithm is designed with architectural simplicity in mind and requires a minimum number of logical operations per memory cycle. In this regard, the target speed will be achieved as long as the implemented state machine or equivalent CPU / DSP architecture is feasible as described in the subsection below.
[0611]
Target position detection
The position of the target is detected by reading out the pixels within the boundary of the pixel array. At most one pixel is read out. Considering the case where the run-length encoder operates at a sufficiently high speed, the limit of target position detection is memory access. Therefore, access will not be worse than the timing of process 1, i.e. 9% utilization of DRAM bandwidth.
[0612]
Therefore, the total utilization of the DRAM (including process 1) during target position detection is 18%, and the target locator is always following the image sensor pixel reader of the alternative Artcard.
[0613]
Target processing
The timing to sort and check the target numbers is trivial. Finding a better estimate of each of the two target centers requires 12 sets of 12 pixel reads, i.e. a total of 144 reads. However, accurate target-centric repair is not trivial and requires two sets of estimates. Eight sets of 20 types of 6-entry convolution kernels are required for each target-centered adjustment. In this way, the sum reaches 8 × 20 × 6 times multiplication-accumulation = 960. Moreover, 49 memory accesses are required to acquire 7 sets of 7 pixels. Therefore, the total number per target is 144 + 960 + 49 = 1153, which is almost the same as the number of pixels (1152) in the pixel row. In this way, each target estimation consumes the time required to process one row of pixels. When there are two targets, the time required for two rows of pixels is substantially consumed.
[0614]
The target is reliably identified after the target number on the first pixel sequence. Since there are two rows of dots in front of the azimuth row, there are six rows of pixels. The target position detection process runs out of the first pixel sequence, but the remaining five pixels are not processed at all. Therefore, the data area can be located within 2/5 of the available time without affecting other process times.
[0615]
The remaining three-fifths of the available time is sufficient for trivial tasks that allocate a range of white and black pixels, one task using at most two to three machine cycles.
[0616]
Data extraction
There are two parts to consider regarding timing:
* Obtaining accurate clock marks and boundary values;
* Extract the dot value.
[0617]
Clock marks and boundary values are collected only every other dot string. However, every time the clock mark estimate is updated for more accuracy, 20 different 6-entry convolution kernels must be evaluated. On average, there are two of them per dot row (4 for every 2 dot row). Only 7 pixels from the same pixel scan line are needed to update the pixel coordinates based on the boundaries. However, in order to update the column coordinates, different columns, i.e. 7 pixels from different scan lines, are required. Assuming the worst case situation where one cache miss occurs for each scan line entry and two cache misses occur for pixels in the same scan line, a total of eight cache misses occur.
[0618]
To extract the dot information, only 4 pixels (rather than the average of 9 that define the dots) are read for each dot. Assuming a data area of 1152 pixels (384 dots), at best, this saves 72 cache reads by reading 4 pixel dots instead of 9 pixel dots. The worst case is a 1 ° rotation that moves only one row every 57 pixels, but only slightly worsens the degree of savings.
[0619]
In the worst case, the number of cache lines to be read will be less than the cache lines used by the pixels in the data area. Therefore, access is no worse than Process 1, i.e., 9% utilization of DRAM bandwidth.
[0620]
Therefore, the total DRAM utilization rate during data extraction (including process 1) is 18%, and the data extraction unit always follows the image sensor pixel reader of the alternative Artcard. In the target processing process implemented by this, the processing of the target is performed in a fairly inefficient way, but it still follows quickly during the data extraction process, if necessary.
[0621]
Phase 2-bit image decoding
Phase 2 is a non-real-time phase of the alternative Artcard data recovery algorithm. At the beginning of Phase 2, the bit image is extracted from the alternate Artcard. The bit image represents the bits read from the data area of the alternate Artcard. The entire data is rotated 180 °, probably because some bits are incorrect and the alternate Artcard is rotated at the time of insertion. Phase 2 involves reliably extracting the original data from this encoded bit image. Basically, three steps are performed as shown in FIG. 79:
* If the alternate Artcard is inserted in the opposite direction, invert it and reorganize the bit image;
* Descramble the encoded data;
* Reed-Solomon decoding of data from bit images.
[0622]
Each of the three steps is defined as a separate process, and the output of one process is requested as the input of the next process, so it is executed consecutively. It is easy to merge the first two steps into a single process, but for convenience of explanation, they are treated here as separate processes.
[0623]
From a data / process point of view, Phase 2 has a structure as shown in FIG.
[0624]
The timing of processes 1 and 2 can be ignored, consuming less than 1/1000 second in the meantime. Process 3 (Reed-Solomon decoding) consumes about 0.32 seconds, which is the total time required for Phase 2.
[0625]
Bit image reorganization, inversion as needed
The bitmap in the DRAM at this point represents the data obtained from the alternative Artcard. However, the bit images are not continuous. The bit image is divided into 64 chunks of 32k units, and there is one chunk for each data block. Each of the 32k chunks has only 28656 valid bytes, ie
48 bytes from the leftmost azimuth sequence,
28,560 bytes from the true data area,
48 bytes from the rightmost azimuth sequence,
Unused 4112 bytes and
To store.
[0626]
The 2MB buffer used for pixel data (stored by process 1 of phase 1) can be used to hold the reorganized bit image. This is because pixel data is not required during Phase 2. At the end of the reorganization, the correctly oriented contiguous bit images are housed in a 2MB pixel buffer and are ready for Reed-Solomon decoding.
[0627]
If the cards are oriented correctly, the leftmost orientation row is white and the rightmost orientation row is black. When the card is rotated 180 °, the leftmost azimuth row is black and the rightmost azimuth row is white.
[0628]
An easy way to determine if a card is oriented correctly is to use each data block one at a time until you find a block with an overwhelming ratio of black bits to white bits, at the beginning and end of the data. Is to check the 48 bytes of. The following pseudocode illustrates this method, returning TRUE if the card is in the correct orientation, FALSE otherwise:
Figure 2001523900
The data should be recognizable at this point based on whether the card is in the correct orientation. The simplest case is when the card is in the correct orientation. In this case, the data needs to be moved slightly to remove the azimuth sequence and make the entire data continuous. This is very easily achieved in the original position as shown in the pseudo code below:
Figure 2001523900
Otherwise, you need to actually invert the data. The algorithm for inverting the data is very simple, but for simplicity we use a 256-byte table Reverse. Where the value of Reverse [N] is the bit inversion of N:
Figure 2001523900
The timing of both processes can be ignored and consumes less than 1/1000 second:
* 2MB continuous read (2048/16 x 12ns = 1536ns);
* 2MB Effective continuous byte writing (2048/16 x 12ns = 1536ns).
[0629]
Unscrambled coded image
A bit image is 182,840 consecutive, correctly oriented, scrambled bytes. The bytes must be descrambled to produce 7168 Reed-Solomon blocks, each block being 255 bytes long. The descrambling process is very simple, but it requires a separate output buffer because the descrambling process cannot be performed in its original location. FIG. 80 is an explanatory diagram of the memory in which the descrambling process is performed.
[0630]
The following pseudo code specifies how to perform the descrambling process:
Figure 2001523900
The timing for this process can be ignored and consumes less than 1/1000 second:
* 2MB continuous read (2048/16 x 12ns = 1536ns);
* 2MB non-continuous byte writing (2048 x 12ns = 24576ns).
[0631]
At the end of this process, unscrambled data is ready for Reed-Solomon decoding.
[0632]
Reed-Solomon Decryption
The final part of reading the alternate Artcard is the Reed-Solomon decoding process, where about 2 MB of unscrambled data is decoded into about 1 MB of valid alternate Artcard data.
[0633]
This algorithm can decrypt one Reed-Solomon block at the same time and run it in its original location (if necessary). This is because the encoded block is larger than the decoded block and the redundant bytes are stored after the data bytes.
[0634]
The first two Reed-Solomon blocks are control blocks and contain information about the size of the data to be extracted from the bit image. This meta information needs to be decrypted first and the information obtained is used to decrypt the true data. Decoding true data is simply a matter of decoding data blocks one at a time at the same time. If the decryption of a particular block fails, it is possible to use a copy of the data block.
[0635]
Presenting the highest level Reed-Solomon decryption in pseudocode:
Figure 2001523900
DecodeBlock is a standard Reed-Solomon block decoder that uses m = 8 and t = 64.
[0636]
The GetControlData function is simple as long as there are no decryption errors. This function only calls DecodeBlock to decrypt one control block at a time until it succeeds. Control parameters can be extracted from the first 3 bytes of the decoded data (destBlocks are stored in bytes 0 and 1 and lastBlock
Is stored in byte 2). If there is a decryption error, this function must traverse 32 sets of 3 bytes to determine the most probable set of values. One easy way is to find two consecutive equal copies of the three bytes and determine that these values are correct. Another method counts the number of types of 3-byte pairs that appear and determines that the most frequently occurring pair is the correct pair.
[0637]
The time required for Reed-Solomon decoding depends on the implementation. A dedicated core (eg L64712 of LSI logic) can be used to perform the Reed-Solomon decoding process, but depending on the application (usually to do something with the decrypted data). ) It is preferable to select a CPU / DSP combination that can be used more universally in the entire built-in system. Of course, the decoding time must be sufficiently fast even in the case of the CPU / DSP combination.
[0638]
Since the L64712 has a throughput of 50 Mbit / s (about 6.25 MB / s), the time is limited by the speed of the Reed-Solomon decoder, not the memory access time of up to 2 MB read and 1 MB write. The time required for the worst case (the case where all 2MB require decoding) is therefore 2 / 6.25 seconds = about 0.32 seconds. Of course, many improvements can be considered, including the following:
[0639]
The greater the blur effect of the read environment, the greater the influence of the given dots from the surrounding dots. Current readout algorithms according to preferred embodiments have the ability to use peripheral dots in the same row to make better decisions regarding dot values. Since the dots in the previous column have already been decoded, the dot history in the previous column is useful in determining the values of dots whose pixel values fall within an uncertain range.
[0640]
Another possibility for the initial stage is to remove it altogether, make the initial boundaries of the data block wider than the required boundaries, and make the target processing function more intelligent. This reduces overall complexity. Care must be taken to maintain the independence of the data blocks.
[0641]
The control block mechanism can be more robust:
* The control blocks may be the first block and the last block instead of being adjacent (as in the case of this example). This will increase protection against certain unusual damage situations;
* The second improvement is to incorporate an auxiliary level of redundancy / error detection into the control block structure that is used if the Reed-Solomon decoding step fails. Simple mechanisms like parity improve the plausibility of control information in the event of a Reed-Solomon stage failure.
[0642]
Phase 5 Walk script execution
The total time required to read Artcard 9 and decode it is therefore about 2.15 seconds. The user-clear delay is actually only 0.65 seconds (the sum of Phases 3 and 4). This is because Artcard stops moving after 1.5 seconds.
[0643]
Once the Artcard is loaded, the Artvark script must be interpreted. Instead of executing the script immediately, the script is executed only when the "print" button 13 (FIG. 1) is pressed. The time it takes to run the script depends on the complexity of the script and must take into account the perceived delay between pressing the print button and the actual print button and the actual print operation. ..
[0644]
As mentioned above, the VLIW processor 74 is a digital processing system that accelerates the Vark function, which is costly to use a computer. The balance between the functions executed by the software by the CPU core 72 and the functions executed by the hardware by the VLIW processor 74 depends on the implementation. The purpose of the VLIW processor 74 is to help all Artcard styles run within a time that the user does not find slow. As CPUs become faster and more powerful, the number of functions that require hardware acceleration continues to decline. The VLIW processor includes a microcoded ALU subsystem that allows general purpose hardware acceleration of the following time-critical functions:
1) Image access mechanism for general-purpose software processing
2) Image convolver
3) Data-driven image warper
4) Image scaling
5) Image mosaic
6) Affine transformation
7) Image compositor
8) Color space conversion
9) Histogram collector
10) Image lighting
11) Brush stamper
12) Histogram collector
13) Conversion from CCD image to internal image
14) Construction of an image pyramid (used by warpers for brushing).
[0645]
The table below summarizes the time required for each Vark operation when implemented in the ALU model. A method of implementing a function that uses the ALU model will be described later.
[0646]
[Table 57]
Figure 2001523900
For example, it takes 9 + 2 + 0.5 cycles per pixel, or 11.5 cycles, for histogram collection and lookup color substitution (for image enhancement) to convert the CCD image. For 1500 x 1000 images, this is 17250,000, or about 0.2 seconds per component, or 0.6 seconds per all three components. With the addition of a simple warp, the total is 0.6 + 0.36, or almost 1 second.
[0647]
Image convolver
Convolve is a weighted averaging around the central pixel. This average may be a simple addition, a sum of absolute values, an absolute value of the sum, or a sum rounded to zero.
[0648]
The image convolver is a general-purpose convolvor, and various functions can be realized by changing the values in the variable size coefficient kernel. The only supported kernel sizes are 3x3, 5x5, and 7x7.
[0649]
With reference to FIG. 82, an example 340 of the convolution process is shown. The pixel component values supplied to the combiner process 341 are given by the box read iterator 342. The italator 342 supplies image data in units of rows, and within each row, supplies image data for each pixel. The output from the combiner 341 is sent to the sequential write itarator 344, which stores the composite image in a valid image format.
[0650]
The coefficient kernel 346 is a look-up table in the DRAM. The kernel arranges the coefficients in the same order as the box read italator 342. Each coefficient entry is 8 bits. A simple sequential read italator is used to specify kernel 346 and give coefficients. It simulates an image with an image width ImageWidth that matches the kernel size, and the loop option is set so that the kernel is fed continuously.
[0651]
An embodiment of the convolving process on the ALU unit is shown in FIG. The following constants are set by the software.
[0652]
[Table 58]
Figure 2001523900
The control logic is used to count down the number of multiplications / additions per pixel. When the count (accumulated on latch 2) reaches 0, the generated control signal is used to write out the current convolved value (from latch 1) and reset the count. In this way, one control logic block is used for many parallel convolved streams.
[0653]
In each cycle, the multiplication ALU incorporates the appropriate portion of the pixel so that a single multiplication / addition can be performed. The number of cycles required to sum up all the values is therefore the number of entries in the kernel. Since this is a computational constraint, it is appropriate to divide the image into multiple sections and process them in parallel with different ALU units.
[0654]
On a 7x7 kernel, the time required for each pixel is 49 cycles, or 490 ns. Since each cache line holds 32 pixels, the time available for memory access is ((32-7 + 1) x 490 ns), i.e. 12740 ns. The time required to read seven cache lines and write one is worse, 1120 ns (8 * 140 ns assuming that all accesses are to the same DRAM bank). As a result, up to 10 pixels can be processed in parallel if the resources are unlimited. When the number of ALUs is limited, up to 4 pixels can be processed in parallel. Therefore, the time required to execute the convolution using the 7x7 kernel is 0.18375 seconds (1500 * 1000 * 490ns / 4 = 183750000ns).
[0655]
On a 5x5 kernel, the time required for each pixel is 25 cycles, or 250 ns. Since each cache line holds 32 pixels, the time available for memory access is ((32-5 + 1) x 250 ns), ie 7000 ns. The time required to read five cache lines and write one is worse, 840 ns (6 * 140 ns assuming that all accesses are to the same DRAM bank). As a result, up to 7 pixels can be processed in parallel if the resources are unlimited. When the number of ALUs is limited, up to 4 pixels can be processed in parallel. Therefore, the time required to execute the convolution using the 5x5 kernel is 0.09375 seconds (1500 * 1000 * 250ns / 4 = 93750000ns).
[0656]
On a 3x3 kernel, the time required for each pixel is 9 cycles, or 90 ns. Since each cache line holds 32 pixels, the time available for memory access is ((32-3 + 1) x 90 ns), or 2700 ns. The time required to read three cache lines and write one is worse, 560 ns (4 * 140 ns assuming that all accesses are to the same DRAM bank). As a result, up to 10 pixels can be processed in parallel if the resources are unlimited. When the number of ALUs and read / write italators is limited, up to 4 pixels can be processed in parallel. Therefore, the time required to execute the convolution using the 3x3 kernel is 0.03375 seconds (1500 * 1000 * 90ns / 4 = 33750000ns). As a result, each output pixel requires kernel size / 3 cycles to perform the calculation. The actual timing is summarized in the table below.
[0657]
[Table 59]
Figure 2001523900
Image compositor
The compositing process is to add the foreground image to the background image using a matte or channel to control the proper ratio of foreground and background in the final image. Preferably, two styles of compositing are supported: normal compositing and ancillary compositing. The rules of the two styles are
Normal composite processing: New value = Foreground + (Background-Foreground) a
Accompanying composite processing: new value = foreground + (1-a) background
Is.
[0658]
The difference is that in the case of the accompanying composite process, the foreground is pre-multiplied by the matte, whereas in the normal composite process it is not. An example of the composite process is shown in FIG.
[0659]
The alpha channel takes a value from 0 to 255 corresponding to the range 0 to 1.
[0660]
Normal composite
Usually composite is
Background + (Background-Foreground) * α / 255
Implemented as.
[0661]
The division by X / 255 is approximated by 257X / 65536. Composite
An example implementation of Rothes is shown in detail in FIG. 84, with the following constants set by the software.
[0662]
[Table 60]
Figure 2001523900
Since four italators are required, the composite process requires one cycle per pixel and uses only half of the ALU. The composite process runs on only one channel. In order to composite the three-channel images with each other, the compositor must be run three times, once for each channel.
[0663]
The time required to composite a full-size single channel is 0.015 seconds (1500 * 1000 * 1 * 10ns), and it takes 0.045 seconds to composite all three channels.
[0664]
To approximate the division by 255, it is multiplied by 257 and then divided by 65536. This can also be achieved by one addition (256 * x + x) and ignoring the last 16 bits of the result (except for the purpose of rounding).
[0665]
As shown in FIG. 42, the composite process requires three sequential read iterators 351-353 and one sequential write iterator 355 and is implemented as a microcode that uses the adder with the adder ALU and the adder ALU. Will be done. The composite time is one cycle (10 ns) per pixel. The accompanying composite process and the normal composite process require separate microcodes, but the average time per pixel is the same.
[0666]
The compositing process is performed on only a single channel. In order to composite one 3-channel image with each other, the compositor is executed once for each channel, three times in total. Since the a channel is the same for each composite, it needs to be read each time. However, in the best case, a 4 × 32 byte cache line transfer (read or write) requires 320 ns. The pipeline gives one cycle per pixel composite on average, and it takes 32 cycles, or 320 ns (100 MHz), to composite 32 pixels, so channels are read virtually unlimitedly. Therefore, all channels
1500/32 * 1000 * 320ns = 150400000ns = 0.015 seconds
Is composited with.
[0667]
The time required to composite a full-size 3-channel image is 0.045 seconds.
[0668]
Image pyramid construction
Some functions, such as warping, tiling, and brushing, require an average of a given pixel area. Rather than calculating the value for each given area, these functions preferably utilize an image pyramid. As already shown in FIG. 33, the image pyramid 360 is essentially a multi-resolution pixel map. The original image is a 1: 1 representation. 2: 1 subsampling in each dimension produces a quarter of the original size image. This process continues until the entire image is represented by a single pixel.
[0669]
The image pyramid is constructed from the original image and uses 1/3 (1/4 + 1/16 + 1/64 + ...) of the size occupied by the original image. If the original image is 1500 x 1000, the corresponding image pyramid is about 1/2 MB.
[0670]
The image pyramid can be constructed by a 3x3 convolving executed based on a one-in-four input image that advances the convolving kernel by two pixels in each dimension. The 3x3 convolver produces higher accuracy than a simple 4-pixel averaging and has the added advantage that the difference in coordinates at different pyramid levels is obtained by shifting by 1 bit per level.
[0671]
The construction of the entire pyramid relies on a software loop that calls the pyramid level construction function once at each level of the pyramid.
[0672]
The timing for generating one level of the pyramid is (9/4) * (1/4) of the resolution of the input image. This is because an image having a size of 1/4 of the original image is generated. In this way, for 1500 x 1000 images,
Timing for generating level 1 of the pyramid = 9/4 * 750 * 500 = 843750 cycles.
Timing to generate level 2 of the pyramid = 9/4 * 375 * 250 = 210938 cycles,
Timing to generate level 3 of the pyramid = 9/4 * 188 * 125 = 52735 cycles.
The same applies hereinafter.
[0673]
The total time is 3/4 cycle per pixel of the original image (the image pyramid is 1/3 of the original image size and each pixel requires 9/4 cycles to calculate, i.e. (1/3) * ( 9/4) = 3/4). For a 1500 x 1000 image, there are 1125000 cycles at (100 MHz), or 0.011 seconds. This timing is for a single color channel, and the three color channel requires a processing time of 0.034 seconds.
[0674]
General-purpose data-driven image warper
The ACP 31 can perform an image warping operation on the input image. The principle of image warping is theoretically well known. One complete textbook on the warping process is Geroge
Wolberg's'&apos; Digital Image Warping'&apos;, IEEE Computer Society Press,
Los Alamitos, California,
1990. The warping process uses a warp map that forms part of the data supplied by Artcard 9. The warp map can be arbitrarily sized according to requirements and provides information on the mapping of input pixels to output pixels. Unfortunately, the use of arbitrarily sized warp maps poses a number of problems that must be solved by image warpers.
[0675]
Referring to FIG. 85, the A × B dimensional warp map 365 is composed of array values of a certain size (for example, 8-bit values from 0 to 255), and the array values represent the coordinates of the theoretical input image. Then, the coordinates of the theoretical input image are mapped to the corresponding "theoretical" output images with the same array coordinate index. Unfortunately, the output image, eg, the output image 366, has a unique dimension CxD, which is quite different from the input image having the unique dimension ExF. Therefore, it is necessary to make it easy to map the warp map 365 so that the output image 366 can determine the area or area of the corresponding input image for each output pixel. The output pixel color data is constructed from the corresponding input image area or region. For each output pixel in the output image 366, it is first necessary to determine the corresponding warp map value from the warp map 365. Therefore, when the output image pixels are mapped to decimal positions in the warp map table 365, it is necessary to bilinearly interpolate the peripheral warp map values. The result of this process gives the position of the input image pixels within the "theoretical" image, which is sized by the size of each data value in the warp map 365. These values must be rescaled to map the theoretical image to the corresponding actual input image 367.
[0676]
To determine the actual value, the output image pixels should be chosen to avoid the aliasing effect, and the adjacent output images to determine the region of the input image pixels 367 that contributes to the final output image pixel value. You need to look at the pixels. In this regard, the image pyramid is utilized, as will be made clearer below.
[0677]
The image warper performs several tasks to warp the image:
-Scale the warp map to match the output image size;
-Determine the span of the area of the input image pixel represented by each output pixel;
-Calculate the final output pixel value from the input image pyramid by trilinear interpolation.
[0678]
Warp map scaling
As described above, in the data-driven warp, the warp map needs to describe the center of the corresponding input image map for each output pixel. By storing the interleaved x and y value information instead of using a single warp map as described above, it is possible to treat the X and Y coordinates as separate channels.
[0679]
As a result, preferably two warp maps are provided, the X warp map represents the warping of the X coordinate, and the Y warp map represents the warping of the Y coordinate. As mentioned above, the warp map 365 may have a different spatial resolution than the image being scaled (eg, the 32x32 warp map 365 properly describes the warp of the 1500x1000 image 366). Moreover, the warp map can be represented by 8 or 16 bit values corresponding to the size of the image being warped.
[0680]
Several steps are included to generate points in the input image space from a given warp map:
1. 1. Determine the corresponding position in the warp map for the output image;
2. Fetch the value from the warp map for the next step (this requires scaling in the resolution domain if the warp map is only an 8-bit value);
3. 3. Bilinear interpolation of the warp map to determine the actual value;
4. Scale the value to correspond to the input image domain.
[0681]
The first step is performed by multiplying the current X / Y coordinates in the output image by a scale factor (which may differ between X and Y). For example, if the output image is 1500x1000, the warp map is 150x100 and both X and Y are scaled by 1/10.
[0682]
It is necessary to access two lookup tables in order to fetch the values from the warp map. One lookup table reads an 8-bit or 16-bit entry from the lookup table and always returns a 16-bit value (clears the upper 8 bits if the original value has only 8 bits).
[0683]
The next step in the pipeline is to bilinearly interpolate the referenced warp map values.
[0684]
Finally, the result from bilinear interpolation is scaled and housed in the same domain as the image to be warped. In this way, if the range of the warp map is 0 to 255, X is scaled by 1500/255 and Y is scaled by 1000/255.
[0685]
The interpolation process is as shown in FIG. 86, where the following constants are set by the software.
[0686]
[Table 61]
Figure 2001523900
The following lookup table is used.
[0687]
[Table 62]
Figure 2001523900
Span calculation
The points from the warp map 365 indicate the position of the center of the pixel region in the input image 367. The distance between the input image pixels of adjacent output image pixels indicates the size of the area, and this distance can be approximated by span calculation.
[0688]
Referring to FIG. 87, with respect to a predetermined current point on the warp map P1, the previous point on the same line is P0 and the point at the same position on the previous line is P2. The absolute distances of X and Y are determined between P1 and P0 and between P1 and P2. The maximum distance of X or Y is a span that is a square that approximates the actual shape.
[0689]
Preferably, the points are processed in the output order of the vertical strip, where P0 is the preceding point on the same line in the strip and when P1 is the first point in the strip, P0 corresponds to the previous strip. Represents the last point of the line. Since P2 is the point of the previous line in the same strip, it can be held in the history buffer of 32 entries. The principle of the span calculation process is shown in FIG. 88, and the details of the process are shown in FIG. 89.
[0690]
The following DRAM FIFOs are used.
[0691]
[Table 63]
Figure 2001523900
Since the span history with 32-bit accuracy is retained, 12000 bytes of temporary storage is required when an image having a width of 1500 pixels is warped.
[0692]
The calculation of span 364 uses two adder ALUs (one for span calculation and the other for looping and counting the history of P0 and P2) and requires 7 cycles as follows: ..
[0693]
[Table 64]
Figure 2001523900
The history buffers 365 and 366 are cache-type DRAMs. The "previous line" (in the case of P2 history) buffer 366 has a span accuracy of 32 entries. The "previous point" (for P0 history) buffer 365 requires one register, which is used most of the time (for the calculation of points 1-31 of the strip line), and the history buffered in the DRAM. The set of values is used to calculate the point 0 of the strip line.
[0694]
The 32-bit precision of the span history requires four cache lines to hold the P2 history and two cache lines for the P0 history. The history of P0 is written and read out in the temporary storage space of (ImageHeight * 4) bytes once for every eight lines composed of 32 pixels. In this way, when an image with a height of 1500 pixels is warped, 6000 bytes of temporary storage is required, and a total of 6 cache lines are required.
[0695]
Trilinear interpolation
After determining the center and span of the area from the input image to be averaged, the final part of the warp process is determining the value of the output pixels. Since a single output pixel can theoretically be represented by the entire input image, it can be very time consuming to actually read and average a particular area of the input image that contributes to the output pixel. .. Alternatively, the pixel values can be approximated by using the image pyramid of the input image.
[0696]
If the span is less than or equal to 1, it is only necessary to read the pixels of the original image around a given coordinate and perform bilinear interpolation. If the span is greater than 1, then two appropriate levels of image pyramids need to be read and trilinear interpolation performed. Performing linear interpolation between two levels of image pyramids is not strictly accurate, but gives acceptable results (which makes a mistake on the side of the resulting image where the blur effect occurs).
[0697]
Referring to FIG. 90, in general, given a span "s", ln2s (370) and ln2It is necessary to read the image pyramid level given by s + 1 (371). Ln2s only decodes the high-order bits set of s. Bilinear interpolation must be performed and interpolation between levels must be performed to determine the pixel value at each of the two levels 370, 371 of the pyramid.
[0698]
As shown in FIG. 91, in order to obtain the final output value 373, it is necessary to first interpolate for each pixel pyramid level X and Y before interpolating between the pyramid levels.
[0699]
The image pyramid address mode generates addresses for pixel coordinates at (x, y) on pyramid levels s and s + 1. The image pyramid at each level stores pixels that are contiguous in the x direction. Therefore, a read about x is likely to be a cache hit.
[0700]
Moderate cache hit coherence is obtained when the local area of the output image is typically coherent locally with the input image (perhaps on a different scale but at the same scale). Although the relationship between the input image and the output image is unknown, the output pixels are reliably written to the vertical strip (by the vertical strip iterator) to maximize cache coherency.
[0701]
Trilinear interpolation can be completed in about two cycles on average, assuming that four multiplication ALUs and all four adder ALUs are used as a pipeline and memory access is not required. However, since all interpolation values are obtained from the image pyramid, the interpolation speed depends entirely on cache coherency (not to mention the other units being busy performing warp map scaling and span calculations). As many cache lines as possible should be available for image pyramid readout. The best speed is 8 cycles using 2 multiplication ALUs.
[0702]
The output pixels are written to the DRAM by a vertical strip write iterator that uses two cache lines. This speed is therefore limited by a minimum of 8 cycles per output pixel. If the number of cycles required to scale the warp map is 8 or less, the overall velocity does not change. Otherwise, throughput is the time it takes to scale the warp map. In most cases, the warp map will be scaled to fit the size of the photo.
[0703]
When scaling a warp map that requires 8 or less cycles per pixel, the time required to convert one color component of the image is 0.12 seconds (1500 * 1000 * 8 cycles * per cycle). 10ns).
[0704]
Histogram collector
The histogram collector is a microcode program that takes an image channel as input and generates a histogram as output. Each of the pixels of the channel takes a value that falls within the range 0-255. As a result, there are a total of 256 pixels in the histogram table, each entry is 32 bits, which is sufficient to accommodate a count of all 1500 x 1000 images.
[0705]
As shown in FIG. 92, the histogram represents a summary of all images, so the sequential readout italator 378 is sufficient as an input. The histogram itself is fully cached and requires 32 cache lines (1K).
[0706]
The microcode has two passes, the initialization pass all sets the count to 0, and then the "count" stage increments the appropriate counter for each pixel read from the image. The first stage requires an address unit and a single adder ALU to initialize the addresses in the histogram table 377.
[0707]
[Table 65]
Figure 2001523900
The second stage processes the actual pixels from the image and uses four adder ALUs.
[0708]
[Table 66]
Figure 2001523900
The zero flag from cycle 2 of adder 2 is used to stay at the microcode address 2 while the input pixels are the same. When the input pixel changes, the new count is written to microcode address 3 and processing resumes at microcode address 2. The microcode address 4 is used last and there are no more pixels to be read.
[0709]
Stage 1 requires 256 cycles, or 2560 ns. Stage 2 changes according to the pixel value. The worst-case time for lookup table replacement is two cycles per image pixel if not all pixels are the same as their neighbors. The time required for a single color lookup is 0.03 seconds (1500 × 1000 × 2 cycles per pixel × 10 ns per cycle = 30000000 ns). The time required for the three color components is three times this amount, that is, 0.09 seconds.
[0710]
Color conversion
Color conversion
Look-up table replacement, and
Color space conversion
It is realized by two main methods.
[0711]
Lookup table replacement
As shown in FIG. 86, one of the simplest ways to convert pixel colors is to encode any complex conversion function into the look-up table 380. The pixel component color value is used to look up the new component value of the pixel 381. For each pixel read from the sequential read itarator, the new value is read from the new color table 380 and written to the sequential write itarator 383. The input images are processed in half simultaneously to make efficient use of memory bandwidth. The following lookup table is used.
[0712]
[Table 67]
Figure 2001523900
The total process requires two sequential read italators and two sequential write italators. The two new color tables hold 256 bytes (256 entries consisting of 1 byte), so each requires 8 cache lines.
[0713]
Therefore, the average time required for lookup table replacement is 1/2 cycle per image pixel. The time required for a single color lookup is 0.0075 seconds (1500 x 1000 x 1/2 cycle per pixel x 10 ns per cycle = 750000 ns). The time required for the three color components is three times this amount, or 0.0225 seconds. Each color component is processed one after another under the control of the software.
[0714]
Color space conversion
Color space transformations are only needed when moving between color spaces. The CCD image is taken in the RGB color space and the printing is done in the CMY color space, while the ACP31 client is likely to process the image in the Lab color space. All of the input color space channels are typically required to determine the component values for each output channel. Such a logical process is shown in 385 of FIG.
[0715]
Briefly, the conversion between Lab, RGB and CMY is fairly straightforward. However, the individual color profile of a particular device can change significantly. As a result, to enable future CCDs, inks, and printers, the ACP 31 performs color space conversion by trilinear interpolation from the color space conversion lookup table.
[0716]
Color coherence tends to be area-based rather than line-based. It is best to process the image with vertical strips to aid cache coherence during trilinear interpolation lookup. In this way, the read itarator 386-388 and the write itarator 389 are vertical strip itarators.
[0717]
Trilinear color space conversion
For each output color component, we need a single 3D table that maps the input color space to the output color space. For example, three tables calibrated to the physical properties of the CCD, i.e., to convert the CCD image from RGB to Lab.
RGB-> L
RGB-> a
RGB-> b
Is required.
[0718]
Three tables calibrated to the physical characteristics of the ink / printer to convert from Lab to CMY, ie
Lab-> C
Lab-> M
Lab-> Y
Is required.
[0719]
The 8-bit input color component is treated as a fixed point number (3: 5) for indexing into the conversion table. The 3 bits of the integer give an index and the 5 bits of the decimal are used as interpolation. Since 3 bits give 8 values, 512 entries (8 × 8 × 8) can be obtained in three dimensions. The size of each entry is 1 bit, which requires 512 bytes per table.
[0720]
Therefore, the color space conversion process is implemented as shown in FIG. 95 and the following look-up table is used.
[0721]
[Table 68]
Figure 2001523900
Trilinear interpolation returns the interpolation between eight values. It takes one cycle to return each 8-bit value from the lookup, for a total of eight cycles. Trilinear interpolation uses 8 cycles when 2 multiplication ALUs are used per cycle. General trilinear interpolation information can be found in the ALU section of this document. 512 bytes for the look-up table are packed into 16 cache lines.
[0722]
The time to convert a single color component of an image is 0.105 seconds (1500 * 1000 * 7 cycles * 10 ns per cycle). It takes 0.415 seconds to convert the three components. Conveniently, the color space conversion for the printout is done on the fly during the printout.
[0723]
If the color components are converted separately, they must overwrite the input color space component. This is because all color components from the input color space are needed to transform each component.
[0724]
Since only one multiplication unit is used to perform the interpolation, it is possible to perform the entire Lab-> CMY conversion as a single path. This requires three vertical strip read itarators and three vertical strip write itarators to access the three conversion tables at the same time. In that case, it is possible to write back to the input image and not use extra memory. However, access to the three conversion tables is equivalent to one-third of the cache processing for each, resulting in high latency for the entire process.
[0725]
Affine transformation
Before compositing images with photographs, it is necessary to rotate, scale, and translate the images. If the image is only translated, it is faster to use the direct subpixel translation function. However, rotation, expansion, and translation can be incorporated into a single affine transformation.
[0726]
The general-purpose affine transformation can be incorporated as an acceleration function. The affine transformation is limited to two dimensions, and if it is scaled down, the input image should be prescaled by a scale function. By providing the general-purpose affine transformation, it becomes possible to construct the output image one block at a time, and the time required to perform a large number of transformations on the image can be reduced. This is because all of the many transformations can be applied at the same time.
[0727]
The transformation matrix needs to be given by the client and the matrix must be the inverse of the desired transformation. That is, the input coordinates are obtained by applying the matrix to the output pixel coordinates.
[0728]
A two-dimensional matrix is usually the following 3x3 array, i.e.
[0729]
[Number 1]
Figure 2001523900
Represented by.
[0730]
The third column is always [0,0,1], so the client does not have to specify it. Instead, the client specifies a, b, c, d, e, f.
[0731]
When the coordinates (x, y) in the input image in which the coordinates of the upper left image pixel are represented as (0,0) are given, the input coordinates are specified by (ax + cy + e, bx + dy + f). Once the input coordinates are determined, the input image is sampled to reach its pixel value. Bilinear interpolation of the input image pixels is used to determine the pixel values at the calculated coordinates. Since the affine transformation preserves parallel lines, the image is processed with a 32-pixel wide output vertical strip for best average input image cache coherency.
[0732]
Three multiplication ALUs are required to perform bilinear interpolation within two cycles. Multiplication ALU1 and 2 perform linear interpolation on X for each of line Y and line Y + 1, and multiplication ALU3 performs linear interpolation on Y between the values output by multiplication ALU1 and 2.
[0733]
When moving to the right across the output line with respect to X, the two adder ALUs add "a" to the current X value and "b" to the current Y value, thereby adding the actual input image. Calculate the coordinates. When advancing to the next line (the next line in the vertical strip after processing up to 32 pixels, or the first line in the new vertical strip), X and Y are the pre-computed start coordinates for a given block. Update to a value constant.
[0734]
The process of calculating the input coordinates is shown in FIG. 96, in which the following constants are set by the software.
[0735]
Pixel calculation
Once the input image coordinates are obtained, it is necessary to sample the input image. Look-up tables are used to return values at the coordinates specified in preparation for bilinear interpolation. The basic process is shown in Figure 97 and the following lookup table is used.
[0736]
[Table 69]
Figure 2001523900
The affine transformation requires a total of 4 multiplication ALUs and a total of 4 adder ALUs, and if there is good cache coherency, the affine transformation can be performed in an average of 2 cycles per output pixel. This timing presupposes good cache coherency, and this premise holds if the image is not distorted. In the worst case, the image is quite distorted and unlikely to contain important Vark scripts.
[0737]
The time required to convert a 128 × 128 image is 0.00033 seconds (32768 cycles). If this is a clip image with 4 channels (including a channel), the total time required is 0.00131 seconds (131072 cycles).
[0738]
A vertical strip write iterator is needed to output pixels. No read italator is required. However, since the affine transformation accelerator is constrained by the time required to access the input image pixels, as many cache lines as possible should be allocated to read the pixels from the input image. At least 32 are available, preferably 64 or more are available.
[0739]
scaling
Scaling is basically image resampling. Image enlargement can be performed using the affine transformation function. Generalized image scaling, including reduction, is done by a hardware-accelerated scale function. Scaling is done independently for X and Y, so different scale magnifications can be used in each dimension. The generalized scale unit must be compatible with the affine transformation scale function in terms of alignment.
[0740]
The generalized scaling process is shown in Figure 98. The scale for X is achieved by Fant's resampling algorithm as shown in FIG.
[0741]
The following constants are set by the software.
[0742]
[Table 70]
Figure 2001523900
The following registers are used to hold temporary variables.
[0743]
[Table 71]
Figure 2001523900
The scale process for Y is shown in FIG. 100 and is also implemented by a slightly modified version of Fant's resampling algorithm to take into account the processing of X pixel order.
[0744]
The following constants are set by the software.
[0745]
[Table 72]
Figure 2001523900
The following registers are used to hold temporary variables.
[0746]
[Table 73]
Figure 2001523900
The following DRAM FIFOs are used.
[0747]
[Table 74]
Figure 2001523900
Image mosaic processing
Image mosaicking is a form of tiling. Mosaic processing involves copying a specially designed "tile" into a second (usually larger) image space multiple times in the horizontal and vertical directions. When mosaiced, the small tiles form a seamless picture. An example of this is a small tile in a brick wall compartment. It is designed to form a perfect brick wall when mosaicked. It should be noted that the mosaic processing does not include scaling or subpixel translation.
[0748]
The most cache coherent method for performing mosaicking is to output images sequentially line by line and repeat the same input image line for the duration of that line. When the line ends, the input image should advance to the next line (it should be repeated multiple times across the output line).
[0749]
An overview of the mosaic function is shown in FIG. 101, 390. The sequential read italator 392 is set up to read a single line of input tiles in succession (start line is 0, end line is 1). Each input pixel is written to all three of the write italators 393-395. The adder ALU counter 397 counts down the number of pixels in the output line and ends the sequence at the end of the line.
[0750]
At the end of line processing, a small software routine is used to restart the microcode and sequential read iterator (which clears the FIFO and repeats line 2 of the tile) before restarting the start and end lines of the sequential read italator. Update the register. The write italator 393-395 is not updated, it just keeps writing to the corresponding part of the output image. The net effect is that the tiles repeat one line across the output line and the tiles repeat vertically.
[0751]
This process does not completely use memory bandwidth. This is because cache coherency in the input image is good, but mosaicking cannot work with tiles of other sizes. This process uses one adder ALU. If each of the three write italators 393-395 writes to one-third of the image (dividing the image into tile-sized boundaries), the entire mosaic process has an average speed of one-third cycle per output image pixel. It is done in. For a 1500 x 1000 image, this corresponds to 0.005 seconds (5000000 ns).
[0752]
Subpixel translator
Before compositing the image with the background, it is necessary to translate the image by subpixel amount for both X and Y. Subpixel translation can increase the size of the image by one pixel in each dimension. The values in the outer region of the image are constant values (eg, black) or values determined by the client, such as edge pixel iterations. It is typically better to use black.
[0753]
The subpixel translation process is shown in FIG. Subpixel translation of a given dimension
Pixelout out= Pixelin*
(1-Translation) + Pixelin-1* Translation
Defined by.
[0754]
This is a form of interpolation, i.e.
Pixelout out= Pixelin-1 +
(Pixelin --Pixelin-1) * Translation
Can be expressed as.
[0755]
It is easy to implement a single (or average) cycle interpolation engine that uses a single multiplication ALU and a single adder ALU in combination. Subpixel translation for both X and Y requires two interpolation engines.
[0756]
Two sequential read iterators 400, 401 are required to perform subpixel translation with respect to Y (one reads a line that is ahead of the other image from the same image) and one sequential write iterator 403 is required. become.
[0757]
The first interpolation engine (interpolation for Y) receives data pairs from two streams and linearly interpolates between them. The second interpolation engine (interpolation for X) receives the data as a single one-dimensional stream and linearly interpolates between the values. Both engines perform interpolation in one cycle on average.
[0758]
The interpolation engines 405 and 406 are capable of performing subpixel translation on average in one cycle per output pixel. Therefore, the overall time is one cycle per output pixel, which requires two multiplication ALUs and two adder ALUs.
[0759]
The time required to output 32 pixels from the subpixel translation function is 320 ns (32 cycles) on average. This is sufficient time for full four cache line access to the DRAM, and the use of three sequential italators is well within the timing cost.
[0760]
The total time required to translate the image subpixels is therefore one cycle per pixel of the output image. A typical image to be subpixel translated is a tile of size 128 * 128. The output image size is 129 * 129. This process is 129 * 129 * 10ns = 166410ns.
[0761]
The image tiling function also uses the subpixel translation algorithm, but it is not necessary to write out the subpixel translation processed data, and the data is further processed.
[0762]
Image tile tiler
The high-level algorithm for tiling the image is executed in software. Once the tile placement is determined, the appropriate colored tiles must be synthesized. The actual compositing of each tile's image is done in hardware by a microcoded ALU. The tile compositing process includes both texture and color pasting on the background image. In some cases it is desirable to use this to compare the actual amount of texture added to the background with the planned amount of texture and to scale the colors that will be pasted. In these cases, it is necessary to paste the texture first.
[0763]
Since the color pasting function and the texture pasting function are independent to some extent, they are separated into subfunctions.
[0764]
The number of cycles per 4-channel tile composite for various texture and coloring styles is summarized in the table below.
[0765]
[Table 75]
Figure 2001523900
Tile coloring and composite processing
The tiles either have a constant color (over the entire tile) or are set to take each pixel value from the input image. Both of these cases have feedback from the texturing stage to scale the opacity (similar to thinning paint).
[0766]
The steps for the four cases can be summarized as follows:
-Translate the opacity value of the tile by subpixel;
-Selectively scale tile opacity (if feedback from texturing is enabled);
-Determine the pixel color (constantly or from the image map);
-Composite pixels on the background image.
[0767]
Each of the four cases is treated separately to minimize the time it takes to execute the function. The time per color compositing style for a single color channel is summarized in the table below.
[0768]
[Table 76]
Figure 2001523900
Constant color
In this case, the tiles have a constant color determined by the software. While the ACP 31 installs one tile, the software can determine the placement and coloring of the next tile.
[0769]
The color of the tiles can be determined by bilinear interpolation of the tiled image into a scaled image. The scaled image can be created and stored in place in the image pyramid and only needs to be performed once for the entire tile operation. If the size is 128 x 128, the image is scaled down by 128: 1 for each dimension.
[0770]
No feedback
In the absence of feedback from the tile's texture processing, the tile is only placed at the specified coordinates. The tile color is used for each pixel color, and the opacity for the composite comes from the subpixel translation processed opacity channel of the tile. In this case, the color and texture channels can be processed completely independently between the tiling paths.
[0771]
An overview of the process is shown in FIG. The tile subpixel translation 410 can be performed using two multiplication ALUs and two adder ALUs for an average time of one cycle per output pixel. The output from the subpixel translation is a mask that should be used when the constant tile color 412 is composited 411 in the background image from the background sequential readout iterator.
[0772]
The composite process can be performed using one multiplication ALU and one adder ALU for an average time of one cycle per composite. Therefore, the prerequisites are 3 multiplication ALUs and 3 adder ALUs. Four sequential italators 413-416 are required, and 320 ns is required to read and write their contents. For the average number of cycles per pixel required for subpixel translation and compositing, there is sufficient time to read and write the buffer.
[0773]
With feedback
When there is feedback from the tile's texture processing, the tile is placed at the specified coordinates. The tile color is used for each pixel color, and the opacity for the composite comes from the subpixel translation processed opacity channel scaled by the feedback parameters. In this way, the texture value must be calculated before the color value is pasted.
[0774]
An overview of the process is shown in FIG. Subpixel translation of tiles can be performed using two multiplication ALUs and two adder ALUs for an average time of one cycle per output pixel. The output from the subpixel translation is a mask that should be scaled according to the feedback read from the feedback sequential read iterator 420. This feedback is sent to the scaler (one multiplication ALU) 421.
[0775]
The composite process 426 can be performed using one multiplication ALU and one adder ALU for an average time of one cycle per composite. Therefore, the prerequisites are 4 multiplication ALUs and 4 adder ALUs. The entire process can be completed within one cycle on average, but the bottleneck is memory access. This is because five sequential italators are required. If sufficient buffering is done, the average time is 1.25 cycles per pixel.
[0776]
Color from input image
One way to color the pixels of a tile is to extract the color from the pixels of the input image. Again, there are two possibilities for compositing, with and without feedback from the texture processing.
[0777]
No feedback
In this case, the tile color is easily derived from the corresponding pixels in the input image. The opacity for compositing comes from the opacity channel of the subpixel-shifted tile.
[0778]
An overview of the process is shown in FIG. 105. The tile subpixel translation 425 has two multiplication ALUs and two adder ALs for an average time of one cycle per output pixel.
It can be done using U. The output from the subpixel translation is a mask that should be used when the tile pixel color (read from the input image 428) is composited with the background image 429. This feedback is sent to the scaler (one multiplication ALU) 431.
[0779]
The composite process 434 can be performed using one multiplication ALU and one adder ALU for an average time of one cycle per composite. Therefore, the prerequisites are 3 multiplication ALUs and 3 adder ALUs. The entire process can be completed within one cycle on average, but the bottleneck is memory access. This is because five sequential italators are required. If sufficient buffering is done, the average time is 1.25 cycles per pixel.
[0780]
With feedback
In this case, the tile color is also easily derived from the corresponding pixels in the input image, but the opacity for compositing is affected by the relative amount of texture height actually applied during the texture processing pass. Receive. This process is shown in Figure 106.
[0781]
Subpixel translation 431 of a tile can be performed using two multiplication ALUs and two adder ALUs for an average time of one cycle per output pixel. The output from the subpixel translation is a mask that should be scaled 431 according to the feedback read from the feedback sequential read iterator 432.
[0782]
The composite process can be performed using one multiplication ALU and one adder ALU for an average time of one cycle per composite.
[0783]
Therefore, the requirements are 4 multiplication ALUs and 3 adder ALUs. The entire process can be completed within one cycle on average, but the bottleneck is memory access. This is because six sequential italators are required. With sufficient buffering, the average time is 1.5 cycles per pixel.
[0784]
Tile texture processing
Each tile has a surface texture defined by its texture channel. The texture is transitioned to subpixels and then pasted into the output image. For texture compositing,
Texture placement and
25% background + tile texture and
Average height algorithm and
There are three types of styles.
[0785]
In addition, the average height algorithm saves feedback parameters for color compositing.
[0786]
The time required for each texture compositing style is summarized in the table below.
[0787]
[Table 77]
Figure 2001523900
Texture replacement
In this case, the texture from the tile replaces the texture channel of the image, as shown in FIG. 107. Subpixel translation 436 of a tile texture can be performed using two multiplication ALUs and two adder ALUs with an average time of one cycle per output pixel. The output from the subpixel translation is directly supplied to the sequential write iterator 437.
[0788]
The time required for the texture replacement composite process is one cycle per pixel. There is no feedback as 100% of the texture value is always pasted on the background. Therefore, it is not necessary to process the channels in a particular order.
[0789]
25% background + tile texture
In this example, the texture from the tile is added to 25% of the existing texture value. The new value must be greater than or equal to the original value. Moreover, since the texture channel has only 8 bits, the new texture value will be clipped at 255. The process utilized is shown in FIG. 108.
[0790]
Subpixel translation 440 of a tile texture can be performed using two multiplication ALUs and two adder ALUs with an average time of one cycle per output pixel. The output from the subpixel translation 440 is fed to the adder 441, which is 1/4 of the background texture value.
It is added to 442. The minimum and maximum value functions 444 are provided by two adders that are not used for subpixel translation, and the output is sequentially written to the write italator 445.
[0791]
The time required for this style of texture composite processing is one cycle per pixel. There is no feedback as 100% of the texture values are believed to have been pasted into the background (even if clipped at 255). Therefore, it is not necessary to process the channels in a particular order.
[0792]
Average height algorithm
In this texture pasting algorithm, the average height is calculated based on the tiles, and the height of each image is compared with the average height. If the pixel height is smaller than average, the stroke height is added to the background height. If the pixel height is above average, the stroke height is added to the average height. In this way, the background peak narrows the stroke. This height is constrained to increase by a minimal amount (but the minimum amount can be 0) to avoid the background thinning the stroke sticking to zero. The height is cropped at 255 because the texture channel has an 8-bit resolution.
[0793]
There may be feedback on the difference between the pasted texture and the predicted amount pasted. The amount of feedback can be used as a magnification when pasting tile colors.
[0794]
In both cases, the average texture is provided by the software and calculated by performing bi-level interpolation on the scaled texture map. The software determines the average texture height of the next tile while the current tile is pasted. The software gives a minimum thickness to add, which is typically constant throughout the tiling process.
[0795]
No feedback
In the absence of feedback, the texture is simply pasted onto the background texture, as shown in Figure 109.
[0796]
Four sequential italators are needed, which means that if the process can be pipelined in one cycle, it is sufficient to keep up with the high speed of the memory.
[0797]
Subpixel translation 450 of a tile texture can be performed using two multiplication ALUs and two adder ALUs with an average time of one cycle per output pixel. The minimum and maximum value functions 451 and 452 require a separate adder ALU to complete all operations within one cycle. Since 2 has already been used due to the subpixel translation of the texture, there is not enough time left for the average time per cycle.
[0798]
Therefore, the average time for processing a one-pixel texture is two cycles. It should be noted that there is no feedback and the order of the color channels in the composite process is irrelevant.
[0799]
With feedback
This is conceptually the same as without feedback, except that the percentage of textures actually pasted must be recorded in addition to the processing of standard texture pasting algorithms. This percentage can still be used as a magnification to composite the tile color to the background image. The flowchart is shown in FIG. 110 and the following look-up table is used.
[0800]
[Table 78]
Figure 2001523900
Each of the 256 entries in the 1 / N table 460 provided by the software is 16 bits and requires 16 cache lines to hold continuously.
[0801]
Subpixel translation 461 of a tile texture can be performed using two multiplication ALUs and two adder ALUs with an average time of one cycle per output pixel. Each of the minimum value function 462 and the maximum value function 463 requires a separate adder ALU to complete all operations within one cycle. Since 2 has already been used due to the subpixel translation of the texture, there is not enough time left for the average time per cycle.
[0802]
Therefore, the average time for processing a one-pixel texture is two cycles. Sufficient space should be allocated for the feedback data area (tile-sized image channels). The texture should be pasted before the tile color is pasted. This is because feedback is used to scale the opacity of the tile.
[0803]
CCD image interpolator
The image obtained from the CCD by ISI83 (FIG. 3) is 750 x 500 pixels. The orientation of the camera when the image is taken by ISI is used to rotate the pixels by 0, 90, 180 or 270 degrees so that the top of the image corresponds to "up". Since every pixel has only R, G or B color components (rather than up to 3), the fact that they are rotating must be taken into account when interpreting the pixel values. Depending on the orientation of the camera, each of the 2x2 pixel blocks has one of the configurations shown in FIG.
[0804]
In order to convert the CCD-captured image into a format useful for processing, it is necessary to perform some processing on the CCD-captured image as follows:
-Up-interpolation of low sample rate color components in the CCD image (interpreting the correct orientation of the pixels);
Color conversion from RGB to internal color space;
Scaling the interior space image from -750x500 to 1500x1000;
-Write the image in planar format.
[0805]
The entire image channel needs to be available at the same time to allow warping. For the small memory model (8MB), there is only space to hold a single channel at all resolutions as a temporary object. For this reason, color conversion is conversion to a single color channel. The limiting factor for this process is color conversion. Because the color conversion includes trilinear interpolation from RGB to the internal color space, this trilinear interpolation is 0.026ns per channel (750 × 500 × 7 cycles per pixel × 10ns per cycle = 2620000ns). Because it is a process that requires.
[0806]
It is important to perform a color transformation before scaling the internal color space image. This is because it reduces the number of pixels to be scaled (and therefore the total process time) by a factor of 4.
[0807]
The requirements for all transformations do not apply to the ALU scheme. The transformation is therefore decomposed into two phases:
Phase 1: Up-interpolation of low sample rate color components in the CCD image (interpreting the correct pixel orientation);
Color conversion from RGB to internal color space;
Writing an image in planar format;
Phase 2: Scaling the interior space image from 750x500 to 1500x1000.
[0808]
Separation of scale functions means that the image after small color conversion should be in memory at the same time as the large image. The output from Phase 1 (0.5MB) is typically safely written to the memory area reserved for the image pyramid (1MB). The output from Phase 2 is a typical magnified CCD image. Separation of scaling also allows scaling to be achieved by affine transformations, which allows for a variety of CCD resolutions that are not a simple 1: 2 magnification.
[0809]
Phase 1: Up-interpolation of low sample rate color components
Each of the three color components (R, G and B) needs to be up-interpolated to perform a color transformation on a given pixel. Since color conversion uses 7 cycles, there are 7 cycles per pixel to perform interpolation.
[0810]
Interpolation of G is simple and is shown in FIG. Depending on the orientation, the actual pixel value G is
The odd pixels on the odd line and the even pixels on the even line alternate with the odd pixels on the even line and the even pixels on the even line. In both cases, linear interpolation is all that is required. Interpolation of the R and B components is more complex as shown in FIGS. 113 and 113. This is because, as can be seen from the figure, three rows of pixels are required to be accessed at the same time in the horizontal and vertical directions, so three sequential read iterators are required, and each sequential read iterator is a single row. Offset by. Moreover, a latch for each row is used to access the previous pixel in the same row.
[0811]
Therefore, each pixel stores one component from the CCD and two other up-interpolated components. When one component is bilinear interpolated, the other is linearly interpolated. Since the interpolation coefficient is a constant of 0.5, the interpolation can be calculated (within one cycle) by addition and 1-bit right shift, and the bilinear interpolation with a coefficient of 0.5 is 3 additions and 2 It can be calculated by bit right shift (3 cycles). The total number of cycles required is 4 when using a single multiplication ALU.
[0812]
FIG. 115 shows a case of an even-numbered line even-numbered pixel (EL, EP) and an odd-numbered line odd-numbered pixel (OL, EP) of rotation 0, and FIG. 116 shows an even-numbered line odd-numbered pixel (EL, OP) and an odd-numbered line of rotation 0. The case of even numbered pixels (OL, OP) is shown. The other rotation is a slightly different form of these two representations.
[0813]
Color conversion
The color space conversion from RGB to Lab is realized using the same method as described for the general-purpose color space conversion function, and is a process that requires 8 cycles per pixel. The processing of Phase 1 will be described with reference to FIG. 117.
[0814]
RGB up-interpolation requires 4 cycles (1 multiplication ALU), while color space conversion requires 8 cycles per pixel (2 multiplication ALUs) due to lookup transfer time.
[0815]
Phase 2
Image scaling
This phase involves up-interpolation of images from CCD resolution (750 x 500) to working photographic resolution (1500 x 1000). Scaling is performed by performing a 1: 2 scale affine transformation. The timing of general-purpose affine transformation is 2 cycles per output pixel, and in this case, it means the lapse of a scaling time of 0.03 seconds.
[0816]
Image lighting
After the image has been processed, the image can be illuminated by one or more light sources. The light source may be of any of the following types:
1. 1. Directional type-since there is an infinite distance, it casts parallel light in one direction;
2. Omni-type-throws unfocused light in all directions;
3. 3. Spot type-projects a focal beam to a specific target point. There are cones and penumbra associated with spot light.
[0817]
The scene has an associated bump map to change the angle of reflection. Peripheral light also exists in the selectively illuminated scene.
[0818]
In the accelerated lighting process, we are interested in illuminating one image channel with a single light source. It is possible to apply a large number of light sources to a single image channel as a large number of passes, one pass per light source. Many channels have bump maps
Even if there is no match, it can be processed one by one at the same time.
[0819]
The normal surface vector (N) at a pixel, if present, is calculated from the bump map. In the absence of a bump map, the default normal vector is perpendicular to the image plane, i.e. N = [0,0,1].
[0820]
The viewing vector V is always perpendicular to the image plane, i.e. V = [0,0,1].
[0821]
In the case of a directional light source, the light source vector (L) from the pixel to the light source is constant throughout the image and is calculated once for the entire image. For omni light sources (at a finite distance), the light source vector is calculated independently for each pixel.
[0822]
The reflection of ambient light pixels is IakaOdIt is calculated according to.
[0823]
Pixel scattering and specular reflection of the light source are Phong model:
fattIp[kdOd(N ・ L) + ksOs(R / V)n]
It is calculated according to.
[0824]
When the light source is infinite, the light source intensity is constant throughout the image.
[0825]
Each light source has three contributions per pixel, i.e.
Peripheral illumination contribution
Astigmatism contribution
Mirror surface contribution
Have.
[0826]
The light source is defined using the following variables.
[0827]
[Table 79]
Figure 2001523900
Same reflectance coefficient (ka, Ks, Kd) Is used for each color component.
[0828]
The value of a given pixel is equal to the sum of the peripheral illumination contribution and the sum of the diffusion and mirror surface contributions of each light.
[0829]
Lighting calculation subprocess
Various other calculations are needed to calculate the diffuse contribution. Some of those calculations
1 / ΔX
N
L
NL
R / V
fatt
fcp
Includes calculations;
The subprocess is
Ambient light
Diffuse
Mirror surface
It is also defined to calculate the contribution of.
[0830]
Subprocesses can be used to calculate the overall illuminance of a light source. Since there are only four multiplication ALUs, microcode for a particular type of light source may include subprocesses that are properly mixed for performance.
[0831]
Calculation of 1 / √X
The Walk lighting model uses vectors. In most cases it is important to calculate the reciprocal of the length of the vector for normalization purposes. To calculate the reciprocal length, 1 / (square root of [x]) must be calculated.
[0832]
Logically, this process can be represented as a process with inputs and outputs as shown in FIG. 118. With reference to FIG. 119, this calculation looks up the estimates and then the following function:
Vn + 1 = 1/2 Vn(3-XVn 2)
Can be done by repeating the above once.
[0833]
The number of iterations depends on the required accuracy. In this case, 16-bit precision is required. Therefore, the table is 8-bit precision and only needs to be repeated once. The following constants are set by the software.
[0834]
[Table 80]
Figure 2001523900
The following lookup table is used.
[0835]
[Table 81]
Figure 2001523900
Calculation of N
N is a surface normal vector. If there is no bump map, N is constant. If a bump map is present, N must be calculated pixel by pixel.
[0836]
No bump map
In the absence of a bump map, the fixed normal N has the following properties:
N = [XN, YN, ZN] = [0,0,1]
|| N || = 1
1 / || N || = 1
Normalized N = N
Have.
[0837]
These properties can be used instead of specifically calculating the normal vector and 1 / || N ||, and other calculations can be optimized.
[0838]
Bump map available
As shown in FIG. 120, if a bump map is present, N is calculated by comparing the X-dimensional and Y-dimensional bump map values. FIG. 120 shows the calculation of N for pixel P1 for pixels in the same row and column, but also includes values for P1 itself. The calculation of N is made independent of resolution by multiplying by the scale magnification (the same magnification for X and Y). This process involves inputs and outputs (Z) as shown in FIG. 121.NCan always be expressed as a process having 1).
[0839]
ZNIs always 1. XNAnd YNIs not yet normalized (because ZN= 1). Normalization of N is performed by N. Multiplication by 1 / || N || is 1 time instead of 3 times because it is delayed until L is calculated.
[0840]
The actual process of calculating N is shown in FIG. 122.
[0841]
The following constants are set by the software.
[0842]
[Table 82]
Figure 2001523900
Calculation of L
Directional light
When the light source is at infinity, the light source has an effective constant light vector L. L is
L = [XL, YL, ,
ZL]
|| L || = 1
1 / || L || = 1
It is normalized and calculated by the software as in.
[0843]
These properties can be used instead of specifically calculating L and 1 / || L ||, and other calculations can be optimized. This process is shown in FIG. 123.
[0844]
Omni light and spot light
When the light source is not at infinity, L is a vector from the current point P to the light source PL. P = [XP, ,
YP, 0], so L is
L = [XL, YL, ,
ZL]
XL= XP-XPL
YL= YP-YPL
ZL= -ZPL
Given by. X by multiplying 1 / || L ||L, YL, And ZLNormalize each of. The 1 / || L || calculation (which will be used later during normalization) is
V = XL 2+ YL 2+ ZL 2
And then
V-1 / 2
Is executed by calculating.
[0845]
In this case, the calculation of L can be expressed as a process with inputs and outputs as shown in FIG. 124.
[0846]
XPAnd YPIs the coordinates of the image for which the illuminance is calculated, ZPIs always 0.
[0847]
The actual process of calculating L is shown in FIG.
[0848]
The following constants are set by the software.
[0849]
[Table 83]
Figure 2001523900
N. Calculation of L
The calculation of the inner product of vector N and vector L is
XNXL+ YNYL+ ZNZL
Defined by.
[0850]
No bump map
When there is no bump map, N is constant [0,0,1]. Therefore, N. L is ZLIt is simplified to.
[0851]
Bump map available
When a bump map exists, the inner product needs to be calculated directly. Rather than fetching the normalized N component, normalization is performed after obtaining the inner product of the unnormalized N and the normalized L. L is normalized by software (when constant) or by the L calculation process. This process is shown in Figure 126.
[0852]
ZNIs defined to be 1, so it is not necessary as an input. But instead, 1 / || N || is needed to normalize the results. N. An actual process for calculating L is shown in FIG. 127.
[0853]
Calculation of R / V
RV is necessary as an input to the calculation of the mirror surface contribution. Since V = [0,0,1], only the Z component is needed. Therefore, RV is
R ・ V = 2ZN(NL) -ZL
It is simplified to.
[0854]
In addition, denormalized ZNSince = 1, normalization ZN= 1 / || N ||.
[0855]
No bump map
The simplest implementation is when N is constant (ie, no bump map). Since N and V are constants, N.I. L and RV are
V = [0, 0, 1]
N = [0, 0, 1]
L = [XL, YL, ,
ZL]
N. L = ZL
R ・ V = 2ZN(NL) -ZL
= 2ZL-ZL
= ZL
Simplified as.
[0856]
Normalized Z when L is constant (directional light source)LCan be given in the form of a constant when RV is required. When L changes (when omni light and spot light), normalized ZLMust be calculated on the fly. It is obtained as the output of the L calculation process.
[0857]
Bump map available
When N is not constant, the process of calculating RV is a generalized formula, ie
R ・ V = 2ZN(NL) -ZL
Just carry out. The inputs and outputs are shown in FIG. 128 and the actual implementation is shown in FIG. 129.
[0858]
Calculation of damping constant
Directional light
When the light source is at infinity, the light intensity does not change across the image. Therefore, the damping constant fattIs 1. This constant can be used to optimize the illumination calculation for an infinity light source.
[0859]
Omni light and spot light
When the light source is not at infinity, the light intensity is:
fatt= F0+ F1/ D + f2/ D2
It changes according to.
[0860]
Coefficient f0, F1And f2Can be set appropriately to attenuate the light intensity to be constant, linear with respect to distance, or with the square of distance.
[0861]
Since d = || L ||, fattThe calculation of can be expressed as a process with inputs and outputs as shown in FIG.
[0862]
fattThe actual process of calculating is defined in FIG. 131.
[0863]
The following constants are set by the software.
[0864]
[Table 84]
Figure 2001523900
Calculation of cone and penumbra factors
Directional light and omni light
These two light sources are not focused and therefore do not have a cone or penumbra. Cone-penumbra scaling factor fcpIs 1. This constant can be used to optimize the illumination calculations for directional and omni light sources.
[0865]
Spot light
Spot light is focused on a specific target point (PT). The intensity of the spotlight varies depending on whether a particular point in the image is inside the cone, in the penumbra, or outside the cone / penumbra region.
[0866]
With reference to FIG. 132, f for penumbracpThe graph of is shown. F at 470 inside the conecpIs 1 and f at the outside 471 of the penumbracpIs 0. From the edge of the cone to the end of the penumbra, the light intensity varies according to the cubic function 472.
[0867]
Various vectors for the calculation of penumbra 475 and cone 476 are shown in FIGS. 133 and 134.
[0868]
By examining the surface of the image in one dimension as shown in FIG. 134, three angles A, B and C are defined. A is the angle between the target point 479, the light source 478, and the end 480 of the cone. C is the angle between the target point 479, the light source 478, and the end 481 of the penumbra. Both of these are constant for a given light source. B is an angle between the target point 479, the light source 478, and the calculation target 1482, and changes for each point calculated on the image.
[0869]
Here, the ranges A to C are normalized from 0 to 1, and B is the following equation,
(BA) / (CA)
Find the distance that fits between that angle range.
[0870]
The range is rounded to the range 0 to 1, and this value is fcpUsed as a lookup for a cubic approximation of.
[0871]
Therefore, fattThe calculation of can be expressed as a process with inputs and outputs as shown in FIG. 135, f.cpThe actual process of calculating is shown in FIG. 136, where the following constants are set by the software.
[0872]
[Table 85]
Figure 2001523900
The following lookup table is used.
[0873]
[Table 86]
Figure 2001523900
Calculation of ambient light contribution
Peripheral illumination is performed once for each pixel, regardless of the number of lights applied to the image, and is independent of the bump map.
[0874]
The peripheral illumination calculation process can be represented as a process having inputs and outputs as shown in FIG. 131. To implement this process, each pixel from the input image (O) as shown in FIG. 138.d) Is a constant value (Iaka), And the following constants are set by the software.
[0875]
[Table 87]
Figure 2001523900
Calculation of diffuse contribution
Each light applied to the surface produces diffuse illumination. Diffuse lighting is based on the following formula,
Diffuse = kdOd(NL)
Represented by. Two types of implementation can be considered.
[0876]
Implementation example 1-Constants N and L
When both N and L are constants (when there is no bump map with directional light)
N. L = ZL
Is. Therefore,
Diffuse = kdOdZL
Is.
[0877]
OdThe actual process of calculating the diffuse contribution is as shown in FIG. 139, since only variables are variables, and the following constants are set by the software.
[0878]
[Table 88]
Figure 2001523900
Implementation example 2-Non-constants N and L
When either N or L is non-constant (when it is a bitmap or illumination from omni light or spot light), the diffuse calculation is performed by the following equation.
Diffuse = kdOd(NL)
It is executed directly according to.
[0879]
The diffuse calculation process can be represented as a process with inputs as shown in FIG. N. L is N.I. Calculated using the L calculation process or given as a constant. The actual process of calculating the diffuse contribution is as shown in FIG. 141, where the following constants are set by the software.
[0880]
[Table 89]
Figure 2001523900
Mirror surface contribution calculation
Each light applied to the surface produces mirror illumination. Mirror lighting is based on the following formula,
Mirror light = ksOs(RV)n
Represented by. here,
Os= KscOd+ (1-ksc) Ip
Is.
[0881]
There are two implementations of the mirror light calculation process.
[0882]
Implementation example 1-Constants N and L
The first implementation example is when both N and L are constants (directed light with no bump map). Since N, L and V are constant, N.I. L and RV are also constant:
V = [0, 0, 1]
N = [0, 0, 1]
L = [XL, YL, ,
ZL]
N. L = ZL
R ・ V = 2ZN(NL) -ZL
= 2ZL-ZL
= ZL
In this way, the mirror light calculation
Mirror light = ksOsZL n
= KsZL n(KscOd+ (1-ksc) Ip)
= KskscZL nOd+ (1-ksc) IpksZL n
Simplified as.
[0883]
O in mirror light calculationdSince only variables are variables, the calculation of the mirror light contribution can be expressed as a process with inputs and outputs as shown in FIG. 142, and the actual process of calculating the mirror light contribution is shown in FIG. 143. The following constants are set by the software.
[0884]
[Table 90]
Figure 2001523900
Implementation example 2-Non-constants N and L
This implementation example is when either N or L is not constant (when it is illumination from a bitmap, or omni light or spot light). This means that it is necessary to give R ・ V, and R ・ VnMust be calculated.
[0885]
The mirror light calculation process can be represented as a process with inputs and outputs as shown in FIG. 144. FIG. 145 represents the actual process of calculating the mirror light contribution, with the following constants set by the software.
[0886]
[Table 91]
Figure 2001523900
The following lookup table is used.
[0887]
[Table 92]
Figure 2001523900
When ambient light is the only lighting
This process is very simple when peripheral illumination is the only light source. This is because there is no need to add ambient light throughout the process as shown in FIG. 146. The image can be vertically divided into two compartments and each of the halves can be processed simultaneously by duplicating the peripheral illumination logic (thus a total of two multiplication ALUs and four. Use the sequential italator of). Therefore, the timing is 1/2 cycle per pixel to which the ambient light is applied.
[0888]
A typical lighting case is a scene illuminated by one or more lights. In these cases, the ambient light calculation is so easy that the ambient light calculation is included with the processing of each light source. The first light to be processed is the exact IakaShould have a set value, the following light is IakaThe value of should be 0 (to avoid multiple peripheral illumination contributions).
[0889]
If the ambient light is treated as a separate path (rather than the first path), then the ambient light needs to be added to the current calculated value (reading and writing to the same address is required). An overview of the process is shown in Figure 147.
[0890]
This process uses three image italators and one multiplication ALU and takes an average of one cycle per pixel.
[0891]
Infinite light source
In the case of an infinite light source, a constant light source intensity is obtained over the entire image. L and fattBoth are constants.
[0892]
No bump map
When there is no bump map, the constant normal vector N [0,0,1] exists. Lighting complexity is N, L and fattIs significantly reduced by being constant. The process of shining a single directional light without bump mapping is shown in FIG. 147, where the following constants are set by the software.
[0893]
[Table 93]
Figure 2001523900
In the case of a single infinite light source, it is required to perform a logical operation as shown in FIG. 148, where K1From K4Is a constant with the following values.
[0894]
[Table 94]
Figure 2001523900
This process is K2, K3And K4Can be simplified because is a constant. Since the calculation of the mirror surface light contribution and the diffused light contribution (using three of the multiplied ALUs) is basically complicated, it is possible to safely add the ambient light calculation as the fourth multiplied ALU. The first infinite light source to be processed is the true peripheral light parameter IakaAll subsequent infinite light is IakaCan be set to 0. Peripheral illumination calculation is virtually eliminated.
[0895]
When the first light is illuminated by an infinite light source, it is not necessary to capture the existing contributions of other light sources, the situation is shown in FIG. 149, and the constants take the following values.
[0896]
[Table 95]
Figure 2001523900
If the infinite light source is not the first light to illuminate, then the existing contributions produced by the previously processed light must be captured (the same constants apply), the situation being shown in FIG. 148. ..
[0897]
In the first case, two sequential iterators 490, 491 are required, and in the second case, three sequential iterators 490, 491, 492 are required (extra italators are the contribution of the preceding light). Needed to read). In both cases, the application of an infinite light source without a bump map requires one cycle per pixel, and optionally includes the application of ambient light.
[0898]
Bump map available
When the bump map exists, the normal vector N needs to be calculated for each pixel and is applied to the constant light source vector L. 1 / || N || is used to calculate RV, which is required as an input to the mirror light calculation 2 process. The following constants are set by the software.
[0899]
[Table 96]
Figure 2001523900
The bump map sequential read italator 490 is responsible for reading the current line of the bump map. The current line is given as an input to determine the slope with respect to X. The bump map sequential read iterators 491 and 492 play a role of reading the lines above and below the current line. They provide input to determine the slope with respect to Y.
[0900]
Omni light
In the case of an omni light source, the light vector L and the attenuation constant fattChanges pixel by pixel in the image. Therefore, L and fattBoth must be calculated pixel by pixel.
[0901]
No bump map
When there is no bump map, the constant normal vector N [0,0,1] exists. L must be calculated for each pixel, but N. Both L and R / V are ZLIt will be simplified to. In the absence of bump-ups, the application of omni-light is calculated as shown in FIG. 149 and the following constants are set by the software.
[0902]
[Table 97]
Figure 2001523900
This algorithm optionally captures contributions from the preceding light source and includes ambient light calculations. Peripheral light only needs to be captured once. For all other optical paths, the appropriate constant in the peripheral illumination calculation process should be set to 0.
[0903]
The algorithm as shown requires a total of 19 multiplications / accumulations. The time required for lookup is one cycle during the calculation of L and four cycles during the calculation of the mirror light contribution. Therefore, the processing time of 5 cycles is the best that can be realized. If the ALU cannot be optimally microcoded for that function, the time required increases up to 6 cycles. The speed for applying omni light to an image without associated bitmaps is 6 cycles per pixel.
[0904]
Bump map available
When omni light is applied to an image with an associated bump map, N, L, N. et al. All calculations of L and RV are required. The process of applying omni light to an image with associated bump maps is shown in FIG. 150, where the following constants are set by the software.
[0905]
[Table 98]
Figure 2001523900
This algorithm optionally captures contributions from the preceding light source and includes ambient light calculations. Peripheral light needs to be captured only once. For all other optical paths, the appropriate constant in the peripheral illumination calculation process should be set to zero.
[0906]
The algorithm as shown requires a total of 32 multiplications / accumulations. The time required for lookup is one cycle each during the calculation of both L and N, and four cycles for the mirror light contribution calculation. However, the lookups required for N and L are the same (thus two LUs implement three LUs). The processing time of 8 cycles is appropriate. If the ALU for the function cannot be optimally microcoded, the time required is extended to 9 cycles. The speed at which omni light is applied to the image with the associated bitmap is 9 cycles per pixel.
[0907]
Spot light
Spot light is similar to omni light, but with an attenuation constant fattBut the cone / penumbra factor that efficiently collects light around the targetfcpThe difference is that it has been changed by.
[0908]
No bump map
When there is no bump map, the constant normal vector N [0,0,1] exists. L must be calculated for each pixel, but N. Both L and R / V are ZLIt will be simplified to. FIG. 151 is an explanatory diagram of irradiating the image with spot light, and the following constants are set by software.
[0909]
[Table 99]
Figure 2001523900
This algorithm optionally captures contributions from the preceding light source and includes ambient light calculations. Peripheral light only needs to be captured once. For all other optical paths, the appropriate constant in the peripheral illumination calculation process should be set to 0.
[0910]
The algorithm as shown requires a total of 30 multiplications / accumulations. The time required for the lookup is one cycle during the calculation of L, four cycles during the mirror light contribution calculation, and two sets of four-cycle lookups during the cone / penumbra calculation.
[0911]
Bump map available
When spot light is applied to an image with an associated bump map, N, L, N. et al. All calculations of L and RV are required. The process of applying a single spotlight to an image with associated bump maps is shown in FIG. 152, where the following constants are set by the software.
[0912]
This algorithm optionally captures contributions from the preceding light source and includes ambient light calculations. Peripheral light needs to be captured only once. For all other optical paths, the appropriate constant in the peripheral illumination calculation process should be set to zero. The algorithm as shown requires a total of 41 multiplications / accumulations.
[0913]
Printhead 44
FIG. 153 is an explanatory diagram of the logical layout of a single printhead, which is logically composed of eight segments, each printing two layers of cyan, magenta, and yellow on a portion of the page.
[0914]
Loading of print segments
Before printing anything, each of the eight segments of the printhead must be loaded with six rows of data corresponding to the following relative rows in the final output image:
Line 0 = line N, yellow, even dots 0, 2, 4, 6, 8 ,. .. ..
Line 1 = line N + 8, yellow, odd dots 1, 3, 5, 7, ... .. ..
Line 2 = line N + 10, magenta, even dots 0, 2, 4, 6, 8 ,. .. ..
Line 3 = line N + 18, magenta, odd dots 1, 3, 5, 7, ... .. ..
Line 4 = line N + 20, cyan, even dots 0, 2, 4, 6, 8 ,. .. ..
Line 5 = line N + 28, cyan, odd dots 1, 3, 5, 7, ... .. ..
Each segment prints dots on different parts of the page. Each segment prints 750 dots in one color, i.e., 375 even dots on one line and 375 odd dots on another line. The eight segments contain dots corresponding to the positions.
[0915]
[Table 100]
Figure 2001523900
Each dot is represented by one bit in the printhead segment. The data must be loaded by one bit at a time by placing the data on the BitValue pin of the segment and clocked to the shift register of that segment according to the BitClock. The data is loaded into a single register, so the order in which the bits are loaded should be correct. The data can be clocked to the printhead at a maximum rate of 10 MHz.
[0916]
When all the bits are loaded, the bits are transferred in parallel to the printhead output buffer, ready for printing. This transfer is performed by a single pulse on the ParallelXferLock pin of the segment.
[0917]
Print control
Not all printheads need to be printed at the same time to save power. The set of control lines allows printing of specific dots. An external controller such as ACP can change the number of dots printed at the same time, as well as the interval between print pulses, depending on speed and / or power requirements.
[0918]
Each segment contains five Nozzle Select lines, which are decoded to select 32 sets of nozzles per row. Since there are 375 nozzles in each row, there are 12 nozzles in each set. Further, two Bank Enable lines are provided, one for each of the even and odd lines of color. Finally, each segment contains three ColorEnable (color enable) lines, one for each of the C, M and Y colors. A pulse on a ColorEnable line causes a designated nozzle on a designated line of color to print. The pulse is typically 2
The interval of s.
[0919]
When all the segments are controlled by the same set of NozzelSelect line, BankEnable line, and ColorEnable line (wired from the outside to the printhead), the following items are satisfied.
[0920]
When both odd and even banks print at the same time (when both Bank Enable bits are set), 24 nozzles per segment, that is, a total of 192 nozzles, fire at the same time, 5.7. Consume watts.
[0921]
If the odd and even banks print independently, only 12 nozzles per segment, ie a total of 96, fire at the same time, consuming 2.85 watts.
[0922]
Printhead interface 62
The printhead interface 62 connects the ACP to the printhead and supplies both data and the appropriate signal to the external printhead. The printhead interface 62 works in conjunction with both the VLIW processor 74 and a software algorithm running on the CPU to print a photo in about 2 seconds.
[0923]
An overview of input and output to the printhead interface is shown in FIG. 154. The address and data bus are used by the CPU to specify the addresses of various registers of the printhead interface. A single BitClock output line connects to all eight segments on the printhead. The eight DataBits lines are connected to each segment one by one and are simultaneously clocked into the eight segments of the printhead (based on the BitClock pulse). For example, at the same time, dot 0 is a segment0Transferred to, dot 750 transferred to segment 1, dot 1500 transferred to segment2Transferred to, and so on.
[0924]
The VLIW output FIFO stores dithered two-level C, M, and Y 6000 x 9000 resolution print images in the correct order for output to eight DataBits lines. Since the ParallelXferLock is connected to each of the eight segments of the printhead, all segments transfer their respective bits simultaneously with a single pulse. Finally, the Nozzle Select line, Bank Enable line and Color Enable line are connected to each of the eight segments so that the printhead interface can control the interval between C, M and Y drop pulses and the number of drops printed at each pulse. become. The printhead interface registers can specify pulse intervals from 0 to 6 μs, typically 2 μs.
[0925]
Image printing
Before the image is placed under the control of the Artcam user, the following two phases, namely
1. 1. Preparing the image to be printed
2. Printing the prepared image
It is necessary to do.
[0926]
Image preparation only needs to be done once. Image printing can be performed as many times as necessary.
[0927]
Image preparation
To prepare the image for printing,
1. 1. Converting photographic images to printed images
2. Rotate the printed image (internal color space) to align the output with the orientation of the printer
3. 3. Up-interpolation of compressed channels (if needed)
4. Color conversion from internal color space to CMY color space suitable for specific printers and inks
Is included.
[0928]
At the end of the image preparation, the print preparation of the 4.5 MB correctly oriented 1000 × 1500 CMY color space image is completed.
[0929]
Converting photographic images to printed images
In order to convert a photographic image into a print image, it is necessary to execute a Vark script to execute image processing. This script is the default image enhancement script or a Vark script taken from the currently inserted Artcard. The Walk script is executed by the CPU and accelerated by a function executed by the VLIW vector processor.
[0930]
Rotation of printed image
Images in memory are initially oriented so that the top edge is facing up. This makes it possible to simplify the Vark process. Before the image is printed, the image must be aligned with the orientation of the print roll. The realignment only needs to be done once. Subsequent prints of the printed image will be properly rotated in advance.
[0931]
The transformations to be applied are simply inverse transformations of the transformations applied during capture from the CCD when the user presses the Artcam's "imaging" button. If the original rotation is 0, no conversion is needed. If the original rotation is +90 degrees, then it needs to be rotated by -90 degrees (same as 270 degrees) before printing. The method used to apply this rotation is the Vark-accelerated affine transformation function. The affine transformation engine is called to rotate each color channel independently. It should be noted that the color channel cannot rotate in its original position. Instead, the color channel can utilize the space previously used for the expanded single channel (1.5MB).
[0932]
FIG. 155 is an explanatory diagram of an example of rotation of the Lab image, and the a channel and the b channel are compressed to 4: 1. The L channel can be rotated to the space that is no longer needed (single channel area), then the a channel can be rotated to the empty space left after L, and finally b can be rotated. .. The total time required to rotate the three channels is 0.09 seconds. This is an acceptable amount of time before the first image print. Subsequent prints do not incur this overhead.
[0933]
Up interpolation and color conversion
Lab images must be converted to CMY before printing. Various processes are performed depending on whether the a channel and the b channel of the Lab image are compressed. If the Lab image is compressed, channels a and b must be decompressed before the color conversion is performed. If the Lab image is uncompressed, color conversion is the only necessary step. The Lab image is up-interpolated (if channels a and b are compressed) and converted into a CMY image. A single VLIW process that combines scale and color conversion can be used.
[0934]
The method used to perform the color conversion is the Vark accelerated color conversion function. The affine transformation engine is callable because it rotates each color channel independently. The color channel cannot be rotated in its original position. Instead, the color channel can utilize the space previously used for the expanded single channel (1.5MB).
[0935]
Image printing process
The image printing process involves capturing a 1000 × 1500 CMY image placed in the correct orientation and generating data and signals to be transmitted to an external printhead. This process requires a CPU to work with the VLIW process and printhead interface.
[0936]
The resolution of the image in Artcam is 1000x1500. The printed image has a resolution of 6000 x 9000 dots and a very simple relationship: 1 pixel = 6 x 6 = 36 dots is obtained. As shown in FIG. 156, each dot is 16.6 μm, so a 6 × 6 square dot is 100 square μm. Since each dot has two levels, the output needs to be dithered.
[0937]
The image should be printed in about 2 seconds. For 9000 lines of dots, this means that the time between printing each line is 222 μs. The printhead interface must generate 6000 dots within this time, averaging 37 ns per dot. However, since each dot is composed of three colors, the printhead interface must generate each color component within about 12 ns, i.e. within one clock cycle of ACP (10 ns at 100 MHz). One VLIW process is responsible for calculating the next 6000 dot line to be printed. Odd and even C, M and Y dots are generated by dithering inputs from six types of 1000x1500 image lines. The second VLIW process takes in the previously calculated 6000 dot line and accurately generates 8-bit data for the eight segments to be transferred from the printhead interface to the printhead in a single transfer. Has a role to play.
[0938]
The CPU process updates the registers in the first VLIW process 3 three times per print line (one per color component = 27,000 times in 2 seconds), and prints the registers in the second VLIW process. Update once every time (9000 times in 2 seconds). The CPU is one line ahead of the VLIW process to do this.
[0939]
Finally, the printhead interface takes in 8-bit data from the VLIW output FIFO and outputs it as is to the printhead to properly generate a BitClock signal. After all the data has been transferred, a ParallelXferLock signal is generated to load the data for the next print line. In conjunction with the transfer of data to the printhead, a separate timer sends signals for different print cycles of the printhead using the NozzleSelect line, ColorEnable line and BankEnable line specified by the printhead interface internal registers. Generate.
[0940]
In addition, the CPU controls various motors and cutting machines via a parallel interface during the printing process.
[0941]
C, M and Y dot generation
The input to this process is a 1000x1500 CMY image placed in the correct orientation for printing. This image is uncompressed. As shown in FIG. 157, the VLIW microcode program captures CMY images and produces the dithered C, M and Y pixels requested by the printhead interface.
[0942]
This process is performed three times, once for each of the three color components. This process does not include two subprocesses running in parallel, one producing odd dots and the other producing even dots. Each subprocess takes one pixel from the input image and produces three output dots (because 1 pixel = 6 output dots, and each subprocess is associated with either even or odd dots. Because). One output dot is generated every cycle, but the input pixel is read only once every three cycles.
[0943]
The original dither cell is a 64x64 type cell, and each entry is 8 bits. This original cell is divided into odd and even cells, each of which remains 64 high, but only 32 entries wide. The even-numbered dither cells store the original dither cell pixels 0, 2, 4, etc., while the odd-numbered dither cells store the original dither cell pixels 1, 3, 5, etc. Since the dither cells are repeated across the line, a single 32-byte line for each of the two dither cells is needed between the entire line and can therefore be fully cached. Since the odd and even lines of a single process line are alternated with a distance of 8 dots, it is convenient to rotate every 8 lines of the odd dither cell. Therefore, it is possible to use the same offset for both odd and even dither cells. As a result, the even dither cell line corresponds to the even entry of the original dither cell line L, and the odd dither cell line corresponds to the odd entry of the original dither cell line L + 8.
[0944]
This process is performed three times, once for each of the color components. The CPU software routine must ensure that the sequential read iterators for odd and even lines specify the correct image line for the printhead. For example, in order to generate one set of 18,000 dots (three sets of 6000 dots),
-Yellow even dot line = 0, therefore input yellow image line = 0/6 = 0
-Yellow odd dot line = 8, therefore input yellow image line = 8/6 = 1
-Magenta even dot line = 10, therefore input magenta image line = 10/6 = 1
-Magenta odd dot line = 18, therefore input magenta image line = 18/6 = 3
Cyan even dot line = 20, therefore input cyan image line = 20/6 = 3
Cyan odd dot line = 28, therefore input cyan image line = 28/6 = 4
Is. The set of input image lines that follow is
・ Y = [0,1], M = [1,3], C = [3,4]
・ Y = [0,1], M = [1,3], C = [3,4]
・ Y = [0,1], M = [2,3], C = [3,5]
・ Y = [0,1], M = [2,3], C = [3,5]
・ Y = [0,2], M = [2,3], C = [4,5]
Is.
[0945]
However, the dither cell data does not have to be updated for each color component. The three-color dither cells are the same, but are offset by two dot lines for each component.
[0946]
The dithered output is written to the write sequential, and the odd and even dithered dots are written to two separate outputs. Since the same two write italators are used for all three color components, they are continuous within the odd and even dot splits.
[0947]
While a set of dots is generated for the print line, the previously generated set of dots is merged by a second VLIW process as described in the next section.
[0948]
Merged 8-bit dot output generation
This process creates an 8-bit data stream for capturing a line of dithered dots and outputting them to a printhead interface via a VLIW output FIFO, as shown in FIG. 158. This process requires the entire line to be prepared. This is because this process requires quasi-random access to most of the dithered lines at the same time. The following constants are set by the software.
[0949]
[Table 101]
Figure 2001523900
The sequential read italator specifies a line of previously generated dots, and the italator's registers are set up to limit access to single color components. The distance between subsequent pixels is 375, and the distance between one line and the next is given to be 1 byte. As a result, eight entries are read out for each "line". A single "line" corresponds to 8 bits loaded into the printhead. The total number of "lines" in the image is set to 375. Full cache coherency is maintained by assigning at least eight cache lines to the sequential read iterator. Instead of counting 8 bits, 8 microcode steps implicitly count.
[0950]
The generation process first reads all entries from even dots, synthesizes eight entries into one byte, and outputs the one byte to the VLIW output FIFO. After all 3000 even dots are read, 3000 odd dots are read and processed. The software routine must update the dot addresses of the odd and even sequential read italators once per color component, i.e. three times per line. The two VLIW processes require a total of eight ALUs and VLIW output FIFOs. As long as the CPU can update the registers in two processes as described above, the VLIW processor can generate dithered image dots fast enough to follow the printer.
[0951]
Data card reader
FIG. 159 is a diagram showing a form of a card reader 500 in which an Artcard 9 can be inserted for reading. FIG. 158 is an exploded perspective view of the reader of FIG. 159. The card reader is interconnected with a computer system and includes a CCD reading mechanism 35. The card reader includes pinch rollers 506 and 507 that sandwich the inserted Artcard 9. One roller, eg, roller 506, is driven by an Artcard motor 37 for advancing the card 9 between the two rollers 506 and 507 at a uniform speed. The Artcard 9 is passed over a series of LED lights 512, which are housed in a transparent plastic mold 514 with a semi-circular cross section. This cross section collects, for example, the light from the LED 512 on the surface of the card 9 as the card 9 passes by the LED 512. From its surface, light is reflected to a high resolution linear CCD 34 configured with a resolution of about 480 dpi. Since the surface of the Artcard 9 is encoded to a level of about 1600 dpi, the linear CCD34 supersamples the Artcard surface with a multiplier of about 3 times. The Artcard 9 is further driven at such a speed that the linear CCD 34 can be supersampled in the direction of movement of the Artcard at a rate of about 4800 reads per inch. The scanned Artcard CCD data is sent from the Artcard reader to the ACP 31 for processing. The sensor 49, which can be configured by the optical sensor, functions to detect the presence or absence of the card 13.
[0952]
The CCD reader has a lower substrate 516 and an upper substrate 514 containing a transparent molded plastic. A linear CCD array 34 including a thin and long linear CCD array manufactured by a semiconductor manufacturing process is inserted between the two substrates.
[0953]
With reference to FIG. 160, a partial cross-sectional perspective side view of a configuration example of the CCD reader unit is shown. A series of LEDs, such as the LED 512, operate to emit light as the card 9 passes through the surface of the CCD reader 34. The emitted light passes through a part of the upper substrate 523. The substrate includes a portion having a curved perimeter that collects the light emitted from the LED 512 at a point on the surface on the card 9, eg, point 532, eg, portion 529. The focused light is reflected from point 532 towards the CCD array 34. A series of exaggeratedly shown microlenses, such as the microlens 534, are formed on the surface of the upper substrate 523. The microlens 523 acts to collect the light received from the entire surface at the lower focal point 536 corresponding to a point on the surface of the CCD reader 34 that detects the light incident on the photosensitive portion of the CCD array 34.
[0954]
Many improvements can be considered for the above device. For example, the sensing device on the linear CCD 34 may be staggered. The corresponding microlens 34 can be appropriately formed to focus light on a staggered series of spots, corresponding to a staggered CCD sensor.
[0955]
To aid in reading, the data surface area of Artcard 9 may be modulated in a checkerboard-like pattern, as already described with reference to FIG. 38. Other forms of high frequency modulation are also feasible.
[0956]
It is clear that an Artcard printer can provide data on the storage device Artcard as a printout. Therefore, the Artcard system can be used as a general form of distributing information to the outside of the Artcam device. The Artcard printer can print out the Artcard on a high quality printing surface, print a large number of Artcards on the same paper, and later separate them. On the second surface of the Artcard 9, information about files and the like stored in the Artcard 9 can be printed for subsequent storage.
[0957]
Therefore, the Artcard system allows for a simplified form of storage suitable for use in place of other forms of storage such as CD-ROMs, magnetic disks and the like. Artcard 9 can be mass-produced and therefore can be produced in a substantially low cost form for redistribution.
[0958]
Print roll
FIG. 162 shows the print roll 42 and the print head portion of Artcam. The paper / film 611 is fed to the printing mechanism 15 in a continuous "web-like" process, which includes additional pinch rollers 616-619 and a printhead 44.
[0959]
The pinch roller 613 is connected to a drive mechanism (not shown), and when the print roller 613 rotates, the “paper” in the form of the film 611 is passed through the printing mechanism 615 and exited from the picture output slot 6. A rotary cutting mechanism (not shown) is used to cut rolls of paper 611 to the required photo size.
[0960]
Therefore, it is clear that the printer roll 42 serves to supply the "paper" 611 to the printing mechanism 615 that prints the pictures imaged for photography.
[0961]
FIG. 163 shows an exploded perspective view of the print roll 42. The print roll 42 includes output printer paper 611 that is output under the action of pinch rollers 612, 613.
[0962]
Next, FIG. 164 shows a more complete exploded perspective view of the print roll 42 of FIG. 163 with the "paper" film roll removed. The print roll 42 includes three main components consisting of an ink storage section 620, a paper roll section 622, 623, and an outer casing section 626, 627.
[0963]
First referring to the ink storage section 620, an ink reservoir or ink supply section 633 is provided. The printing ink is contained in three bladder-type containers 630 to 632. The printer roll 42 shall provide full color output ink. Therefore, the first ink reservoir or bladder container 630 contains cyan ink. The second reservoir 631 contains magenta ink and the third reservoir 632 contains yellow ink. Each of the reservoirs 630-632 is designed to have substantially the same volume size, although they may have different volume dimensions.
[0964]
The ink storage sections 621 and 633, together with the cover 624, can be made from the plastic section and are designed to be integrally made using heat seal, UV irradiation, etc. Each of the equalized ink reservoirs 630 to 632 is connected to the corresponding ink channels 639 to 641 and allows ink to flow from the reservoirs 630 to 632 from the corresponding ink output ports 635 to 637. The ink reservoir 632 includes an ink channel 641 and an output port 637, the ink reservoir 631 includes an ink channel 640 and an output port 636, and an ink reservoir 630 includes an ink channel 639 and an output port 7637.
[0965]
During operation, the ink reservoirs 630-632 are filled with the corresponding ink and section 633 is joined to section 621. Ink storage sections 630-632 may be foldable bladder, allowing ink to move back and forth between ink channels 639-641 and fluidly communicate with ink output ports 635-637. In addition, if desired, air intakes can be provided to maintain the pressure associated with the ink channel reservoirs 630-632 as required.
[0966]
The cap 624 can be joined to the ink storage section 620 to form a pressurized cavity accessible from the pneumatic inlet.
[0967]
The ink storage sections 621, 633 and 624 are connected together as an integral unit and are designed to be inserted inside the printer roll sections 622, 623. Printer roll sections 622, 623 are designed to be integrally coupled by snap-fit using male portions 645 to 647 that combine with corresponding female portions (not shown). Similarly, the female portions 654 to 656 are designed to combine with the corresponding male portions 660 to 662. The paper roll sections 622, 623 are therefore designed to be integrally snapped together. One end of the film in the roll is fastened between the two sections 622, 623 when the two sections 622, 623 are joined together. The print film can be rotated on the print roll sections 622, 625, if desired.
[0968]
As mentioned above, the ink storage sections 620, 621, 633, 624 are designed to be inserted inside the paper roll sections 622, 623. Printer roll sections 622, 623 can rotate around stationary ink storage sections 621, 633 and 624 to provide film on demand.
[0969]
The outer casing sections 626 and 627 are further designed to be coupled around the print roll sections 622, 623. Further, the respective ends of the pinch rollers, eg, 612, 613, are designed to be fastened to the corresponding cavities, eg, 670, within the covers 626, 627, the rollers 613 feeding the print film and from the print roll. It is driven from the outside (not shown) for discharge.
[0970]
Finally, the cavity 677 can be provided in the ink storage sections 620, 621 to insert and guide the silicon chip integrated circuit type device 53 for storing information related to the print roll 42.
[0971]
As shown in FIGS. 155 and 164, the print roll 42 is designed to be inserted into the Artcam camera device and coupled to the coupling unit 680, the coupling unit 680 being a connector for wiring to the silicon chip 53. Includes pad 681. Further, the connector 680 includes four end connectors for connection with the ink supply ports 635 to 637. The ink supply port is then connected to an ink supply line, eg, 682, and the ink supply line is then interconnected to a printhead supply port, eg, 687, to transfer ink to the printhead 44 as needed. Shed.
[0972]
The "media" 611 used to form the roll can be composed of a variety of materials designed to print a suitable image on top. For example, an opaque rotatable plastic material can be utilized, transparency can be used by using a transparent plastic sheet, and metallic printing can be performed by using a metallic sheet film. Further, it is possible to use a cloth in the printer roll 42 and print an image on the cloth, but it should be noted that only materials having appropriate rigidity or appropriate backing can be used.
[0973]
When the print media is plastic, it is possible to cover the print media with a layer that fixes and absorbs the ink. In addition, some types of printing media, such as opaque white matte, transparent film, matte transparent film, lenticular array film for three-dimensional three-dimensional printing, metallized film, embossed optical such as lattice or hologram. Variable devices, media pre-printed on the back surface, and media containing a magnetic recording layer can be used. When utilizing metal anchors, the metal anchors can have a polymer base and are covered with a thin (several micron) aluminum or other metal vapor deposition layer, which is then inked through an ink printer mechanism. Covered with a transparent protective layer adapted to accept.
[0974]
The print roll 42 used is inserted inside the camera device and is designed to provide ink and paper for printing images on demand. Ink output ports 635 to 637 are compatible with the corresponding ports in the camera device. The pinch rollers 672 and 673 are operated so that paper can be supplied to the camera device under the control of the camera device.
[0975]
As shown in FIG. 164, the mounted silicon chip 53 is inserted into one end of the print roll 42. In FIG. 165, the authentication chip 53 is shown in more detail, which includes four communication leads 680 to 683 that communicate details from the chip 53 to the corresponding camera into which the chip is inserted.
[0976]
With reference to FIG. 165, the chip can be made independently by putting a small integrated circuit 687 in epoxy and connecting a bonding lead, for example 688, from external communication leads 680 to 683. The integrated chip 687 is about 400 square microns and the scribe boundary is 100 microns. The chips are then attached to the appropriate surface of the cavity of the print roll 42. FIG. 166, which is an exploded view of the apparatus of FIG. 165, shows an integrated circuit 67 interconnected to bonding pads 681 and 682.
[0977]
In FIGS. 164A to 164E, reference numeral 1100 indicates a print cartridge 1100 as a whole. The print cartridge 1100 includes an ink cartridge 1102 according to the present invention.
[0978]
The print cartridge 1100 includes a housing 1104. As shown in detail in FIG. 2, the housing 1104 is defined by an upper molded part 1106 and a lower molded part 1108. The molded parts 1106 and 1108 are sandwiched by clips 1110. The housing 1104 is covered by the label 1112, which gives the cartridge 1100 an attractive appearance. Label 1112 carries information that enables the user to use the cartridge 1100.
[0979]
The housing 1104 defines a chamber 1114 in which the ink cartridge 1102 fits. The ink cartridge 1102 is fixedly supported in the chamber 1114 of the housing 1104.
[0980]
Supplies of print media 1116, including rolls 1126 of film / media 1118 wrapped around the former, are housed in chamber 1114 of housing 1104. The former 1120 is slidably housed in the ink cartridge 1102 and is rotatable with respect to the ink cartridge.
[0981]
As shown in FIG. 164B, the upper molded part 1106 and the lower molded part 1108 are integrally clipped, the outlet slot 1122 is defined, and the tongue-shaped portion of the paper 1118 is ejected through the outlet slot.
[0982]
The cartridge 1100 includes a roller assembly 1124, which helps remove curls of the paper 1118 when the paper 1118 is fed from the roll 1126 and helps push the paper 1118 through slot 1122. The roller assembly 1124 includes a driving roller 1128 and two driven rollers 1130. The driven roller 1130 is rotatably supported by the ribs 1132, which bulge from the floor 1134 of the lower molded part 1108 of the housing 1104. The rollers 1130, together with the drive rollers 1128, provide positive traction to the paper 1118 to control the speed and position of the paper 1118 as it is ejected from the housing 1104. Roller 1130 is an injection molded part of a suitable synthetic plastic material such as polystyrene. In this regard, the upper molded part 1106 and the lower molded part 1108 are also injection molded parts of suitable synthetic plastic materials such as polystyrene.
[0983]
The drive roller 1128 includes a drive shaft 1136 rotatably moored between the mating recesses 1138 and 1140 defined on the side walls of the upper molded parts 1106 and the lower molded parts 1108 of the housing 1104. The opposite end 1142 of the drive roller 1128 is rotatably held by the upper molded part 1106 and the lower molded part 1108 of the housing 1140 in a suitable configuration (not shown).
[0984]
The drive roller 1128 is a two-shot injection molded part, including a shaft 1136 made of high impact polystyrene, on which bearing means in the form of an elastomer or rubber roller portion 1144 are molded. These portions 1144 securely lock the paper 1118 and prevent the paper 1118 from slipping when the paper 1118 is supplied from the cartridge 1100.
[0985]
The end of the roller 1128 protruding from the housing 1104 has an engaging body in the shape of a cross structure 1146 (FIG. 164A), which is a print of a camera-like device to which the print cartridge 1100 is mounted. Combines with a geared drive interface (not shown) of the head assembly. This structure ensures that the speed at which the paper 1118 is fed to the printhead is synchronized with the printing by the printhead, thus ensuring that the ink is accurately aligned on the paper 1118.
[0986]
Ink cartridge 1102 includes a container 1148 in the form of a right-sided extruded part. The container 1148 is extruded from a suitable synthetic plastic material such as polystyrene.
[0987]
In a preferred embodiment of the present invention, the printhead in which the print cartridge 1100 is used together is a multicolor printhead. Therefore, container 1148 is divided into a plurality of, more specifically, four compartments, ie, the reservoir 1150. Each reservoir 1150 contains a different color or different type of ink. In one embodiment, the inks contained in the reservoir 1150 are cyan ink, magenta ink, yellow ink, and black ink. In another embodiment of the present invention, three types of colored inks, cyan ink, magenta ink and yellow ink, are contained in three of the reservoirs 1150, and the fourth reservoir 1150 is visualized only by the infrared spectrum. Contains ink.
[0988]
As clearly shown in FIGS. 164C and 164D, one end of the container 1148 is closed by an end cap 1152. The end cap 1152 has a plurality of openings 1154 defined. Since the opening 1154 is associated with each reservoir 1150, the inside of the reservoir 1150 is maintained at atmospheric pressure at the end of the container 1148 provided with the end cap 1152.
[0989]
The seal structure 1156 is provided on the container 1148 on the end side where the end cap 1152 is provided. The seal structure 1156 includes a quarter circular pellet 1158 made of a gel-like material slidably received in each reservoir 1150. The gel material of pellets 1158 is a compound composed of thermosetting rubber and hydrocarbons. Hydrocarbons are white mineral oils. Thermosetting rubber is a copolymer that gives the mineral oil sufficient rigidity so that the pellet 1158 maintains its shape at normal operating temperatures and at the same time allows the pellet 1158 to slide within its associated reservoir 1150. is there. Suitable thermosetting rubbers are thermosetting rubbers sold by Shell Oil Company under the name "Karton"®. The copolymer is present in the compound in an amount sufficient to impart a gel-like viscosity to each pellet 1158. Typically, the copolymer will be present in an amount of about 3% to 20% by weight, depending on the type used.
[0990]
During use, the compound is heated, resulting in a fluid. When each reservoir 1150 is filled with a particular type of ink, the molten compound is injected into each reservoir 1150 and the compound hardens to form pellets 1158. The atmospheric pressure on the back side of the pellet 1158, that is, the atmospheric pressure at the end of the pellet facing the end cap 1152, causes the self-lubricating pellet 1148 to slide toward the opposite side of the container 1148 as the ink is drawn from the reservoir 1150. Guarantee that. The pellet 1158 stops the ink from escaping from the inverted container, prevents the ink in the reservoir 1150 from becoming dirty, and prevents the ink in the reservoir 1150 from drying out. In addition, pellets 1158 are hydrophobic to prevent ink leakage from reservoir 1150.
[0991]
The opposite end of the container 1148 is closed by the ink collar forming part 1160. The baffle 1162 supported by the molded part 1160 receives the elastomer seal molded part 1164. The hydrophobic elastomer seal molded part 1164 has a sealing curtain 1166 defined inside. Since each sealing curtain 1166 is provided with a slit 1168, a mating pin (not shown) from the printhead assembly can be inserted through the slit 1168 and fluidly communicated with the reservoir 1150 of the container 1148. .. The hollow protrusion 1170 protrudes from the opposite side of the ink collar forming part 1160. Each protrusion 1170 is molded to fit snugly with the associated reservoir 1150 and positions the ink collar molded part at the end of the container 1148.
[0992]
With reference to FIG. 164C, the ink collar forming part 1160 is held in the correct position by the carrier or hidden plate forming part 1172. A four-leaf clover-shaped window 1174 is defined in the hidden plate molded part 1172, and the elastomer seal molded part 1164 can be accessed through the window 1174. The hidden plate molded part 1172 is moored between the upper molded part 1106 and the lower molded part 1108 of the housing 1104. The concealed plate molded parts 1174 and the webs 1176 and 1178 extending from the inner surfaces of the upper molded parts 1106 and the lower molded parts 1108 of the housing 1104 define the compartment 1180. The air filter 1182 is housed in compartment 1180 and is held in the correct position by the end part 1174. The air filter 1182 works with the printhead assembly. Air is blown throughout the nozzle guards of the printhead assembly to clean the nozzle guards. This air is filtered by pulling it through an air filter 1182 using a pin (not shown) housed in the inlet side opening 1184 in the concealed plate 1172.
[0993]
The air filter 1182 is shown in more detail in FIG. 164E. The air filter 1182 includes a filter medium 1192. The filter medium 1192 is based on synthetic fibers and is arranged in a grooved form to increase the surface area available for filtering purposes. Other fibrous cores may be used instead of the paper-based filter medium 1192.
[0994]
The filter medium 1192 is housed in a closed container 1194. The closed container 1194 includes a bottom molded part 1196 and a lid 1198. To accommodate in compartment 1180 of housing 1104, the closed container 1194 is partially annular, i.e. horseshoe-shaped. In this way, the closed container 1194 has a pair of opposing ends 1200. Intake openings 1202 are defined at each end 1200.
[0995]
The exhaust opening 1204 is defined on the lid 1198. The exhaust opening 1204 is initially closed by a film or membrane 1206. When the filter 1182 is mounted in the correct position in the compartment 1180, the exhaust opening 1204 is aligned with the opening 1184 of the concealed plate molded part 1172. A pin from the printhead assembly penetrates the film 1206 and draws air from the atmosphere through the air filter 1182 before air is blown onto the nozzle guard and the printhead of the printhead assembly.
[0996]
The bottom molded part 1194 includes positioning structures 1208 and 1210 for installing the filter medium 1192 in the correct position on the closed container 1194. The positioning structure 1208 is in the form of a plurality of pins, while the positioning structure 1210 is in the form of ribs that lock the ends 1214 of the filter medium 1192.
[0997]
After the filter medium 1192 is placed in the correct position on the bottom molded part 1196, the lid 1198 is fixed to the bottom molded part 1196 by ultrasonic welding or a similar method to seal the bottom molded part 1196 with the lid 1198. ..
[0998]
When the print cartridge 1100 is assembled, the film or film 1186 is placed over the outer edge of the hidden plate molded part 1172 to close the window 1174. The film or film 1186 is perforated or ruptured by a pin for use. The film 1186 prevents debris from entering the ink reservoir 1150.
[0999]
The authentication means in the form of the authentication chip 1188 is housed in the opening 1190 of the hidden plate molded part 1172. The authentication chip 1188 is queried by the printhead assembly 1188 to ensure that the print cartridge 1100 is compatible and compliant with the printhead assembly of the device.
[1000]
Authentication chip
Authentication chip 53
The authentication chip 53 of the preferred embodiment is responsible for ensuring that only properly manufactured print rolls are used in the camera system. The authentication chip 53 utilizes techniques that are generally useful when used with respect to any consumables, not limited to print roll systems. Manufacturers of other systems that require consumables (such as laser printers that require toner cartridges) struggle with the problem of certifying consumables and have varying levels of success. Most rely on specialized packaging. However, this does not limit home refilling work and replica production. Preventing copying is important to prevent incompletely manufactured substitute consumables from damaging the underlying system. For example, poorly filtered ink can clog the print nozzles of inkjet printers, and consumers hold the system manufacturer accountable and do not allow the use of unauthorized consumables.
[1001]
To solve the problem of authentication, the authentication chip 53 includes an authentication code and a circuit specially designed for copy protection. The chip is manufactured using standard flash memory manufacturing processes and is inexpensive enough to be incorporated into consumables such as ink and toner cartridges. Once programmed, the authentication chip complies with NSA export guidelines, as described below. Certification is a very large and ever-growing field. The following description is only relevant for consumables certification.
[1002]
Symbol name
The following symbolic names are used throughout the description of this embodiment.
[1003]
[Table 102]
Figure 2001523900
Basic terms
The message indicated by M is in plain text. The process of converting M into a ciphertext C in which the substance of M is hidden is called encryption. The process of converting C back to M is called decoding. By representing the encryption function as E and the decryption function as D, the following identity:
E [M] = C
D [C] = M
Is obtained. Therefore, the following identity:
D [E [M]] = M
Is established.
[1004]
Symmetrical encryption method
What is a symmetric encryption algorithm?
Encryption function E is key K1Depends on;
Decryption function D is key K2Depends on;
K2Is K1Can be derived from;
K1Is K2Can be derived from;
Is the algorithm.
[1005]
In most symmetric algorithms, K1Is usually K2Is equal to. But K1Is K2A single key is sufficient for a mathematical definition if one key can be derived from the other, even if it is not equal to. Therefore,
EK[M] = C
DK[C] = M
Can be expressed as.
[1006]
There are numerous symmetric algorithms, from well-known textbooks to sophisticated modern algorithms. Most of them are uncertain in that current cryptanalysis techniques can be successful in attacking to the extent that K can be derived. The security of a particular symmetric algorithm is usually a function of two things, the strength of the algorithm and the length of the key. The following algorithms include features suitable for use in authentication chips:
DES;
Blowfish;
RC5;
IDEA.
[1007]
DES
DES (Data Encryption Standard) is a US and international standard that uses the same key for encryption and decryption. The key length is 56 bits. It is implemented in hardware and software, but the original design was hardware-only. The original algorithm used in DES is described in US Pat. No. 3962539. The DES variant, called the Triple DES variant, is more secure, but the three keys: K1, K2And K3Need. These keys are
EK3[DK2[EK1[M]]] = C
DK3[EK2[DK1[C]]] = M
It is used in the form of.
[1008]
The main advantage of Triple DES is that it can be more secure than single-key DES using existing DES implementations. In particular, Triple DES provides protection equivalent to a 112-bit key length. Triple DES does not provide the equivalent protection of a 168-bit key (3x56) that is simply expected. Equipment that performs Triple DES decryption and / or encoding cannot be removed from the United States.
[1009]
Blowfish
Blowfish is a symmetric block cipher first proposed by Schneier in 1994. It uses variable length keys from 32 bits to 448 bits. Moreover, this is considerably faster than DES. The Blowfish algorithm consists of two parts, a key extension part and a data encryption part. Key expansion converts a key of up to 448 bits into a plurality of subkey arrays of 4168 bytes in total. Data encryption is performed by a 16-round Feistel network. All operations are XOR and addition on 32-bit words, including 4 index array lookups per round. It should be noted that decryption is the same as encryption except that the subkeys are used in reverse order. Therefore, implementation complexity is reduced compared to other algorithms that do not have such symmetry.
[1010]
RC5
Designed by Ron Rivest in 1995, RC5 has variable block size, key size, and number of rounds. However, RC5 typically uses a 64-bit block size and a 128-bit key. The RC5 algorithm consists of two parts, a key extension part and a data encryption part. The key extension converts the key into 2r + 2 subkeys (here, r = number of rounds), and each subkey is w bits. In the case of a 64-bit block size and 16 rounds (w = 32, r = 16), the subkey array is 136 bytes in total. Data decoding is modulo 2wAddition, XOR, and bit rotation are used.
[1011]
IDEA
The first embodied form of the IDEA cryptosystem developed by Lai and Massey in 1990 is called PES. After the discovery of differential cryptanalysis by Biham and Shamir in 1991, the algorithm was enhanced and the results were published as IDEA in 1992. IDEA uses a 128-bit key to manipulate 64-bit plaintext blocks. The same algorithm is used for encryption and decryption. This algorithm is generally considered to be the safest blocking algorithm currently available. This is described in US Pat. No. 5,214,703, issued in 1993.
[1012]
Asymmetric encryption method
Another algorithm that can be used is an asymmetric algorithm. What is an asymmetric encryption algorithm?
Encryption function E is key K1Depends on;
Decryption function D is key K2Depends on;
K2Is K within a reasonable time1Cannot be derived from;
K1Is K within a reasonable time2Cannot be derived from;
Is the algorithm.
[1013]
Therefore,
EK1[M] = C
DK2[C] = M
Is.
[1014]
These algorithms are one of the keys K1Is made public, so it is also called a public key. Therefore, anyone (K1The message can be encrypted (using), but the corresponding decryption key (K)2Only those who have) can decrypt and read the message. In most cases, the following identity:
EK2[M] = C
DK1[C] = M
Is established.
[1015]
This identity is very important. Because the public key K1Anyone who owns can see M, and that M is K2Because it turns out that it is from the owner of. Others cannot produce C. Because it is possible to generate C is K2Because it means knowing. K within a reasonable time2From K1Cannot be derived, and vice versa, K1From K2The inability to derive is, of course, ambiguous by the notion of rational time. As has been demonstrated again, calculations that are expected to take a long time can be realized by introducing faster computers, new algorithms, and so on. The safety of asymmetric algorithms is two problems: factoring large numbers (more specifically, large numbers, which are the products of two large prime numbers), and the difficulty of computing discrete logarithmic functions in finiteness. It is based on the difficulty of one of them. It is speculated that the prime factorization of large numbers is a difficult problem in the understanding of modern mathematics. However, the problem is that prime factorization is faster and easier than expected. Ron
Rivest said in 1977 that a 125-digit prime factorization would take 40,000 trillion years. In 1994, a 129-digit prime factorization was performed. According to Schneier, 1024-bit numbers are now required to obtain the level of security obtained from 512-bit numbers in the 1980s. If the key lasts for years, 1024 bits isn't enough. Rivest revised the key length rating in 1990, advocating 1628 bits to maintain high security until 2005, and 1884 bits for high security to last until 2015. There is. Meanwhile, Schneier suggests that 2048 bits will be needed to get protection from businesses and governments until 2015.
[1016]
There are many public key cryptographic algorithms. Most of them are practically unimplementable, and many generate very large Cs for a given M or require huge keys. Moreover, others, even if safe, are so slow that they cannot be implemented in a matter of years. For this reason, many public key systems are hybrid, the public key mechanism is used to send symmetric session keys, and the session key is used for the actual message. All algorithms have problems with key selection. Random numbers are inadequately secure. Large primes p and q need to be carefully chosen and have the weakness that certain combinations can be easily factored (some weak keys can be tested). However, nevertheless, key selection is not as simple as simply selecting 1024 bits randomly, for example. As a result, the key selection process must also be secure.
[1017]
Among the practical algorithms in use under public scrutiny, the following algorithms:
RSA;
DSA;
EIGamal;
Is suitable for use.
[1018]
RSA
Named after Rivest, Shamir, and Adleman, the RSA cryptosystem is the most widely used public key cryptosystem and is the de facto standard in many parts of the world. The safety of RSA is considered to depend on the difficulty of factoring a large number, which is the product of two prime numbers (p and q). There are many restrictions on the generation of p and q. They both need to be large, have the same number of bits, and must not be close to each other (otherwise pq is close to √pq). Moreover, it has been pointed out that in many cases p and q must be strong prime numbers. The RSA algorithm patent was issued in 1983 (US Pat. No. 4,405,829).
[1019]
DSA
The DSA (Digital Signature Standard) is an algorithm designed as part of the Digital Signature Standard (DSS). As specified, this algorithm cannot be used for general encryption. Moreover, compared to RSA, DSA is 10 to 40 times slower during signature verification. The DSA explicitly uses the SHA-1 hash algorithm (see the definition of one-way function below). DSA key generation relies on the detection of two prime numbers p and q such that q is divisible by p-1. According to Schneier, a 1024-bit p-value is required for long-term DSA security. However, the DSA standard does not allow the value of p to be greater than 1024 bits (p must also be a multiple of 64 bits). The US Government owns the DSA algorithm and holds at least one related patent (US Pat. No. 5,231,688 issued in 1993).
[1020]
EIGamal
The EIGamal method is used for both encryption and digital signatures. Its security relies on the difficulty of computing discrete logarithmic functions in bounded. For key selection, it is necessary to select a prime number p and two random numbers g and x so that g and x are smaller than p. Next, y = gx
Calculate mod p. The public keys are y, g and p. The private key is x.
[1021]
Cryptographic Challenge-Response Protocol and Zero-knowledge Proof
The general principle of challenge-response protocols is to provide identity authentication suitable for camera systems. The simplest form of challenge-response takes the form of a private password. A asks B for a private password, and when B responds with the correct password, A declares that B is authentic. There are three main problems with this type of simple protocol. First, once B publishes the password, any server C knows what the password is. Second, A needs to know the password in order to verify it. Third, if C impersonates A, B gives C a password (thinking that C is A), thereby putting B at risk. The use of copyrighted text (eg, haiku) is a weak substitute. This is because it is believed that anyone (for example, in a country where intellectual property rights are not adhered to) can copy the password. The idea of a cryptographic challenge-response protocol is that only one entity (requester) demonstrates knowledge of the secret information known about that entity without revealing the secret information itself to the verifier during the protocol. Passing on your identity to others (verifiers). In the generalized case of cryptographic challenge-response protocols, the verifier knows the secret information in some way, otherwise the secret information is not even known to the verifier. Since the description of this embodiment is particularly relevant to authentication, the actual cryptographic challenge-response protocol for which authentication is to be tried is detailed in the appropriate section. However, the concept of zero-knowledge proof is explained here. First, the zero-knowledge proof protocol revealed by Feige, Fiat and Shamir is widely used in smart cards for authentication purposes. The validity of this protocol is based on the assumption that the calculation of the square root modulo of large synthetic integers by unknown prime factorization is not feasible at the power of computers. This is probably equivalent to the assumption that the prime factorization of large integers is difficult. It should be noted that the requester does not have to have significant computational power. Smart cards achieve this type of authentication using only a few modulo multiplications. The zero-knowledge proof protocol is described in US Pat. No. 4,747,668.
[1022]
One-way function
The one-way function F acts on the input X and returns an F [X] such that X cannot be determined from the F [X]. If there are no restrictions on the format of X and F [X] stores less bits than X, then there must be a collision. Collisions produce two different X values, i.e. X, that produce the same F [X] value.1≠ X2And, moreover, F [X1] = F [X2] X1And X2Is defined as. If X stores more bits than F [X], the input must be compressed in some way to produce an output. In most cases, X is divided into blocks of a particular size, compressed over many rounds, and the output of one round is the input to the next. The output of this hash function is the last output after X has been exhausted. Pseudo-collision of compression function CF has two different initial values V1And V2Defined as two inputs X1And X2(May be the same) is CF (V)1, X1) =
CF (V)2, X2) Is given. A given X, even in the presence of pseudo-collisions1X against2It should be noted that the calculation of is not easy.
[1023]
I am only interested in one-way functions that can be calculated at high speed. Moreover, we are only interested in deterministic one-way functions that are reproducible in various implementations. As an example, consider F, where F [X] is the time between calls to F. For a given F [X], X is decidable. This is because X is not evenly used by F. However, the output from F is different in various implementations. Therefore, I am not interested in this kind of F.
[1024]
Within the scope of the description of the implementation of the authentication chip of this embodiment, the following type of one-way function:
Encryption using an unknown key;
Random number sequence;
Hash function;
Message authentication code;
I'm only interested.
[1025]
Encryption using unknown key
When the message is encrypted using the unknown key K, the encryption function E is effectively one-way. If you don't have this key, EKObtaining M from [M] without K is not feasible in terms of computer power. Cryptographic functions are one-way as long as the key is hidden. Cryptographic algorithms do not generate conflicts. Because E is such that M cannot be reconstructed using the function D.KThis is because [M] is generated. As a result, F [X] stores at least as many bits as X if the one-way function F is E (no information is lost). The symmetric encryption algorithm (above) has advantages over the asymmetric algorithm that produces a one-way function based on encryption. The reason is,
The key for a given-strength cryptographic algorithm is shorter in a symmetric algorithm than in an asymmetric algorithm.
This is because the symmetric algorithm can calculate faster and requires less software / silicon.
[1026]
The choice of a good key depends on the encryption algorithm chosen. Some keys are not strong for certain cryptographic algorithms, so it is necessary to test the strength of all keys. The more tests that need to be performed to select a key, the less likely it is that the key will remain hidden.
[1027]
Random number sequence
Random number sequence R0, R1,. .. .. , Ri, Ri + 1think of. Define a one-way function such that F [X] returns the Xth random number in the random number sequence. However, F [X] must be guaranteed to be reproducible with respect to a given X in various implementations. Therefore, the random number sequence is not truly random. Instead, the random number sequence is a pseudo-random number and the generator utilizes a special seed.
[1028]
There are a number of problems with defining a good random number generator. Knuth describes the factors that "better" the generator (including statistical tests) and the general problems with building the generator. Most random number generators generate the i-th random number from the i-1st state, and the only way to determine the i-th number is to repeat from the 0th to the i-th number. is there. When i is large, it is not practical to wait for i repetitions. However, some types of random number generators do not allow random access. Blum, Blum and Shub, with respect to the ideal generator, "to quickly generate a long (bit) sequence from a short seed that appears to have been completely generated by the continuous inversion of calibrated coins. Pseudo-random sequence generators are preferred. " They are X2
A mod n-type generator, generally a generator called a BBS generator, has been defined. Given certain assumptions on which current cryptography relies, BBS generators have been shown to pass very rigorous statistical tests.
[1029]
The BBS generator relies on the selection of n, which is a Blum integer (n = pq, p and q are large prime numbers, p ≠ q, p mod 4 = 3, q mod 4). = 3). The initial state of the generator is x0Given by, where x0= X2
mod n, where x is a random integer that is relatively better than n. The i-th pseudo-random bit is xiThe least significant bit of xi= Xi-1 2
mod n. As an additional property, the knowledge of p and q is xi= X0 y
mod n, but y = 2i The mod ((p-1) (q-1)) allows the direct calculation of the i-th number in the sequence.
[1030]
Without knowledge of p and q, the generator must perform iterations (calculation safety depends on the difficulty of factoring large numbers). When originally defined, the main issue with BBS generators was the amount of work required for a single output bit. This algorithm was considered too slow for most applications. However, with the advent of Montgomery-type reduction operations, more practical implementations have arisen. Moreover, Vazirani and Vazirani x more bits, depending on the size of n, without compromising the safety of the generator.iIt was shown that it can be safely taken out from. xiIf only one bit is needed each time, then N bits (hence, N iterations of the bit generator function) are needed to generate an N-bit random number. For external observers, given a particular set of bits, there is no way to determine the next bit with a probability other than half. If x, p and q are kept secret, they act as keys and it is not computer-capable to retrieve the output bitstream and calculate x, p and q. Also, determining the value of i used to generate a given set of pseudo-random bits is not feasible in terms of computer power. This last feature makes the generator unidirectional. Different i values can give rise to the same bit sequence of a given length (eg, 32-bit random bits). Even if x, p, and q are known, i can only be derived as a set of probabilities for the planned F [i], and cannot be derived as a specific value. (Of course, if the domain of i is known, the set of probabilities is further limited). However, there is a problem with the selection of good p and q and good seed x. In particular, Ritter describes the problem of choosing x. The nature of this problem is that the BBS generator does not generate a single cycle of known length. Instead, the BBS generator produces cycles of various lengths, including degenerate (zero length) cycles. Thus, the BBS generator cannot be initialized with a random state that may be a short cycle.
[1031]
Hash function
A special one-way function, known as a hash function, maps an arbitrary-length message to a fixed-length hash value. The hash function is expressed as H [M]. Since the input is of arbitrary length, the hash function has a compression component because it produces a fixed length output. The hash function also includes an obligation component to make it difficult to detect collisions and to determine information about M from H [M]. Most applications have a given X because conflicts really exist.1On the other hand, H [X1] = H [X2] X2The hash algorithm needs to be pre-image resistant in that it is difficult to find. Moreover, for most applications, the hash algorithm is collision-resistant (ie, H [X.1] = H [X2] Two messages X1And X2Is difficult to find). Whether a collision-resistant hash function can exist in an ideal sense is an uncertain question. The main application of hash functions is to transform an input message into a digital "fingerprint" before applying a digital signature algorithm. One problem with conflicts with digital signatures is shown in the example below.
[1032]
A has a long message M, "I owe B $ 100."1have. A uses his private key to H [M1] Is signed. The greedy B is H [M2] = H [M1] And M2Collision message M in favor of B2For example, search for "I owe B a million dollars." Obviously, such an M2It is in A's interest to ensure that it is difficult to find.
[1033]
Examples of collision-resistant unidirectional hash functions are SHA-1, MD5, and RIPEMD-160, all derived from MD4.
[1034]
MD4
Ron Rivest announced MD4 in 1990. All other one-way hash functions
Since the number is derived from MD4 by some method, MD4 will be described here. MD4 is now considered completely defeated in that it is computable rather than searched for collisions. In the above example, B is the original message M1Alternate message M, using the same hash value as2Can be generated normally.
[1035]
MD5
Ron Rivest announced MD5 in 1991 as a more secure MD4. Like MD4, MD5 produces a 128-bit hash value. Dobbertin describes the state of MD5 after a recent attack. He explained how to find pseudo-collisions in MD5, pointed out the weaknesses of compression functions, and only recently discovered collisions. That is, MD5 should not be used to compress digital signature schemes where the presence of conflicts can have terrible consequences. However, MD5 can still be used as a one-way function. Moreover, the structure of HMAC-MD5 is unaffected by these recent attacks.
[1036]
SHA-1
SHA-1 is very similar to MD5, but has a hash value of 160 bits (MD5 has only a 128-bit hash value). SHA-1 was designed and announced by the NIST and NSA for use in the Digital Signature Standard (DSS). The first published description was called SHA, but soon after it was revised, perhaps to correct a safety flaw in SHA, to SHA-1 (although the NSA was the math that caused the change). No reason has been announced). No cryptographic attack on SHA-1 is known. Also, SHA-1 is more resistant to brute force attacks than MD4 or MD5, simply because the hash result is longer. The US government holds the SHA-1 and DSA algorithms (digital signature authentication algorithms defined as part of the DSS) and holds at least one related patent (US Patent No. 5231688 issued in 1993).
[1037]
RIPEMD-160
RIPEMD-160 is a hash function derived from its advancement, RIPEMD (developed for the European Commission's RIPE project in 1992). As the name implies, RIPEMD-160 produces a 160-bit hash result. RIPEMD-160, combined for software implementation of 32-bit architecture, is expected to provide a high level of security for over a decade. There are no successful attacks on RIPEMD-160, but RIPEMD-160 is relatively new and has not been deciphered on a large scale. The first RIPEMD algorithm was specifically designed to combat traditional MD4 cryptographic attacks. Recent attacks on MD5 have revealed similar weaknesses in RIPEMD's 128-bit hash function. Although this attack only showed a theoretical weakness, Dobbertin, Preneel and Bosselaers further enhanced RIPEMD to the new algorithm RIPEMD-160.
[1038]
Message authentication code
Message authentication issues can be summarized as follows:
How does A be sure that the message that is supposed to be from B is really the message from B?
Message authentication is different from entity authentication. In the case of entity authentication, one entity (requester) illuminates its identity to others (verifiers). In the case of message authentication, it is related to ensuring that a predetermined message is from a person who thinks it, that is, ensuring that the message has not been tampered with on the way from the source to the destination. One-way hash functions do not provide sufficient protection against messages. A hash function like MD5 is based on generating a hash value that is representative of the original input and the original input cannot be derived from the hash value. A simple attack from E between A and B is to steal the message from B on the way and replace it with your own message. Even if A sends a hash of the original message, E can easily replace it with the hash of his new message. If only one-way hashes are used, A has no way of knowing if B's message has changed. One solution to the problem of message authentication is the message authentication code, or MAC. When B sends the message M, B sends a MAC [M] so that the recipient knows that M is really a message from B. To achieve this, it is necessary that only B can generate a MAC for M, and that A can verify M against MAC [M]. It should be noted that this is different from M-MAC encryption being valid when M does not need to be kept secret. The easiest way to build a MAC from a hash function is to use a symmetric algorithm to encrypt the hash value, ie
Hash input message H [M]
Encrypt hash EK[H [M]]
Is.
[1039]
This is more secure than encrypting the message first and then hashing the encrypted message. Any symmetric or asymmetric encryption function can be used. However, it is advantageous to use a key-dependent one-way hash function instead of a technique that uses encryption (as described above) in several respects:
Speed: Because one-way hash functions generally run faster than encryption;
Message size: EKBecause [H [M]] is at least the same size as M, but H [M] is a fixed size (usually much smaller than M);
Hardware / Software Requirements: Keyed one-way hash functions are typically much less complex than their crypto-based alternatives;
Implementations of one-way hash functions are not considered to be cryptographic or decryption devices and are not subject to US export restrictions.
[1040]
It should be noted that the hash function was not initially designed to store keys or support message authentication. As a result, some ad hoc method of using hash functions to perform message authentication has been proposed, including various functions that concatenate messages with secret prefixes, suffixes, or both. Most of these ad hoc methods were successfully attacked by sophisticated means. Additional MACs have been proposed based on the XOR scheme and the Toeplitz matrix (including special cases of LFSR-based construction).
[1041]
HMAC
In particular, the HMAC structure is beginning to be recognized as a solution for Internet message authentication security protocols. The HAMC structure acts as a wrapper, using the underlying hash function as a black box. Hash function replacement is easy if required for security or performance reasons. However, the main advantage of the HMAC structure is that if the underlying hash function has some reasonable cryptographic strength, the HMAC structure can be proven to be secure: the strength of the HMAC is the strength of the hash function. It is directly related to. Since the HMAC structure is a wrapper, any iterative hash function can be used with HMAC. Examples include HMAC-MD5, HMAC-SHA1, HMAC-RIPEMD160 and the like. Definitions such as:
H = hash function (eg MD5 or SHA-1)
Number of bits output from n = H (for example, 160 bits for SHA-1 and 128 bits for MD5)
Data to which the M = MAC function should be applied
K = 2 Private key shared by the parties
64 repetitions of ipad = 0x36
64 repetitions of opad = 0x5C
Given that, the HMAC algorithm is:
Extend K to 64 bytes by adding 0x00 bytes to the end of K;
XOR the 64-byte character string created in (1) with the iPad;
The data stream M is added to the 64 bytes created in (2);
Apply H to the stream generated in (3);
XOR the 64-byte character string created in (1) with opad;
The result H from (4) is added to the 64 bytes that is the result from (5);
Apply H to the output of (6) and output the result;
become that way. Therefore,
HMAC [M] = H [(KAopad) | H [(KAipad) | M]]
Is.
[1042]
The recommended key length is at least n bits, but should not be longer than 64 bytes (hashed block length). Keys longer than n bits do not add function security. HMAC can optionally perform final output rounding, eg, rounding from 160 bits to 128 bits. The HMAC Designers Code (RFC) was published in 1997, a year after the algorithm was first published. The designers have announced that the strongest known attacks on HMAC are based on the frequency of collisions with the hash function H, which is at least impractical against a suitable hash function. More recently, the HMAC protocol with anti-replay function has been defined to prevent the capture and reproduction of M, HMAC [M] combinations within a predetermined time.
[1043]
Random and time-denatured messages
The use of the random number generator as a one-way function has already been described. However, the theory of random number generators is very intertwined with cryptography, security, and authentication. There are a number of problems with defining a good random number generator. Knuth describes what makes the generator better (including statistical tests) and general problems with building the generator. One of the uses of random numbers is to ensure that the message changes over time. Imagine a system where A encrypts a command and sends it to B. If the cryptographic algorithm produces the same output as a given input, an attacker can easily record the message and replay it to deceive B. The attacker does not need to break the encryption mechanism, just knows the message to be played to B (while impersonating A). As a result, messages often include random numbers and timestamps to ensure that the message (and thus its encrypted counterpart) is constantly changing. Random number generators are also often used to generate keys. Therefore, at this time, it can be said that all generators are uncertain for this purpose. For example, the Bellekamp-Massey algorithm is a conventional attack on the LFSR random number generator. If the length of the LFSR is n, then a 2n-bit sequence is sufficient to determine the LFSRs that make up the key generator. However, if the sole role of the random number generator is to ensure that the message changes over time, the security of the generator and seed is not as important as in session key generation. However, if the random number seed generator is compromised and the attacker can calculate future "random numbers", some protocols can be left open to the attacker. New protocols should be considered in this context. The actual type of random number generator required will depend on the implementation and the intended use of the generator. The generator is Ron
Blum, Blum, and Shub stream ciphers like RC4 by Rivest, hash functions like SHA-1 and RIPEMD-160, and LFSR (Linear Feedback Shift Register) and their more recent counterpart, FCSR (Carry). A conventional generator such as a feedback shift register with) is included.
[1044]
attack
This section describes various types of attacks that can be made to break an authenticated cryptosystem, such as an authentication chip. Attacks are broadly divided into physical attacks and logical attacks. Physical attacks represent a way to destroy the physical implementation of a cryptosystem (for example, break and open a chip to retrieve a key), while logical attacks attack an implementation-independent cryptosystem. Including. A logical type of attack works against a protocol or algorithm and attempts to perform one of the following three:
Avoid the authentication process altogether;
Obtain the private key by force or reasoning so that you can answer any question;
Fully detect the nature of the authentication question and answer in order to give the correct answer to each question without using a key.
[1045]
Next, the style and form of the attack will be described in detail. Regardless of the algorithms and protocols used by the security chip, the circuit of the chip's authenticator can be physically attacked. Physical attacks appear in four main forms: the form of the attack can change:
Avoid authentication chips altogether;
Physically inspect the chip during operation (destructive and non-destructive);
Physically disassemble the chip;
Physically modify the chip.
[1046]
Next, the style and form of the attack will be described in detail. This section does not propose a solution to these attacks. This section only describes each attack type. The investigation is limited to the situation of the authentication chip 53 attached to a system (rather than some other system such as Internet authentication).
[1047]
Logical attack
These attacks do not depend on the physical implementation of the cryptosystem. These affect the protocol, the security of the algorithm, and the random number generator.
[1048]
Ciphertext only attack
This is the case when an attacker has one or more encrypted messages, all encrypted using the same algorithm. The attacker's purpose is to obtain plaintext messages from encrypted messages. Ideally, the key can be recovered, and as a result, all future messages can be recovered.
[1049]
Known plaintext attack
This is the case when the attacker has both plaintext and plaintext encryption. In the case of an authentication chip, a known plaintext attack is when an attacker can see the flow between the system and the authentication chip. Inputs and outputs can be observed (without being screened by the attacker) and analyzed to find weaknesses (eg, by a birthday attack, or by searching for distinguishable input / output pairs). Known plaintext attacks are a weaker type of attack than selective plaintext attacks. This is because the attacker can only observe the data flow. A known plaintext attack can be performed by connecting a logic analyzer to the wiring between the system and the authentication chip.
[1050]
Chosen-plaintext attack
A selective plaintext attack is when the cryptanalyst has the ability to send any selected message to the cryptosystem and observe its response. If the cryptanalyst knows the algorithm, there will be a relationship between the inputs available by feeding a particular output to the input of another function. It is difficult to prevent selective plaintext attacks in systems that use the built-in authentication chip. This is because the cryptanalyst can logically pretend to be a system and send any selected bit pattern stream to the authentication chip.
[1051]
Adaptive Choice Plaintext Attack
This type of attack is similar to a selective plaintext attack, except that the attacker can modify the subsequent selected plaintext text based on the results of the previous test. This is certainly the case when the system / authentication chip scenario described above is used for consumables such as copiers and toner cartridges. This is because, in particular, both the system and consumables are made available to everyone.
[1052]
Brute force attack
A guaranteed way to break a key-based cryptosystem algorithm is to simply try all the keys. Eventually the correct key will be found. This is known as a brute force attack. However, as the number of key candidates increases, more keys need to be tried, and the time it takes (on average) to find the correct key increases. If there are N keys, a maximum of N trials are required. If the key length is N bits, the maximum is 2NRequires 2 trials, only half trials (2)N-1) The chance of finding the key later is 50%. The longer N is, the longer it takes to find the key, thus increasing the security of the key. Of course, the attack could be keyed on the first attempt, but this possibility diminishes as the key gets longer. Now consider a 56-bit key length. In the worst case, a total of 2 to find the key56Tests (7.2 x 10)16(Tests) must be done. In 1977, Diffie and Hellman announced a dedicated DES decryption machine consisting of one million processors, each processor capable of running and printing one million tests per second. Such a machine takes 20 hours to break any DES code. Consider the case where the key length is 128 bits. In the worst case, a total of 2 to find the key128Tests (3.4 x 10)38(Tests) must be done. This takes a billion years on a trillion processors, each running a billion tests per second. If the key length is long enough, the Blues Force attack will take a very long time and is not worth the attacker's efforts.
[1053]
Guess attack
This type of attack is when the attacker simply tries to "guess" the key. The attack is the same as the Blues Force attack, and the probability of success depends on the length of the key.
[1054]
Quantum computer attack
In order to decrypt the n-bit key, a quantum computer (NMR, optical, or caged atom) with n cubits embedded in an appropriate algorithm must be constructed. Quantum computer is effectively 2nExists in multiple simultaneous coherent states. The point is to extract the correct coherent state without causing decoherent. So far, this has been achieved by a two-cubit system (which exists in a four-coherent state). It seems possible to extend this to 6 cubits (with 64 simultaneous coherent states) in a few years.
[1055]
Unfortunately, each addition of a cubit halves the relative strength of the key-representing signal. This quickly becomes a significant obstacle to key retrieval, especially for long keys used in cryptographically secure systems. As a result, attacks on cryptographically secure keys (eg, 160 bits) using quantum computers are unlikely to be carried out, and quantum computers will be used during the commercial life of the authentication chip. It is very unlikely that you will achieve a cubic number of 50 or more. Even if you use a 50 qubit quantum computer, to decrypt the 160 bit key, 2110Two tests are needed.
[1056]
Intentional error attack
For some algorithms, an attacker can collect useful information from the consequences of bad input. The range of useful information ranges from the error message statement to the time required to raise the error. A simple example is a user ID / password scheme. If the error message is usually the "wrong user ID", then when the attacker gets the "wrong password" message, it knows that the user ID is correct. If the message is always "wrong user ID / password", much less information is given to the attacker. A more complex example is the recently announced method of decrypting cryptographic codes from secure websites. This attack involves sending a specific message to the server and observing an error message response. The response gives enough information to learn the key, and some information can be obtained without the response. As an example of an algorithm, time can be known in the case of an algorithm that returns an error immediately when an erroneous bit is detected in the input message. Depending on the hardware implementation, it is an easy way for an attacker to time the response, change it bit by bit based on the time required for the error response, and thus obtain the key. .. In the case of the chip mounting form, it is certain that the required time can be observed with considerably higher accuracy than in the case of via the Internet.
[1057]
Birthday attack
The attack was named after the famous "Birthday Paradox" (which is not really a paradox at all). The probability that one person has the same birthday as another person is 1 in 365 (not considering leap years). Therefore, the probability that one of the 183 people in the room will have the same birthday as you should be more than 50%. However, if there are 23 people in the room, the probability that either two have the same birthday exceeds 50%. The reason is that 23 people make 253 pairs. Birthday attacks are common attacks on hashing algorithms, especially algorithms that combine hashing and digital signatures. If the message is generated and already signed, the attacker would have to look for a collision message that hashes to the same value (similar to finding someone with the same birthday as you). However, if the attacker can generate a message, the birthday attack will begin to work. The attacker looks for two messages with the same hash value (similar to if both of them have the same birthday), only one message is accepted by the person who signed it, and the other Useful for attackers. Once the person has signed the original message, the attacker only has to claim that the person has signed another message, mathematically indicating which message is the original. There is no way. This is because both messages hash to the same value. Given that brute force attacks are the only way to determine a match, birthday attacks can weaken n-bit keys by 2.n / 2Is. The 128-bit long key that can be hit by a birthday attack is effectively only 64-bit long.
[1058]
Chain attack
These attacks are attacks on the chain of hash functions. Chained attacks focus on the compression function of the hash function. The idea is based on the fact that hash functions generally take inputs of arbitrary length and process n bits of input at the same time to produce an output of constant length. The output from one block is used as a chain variable set to the next block. Rather than finding conflicts for the entire input, the idea is to find a substitute block that, given the set of input chain variables, produces the same output chain variables as the original message. The number of selections for a particular block is based on the length of the block. If the chain variable is c-bits, the hashing function behaves like a random mapping, and the block length is b-bits, then the number of such b-bit blocks is about 2b / 2c. The challenge for finding a substitute block is that such a block is a sparse subset of all possible blocks. In the case of SHA-1, the number of 512-bit blocks is about 2.512/ 2160That is, 2352It is an individual. 2 chances of finding blocks by brute force search160It is one-third.
[1059]
Substitute with a full look-up table
If the number of messages that may have been sent to the chip is small, no replica manufacturer is needed to crack the key. Instead, the replica manufacturer can incorporate into the chip a ROM that records all of the responses from the genuine chip to the code sent by the system. As the keys get longer and the response gets longer, the space required for such a look-up table increases.
[1060]
Substitute by sparse look-up table
The replica manufacturer may not provide a complete look-up table if the message sent to the chip is not effectively random and is reasonably predictable. For example:
If the message is just a serial number, the replica manufacturer may provide a look-up table that stores past and future predicted serial numbers. These serial numbers are 1019It is unlikely to exceed the number;
If the test code is just a date, the replica manufacturer can generate a look-up table using the date as the address;
If the test code is a pseudo-random number that uses a serial number or date as a seed, then the replica manufacturer just needs to decrypt the pseudo-random number generator in the system. This is probably not difficult. This is because the replica manufacturer has access to the object code for the system. The replica manufacturer will use these codes to access the stored authentication codes to generate content addressable memory (or other sparse array lookup).
[1061]
Difference cryptanalysis
Differential cryptanalysis represents an attack in which a pair of input streams is generated using known differences and the differences in the coded streams are parsed. Known differential attacks rely heavily on the structure of S-boxes as used in DES and other similar algorithms. Other algorithms, such as HMAC-SHA1, do not have S-boxes, but attackers
Minimum difference input and corresponding output
Minimum difference output and corresponding input
A differential attack can be performed by performing a statistical analysis of.
[1062]
Most algorithms were reinforced against differential cryptanalysis after the process of differential cryptanalysis was described. This is symmetric in a section dedicated to each encryption method. However, some secretly developed recent algorithms have been broken. This is because the developers did not consider certain styles of delta attacks and did not subject their algorithms to public scrutiny.
[1063]
Message replacement attack
In some protocols, the intermediary can replace part or all of the message. This is the case when a true certified chip is plugged into a reusable duplicate chip in a consumable. The replication chip can steal all messages between the system and the authentication chip and perform a number of replacement attacks. Consider, for example, a message that stores the header and the content that follows it. An attacker cannot generate a valid header, but can replace the unique content of the message, especially if the valid response is something like "Yes, your message was received." Even if the return message is "Yes, I received the following message ...", the attacker could replace the original message before replying to the acknowledgment to the original sender. it can. Message authentication codes have been developed to combat most message replacement attacks.
[1064]
Key generator reverse engineering
When a pseudo-random number generator is used to generate a key, the replica manufacturer may obtain a generator program or infer the random seed used. This is the way Netscape's security program was first breached.
[1065]
Avoiding the entire authentication
Authentication protocols can have problems that allow the entire authentication process to be circumvented. For this type of attack, the key is completely irrelevant and the attacker does not need to recover or guess the key. Consider, for example, a system that authenticates when the power is turned on but does not authenticate at other times. Reusable consumables, including duplicate authentication chips, may utilize authenticity authentication chips. The duplicate authentication chip 53 uses the authenticity chip for the authentication call, and then simulates the state data of the authenticity authentication chip thereafter. Another example of bypassing authentication is when the system authenticates only after the consumable has been used. The duplicate authentication chip can perform a simple authentication evasion by simulating a connection failure after the use of consumables and before the authentication protocol completes (or is started). A notorious attack called the "Kentucky Fried Chip" hack replaces the microcontroller chip for satellite television systems. When the subscriber stops paying the license fee, the system will send an "unavailable" message. However, the new microcontroller only detects this message and does not pass it on to the consumer's satellite television system.
[1066]
Robbery / bribery attack
Anyone who knows the key may teach it to someone else. This secret disclosure is made for coercion (bribery, robbery, etc.), retaliation (eg, dissatisfied employee), or simply for creed. These attacks are usually cheaper and easier than other attempts to guess the key. As an example, many people who have requested to be involved in the development of the Divx standard have recently (May / June 1998) wanted to participate in the development of the Divx specification decoding / decoding device, that is, depending on their beliefs. Claimed by the DVD newsgroup.
[1067]
Physical attack
The following attacks assume that the authentication mechanism is implemented on a silicon chip that the attacker can physically access. The first attack, ROM read, represents an attack when the key is stored in ROM, and the remaining attacks assume that the private key is stored in flash memory.
[1068]
ROM read
If the key is stored in ROM, the key can be read directly. The ROM can be safely used to hold the public key (for use in asymmetric cryptography) in this way, but it cannot be used to hold the private key. With symmetric cryptography, ROM is completely unreliable. The use of copyrighted text (eg, haiku) as a key is inadequate. This is because key duplication is expected to occur in countries where intellectual property rights are not adhered to.
[1069]
Chip reverse engineering
In chip reverse engineering, an attacker disassembles the chip and analyzes the circuit. Once the circuit has been analyzed, the internal behavior of the chip's algorithm can be restored. Lucent Technology Co., Ltd. is an abbreviation of TOBIC (abbreviation of two photon OBIC, OBIC is Optical because it visualizes the circuit.
Beam Induced Curent An acronym for light beam induced current. ) Has been developed. A process developed primarily for static RAM analysis removes all backing material, polishes the back side to a mirror finish, and concentrates the light on the front side. The excitation wavelength is specifically selected so as not to induce a current in the IC. In the 19th century, Kerckhoffs made the basic hypothesis about cryptanalysis that if the internal behavior of an algorithm is merely a secret of the scheme, then the scheme is as good as being cracked. Kerckhoffs states that secrecy must be entirely in the key. As a result, the best protection against reverse engineering of the chip is to make the internal operation irrelevant.
[1070]
Unauthorized use of the authentication process
It must be assumed that every replica manufacturer has both system and consumable designs. If the same channel is used for communication between the system and a trusted system authentication chip, as well as between an unreliable consumables authentication chip, the untrusted chip is trusted to get the "correct answer" There is a possibility of inquiring about the chips that can be made. If so, the replica manufacturer would not have to determine the key. They only have to trick the system with the response from the system authentication chip. Another method of improperly using the authentication process is to simulate the failure of the connection with the system, the power failure, etc. when the authentication process is performed according to the same method as the logical attack "Avoiding the authentication process".
[1071]
System changes
This type of attack is an attack in which the system itself is modified to accept duplicate consumables. The attack is a system ROM modification, rewiring of consumables, or, in extreme cases, a complete replication system. This type of attack requires changes to each individual system and in most cases will require the consent of the owner. Usually, consumers need a clear benefit to make such changes. This is because such changes typically invalidate the warranty and are costly in most cases. An example of such a change that has obvious benefits to consumers is a software patch that changes a fixed region DVD player to a region free DVD player.
[1072]
Direct view of chip operation by conventional probing
If the chip operation can be monitored directly using STM or electron beam, the key can be recorded as it is read from the internal non-volatile memory and taken into the working register. The conventional three forms of probing require direct access to the top or front surface of the IC while the IC is energized.
[1073]
Direct view of non-volatile memory
If the chip is sliced to expose the floating gate of the flash memory without discharging, the key can probably be monitored directly using STM or SKM (scanning tunneling microscope). However, slicing chips at this level without discharging the gate is probably not feasible. Wet etching, plasma etching, ion milling (concentrated ion beam etching), or chemical mechanical polishing almost certainly releases the small charges present on the floating gate.
[1074]
Monitoring of optical bursts caused by state changes
A small amount of infrared energy is emitted when the state of the gate changes. Since silicon is infrared transmissive, these changes can be observed by looking at the circuit from underneath the chip. The emission process is weak, but shining to the extent that it can be detected using ultra-sensitive equipment developed for use in astronomy. This technology, developed by IBM, is called PICA (Pico Second Imaging Circuit Analyzer). If the register state is known at time point t, monitoring the register switch time reveals the exact value at time point t + n, and if the data is part of the key, that part is decrypted.
[1075]
EMI monitoring
When an electronic circuit is operating, a weak electromagnetic signal is always emitted. Relatively low-cost (thousands of dollars) equipment can monitor these signals. This gives an attacker enough information to guess the key.
[1076]
I dd Fluctuation monitoring
Even if the key cannot be monitored, current fluctuations always occur when the register changes state. If the signal-to-noise ratio is high enough, an attacker can experience high-bit or low-bit programming.ddThe difference can be monitored. IddChanges in can provide information about the key. Such attacks have already been used to crack smart cards.
[1077]
Difference failure analysis
This attack assumes that bit errors are captured by ionization, microwave radiation, or environmental stress. In most cases, such an error is likely to adversely affect the chip (eg, corrupt the program code) rather than a useful change that would reveal the key. Targeted failures such as ROM overwrite, gate destruction, etc. are even less likely to produce useful results.
[1078]
Clock malfunction attack
Chips are typically designed to operate properly within a constant clock speed range. Some attackers attempt to cause logic to fail by operating the chip at very high clock speeds, or to cause clock malfunctions at specific intervals and at specific times. The idea is to create a turbulent state in which the circuit does not work properly. As an example, the AND gate is input (due to turbulence)1Enter2Always input, not the logical product of1Through. If the attacker knows the internal structure of the chip, the attacker can capture the turbulence at the exact time during algorithm execution, thereby revealing information about the key (or, in the worst case,). , Reveal the key itself).
[1079]
Power attack
Instead of causing the clock signal to malfunction, an attacker can cause the power supply to malfunction and the power is increased or decreased out of the operating voltage range. The net effect is the same as in the case of clock malfunction, which causes an error in the execution of a particular instruction. The idea is to stop the CPU from XORing the key, or to stop shifting the data by one bit position, and so on. Specific instructions are targeted to reveal information about the key.
[1080]
ROM overwrite
A single bit of ROM can be rewritten to 1 or 0 using a laser cutter microscope, depending on the orientation of the logic. Given a set of opcodes / operands, it is easy for an attacker to rewrite a conditional jump into an unconditional jump, or perhaps change the destination of a register transfer. If the target command is carefully selected, the key will be revealed.
[1081]
EEPROM / flash change
EEPROM / flash attacks are similar to ROM attacks, except that laser cutter microscopy technology can be used for both individual bit sets and resets. This greatly expands the scope of algorithmic changes.
[1082]
Gate destruction
Anderson and Kuhn described gate destruction in a 1997 workshop ramp session on high-speed software encryption, where Biham and Shamir announced an attack on DES. This attack used a laser cutter to destroy individual gates within a traditional block cipher (DES) hardware implementation. The net effect of this attack is to force certain bits of the register to be "valueless". Biham and Shamir explain the effect of forcing such an effect on a particular register-the least significant bit of the output from the rounding function is set to zero. A few bits of the key can be restored by comparing the least significant 6 bits of the left and right halves. Damage to a large number of chips in this way can reveal sufficient information about the key in order to facilitate a complete key recovery. The encrypted chip modified in this way will have the property that encryption and decryption are no longer in the opposite relationship.
[1083]
Overwrite attack
Instead of reading the flash memory, the attacker simply sets a single bit using a laser cutter microscope. Even if the attacker doesn't know the previous value, he knows the new value. If the chip continues to operate, the original state of the bit should be the same as the new state. If the chip stops working, the original state of the bit is the logical negation NOT of the current state. An attacker can perform this attack on each bit of the key and use up to n chips to obtain an n-bit key (if the new bit matches the old bit, the new bit is next. Not required to determine a bit of).
[1084]
Test circuit attack
Most circuits include test circuits specifically designed to inspect manufacturing defects. This includes BIST (Built-in Self-Test) and scan paths. Very often, scan paths and test circuits include access and lead-out mechanisms for all built-in latches. In some cases, the test circuit may be used to provide information about the contents of a particular register. The test circuit is often disabled by cutting certain wires in the chip, in some cases, once the chip has passed all manufacturing tests. However, a motivated attacker could reconnect the test circuit to make it operational.
[1085]
Residual memory
The value remains in the RAM for a long time after the power is removed, but not for a long time until it is considered non-volatile. After the sensitive information has been transferred to the RAM (eg, a working register), the attacker can remove the power supply and attempt to read the value from the RAM. This attack is most effective against security systems with regular RAM chips. As a typical example, a security system was designed with an automatic power-off feature that is triggered when the computer case is opened. The attacker could simply open the case, remove the RAM chip, and use the remaining memory to retrieve the key.
[1086]
Chip theft attack
If there are many stages in the life of the authentication chip, each of these stages needs to be investigated in terms of security derivative issues if the chip is stolen. For example, if the information is programmed into a chip in multiple stages, stealing the chip between stages could allow an attacker to obtain key information or reduce the effort involved in the attack. Similarly, if the chip was just manufactured and stolen before programming, would the attacker have any logical or physical benefit?
Requirements
Traditional solutions to the problem of certifying consumables typically rely on patents for physical packaging. However, this does not stop home refilling and replica production in countries with weak industrial property rights protection. As a result, higher levels of protection are needed. Therefore, the authentication mechanism is built within the authentication chip 53, which allows the system to safely and easily authenticate consumables. Here, if we limit ourselves to systems that authenticate consumables (not thinking about consumables that authenticate systems), we can consider the following two levels of protection:
Presence-only certification
In this case, only the presence of the authentication chip is tested. The authentication chip can be reused in another consumable without reprogramming;
Consumables Lifetime Certification
In this case, not only is the presence of the certified chip tested, but the certified chip 53 must last only for the useful life of the consumables. If the chip is reused, the chip must be completely erased and reprogrammed. These two levels of protection deal with different requirements. Here, we are mainly interested in consumables lifetime certification to prevent duplication of mass-produced consumables. In this case, each chip must retain secure state information about the consumables to be certified. It should be noted that the consumable lifetime authentication chip can be used in any situation that requires a presence-only authentication chip. Certification requirements, data storage integrity requirements, and manufacturing requirements should be considered separately. The following sections briefly describe each requirement.
[1087]
Authentication
The certification requirements for both presence-only certification and consumable lifetime certification are limited to cases where the system certifies consumables. For presence-only authentication, it must be guaranteed that the authentication chip is physically present. In the case of consumable lifetime authentication, it is necessary to ensure that the status data is actually derived from the authentication chip and that the status data has not been tampered with in the middle. These problems are inseparable, the tampered data comes from a new source, and if the source cannot be determined, the tampering problem cannot be resolved. It is not enough to provide a home-made security law-based authentication method that is sensitive and has not been scrutinized by security professionals. Therefore, the main requirement is to provide certification by means that have withstood expert scrutiny. The authentication scheme used by the authentication chip 53 must be able to withstand defeat by logical means. Logical types of attacks are expensive, and there are three things:
Avoid the authentication process altogether;
Obtain the private key by force or reasoning so that you can answer any question;
Fully detect the nature of the authentication question and answer to give the correct answer to each question without the use of a key;
Try to do one of them.
[1088]
Data memory integrity
Authentication protocols are against guaranteeing data integrity in the messages being communicated, but they also require data storage integrity. The following two types of data:
Authentication data like a private key;
Consumables status data such as serial number and remaining media capacity;
Must be stored in the authentication chip.
[1089]
The access requirements for these two data types are quite different. Therefore, the authentication chip 53 requires a storage / access control mechanism that takes into account each type of integrity requirement.
[1090]
Authentication data
Authentication data must be kept confidential. Authentication data must be stored on the chip during the manufacturing / programming stage of the chip's useful life, but should not be allowed to be removed from the chip thereafter. The authentication data must be able to compete with being read from the non-volatile memory. The authentication scheme serves to ensure that the key cannot be obtained by inference, and the manufacturing process serves to ensure that the key cannot be obtained by physical means. The size of the authentication data storage area must be large enough to hold the required keys and confidential information as required by the authentication protocol.
[1091]
Consumables status data
Each authentication chip 53 can store 256 bits (32 bytes) of consumables status data. Consumables status data is classified into the following types. Depending on the application, the number of each of the following types of data items will vary. Assume that the maximum number for a single data item is 32 bits:
Read only;
Read / write;
Decrement only.
[1092]
Read-only data must be able to be stored on the chip during the manufacturing / programming stage of the chip's useful life, but should not be allowed to change thereafter. Examples of read-only data are consumable batch numbers and serial numbers.
[1093]
Read / write data is changeable state information, for example, the last time a particular consumable has been used. Read / write data items can be read and written an unlimited number of times during the useful life of the consumable. They can be used to store any state information about consumables. The only requirement for this data is that it should be held in non-volatile memory. Since an attacker can gain access to the system (it can write to read / write data), an attacker could modify this type of data field. This data type should not be used for confidential information and should be considered uncertain.
[1094]
Decrement-only data is used to count down the availability of consumable resources. For example, the toner cartridge of a copier stores the remaining amount of toner as a decrement-only data item. Ink cartridges for color printers store the amount of each ink color as decrement-only data items and require three (one for each of cyan, magenta, and yellow) or five to six decrement-only data items. And. The requirement for this type of data item is that once programmed with the initial values in the manufacturing / programming stage, it is only possible to reduce the values. Once it reaches the minimum, it cannot decrease any further. Decrement-only data items are required only for consumable lifetime authentication.
[1095]
Manufacturing
The certification chip 53 should ideally have a low manufacturing cost so that it can be incorporated as a certification mechanism for low cost consumables. The authentication chip 53 should use a standard manufacturing process such as flash. this is:
Allowing a very wide selection of manufacturing locations;
Use technology that is clear and works well;
To reduce costs;
is required.
[1096]
Regardless of the authentication scheme used, the chip's authentication circuit must be able to counter physical attacks. Physical attacks appear in four main forms: the form of the attack can change:
Avoid authentication chips altogether;
Physically inspect the chip during operation (destructive and non-destructive);
Physically disassemble the chip;
Physically modify the chip.
[1097]
Ideally, the authentication chip 53 should not be usable as a secure encryption device, as the chip should be able to be removed from the United States. This is a low priority requirement. This is because there are many companies in other countries that can manufacture certified chips. In any case, restrictions on exports from the United States can change.
[1098]
Authentication
Traditional solutions to the problem of certifying consumables typically rely on patents for physical packaging. However, this does not stop home refilling and replica production in countries with weak industrial property rights protection. Therefore, a higher level of protection is needed. It is not enough to provide a home-made security law-based authentication method that is sensitive and has not been scrutinized by security professionals. Netscape's first proprietary system and the GSM fraud prevention network used privately on mobile phones are security vulnerabilities created by design secrecy. Both security systems were breached by traditional means that could have been detected if those companies had followed the open design process. The solution is to provide certification by means that have withstood expert scrutiny. Many protocols can be used for consumables certification. We will use only the published security methods here and the behavior known by this new method. In all protocols, the security of the scheme relies on the private key, not the secret algorithm. All of the protocols depend on time-denaturing challenges (ie, different challenges each time), and responses depend on challenges and confidential information. Since the challenge contains random numbers, the observer cannot gather useful information about subsequent identification. Two protocols are proposed for each of presence-only certification and consumable lifetime certification. The protocol differs in the number of authentication chips required for the authentication process, but in all cases the system authenticates the consumables. Some protocols work on one or two chips, while others work on only two chips. Regardless of whether one or two authentication chips are used, the system is responsible for making the authentication decision.
[1099]
Single chip authentication
If only one authentication chip 53 is used for the authentication protocol, the single chip (called chip A) is responsible for telling the system (called the system) that chip A is authentic. At the beginning of the protocol, the system cannot be sure of the authenticity of chip A. The system executes a challenge-response protocol with chip A to determine the authenticity of the chip. In all protocols, the authenticity of consumables is directly based on the authenticity of the chip. That is, if chip A is considered authentic, then consumables are also considered authentic. The data flow is shown in Figure 167. For single-chip authentication protocols, the system can be software, hardware, or a combination of both. Importantly, the system is unsafe and can be easily reverse engineered by an attacker by examining the ROM or by examining the circuit. The system is not specifically designed to be secure on its own.
[1100]
Double chip certification
Another protocol requires two authentication chips as shown in FIG. 168. A single chip (Chip A) is responsible for telling the system (called the system) that Chip A is authentic. As part of the authentication process, the system utilizes a reliable authentication chip (referred to as chip T). In the double-chip authentication protocol, the system can be software, hardware, or a combination of both. However, the chip T must be a physical authentication chip. In one protocol, chip T and chip A have the same internal structure, and in other protocols, chip T and chip A have different internal structures.
[1101]
Presence-only authentication (uncertain state data)
For this level of consumables certification, we are only interested in confirming the presence of the certification chip 53. The authentication chip can store state information, but the transmission of that state information is not considered secure. Two protocols are proposed. Protocol 1 requires two authentication chips, and protocol 2 can be implemented using one or two authentication chips.
[1102]
Protocol 1
Protocol 1 is a double-chip protocol (two authentication chips are required). Each authentication chip stores the following values:
K FKKey for [X]. Must be secret;
R Current random number. It doesn't have to be a secret, but it must be seeded with a different initial value for each chip instance. It changes every time the Random function is called.
[1103]
Each authentication chip stores the following logical functions:
Random [] Returns R and advances R in the sequence;
F [X] This is the result of applying the one-way function F to X based on the secret key K.KReturns [X].
[1104]
The protocol is as follows:
The system requires Random [] from chip T;
Chip T returns R to the system;
The system requires F [R] from both chip T and chip A;
Chip T is FKTReturn [R] to the system;
Chip A is FKAReturn [R] to the system;
The system is FKT[R] to FKACompare with [R]. If they match, chip A is considered valid. If they do not match, chip A is considered invalid.
[1105]
The data flow is shown in Figure 169. The system is FK[R] There is no need to understand the message. The system only needs to check that the response from chip A and the response from chip T are the same. Therefore, the system does not require a key. Protocol 1 is secure in two places:
Safety of F [X]. Since only the authentication chip stores the private key
A chip capable of producing an F [X] from X that matches the F [X] produced by the trusted authentication chip 53 (chip T) must be genuine;
The domain of R generated by all authentication chips should be large and non-deterministic. If the R domain generated by all authentication chips is small, the replica manufacturer does not have to crack the key. Instead, the replica manufacturer can incorporate into its chip a ROM that records all of the responses from the genuine chip to the code sent by the system. The Random function does not have to be strictly housed in the authentication chip. This is because the system has the potential to generate the same random number sequence. However, it simplifies the design of the system, and the security of the random number generator is the same for all implementations that use the authentication chip, reducing the likelihood of errors in the system implementation.
[1106]
Protocol 1 has several advantages:
K is not revealed during the authentication process;
When X is given, the duplicate chip does not use K or access the actual authentication chip, F.KCannot generate [X];
The system can be easily designed, especially in low cost systems such as inkjet printers. This is because encryption or decryption is not required by the system itself;
A wide range of keyed one-way functions exist, including symmetric encryption, random number sequences, and message authentication codes;
One-way functions require fewer gates and are easier to validate than asymmetric algorithms;
The secure key size for a keyed one-way function does not have to be as large as for the asymmetric (public key) algorithm;
If F [X] is a symmetric cryptographic function, a minimum of 128 bits can provide adequate security.
[1107]
But there is a problem with this protocol:
This is vulnerable to selective text attacks. An attacker can plug the chip into his own system, generate the selected R, and observe the output. To find the key, the attacker can also search for an R that produces a particular F [M]. This is because many authentication chips can be tested in parallel;
Depending on the one-way function chosen, key generation can be complicated. The method of choosing a good key depends on the algorithm used. Some keys are vulnerable to certain algorithms;
The selection of the keyed one-way function itself is not important. It may require a license derived from patent protection.
[1108]
The mediator can act on the plaintext message M before passing the plaintext message M to chip A, which is preferred if the mediator does not see M until chip A sees M. It is more preferable when the medium does not see M at all.
[1109]
If F is symmetric encryption, the chip cannot be taken out of the United States due to the key size required for proper security. This is because the chip can be used as a strong encryption device.
[1110]
If the protocol is implemented using F as an asymmetric cryptographic algorithm, there is no advantage over the symmetric case, the key needs to be longer, and the cryptographic algorithm in silicon becomes more expensive. Protocol 1 must be implemented using two authentication chips to maintain key security. That is, each system requires an authentication chip, and each consumable requires an authentication chip.
[1111]
Protocol 2
In some cases, the system has a large amount of processing power. Alternatively, for example, in the case of a mass-produced system, it is desirable to integrate the chip T into the system. By using an asymmetric cryptographic algorithm, it is permissible to make the chip T part of the system uncertain. Therefore, Protocol 2 uses an asymmetric cryptosystem. For this protocol, each chip stores the following values:
KEK[X] and DKThis is the key for [X]. It should be kept secret in Chip A. No need to keep secret in chip T;
R Current random number. It doesn't have to be a secret, but it must be seeded with a different initial value for each chip instance. It changes every time the Random function is called.
[1112]
The following functions are defined:
E [X] Chip T only. EKReturns [X]. However, E is an asymmetric encryption function E;
D [X] Chip A only. DKReturns [X]. However, D is an asymmetric encryption function D;
Random [] Chip T only. R | EKReturns [R]. R is a random number based on the seed S. Advance R to the next in the random number sequence.
[1113]
Public key KTIs in chip T, while private key KAIs on chip A. KTIs on the chip T, which has the advantage that the chip T can be realized by software or hardware (however, the seed of R differs depending on the chip or system). Therefore, protocol 2 can be realized as both a single-chip protocol and a double-chip protocol. The protocol for authentication is as follows:
The system calls the Random function on chip T;
Chip T is R | EKTReturn [R] to the system;
The system calls function D on chip A and EKTPass [R];
Chip A is DKA[EKTReturns the R obtained by [R]];
The system compares the R from chip A with the original R produced by chip T. If they match, chip A is considered valid. If they do not match, chip A is considered invalid.
[1114]
The data flow is shown in Figure 170. Protocol 2 has the following advantages:
KA(Private key) is not revealed during the authentication process;
EKTWhen [X] is given, the duplicate chip is KACannot generate X without using or accessing the actual chip A;
KT≠ KAAs such, the chip T can be implemented entirely in software, with uncertain hardware, or as part of a system. Only chip A (in consumables) is required to be a secure certified chip;
If the chip T is a physical chip, the system can be easily designed;
Among a number of well-documented and decrypted asymmetric algorithms, one can choose an algorithm for implementation, including a patent-opened and license-free solution.
[1115]
However, Protocol 2 has a number of unique problems:
For sufficient security, each key should be 2048 bits (as opposed to the minimum value of 128 bits for Protocol 1 symmetric cryptography). The associated intermediate memory used by the encryption and decryption algorithms will be correspondingly large;
Key generation is important. Random numbers are not a good key;
If the chip T is mounted as a core, it is difficult to connect the chip T to a given system ASIC;
When chip T is implemented as software, not only is the system implementation vulnerable to programming errors and non-strict tests, but the integrity of the compiler and mathematical primitives is rigorously checked for each system implementation. Must. This is more complex and costly than simply using a well-tested chip;
The private key K, despite the fact that a number of symmetric algorithms have been enhanced specifically to counter differential cryptanalysis (based on selective text attacks).AAre vulnerable to selective text attacks;
If chip A and chip T are instances of the same authentication chip, each chip must have both asymmetric encryption and decryption capabilities. As a result, each chip is larger, more complex, and more expensive than the chip required for Protocol 1;
If the certified chip is split into two chips to save costs and reduce design / test complexity, the two chips still need to be manufactured, reducing economies of scale. This is offset by the relative number of system consumables, but still needs to be considered;
Protocol 2 authentication chips cannot be taken out of the United States. Because they are considered strong cryptographic devices.
[1116]
Even if the process of selecting a key for Protocol 2 is simple, Protocol 2 is not practical at this time due to the high cost of silicon implementation (both key size and functional implementation). Therefore, protocol 1 is selected as the protocol for presence-only authentication.
[1117]
Duplicate consumables that use genuine certified chips
Protocols 1 and 2 only check if chip A is a genuine authentication chip. They do not check to see if the consumables themselves are valid. As a basic premise for authentication, if chip A is valid, then the consumables are valid. Therefore, the replica manufacturer can insert a genuine certified chip into the replica consumable. Consider the following two cases:
In cases where state data is not written to the authentication chip, the chip is completely reusable. Therefore, the replica manufacturer can recycle valid consumables into replica consumables. This is made difficult by fusing the certified chip into the physical packaging of the consumables, but will not stop the refiller;
In the case where the state data is written to the authentication chip, the chip is new, partially used, or completely used up. However, this does not stop the use of the piggyback attack by the replica manufacturer, and the replica manufacturer builds a chip with a genuine certified chip as a piggyback. The attacker's chip (chip E) is the medium. When the power is turned on, the chip E reads all the storage state values from the genuine authentication chip 53 into the unique memory. Chip E then inspects the requirements from the system and takes various actions in response to the requirements. The authentication request can be passed directly to the real authentication chip 53, while the read / write request can be simulated by a memory similar to the behavior of the real authentication chip. In this way, the authentication chip 53 always appears to be new at power up. Chip E can do this because data access is not authenticated.
[1118]
In order to deceive the system and make it think that the system's data access was successful, chip E still needs a real authentication chip, and in the second case, a duplicate chip is needed in addition to the real chip. As a result, Protocols 1 and 2 are valid when the replica manufacturer is not cost effective in embedding the genuine authentication chip 53 in the consumables. If the consumables cannot be recycled or easily refilled, the use of Protocol 1 or Protocol 2 provides adequate protection. For a successful replication operation, each replication consumable must be equipped with a valid authentication chip. The chips must be stolen in bulk or removed from old consumables. The amount of these reclaimed chips is insufficient to base the business (along with the effort to regenerate them) and there is no real benefit to adding protection for secure data transfer (see Protocols 3 and 4).
[1119]
Key life
A common problem with the above two protocols is that once an authentication key is selected, it is not easy to change it. In some situations it is not a problem for the key to be compromised, but in other cases it is fatal to compromise the key. For example, in a car / car key system / consumables scenario, the consumer has only one set of car / car keys. Each car has a different authentication key. As a result, the loss of car keys only jeopardizes individual cars. If the owner considers this a problem, the owner must obtain a new "car key" by replacing the system chip in the car's electronics. The owner's key needs to be reprogrammed / exchanged to work with the new "car system authentication chip". On the other hand, jeopardizing the keys of the mass consumables market (eg, printer ink cartridges) allows duplicate ink cartridge manufacturers to manufacture their own certified chips. The only solution to existing systems is to update the system authentication chip, which is a costly and logisticsally difficult task. In any case, the consumer's system is already functioning normally and there is no incentive to interfere with existing equipment.
[1120]
Consumables Lifetime Certification
At this level of consumables certification, we are interested in confirming the existence of the certified chip and ensuring that the certified chip survives for the same period as the consumables. In addition to confirming the existence of the authentication chip, the writing and reading of the memory space of the authentication chip must be authenticated as well. This section assumes that the data storage integrity of the authentication chip is secure, some of the memory is read-only, some is read / write, and others are decrement-only (more specifically). , See the chapter entitled Data Memory Integrity). There are two protocols. Protocol 3 requires two authentication chips, and protocol 4 can be implemented using one or two authentication chips.
[1121]
Protocol 3
This protocol is a double-chip protocol (two authentication chips are required). For this protocol, each authentication chip stores the following values:
K1 FK1The key to calculate [X]. Must be kept secret;
K2 FK2The key to calculate [X]. Must be kept secret;
R Current random number. It doesn't have to be a secret, but it must be seeded with a different initial value for each chip instance. It changes with each successful authentication as defined by the Test function;
Memory vector of M authentication chip 53. Part of this space should be different from chip to chip (not necessarily random numbers).
[1122]
Each authentication chip stores the following logical functions:
F [X] For internal functions only. One-way function F is the key K1Or key K2F which is the result of applying to X based on any ofKReturns [X];
Random [] R | FK1Returns [R];
Test [X, Y] FK2If [R | X] = Y, 1 is returned and R is advanced. Otherwise, it returns 0. The time it takes to return 0 must be the same for all bad inputs;
Read [X. Y] FK1If [X] = Y, then M | FK2Returns [X | M]. Otherwise, it returns 0. The time it takes to return 0 must be the same for all bad inputs;
Write [X] Write X to the legitimately rewritable part of M.
[1123]
To authenticate chip A and read the memory M of chip A,
The system calls the Random function of chip T and
Chip T is R | FKGenerate [R], return it to the system,
The system calls the Read function of chip A, and R, FKPass [R] and
Chip A is M and FKReturns [R | M] and
The system calls the Test function of chip T and M and FKPass [R | M] and
The system checks the response from chip T. If the response is 1, then chip A is considered authentic. If it is 0, chip A is considered invalid.
[1124]
M to memory M of chip AnewTo authenticate the writing of
The system calls the Write function of chip A and MnewPass,
The authentication procedure for reading is executed,
Chip A is authentic and MnewIf = M, the write is successful. Otherwise, the write failed.
[1125]
The read authentication data flow is shown in FIG. 171. The first thing to note about Protocol 3 is FK[X] cannot be called directly. Instead, FK[X] is indirectly called by Random, Test and Read:
Random [] is FK1Call [X]. X is not selected by the caller. X is selected by the Random function. The attacker is the desired X, FK1In order to obtain a pair of [X], a brute force search must be performed using multiple calls to Random, Read, and Test;
Test [X, Y] is FK2Call [X]. Instead of returning the result as is, it compares the result with Y and returns 1 or 0. F for a given XK2By trying various values of [R | X] and calling Test multiple times, K2Attempts to infer are reduced to brute force searches where R cannot be selected by the attacker;
Read [X, Y] is FK1Call [X]. X and FK1Since [X] must be supplied by the caller, the caller has X, F in advance.K1[X] Pair must be known;
This call is Y ≠ FK1If it is [X], 0 is returned, so the caller is K.1You can use the Read function for brute force attacks against;
Read [X, Y] is FK2Call [X | M]. X is supplied by the caller, but X can only take the values already given by the Random function (because X and Y are K).1Verified by). For this reason, selective text attacks must first collect pairs from Random (in effect, brute force attacks). Moreover, only part of M is used in select text attacks. This is because a part of M is constant (read only), and the decrement only part of M can be used once for each consumable. In the next consumable, the read-only part of M is different.
[1126]
FKIndirect calling of [X] prevents a selective text attack on the authentication chip. The attacker selected R, F by calling Random, Read, and Test multiple times until the desired R appeared.K1Only [R] pairs can be obtained, so K1Brute force attack on K2Required to perform a restricted selection text attack on. K2Attempts at selective text attacks on will be limited. Because the text cannot be completely selected, part of M is read-only and is still different for each authentication chip. The second thing to note is that two keys are used. Given a small size M, two types of keys K1And K2Is used to ensure that there is no correlation between F [R] and F [R | M]. Therefore, K1Is K from the differential attack2Used to protect. It is inadequate to use one longer key. This is because M is only 256 bits and only a part of M changes during the useful life of the consumable. Otherwise, the attacker uses some undiscovered technique to determine the effect of limited M changes on a particular R bit combination, and F.K1F based on [X]K2It may be possible to calculate [X | M]. As an additional precomputation, the Random and Test functions of chip A should be disabled, resulting in R, F.KTo generate pairs of [R], the attacker would have to use instances of chip T, each of which is more expensive than chip A (because the system must be acquired for each chip T). Because it must be). Similarly, delays between Random, Read and Test calls should be minimized, and as a result, attackers cannot call these functions at high speed. In this way, each chip has a specific number of X, F at a given time.KOnly the [X] pair is revealed. The only unique timing requirement of Protocol 3 is that a return value of 0 (indicating a bad input) should be generated at the same time, regardless of where the error resides in the input. .. Therefore, the attacker cannot learn what the error regarding the input value is. This also holds for both the RD and TST functions.
[1127]
Another thing to note about Protocol 3 is that chip A authentication is also required to read data from chip A. The system is FK2When [R | M] is returned correctly, it can be confirmed that the contents of the memory (M) are the contents claimed by the chip A. The replication chip may pretend that M is a value (eg, pretending to be full of consumables), but the replication chip is F for any R passed by the system.K2[R | M] cannot be returned. Thus, the de facto signature, FK2[R | M] not only guarantees that the authentication chip A has transmitted M, but also ensures that M has not been tampered with between chip A and the system. Finally, the Write function described above does not authenticate writes. To authenticate a write, the system must perform a read after each write. Protocol 3 has some basic advantages:
K1And K2Is not revealed during the authentication process;
When X is given, the replicating chip is F without using K or accessing the real chip A.K2Unable to generate [X | M];
The system is easy to design, especially in low cost systems such as inkjet printers, as the system itself does not require encryption or decryption;
There is a wide range of key-based one-way functions, including symmetric cryptography, random number sequences, and message authentication codes;
Keyed one-way functions require fewer gates and are easier to validate than asymmetric algorithms. );
The secure key size for a keyed one-way function does not have to be as large as for an asymmetric (public key) algorithm. If F [X] is a symmetric cryptographic function, then a minimum of 128 bits can provide adequate security.
[1128]
Therefore, in the case of protocol 3, the only way to authenticate chip A is to read the contents of the memory of chip A. The security of this protocol is the basis of FK[X] Depends on the scheme and the domain of R across all system sets. FK[X] may be a one-way function with a key, but there is no advantage in realizing it as an asymmetric cipher. The keys need to be longer and the encryption algorithms are more expensive in silicon. This results in a second protocol for use with the asymmetric algorithm, namely Protocol 4. Protocol 3 needs to be implemented with two authentication chips to keep the key secret. That is, each system requires an authentication chip, and each consumable requires an authentication chip.
[1129]
Protocol 4
In some cases, the system has a large amount of processing power. Alternatively, for example, in the case of a mass-produced system, it is desirable to integrate the chip T into the system. By using an asymmetric cryptographic algorithm, it is permissible to make the chip T part of the system uncertain. Therefore, Protocol 4 uses an asymmetric cryptosystem. For this protocol, each chip stores the following values:
KEK[X] and DKThis is the key for [X]. It should be kept secret in Chip A. No need to keep secret in chip T;
R Current random number. It doesn't have to be a secret, but it must be seeded with a different initial value for each chip instance. It changes with each successful authentication as defined by the Test function;
Memory vector of M authentication chip 53. Part of this space should be different from chip to chip (not necessarily random numbers).
[1130]
There is no point in verifying anything with the Read function. This is because anyone can use the public key to encrypt. Therefore, the following function is defined:
E [X] Internal function only. EKReturns [X]. However, E is an asymmetric encryption function E;
D [X] Internal function only. DKReturns [X]. However, D is an asymmetric encryption function D;
Random [] Chip T only. EKReturns [R];
Test [X, Y] DKIf [R | X] = Y, 1 is returned and R is advanced. Otherwise, it returns 0. The time it takes to return 0 must be the same for all bad inputs;
Read [X] M | EKReturns [R | M]. However, R = DK[X] (do not test input);
Write [X] Write X to the legitimately rewritable part of M.
[1131]
Public key KTIs in chip T, while private key KAIs on chip A. KTHas the advantage that the chip T can be realized by software or hardware (however, R is seeded with a random number different for each system). To authenticate chip A and read the memory M of chip A,
The system calls the Random function of chip T and
Chip T is EKTGenerate [R], return it to the system,
The system calls the Read function of chip A and EKTPass [R] and
Chip A is M | EKAReturns [R | M] and first DKA[EKT[R]] earns R
The system calls the Test function on chip T and M and EKAPass [R | M] and
Chip T is DKT[EKACalculate [R | M]] and compare it with R | M.
The system checks the response from chip T. If the response is 1, then chip A is considered authentic. If it is 0, chip A is considered invalid.
[1132]
M to memory M of chip AnewTo authenticate the writing of
The system calls the Write function of chip A and MnewPass,
The authentication procedure for reading is executed,
Chip A is authentic and MnewIf = M, the write is successful. Otherwise, the write failed.
[1133]
The read authentication data flow is shown in FIG. 172. Only the valid chip A knows the value of R. This is because R is not passed to the authentication function (it is passed as an encrypted value). R must be obtained by decrypting E [R], which is the private key K.ACan only be done by using. When R is acquired, R is added to M and the result is recoded. Chip T is a decrypted form of EKA[R | M] = R | M can be verified, whereby chip A is valid. KT≠ KATherefore, EKT[R] ≠ EKA[R]. Protocol 4 has the following advantages:
KA(Private key) is not revealed during the authentication process;
EKTWhen [X] is given, the duplicate chip is KACannot generate X without using or accessing the actual chip A;
KT≠ KAAs such, the chip T can be implemented entirely in software, with uncertain hardware, or as part of a system. Only Chip A is required to be a secure authentication chip;
Since chip T and chip A store different keys, even a vigorous test of chip T can result in K.ANothing is clear about;
If the chip T is a physical chip, the system can be easily designed;
Among a number of well-documented and decrypted asymmetric algorithms, algorithms for implementation can be selected, including patent-opened and license-free solutions;
Even if the system can be rewired so that chip A's requirements are directed to chip T, KT≠ KATherefore, the chip T cannot respond to the chip A. The attack should be directed at the system ROM itself to circumvent the authentication protocol.
[1134]
However, Protocol 4 has a number of problems:
All authentication chips need to accommodate both asymmetric encryption and decryption features. As a result, each chip is larger, more complex, and more expensive than the chip required for Protocol 3;
For sufficient security, each key should be 2048 bits (as opposed to the minimum value of 128 bits for Protocol 1 symmetric cryptography). The associated intermediate memory used by the encryption and decryption algorithms will be correspondingly large;
Key generation is important. Random numbers are not a good key;
If the chip T is mounted as a core, it is difficult to connect the chip T to a given system ASIC;
When chip T is implemented as software, not only is the system implementation vulnerable to programming errors and non-strict tests, but the integrity of the compiler and mathematical primitives is rigorously checked for each system implementation. Must. This is more complex and costly than simply using a well-tested chip;
The private key K, despite the fact that a number of symmetric algorithms have been enhanced specifically to counter differential cryptanalysis (based on selective text attacks).AIs vulnerable to selective text attacks.
[1135]
Protocol 4 authentication chips cannot be taken out of the United States. Because they are considered strong cryptographic devices.
[1136]
As with Protocol 3, the only unique timing requirement for Protocol 4 is that a return value of 0 (indicating a bad input) is generated at the same time, regardless of where the error resides in the input. It should be. Therefore, the attacker cannot learn what the error regarding the input value is. This also holds for both the RD and TST functions.
[1137]
Changes in TST calls
If two authentication chips are used, the replica manufacturer can theoretically replace the system authentication chip with one that returns 1 (success) for each TST call. The system can test this by calling TST N times with the wrong hash value many times and predict that the result will be zero. When TST is last called, the true return value from chip A is passed and the return value is reliable. The number of times TST is called matters. The number of calls must be random. This makes it impossible for the duplicate chip manufacturer to know the number of times in advance. If the system has a clock, the bits from the clock are used to determine how many wrong TST calls must be made. Otherwise, the return value from chip A can be used. In the latter case, the attacker could still rewrite the system to allow the duplicate chip T to monitor the return value from chip A, thereby knowing the correct hash value. The worst case, of course, is when the system is completely replaced by a replication system that does not require certified consumables, which is the limit of rewriting and modifying the system. For this reason, changes to the TST call are optional and depend on the system, consumables, and potential for changes. Adding such logic to the system would not be worth it (for example, in the case of a small desktop printer) as it would make the system more complex. On the other hand, adding such logic to the camera would be worth it.
[1138]
Duplicate consumables that use genuine certified chips
It is important to decrement the remaining consumables before using the consumables part. This is because if the consumables are used first, the duplicate consumables will look like new consumables, pretending to be inadequate contact during writing to a special known address. It is important that this attack still requires a genuine authentication chip for each consumable.
[1139]
Key life
A common problem with the above two protocols is that once an authentication key is selected, it is not easy to change it. In some situations it is not a problem for the key to be compromised, but in other cases it is fatal to compromise the key.
[1140]
Protocol selection
Even if the keys for protocols 2 and 4 are easy to choose, both protocols are not practical at this time due to the high cost of silicon implementation (both in terms of key size and functional implementation). Therefore, the protocols selected are protocols 1 and 3. However, protocols 1 and 3 contain many of the same components.
Both require write and read access and
Both require the implementation of a keyed one-way function,
Both require a random number generation function.
[1141]
Protocol 3 is an additional key (K)2) Is needed and some kind of minimal state machine change:
F during RandomK1Changing the state machine so that [X] can be called, and
FK2The Test function that calls [X] and
FK1[X] and FK2Changes to the Read function of the state machine to call [X],
is required.
[1142]
Protocol 3 requires minimal changes to protocol 1. Protocol 3 is more secure and can be used in all situations where presence-only authentication (protocol 1) is required. Therefore, it is a particularly good protocol. The selection of a one-way function will be described in more detail when both protocols 1 and 3 use a keyed one-way function. The table below outlines the attributes of the applicable choices. Attributes are represented so that they can be seen as an advantage.
[1143]
[Table 103]
Figure 2001523900
Examination of this table reveals that there is effectively a choice between three types of HMAC structures and random sequences. Key size and key generation issues exclude random sequences. Considering that a large number of attacks have already been executed against MD5, HMAC-MD5 is also excluded because the hash result is only 128 bits. Therefore, a selection will be made between HMAC-SHA1 and HMAC-RIPEMD160. RIPEMD-160 is relatively new and has not been decrypted on a large scale like SHA1. However, since SHA-1 is designed by the NSA, this can also be seen as a negative attribute.
[1144]
If there is no significant difference between the two, SHA-1 will be used for the HMAC structure.
[1145]
Random number generator selection
Each of the above protocols (1-4) requires a random number generator. The generator must be "good" in the sense that the random numbers generated over the useful life of all systems are unpredictable. If the random numbers are the same for each system, an attacker can easily record the correct response from a real authentication chip and contain that response in a ROM lookup for the duplicate chip. .. In the case of such an attack, K1Or K2You don't have to get. Therefore, the random numbers from each system need to be sufficiently different to be unpredictable, i.e. non-deterministic. In this way, the initial value of R (random seed) is physically generated from a physically random phenomenon in which there is no information about whether a particular bit is 1 or 0. It should be programmed with random numbers. The R seed should never be generated by a random number generator running on a computer. Otherwise, the generator algorithm and seed will be decrypted and the attacker will be able to generate and know all R pairs for all systems.
[1146]
The different R seeds for each certified chip means that the first R is random and unpredictable for every chip. Therefore, how to generate the subsequent R in each chip becomes a problem.
[1147]
In the basic case, R does not change at all. As a result, R and FK1[R] is the same for each call to Random []. If they are the same, FK1[R] can be a constant rather than being calculated. An attacker could use a single valid authentication chip to generate a valid lookup table and use that lookup table within a replication chip specifically programmed for the system. .. The constant R is not safe.
[1148]
The simplest conceptual way to change R is to increment R by one. Since R starts with a random number, its value in various systems is likely to be random. However, given the initial R, all subsequent R values can be determined directly (R is R, without needing to repeat 10,000 times).0From R0Take a value up to +10000). Incrementing R does not have to worry about being attacked by the constant R as described above. Since R is always different, there is no way to build a look-up table for a particular system without wasting as many authentication chips as there are duplicate duplicate chips to be substituted.
[1149]
Besides incrementing with an adder, another way to change R is to implement it as an LFSR (Linear Feedback Shift Register). This has the advantage of having less silicon than the adder, and also has the advantage that the attacker cannot directly determine the range of R for a particular system because the LFSR value domain is determined by sequential access. To determine the values that a given initial R produces, the attacker must iterate over the possibilities and enumerate them. The benefits of varying R are also evident in the case of LFSR solutions. Since R is always different, there is no way to build a look-up table for a particular system without running out of as many authentication chips as the duplicate chips (dedicated to the particular system) replace. Therefore, there is no advantage in introducing more complex functions to change R. Regardless of the function, an attacker can always simulate a set of values to repeat over their useful life. The original safety lies in the initial randomness of R. Using the LFSR to change the R has the only advantage that it is not limited to a continuous numerical range (apart from the fact that it uses less silicon than the adder) (ie, R, R).NThe attacker must repeat the LFSR N times because it cannot be directly known by calculation).
[1150]
Therefore, the random number generator in the authentication chip is a 160-bit LFSR. 160-bit tap selection for maximum period LFSR (ie, LFSR is 2 in total as 0 is not in a valid state160-1 Circulating the state) results in bits 159, 4, 2 and 1 as shown in FIG. 173. The LFSR is sparse and many bits are not used for feedback (only 4 of the 160 bits are used). This is a problem for cryptographic applications, but not for non-sequential number generation applications. The 160-bit seed value of R can be any random number other than 0. This is because a 0-filled LFSR produces an endless stream of 0s. Since the above-mentioned LFSR has a maximum period LFSR, all 160 bits can be used as they are as R. Output bit b0There is no need to build numbers in order from. Each time the TST call is successful, the random number (R) is advanced by XORing bits 1, 2, 4 and 159 and shifting the result to the high-order bits. New R and corresponding FK1[R] can be retrieved at the next call to Random.
[1151]
Countering logical attacks
Protocol 3 is an authentication scheme used by the authentication chip. Therefore, it should be resistant to invalidation by logical means. Having described the effects of various types of attacks on Protocol 3, this section details each type of attack in terms of Protocol 3.
[1152]
Brute force attack
Brute force attacks are guaranteed to break Protocol 3. However, the length of the key means that the attacker takes so long to perform a brute force attack that it is not worth the effort. The attacker K to build a duplicate authentication chip2All you have to do is break. K1K against other forms of attack2It is only provided to strengthen. K2A brute force attack on the brute force therefore must break the 160-bit key. K2Up to 2 attacks against160Requires 2 trials, 2159The probability of detecting a key after one trial is 50%. Assuming an array of trillion processors, each running 1 million tests per second would be 2159Times (7.3 × 1047) Test 2.3 × 1023It takes years, which is longer than the life of the universe. There are only 100 million personal computers in the world. Even if they were connected during the attack (eg, via the Internet), the number would be 10,000 times less than the trillion processor attacks described above. Moreover, even if the production of trillion processors became possible in the era of nanocomputers, the time required to obtain a key would be longer than the life of the universe.
[1153]
Guess attack
It is theoretically possible for an attacker to simply "guess the key." In fact, if you have enough time and try every number, the attacker will get the key. This is the same as the brute force attack described above, 2 before achieving a 50% success rate.159You have to make one trial. There are only two chances for a person to simply guess the key in the first attempt160Is. In contrast, the odds of a person winning the first prize in the US lottery and dying from lightning on the same day are two.26It's only one-third. The probability that a person will guess the key on the first attempt is 2160It is one-third, which is comparable to two people choosing the exact same atom from all the atoms on Earth, that is, very unlikely.
[1154]
Quantum computer attack
K2To break, it is necessary to build a quantum computer containing 160 cubits built into the appropriate algorithm. An attack on a 160-bit key is not feasible. The marginal prospect of quantum computers is to reach 50 cubits within 50 years. Even if you use a 50 qubit quantum computer, to decrypt a 160 bit key, 2110Two tests are required. Assuming an array of 100 million 50 qubit quantum computers, each quantum computer is 2 per microsecond.50If we could try the key of times (beyond the most violent estimates at the moment), it would take an average of 18 billion years to find the key.
[1155]
Ciphertext only attack
The attacker can call and monitor the calls to RND and RD.1By launching ciphertext-only attacks against and monitoring calls to RD and TST2It is possible to attack only the ciphertext against. However, if all these calls reveal plaintext and the hash form of plaintext, the attack will turn into a more powerful form of attack, the known plaintext attack.
[1156]
Known plaintext attack
A logic analyzer is connected to the wiring between the system and the authentication chip, which makes it easy to monitor the flow of data. The flow of this data yields known plaintext and plaintext hash format, K1And K2Can be used to launch known plaintext attacks against both. K1It is necessary to make a large number of calls to RND and TST in order to attack against (a successful call to TST requires a call to RD on a valid chip). This is easy and an attacker would need to have both a system authentication chip and a consumables authentication chip. K1, X, HK1When each pair of [X] is revealed, K2, Y, HK2The pair of [X] is also revealed. The attacker must collect these pairs for further analysis. The question arises of how many pairs should be collected in order to use this data to launch a meaningful attack. An example of an attack that requires the collection of data for statistical analysis is differential cryptanalysis. However, since no attacks on SHA-1 or HMAC-SHA1 are known, there is no use for the collected data at this time.
[1157]
Chosen-plaintext attack
If the cryptanalyst has the ability to modify subsequent selected plaintext based on the results of previous investigations, then K2Is vulnerable to some forms of adaptive selective plaintext attacks, which are a stronger form of attack than simple selective plaintext attacks. Select plaintext attack is K1Cannot happen to. This is because the caller has no way to change the R used as input to the RND function (RND is K).1Is the only function that gives the result of hashing by). Clearing R is not useful because it has the effect of clearing the key, and the SSI command calls the CLR before storing the new R value.
[1158]
Adaptive Choice Plaintext Attack
This type of attack is K1Cannot happen to. Because K1Does not allow selective plaintext attacks. However, some forms of this attack are K2It can happen against, especially because both the system and the consumables are typically available to the attacker (the system attacks in some cases, such as certain cars). Cannot be accessed by anyone). The HMAC structure provides security against all forms of selective plaintext attacks. The main reason is that the HMAC structure has two secret input variables (the original hash result and the secret key). In this way, detecting a collision of the hash function itself when the input variable is secret is more difficult than finding a collision of the plaintext hash function. The reason is that the former requires direct access to SHA-1 (not allowed by Protocol 3) in order to generate input / output pairs from SHA-1. The only values that can be collected by an attacker are HMAC [R] and HMAC [R | M]. These reduce the attack to a differential cryptanalysis attack that examines the statistical differences between the collected data, rather than an attack on the SHA-1 hash function itself. In the absence of known differential cryptanalysis attacks against SHA-1 or HMAC, Protocol 3 counters adaptive selective plaintext attacks.
[1159]
Intentional error attack
An attacker can only issue intentional error attacks against the TST and RD functions. Because these are the only functions that validate the input to the key. For both TST and RD functions, the 0 value is generated when an error is found in the input and no further information is given. Moreover, the time it takes to generate a zero result is input independent, and the attacker cannot get information about which bit the error exists in. Therefore, intentional error attacks are ineffective.
[1160]
Chain attack
All forms of chained attacks assume that the message to be hashed spans several blocks or that input variables can be set in some way. The HMAC-SHA1 algorithm used in Protocol 3 can only hash a single 512-bit block at a time. As a result, chain attacks are not possible against Protocol 3.
[1161]
Birthday attack
The strongest known attack against HMAC is a birthday attack based on the frequency of hash function collisions. However, this is completely impractical for a minimal and rational hash function like SHA-1. Also, birthday attacks are only feasible when an attacker manages a signed message. Protocol 3 uses hashing as a form of digital signature. The system sends the number to be included in the response from the valid race chip. The authentication chip must respond using H [R | M], but since the input value R cannot be controlled, a birthday attack is not feasible. This is because the message is, in effect, already generated and signed. Instead, the attacker must search for collision messages that have been hashed to the same value (similar to finding someone with the same birthday as you). Therefore, the duplicate chip is R2Hash and selected M2Is a new value R such that produces the same hash value as H [R | M]2Must try to find. However, the system authentication chip does not reveal the correct hash value (the TST function only returns 1 or 0 depending on whether the hash value is correct). Therefore, the only way to find the correct hash value (to find a conflict) is to query the real authentication chip. However, finding the correct value means updating M, and the decrement-only part of M and the read-only part of M cannot be changed, so duplicate consumables are genuine before trying to find a collision. Consumables must be updated. An alternative is a brute force attack search on the TST function to find success (each replica consumable must have access to system consumables). As mentioned above, the brute force search takes longer than the life of the universe for each authentication in this example. It makes no sense for duplicate consumables to launch this type of attack, as collecting hash values in a timely manner means that real consumables must be decremented.
[1162]
Substitute with a full look-up table
The random number seed for each system is 160 bits. In the worst case situation of the authentication chip, the state data does not change. As a result, a constant value is returned as M. However, the duplicate chip has a 160-bit value of F.K2Must continue to return [R | M]. Assuming a 160-bit lookup table with 160-bit results, this is 7.3x1048Byte, i.e. 6.6 x 1036It requires terabytes and is definitely larger than the space that can be implemented in the near future. This, of course, does not even consider how to collect values for ROM. Therefore, a complete look-up table is completely unrealizable.
[1163]
Substitute by sparse look-up table
A sparse look-up table can only be performed if the message sent to the authentication chip is not effectively random and is reasonably predictable. The random number R is seeded with an unknown random number collected from a random event in nature. The replica manufacturer is unlikely to know the possible range of R for all squeezes. This is because the probability that each bit is 1 or 0 is 50%. Since the range of R in all systems is unknown, it is not possible to build a sparse look-up table that can be used in all systems. Therefore, a general sparse look-up table attack is unthinkable. However, the replica manufacturer can know the range of R for a particular system. This can be achieved by loading the LFSR with the current result from a call to the RND function of a particular system authentication chip and repeating it several times for the future. When this is done, a special ROM containing only the response to a particular R range, i.e. a dedicated ROM for the consumables of that particular system, can be built. However, the attacker must keep the correct information in ROM. Therefore, an attacker needs to detect a valid authentication chip and call it for each value of R.
[1164]
Suppose the replication authentication chip reports a complete consumable and can only be used once before simulating loss of connection and insertion of a new complete consumable. The duplicate consumable must store a response to full consumable certification and a response to partially used consumables. In the worst case, the ROM stores entries for complete and partially used consumables with respect to R over the life of the system. However, a valid authentication chip is used to generate information and should be partially used in the process. If a given system produces only n R-values, then the required sparse lookup ROM is 10 n bytes multiplied by the number of different values for M. The time required to build the ROM depends on the time charged during the RD call.
[1165]
Nevertheless, replica manufacturers are forced to rely on consumables that are returned for refilling. This is because the cost of building a ROM in the first place consumes one consumable. The business of replica manufacturers in this situation is ultimately refilling. The time and cost depend on the size of R and the number of types of M values that should be incorporated into the lookup. Moreover, the custom copy ROM must be compatible with each and every system, and different valid authentication chips must be used per system (to provide complete and partially used data). .. The use of authentication chips in the system must therefore be inspected to determine if this type of attack is of value to the replica manufacturer. One example is a camera system that has a useful life of about 10,000 prints. Suppose there is a delay of 1 second between a single decrement-only value (number of prints remaining) and the call to RD. In such a system, the sparse table takes about 3 hours to build and consumes 100K. It should be noted that the charge must be higher than the sum of one consumable and the duplicate consumable, as it is necessary to consume a valid authentication chip to configure the ROM. Performing this function on a single consumable in this way is not cost effective (unless the duplicate consumable is somehow contained in a large number of equivalent certified consumables). If the replica manufacturer spares no effort in building a custom ROM for each system owner, a simpler approach would be to update the system to completely ignore the authentication chip, therefore. This attack is feasible as a system-by-system attack, and the possibility of this happening for a given system / consumable combination must be determined. The possibilities are the cost of consumables and certified chips, the life of the consumables, the profit margin of the consumables, the time required to generate the ROM, the size of the ROM obtained, the duplicate chips with the same customer, etc. Depends on whether to return to the replica manufacturer for refilling using.
[1166]
Difference cryptanalysis
Known differential attacks rely heavily on the structure of S-boxes as used in DES and other similar algorithms. Other algorithms, such as HMAC-SHA1 used in Protocol 3, do not have an S-box, but the attacker
Minimum difference input and corresponding output
Minimum difference output and corresponding input
A differential attack can be performed by performing a statistical analysis of.
[1167]
Input / output pair pairs are collected to launch attacks of this nature. Collection from Protocol 3 is by known plaintext attacks or partially adaptive selective plaintext attacks. Obviously, it is more useful to choose the latter. Hashing algorithms are generally designed to counter differential cryptanalysis. In particular, SHA-1 has been enhanced, especially by the 80-word extension, so the minimum difference in input is to produce an output with a large number of bit-position changes (compared to a 128-bit hash function). Let's go. Moreover, the information collected is not a direct SHA-1 input / output due to the nature of the HMAC algorithm. The HMAC algorithm hashes a known value with an unknown value (key), and the result of this hash is then rehashed with a separate unknown value. Since the attacker does not know the secret value or the result of the first hash, the inputs and outputs from SHA-1 are unknown, making any differential attack extremely difficult. In the following, the input and output of the minimum difference from the authentication chip will be described in more detail.
[1168]
Enter the minimum difference
In this case, the attacker has an X value, FK[X] A set of values is acquired, the X value is the minimum difference, and the output FKCheck for statistical differences between [X]. The attack depends on the X value, which differs by a minimum number of bits. FKThe problem is how to obtain the X value of the minimum difference in order to compare the [X] values.
[1169]
K1: K1In the case of, the attacker has a minimum difference X, FK1[X] Pairs must be inspected statistically. However, the attacker could not select the X value and the associated FK1[X] Value cannot be obtained. X, FK1Since the [X] pair can only be generated by calling the RND function on the system authentication chip, the attacker calls the RND multiple times and records each observed pair in the table. Next, FK1In order to perform the statistical analysis of [X], it is necessary to search for the minimum difference X value among the observed values.
[1170]
K2: K2In the case of, the attacker has a minimum difference X, FK2[X] Pairs must be inspected statistically. X, FK2The only way to generate [X] pairs is by the RD function, which is a given Y, F.K1F for the [Y] pairK2[X] is generated, where X = Y | M. This means that the modifiable parts of Y and M can be selected in a limited range by the attacker. The amount of selection should therefore be as large as possible.
[1171]
The first way to limit an attacker's choice is to limit Y. Because RD is format Y, FK1This is because the input of [Y] is requested. A valid pair can be easily obtained from the RND function, which is a RND-selected pair. The attacker only gets the right pair from the RND, or K1It is possible to provide a unique Y only if you know. A blues force search is required to obtain the appropriate pair from the RND. K1Is logically feasible only by performing cryptanalysis on the pair obtained from the RND function, i.e., by a de facto known text attack. The number of times RND can be called per second is fixed, but K1Is common to system chips. Therefore, known pairs can be generated in parallel. A second way to limit an attacker's choice is to limit M, or at least limit the attacker's ability to choose M. The limitation of M is realized by making a part of M read-only, different for each authentication chip, and making the other part of M decrement-only. The read-only portion of M should ideally be different for each authentication chip, so it may be information such as a serial number, batch number, or random number. The decrement-only part of M can decrement only that part of M that many times when an attacker tries a different M, and after the decrement-only part of M drops to 0, that part can be changed again. It means that there is no such thing. Acquiring a new authentication chip 53 gives a new M, but the read-only portion is different from the read-only portion of the previous authentication chip, thus further reducing the attacker's ability to select the M. As a result, the attacker can only slightly increase the chances of choosing values for Y and M.
[1172]
Minimal difference output
In this case, the attacker has an X value, FK[X] Get a set of values and FKThe [X] value represents the minimum difference and the statistical difference between the X values is examined. Attacks differ by the minimum number of bits FK[X] Depends on the value. K1And K2For both, the attacker is given a given FKThere is no way to generate an X value for [X]. To do so, it would violate the fact that F is a one-way function. As a result, the only way an attacker can incorporate an attack of this nature is all observed X, F.K[X] Recording a pair in a table. The search is a sufficiently minimal difference F for statistical analysis of the X value.K[X] This is done in the observed values to find the value. If this requires more work than a minimal difference input attack (very limited due to restrictions on M and R selection), this attack is futile.
[1173]
Message replacement attack
In order to carry out this type of attack, the replica manufacturer needs to store the genuine authentication chip 53, which is not diminished and is virtually reusable. The duplicate authentication chip steals a message and replaces it with its own message. However, this attack is unsuccessful for the attacker. The duplicate authentication chip may choose not to pass the WR command to the real authentication chip. However, subsequent RD commands must return the correct response (as if the WR was successful). The hash value for a particular R and M must be known in order to return a correct response. As explained in the Birthday Attacks section, the attacker cannot determine the hash value without actually updating the M in the real chip, but the attacker does not want to do this. Even changing the R sent by the system is useless. This is because the system authentication chip must match R during subsequent TSTs. Therefore, the message replacement attack is unsuccessful. This is only true if the system updates the consumables balance before using the consumables.
[1174]
Key generator reverse engineering
When a pseudo-random number generator is used to generate a key, the replica manufacturer may obtain a generator program or infer the random seed used. This is the way Netscape's security program was first breached.
[1175]
Avoiding the entire authentication
Protocol 3 requires the system to update the consumables status data before using the consumables and continue reading after every write (to authenticate the write). In this way, certification is required for each use of consumables. If the system sticks to these two simple rules, the replica manufacturer must simulate authentication by the methods described above (such as sparse ROM lookup).
[1176]
Reuse of authentication chip
As mentioned above, Protocol 3 requires the system to update the consumables state data prior to use of the consumables and continue reading after all writes (to authenticate writes). In this way, certification is required for each use of consumables. When the consumables are used up, the appropriate state data value of the authentication chip is reduced to zero. Therefore, the chip cannot be used as another consumable item. It should be noted that this is only true for authentication chips that hold decrement-only data items. There is nothing to prevent chip reuse in the absence of state data that can be decremented each time it is used. This is the fundamental difference between presence-only certification and consumable lifetime certification. Protocol 3 allows both. In conclusion, if the consumable has a decrement-only data item used by the system, the authentication chip cannot be reused unless it is completely reprogrammed by a valid programming station that knows the private key.
[1177]
Management decision to omit certification to save costs
Although not limited to external attacks, the decision to omit authentication in future systems to save costs will have different implications for different markets. It should be noted that for mass-produced consumables, it is extremely difficult to introduce certification after it goes on sale. This is because systems that require certified consumables do not work with older consumables in circulation. Similarly, it is impractical to discontinue certification at some stage. This is because older systems do not work with new, uncertified consumables. In the second case, older systems can be individually modified by replacing the system authentication chip with a simple chip that has the same programming interface but whose TST function always succeeds. is there. Of course, the system may be programmed to always test and stop successful TST functions. For specialized pairs such as car / car keys, or door / door keys, or other similar situations, omitting authentication in future systems is not important and has no effect. This is because consumers are buying the entire set of systems and consumables authentication chips at the same time.
[1178]
Robbery / bribery attack
This form of attack can only succeed in one of two environments:
K1, K2, And R have already been recorded by the chip programmer, or
The attacker is the future K1, K2, And the value of R can be forcibly recorded.
[1179]
When a human or computer system outside the programming station does not know the keys, they cannot be revealed by violence or bribes. The level of security against this type of attack is ultimately a decision made by the system / consumables owner according to the desired level of service. For example, an automobile company wants to keep a record of all the keys it manufactures, so it can request the creation of new keys for the car. However, this could compromise the entire key database, allowing an attacker to create a key for the manufacturer's existing car. This does not allow an attacker to create a new car key. Of course, the key database itself is encrypted with another key, and in order to access the key database, it is necessary to combine the key parts of a certain number of people into one. If you don't have a record of which key is used for a particular car, there's no way to create an auxiliary key if you lose it. In this case, the owner would have to replace all of his car's authentication chip and his car key. This is not necessarily a problem. In contrast, in the case of consumables such as printer ink cartridges, one key combination is used for all systems and all consumables. Of course, if a backup of the key is not saved, no one knows the key and no attack is possible. However, a situation without backup is not desirable for consumables such as ink cartridges. This is because if the key is lost, no more consumables can be manufactured. Therefore, the manufacturer should keep a backup of the key information in several parts, and some people need to combine each part into one in order to reveal the information of the whole key. is there. This is required if it has to be reloaded into the chip programming station. In any case, these attacks are not attacks on Protocol 3 itself. Because no one is involved in the authentication process. Instead, this is an attack on the programming stage of the chip.
[1180]
HMAC-SHA1
The mechanism for authentication is the HMAC-SHA1 algorithm,
HMAC-SHA1 (R1, K1) Or
HMAC-SHA1 (R | M, K2)
It works according to one of them.
[1181]
Next, the HMAC-SHA1 algorithm will be examined in more detail than the above description, and the optimization of the algorithm that requires less memory resources than the original definition will be described.
[1182]
HMAC
The HMAC algorithm proceeds given the following definitions:
H = hash function (eg MD5 or SHA-1);
Number of bits output from n = H (for example, 160 bits for SHA-1 and 128 bits for MD5);
Data to which the M = MAC function is applied;
K = private key shared by both parties;
64 repetitions of ipad = 0x36;
64 repetitions of opad = 0x5C.
[1183]
The HMAC algorithm is as follows:
Extend K to 64 bytes by adding 0x00 bytes to the end of K;
XOR logical operation of the 64-byte character string created in (1) with iPad;
Add the data stream M to the 64-byte character string created in (2);
Apply H to the stream generated in (3);
XOR logical operation of the 64-byte character string created in (1) with opad;
Add the result H from (4) to the 64-byte character string obtained from (5);
H is added to the output of (6), and the result is output.
[1184]
This will
HMAC [M] = H [(KAopad) | H [(KAipad) | M]]
Is;
The HMAC-SHA1 algorithm is simply an HMAC such that H = SHA-1.
[1185]
SHA-1
The SHA-1 hashing algorithm is defined in the algorithm summarized below.
[1186]
Nine 32-bit constants are defined. Five constants are used to initialize the chain variable and there are four additional constants.
[1187]
[Table 104]
Figure 2001523900
The non-optimized SHA-1 requires a total of 2912 bits of data storage:
5 32-bit chain variables: H1, H2, H3, H4And H5Is defined;
Five 32-bit working variables: A, B, C, D and E are defined;
One 32-bit temporary variable: t is defined;
80 32-bit temporary registers: X0-79Is defined.
[1188]
The following function is defined for SHA-1.
[1189]
[Table 105].
Figure 2001523900
The hashing algorithm first pads the input message until it is a multiple of 512 bits, and the chain variable H1-5H1-5Initialize with. The padded message is then processed in 512-bit chunks and the output hash value is the chain variable: H.1| H2| H3| H4| H5The last 160-bit value given by the concatenation of. Next, the steps of the SHA-1 algorithm will be described in detail.
[1190]
Step 1 process
The first step of SHA-1 is to pack the input message to a multiple of 512 bits as follows and initialize the chain variable.
[1191]
[Table 106]
Figure 2001523900
Step 2 process
The packed input message can be processed. Process the message within a 512-bit block. Each 512-bit block is in the form of a 16x32-bit word, OutputWord.0-15It is expressed as.
[1192]
[Table 107]
Figure 2001523900
Step 3 Finish
After processing all 512-bit blocks of the packed input message, the output hash value is H.1| H2| H3| H4| H5The last 160-bit value given by.
[1193]
Optimization for hardware implementation
The SHA-1 step 2 procedure is not optimized for the hardware. In particular, 80 temporary 32-bit registers run out of valuable hardware implementation silicon. This section describes optimizations for the SHA-1 algorithm that uses only 16 temporary registers. The silicon reduction is a reduction from 2560 bits to 512 bits, saving more than 2000 bits. This is not important for some applications, but for authentication chips, storage space should be as small as possible. The basis of the optimization is that the original 16-word message block is extended to the 80-word message block, but the 80 words are not updated during the algorithm. Moreover, since the words depend only on the previous 16 words, the extended words can be calculated on the fly during processing as long as the 16 words are retained for back reference. A circular counter is needed to keep track of which register you are trying to use, the effect of which is to save a lot of storage. Instead of indexing X with a single value j, we use a 5-bit counter to count through iterations. This is achieved by initializing the 5-bit register with 16 or 20 and decrementing it until it reaches zero. Since 16 temporary variables are updated as if they were 80, 4 indexes are required, and each index is a 4-bit register. All four indexes are incremented in the middle of the algorithm (with wraparound).
[1194]
[Table 108]
Figure 2001523900
N between rounds 0 and 1A1, N2And N3Increment of is optional. Since the software implementation is time consuming, all four counters return to their original values at the end of the 16th loop without incrementing them. Hardware designers try to increment all four counters at the same time to save control logic. Caller is 512-bit X0-15Round 0 can be omitted altogether if you load.
[1195]
HMAC-SHA1
For authentication chip mounting, the HMAC-SHA1 unit has two types of inputs: K1R and K to use2Just perform hashing on R | M that uses. Since the inputs are of two constant lengths, HMAC and SHA-1 can be combined to optimize the hardware, rather than being provided as separate entities on the chip. The message padding (1-bit, 0-bit string, and message length) in step 1 of SHA-1 is necessary to ensure that different messages do not look the same after padding. Since only two types of messages are handled, the padding may be a constant 0. Moreover, an optimized version of the SHA-1 algorithm is used and only 16 32-bit words are used for temporary storage. These 16 registers are loaded directly by the optimized HMAC-SHA1 hardware. 9 32-bit constants h-1-5And y1-4Are still needed, but their constants are beneficial to hardware implementations. The hardware-optimized HMAC-SHA-1 in total requires the following 1024-bit data storage:
5 32-bit chain variables: H1, H2, H3, H4And H5Is defined;
Five 32-bit working variables: A, B, C, D and E are defined;
5 32-bit variables for temporary storage and final result: Buff1601-5Is defined;
One 32-bit temporary variable: t is defined;
16 32-bit temporary registers: X0-15Is defined.
[1196]
The following two sections describe the steps for two types of calls to HMAC-SHA1.
[1197]
H [R, K 1 ]
K1In the case of using to generate a keyed hash of R, the original input message R has a constant length of 160 bits. Therefore, this can be advantageously utilized during processing. X during the first part of the SHA-1 algorithm0-15X instead of loading0-15Is directly loaded, thereby omitting round 0 of the SHA-1 optimization process block (step 2). The pseudo code does the following steps:
[1198]
[Table 109]
Figure 2001523900
H [R | M, K 2 ]
K2In the case of using to generate a keyed hash of R | M, the original input message is
It has a constant length of 416 (256 + 160) bits. Therefore, this can be advantageously utilized during processing. X during the first part of the SHA-1 algorithm0-15X instead of loading0-15Is directly loaded, thereby omitting round 0 of the SHA-1 optimization process block (step 2). The pseudo code does the following steps:
[1199]
[Table 110]
Figure 2001523900
Data memory integrity
The confirmation chip includes a non-volatile memory to hold the variables required by the authentication protocol 3. The following non-volatile variables are defined.
[1200]
[Table 111]
Figure 2001523900
It should be noted that if these variables are in flash memory, it is not easy to write new values to replace the old ones. The memory is erased first and then the appropriate bits are set. This affects the algorithm used to modify flash memory based variables. For example, flash memory cannot be easily used as a shift register. In order to update the flash memory variables in a generic operation, the following steps are required:
Read the entire N-bit value into a general-purpose register;
Perform operations on general-purpose registers;
Erase the flash memory corresponding to the variable;
Sets the flash memory location bit based on the bit set in the general purpose register.
[1201]
The reset of the authentication chip does not affect these non-volatile variables.
[1202]
M and access mode
The variables M [0] to M [15] are used to hold consumable state data such as serial number, batch number, and consumable remaining amount. Each M [n] register is 16 bits, and the entire M vector is 256 bits (32 bytes). The client cannot read or write individual M [n] variables. Instead, the entire vector represented by M is read or written by a single logical access. M is read using the RD (read) command and written using the WR (write) command. These commands are K1And K2Only if both are confirmed (SIWritten = 1) and the certified chip is a consumable unreliable chip (Istrust = 0) will it succeed. M stores a number of different data types, only with different write permissions. Each data type can always be read. Once in client memory, 256 bits can be interpreted in some way chosen by the client. The entire 256 bits of M are read at the same time, rather than being read in small increments for security reasons as described in the Authentication chapter. The various write permissions are listed in the table below.
[1203]
[Table 112]
Figure 2001523900
A 2-bit access mode value is set for each M [n] to achieve the protection required for writing. The following table defines the interpretation of 2-bit access mode bit patterns.
[1204]
[Table 113]
Figure 2001523900
The 16 sets of access mode bits for the 16 M [n] registers are grouped into a single access mode AccessMode register. The 32-bit AccessMode register corresponds to M [n] with n as follows.
[1205]
[Table 114]
Figure 2001523900
Each 2-bit value is stored in the upper / lower format. Therefore, if M [0-5] is the access mode MSR and M [6-15] is the access mode RO, then the 32-bit AccessMode register will be
11-11-11-11-11-11-11-11-11-11-11-01-01-01-01-01-01-01
Is.
[1206]
During execution of the WR (write) command, AccessMode [n] is examined for each M [n] to determine if the new M [n] value replaces the older one. The AccessMode register is set using the SAM (Set Access Mode) command of the authentication chip. Decrement-only comparisons are unsigned, and decrement-only values that require a negative range must be shifted to a positive range. For example, a consumable containing a decrement-only data item in the range -50 to 50 will have its range shifted from 0 to 100. The system interprets the range 0 to 100 as -50 to 50. In most cases, the decrement-only range is from N to 0, and no range shift is required. In the case of the decrement-only data item, the data is arranged from M [n] to the front in the order of the most significant 16-bit amount to the least significant 16-bit amount. The access mode for the most significant 16 bits (stored in M [n]) should be set in the MSR. The remaining registers (M [n + 1], M [n + 2], etc.) should have their access mode set to NMSR. If erroneously set in NMSRs and there are no associated MSR regions, each NMSR region is considered independent rather than a double precision comparison.
[1207]
K 1
K1Is a 160-bit private key used to convert R during the authentication protocol. K1Is K with the SSI (Confidential Information Set) command2And R are programmed. K1Must be kept secret, so the client is K1Cannot be read directly. K1The commands that use are RND and RD. RND is R, FK1Returns a pair of [R], where R is a random number, while RD is the input X, FK2Request a pair of [R]. K1Is used in the keyed one-way hash function HMAC-SHA1. Therefore, K1Should be programmed with physically generated random numbers collected from physically random phenomena. K1Should never be generated by a random number generator running on a computer. The security of the authentication chip is K generated in a non-deterministic way.1, K2And R. For example, K1To set, one tosses a fair coin 160 times, recording the front as 1 and the back as 0. K1Is automatically cleared to 0 when the CLR command is executed. It can be set to a non-zero value only with the SSI command.
[1208]
K 2
K2Is a 160-bit private key used to convert M | R during the authentication protocol. K2Is K with the SSI (Confidential Information Set) command1And R are programmed. K2Must be kept secret, so the client is K2Cannot be read directly. K2The commands that use are RD and TST. RD is M, FK2It returns a pair of [M | X] and X is passed to the RD function as one of the parameters. TST is M, F as inputK2A pair of [M | R] was requested, and R was obtained from the RND function of the authentication chip. K2Is used in the keyed one-way hash function HMAC-SHA1. Therefore, K2Should be programmed with physically generated random numbers collected from physically random phenomena. K2Should never be generated by a random number generator running on a computer. The security of the authentication chip is K generated in a non-deterministic way.1, K2And R. For example, K2To set, one tosses a fair coin 160 times, recording the front as 1 and the back as 0. K2Is automatically cleared to 0 when the CLR command is executed. It can be set to a non-zero value only with the SSI command.
[1209]
R and IsTrusted
R is K with the SSI (secret information set) command1And a 160-bit random number seed programmed with R. R does not have to be kept secret. This is because it is freely given to the caller by the RND command. However, R can only be changed by the authentication chip and cannot be set to any value selected by the caller. R is used during the TST command, and R from the previous RND call is F on the untrusted authentication chip (chip A).K2Guarantee that it was used to generate [M | R]. Both RND and TST are used only with trusted authentication chips (chip T).
IsTrusted is a 1-bit flag register that determines if the authentication chip is a trusted chip (chip T):
If the Issued bit is set, the chip is considered to be a trusted chip and the client can call the RND and TST functions (not RD or WR);
If the Issued bit is cleared, the chip is not considered to be a trusted chip. Therefore, the RND and TST functions cannot be called (instead, RD and WR may be called). The system never needs to call RND or TST on the consumable (because the duplicate chip only returns 1 for a function like TST, only a constant value for RND).
[1210]
IsTrusted bits are available R, F that can be obtained by an attacker.K1It has the additional advantage of reducing the number of [R] s and maintains the integrity of the authentication protocol. Valid R, FK1To obtain the [R] pair, the attacker needs a system authentication chip, which is more expensive and harder to obtain than consumables. Both the R and Issued bits are cleared to 0 by the CLR command. Both of these are written by issuing the SST command. The IsTrusted bit can only be set by storing the non-zero seed value in R by the SSI command (R is non-zero because it is in a valid LFSR state, which is quite reasonable). R is modified by a 160-bit maximum period LFSR with taps on bits 1, 2, 4 and 159 and only if the call to TST is successful (if 1 is returned). ..
[1211]
An authentication chip that is expected to become a trusted chip (chip T) in the system should have its Issued bit set during programming, and the authentication chip (chip A) used in consumables The IsTrusted bit should be left clear (by storing 0 in R with the SSI command during programming). There is no command to read or write the Issued bit directly. The safety of the authentication chip is K1And K2It does not depend solely on the randomness of the HMAC-SHA1 algorithm and the strength of the HMAC-SHA1 algorithm. The security of the authentication chip also depends on the range of R over the useful life of all systems, as it prevents an attacker from building a sparse look-up table. Therefore, R should be programmed with physically generated random numbers collected from physically random phenomena. R should never be generated by a random number generator running on a computer. The generation of R should not be deterministic. For example, to generate an R for use with a reliable system chip, one tosses a fair coin 160 times, recording the front as 1 and the back as 0. 0 is the only ineffective initial value for a reliable R (or the Issued bit is not set).
[1212]
SIWritten
SIWritten (Secret Information Written) 1-bit register holds the state of the secret information stored in the authentication chip. The secret information is K.1, K2And R. Clients do not have direct access to the SIWritten bit. Instead, the SIWritten bit is cleared by the CLR command (this command is K.1, K2And R are also cleared). The SIWritten bit is automatically set when the authentication chip is programmed with the private key and random seed using the SSI command (regardless of the value written). R is not strictly a secret, but R, F selected by the attackerK1To ensure that you cannot generate your own unique random seed to get a pair of [R], R is K1And K2Must be written with. The SIWritten state bit is K1, K2Or used by all functions that access R. If the SIWritten bit is cleared, the RD, WR, RND and TST calls are interpreted as CLR calls.
[1213]
MINTICKS
There are two mechanisms that prevent an attacker from making numerous calls to TST and RD functions in a short period of time. The first mechanism is a clock limiting hardware component that prevents the internal clock from operating at speeds above a certain maximum (eg, 10 MHz). The second mechanism is the 32-bit MinTicks register, which is used to specify the minimum number of clock ticks that must elapse between calls to a keyed function. The MinTicks variable is cleared to 0 by the CLR command. Bits are set by the SMT (MinTicks set) command. The input parameters to the SMT include a bit pattern that represents which bit of MinTicks should be set. The real effect is that the attacker can only increase the value in MinTicks units (because the SMT function only sets bits). Moreover, there is no function that allows the caller to read the current value of this register. The value of MinTicks depends on the operating clock speed and how to set a reasonable time between keyed function calls (application specific). The interval of one tick depends on the operating clock speed. This is the maximum input clock speed and clock limit hardware for the authentication chip. For example, the clock limiting hardware of the authentication chip is set to 10MHz (which cannot be changed), but the input clock is 1MHz. In this case, the value of 1 tick is based on 1 MHz instead of 10 MHz. If the input clock is 20 MHz instead of 1 MHz, the value of one tick is relative to 10 MHz (because the clock speed is limited to 10 MHz).
[1214]
Once the interval of one tick is known, the MinTicks value can be set. The value of MinTicks is the number of MinTicks required to elapse between calls to the keyed RD and TST functions. This value is a real-time number and is divided by the length of the motion tick. It is assumed that the input clock speed matches the maximum clock speed of 10 MHz. If you want a minimum of 1 second between calls to a keyed function, the MinTicks value is set to 10000000. X, F by the attacker calling RND, RD and TST many timesK1Consider the case where you are trying to collect [X] pairs. If the MinTicks value is set so that the time between calls to the TST is 1 second, then 1 second is required to generate each pair. 225Attackers need more than a year to generate pairs (which only require 1.25 Gb of storage). 264Attacks that require pairs are 5.84x10 with one chip.11If years are needed and one billion chips are used, then 584 years will be needed, making such an attack totally unrealistic in time (not to mention memory requirements!).
[1215]
K1In terms of, the MinTicks variable only slows down the attacker and increases the cost of the attack. This is because MinTicks does not stop an attacker from using a large number of system chips in parallel. But MinTicks is really K2Makes attacks more difficult. This is because each consumable has a different M (part of the M is random read-only data). In order to launch a differential attack, it is necessary to input the minimum difference, which can be achieved by a single consumable (including the effective constant part of M). Entering a minimal difference requires the attacker to use a single chip, and MinTicks slows down the use of a single chip. If it takes a year to get the data to initiate a value search to launch a differential attack, this increases the cost of the attack and shortens the effective sales period of duplicate consumables.
[1216]
Authentication chip command
The system communicates with the authentication chip through a simple set of operational commands. This section details the actual commands and parameters required for the implementation of Protocol 3. The authentication chip is defined as one that communicates with the system via a serial interface as a minimal implementation. It is customary to define an equivalent chip that operates on a wider interface (eg, 8, 16 or 32 bits). The interpretation of the opcode may depend on the current value of the IsTrusted bit and the current value of the IsWritten bit. The following operations are defined.
[1217]
[Table 115]
Figure 2001523900
Op = opcode, T = IsTrusted value, W = IsWrtten value,
Mn = Pneumonic, [n] = Number of bits required for the parameter.
[1218]
Commands not defined in this table are interpreted as NOP (No Operation). Examples include opcodes 110 and 111 (independent of the IsTrusted or IsWritten value) and non-SSI opcodes when IsWritten = 0. It should be noted that the RD and RND opcodes are the same, and the WR and TST opcodes are the same. The actual command that is run after receiving the opcode depends on the current value of the IsTrusted bit (as long as IsWritten is 1). Where the Issued bit is cleared, the RD and WR functions are called. When the Issued bit is set, the RND and TST functions are called. The two sets of commands are mutually exclusive between a trusted and untrusted authentication chip, and the same opcode enforces this relationship. Each command will be discussed in detail in the sections that follow. Some algorithms are specifically designed. This is because flash memory is assumed as a form of implementation of non-volatile variables.
[1219]
[Table 116]
Figure 2001523900
The CLR command is designed to completely erase the contents of all authentication chip memories. This includes all keys and secret information, access mode bits, and state data. After executing the CLR command, the authentication chip becomes programmable, just as it would when it was newly manufactured. It can be reprogrammed and reused as a new key. The CLR command consists only of the CLR command opcode. Since the authentication chip is serial, it is transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the CLR command is sent as bits 0 to 2 of the CLR opcode. A total of 3 bits are transferred. The CLR command can be called immediately at any time. The order of erasure is important. The SIWrittenbit value must first be cleared to prevent further calls to key access functions (such as RND, TST, RD and WR). When the AccessMode bits are cleared before SIWritten, the attacker unplugs the power at some point after they are cleared and manipulates the M, which gives a good opportunity to retrieve confidential information in a partial selection text attack. obtain. The CLR command is implemented in the following steps.
[1220]
[Table 117]
Figure 2001523900
Once the chip is cleared, the chip is ready for reprogramming and reuse. Blank chips are useless to attackers. Because, even if it is possible to create an arbitrary value for M (M is readable and writable), K1And K2This is because the keyed function does not provide any information because is wrong. If CLR is required for any opcode other than CLR, then no input parameter bits need to be spent. The attacker only has to reset the chip. The reason for calling CLR is to ensure that all confidential information is destroyed and the chip is useless to the attacker.
[1221]
SSI-Secret Information Set (SET SECRET INFORMATION)
Input: K1, K2, R = [160 bits, 160 bits, 160 bits]
Output: None
Changes: K1, K2, R, SIWritten, IsTrusted.
[1222]
SSI (Secret Information Set (Set Secret)
Information)) command is K1, K2And loaded into the R variable and used to set the SIWritten and IsTrusted flags for later invocation of RND, TST, RD and WR commands. The SSI command is the SSI command opcode followed by the K.1, K2And confidential information to be stored in the R register. Since the authentication chip is serial, it should be transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the SSI command is the SSI opcode bit 0-2 followed by the K.1Bits of new values for 0-159 and K2It is sent as bit 0-159 of the new value for R and finally as bit 0-159 of the seed value for R. A total of 483 bits are transferred. K1, K2, R, SIWritten, and IsTrusted registers are all cleared to 0 by the CLR command. They can only be set by using the SSI command.
[1223]
The data of the SSI command is K1, K2And use the flag SIWritten to store the facts loaded in R. If the SIWritten and IsTrusted flags are cleared (this is the case after the CLR instruction), K1, K2And R is loaded with a new value. If either flag is set, an attempt to call the SSI will execute the CLR command. This is because only the attacker or the wrong client will try to change the key or random seed without calling the CLR first. The SSI command also sets the IsTrusted flag depending on the value for R. If R = 0, then the chip is considered untrustworthy and therefore IsTrusted remains 0. If R ≠ 0, the chip is considered credible and IsTrusted is set to 1. It should be noted that the Istrusted bit is set only between SSI commands. If the authentication chip is reused, the CLR command must be called first. The key is then securely programmed with the SSI command and new state information is loaded into M using the SAM and WR commands. The SSI command is executed in the following steps.
[1224]
[Table 118]
Figure 2001523900
RD-read
Input: X, FK1[X] = [160 bits, 160 bits, 160 bits]
Output: M, FK2[X | M] = [256 bits, 160 bits]
Changes: R.
[1225]
The RD (read) command is used to safely read the entire 256 bits of state data (M) from an untrusted authentication chip. Only valid authentication chips respond correctly to RD requests. The output bits from the RD command can be supplied as input bits to the TST command on a trusted authentication chip for verification, with the first 256 bits (M) later if the TST returns 1 (as expected). Saved for use in. Since the authentication chip is serial, commands and input parameters should be transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the RD command consists of bits 0-2 of the RD opcode, followed by bits 0-159 of X, and F.K1Bits 0-159 of [x]. A total of 320 bits are transferred. X and FK1[X] is acquired by calling the RND command of the trusted authentication chip. The 320 bits output from the trusted chip's RND command can therefore be supplied directly to the untrusted chip's RD command, and those bits do not have to be saved by the system. The RD command can only be used if the following conditions are met:
SIWritten = 1 K1, K2, Indicates that R was set up by the SSI command;
IsTrusted = 0 Indicates that the chip is untrusted because it is not allowed to generate a random sequence.
[1226]
In addition, the RD call must wait until the MinTicksRemaining register reaches zero. After that, the MinTicks are reloaded into the register, ensuring that a minimum amount of time elapses between calls to the RD. When MinTicks is reloaded into MinTicksRemaining, the RD command verifies that the input parameters are valid. This is F for input XK1[X] is generated internally, and then the obtained result is input FK1This is done by comparing with [X]. This generation and comparison must use the same time regardless of whether the input parameters are correct. If the times are not the same, the attacker will FK1You can get information about which bit of [X] is wrong. Input parameters are invalid because of the wrong system (passing the wrong bit), the wrong system has the wrong consumables, a bad trusted chip (creating a bad pair), or an authentication chip. Limited to attacks on. The constant value 0 is returned when the input parameter is incorrect. The time it takes for a 0 to be returned must be the same for any bad input, so the attacker cannot learn any information about what is invalid. Once the input parameters are verified, the output values are calculated. The contents of the 256 bits of M are transferred in the order of bits 0-15 of M [0], bits 0-15 of M [1], and bits 0-15 of M [15]. FK2[X | M] is calculated and output as bits 0-159. R registers are X and FK1[X] Used to store values during pair validation. The reason is that RND and RD are mutually exclusive. The RD command is executed in the following steps.
[1227]
[Table 119]
Figure 2001523900
RND-Random
Input: None
Output: R, FK1[R] = [160 bits, 160 bits]
Changes: None.
[1228]
The RND (random) command is a valid R, F for use in subsequent authentication by the RD and TST commands.K1Used by clients to acquire [R] pairs. Since there are no input parameters, the RND command is simply bit 0-2 of the RND opcode. The RND command can only be used if the following conditions are met:
SIWritten = 1 K1And R are set up by the SSI command;
IsTrusted = 1 Indicates that the chip is allowed to generate a random number sequence.
[1229]
RND is R and FK1Both [R] are returned to the caller. The 288-bit output of the RND command can be supplied as an input parameter to the RD command of an untrusted chip. The client does not need to store them at all. Because they are not required again. However, the TST command succeeds only if the random number passed to the RD command is the one originally obtained from the RND command. If the caller calls only RND multiple times, the same R, FK1A pair of [R] will be returned each time. R proceeds to the next random number in the sequence after a successful call to TST. See the TST description for more details. The RND command is executed in the following steps.
[1230]
[Table 120]
Figure 2001523900
TST-test (TEST)
Input: X, FK2[R | X] = [256 bits, 160 bits]
Output: 1 or 0 = [1 bit]
Changes: M, R and MinTicksRemaining (or all registers if an attack is detected).
[1231]
The TST (Test) command is used to authenticate M reads from untrusted authentication chips. The TST (test) command is the TST command opcode followed by the input parameters: X and F.K2It is composed of [R | X]. Since the authentication chip is serial, it must be transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the TST command is a TST opcode bit 0-2 followed by M bits 0-255 and F.K2Bits 0-159 of [R | M]. A total of 419 bits are transferred. The last 416 input bits are acquired from the RD command as output bits to the untrusted authentication chip, so the client does not need to save the entire data. Instead, the bits can be passed directly to the TST command of the trusted authentication chip. Only 256 bits of M should be kept secret by the RD command. The TST command can only be used if the following conditions are met:
SIWritten = 1 K2And R are set up by the SSI command;
IsTrusted = 1 Indicates that the chip is allowed to generate a random number sequence.
[1232]
In addition, the TST call must wait until the MinTicksRemaining register reaches zero. After that, the register is reloaded with MinTicks, ensuring that a minimum amount of time elapses between calls to the TST. The TST causes the internal M value to be replaced by the input M value. Next, FK2[M | R] is calculated and compared with the 160-bit input hash value. The single output bit generated is 1 if they are the same and 0 if they are different. Using the internal M value saves space on the chip and is the reason why RD and TST are mutually exclusive commands. If the output bit is 1, R is updated to be the next random number in the sequence. This forces the caller to use a new random number each time the RD and TST tests are called. The resulting output bits are not output until the entire input string has been compared, so the time required to evaluate the comparison in the TST function is always the same. In this way, the attacker cannot compare the execution time, or the number of bits processed before the output was given.
[1233]
The next random number is generated from R using a 160-bit maximum period LFSR (tap selected with bits 159, 4, 2, and 1). The initial 160-bit value of R is set up by the SSI command and can be any random number other than 0 (LFSR filled with 0 produces an endless stream of 0s). R collectively performs an XOR logical operation on bits 1, 2, 4 and 159, and the result of the XOR logical operation is b.159It is converted by using it as an input to and shifting all 160 bits to the right by 1 bit. The new R will be returned on the next RND call. It should be noted that the time it takes to return 0 from the TST is the same for all bad inputs and the attacker can learn nothing about invalid inputs.
[1234]
The TST command is executed in the following steps.
[1235]
[Table 121]
Figure 2001523900
In step 7, R cannot be simply advanced as it is. This is because R is a flash memory and must be erased in order for the set bits to become zero. If the power supply is removed from the authentication chip during step 7 after erasing the old R value and before the new R value is written, the R will be erased but not reprogrammed. Therefore, a situation arises in which IsTrusted = 1 but R = 0, and this situation can only occur if the attacker is the cause. Step 4 detects this event and operates when an attack is detected. This problem can be prevented by providing a second 160-bit flash register for R and an effectiveness bit and toggle switching after a new value has been loaded. This is not incorporated into this embodiment for space reasons, but if chip space allows it, ancillary 160-bit flash registers may be useful for this purpose.
[1236]
WR-Write (WRITE)
Input: Mnew= [256 bits]
Output: None
Changes: M.
[1237]
The WR (Write) command is used to update the writable portion of M that stores the authentication chip state data. The WR command itself is not safe. The WR command is followed by a read of the authenticated M (by the RD command), ensuring that the changes have been made as specified. The WR command is called by passing the WR command opcode followed by new 256-bit data to be written to M. Since the authentication chip is serial, the new value of M must be transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the WR command commands bits 0-2 of the WR opcode, followed by bits 0-15 of M [0], and bits 0-15 of M [1] to bits 0-15 of M [15]. is there. A total of 259 bits are transferred. The WR command is when SIWritten = 1, that is, K1, K2, R can only be used to indicate that it was set up by the SSI command (if SIWritten is 0, then K1, K2, R has not been set up yet, so the CLR command is called instead). The possibility of writing to a particular M [n] is governed by the corresponding access mode bits, such as those stored in the Access Mode register. The AccessMode bit can be set using the SAM command. When writing a new value to M [n], it must be taken into account that M [n] is flash memory. After erasing all the bits of M [n], the appropriate bits must be set. The potential for attack remains vulnerable, as the two steps take place in separate cycles. An attacker can remove the power supply after erasing, but before programming a new value. However, the attacker has no benefit in doing this:
It is of no benefit to change the read / write M [n] to 0 by this means. This is because an attacker can write any value using the WR command;
By changing the read-only M [n] to 0 by this means, the additional text pair can be known (where M [n] is 0 instead of the original value). If we use M [n] values in the future, they are already 0, so no information is given;
When the decrement only M [n] is changed to 0, the time when the consumables are used up is only shortened. It does not give the attacker any new information that can be obtained by using consumables.
[1238]
The WR command is executed in the following steps.
[1239]
[Table 122]
Figure 2001523900
SAM-Access Mode Set (SET ACCESS MODE)
Input: AccessModenew= [32 bits]
Output: AccessMode = [32 bits]
Changes: Access Mode.
[1240]
The SAM (Access Mode Set) command is used to set the 32 bits of the Access Mode register and is only valid for use with the consumables authentication chip (when the Issued flag = 0). The SAM command is called by passing the SAM command opcode followed by a 32-bit value used to set a bit in the AccessMode register. Since the authentication chip is serial, data must be transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the SAM command is bit 0-2 of the SAM opcode, followed by bits 0-31 of the bit set in the AccessMode. A total of 35 bits are transferred. The AccessMode register is cleared to 0 only when the CLR command is executed. Since the access mode of 00 indicates the access mode of RW (read / write), not setting the AccessMode bit after CLR means that all Ms can read and write. Only the SAM command sets the bit in the AccessMode register. Therefore, the client changes the access mode bit for M [n] from RW to RO (read only) by setting an appropriate bit in the 32-bit word and calling SAM using the 32-bit value as an input parameter. It is possible. This allows programming of access mode bits at different times, perhaps at different stages of the manufacturing process. For example, read-only random data can be written during the initial key programming stage, while a second programming stage for items such as consumable serial numbers is allowed.
[1241]
Since the SAM command only sets the bit, the effect is that the access mode bit corresponding to M [n] can be advanced from RW to either MSR, NMSR or RO. It should be noted that the access mode of MSR can be changed to RO, but this is not useful for attackers. This is because M's authentication after writing to the illegally processed authentication chip detects that the writing was unsuccessful and stops the operation. Bit settings correspond to the way flash memory works best. The only way to clear the bits in the AccessMode register is, for example, to change the decrement-only M [n] to read / write by using the CLR command. The CLR command not only clears (clears) the AccessMode register, but also clears the key and all M's. In this way, the AccessMode [n] bit corresponding to M [n] can be effectively changed only once between CLR commands. The SAM command returns a new value in the AccessMode register (after the appropriate bit has been set by the input parameter). By calling SAM with the input parameter set to 0, the AccessMode is not changed, and therefore the current value of the AccessMode is returned to the caller.
[1242]
The SAM command is executed in the following steps.
[1243]
[Table 123]
Figure 2001523900
Acquired GET-Istrusted (GET ISTRUSTED)
Input: None
Output: Issued = [1 bit]
Changes: None.
[1244]
The GIT (Get Is Trusted) command is used to read the current value of the Is Trusted bit on the authentication chip. If the returned bit is 1, the authentication chip is a reliable system authentication chip. If the bit is 0, the authentication chip is a consumables authentication chip. The GIT command contains only the GIT command operation code. Since the authentication chip is serial, it must be transferred bit by bit at the same time. The order is from LSB to MSB of each command component. Therefore, the SAM command is transmitted as bits 0-2 of the SAM operation code. A total of 3 bits are transferred. The GI T command is executed in the following steps. ..
[1245]
[Table 124]
Figure 2001523900
SMT-MinTicks Set (SET MINTICKS)
Input: MinTicksnew= [32 bits]
Output: None
Changes: MinTicks.
[1246]
The SMT (Set MinTicks) command is used to set a bit in the MinTicks register and determine the number of MinTicks to elapse between calls to TST and RD. The SMT command is called by passing the SMT command opcode followed by a 32-bit value used to set a bit in the MinTicks register. Since the authentication chip is serial, data must be transferred bit by bit at the same time. The bit order is LSB to MSB for each command component. Therefore, the SMT command is bit 0-2 of the SMT opcode, followed by bits 0-31 of the bit set in MinTicks. A total of 35 bits are transferred. The MinTicks register is cleared to 0 only when the CLR command is executed. A value of 0 indicates that the tick does not have to pass between calls to the keyed function. Therefore, this function is called as often as the clock speed limiting hardware allows the chip to operate.
[1247]
Since the SMT command only sets the bit, its effect is only to allow the client to set the value and increase the time delay if further calls are made. Setting the already set bits has no effect, only setting the cleared bits works to make the chip even slower. Bit settings correspond to the way flash memory works best. The only way to clear the bits in the MinTicks register is, for example, to change the value of 10 ticks to the value of 4 ticks by using the CLR command. However, the CLR command not only clears the MinTicks register to 0, but also clears all keys and Ms. Therefore, it is useless to the attacker. In this way, the MinTicks register can be effectively changed only once during the CLR command.
[1248]
The SMT command is executed in the following steps.
[1249]
[Table 125]
Figure 2001523900
Authentication chip programming
The authentication chip must be programmed with logically secure information in a physically secure environment. As a result, programming procedures deal with both logical and physical security. Logical security is K1, K2, R and the value of the random number M [n] are processes that ensure that the values are generated by a physically random process rather than a computer. It is also the process of ensuring that the programmed order of the chip components is the most logically secure. Physical security is K for both the key generation stage period and the key memory lifetime, because the programming station is physically secure.1And K2Is a process that guarantees that is kept secret. Moreover, programming stations must counter physical attacks that acquire or destroy keys. The authentication chip is K1And K2Has its own security mechanism to ensure that is kept secret, but the programming station is K1And K2Must be kept safe.
[1250]
Overview
After manufacturing, the certified chip needs to be programmed before it can be used. K for all chips1And K2The value of must be fixed. If the chip is intended as a system-certified chip, the initial value of R must be determined. If the chip is intended as a consumables authentication chip, R must be set to 0 and the initial values of M and AccessMode must also be set. Therefore, the following stages are confirmed:
Determine the iteration between the system and the consumables;
Determine keys for systems and consumables;
Determine MinTicks for systems and consumables;
Program keys, random sheets, MinTicks and unused M;
Program state data and access modes.
[1251]
The attached authentication chip is reusable when consumables or systems are no longer needed. This can easily be achieved by starting from stage 4 again and reprogramming the chip. Each stage is described in the sections below.
[1252]
Stage 0: Manufacturing
Manufacturing of certified chips does not require special security. At the manufacturing stage, there is no confidential information programmed into the chip. The algorithm and chip process are not special. A standard flash process is used. Theft of an authenticated chip between the chip manufacturer and the programming station will only give the replica manufacturer a blank chip. This rarely jeopardizes the sale of the certified chip and nothing is certified by the certified chip. Since the programming station is the only mechanism that contains consumables and system product keys, replica manufacturers cannot program chips with the correct keys. Reproduction manufacturers can program blank chips for their own systems and consumables, but it will be difficult to sell them without being spotted. Moreover, a single theft will be difficult to lay the foundation for your business.
[1253]
Stage 1: Determining the interaction between the system and consumables
The determination of what a system is and what consumables are should be made before programming of the authentication chip is possible. You need to make a decision as to which consumables are available in which system. This is because only the connected system and consumables must share the same key information. They should also share state data usage mechanisms, even if some interpretations of state data are undecided. A simple example is the case of a car and a car key. The car itself is a system and the car key is a consumable item. Each car has several car keys, and each key stores the same key information as a particular car. However, each car (system) will have a different key (shared with that car key). This is because the car key of one car is not required to work in another car. Another example is for copiers that require specific toner cartridges. Simply put, copiers are systems and toner cut ridges are consumables. However, it is necessary to determine how compatible the cartridge and copier are. This decision has traditionally been made by the physical packaging of the toner cartridge, and some cartridges may or may not fit the new model copier based on the design decisions of the new model copier. When the authentication chip is used, the components to be linked must share the same key information.
[1254]
Further, consumables require different division methods of M (state data) for each type. The usage of M varies from application to application, and so does the allocation method of M [n] and AccessMode [n]:
Define consumables status data for specific applications;
Reserve some M [n] registers (if necessary) for future use. Set them to 0 and set them read-only. Values can be tested on the system for compatibility;
The remaining M [n] registers (at least one, but not M [15]) are set read-only, making the contents of each M [n] completely random. This makes it more difficult for replica manufacturers to attack authentication keys;
The following example shows how state data is organized.
[1255]
Example 1
Imagine a car with a car key. The 16-bit key number is sufficient to uniquely identify the car key of a given car. The 256 bits of M are divided as follows.
[1256]
[Table 126]
Figure 2001523900
If the car manufacturer holds all the logical keys for every car, then making a new physical car key when the car key is lost is a trivial matter. The new car key stores the new key number in M [0], but the same K as the authentication chip of the car.1And K2including. The car system can invalidate certain key numbers (eg, when the key is lost). Such a system may require that key 0 (master key) be inserted first, then all valid keys, and then key 0 be inserted again. Only these valid keys will work with the car. In the worst case, for example, if you lose all car keys, you can generate a new logical key set for that car and, if necessary, the associated physical car key. The car engine number is used to tie the key to a particular car. Future data stores items such as rental information, such as driver / lender details.
[1257]
Example 2
Assume an example of a copier image unit that must be replaced every 100,000 copies. 32 bits are required to store the number of remaining pages. The 256 bits of M are divided as follows.
[1258]
[Table 127]
Figure 2001523900
When a low quality image unit is made that must be replaced every 10,000 copies, the 32-bit page count is used as is for compatibility with existing copiers. This allows several types of consumables to be used in the same system.
[1259]
Example 3
Consider the example of a Polaroid camera that stores 25 photos. Only a 16-bit countdown is required to store the number of remaining photos. The 256 bits of M are divided as follows.
[1260]
[Table 128]
Figure 2001523900
The number of remaining photographs of M [2] allows the construction of a large number of consumable types for use with the same camera system. For example, a new consumable with 36 photos can be easily programmed. Considering that two years have passed since the camera was announced, a new type of camera has been announced. It is possible to use old consumables, but also new film types. M [3] can be used to define the film type. The old film type is 0 and the new film type is another new value. New systems can take advantage of this. The original system detects non-zero values in M [3] and recognizes incompatibility with new film types. The new system understands the value of M [3] and responds appropriately. To maintain compatibility with old consumables, new consumables and systems need to have the same key information as the old ones. A new key set will be needed to completely disconnect from the new system and its dedicated consumables.
[1261]
Example 4
Consider an example of a printer consumable that stores three inks, cyan, magenta, and yellow. Each ink amount should be decremented separately. The 256 bits of M are divided as follows.
[1262]
[Table 129]
Figure 2001523900
Stage 2: System and consumable key determination
Once a decision has been made as to which system and which consumables should share the same key, those keys must be defined. Therefore, K1And K2The value of is determined. In most cases K1And K2Is generated only once in total. All systems and consumables that should work together (currently and in the future) have the same key K1And K2Has a value of. Therefore, K1And K2Must be kept secret. This is because the entire security mechanism for system / consumable combinations becomes useless once the key is seen. Once the keys are exposed, the damage depends on the number of systems and consumables, as well as the ease with which they can be reprogrammed with new unexposed keys. For copiers that use toner cartridges, in the worst case, the replica manufacturer produces unique certified chips (or, worse, buys them), programs the chips with the found key, and Insert into unique consumables. In the case of a car with a car key, each car has a different set of keys. This gives rise to two general scenarios. In the first scenario, after the car and car keys are programmed with those keys, K1And K2Are deleted and no record of those values is kept, i.e. K1And K2There is no way to expose. However, a spare car key for the car cannot be made without reprogramming the car's authentication chip. In the second scenario, the car manufacturer is K1And K2It is possible to hold and create a new key for that car. K1And K2Exposure means that a person can make a car key specifically for a particular car.
[1263]
Therefore, the keys and random data used in the authentication chip should be generated by non-deterministic means (fully computer-generated pseudo-random numbers cannot be used, because it seeds the generator. It is deterministic in that knowing gives us all the numbers in the future). K1And K2Should be generated by a physically random process, not a computer. However, random bit generators based on spontaneous sources of randomness are susceptible to extrinsic factors and are prone to failure. It is inevitable that such devices should be tested for statistical randomness on a regular basis.
[1264]
A simple but useful source of random numbers is the Lavarand® system from SGI. The generator uses a digital camera that captures six lava lamps at intervals of minutes. Lava lamps contain a chaotic turbulant system. The obtained digital image is supplied to the SHA-1 mounting unit, which generates a hash in 7 directions and generates a 160-bit value every 7 bytes from the digitized image. The total of 7 sets of 160 bits is 140 bytes. This 140-byte value is supplied to the BBS generator to determine the start position of the output bitstream. The output 160 bits from the BBS is a key or an authentication chip 53.
[1265]
An extreme example of a non-deterministic random process is in a clean room, K1Toss the coin 160 times for K2Toss the coin 160 times for. Depending on the front or back of each, 1 or 0 is entered into the panel of the key programmer device. This process takes place in silence (someone may have a hidden microphone) with several observers (for verification) in silence. The important thing is that secure data entry and storage is not so easy. The physical security of key programmer equipment and associated programming stations requires its own complete documentation. Key K1And K2Once determined, they must be retained as long as the authentication chip needs to use its key. In the first car / car key scenario, K1And K2Is destroyed after a single system chip and several consumable chips have been programmed. In the case of copier / toner cartridge, K1And K2Must be retained only while the toner cartridge is useful to the copier. They should be kept secret.
[1266]
Stage 3: Determination of MinTicks for systems and consumables
The value of MinTicks depends on the operating clock speed of the authentication chip (system-specific) and the rationale for a reasonable amount of time between RD or TST function calls (application-specific). The interval between single ticks depends on the operating clock speed. This is the maximum input clock speed and clock limit hardware for the authentication chip. For example, the clock limiting hardware of the authentication chip is set to 10MHz (which cannot be changed), but the input clock is 1MHz. In this case, the value of 1 tick is based on 1 MHz instead of 10 MHz. If the input clock is 20 MHz instead of 1 MHz, the value of one tick is relative to 10 MHz (because the clock speed is limited to 10 MHz). Once the interval of one tick is known, the MinTicks value can be set. The value of MinTicks is the number of MinTicks required to elapse during the call to the keyed RD or ST function. It is assumed that the input clock speed matches the maximum clock speed of 10 MHz. If you want a minimum of 1 second during a TST call, the MinTicks value is set to 10000000. A value such as 2 seconds is quite reasonable for a system such as a printer (one authentication per page, one page generated every two to three seconds).
[1267]
Stage 4: Program of keys, random seeds, final ticks and unused M
The state of the certified chip is unknown after manufacturing. Alternatively, the certified chip has already been used with one consumable and must be reprogrammed for use with another consumable. Each of the confirmation chips is cleared and programmed with a new key and new state data. The authentication chip clearing process and subsequent programming are performed in a secure programming station environment.
[1268]
Programming of trusted system authentication chips
If the chip is a trusted system chip, a seed value for R will be generated. It is a random number extracted from a physically random process, not zero. The following tasks are performed in a secure programming environment in the following order:
Reset Reset tip
CLR []
Load physical random data into Load RR (160-bit register)
SSI [K1, K2, R]
SMT [MinTicksSystem].
[1269]
At this point, the authentication chip is ready for insertion into the system. The authentication chip is fully programmed. If the system certification chip is stolen at this point, the replica manufacturer will1To launch a known text attack on, or K2R, F to launch a partial selection text attack onK1They can be used to generate pairs of [R]. This is no different from purchasing a large number of systems, each containing a trusted authentication chip. Security is the strength of the authentication protocol and K1And K2Depends on the randomness of.
[1270]
Untrusted Consumables Certification Chip Programming
If the chip is an untrusted consumables authentication chip, programming is a bit different from programming a trusted system authentication chip. First, the seed value of R is 0. It does additional programming for M and AccessMode values. Unused M [n] is programmed with 0 and random M [n] is programmed with random data. The following tasks are performed in a secure programming environment in the following order:
Reset Reset tip
CLR []
Load 0 into Load RR (160-bit register)
SSI [K1, K2, R]
Load 0 into Load XX (256-bit register)
Set Physical random data is set in X corresponding to an appropriate M [n]
WR [X]
Load 0 into Load YY (32-bit register)
Set Read-only access mode is set to Y corresponding to an appropriate M [n]
SAM [Y]
SMT [MinTicksConsumable].
[1271]
Here, the untrusted consumable chip is ready to be programmed with general state data. If the authentication chip is stolen at this point, an attacker can perform a restricted selection text attack. In the best situation, part of M is read-only (0 and random data) and the rest of M is completely selected by the attacker (using the WR command). Numerous RD calls by attackers are F for a limited MK2Acquire [M | R]. In the worst case, M is completely selected by the attacker (because all 256 bits are used for state data). However, in either case, the attacker cannot choose the value of R. This is because R is supplied from the system authentication chip by calling the RND. The only way to get the selected R is by brute force attack. It should be noted that if stages 4 and 5 are run on the same programming station (favorable and ideal situation), the authentication chip cannot be removed between stages. In this case, the authentication chip cannot be stolen at this point. The decision to program the certification chip once or twice is at the request of the system / consumables manufacturer.
[1272]
Stage 5: State data and access mode program
This stage is only required for consumables certification chips. This is because the M and AccessMode registers cannot be changed on the system authentication chip. Unused and random values of M [n] have already been programmed in stage 4. The rest of the state data needs to be programmed and sets the associated AccessMode value. It should be noted that the speed of this stage is limited by the value stored in the MinTicks register. This stage is separated from stage 4 in consideration of the difference in physical location / time when stage 4 and stage 5 are executed. Ideally, stages 4 and 5 run simultaneously on the same programming station. Stage 4 produces valid authentication chips, but does not load them with initial state values (other than 0). This allows chip programming to match the operation of the consumables production line. Stage 5 can be run many times, each time setting a different state data value and access mode value, but only once, setting all the remaining state data values, and all the rest. It is more likely to set the access mode value. For example, a production line is set up and a batch number and serial number of certified chips are generated according to the physical consumables produced. Matching this can be quite difficult if the state data is loaded in physically different factories.
[1273]
The stage 5 process first includes an RD that collects data from the certified chip, first inspecting to ensure that the chip is an effective consumable chip, and then a WR of initial data values. Is performed, and a SAM is performed to permanently set a new data value. An overview of these steps is given below:
IsTrusted = GIT [];
If IsTrusted is set, it ends with an error (wrong type of chip!);
Call the RND of the valid system chip to get a valid input pair;
Call the RD of the chip to be programmed, passing a valid input pair;
Load the result from the RD of the authentication chip into X (256-bit register);
Call the TST of the effective system chip to ensure that the X and consumable chips are effective.
broth;
If TST returns 0, it ends with an error (wrong consumable chip for the system).
Set the initial state value to the X bit;
WR [X];
Load 0 into Y (32-bit register);
Set the Y bit corresponding to the access mode for the new state value;
SAM [Y].
[1274]
Of course, the verification (stages 1 to 7) may not be performed when the stages 4 and 5 are performed one after another at the same programming station. However, this verification should be done in all other situations where stage 5 is performed as a programming process separate from stage 4. If these authentication chips are stolen here, they are already programmed for use with certain consumables. An attacker can attach the stolen chip to a duplicate consumable. Such theft limits the number of duplicated products to the number of stolen chips. A single theft does not provide enough supplies for the replica manufacturer to do a cost-effective business. Another use of this chip is that an attacker does not have to purchase the same number of consumables with an authentication chip to launch a partial selection text attack or a brute force attack. Even with such an attack, there are no special security flaws in the key.
[1275]
Manufacturing
The circuit of the authentication chip must be able to counter physical attacks. The manufacturing implementation guidelines will be outlined, followed by the specifications of the chip's physical defenses (in order of attack).
[1276]
Manufacturing guidelines
The general guidelines for mounting certified chips for manufacturing are listed below:
Standard process
Minimum size (preferably)
Clock filter
Noise generator
Tamper prevention and detection circuit
Protected memory with tamper detection
Boot circuit for loading program code
Special implementation of FET for key data path
Data connections within the polysilicon layer where possible
Under / over power detection unit
No test circuit.
[1277]
Standard process
Authentication chips can be implemented in standard manufacturing processes (such as flash). This allows for a very wide selection of manufacturing locations
Use technology that is clear and works well
To reduce costs
It is necessary to satisfy. It should be noted that the standard process allows for a physical protection mechanism.
[1278]
Minimum size
The certification chip 53 must have a low manufacturing cost so that it can be incorporated as a certification mechanism for low cost consumables. Therefore, it is desirable to keep the chip size as small as possible. Each authentication chip requires 802-bit non-volatile memory. Moreover, the storage capacity required for the optimized HMAC-SHA1 is 1024 bits. The rest of the chip (the state machine, processor, CPU, or one chosen to implement Protocol 3) is minimal so that the number of transistors is minimized and the cost per chip is minimized. It is maintained to the limit. The circuit area that holds the private key information, as well as the circuit area where information about the key may be leaked, should be minimized (see Non-Flushing CMOS for Special Data Paths below).
[1279]
Clock filter
Authentication chip circuits are designed to operate in a particular clock speed range. Since the user supplies the clock signal directly, an attacker may use it to cause the circuit to become turbulent at a particular point in time during processing. An example of this is when a high clock speed (higher than the speed the circuit designed for) prevents the XOR from working properly and the first of the two inputs is returned as is. This style of transient failure attack is very effective in recovering private key information. The lesson to be learned here is that the input clock signal is unreliable. The input clock signal is unreliable and should be restricted to operate up to the maximum frequency. This can be achieved in a variety of ways. One way to filter the clock signal is to use an edge detection unit that passes "edge-on" to the delayer, and then the delay allows the input clock signal to pass. FIG. 174 is an explanatory diagram of a clock signal flow in the clock filter. The delay is set so that the maximum clock speed is at a particular frequency (eg, 4 MHz). It should be noted that this delay is fixed, not programmable. The filtered clock signal is further internally divided if necessary.
[1280]
Noise generator
Each authentication chip includes a noise generator that produces continuous circuit noise. The noise interferes with other electromagnetic radiation from the normal operation of the chip, making the noise IddAdd to the signal. The installation of the noise generator does not cause any problems with the authentication chip due to the length of the emission wavelength. The noise generator generates electronic noise and multiple state changes for each clock cycle, and is used as a pseudo-random bit source for tamper prevention and detection circuits. A simple implementation of the noise generator is a 64-bit LFSR seeded with a non-zero number. The clock used in the noise generator runs at the maximum clock rate of the chip to generate as much noise as possible.
[1281]
Tamper prevention and detection circuit
A set of circuits is needed to test and prevent physical attacks on the authentication chip. However, those who are actually detected as attacks may not be intentional physical attacks. Therefore, the following two types of attacks within the authentication chip, that is,
If you can be sure of the appearance of a physical attack
If you are not sure about the appearance of a physical attack
It is important to distinguish between.
[1282]
The two types of detection differ in that they are performed as a result of the detection. In the first case, that is, when the appearance of a physical attack can be assured, erasing the flash memory key information is a purposeful operation. In the second case, that is, if you are not sure about the appearance of a physical attack, there may be something wrong. The action should be taken, but it is not the action to erase the private key information. The proper action to take in the second case is chip reset. If what is detected is an attack that permanently damages the chip, then the same situation will occur and the chip will reset again. On the other hand, if what is detected is part of the chip's normal operating environment, this reset does not damage the key.
[1283]
A good example of an event where a circuit cannot understand the situation is a power supply malfunction. This malfunction may be a deliberate attack attempting to reveal information about the key. However, it may be a misconnection, or simply the start of a power down sequence. Therefore, it is best to just reset the chip and not erase the key. If the chip is powered off, nothing is lost. If the system is out of order, repeated resets will cause the consumer to repair the system. In both cases, the consumables are intact. A good example of an event where a circuit can understand the situation is the disconnection of the data line in the chip. If this attack is detected in any way, it is limited to chip failure (manufacturing defects) or the result of the attack. In either case, erasing confidential information is a purposeful and selective step.
[1284]
As a result, each certified chip includes two tamper detection lines as shown. One is for explicit attacks and the other is for potential attacks. A large number of tamper detection test units are connected to these tamper detection lines, and each unit tests various forms of tampering. Moreover, we want to ensure that the tamper detection line and the circuit itself are not tampered with.
[1285]
One end of the tamper detection line is a source of pseudo-random bits (clocking faster than a typical operating circuit). The noise generator circuit described above is a suitable source. The generated bits pass through two types of paths, one path carrying the original data and the other carrying the inversion of the original data. The wiring that carries these bits is on a layer above common chip circuits (eg, memory, key manipulation circuits, etc.). The wiring also covers the random bit generator. Bits are recombinated in many places by XOR gates. If the bits are different (which should be), 1 is output and used by a particular unit (eg, each output bit from a memory read is ANDed with this bit value). The lines eventually gather in the flash memory eraser circuit, where 0 from XOR triggers a complete erase. The line is fitted with a number of triggers, each detecting a physical attack on the chip. Each trigger has a large nMOS transistor connected to a GND. The tamper detection line physically passes through this nMOS transistor. When the test fails, the trigger sets the tamper detection line to zero. The XOR test fails either in this clock cycle or in the next clock cycle (on average), resetting or erasing the chip. FIG. 175 is an explanatory diagram of the basic principle of a tamper detection circuit using a test and an XOR connected to either an erasing circuit or a reset circuit.
[1286]
The tamper detection line passes through the drain of the output transistor of each test, as shown in the layout of the large nMOS transistor of FIG. 176. The tamper detection line cannot be cut. This is because it stops the flow of 1s and 0s from the random source. As a result, the XOR test fails. Since the tamper detection line physically passes through each test, it is not possible to remove a particular test without cutting the tamper detection line. Importantly, the XOR takes values from various locations along the tamper detection line to reduce the chance of an attack. FIG. 177 shows a situation in which a large number of XORs are taken from the tamper detection lines used in various parts of the chip. Each of these XORs can be considered to be producing the chip normal bit ChipOK used in each unit or subunit.
[1287]
As a sample application, an OK bit may be provided in each unit, and this may be ANDed with the ChipOK bit given in each cycle. The OK bit is reset and 1 is loaded. If the OK bit is 0, the unit fails (fails) until the next reset. If the tamper detection line works properly, the chip either resets or erases all key information. If the reset or erase circuit is destroyed, this unit will not function and will prevent the attacker. The reset and erase lines, as well as the destinations of the associated circuits, are very context sensitive. It should be protected in a manner very similar to individual tamper tests. There is no point in generating a reset pulse if the attacker can easily disconnect the wires that connect to the reset circuit. The actual implementation form largely depends on the items to be cleared by reset and the method of clearing those items.
[1288]
Finally, FIG. 178 is a diagram showing how the tamper line protects the noise generator circuit of the chip. The generator and NOT gate are at the same height, while the tamper detection line passes higher than the generator.
[1289]
Protected memory with tamper detection
It is not enough to store confidential information or program code in flash memory. Flash memory and RAM must be protected from attackers who modify (or set) certain bits of program code or key information. The mechanism used conforms to the mechanism used in the tamper detection circuit (described above). The first part of the solution is to ensure that the tamper detection line passes just above each flash or RAM bit. This ensures that an attacker cannot probe the contents of the flash or RAM. The breakage of the wiring protection is the disconnection of the tamper detection line. This corruption sets an erase signal so that the contents of the memory are erased. High frequency noise on the tamper detection line also interferes with passive observation.
[1290]
The second part of the solution for flash is to use multi-level data storage and use only a subset of those multi-levels for valid bit representation. Generally, when a multi-level flash storage device is used, a single floating gate holds two or more bits. For example, a 4-voltage state transistor can represent 2 bits. Assuming that the minimum voltage and the maximum voltage are represented by 00 and 11, respectively, the two intermediate voltages represent 01 and 10. In the case of an authentication chip, two intermediate voltages are used to represent a single bit, and the two at both ends are considered invalid. An invalid voltage (and thus an invalid state) appears when an attacker attempts to force the state of a bit into one or another direction by closing or disconnecting the circuit of the gate.
[1291]
The second part of the solution for RAM is to use the parity bit. The data portion of the register can be inspected using the parity bit (which will not match after an attack). Bits coming from the flash and RAM are confirmed by a number of test units (one for each bit) connected to the common tamper detection line. The tamper detection circuit is the first circuit through which data passes (thus preventing an attacker from disconnecting the data line).
[1292]
Boot circuit for loading program code
Program code should be held in multi-level flash, not ROM. This is because ROMs are subject to change in untestable ways. Therefore, a boot mechanism is needed to bring the program into flash memory (flash memory is in an intermediate state after manufacture). The boot circuit is not placed in ROM and a small state machine is sufficient. Otherwise, the boot code will be modified in an undetectable way. The boot circuit erases all flash memory, confirms that the erase worked correctly, and then loads the program code. Flash memory must be erased before loading the program. Otherwise, an attacker could put the chip in a booted state and load a program that just extracted the existing key. The state machine inspects before loading new program code to ensure that all flash memory is cleared (to ensure that the attacker has not disconnected the erase line). The program code is loaded by a secure programming station before confidential information (such as keys) is loaded.
[1293]
Implementation of special FET for key data path
FIG. 179 shows a normal FET mounting situation in the case of a CMOS inverter (including a pMOS transistor combined with an nMOS transistor). During the transition, there is a short period in which both the nMOS transistor and the pMOS transistor have intermediate resistance values. The resulting power-ground short circuit temporarily increases the current and, in effect, accounts for most of the current consumed by the CMOS device. A small amount of infrared light is emitted during the short circuit period and can be observed through the silicon substrate (silicon transmits infrared). Also, a small amount of light is emitted during charging and discharging of the transistor gate capacitance and transmission line capacitance.
[1294]
In the case of circuits that manipulate private key information, such information must be kept secret. An alternative non-flushing CMOS implementation is used for the key, or any data path that manipulates a partially calculated value based on that key. The use of two non-overlapping clocks φ1 and φ2 provides a non-flash mechanism. φ1 is connected to the second gate of all nMOS transistors, and φ2 is connected to the second gate of all pMOS transistors. Transitions occur when combined with a clock. Since φ1 and φ2 do not overlap, the pMOS and nMOS transistors do not have intermediate resistance values at the same time. Its configuration is shown in FIG. 180.
[1295]
Finally, conventional CMOS inverters can be placed in the vicinity of critical non-flushing CMOS components. These inverters extract their input signals from the tamper detection line described above. Since the tamper detection line operates many times faster than a normal operating circuit, the net effect is an optical burst that occurs at a high rate near each location of the non-flushing CMOS component. The bright light interferes with the observation of weak light in the vicinity, so the observer cannot detect what kind of switching operation is being performed on the chip itself. These conventional CMOS inverters effectively increase the amount of circuit noise, reduce the signal-to-noise ratio, and obscure useful EMI.
[1296]
Numerous side effects appear with the use of non-flushing CMOS:
The effective speed of the chip is reduced by twice the clock rise time per clock cycle. This is not a problem for authentication chips;
The amount of current drawn by the non-flushing CMOS is reduced (because the short circuit does not appear). However, this is offset by the use of conventional CMOS inverters;
This is because the wiring of the clock increases the chip area, especially because multiple versions of φ1 and φ2 are required to take into account different levels of propagation. Estimator of chip area is twice that of normal mounting;
The design of the non-flash area of the authentication chip is somewhat more complicated than using a normal CMOS design. In particular, standard cell components are not available and the area is fully customized. This is not a problem for small things like authentication chips, especially when the entire chip does not have to be protected in this way.
[1297]
Wiring in the polysilicon layer where possible
Wherever possible, wiring through which keys or confidential data flow should be made within the polysilicon layer. If necessary, it is provided on metal 1, but should never be provided on the top metal layer (including the tamper detection line).
[1298]
Under / over power detection unit
Each authentication chip requires an under- or over-power detection unit to prevent power attacks. The under- and over-power detection unit tests the power level against a voltage reference to detect power malfunctions and ensure that the power level falls within a certain tolerance range. This unit includes a single voltage reference and two comparators. The under- and over-power detection unit may be connected to the reset tamper detection line, which causes a reset when triggered. A side effect of the under- and over-power detection unit is that when the voltage drops while the power is cut off, a reset is triggered and the working register is erased.
[1299]
No test circuit
Test hardware on the authentication chip can easily introduce vulnerabilities. As a result, the authentication chip should not include a BIST or scan path. Therefore, the authentication chip is made testable using an external test vector. This is feasible because the authentication chip is not complicated.
[1300]
ROM read
This attack relies on the key being stored in an addressable ROM. This attack is irrelevant because each authentication chip stores its authentication key in internal flash memory rather than in addressable ROM.
[1301]
Chip reverse engineering
Reverse engineering of the chip is only useful if the security of the authentication derives from the algorithm. However, the authentication chip of the present invention relies on the private key, not the confidentiality of the algorithm. On the other hand, the authentication algorithm of the present invention has been published, and in any case, it is considered that an attacker of mass-produced consumables could obtain a detailed blueprint inside the chip. In view of these factors, reverse engineering of the chip itself is not a threat, as opposed to stored data.
[1302]
Unauthorized use of the authentication process
There are several possible forms of this attack, each with a different degree of success. In all cases, replica manufacturers will be able to obtain both system and consumable designs. Instead of generating an authorization code, an attacker attempts to trick the system into building a chip that returns a valid code. This attack is not feasible for two reasons: The first reason is that the system certification chip and the consumables certification chip are programmed separately, even if they are physically the same. In particular, the RD opcode and the RND opcode are the same, and the WR opcode and the TST opcode are also the same. The system authentication chip cannot execute RD commands. This is because all calls are interpreted as calls to the RND, not the RD. The second reason for this attack to fail is that separate serial data lines are provided from the system to the system authentication chip and the consumables authentication chip. As a result, neither chip can see what is being sent to the other or what is being received from the other. If the attacker builds a duplicate chip that ignores the WR command (which decrements the remaining consumables), Protocol 3 ensures that subsequent RDs detect that the WR did not appear. The system therefore eliminates the use of consumables and thwarts attackers. This is also true if the attacker simulates a loss of contact before authentication, and no authentication occurs, so no consumables are used. Therefore, the attacker is limited to modifying each system to accept duplicate consumables.
[1303]
System changes
The easiest way to change it is to replace the system's authentication chip with a chip that only notifies success on every call to the TST. This is hampered by a system that calls the TST multiple times for each authentication, gives a false value the first few times, and requests notification of failure from the TST. The final call to TST is expected to succeed. The number of false calls to the TST may be determined from the RD, or a portion of the result returned from the system clock. Unfortunately, the attacker can simply rewrite the system so that the new system replication authentication chip 53 can monitor the results returned by the consumable chip or clock. The replication system authentication chip returns only success when a monitored value is given to its TST function. The replication consumable can return any value as the hash result of the RD, and the replication system chip reveals that the value is valid. Therefore, it makes no sense for the system to call the system authentication chip multiple times. This is because the rewrite attack works correctly only on the rewired system, not on all systems. A similar form of attack on the system is the replacement of the system ROM. The ROM program code can be changed so that authentication is not performed. I can't do anything about this. Because the system is in the hands of the consumer. Of course, this invalidates any warranty, but consumers will find it worth changing if the duplicate consumables are very cheap and more easily available than the real ones. ..
[1304]
The system / consumables manufacturer must therefore determine how likely this type of attack is. Such studies naturally include the pricing structure of systems and consumables, the frequency of system services, the benefits of consumers when making physical changes, and where consumers go to make those changes. The limit case of changing the system is when the replica manufacturer provides a complete replica system that requires replication consumables. This is just a conflict or infringement of a patent right. In any case, this is outside the scope of the authentication chip's purpose and depends on the technology or service being replicated.
[1305]
Direct view of chip operation by conventional probing
In order to observe the chip operation, the chip must be operating. However, the tamper prevention and detection circuit covers the area of the chip that processes or holds the key. It is not possible to see these areas through the tamper prevention line. The attacker cannot simply slice the chip through the anti-tamper layer. This is because doing so breaks the tamper detection line and erases all keys when the power is turned on. Simply destroying the erasing circuit is not enough. This is because the large number of ChipOK bits (all 0s at this time) supplied to the large number of units in the authentication chip stop the function of the normal operation circuit of the chip. In order to set up the chip for an attack, the attacker would need to remove the tamper detection line, stop erasing the flash memory, and somehow rewrite the component that trusted the ChipOK line. Even if all of this could be done, the action of slicing the chip to this level would destroy most of the charge pattern in the non-volatile memory holding the key, making the process useless.
[1306]
Direct view of non-volatile memory
If the authentication chips are sliced to expose the floating gates of the flash memory and do not discharge them, the keys will probably be visible directly using STM or SKM. However, it is probably impossible to slice the chip to this level without discharging the gate. Wet etching, plasma etching, ion milling, or chemical mechanical polishing almost certainly releases the small charges present on the floating gate. This is true for regular flash memory, but more certainly for multi-level flash memory.
[1307]
Monitoring of optical bursts caused by state changes
All areas of the circuit that manipulates the private key information are realized in the non-flushing CMOS described above. This blocks the emission of most light bursts. A conventional CMOS inverter placed in the immediate vicinity of a non-flushing CMOS obscures the slight radiation generated by charging and discharging the capacitor. Since the inverter is connected to the tamper detection circuit, the inverter changes state many times (at a high clock rate) for each state change of the non-flushing CMOS.
[1308]
EMI monitoring
The above noise generator induces circuit noise. Noise interferes with other electromagnetic radiation from the normal operation of the chip, obscuring significant reads of internal data transfers.
[1309]
I dd Fluctuation monitoring
The solution to this type of attack is IddIt is to reduce the signal-to-noise ratio in the signal. This is achieved by increasing the amount of noise in the circuit and decreasing the amount of signal. The noise generator circuit, which also acts as a defense against EMI attacks, is IddIt causes a sufficient state change every cycle to obscure the important information inside. Moreover, a special non-flushing CMOS implementation of the data path propagating the chip key prevents current from flowing when state changes occur. This has the advantage of reducing the amount of signal.
[1310]
Difference failure analysis
The differential failure bit error is captured in a non-targeted form by ionization, microwave radiation, or environmental stress. The most likely impact of this type of attack is a change in flash memory (causing an invalid state) or a change in RAM (bad parity). Invalid conditions and bad parity are detected by the tamper detection circuit, causing key erasure. Since the tamper detection line covers the key control circuit, any error captured in the key control circuit is reflected by the error in the tamper detection line. If the tamper detection line is affected, the chip either continuously resets or simply erases the key during power-ups, making the attack useless. Rather than relying on untargeted attacks and hoping that "the right part of the chip will be affected in the right way," the attacker should bring in the targeted failure (overwrite attack, gate destruction, etc.). You had better try it.
[1311]
Clock malfunction attack
The clock filter (above) excludes the feasibility of a clock malfunction attack.
[1312]
Power attack
The under- or over-power detection unit (above) excludes the feasibility of a power attack.
[1313]
ROM overwrite
The authentication chip stores the program code, key, and confidential information in flash memory instead of ROM. Therefore, this attack is unlikely.
[1314]
EEPROM / flash change
The authentication chip stores the program code, key, and confidential information in flash memory. However, the flash memory is covered by two tamper protection and detection lines. If any one of these lines breaks (in the process of breaking the gate), an attack is detected during power-up and each chip either resets (continuously) or erases the key from flash memory. .. However, even if an attacker could somehow access a bit in flash memory and destroy or omit the gate holding that particular bit, this would force that bit. Make it uncharged or fully charged. Both of these are disabled for authentication chip multi-level flash memory usage (only two intermediate states are valid). When the data value is transferred from the flash, the detection circuit triggers an erase tamper detection line, which erases the rest of the flash memory and resets the chip. Therefore, the EEPROM / flash memory modification attack is useless.
[1315]
Gate destruction attack
Gate-destroying attacks rely on the attacker's ability to modify a single gate and expose information to the chip during operation. However, the circuit that manipulates the confidential information is covered by one of the two tamper prevention and detection lines. If any one of these lines breaks (in the process of breaking the gate), an attack is detected during power-up and each chip either resets (continuously) or erases the key from flash memory. .. To launch this type of attack, the attacker must first reverse engineer the chip to determine which gate to target. After the location of the target gate was determined, the attacker would have to break the protecting tamper detection line, stop erasing the flash memory, and somehow rewrite the component that trusted the ChipOK line. is there. Circuit rewriting cannot be performed without slicing the chip, and even if it can be done, the operation of slicing the chip to this level almost destroys the charge pattern in the non-volatile memory that holds the key and destroys the process. Will be useless.
[1316]
Overwrite attack
Overwrite attacks rely on the ability to set individual bits of a key without knowing the previous value. It relies on probing the chip as in a traditional probing attack and destroying the gate as in a gate-destroying attack. Both of these attacks are unsuccessful as they use tamper protection and detection circuits and ChipOK lines (as described in their respective sections). However, even if an attacker could somehow access a bit in flash memory and destroy or omit the gate holding that particular bit, this would force that bit. Make it uncharged or fully charged. Both of these are disabled for authentication chip multi-level flash memory usage (only two intermediate states are valid). When the data value is transferred from the flash, the detection circuit triggers an erase tamper detection line, which erases the rest of the flash memory and resets the chip. Similarly, the parity check of the tampered value read from the RAM triggers the erase tamper detection line. Therefore, the overwrite attack is useless.
[1317]
Residual memory attack
The working register or RAM in the authentication chip holds a part of the authentication key when the power supply is removed. The working register and RAM continue to hold the information for a certain period of time after the power supply is removed. When the chips are sliced and the register / RAM gates are exposed without discharging them, the data will probably be visible directly using STM. The first defense can be seen from the description of the defense against the power failure attack described above. When power is removed, all registers and RAM are cleared, just as a reset state causes memory to be cleared. The chances of a successful attack are lower than the chances of reading flash memory. RAM charge is (essentially) lost more easily than flash memory. Chip slicing to reveal RAM ensures that the charge is not lost (even if the charge is not simply lost due to the memory not being refreshed and the time it takes to perform the slicing). To lose. Therefore, this attack is futile.
[1318]
Chip theft attack
There are distinguishable phases in the useful life of the certified chip. Chips can be stolen at any of the following stages:
After manufacturing, before programming the key;
After programming the key, before programming the state data;
After programming the state data and before inserting it into the consumables or system;
After being inserted into the system or consumables.
[1319]
Theft between the chip maker and the programming station only gives the replica maker a blank chip. This only jeopardizes the sale of certified chips and nothing is certified by certified chips. The programming station is the only mechanism with consumable and system product keys, and replica manufacturers cannot program the chip with the correct keys. Reproduction manufacturers can program blank chips for their own systems and consumables, but it will be difficult to sell them without being spotted. The second form of theft can only occur in situations where the authentication chip goes through two or more separate programming phases. This can happen, but it is unlikely. In any case, the worst situation is when the state data is not programmed and all Ms are read / write. In this case, the attacker can launch an adaptive choice text attack on the chip. The HMAC-SHA1 algorithm can counter this attack. A third form of theft takes place between the programming station and the installation factory. The authentication chip is already programmed for a particular system or for a particular consumable. For the sole use of these chips, thieves house them in replication systems or replication consumables. The duplication system would be misguided and the duplication system would not even require the authentication chip 53. In the case of replica consumables, such theft limits the number of replicas to the number of stolen chips. A single theft does not provide enough supplies for the replica manufacturer to do a cost-effective business. The final form of theft is the theft of the system or the consumables themselves. If the theft occurs on the manufacturer's side, the physical security protocol must be strengthened. If the theft takes place elsewhere, it is a matter only for the owner of the item and the police or insurance company. The security mechanism used by the authentication chip assumes that consumables and systems are under the control of the general public. As a result, their theft does not have a significant impact on the security of the keys.
[1320]
Authentication chip design
The authentication chip has physical and logical external interfaces. The physical interface defines how the authentication chip can be connected to the physical system, and the logical interface defines how the system can communicate with the authentication chip.
[1321]
Physical interface
The authentication chip is a small 4-pin CMOS package (actual internal size is about 0.30 mm using a 0.25 μm flash process.2Is). Pin 4 is ground (GND), clock (CLK), power (Power), and data (Data). Power is the nominal voltage. The chip resets when the voltage fluctuates more than a certain amount from the nominal voltage. The recommended clock speed is 4 to 10 MHz. The internal circuitry filters the clock signal to ensure that it does not exceed the safe maximum clock speed. Data is transmitted and received bit by bit at the same time along the serial data line. The chip performs a reset when it powers up and when it powers down. Moreover, the tamper detection and prevention circuit in the chip causes the chip to be reset (in response to the detected attack) or the flash memory to be erased if an attack is detected. The special programming mode is enabled by holding the CLK voltage at a specific level. This will be explained further in the next section.
[1322]
Logical interface
The authentication chip has two operation modes, a normal mode and a programming mode. The reason two modes are needed is that the operating program code is stored in flash memory (for safety reasons) rather than in ROM. The programming mode is used for post-manufacturing testing purposes and is packed with operating program code, while the normal mode is used for subsequent chip use.
[1323]
Programming mode
The programming mode is enabled by maintaining a specific voltage on the CLK line for a predetermined period of time. When the chip enters programming mode, all flash memory is erased (including all private key information and program code). The authentication chip then verifies the erasure. If the erasure is successful, the authentication chip receives 384 bytes of data corresponding to the new program code. Byte is byte0From bytes383It is transferred in the order of. Bit is bit0From a bit7It is transferred in the order of. When the program code of all 384 bytes is loaded, the authentication chip hangs. If the erase is unsuccessful, the authentication chip hangs without loading any data into flash memory. After the chip is programmed, the chip can be restarted. When the chip is reset at the normal voltage on the CLK line, it enters normal mode.
[1324]
Normal mode
The authentication chip is in normal mode when it is not in programming mode. When the authentication chip starts up in the normal mode (for example, power-up reset), the authentication chip executes the program stored in the program code area of the flash memory at that time. The program code incorporates a communication mechanism between the system and the authentication chip, receives commands and data from the system, and generates output values. Since the authentication chip performs serial communication, the bits are transferred one bit at a time at the same time. The system communicates with the authentication chip through a simple set of operational commands. Each command is defined by a 3-bit opcode. The interpretation of the opcode depends on the current values of the IsTrusted and IsWritten bits.
[1325]
The following operations are defined.
[1326]
[Table 130]
Figure 2001523900
Op = opcode, T = IsTrusted value, W = IsWritten value,
Mn = Pneumonic, [n] = Number of bits required for the parameter.
[1327]
Commands not defined in this table are interpreted as NOP (No Operation). Examples include opcodes 110 and 111 (independent of the IsTrusted or IsWritten value) and non-SSI opcodes when IsWritten = 0. It should be noted that the RD and RND opcodes are the same, and the WR and TST opcodes are the same. The actual command that is run after receiving the opcode depends on the current value of the IsTrusted bit (as long as IsWritten is 1). Where the Issued bit is cleared, the RD and WR functions are called. When the Issued bit is set, the RND and TST functions are called. The two sets of commands are mutually exclusive between a trusted and untrusted authentication chip. To execute a command on the authentication chip, the client (like the system) sends a command opcode followed by the input parameters required for that opcode. The opcode is sent from the least significant bit to the most significant bit. For example, bits 1, 0 and 0 are sent in this order to send an SSI command. Each input parameter is sent in the same way, first from the least significant bit and finally to the most significant bit. The return value is read in this way, the least significant bit is read first, and the most significant bit is read last. The client must know the number of bits to acquire.
[1328]
In some cases, the output bits from one chip's command are fed as-is as input bits to another chip's command. An example of this is the RND command and the RD command. The output bits from the call to the RND on the trusted authentication chip need not be retained by the system. Instead, the system can transfer its output bits directly to the input of the RD command on the untrusted authentication chip. The description of each command indicates if that is the case. Each command will be discussed in detail in subsequent sections. Some algorithms are specially designed because the resident registers are held in flash memory.
[1329]
register
The memory in the authentication chip includes non-volatile memory to store the variables required by the authentication protocol. The following non-volatile memory (flash) variables are defined.
[1330]
[Table 131]
Figure 2001523900
Architecture overview
This section / chapter gives a higher definition of a dedicated CPU that can implement the required functions of the authentication chip. It should be noted that this CPU is not a general purpose CPU. Made to order to implement authentication logic. Authentication commands seen by users of authentication chips such as WRITE, TST, RND, etc. are all implemented as small programs written in the CPU instruction set. The CPU includes a 32-bit accumulator (used in most operations) and a large number of registers. The CPU includes 8-bit instructions tailored specifically to implement the authentication logic. Each 8-bit instruction typically consists of a 4-bit opcode and a 4-bit operand.
[1331]
Operating speed
The internal clock frequency limiter unit prevents the chip from operating faster than a predetermined frequency. This frequency is built into the chip during manufacturing and is immutable. This frequency is recommended to be about 4 to 10 MHz.
[1332]
Composition and block diagram
The authentication chip contains the following components:
[1333]
[Table 132]
Figure 2001523900
FIG. 181 is a schematic block diagram of the authentication chip. Tamper prevention and detection circuits are not shown. The noise generator, under- and under-power detection unit, and programming mode detection unit are connected to the tamper prevention and detection circuit, not the rest of the units.
[1334]
Memory map
FIG. 182 is a diagram showing an example of a memory map. The authentication chip does not have external memory, but has internal memory. The internal memory is addressed by 9 bits and is 32 bits wide or 8 bits wide (depending on the address). The 32-bit width memory is used to hold non-volatile data, variables used for HAMC-SHA1, and constants. The 8-bit width memory is used to hold the program and the various jump tables used by the program. Address splitting (including spare memory range) is designed to optimize address generation and decryption.
[1335]
constant
FIG. 183 is an explanatory diagram of an example of a constant memory map. The constant area is composed of 32-bit constants. These are simple constants (such as all 32 bits 0 and all 32 bits 1), the constants used by the HAMC algorithm, and the constants y required for use with the SHA-1 algorithm.0-3And h0-4Is. These values are unaffected by the reset. The only opcode that uses constants is the LDK. In this case, the operands and memory allocation are closely related to minimize address generation and decryption.
[1336]
RAM
FIG. 184 is an explanatory diagram of an example of a RAM memory map. The RAM area includes 32 parity-checked 32-bit registers required for the general-purpose function of the authentication chip, but only during the operation of the chip. RAM is a volatile memory and its value is lost once the power is removed. In practice, memory retains its value (due to memory retention) for some time after power-up, but is not considered available after power-up. This is a security issue described in other sections of this document. The RAM is a variable used in the HMAC-SHA1 algorithm, ie, AE, temporary variable T, space H for a 160-bit working hash value, and temporary storage of hash results (as required by HMAC). Includes space B160 and space X for 512 bits of extended hashing memory. All RAM variables are cleared to 0 after reset, but program code should not rely on this. The opcodes that utilize the RAM address are LD, ST, ADD, LOG, XOR and PRL. In all cases, operands and memory allocation are closely related to minimize address generation and decryption (multiword variables store the most significant word first).
[1337]
Flash memory-variables
FIG. 185 is an explanatory diagram of an example of a flash memory variable memory map. The flash memory area stores the non-volatile information in the authentication chip. The flash memory maintains its value even after the power is removed, and can be expected to remain unchanged the next time the power is turned on. The non-volatile information held in the multi-state flash memory is two 160-bit keys (K).1And K2), The current random value (R), the state data (M), the MinTicks value (MT), the AccessMode value (AM), the IsWritten (ISW) flag, and the Issued (IST) flag. The flash value does not change with a reset, but is cleared (to 0) when entering programming mode. Operations that utilize the flash address are LD, ST, ADD, PRL, ROR, CLR and SET. In all cases, operands and memory allocation are closely associated to minimize address generation and decryption. Multiword variable K1, K2And M are stored first because of the addressing requirement. The addressing scheme used is a base address offset with an index that starts with N and ends with 0. In this way, MNIs the first word accessed, M0Is the last 32-bit word accessed in the loop. The multiword variable R is stored first in the lowest word to facilitate LFSR generation using the same indexing scheme.
[1338]
Flash memory-program
FIG. 186 is an explanatory diagram of an example of a program memory map of the flash memory. The second multi-state flash memory area is 384 x 8 bits. This area stores the address table for JSR, JSI and TBR instructions, the offset for the DBR command, the constants, and the program itself. The flash memory does not change with a reset, but is cleared (to 0) when entering programming mode. Once in programming mode, a new set of 384 bytes can be loaded into 8-bit flash memory. When this is done, the chip is reset and normal chip operation is performed.
[1339]
register
A large number of registers are defined on the authentication chip. They are used as temporary storage during function execution. Some are for arithmetic functions, some are used for counting and indexing, and others are for serial I / O. These registers do not have to be held in non-volatile (flash) memory. They can be read or written (unlike flash memory) without an erase cycle. Temporary storage registers that store confidential information must be protected from physical attacks by tamper protection and detection circuits as well as parity checks. All registers are cleared to 0 after reset. However, the program code should not assume a particular state and should set register values appropriately. It should be noted that these registers do not have to contain the various OK bits defined for tamper protection and detection circuitry. The OK bits are scattered in various units and set to 1 after reset.
[1340]
cycle
The 1-bit cycle value determines whether the CPU has a fetch cycle (0) or an execution cycle (1). The cycle is actually obtained from a 1-bit register that holds the previous cycle value. Cycles are not directly accessible from the instruction set. It is for internal registers only.
[1341]
Program counter
A 9-bit program counter array (PCA) with 6 levels of depth is defined. It is indexed by a 3-bit stack pointer (SP). The currently program counter (PC) stores the address of the currently executing instruction and is effectively a PCA [SP]. In addition, a 9-bit Adr register is defined to store the current memory-based decomposition address (for indexed access or indirect memory access). The PCA, SP and Adr registers are not directly accessible from the instruction set. These are dedicated to internal registers.
[1342]
CMD
The 8-bit CMD register is used to hold the command currently being executed. CMD Register Registers are not directly accessible from the instruction set, but are dedicated to internal registers.
[1343]
Accumulator and Z flag
The accumulator is a 32-bit general-purpose register. This is a register that is used as one of the inputs to arithmetic operations and is used to transfer information between memory registers. The Z register is a 1-bit flag and is updated when the accumulator is written. The Z register stores the zeroness of the accumulator. If the last value written to the accumulator is 0, then Z = 1, and if the last value written to the accumulator is non-zero, then Z = 0. Both the accumulator and the Z register are directly accessible from the instruction set.
[1344]
counter
A large number of dedicated counter / index registers are defined.
[1345]
[Table 133]
Figure 2001523900
All these counter registers are directly accessible from the instruction set. There are dedicated instructions for loading these specific values, and another instruction decrements or increments them, or branches depending on whether a particular counter is zero. Two dedicated flags (not registers) are associated with C1 and C2, and these flags retain the zeroness of C1 or C2. These flags are used for loop control and are listed below. These flags are not registers, but can be tested like registers.
[1346]
[Table 134]
Figure 2001523900
flag
A large number of 1-bit flags corresponding to the CPU operating mode are defined.
[1347]
[Table 135]
Figure 2001523900
All these 1-bit flags are directly accessible from the instruction set. Dedicated instructions are provided to set and clear these flags.
[1348]
Registers used for write integrity
[1349]
[Table 136]
Figure 2001523900
Registers used for I / O
Four 1-bit registers are defined for communication between the client (system) and the authentication chip. These registers are InBit (input bit), InBitValid (input bit valid), OutBit (output bit), and OutBitValid (output bit valid). InBit and InBitValid provide a means for clients to send commands and data to the authentication chip. OutBit and OutBit Valid provide a means for clients to receive information from the authentication chip. The client sends the command and parameter bits bit by bit to the authentication chip at the same time. Since the authentication chip is a slave device, from the perspective of the authentication chip:
Reads from InBit hang while InBitValid is cleared. InBitValid remains cleared until the client writes the next input bit to InBit. Reading InBit clears the InBitValid bit, and the next InBit can be read from the client. The client cannot write the bit to the authentication chip until the InBitValid bit is cleared;
Writing to OutBit hangs while OutBitValid is set. OutBitValid remains set until the client reads the bit from OutBit. To write OutBit, set the OutBitValid bit so that the client can read the next OutBit. The client cannot read the bit from the authentication chip until the OutBitValid bit is set.
[1350]
Registers used for timing access
One 32-bit register is defined for use as a timer. The MTR (MinTicksRemaining) register decrements each time an instruction is executed. When the MTR register reaches 0, it stays at zero. The MTR is associated with the 1-bit flag MTRZ, which stores the zeroness of the MTR. If the MTRZ is 1, the MTR register is zero. If MTRZ is 0, then the MTR register is not yet zero. The MTR always starts at the MinTicks value (after a reset or after a particular key access function) and eventually decreases to zero. The MTR can be set and the MTRZ can be tested with a dedicated instruction, but the value of the MTR cannot be read directly by the instruction.
[1351]
Register summary
The following table summarizes all temporary registers (in order of register name). The table lists the register name, size (in bits), and where the specified register is located.
[1352]
[Table 137]
Figure 2001523900
Instruction set
The CPU operates with 8-bit instructions specially prepared to implement the authentication logic. Most 8-bit instructions consist of 4-bit opcodes and 4-bit operands. The upper 4 bits contain the opcode, and the lower 4 bits contain the operand.
[1353]
Opcodes and operands (summary)
The opcodes are summarized in the table below.
[1354]
[Table 138]
Figure 2001523900
The table below summarizes which operands can be used with which opcode. This table is arranged alphabetically by opcode mnemonics. The binary values for each operand are shown in the following table.
[1355]
[Table 139]
Figure 2001523900
The following operand table shows the interpretation of 4-bit operands, and all 4-bits are used for direct interpretation.
[1356]
[Table 140]
Figure 2001523900
The following instructions make selections based on the most significant bit of the operand.
[1357]
[Table 141]
Figure 2001523900
The lower 3 bits of the operands are offsets (DBR, TBR), values from a dedicated table (SC), or, as in the case of LOG, they select a second input for logical operations. The interpretation is consistent with the interpretation of ADD, LD, and ST opcodes.
[1358]
[Table 142]
Figure 2001523900
ADD-Addition to accumulator
Pneumonic: ADD
Opcode: 1000
Usage: ADD value.
[1359]
The ADD instruction modulo 2 the specified operand.32Add to the accumulator by addition of. Operands are A, B, C, D, E, T, AM, MT, AE [C1], H [C1], B160 [C1], R [C1], K [C1], M [C1], or It is one of X [N4]. Also, the Z flag is set during this operation depending on whether the loaded value is zero or non-zero.
[1360]
CLR-Clear Bit
Pneumonic: CLR
Opcode: 0110
Usage: CLR flag / register.
[1361]
The CLR instruction clears the specified internal flag or flash memory register. In the case of flash memory, the CLR instruction takes some time, but the next instruction is postponed until the flash memory has been erased. The registers that can be cleared are WE and K2MX. The flash memories that can be cleared are R, M [C1], Group1, and Group2. Group1 is an IST and ISW flag. Once they are cleared, the only valid higher level command is the SSI command. Group2 is an MT, AM, K1 and K2 register. R is erased separately. This is because R is updated with each call to TST. Also, M is erased by the indexing mechanism and individual parts of M can be updated. There is also a corresponding SET instruction.
[1362]
DBR-Decrement and Branch
Pneumonic: DBR
Opcode: 0001
Usage: DBR counter, offset.
[1363]
This instruction provides a mechanism for building a simple loop. The high bit of the operand selects the C1 test or the C2 test (two counters). If the specified counter is non-zero, the counter is decremented and a predetermined offset value (sign extension) is added to the PC. If the specified counter is zero, the counter is decremented and processing continues at PC + 1. An 8-entry offset table is stored at address 011000000 (64th entry in program memory). The 8 bits of the offset are treated as signed numbers. In this way, 0xFF is treated as -1 and 0x01 is treated as +1. Typically, its value is negative for use in loops.
[1364]
JSI-Subroutine Indirect Jump
Pneumonic: JSI
Opcode: 01001
Usage: JSI (Acc).
[1365]
The JSI instruction allows a jump to a subroutine that depends on the current value of the accumulator. This instruction currently pushes the PC onto the stack and loads the new value into the PC. The upper 8 bits of the new PC are loaded from the jump table 2 (offset is given by the lower 5 bits of the accumulator) and the least significant bit of the PC is cleared to 0. In this way, all subroutines must start at even addresses. The stack provides 6 execution levels (5 subroutine depths). The programmer is responsible for ensuring that this depth is not exceeded or that the return value is overwritten (because the stack wraps).
[1366]
JSR-Subroutine Jump
Pneumonic: JSR
Opcode: 001
Usage: JSR offset.
[1637]
The JSR instruction provides the most common usage of subroutine structures. This instruction currently pushes the PC onto the stack and loads the new value into the PC. The upper 8 bits of the new PC are given by the address table 1, and the offset to the table is given by a 5-bit operand (32 different addresses can be realized). The least significant bit of the PC is cleared to 0. In this way, all subroutines must start at even addresses. The stack provides 6 execution levels (5 subroutine depths). The programmer is responsible for ensuring that this depth is not exceeded or that the return value is overwritten (because the stack wraps).
[1368]
LD-Load to accumulator
Pneumonic: LD
Opcode: 1011
Usage: LD value.
[1369]
The LD instruction loads the accumulator from the specified operand. Operands are A, B, C, D, E, T, AM, MT, AE [C1], H [C1], B160 [C1], R [C1], K [C1], M [C1], or It is one of X [N4]. Also, the Z flag is set during this operation depending on whether the loaded value is zero or non-zero.
[1370]
LDK-loading constants
Pneumonic: LDK
Opcode: 1110
Usage: LDK constant.
[1371]
The LDK instruction loads the constant specified in the accumulator. The constants are the 32-bit values required for HMAC-SHA1 and the most useful all 0s and all 1s for general purpose processing. Therefore,
0x00000000000
0x36363636
0x5C5C5C5C
0xFFFFFFFF
Alternatively, there is an option from the h and y constant tables indexed by C1. The h and y constant table holds the 32-bit tabular constants required for HMAC-SHA1. Also, the Z flag is set during this operation depending on whether the loaded value is zero or non-zero.
[1372]
LOG-logical operation
Pneumonic: LOG
Opcode: 1001
Usage: LOG calculated value.
[1373]
The LOG instruction executes a 32-bit bit logical operation on the value specified as the accumulator. The two operations supported by the LOG instruction are AND and OR. Bit NOT and XOR operations are supported by the XOR instruction. The 32-bit value that is ANDed or ORed with the accumulator is one of A, B, C, D, E, T, MT and AM. Also, the Z flag is set during this operation depending on whether the obtained 32-bit value (loaded in the accumulator) is zero or non-zero.
[1374]
ROR-Rotate clockwise
Pneumonic: ROR
Opcode: 1100
Usage: ROR value.
[1375]
The ROR instruction provides a way to rotate the accumulator to the right by a set number of bits. The bit (which becomes bit 31) that appears at the top of the accumulator may be the value of bit 0 before the accumulator, or it may be from an external 1-bit flag (such as a flag or serial input connection). The rotated and overflowing bits may be output from the serial connection or may be combined with an external flag. The allowed operands are InBit, OutBit, LFSR, RLFSR, IST, ISW, MTRZ, 1, 2, 27, and 31. Also, the Z flag is set during this operation depending on whether the obtained 32-bit value (loaded in the accumulator) is zero or non-zero. In the simplest form, the operand for the ROR instruction is one of 1, 2, 27, 31 indicating the number of bit positions to rotate the accumulator. For these operands, there is no external input or output and the accumulator bits are simply rotated to the right. If the operands are IST, ISW and MTRZ, the appropriate flag is transferred to the most significant bit of the accumulator. The rest of the accumulator is shifted to the right by one bit position (bit 31 becomes bit 30 and so on), and the least significant bit of the accumulator is shifted and overflows. If the operand is InBit, the next serial input bit is transferred to the most significant bit of the accumulator. Next, the InBitValid bit is cleared. If no input bit is available from the client, execution is paused until the input bit appears. The rest of the accumulator is shifted to the right by one bit position (bit 31 becomes bit 30 and so on), and the least significant bit of the accumulator is shifted and overflows.
[1376]
If the operand is OutBit, the accumulator is shifted to the right by one bit. The bit sent out by shifting from bit 0 is stored in the OutBit flag, and the OutBitValid flag is set. Therefore, it is ready for reading by the client. If the OutBitValid flag is already set, instruction execution is deferred until OutBit is read by the client (and the OutBitValid flag is cleared). The new bit shifted to bit 31 is considered to be the garbage (actually the value of the current InBit register). Finally, the RB and XBR operands allow the implementation of LFSR and double precision shift registers. In the case of RB, the shift-sent bit (formally bit 0) is written to the RTMP register. The current register of the RTMP register will be the new bit 31 of the accumulator. Multiple RORs for several 32-bit values
When the RB command is executed, double-precision right rotation / shift is realized. The XRB operates in the same manner as the RB, and the current value of the RTMP register becomes the accumulator on new bit 31. However, in the case of the XRB instruction, the bits formally known to be bit 0 do not simply replace RTMP (for the RB instruction). Instead, the bit is XORed and RTMPed and the result is stored in RTMP. This makes it possible to realize the long LFSR required by the authentication protocol.
[1377]
RPL-bit replacement
Pneumonic: RPL
Operand: 1101
Usage: ROR value.
[1378]
The RPL instruction was designed to incorporate the higher level LIGHT command into the authentication chip. This instruction is intended to replace the upper 16 bits of the accumulator with the value finally written to the M array (depending on the access mode value). This instruction takes three operands: Init, MHI and MLO. The Init operand sets all internal flags and prepares the RPL unit in the ALU for subsequent processing. The accumulator is transferred to the internal AccessMode register. The accumulator, when executing the LIGHT command, RPL
It should be loaded from the AM flash memory location prior to the call to Init, and should be loaded with 0 when executing the TST command. The accumulator does not change as it is. The MHI and MLO operands refer to whether the upper 16 or lower 16 bits of M [C1] are (always) used for comparison with the upper 16 bits of the accumulator. Each of the MHI and MLO instructions executed uses the following 2 bits from the initialized AccessMode value. The first MHI or MLO execution uses the least significant 2 bits, the next execution uses the next 2 bits, and so on.
[1379]
RTS-Return from Subroutine
Pneumonic: RTS
Opcode: 01000
Usage: RTS.
[1380]
The RTS instruction resumes execution with an instruction after the JSR or JSI instruction executed immediately before. Therefore, it is called a return from the subroutine. In practice, this instruction pulls the saved PC off the stack, adds 1, and resumes execution from the obtained address. Six execution levels (five subroutines) are provided, but it is the programmer's responsibility to match each of the JSR and JSI instructions with the RTS. An RTS executed without a preceding JSR will start execution from the address pulled from the stack.
[1381]
SC-counter set
Pneumonic: SC
Opcode: 0101
Usage: SC counter value.
[1382]
The SC instruction is used to load a specific value into the counter. The operand determines whether to load into counters C1 or C2. The value to be loaded is one of 2, 3, 4, 7, 10, 15, 19 and 31. The counter value is used for loop processing and index processing. Both C1 and C2 are used for the loop structure (when combined with the DBR instruction), while only C1 can be used to index the 32-bit portion of the double precision variable.
[1383]
SET-bit set
Pneumonic: SET
Opcode: 0111
Usage: SET flag / register.
[1384]
The SET instruction allows the setting of a specific flag or flash memory. There is also a corresponding CLR instruction. Each of the WE operand and the K2MX operand sets the specified flag for later processing. Each of the IST and ISW operands sets the appropriate bit in flash memory, while the MTR operand transfers the current value of the accumulator to the MTR register. SET
The Nx command loads the following constants from N1 to N4.
[1385]
[Table 143]
Figure 2001523900
Each referenced initial X [Nn] Matches the initial state for indexes N1 to N4 of the optimized SHA-1 algorithm. Each index value NnWhen decrements, the valid X [N] is incremented. This is because the X words are stored in the memory from the most significant bit.
[1386]
Save ST-Accumulator
Pneumonic: ST
Opcode: 1111
Usage: ST location.
[1387]
The ST instruction stores the current value of the accumulator at the specified location. The location is A, B, C, D, E, T, AM, MT, AE [C1], H [C1], B160 [C1], R [C1], K [C1], M [C1], or It is one of X [N4]. The X [N4] operand has the side effect of advancing the N4 index. After the storage is done, N4 points to the next element of the X array. N4 is decremented one by one, but since the X array is arranged from high to low, decrementing the index advances to the next element in the array. When the storage destination is a flash memory, the effect of the ST instruction is that the flash memory bits corresponding to the bits in the accumulator are set. To ensure that the exact values from the accumulator are stored, you should ensure that you use the CLR instruction to clear the appropriate memory location first.
[1388]
TBR-test and branch
Pneumonic: TBR
Opcode: 0000
Usage: TBR value index.
[1389]
The test and branch instructions test whether the accumulator is zero or non-zero, and if the current state of the accumulator matches the state of the test partner, it branches to a given address. If the Z flag matches the TRB test, replace the PC with a 9-bit value, where bit0 = 0 and the upper 8 bits are given by the MU. Otherwise, the PC is incremented by 1. The value operand is 0 or 1. 0 indicates that it is a test for the accumulator being zero. 1 indicates that the test is for the accumulator being non-zero. The index operand indicates where to jump execution if the test is successful. The remaining 3 bits of the operand index index the least significant 8 entries in jump table 1. The upper 8 bits are fetched from the table and the least significant bit (bit 0) is cleared to 0. CMD is cleared to 0 at reset. 0 is translated as TBR0, which means that when accumulator = 0, it branches to the address stored at address offset 0. The accumulator and Z flag are also cleared on reset, so the test is true and the net effect is a jump to the address stored in the 0th entry in the jump table.
[1390]
XOR-Exclusive OR
Pneumonic: XOR
Opcode: 1010
Usage: XOR value.
[1391]
The XOR operation executes a 32-bit bit XOR with the accumulator and stores the result in the accumulator. The operand is one of A, B, C, D, E, T, AM, MT, X [N1], X [N2], X [N3] or X [N4]. Also, the Z flag is set during this operation, depending on the result (ie, depending on the value loaded in the accumulator). The bit NOT operation is performed by XORing the accumulator with 0xFFFFFFFF (using the LDK instruction). The X [N] operand has the side effect of advancing the appropriate index (after the operation) to the next value. After the XOR is done, the index points to the next element of the X array. N4 is ST
It is advanced by the X [N4] command. The indexes are decremented one by one, but since the X array is arranged from high to low, decrementing the index advances to the next element in the array.
[1392]
Programming mode detection unit
The programming mode detection unit monitors the input clock voltage. If the clock voltage is a certain value, the erase tamper detection line is triggered, erases all keys, program code, secret information, etc. and enters program mode. The programming mode detection unit can be implemented using ordinary CMOS. Because the key does not pass through this unit. This unit does not have to be realized in non-flushing CMOS. There is no particular need to cover the programming mode detection unit with a tamper detection line. This is because the attacker can put the chip into programming mode by CLR input. Using the erase tamper detection line as a signal to enter programming mode means that if an attacker wants to use programming mode as part of an attack, the erase tamper detection line must be activated and activated. Means. This makes attacks on the authentication chip very difficult.
[1393]
Noise generator
The noise generator can be realized by ordinary CMOS. Because the key does not go through this unit. This unit does not have to be realized in non-flushing CMOS. However, the noise generator should be protected by both tamper detection and protection lines, and as a result, if an attacker attempts to tamper with this unit, the chip will either reset or all confidential information. To clear. Moreover, the bits of the LFSR should be verified to ensure that they have not been tampered with (ie, parity check). If the parity check fails, the erase tamper detection line is triggered. Finally, all 64 bits of the noise generator are ORed into a single bit. If this bit is 0, the erase tamper detection line is triggered. This is because 0 is the invalid state of the LFSR. There is no point in using the OK bit setup. This is because the noise generator is used only by the tamper detection and prevention circuit.
[1394]
State machine
The state machine generates two operating cycles of the CPU, stretches them during long command operations, and stores opcodes and operands during the operating cycles. The state machine is feasible in ordinary CMOS because the key does not pass through this unit. This unit does not have to be realized in non-flushing CMOS. However, opcode / operand latches should be parity checked. The logic and registers stored in the state machine should be covered by both tamper detection lines.
is there. This ensures that the instructions executed are not modified by the attacker.
[1395]
The authentication chip does not require the high speed and throughput of a general-purpose CPU. It only needs to run fast enough to execute the authentication protocol and does not have to be faster. Rather than optimizing branch control or having a dedicated circuit (and all associated complexity) that executes the opcode while fetching the next opcode, the state machine adopts a simplified idea. To do. This helps minimize design time and reduce the likelihood of implementation errors.
[1396]
The general operation of a state machine is to generate the following set of cycles:
Cycle 0: Fetch cycle. This is the cycle in which the opcode is fetched from the program memory and the effective address is generated from the fetched opcode;
Cycle 1: Execution Cycle This is the cycle in which the operands are (maybe) looked up by the effective address generated (in cycle 0) and the operation itself is executed.
[1397]
Under normal conditions, the state machine has cycles: 0, 1, 0, 1, 0, 1. .. .. To generate. However, in some cases, the state machine does the stretching and produces cycle 0 at each clock tick until the stretching condition is finished. Stretching conditions include waiting for a flash cycle erase cycle, waiting for a client to read or write serial data, or an invalid opcode (due to tampering). If the flash memory is being erased at that time, the next instruction cannot be executed until the flash memory is completely erased. This is determined by the Wait signal sent from the memory unit. If Wait = 1, the state machine produces only cycle 0. There are two cases of stretching due to serial I / O operation:
The case where the opcode is ROR OutBit and OutBitValid = 1 already. This is the case where the operation currently requires the bit to be output to the client, but the client has not yet read the last bit;
The case where the operation is ROR InBit and InBitValid = 0. This is the case where the operation currently requires a bit to be read from the client, but the client has not yet supplied the bit.
[1398]
In both cases, the state machine must be stretched until the stretching condition is over. Therefore, the next "cycle" depends on the old or previous cycle and the current values of CMD, Wait, OutBitValid, and InBitValid. Wait is derived from MU, and OutBitValid and InBitValid are derived from I / O unit. When the cycle is 0, the 8-bit opcode is fetched from the memory unit and stored in the 8-bit CMD register. The write enable of the CMD register is -cycle. The two outputs from this unit are cycle and CMD. Both values are passed to all other processing units in the authentication chip. A 1-bit cycle value tells each unit whether a fetch or execute cycle is taking place, while an 8-bit CMD allows each unit to perform the appropriate action for a command associated with a particular unit. To.
[1399]
FIG. 187 is a diagram showing the data flow and relationships between the components of the state machine.
[1400]
[Table 144]
Figure 2001523900
Is.
[1401]
Both Old and CMD are cleared to 0 by reset. According to this result, the first cycle is 1, which causes 0 CMD to be executed. 0 is TBR
Translated as 0, that is, if Conditioner = 0, branch to the address stored in the address offset 0. The test is true because the accumulator is also cleared to 0 on reset, and the net effect is a jump to the address stored in the 0th entry in the jump table. Two VAL units are designed to verify the values that pass through them. Each VAL contains an OK bit connected to both tamper protection and detection lines. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper prevention and detection lines every cycle. The OK bit is ANDed with each data bit that passes through the unit. VAL1In the case of, the effective cycle is always 0 if the chip has been tampered with. In this way, the program code is never executed because cycle 1 is never reached. There is no need to check if the Old has been tampered with. This is because if the attacker stops the Old state, the chip will not execute any more instructions. VAL2In the case of, the effective 8-bit CMD value is always 0 if the chip is tampered with, which is TBR.
It is a 0 instruction. This stops the effectiveness of any program code. VAL2Performs a parity check on the bits from the CMD to ensure that the CMD has not been tampered with. If the parity check fails, the erase tamper detection line is triggered.
[1402]
I / O unit
The I / O unit communicates serially with the outside world. The authentication chip operates as a slave serial device, receives serial data from the client, processes commands, and serially sends the obtained data to the client. The I / O unit can be realized by ordinary CMOS. Because the key does not pass through this unit. This unit does not have to be realized in non-flushing CMOS. In addition, the latch does not have to be parity checked. Because there is no benefit to the attacker to destroy or modify them. The I / O unit outputs 0 and inputs 0 when any of the tamper detection lines is broken. This is only valid if the attacker disables the reset and / or erase circuit. This is because breaking any of the tamper detection lines will result in a reset or erasure of all flash memory.
[1403]
The InBit, InBitValid, OutBit, and OutBitValid 1-bit registers are used for communication between the client (system) and the authentication chip. InBit and InBitValid provide a means for clients to send commands and data to the authentication chip. OutBit and OutBitValid provide a means for clients to obtain information from authentication chips. When the chip is reset, both InBitValid and OutBitValid are cleared. The client sends a command and a parameter bit to the authentication chip one bit at a time at the same time. From the perspective of the authentication chip:
Reads from InBit hang while InBitValid is cleared. InBitValid remains cleared until the client writes the next input bit to InBit. Reading InBit clears the InBitValid bit, and the next InBit can be read from the client. The client cannot write the bit to the authentication chip until the InBitValid bit is cleared;
Writing to OutBit hangs while OutBitValid is set. OutBitValid remains set until the client reads the bit from OutBit. To write OutBit, set the OutBitValid bit so that the client can read the next OutBit. The client cannot read the bit from the authentication chip until the OutBitValid bit is set.
[1404]
The actual command prolongation is controlled by the state machine, but various communication registers and circuits are present in the I / O unit.
[1405]
FIG. 188 is a diagram showing the data flow and relationships between the components of the I / O unit.
[1406]
[Table 145]
Figure 2001523900
The serial I / O unit includes a circuit that communicates externally with the outside world using data pins. The InBitUsed control signal should be set by any unit that uses InBit during a given clock cycle (it can be in any state of the cycle). The two VAL units are verification units connected to a tamper prevention and detection circuit, and each VAL contains an OK bit. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper prevention and detection lines every cycle. The OK bit is ANDed with each data bit that passes through the unit.
[1407]
VAL1In the case of, the effective bit output from the chip is always 0 if the chip has been tampered with. In this way, the attacker cannot generate useful output. VAL2In the case of, the effective bit input to the chip is always 0 if the chip has been tampered with. In this way, the attacker cannot select useful input. There is no need to verify the I / O unit registers. Because the attacker has no benefit in destroying or modifying them.
[1408]
ALU
FIG. 189 is a schematic block diagram of an arithmetic logic unit. The arithmetic logic unit (ALU) includes a 32-bit Acc (accumulator) register and circuits for simple arithmetic and logical operations. The ALU and all subunits should be implemented in non-flushing CMOS. Because the key goes through it. Moreover, the accumulator is parity checked. The logic and registers housed in the ALU are covered by both tamper detection lines. This ensures that the keys and intermediate calculations are not modified by the attacker. The 1-bit Z register stores the zeroness of the accumulator. Both Z and the accumulator register are cleared after reset. The Z register is updated when the accumulator is updated, and the accumulator is updated for any of the LD, LDK, LOG, XOR, ROR, RPL and ADD commands. Each arithmetic and logic block operates on the basis of two 32-bit inputs, namely the current value of the accumulator and the current 32-bit output of the MU. here,
[1409]
[Table 146]
Figure 2001523900
Is.
[1410]
WriteEnables of Acc and Z is (Logic)1By) CMD7And because of the cycle considerations, these 2 bits are the multiplexer MX to select the output1Not required by. MX1Output selection of is easier as a result, as it requires only bits 6-3 of the CMD.
[1411]
[Table 147]
Figure 2001523900
The two VAL units are verification units connected to the tamper prevention and detection line, and each VAL contains an OK bit. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper prevention and detection lines every cycle. The OK bit is ANDed with each data bit that passes through the unit. VAL1In the case of, if the chip has been tampered with, the effective bit output from the accumulator is always 0. This prevents the attacker from processing anything about the accumulator. VAL1Performs a parity check on the accumulator, and if the check fails, sets the erase tamper detection line. VAL2In the case of, the effective Z state of the accumulator is always true if the chip has been tampered with. In this way, the attacker cannot create a loop structure. The remaining functional blocks of the ALU will be described later. Everything should be realized in non-flash CMOS.
[1412]
[Table 148]
Figure 2001523900
RPL
FIG. 190 is a schematic block diagram of the RPL unit. The RPL unit is a component within the ALU. This is the RPL of the authentication chip
It is designed to realize the CMP function. The RPL CMP command was specifically designed for use in secure writing to flash memory M based on the value of AccessMode. The RPL unit includes a 32-bit shift register called AMT (Access ModeTemp) that executes a 2-bit right shift for each shift pulse, and a 1-bit register called EE and DE that are directly based on the EqEncounted flag and DecEncounted flag of the WR pseudo code. ,including. All registers are cleared to 0 after reset. AMT is PRL
The 32-bit AM value is loaded using the INIT command (via the accumulator) and the EE and DE are set according to the generic write algorithm with calls to RPL MHI and calls to RPL MLO. The EQ block and LT block have the functions as described in the WR command pseudo code. The EQ block outputs 1 if the two 16-bit inputs are bit-matched, and outputs 0 if the two 16-bit inputs are not bit-matched. In the LT block, the upper 16 bits input from the accumulator are MX.2Outputs 1 if it is less than the 16-bit value selected from the MU by. The comparison is unsigned. The bit patterns of the operands are specifically chosen to simplify the combinatorial logic. Since the bit pattern of the operand is used, the pattern is listed again.
[1413]
[Table 149]
Figure 2001523900
Since the high bits are set in MHI and MLO, they can be easily distinguished from the bit pattern of Init, and the least significant bit can be used to distinguish between MHI and MLO. The EE and DE flags are updated each time an RPL command is issued. Two values are set for the Init stage, and the EE and DE values are updated appropriately for MHI and MLO. Therefore, the WriteEnable for EE and DE is as follows.
[1414]
[Table 150]
Figure 2001523900
For the 32-bit AMT register, this register is loaded with the contents of AM (read from the MU) during the RPL Init command, and the RPL MLO command and RPL
Shift the AMT register to the right by 2 bits for the MHI command. This is the most significant bit (CMD) of the RPL operand3) Can be easily tested. Therefore, the WriteEnable and ShiftEnable for the AMT register are as follows.
[1415]
[Table 151]
Figure 2001523900
Logic3Output from multiplexer MX1It is also useful as an input to. This is because it is used to pass either the current two access mode bits or 00 (which represents the access mode RW and thus resets the DE and EE registers). Therefore, MX1Is as follows.
[1416]
[Table 152]
Figure 2001523900
The RPL logic replaces only the upper 16 bits of the accumulator. The lower 16 bits pass as they are. However, only the upper or lower 16 bits of the 32 bits from the MU (corresponding to one of M [0-15]) are used. Therefore, MX2CMD to distinguish between MHI and MLO0To test.
[1417]
[Table 153]
Figure 2001523900
The logic for updating the DE and EE registers matches the pseudo code for the WR command. AccessMode value is 00 (= RW, this is RPL
It should be noted that an input (appearing during INIT) loads both DE and EE with 0 (correct initial value). EE is Logical4The result from is loaded and DE is Logical5The result from is loaded.
[1418]
[Table 154]
Figure 2001523900
The upper 16 bits of the accumulator are replaced by the value to be written to M. Therefore, Logic6Matches the WE flag from the WR command pseudocode.
[1419]
[Table 155]
Figure 2001523900
Logic6Output from multiplexer MX3Is used as is to drive the selection between the original 16 bits from the accumulator and the value from M [0-15]. If 16 bits from the accumulator are selected (if the accumulator is left unchanged), this means that the accumulator value is written to M [n]. If a 16-bit value from M is selected (changing the upper 16 bits of the accumulator), this means that the 16-bit value of M is unchanged. Therefore, MX3Takes the following format.
[1420]
[Table 156]
Figure 2001523900
There is no point in checking the parity of AMT. Because the attacker is MX3This is because it is better to force the input to 0 (this allows an attacker to write any value to M). But if the attacker chooses to laser cut the chip (all including tamper detection test and circuitry), MX3There are better targets than allowing restricted selection text attacks by pinning the input of.
[1421]
ROR
FIG. 191 is a schematic block diagram of the ROR block of the ALU. The ROR unit is a component within the ALU. The ROR unit is designed to realize the ROR function of the authentication chip. A 1-bit register named RTMP is stored in the ROR unit. RTMP is cleared to 0 by reset and ROR
Set during the RB command and the ROR XRB command. The RTMP register allows the implementation of a linear feedback shift register with any tap structure. The XOR block is an XOR with two 1-bit inputs and 1-bit outputs. RORn is shown as a block for convenience, but in reality it is a multiplexer MX.3Wiring connection to. Because each block is simply a 32-bit rewrite, N-bit shifted to the right. All three multiplexers (MX1, MX2And MX3) Depends on the 8-bit CMD value. However, the bit patterns of the ROR opcode are lined up for logic optimization purposes. Since the bit pattern of the operand is used, this pattern is listed again.
[1422]
[Table 157]
Figure 2001523900
Logic1Is used to give the RTMP a WriteEnable signal. The RTMP register is ROR
It should only be written between the RB and ROR XOR commands. Logic2Is used to give a control signal whenever InBit is used. The two combinatorial logic blocks are as follows.
[1423]
[Table 158]
Figure 2001523900
Multiplexer MX1Is used to select the bits stored in RTMP. Logic1Limits the range of CMD input to one of RB and XRB in advance. Therefore, to distinguish between the two, CMD0All you have to do is test. The table below shows the CMD0And MX1Represents the relationship with the value output from.
[1424]
[Table 159]
Figure 2001523900
Multiplexer MX2Is used to select the input bits that will replace bit 0 of the accumulator input. Here, a small amount of optimization is performed. This is because the individual input bits are typically associated with a particular operand. The table below shows the CMD3-0And MX2Represents the relationship with the value output from.
[1425]
[Table 160]
Figure 2001523900
Last multiplexer MX3Makes the final rotation of the 32-bit value. Again, the bit pattern of the CMD operand is used.
[1426]
[Table 161]
Figure 2001523900
MinTicks unit
FIG. 192 is a diagram showing the data flow and relationships between the components of the MinTicks unit. The MinTicks unit serves as a programmable minimum delay (using a countdown) between keyed operations within the authentication chip. The logic and registers contained in the MinTicks unit need to be covered by both tamper detection lines. This ensures that the attacker cannot change the time between calls to the keyed function. Almost all MinTicks units are feasible with regular CMOS. Because the key does not go through most of this unit. However, the accumulator is SET
Used in MTR instructions. As a result, this small area of the circuit must be realized in non-flushing CMOS. The rest of the MinTicks unit does not have to be implemented in non-flushing CMOS. However, the MTRZ latch (see below) must be parity checked.
[1427]
The MinTicks unit includes a 32-bit register named MTR (MinTicks Remaining). The MTR register stores the number of clock ticks remaining until the next keyed function can be read. For each cycle, the value of MTR is decremented by 1 until it reaches zero. When the MTR reaches 0, it does not decrease any more. An auxiliary 1-bit register named MTRZ (MinTicks Remaining Register Zero) reflects the current zeroness of the MTR register. When the MTRZ register is 0, the MTRZ is 1, and when the MTRZ register is not 0, the MTRZ is 0. The MTR register is cleared by reset and SET
It is set to a new count using the MTR command and transfers the current value of the accumulator to the MTR register.
[1428]
here,
[1429]
[Table 162]
Figure 2001523900
And
[1430]
[Table 163]
Figure 2001523900
Is.
[1431]
Since the cycles are connected to the MTR and MTRZ WriteEnables, these registers are updated only during the execution cycle, i.e., when cycle = 1. The two VAL units are verification units connected to the tamper prevention and detection line, and each VAL contains an OK bit. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper detection lines for each cycle. The OK bit is ANDed with each data bit that passes through the unit. VAL1In the case of, the effective output from the MTR is 0, which indicates that the output from the decrementer unit is all 1, which leaves the MTRZ at 0 and the attacker uses the keyed function. Use is blocked. Also, VAL1Verify the parity of the MTR register. If the parity check fails, the erase tamper detection line is triggered. VAL2In the case of, if the chip is tampered with, the effective output from the MTRZ is 0, indicating that the MinTicksRemaining register has not yet reached 0, which prevents an attacker from using the keyed function. To.
[1432]
Program count unit
FIG. 192 is a block diagram of the program count unit. The program count unit (PCU) includes a 9-bit PC (program counter) and logic for branching and subroutine control. The program count unit can be realized by ordinary CMOS. Because the key does not go through this unit. This unit does not have to be realized in non-flushing CMOS. However, the latch is parity checked. Moreover, the logic and registers housed in the memory unit need to be covered by both tamper detection lines to ensure that the PC cannot be modified by an attacker. The PC is actually implemented as a 6-level x 9-bit PCA (PC array) and indexed by a 3-bit SP (stack pointer) register. All PC and SP registers are cleared by reset and updated during the program control flow according to the opcode. The current value of the PC is output to the MU during cycle 0 (fetch cycle). The PC is updated during cycle 1 (execution cycle) based on the command to be executed. In most cases, the PC simply increments by one. However, when a branch appears (by subroutine or other form of jump), the PC is replaced with a plausible value. The mechanism for calculating the new PC value depends on the opcode being processed.
[1433]
ADD block is modulo 29Is a simple adder. The input is either a PC value and 1 (to increment the PC by 1) or a 9-bit offset (high bits are set and the lower 8 bits are from the MU). The "+1" block uses a 3-bit input and increments by 1 (with wrap). The "-1" block uses a 3-bit input and is decremented by 1 (with wrap). The various types of PC control are as follows.
[1434]
[Table 164]
Figure 2001523900
Since the same operation is taken for JSR and JSI (ACC), Logic1Detect the case concretely with. By the same idea, Logical2At JSI
Test the RTS specifically.
[1435]
[Table 165]
Figure 2001523900
When updating the PC, it must be decided whether the PC should be replaced by a completely new item or by the result of the adder. This is true for JSR and JSI (ACC), but also for TBR as long as the test bit matches the accumulator state. Everything except TBR is Logical1Tested by Logic3Is Logic1Includes the output of as an input. Logic3The output from is then a multiplexer MX to get a new PC value2Used by.
[1436]
[Table 166]
Figure 2001523900
[1437]
[Table 167]
Figure 2001523900
The input to the 9-bit adder depends on whether it is incremented by 1 (normal case) or the offset read from the MU is added (DBR command). Logic4Generates a test. Logic4The output from the multiplexer MX accordingly3Used as is by.
[1438]
[Table 168]
Figure 2001523900
[1439]
[Table 169]
Figure 2001523900
Finally, the choice of which PC entry to use depends on the current value of SP. When entering the subroutine, the SP index value is incremented, and when returning from the subroutine, the SP index value is decremented. In all cases, and when you want to fetch the command (cycle 0), use the current value of SP. Logic1Notifies when to enter a subroutine and is Logical2Notifies when to return from the subroutine. The multiplexer selection is therefore defined as follows:
[1440]
[Table 170]
Figure 2001523900
The two VAL units are verification units connected to the tamper prevention and detection line, and each VAL contains an OK bit. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper detection lines for each cycle. The OK bit is ANDed with each data bit that passes through the unit. Both VAL units parity check the data bits and ensure they are valid. If the parity check fails, the erase tamper detection line is triggered. VAL1In the case of, the effective output from the SP register is always 0 if the chip has been tampered with. This prevents an attacker from executing the subroutine. VAL2In the case of, the effective PC output is always 0 if the chip has been tampered with. This prevents an attacker from executing program code.
[1441]
Memory unit
The memory unit (MU) includes the internal memory of the authentication chip. The internal memory is addressed by a 9-bit address, which is passed from the address generator unit. The memory unit outputs appropriate 32-bit and 8-bit values depending on the address. The memory unit also has a special programming mode in which the program is input to the flash memory. The contents of the entire memory unit should be protected from tampering. Therefore, the logic and registers housed in the memory unit should be covered by both tamper detection lines. This ensures that the program code, keys, and intermediate data values cannot be modified by an attacker. All flash memory is multi-state and must be checked when read at invalid voltage. 32-bit RAM should also be parity checked. A 32-bit data path through the memory unit can be realized with non-flushing CMOS. This is because the key is sent along that data path. The 8-bit data path can be realized with ordinary CMOS. This is because the key is not sent along that data path.
[1442]
constant
The address range of the constant memory area is 000000000000-000000111. Therefore, the range is 00000xxxxxx. However, if the next 48 addresses are spare, they will be available during decryption. The constant memory area is the upper 3 bits of the address (Adr).8-6= 000) is selected, the lower 4 bits are supplied to the combination logic, and the 4 bits are mapped to the 32-bit output value as follows.
[1443]
[Table 171]
Figure 2001523900
RAM
The address space of a 32-bit RAM with 32 entries is 001000000-001011111. Therefore, the range is 0010xxxxxx. The RAM memory area is therefore the upper 4 bits of the address (Adr).8-5= 0010), and the lower 5 bits select the value to be addressed. Given a continuous 32-entry address space, the RAM can easily be implemented as a simple 32-x 32-bit RAM. The CPU handles each address from the range 000000-11111 in a special way, but the RAM address decoder itself does not handle the address specially. All RAM values are cleared to 0 on reset, but program code should not rely on this.
[1444]
Flash memory-variables
The address space of the 32-bit width flash memory is 001000000-001111111. Therefore, the range is 0011xxxxxx. The flash memory area is therefore the upper 4 bits of the address (Adr).8-5= 0111), and the lower 5 bits select the value to be addressed. Flash memory requires special erasure. It takes a long time to complete the erasing of the flash memory. Therefore, the Wait signal is set inside the flash controller when the CLR command is received, and is cleared only when the requested memory is erased. Internally, the erase lines of a particular memory range are combined into one, resulting in only two bits being required, as shown in the table below.
[1445]
[Table 172]
Figure 2001523900
The flash value is not changed by reset, but the program code should not take the initial value of the flash (after manufacturing) except for garbage. Operations that utilize the flash address are LD, ST, ADD, RPL, ROR, CLR and SET. In all cases, operands and memory allocations are tightly coupled to minimize address generation and decryption. The entire variable area of flash memory is erased when entering programming mode and when a clear physical attack is detected.
[1446]
Flash memory-program
The address range of the 384-entry 8-bit width program flash memory is 010000000-111111111. Therefore, the range is 01xxxxxxxxx-11xxxxxxxxx. Decoding is easy given the ROM start address and address range. The CPU handles a part of the address range in a special way, but the address decoder itself does not handle the address specially. The flash value does not change with a reset and is cleared only by entering program mode. After manufacture, the flash content should be considered garbage. 384 bytes are loaded by the state machine only when in programming mode.
[1447]
MU block diagram
FIG. 193 is a block diagram of the memory unit. The logic illustrated takes advantage of the fact that 32-bit and 8-bit data are required by separate commands, resulting in fewer bits required for decoding. As shown, 32-bit and 8-bit outputs are always generated. The remaining suitable components of the authentication chip simply use 32-bit or 8-bit values, depending on the command being executed. Multiplexer MX1Selects the 32 bits output from the selection of truth table constants, RAM, and flash memory. To select between 3 outputs, only 2 bits, ie Adr6And Adr5Is required. In this way, MX2The format of is as follows.
[1448]
[Table 173]
Figure 2001523900
The logic to erase a specific part of 32-bit flash memory is Logic1Is filled with. The erase part control signal should be set only during the CLR command to the correct part of memory during cycle = 1. It should be noted that a single CLR command clears a range of flash memory. Adr6Is sufficient as an address range for CLR. This is because the range always stays within the flush range for valid operands and is 0 for non-valid operands. The entire range of 32-bit wide flash memory is erased when the erase detection line is triggered (either by an attacker or by intentionally entering programming mode).
[1449]
[Table 174]
Figure 2001523900
The logic for writing to a specific part of flash memory is Logical2Is filled with. The WriteEnable control signal should be set only during the appropriate ST command to the flash memory range during cycle = 1. Adr6-5Only tests are allowed. This is because only the ST command effectively writes to flash or RAM (Adr).6-5If is 00, then K2MX must be 0. ).
[1450]
[Table 175]
Figure 2001523900
The WE (WriteEnable) flag is set during execution of the SET WE command and the CLR WE command. Logic3Tests these two cases. The actual bit written to the WE is CMD4Is.
[1451]
[Table 176]
Figure 2001523900
The logic for writing to the RAM area of the memory is Logic4Is filled with. The WriteEnable control signal is set only during the appropriate ST command to the RAM memory range during cycle = 1. However, this is tampered with by the WE flag, which controls whether writing to X [N] is allowed. The X [N] range is the upper half of RAM, which is Adr.4Can be tested using. Adr as the full address range of RAM6-5It is acceptable to test only. This is because the ST command writes only to the flash or RAM.
[1452]
[Table 177]
Figure 2001523900
The three VAL units are verification units connected to the tamper prevention and detection line, and each VAL contains an OK bit. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper prevention and detection lines every cycle. The OK bit is ANDed with each data bit that passes through the unit. The VAL unit parity-checks the data bits and ensures that they are valid. VAL1And VAL2Is verified by checking the state of each data bit and VAL3Performs a parity check. When the validation test fails, the erase tamper detection line is triggered. VAL1In the case of, the effective output from the program flash is always 0 if the chip has been tampered with (TBR).
Interpreted as 0). This prevents the attacker from executing useful instructions. VAL2In the case of, the effective 32 bits are always 0 if the chip has been tampered with. This prevents the attacker from obtaining the key or intermediate storage value. 8-bit flash memory is used to hold program code, jump tables, and other program information. The 384-byte program flash memory is selected by the full 9-bit address (using the address range 01xxxxxxx-11xxxxxxx). The program flash memory is erased only when the erase detection line is triggered (either by an attacker or by entering programming mode due to a programming mode detection unit). When the erase detection line is triggered, the small state machine in the program flash memory unit erases the 8-bit flash memory, verifies the erase, and loads the new content (384 bytes) from the serial input. The following pseudocode describes the state machine logic that is enforced when the erase detection line is triggered:
Figure 2001523900
Programming mode state 0 is set to 8-bit output during machine execution. The 0 command puts the command on the rest of the authentication chip.
Interpret as 0. When the chip reads a total of 384 bytes into program flash memory, the chip hangs (enters an infinite loop). Next, the authentication chip is reset and the program is used normally. It should be noted that the erasure is verified by the 8-bit register used to load the new contents of the 8-bit program flash memory. This helps reduce the chances of a successful attack. This is because the program code cannot be loaded properly if the register used to authenticate the erase is destroyed by an attacker. In addition, the entire state machine is protected by both tamper detection lines.
[1453]
Address generator unit
The address generator unit generates an effective address for accessing the memory unit (MU). In cycle 0, the PC is passed to the MU to fetch the next opcode. The address generator interprets the returned opcode to generate the effective address for cycle 1. In cycle 1, the generated address is passed to the MU. The logic and registers stored in the address generator unit are covered by both tamper detection lines. This ensures that the attacker cannot change the generated address. Almost all address generator units can be implemented in regular CMOS. This is because the key does not pass through most of this unit. However, the 5 bits of the accumulator are used in JSI address generation. As a result, this small area of the circuit is realized in non-flushing CMOS. The rest of the address generator unit does not have to be implemented in non-flushing CMOS. However, the counter and the latch of the calculated address should be parity checked. If any of the tamper detection lines are broken, the address generator unit will generate address 0 in each cycle and all counters will be set to 0. This is only effective if the attacker disables the reset and / or the erase circuit. This is because under normal circumstances, a break in the tamper detection line will result in a reset or erasure of all flash memory.
[1454]
Background of address generation
The address generation logic needs to examine various opcode and operand combinations. The relationship between opcodes / operands and addresses is discussed in this section and is used as the basis for address generator units.
[1455]
constant
The bottom four entries are general-purpose applications as well as simple constants for the HMAC algorithm. The lower 4 bits of the LDK operand directly correspond to these 4 values, that is, the lower 3 bits of the in-memory addresses of 0000, 0001, 0010 and 0011. The y and h constants are also addressed by the LDK command. However, the address is generated by performing an OR operation on the lower 3 bits of the operand with the inverse of the C1 counter value and holding the 4th bit of the operand as it is. In this way, LDK
In the case of y, the y operand is 0100, and in the case of LDK h, the h operand is 1000. The inverted C1 value is in the range of 000-011 with respect to y and in the range of 000-100 with respect to h, and the OR operation result gives an accurate address. For all constants, the upper 5 bits of the final address are always 00000.
[1456]
RAM
The variables AT have addresses directly related to the lower 3 bits of their operand values. That is, in the case of the operand values 0000-0101 of the LD, ST, ADD, LOG, and XOR commands, and in the case of the operand values 1000-1101 of the LOG command, the lower 3 operand address bits generate the final address. , 001000, used with a fixed upper 6-bit address. The remaining register values can be accessed by the indexing mechanism. The variables A-E, B160 and H are only accessible as indexed by the C1 counter value, and X is N.1, N2, N3And N4Indexed by. In the case of the LD, ST and ADD commands, the address of the AE indexed by C1 is generated by taking the lower 3 bits (000) of the operand and performing an OR operation with the C1 counter value. However, the addresses of H and B160 cannot be generated in the same way (otherwise the RAM address space would be discontinuous). Therefore, a simple combination logic converts AE to 0000, H to 0110, and B160 to 1011. The final address is obtained by adding C1 to the 4-bit value (a 4-bit value is obtained) and prefixing it with a fixed upper 5 bit address of 00100. Finally, the X range of the register is N1, N2, N3And N4Only accessible as indexed by. For the XOR command, any N for indexing1-4Can be used, while in the case of LD, ST and ADD, N4Only available. The operand of X in LD, ST and ADD is XN4Since it is the same as the operand, the lower 2 bits of the operand select N to be used. The address is thus generated as a constant upper 5 bit value of 00101 and a lower 4 bit derived from the selected N counter.
[1457]
Flash memory-variables
The addresses of the variables MT and AM are generated from the operands of the associated command. The 4 bits of the operand are used as they are (0110 and 0111), and a fixed upper 5 bit address of 00110 is added in front. Variable R1-5, K11-5, K21-5, And M0-7Is only accessible as an inverse index of the C1 counter value (additionally, in the case of R, it depends on the actual C1 value). A simple combination logic translates R and RF to 00000, K to 01000 or 11000, and M (including MHI and MLO) to 10000, depending on whether K1 or K2 is addressed. The final address is obtained by ORing (or adding) C1 with a 5-bit value (in the case of RF, C1 is used as it is) and adding a certain upper 4 bits of 0011 in front. The variables IST and ISW are each only a 1-bit value, but can be implemented by any number of bits. The data is read and written as either 0x00000000000 or 0xFFFFFFFF. They are addressed only by the ROR, CLR and SET commands. In the case of ROR, the lower bits of the operand are combined with the constant upper 8 bit values of 00111111, and 0011111110 and 001111111 are obtained for IST and ISW, respectively. This is because the other ROR operands do not use memory and the returned value is negligible except for IST and ISW. In the case of SET and CLR, IST and ISW are addressed by combining certain upper 4 bits of 0011 with the mapping from IST (0100) to 11110 and the mapping from ISW (0101) to 11111. Since IST and ISW share the same operand values as E and T from RAM, the same decoding logic can be used for the lower 5 bits. The final address requires that bits 4, 3 and 1 be set (this is done by ORing the result of the test with operand value 010x).
[1458]
Flash memory-program
The address to look up in the program flash memory comes directly from the 9-bit PC (for cycle 0) or the 9-bit Adr register (for cycle 1). Commands such as TBR, DBR, JSR and JSI change the PC according to the data stored in the table at a specific address in the program memory. As a result, address generation utilizes some constant address components, and command operands (or accumulators) form the lower bits of the effective address.
[1459]
[Table 178]
Figure 2001523900
Block diagram of the address generator unit
FIG. 194 is a schematic block diagram of the address generator unit. The primary output from the address generator unit is the multiplexer MX, as shown in the table below.1Selected by.
[1460]
[Table 179]
Figure 2001523900
It is important to distinguish between CMD data and 8 bits from MU:
In cycle 0, the 8-bit data line holds the next instruction to be executed in later cycle 1. This 8-bit command value is used to decode the effective address. In contrast, the CMD 8-bit data retains the previous instruction and should be ignored;
In cycle 1, the CMD line holds the currently executing instruction (the instruction held in the 8-bit data line during cycle 0), while the 8-bit data line holds the data of the effective address from the instruction. The CMD data must be executed during cycle 1.
[1461]
Therefore, the selection of 9-bit data from the MU or CMD is the multiplexer MX as shown in the table below.3Is done by.
[1462]
[Table 180]
Figure 2001523900
Since the 9-bit Adr register is updated every cycle 0, Adr's WriteEnable is connected to ~ cycles. The counter unit produces counters C1 and C2 (used internally) and a selected N index. Moreover, the counter unit outputs the flags C1Z and C2Z used by the program counter unit. Various * GEN units generate unique command type addresses during cycle 0, and the multiplexer MX2Makes a selection between them based on commands such as read from program memory by a PC (ie, an 8-bit data line). The generated values are as follows.
[1463]
[Table 181]
Figure 2001523900
Multiplexer MX2Has the following selection criteria.
[1464]
[Table 182]
Figure 2001523900
VAL1The unit is a verification unit connected to a tamper prevention and detection circuit. It contains an OK bit, which is reset to 1 and ORed with the ChipOK value from both tamper prevention and detection lines every cycle. The OK bit is ANDed with the 9-bit effective address before it can be used. If the chip has been tampered with, the address output is always zero, which prevents an attacker from accessing other parts of memory. VAL1The unit performs a parity check on the effective address bits to ensure that they have not been tampered with. If the parity check fails, the erase tamper detection line is triggered.
[1465]
JSIGN
FIG. 195 is a schematic block diagram of the JSIGN unit. JSIGEN unit is JSI
Generate an address for the ACC instruction. The effective address is simply
The 4-bit upper part of the address for the JSI table (0101) and
The lower 5 bits of the accumulator value and
Is a concatenation of.
[1466]
The accumulator may hold the key at other times (when the jump address is not generated), so its value must be kept secret. As a result, this unit is implemented in non-flushing CMOS. Multiplexer MX1Simply makes a selection between the lower 5 bits or 0 from the accumulator based on whether the command is JSIGN. Multiplexer MX1Has the following selection criteria.
[1467]
[Table 183]
Figure 2001523900
JSRGEN
FIG. 196 is a schematic block diagram of the JSRGEN unit. The JSRGEN unit generates addresses for JSR and TBR instructions. The effective address is simply
The 4-bit upper part of the address for the JSR table (0100) and
Offset in table from operand (3 bits for JSR command, 3 bits for TBR + constant 0 bits),
Comes from the connection of. Here, Logical1Generates bit 3 of the effective address. This bit is bit 3 in the case of JSR and 0 in the case of TBR.
[1468]
[Table 184]
Figure 2001523900
Since the JSR instruction has 1 in bit 5 (in contrast, this bit is 0 in TBR), by ANDing this with bit 3, bit 3 is generated in the case of JSR, and the TBR In the case, 0 is generated.
[1469]
DBRGEN
FIG. 197 is a schematic block diagram of the DBRGEN unit. The DBRGEN unit generates an address for the DBR instruction. The effective address is
The 6-bit high-order part of the address for the DBR table (011000) and
The lower 3 bits of the operand and
Comes from the connection of.
[1470]
LDKGEN
FIG. 198 is a schematic block diagram of the LDKGEN unit. The LDKGEN unit generates an address for the LDK instruction. The effective address is
The 5-bit high-order part of the address for the LDK table (00000) and
Operand high bit and
The lower 3 bits of the operand (when the lower is a constant) or the lower 3 bits of the operand ORed with C1 (when the indexed constant)
Comes from the connection of.
[1471]
OR2The block only OR-operates the 3 bits of C1 with the lower 3 bits from the 8-bit data output from the MU. Multiplexer MX1Only makes a selection between the actual data bits and the data bits for which C1 has been OR-operated, based on whether the high-order bits of the operand are set or not set. The selector input to the multiplexer is a simple OR gate and bit2Bit3And OR operation. Multiplexer MX1Has the following selection criteria.
[1472]
[Table 185]
Figure 2001523900
RPLGEN
FIG. 199 is a schematic block diagram of the RPLGEN unit. The RPLGEN unit generates an address for the RPL instruction. When K2MX is 0, the effective address is a constant 000000000000. When K2MX is 1 (indicating that reading from M returns a valid value), the effective address is
The 6-bit high-order part of the address for M (001110) and
3 bits of the current value of C1 and
Comes from the connection of.
[1473]
Multiplexer MX1Makes a selection between two addresses based on the current value of K2MX. Therefore, multiplexer MX1Has the following selection criteria.
[1474]
[Table 186]
Figure 2001523900
VARGEN
FIG. 200 is a schematic block diagram of the VARGEN unit. The VARGEN unit generates addresses for LD, ST, ADD, LOG and XOR instructions. K2MX
The 1-bit flag determines whether the read from M is mapped to a constant 0 address (returns 0 but is not writable) or whether K1 or K2 is accessed when the operand specifies K. Used to do. The 4-bit adder block takes two sets of 4-bit inputs and modulo 24Is added to generate a 4-bit output. Single bit register K2MX is CLR
It is written only during execution of the K2MX instruction or the SET K2MX instruction. Logic1K2MX based on these conditions
Set the WriteEnable.
[1475]
[Table 187]
Figure 2001523900
The bit written to the K2MX variable during the SET instruction is 1, and 0 during the CLR instruction. The lower bits of the opcode (bit) as the source of the input bits4) Is convenient. The truth table implemented as combinatorial logic during address generation determines part of the base address as follows:
[1476]
[Table 188]
Figure 2001523900
The truth table produces a 5-bit output, where the lower 4 bits are sent to the 4-bit adder, where the lower 4 bits are added to the index value (C1, N or the lower 3 bits of the operand itself). The most significant bit is sent to the adder and is prepended to the 4-bit result from the adder result to generate a 5-bit result. The second input to the adder is the multiplexer MX1Derived from, multiplexer MX1Selects an index value from C1, N, and the lower 3 bits of the operand itself. C1 has only 3 bits, but the 4th bit has a constant of 0. Multiplexer MX1Has the following selection criteria.
[1477]
[Table 189]
Figure 2001523900
6th bit of effective address5) Is 0 in the case of the RAM address and 1 in the case of the flash memory address. The flash memory addresses are MT, AM, R, K, and M. bit5Calculation is Logical2Given by.
[1478]
[Table 190]
Figure 2001523900
A constant of 1 bit is represented, and the effective address is 7 bits in total. For these bits, K2MX is not 0 and the instruction is LD, ADD or ST.
Unless it is M [C1], it forms an effective address. In the latter, the effective address is a constant address 0000000. In both cases, two 0 bits are prepended to form the final 9-bit address. This calculation is shown below and is Logical3And multiplexer MX2Is done by.
[1479]
[Table 191]
Figure 2001523900
[1480]
[Table 192]
Figure 2001523900
CLRGEN
FIG. 201 is a schematic block diagram of the CLRGEN unit. The CLRGEN unit generates an address for the CLR instruction. The effective address is always in the flash memory for the valid memory access operand and is 0 for the invalid operand. CLR
The M [C1] instruction always erases M [C1] regardless of the state of the K2MX flag (held in the VARGEN unit). The truth table is a simple combinatorial logic that realizes the following relationships.
[1481]
[Table 193]
Figure 2001523900
It's easy to reduce the logic required for the truth table. This is because, in all four major cases, the first 6 bits of the effective address are 00, followed by the operand (bit).3-0) Follows.
[1482]
BITGEN
FIG. 202 is a schematic block diagram of the BITGEN unit. The BITGEN unit generates addresses for ROR and SET instructions. The effective address is always in the flash memory for the valid memory access operand and is 0 for the invalid operand. The ROR and SET instructions access only the IST and ISW flash memory addresses (the rest of the operands access the registers), and a simple combinatorial logic truth table is sufficient for address generation.
[1483]
[Table 194]
Figure 2001523900
Counter unit
FIG. Y37 is a schematic block diagram of the counter unit. The counter unit produces counters C1 and C2 (used internally) and a selected N index. Further, the counter unit outputs output flags C1Z and C2Z for external use. Registers C1 and C2 are updated when they are targets of DBR or SC instructions. Operand high bit (effective command bit3) Makes a selection between C1 and C2. Logic1And Logic2Determines the WriteEnable for C1 and C2, respectively.
[1484]
[Table 195]
Figure 2001523900
The single bit flags C1Z and C2Z are generated by the NOR operation of the corresponding parts of their multi-bits C1 and C2. In this way, C1Z is 1 when C1 = 0 and C2Z is 1 when C2 = 0. During the DBR instruction, either the value of C1 or C2 is decremented by 1 (with wrap). The input to the decrementer unit is as follows: Multiplexer MX2Selected by.
[1485]
[Table 196]
Figure 2001523900
The actual value written in C1 or C2 depends on whether the DBR or SC instruction has been executed. Multiplexer MX1Makes a selection between the output from the decrementer (for the DBR instruction) and the output from the truth table (for the SC instruction). It should be noted that only the least significant 3 bits of the 5-bit output are written to C1. Multiplexer MX1Therefore, it has the following selection criteria.
[1486]
[Table 197]
Figure 2001523900
The truth table holds the values to be loaded into C1 and C2 using the SC instruction. The truth table is a simple combinatorial logic that realizes the following relationships.
[1487]
[Table 198]
Figure 2001523900
Registers N1, N2, N3 and N4 are updated with the next value -1 (with wrap) when referenced by the XOR instruction. Register N4 is ST
It is also updated when the X [N4] instruction is executed. The LD and ADD instructions do not update N4. Moreover, a total of four registers are updated during the SET Nx command. Logic4-7Generates the WriteEnable of registers N1 to N4. All are Logical3Using, Logical3The command is SET
If it is Nx, 1 is generated, otherwise 0 is generated.
[1488]
[Table 199]
Figure 2001523900
The actual index value sent or used as input to the decrementer is the multiplexer MX.4Easily selects using the lower 2 bits of the operand.
[1489]
[Table 200]
Figure 2001523900
The incrementer is (multiplexer MX4Takes 4 bits of the input value (selected by) and adds 1 to produce a 4-bit result (modulo 2)4By addition of). Finally, the multiplexer MX3At 4 points (different for each N, SET
Make a choice between the constant value (loaded during the Nx command) and the result of the decrementer (during the XOR or ST command). Its value is written only if the appropriate WriteEnable flag is set (Logic).4-Logic7See), Logic3Can be safely used for multiplexers.
[1490]
[Table 201].
Figure 2001523900
The SET Nx command loads the following constants from N1 to N4.
[1491]
[Table 202]
Figure 2001523900
Each referenced initial X [Nn] Consistent with the initial state of indexes N1 to N4 of the optimized SHA-1 algorithm. Each index value NnWhen is decremented, the effective X [N] is incremented. The reason is that the X word is stored in memory first from the most significant word. The three VAL units are verification units connected to a tamper prevention and detection circuit, and each VAL contains an OK bit. The OK bit is reset to 1 and ORed with the ChipOK value from both tamper prevention and detection lines every cycle. The OK bit is ANDed with each data bit that passes through the unit. All VAL units parity check the data bits to ensure that the counters have not been tampered with. If the parity check fails, the erase tamper detection line is triggered. VAL1In the case of, the effective output from the counter C1 is always 0 if the chip has been tampered with. This prevents an attacker from executing a loop structure that indexes keys from start to finish. VAL2In the case of, the effective output from the counter C2 is always 0 if the chip is tampered with. This prevents the attacker from executing the loop structure. VAL3In the case of, the effective output from the N counter (N1-N14) is always 0 if the chip has been tampered with. This prevents an attacker from executing a loop structure that indexes X from beginning to end.
[1492]
Next, referring to FIG. 203, the information 705 stored in the flash memory storage device 701 is shown. This data includes:
[1493]
Factory code
The factory code is a 16-bit code indicating the factory where the print roll is manufactured. This identifies the factory that belongs to the owner of the print roll technology or that manufactures the print roll with permission. The purpose of this number is to be able to track the factory from which the print rolls come from in the event of quality issues.
[1494]
Batch number
The batch number is a 32-bit number indicating a production batch of print rolls. The purpose of this number is to track the batch from which the print rolls come from in the event of quality issues.
[1495]
Serial number
The 48-bit serial number is provided so that each print roll can be uniquely identified up to 28 trillion.
[1496]
Production date
The 16-bit manufacturing date is incorporated to track the aging of print rolls when the expiration date is limited.
[1497]
Media length
The length of the print media remaining on the roll is represented by this number. This length is expressed in small units, such as the minimum dot pitch of printers using millimeter or print rolls, and the remaining photographs in the well-known C, H and P formats, as well as other formats printed Allows the calculation of numbers. Using this small unit ensures that high resolution can be used to keep it in sync with the preprinted media.
[1498]
Media type
Media type data enumerates the media stored in the print roll:
(1) Transparent
(2) Milky white
(3) Opaque coloring
(4) 3D lenticular
(5) Pre-printing: Limited length
(6) Pre-printing: Non-length limited
(7) Metal leaf
(8) Holographic / optically variable device foil.
[1499]
Preprint media length
For example, the length of the repeating pattern of the preprint media housed on the back side of the print roll is stored here.
[1500]
Ink viscosity
The viscosity of each ink color is stored as an 8-bit numerical value. The ink viscosity is used to adjust the printhead actuator characteristics to compensate for the viscosity (typically, higher viscosities require longer actuator pulses to achieve the same drop volume). ..
[1501]
Recommended drop volume for 1200 dpi
The recommended drop volume for each ink color is stored as an 8-bit number. The most suitable drop volume depends on the ink and print media characteristics. For example, the required drop volume decreases as the dye concentration or absorbency increases. Also, transparent media requires about twice the drop volume of milky white media. This is because, in the case of transparent media, light passes through the dye layer only once.
[1502]
Since the print roll contains both ink and media, customer adaptation can be achieved. Drop volumes are just a recommended drop match. This is because the printer may not be 1200 dpi and the printer may be adjusted for the lightness and darkness of the print.
[1503]
Ink color
Each color of the dye color is stored and can be used to fine-tune the digital halftones applied to the image prior to printing.
[1504]
Remaining media length indicator
The length of print media remaining on the roll is numerically expressed and updated by the camera device. The length is expressed in small units (eg, 1200 dpi pixels) so that the number of remaining photos can be calculated in the C, H and P formats, as well as other formats printed. High resolution may be used to keep in sync with the preprint media.
[1505]
Copyright or bit pattern
This 512-bit pattern represents an ASCII string sufficient to make the contents of the stored flash memory copyrightable.
[1506]
With reference to FIG. 204, the storage table 730 of the Artcam authentication chip is shown. The table contains the manufacturing code, batch number, serial number, and date and is in the same format as described above. Table 730 also contains information 731 on the print engine in the Artcam device. The stored information includes the printer engine type, the DPI resolution of the printer, and the printer count of the number of prints produced by the printer device.
[1507]
In addition, an authentication test key 710 is provided, which randomly changes between chips and is also used as the Artcam random identification code in the algorithm described above. A 128-bit print roll authentication key 713 is also provided, which is equivalent to the key stored in the print roll. The 512-bit pattern is then stored, followed by a 120-bit spare area suitable for use with Artcam.
[1508]
As mentioned above, the Artcam preferably includes a liquid crystal display 15, which indicates the number of prints left on the print roll stored in the Artcam. In addition, Artcam includes a three-state switch 17, which allows the user to switch between three standard formats C, H and P (classic, HDTV and panorama). After switching between the three states, the liquid crystal display 15 is updated to reflect the number of images remaining on the print roll if the particular format selected is used.
[1509]
In order to operate the liquid crystal display correctly, the Artcam processor inserts a print roll, passes the authentication test, and then reads it from the flash memory storage device of the print roll chip 53 to determine the remaining amount of paper. Next, the value of the output format selection switch 17 is determined by the Artcam processor. By dividing the print length by the corresponding length of the selected output format, the Artcam processor determines the printable number and updates the liquid crystal display 15 with the remaining prints. When the user changes the output format selection switch 17, the Artcam processor 31 recalculates the number of output pictures according to the format and updates the LCD display 15 again.
[1510]
By storing the process information in the print roll table 705 (FIG. 165), the Artcam apparatus can take advantage of changes in the process and changes in the print characteristics of the print roll.
[1511]
In particular, the pulse characteristics applied to each nozzle in the printhead can be changed to take into account changes in process characteristics. With reference to FIG. 205, the Artcam processor may be adapted to run software programs stored in auxiliary memory ROM chips. The pulse profile characterizer 771, which is a software program, can read a large number of variables from the print roll. These variables include the remaining roll media on the print roll 772, printer media type 773, ink color viscosity 774, ink color drop volume 775, and ink color 776. Each of these variables is read by the pulse profile characterizer and the corresponding most suitable pulse profile is determined by conventional trial and error. The parameters change the printer pulse received by each printer nozzle to improve the stability of the ink output.
[1512]
As is clear, authentication chips have made significant progress in that important and valuable information is stored on the printer chip integrated with the printer roll. This information includes the process characteristics of the print roll of interest, along with the type of print roll and the amount of paper remaining on the print roll.
[1513]
In addition, the print roll interface chip provides valuable credentials and can be built in the form of tamper resistance. Also provided is a tamper resistant method utilizing this chip. The use of print roll chips can provide a convenient and efficient user interface for the rapid output form of the Artcam device, can output a large number of photo formats, and at the same time, the number of photos remaining on the printing device. Indicators can be provided.
[1514]
Print head unit
FIG. 206 shows an exploded perspective partial cross-sectional view of the printhead unit 615 of FIG. 162.
[1515]
The printhead unit 615 is centered on a printhead 44 that ejects ink drops onto the print media 611 on demand to form an image. The print media 611 is sandwiched between two sets of rollers consisting of a first set of 618 and 616 and a second set of 617 and 619.
[1516]
The printhead 44 operates under the control of the power supply, ground, and signal line 810, and the power supply, ground, and signal line 810 provide power supply and control for the printhead 44, and the printhead is printed by automatic tape bonding (TAB). It is joined to the surface of 44.
[1517]
Importantly, the printhead 44, which can be constructed from a properly separated silicon wafer device, relies on a series of anisotropic etch 812s and has a nearly vertical side wall through the wafer. The etch 812 penetrating the wafer can supply ink directly to the printhead surface from the back side of the wafer for later retrieval.
[1518]
The ink is supplied to the back side of the inkjet print head 44 by using the ink head supply unit 814. The inkjet printhead 44 has three separate rows along its surface to supply inks of different colors. The ink head supply unit 814 includes a lid 815 that seals the ink channels.
[1519]
207 to 210 show a number of perspective views of the ink head supply unit 814. Each of FIGS. 207-210 shows only a portion of an inkhead feeding unit of unlimited length, the illustrated portion showing typical details. 207 shows a bottom perspective view, FIG. 148 shows an upper perspective view, FIG. 209 shows an enlarged perspective partial sectional view, and FIG. 210 is an upper perspective view showing details of ink channels. FIG. 211. Is an upper perspective view, and the same applies to FIG. 212.
[1520]
It is considerably more cost effective to form the ink head supply unit 814 from, for example, injection molded plastic rather than from micromachined silicon. The manufacturing cost of plastic ink channels is very low and it is easy enough to manufacture. The design shown in the accompanying drawings envisions a 1600 dpi three-color monolithic printhead of predetermined length. The given flow velocity calculation is for a 100 mm photo printer.
[1521]
The ink head supply unit 814 includes all necessary fine parts. The lid 815 (FIG. 206) is either permanently bonded to the ink head feeding unit 814 or ultrasonically welded to provide a seal for the ink channels.
[1522]
Referring to FIG. 209, cyan, magenta, and yellow inks flow into the ink inlets 820-822, magenta inks flow through through holes 824 and 825, and along the magenta main channels 820 and 827 (FIG. 141). It flows. Cyan ink flows along the cyan main channel 830 and yellow ink flows along the yellow main channel 831. As best shown in FIG. 209, the cyan ink in the cyan ink main channel flows into the cyan subchannel 833. The yellow sub-channel 834 also receives yellow ink from the yellow main channel 831.
[1523]
As best shown in FIG. 210, magenta ink also flows from the magenta main channels 823,827 to the magenta through holes 863,837. Returning to FIG. 209, the magenta ink flows out from the through holes 863 and 837. The magenta ink flows along the magenta subchannel, eg, 838, then along the second magenta subchannel, eg, 839, and then into the magenta trough 840. The magenta ink then flows through the magenta viar, eg, 842, and the magenta viar is aligned with the corresponding inkjet head-through holes (eg, 812 in FIG. 166), which then print out the ink. Supply to the inkjet nozzle of.
[1524]
Similarly, the cyan ink in the cyan subchannel 833 flows into the cyan pit area 849, which supplies the ink to the two cyan vias 843,844. Similarly, the yellow subchannel 834 supplies the yellow pit area 46, and the yellow pit area supplies the yellow vias 847,848.
[1525]
As shown in FIG. 210, the printhead is designed to fit in the printhead slot 850, and various vias, such as 851, are aligned with the corresponding through holes, such as 851, within the printhead wafer.
[1526]
Returning to FIG. 206, care should be taken to ensure that the appropriate ink flows throughout the printhead chip 44 and at the same time meets the constraints of the injection molding process. The size of the ink-through wafer hole 812 on the back side of the printhead chip is about 100 μm × 50 μm, and the gap between the through-holes carrying inks of different colors is about 170 μm. Shapes of this size can be easily plastic molded (compact discs are micron-sized), ideally wall heights exceed several times the wall thickness to maintain proper stiffness. Must not be. A preferred embodiment solves this problem by using a hierarchical structure of ink channels that are getting smaller and smaller.
[1527]
FIG. 211 shows a small portion 870 of the surface of the printhead 44. The surface is divided into three series of nozzles consisting of cyan series 871, magenta series 872, and yellow series 873. Each series of nozzles is further divided into two rows, eg, 875, 876, where the printhead 44 includes a series of bonding pads 878 that bond power and control signals.
[1528]
The printhead is preferably constructed according to a large number of different forms of inkjet created for applications including Artcam devices. These inkjet devices are described in detail below.
[1529]
The printhead nozzle includes an ink supply channel 880 equivalent to the anisotropic etch hole 812 of FIG. 206. Ink flows from the back side of the wafer through the supply channel 881, then through the filter grill 882, and into the ink nozzle chamber, eg, 883. The operations of the nozzle chamber 883 and the printhead 44 (FIG. 1) have already been described and are described in the patent specification described above.
[1530]
Ink channel fluid flow analysis
Next, the analysis of the ink flow will be described. The main ink channels 826, 827, 830, and 831 (FIGS. 207 and 141) are about 1 mm × 1 mm and are supplied to all nozzles of one color. The subchannels 833, 834, 838, 839 (FIG. 209) are about 200 μm × 100 μm, and one supplies to about 25 inkjet nozzles. Printhead through holes 843, 844, 847, 848 and wafer through holes, such as 881 (FIG. 221), are 100 μm × 50 μm and are supplied to three nozzles on each side of the printhead through holes. Each nozzle filter 882 has 8 slits, each slit has an area of 20 μm × 2 μm, and supplies one nozzle.
[1531]
The pressure requirements of the inkjet printer configured as described above were analyzed. The analysis is for a 1600 dpi 3-color process printhead for photographic printing. The print width is 100 mm, there are 6250 nozzles for each color, and there are a total of 18750 nozzles.
[1532]
In the case of full black printing, the maximum ink flow rate required for various channels is important. This determines the pressure drop along the ink channel, and therefore whether or not the printhead remains full with surface tension alone, and if not, the ink required to keep the printhead full. Determine the pressure.
[1533]
A 2.5 pI drop volume was used for 1600 dpi operation to calculate the pressure drop. The nozzle has the ability to operate faster, but the selected drop repetition rate is 5 kHz, which is suitable for printing a 150 mm long photo within 2 seconds. Thus, in extreme cases, the printhead has 18750 nozzles, all printing at up to 5000 drops per second. This ink flow extends over the entire hierarchical structure of the ink channels. Each ink channel supplies virtually a certain number of nozzles when all nozzles are printing.
[1534]
The pressure drop Δρ was calculated according to the Darcy-Weisbach equation:
Δρ = ρU2fL / 2D
Here, ρ is the density of the ink, U is the average flow velocity, L is the length, D is the hydraulic diameter, and f is the dimensionless friction coefficient, which was calculated by the following formula:
f = κ / Re
Here, Re is the Reynolds number and κ is the dimensionless friction coefficient depending on the cross-sectional area of the channel, which was calculated by the following formula:
Re = UD / ν
Here, ν is the kinematic viscosity of the ink.
[1535]
For a rectangular cross section, κ is
κ = 64 / (2/3 + (11b / 24a) (11b / 24a) (2-b / a))
Can be approximated by.
[1536]
In the equation, a is the long side of the rectangular cross section and b is the short side. The hydraulic diameter D with respect to the rectangular cross section is
D = 2ab / (a + b)
Given by.
[1537]
Ink was withdrawn from the main ink channel at 250 points in the longitudinal direction of the channel. Since the ink viscosity drops linearly from the tip of the channel and drops to 0 at the end of the channel, the average flow velocity U is half the maximum flow velocity. Therefore, the pressure drop along the main ink channel is half the pressure drop calculated using the maximum flow velocity.
[1538]
By calculating the pressure drop using these equations, the following table was obtained.
[1539]
Ink channel dimensions and pressure drop table
[1540]
[Table 203]
Figure 2001523900
The total pressure drop from the ink inlet to the nozzle is therefore about 701 Pa for cyan and yellow and 845 Pa for magenta. This is less than 1% of atmospheric pressure. Of course, if the printed image is less than full black, the ink flow (and therefore the pressure drop) will be lower than these values.
[1541]
Mold making for ink head supply unit
The ink head supply unit 14 (FIG. 1) has an outer shape of 50 μm and a length of 106 mm. It is not feasible to process injection molding tools in the conventional way. However, even if the overall shape is complex, complex curves are unnecessary. Injection molding tools can be made using conventional milling for main ink channels and other millimeter scale shapes, and lithographically made insets for fine shapes. The LIGA process can be used for inset.
[1542]
A single injection molding tool easily contains more than 50 cavities. Most of the complexity of the tool lies in the inset.
[1543]
Referring to FIG. 206, the printing system integrally forms the ink supply unit 814 and the lid 815 and integrally seals them as described above. Next, the printhead 44 is installed in the corresponding slot 850. Adhesive sealing strips 852, 853 are placed on the magenta main channel to ensure that they are properly sealed. An automatic tape bonding (TAB) strip 810 is connected to the inkjet printhead 44 and the tab bonding wire passes through the cavity 855. As can be clearly seen from FIGS. 206, 207 and 212, aperture slots 855 to 862 are provided for snapping during roller insertion. The slot "clippings in" the roller with some play, and then easily rotates the roller.
[1544]
FIGS. 213 to 217 show various perspective views of the interior of the finally assembled Artcam device, the devices being appropriately numbered:
FIG. 213 is a perspective view of the top surface of the interior of the Artcam camera, showing flattened parts;
FIG. 214 is a perspective view of the bottom side of the interior of the Artcam camera, showing flattened parts;
FIG. 215 is a perspective view of the first top surface of the interior of the Artcam camera, showing the parts housed in the Artcam;
-Fig. 216 is a perspective view of the second upper surface side inside the Artcam camera, showing the parts housed in the Artcam;
FIG. 217 is a perspective view of the second upper surface side inside the Artcam camera, showing the parts housed in the Artcam.
[1545]
Postcard print roll
Referring to FIG. 218, as one embodiment of a preferred embodiment, the output printer paper 11 includes a large number of pre-printed "postcard" type backing portions 885 on the side on which the image is not printed. The postcard section 885 includes a prepaid postage "stamp" 886, which consists of a printed certificate from the relevant postal authority and within its jurisdiction, its print roll. Is sold or used. By agreement with the postal authorities of the relevant jurisdiction, print rolls are available with a variety of postage charges. This is especially useful when foreign travelers are in domestic jurisdiction and send a large number of postcards to their own country. In addition, an address form portion 887 is provided to allow the details of destination shipping to be entered in the form of a regular postcard. Finally, a message area 887 is provided where private communications can be entered.
[1546]
Explaining the operation of the camera device with reference to FIGS. 218 and 219, FIG. 218 shows the corresponding backing surface when a series of images 890 to 892 are printed on the first surface of the print roll. There is. Thus, when each image, eg, 891, is printed by a camera, the back side of the image is already a postcard 885 and can be immediately posted to the nearest mailbox within the jurisdiction. In this way, personalized postcards can be created.
[1547]
When utilizing a postcard system as shown in FIGS. 219 and 220, it is clear that only predetermined image sizes are possible. This is because the correspondence between the postcard portion 885 on the back surface and the image 891 on the front surface must be maintained. This is achieved by utilizing the memory portion of the authentication chip housed in the print roll to store the length details of the backing form sheet 885 of each postcard. This can also be achieved by making each postcard the same size, or by storing each size in the onboard print chip memory of the print roll.
[1548]
When the Artcam camera control system utilizes pre-formatted postcards, the print roll can ensure that each image is used only to print the images so that they fit within the boundaries of the postcards. .. Of course, some "play" is given by providing a boundary region at the edge of each photo so that some misalignment can be taken into account.
[1549]
As is clear from FIG. 220, the postcard roll can be pre-purchased by the camera user when traveling within a particular jurisdiction where it is available. On the outside of the postcard roll, the country of purchase, the postage of each postcard, the format of each postcard (eg, C, H, P, or a combination of these image modes), the name of the country suitable for use, And information is printed, including postcard deadlines that may result in postage shortages after that date.
[1550]
Therefore, users of the camera device can take a picture with their handheld camera directed to the relevant scene and the image will be posted on one side and a prepaid postcard on the other side. It is possible to make a postcard for shipping by mail with the details of. You can then address this postcard, write a short message, and then immediately mail it.
[1551]
Various software designs are possible with respect to the software operation of the Artcam device, but in one design each Artcam device consists of a set of loosely coupled functional modules, each of which is provided by a single embedded application. It is made available in a coordinated manner and functions for the central purpose of the device. Functional modules are reused in different combinations in various classes of Artcam devices, and the application is specific to the Artcam class.
[1552]
Most functional modules include both software and hardware components. The software is shielded from hardware details by a hardware abstraction layer, while module users are shielded from software implementation by an abstraction software interface. Since the system as a whole is driven by user-initiated and hardware-initiated events, most modules can run one or more synchronous event-driven processes.
[1553]
Most of the important modules that make up a typical Artcam device are shown in FIG. 221. In this figure and subsequent figures, the software component is marked to the left and separated from the hardware component on the right by a vertical dotted line 901. The software aspects of these modules are described below.
[1554]
Software Module-Artcam Application 902
The Artcam application implements higher level functionality of the Artcam device. This usually involves taking the image, applying artistic effects to the image, and printing the image. In the case of a camera-oriented Artcam device, the image is captured by the camera manager 903. For printer-oriented Artcam devices, the image was captured by NetworkManager 904, and this image is probably the result of being sent by another device.
[1555]
The artistic effects are performed within the integrated file system managed by File Manager 905. The artistic effect consists of setting script files and resources. The script is translated by the image processing manager 906 and applied to the image. Scripts are typically shipped in ArtCards, known as Artcards. By default, the system uses the scripts stored in the currently installed Artcard.
[1556]
The image is printed by the print manager 908.
[1557]
When the Artcam device starts up, the bootstrap process starts various manager processes before starting the application. This allows an application to request services from various managers as soon as it is started.
[1558]
After initialization, application 902 registers itself as a handler for the events listed below. When the application receives the event, it performs the actions listed in the table.
[1559]
[Table 204]
Figure 2001523900
When the camera includes a display, the application builds a graphical user interface with the user interface manager 910, allowing the user to edit the current date and time and other editable camera parameters. The application stores all resident parameters in flash memory.
[1560]
Real-time microkernel 911
The real-time microkernel pre-schedules processes based on interrupts and process priorities. It provides integrated interprocess communication and timer services that are very close to process scheduling. All other operating system functions are done outside the microkernel.
[1561]
Camera manager 903
The camera manager provides an image capture (imaging) service. It controls the camera hardware built into Artcam. It provides an abstract camera control interface, allowing inquiries and settings of camera parameters and image capture. This abstract interface separates the application from the details of other camera implementations. The camera manager uses the following input / output parameters and commands.
[1562]
[Table 205]
Figure 2001523900
[1563]
[Table 206]
Figure 2001523900
[1564]
[Table 207]
Figure 2001523900
The camera manager runs as an asynchronous event-driven process. It contains a set of connected state machines, each state machine corresponding to one asynchronous operation. They include autofocus, flash charging, self-timer countdown, and image capture. At initialization, the camera manager sets the camera hardware to a known state. This includes setting the normal focal length and returning the zoom. The software structure of the camera manager is shown in FIG. 222. Software components are listed in the subsections below.
[1565]
Fixed focus 913
Lock Focus automatically adjusts the focus and exposure to the current scene according to the focus control mode, exposure control mode, and flash mode, and makes the flash operational if necessary. Lock focus is usually triggered by the user pressing the capture button halfway. This is part of a normal image capture sequence, but if the user holds down the capture button halfway, it will be temporally separated from the actual image capture. This allows the user to perform spot forcing and spot ranging.
[1566]
Shooting 914
Shooting (image capture) takes an image of the current scene. When the flash mode includes red eye removal, it turns on the red eye lamp, controls the shutter, triggers the flash if it is operational, and detects the image with an image sensor. It determines the orientation of the camera, that is, the orientation of the captured image, which allows the image to be properly oriented in later image processing. It also detects the presence or absence of camera movement during imaging to remove blur during subsequent image processing.
[1567]
Self-time shooting 915
In self-time shooting, the image of the current scene is shot after the countdown of the 20-second timer. It uses the self-timer LED to give feedback to the user during the countdown. In the first 15 seconds, it can turn on the LED. The LED flashes in the last 5 seconds.
[1568]
View scene 917
The view scene periodically detects the current scene through an image sensor, displays the scene on a color LCD, and provides the user with an LCD-based viewfinder.
[1569]
Autofocus 918
Eau de focus changes the focal length until the selected area of the image is sharp enough to be said to be in focus. It assumes that the area is in focus when the image sharpness metric extracted from the specified area of the image sensor exceeds a fixed threshold. It performs gradient descent with respect to the derivative of sharpness and finds the optimum focal length by changing the direction and step size as needed. If the focus control mode is multipoint auto, three areas horizontally arranged over the entire field of view are used. If the focus control mode is single point auto, one area in the center of the field of view is used. Autofocus works within the effective focal length specified by the focus controller. For fixed focus devices, this is effectively disabled.
[1570]
Auto flash 919
The autoflash determines if the illumination of the scene is dim enough to require a flash. This considers the illuminance to be sufficiently dim if the illuminance of the scene is below a predetermined threshold. The illuminance of the scene is obtained from the illuminance sensor, which extracts the illuminance metric from the central region of the image sensor. If you need a flash, charge the flash.
[1571]
Automatic exposure 920
The scene illuminance, aperture, and shutter speed determine the exposure of the captured image. The desired exposure is a fixed value. If the exposure control mode is auto, autoexposure determines the combination of aperture and shutter speed that produces the desired exposure for a given scene illuminance. If the exposure control mode is aperture priority, autoexposure determines the shutter speed that produces the desired exposure for a given scene illuminance and current aperture. If the exposure control mode is shutter priority, autoexposure determines the aperture that produces the desired exposure for a given scene illuminance and current shutter speed. The scene illuminance is obtained from the illuminance sensor, which extracts the illuminance metric from the central region of the image sensor.
[1572]
Auto-exposure works within the range of effective aperture and shutter speed specified by the aperture controller and shutter speed controller. Shutter speed controllers and shutter controllers hide the absence of mechanical shutters in most Artcam devices.
[1573]
When the flash is manually or auto-enabled, the effective shutter speed is the flash interval, which is typically 1/1000 to 1/10000 seconds.
[1574]
Image processing manager 906 (Fig. 221)
The image processing manager provides image processing and artistic effects services. It utilizes a VLIW vector processor built into Artcam to perform high-speed image processing. The image processing manager comprises an interpreter for scripts written in the Walk image processing language. Therefore, artistic effects include Vark script files and related resources such as fonts and clip images. The software structure of the image processing manager is shown in detail by FIG. 223 and includes the following modules.
[1575]
Image conversion and enhancement 921
The image processing manager executes image processing in the device-independent CIE LAB color space at a resolution suitable for the generation capability of the Artcam printer hardware. The captured image is first enhanced by filtering out noise. It is optionally done to remove the blur effect caused by the movement. The image is then CIE from a device-dependent RGB color space.
It is converted to the LAB color space. The image is rotated to offset the effects of camera rotation during shooting and scaled to working image resolution. The image is enhanced by scaling its dynamic range to the available dynamic range.
[1576]
Face detection 923
Faces are detected in images taken based on hue and local feature analysis. The list of detected face areas is used by the Vark script to apply face-specific effects such as warping and placement of callouts.
[1577]
Walk Image Processing Language Interpreter 924
Vark includes a general-purpose programming language extended with a rich set of image processing. It includes a range of primitive data types (integers, real numbers, Booleans, characters), a range of aggregate data types for constructing more complex types (arrays, strings, records), rich sets of arithmetic and logical operations, It provides conditional and iterative control flows (if-then-else, where-do), and recursive functions and procedures. It also includes a range of image processing data types (images, clip images, matte, colors, color lookup tables, palettes, dither matrices, convolution kernels, etc.), graphic data types (fonts, text, paths), image processing. It provides a set of functions (color conversion, compositing, filtering, spatial conversion and warping, illumination, text setting and rendering), and a set of higher-level artistic functions (tyling, painting, and stroking).
[1578]
The Walk program is portable in two ways. It is interpreted and therefore independent of the CPU and host image processing engine. Since it uses device-independent model space and device-independent color space, it is independent of input color characteristics, host input device resolution, output color characteristics, and host output device resolution.
[1579]
The Vark interpreter 924 parses the source statements that make up a Valk script and generates a perspective tree that expresses the meaning of that script. Perspective tree nodes correspond to program statements, expressions, sub-expressions, variables, and constants. The root node corresponds to the main procedure statement list. This interpreter executes the program by executing the root statement of the perspective tree. Each node in the perspective tree requires its children to properly evaluate or execute itself. For example, an if statement node has three children: a conditional expression node, a then statement node, and an else statement node. The if statement causes the conditional expression node to evaluate itself and the then or else statement to execute itself based on the Boolean value returned. It does not know the actual conditional representation or the actual statement.
[1580]
Most data type operations are performed during parse tree execution, but image data type operations are postponed until after parse tree execution. This optimizes the image calculation and calculates only the intermediate pixels that contribute to the final image. This allows the final image to be calculated in multiple passes by spatial subdivision, thereby reducing the amount of memory required.
[1581]
During the execution of the perspective tree, each image function only returns an image graph, in which the node represents the image operator and the leaf represents the image, with the corresponding image operator as the root and the image. It is constructed by making the parameter a child of the root. The image parameter is, of course, an image graph in itself. In this way, each sequential image function returns a deeper image graph.
[1582]
After executing the perspective tree, an image graph corresponding to the final image is obtained. This image graph is then executed in a depth-first manner (similar to any representation tree) and optimized in the following two points. (1) Only the pixels that contribute to the final image are calculated at a predetermined node. (2) The children of the node are executed in the order of minimizing the memory requirement. The image operators in the image graph are executed in an order optimized to produce the final image. Computational image operators are accelerated using VLIW processors built into Artcam devices. When the amount of memory required to execute the image graph exceeds the available memory, the final image area is subdivided until the required memory does not exceed the available memory.
[1583]
For well-constructed Vark programs, the initial optimization does not seem to be particularly effective. However, if the final image area is subdivided, the optimization can have a considerable effect. It is precisely this optimization that subdivision can be used as an effective technique to reduce memory requirements. One of the consequences of delaying the execution of image operations is that the program control flow cannot be dependent on the image content. This is because the image content is not known while the parse tree is running. In practice, this is less restrictive, but nevertheless, care must be taken during language design.
[1584]
The concept of deferred execution (or lazy evaluation) of image operations is described by Guibas and Stolfi (Guibas, LJ ,., and J. Stolfi,'&apos; A Language for Bitmap ACM; Transactions
on Graphics, Vol. 1, No. 3, July 1982
pp. 191-214). They build the image graph in the same way during the execution of the program and backpropagate the result region during subsequent graph evaluation to avoid the calculation of pixels that do not contribute to the final image. Shantis further propagates the available pixels forward during image graph evaluation (Shuntzis,
M. A. ,'&apos; A Model for Effective and Flexible
Image Computing'&apos;, Computer Graphics Processing, Annual Convention
Series, 1994, pp. 147-154). The Vark interpreter uses the more sophisticated multipath bit directional region propagation scheme proposed by Cameron (Cameron,).
S. ,'&apos; Effective
Bounds in Constructive
Solid Geometry'&apos;, IEEE Computer Graphics & Applications,
Vol. 11, No. 3, May
991, pp. 68-74). The method of optimizing the execution order to minimize memory usage is derived from Shantis, but is based on standard compiler theory (Aho,
A. V. , R. Sehi, and J. et al. D.
Ullman, &apos;'Generating Code from DAGs' &apos;, in Companies: Principles, Technologies, and Tools,
Addison-Wesley, 1986, pp. 557-567). The Walk interpreter uses a more sophisticated scheme than Shantiss, but supports variable size image buffers. Subdividing the resulting region in combination with region propagation to reduce memory usage is derived from Shantis.
[1585]
Printer Manager 908(Fig. 221)
The printer manager provides an image printing service. It controls the inkjet printer hardware built into Artcam. It provides an abstract printer control interface, allows printer parameters to be queried and set, and prints images. This abstract interface separates the application from the details of the printer implementation and contains the following variables:
[1586]
[Table 208]
Figure 2001523900
[1587]
[Table 209]
Figure 2001523900
[1588]
[Table 210]
Figure 2001523900
[1589]
[Table 211]
Figure 2001523900
The printer manager runs as an asynchronous event-driven process. It contains a set of connected state machines, each state machine corresponding to one asynchronous operation. These print the image and automatically mount the print roll. The software structure of the printer manager is shown in FIG. 224. Software commands will be described later.
[1590]
Print image 930
The print image prints the supplied image. It uses a VLIW processor circuit to prepare the image for printing. The VLIW processor circuit converts the image color space into device-specific CMY and produces halftone bi-level data in the format expected by the printhead.
[1591]
The paper is drawn into the lip of the print roll so that the print roll can be removed during printing, and the nozzles can be capped to prevent ink leakage and drying. Before the actual printing starts, the nozzles are therefore uncapped, cleaned and the paper is advanced to the printhead. The printing itself transfers line data from the VLIW processor, prints the line data, and advances the paper until the image is completely printed. After printing is complete, the paper is cut by a cutting machine, pulled into a print roll, and the nozzles are capped. The remaining media length is updated with the print roll.
[1592]
Print roll automatic mount 131
The print roll automount responds to the loading and unloading of print rolls. It generates a print roll attach / detach event, which is processed by the application and used to update the status display. The print roll is authenticated according to the protocol between the authentication chip incorporated in the print roll and the authentication chip incorporated in the Artcam. If the print roll fails to authenticate, the print roll is rejected. Various information is extracted from the print roll. Paper and ink properties are used during the printing process. The remaining media length and fixed page size of the media are in any case published by the print manager and used by the application.
[1593]
User Interface Manager 910(Fig. 221)
The user interface manager is shown in detail by FIG. 225 to provide a user interface management service. It includes a physical user interface manager 911 that controls status display and input hardware, and a graphical user interface manager 912 that manages a virtual graphical user interface on a color display. The user interface manager translates virtual and physical inputs into events. Each event is queued to the event queue of the process registered for that event.
[1594]
File manager 905(Fig. 222)
The file manager provides a file management service. It provides an integrated hierarchical file system, in which the file system of all mounted volumes appears. The primary removable storage medium used in Artcam is ArtCard. The Artcard is printed in high resolution by blocks of binary dots, which directly represent error-tolerant Reed-Solomon-encoded binary data. The block structure supports append and append-rewrite in a suitable read-write ArtCard device (not initially used in Artcam). At a higher level, ArtCard may include an extended write-rewritable ISO 9660 compliant CD-ROM file system. The software structure of the file manager, and in particular the ArtCard device controller, is shown in FIG. 226.
[1595]
Network manager 904(Fig. 222)
Network Manager provides consumer electronics networking services on a variety of interfaces, including infrared (IrDA) and general purpose serial buses (USB). It allows the Artcam system to share captured images and receive images for printing.
[1596]
Clock manager 907(Fig. 222)
The clock manager provides date and time clock services. It utilizes a battery-backed real-time clock built into Artcam and controls it to the extent that it automatically adjusts clock fluctuations based on automatic calibration performed when the user sets the time.
[1597]
Power management
When the system is not in use, the system goes into a dormant power state where periodic scanning of input events takes place. Input events include pressing a button or inserting an ArtCard. As soon as an input event is detected, the Artcam device returns to the operating power state. The system then handles the input event as usual.
[1598]
The hardware associated with an individual module is typically in a distressed power state, even when the system is in an operating power state. This reduces overall power consumption and allows particularly wasteful hardware components such as printer paper cutters to monopolize power during operation. The camera-oriented Artcam device is in imaging mode by default. That is, the camera is in an operating state and other modules such as a printer are in a dormant state. That is, the application must explicitly suspend the camera module when a function other than the camera is activated. Other modules will voluntarily pause when in a standby state.
[1599]
Watchdog timer
The system generates a periodic, high-priority watchdog timer interrupt. The interrupt handler resets the system if it determines that the system has not progressed since the last interrupt, that is, the system has failed.
[1600]
Alternative print roll
In another embodiment, an improved form of print roll is provided that can be constructed in large part by injection molded plastic parts that are properly and easily fitted into one. The improved form of the print roll has a slightly simplified structure and an increased ink storage capacity. The print media on which the image should be printed is wrapped around a plastic sleeve former to simplify the structure. The ink medium reservoir has a series of vents structured to minimize the possibility of ink flowing out. In addition, a rubber seal is provided in the ink outlet hole, which is punctured when the print roll is inserted into the camera system. In addition, the print roll includes a print media ejection slot, which has a peripherally molded surface on which the print media ejection slot is accurately positioned with respect to the print or printhead in the camera system. Assist in being placed in.
[1601]
Next, referring to FIGS. 227 to 231, FIG. 227 shows the assembled single point roll unit 1001 which is partially cut to show the inside of the print roll. 228 and 229 are exploded perspective views on the left and right sides, respectively. 230 and 231 are enlarged perspective views of the inner core portion 1007 of FIGS. 227 to 229.
[1602]
The print roll 1001 is built around an internal core portion 1007 that includes an internal ink replenishment portion. A former 1008 is provided on the outside of the core portion 1007, and a paper or film supply 1009 is wrapped around the former. Two cover parts 1010 and 1011 are provided around the paper supply and snap together around the print roll to form a cover unit as shown in FIG. 227. The lower cover component 1011 includes a slot 1012 through which the output of the print media 1004 interconnects with the camera system.
[1603]
Since two pinch rollers 1038 and 1039 are provided to press the paper against the drive pinch roller 1040, they together remove the paper curl around the roller 1040. This curl removal acts to counteract the strong curls that are applied to the paper stored in the form of print rolls over a long period of time. Rollers 1038 and 1039 are provided to snap fit the ends of the cover base 1077 and rollers, and the rollers 1040 include a geared end 1043 for driving and snap fit to the upper cover component 1010. Then, tighten the paper 1004 firmly between them.
[1604]
The cover component 1011 includes an edge ridge or lip 1042. The edge lip 1042 is provided to align the paper exit hole with the corresponding print thermal platen structure in the camera system. In this way, the existing paper is accurately aligned or positioned with respect to the nearby printhead and completely guides the paper to the printhead.
[1605]
With reference to FIGS. 230 and 231 shows an exploded perspective view of an internal core portion that can be formed from an injection molded part, the core portion centered on three core ink cylinders having internal sponge portions 1034 to 1036. It has been placed.
[1606]
A series of ventilation channels, such as 1014 to 1016, are provided at one end of the core. Each ventilation channel 1014 to 1016 interconnects a first hole, eg, 1018, with an external contact 1019, the external contact being interconnected with the atmosphere. Ventilation channels, such as passages followed by 1014, are preferably of a winding nature and are winding here and there. The ventilation channel is sealed by a portion of the sealing tape 1020, which covers the edge of the core portion. The surface of the sealing tape 1020 is preferably treated hydrophobically to increase its hydrophobicity, thus preventing fluid portions from entering the ventilation channels.
[1607]
A rubber sealing cap 1023 containing three thickened portions 1024, 1025 and 1026 is provided at the second end of the core portion 1007, and each thickened portion has a series of sparse holes. For example, portion 1024 includes sparse holes 1029, 1030 and 1031. The sparse holes are arranged so that one hole from each of the separate thickened portions is aligned with one straight line. For example, the sparse holes 1031, 1032 and 1033 (FIG. 230) are all lined up in a single line, with each hole coming from a separate thickened portion. Each of the thickened portions is paired with the corresponding ink supply reservoir and fluid communicates with the corresponding reservoir when the three holes are punctured.
[1608]
The end cap unit 1044 is attached to the core 1007. The end cap 1044 includes an aperture 1046 for inserting the authentication chip 1033, and further includes an extended adapter (not shown) containing three protrusions, the three protrusions corresponding holes (not shown). For example, it penetrates 1048), punctures a thickened portion of seal 1023 (eg, 1033) and interconnects with a corresponding ink chamber (eg, 1035).
[1609]
Further, an authentication chip 1033 is inserted into the end 1044, and the authentication chip is provided to authenticate access to the print roll camera system. Therefore, the core is divided into three separate chambers, each chamber containing a different color of ink and an internal sponge. Each chamber contains an ink outlet at the first end and a vent at the second end. The cover of the sealing tape 1020 is provided to cover the ventilation channel, and the rubber seal 1023 is provided to seal the second end of the ink chamber.
[1610]
The internal ink chamber sponge, and hydrophobic channels make the print roll available in a mobile environment and in a wide variety of orientations. Further, since the sponge can be hydrophobized by itself, the ink can be expelled from the core portion in order.
[1611]
A series of ribs (eg, 1027) can be provided on the surface of the core to minimize frictional contact between the core 1007 and the print rollformer 1008.
[1612]
Most parts of the print roll can be composed of injection molded plastic, which has a large internal ink storage capacity. The simplified structure includes a paper curl removal mechanism and ink chamber vents to minimize leaks. The rubber seal provides an efficient passage to and from the ink supply chamber, thus increasing operational capability.
[1613]
Artcard is, of course, used in a variety of other environments. For example, Artcard can be used in both embedded and personal computer (PC) applications and provides an easy-to-use interface to large amounts of data or configuration information.
[1614]
As a result, a large number of applications are expected. For example, the ArtCard reader may be attached to a PC. PC applications are diverse. The simplest application is a low-cost read-only distribution medium. The ArtCard is printed and gives an audit trail if used for internal data distribution.
[1615]
In addition, PCs are often used as the basis for closed systems, but there are numerous configuration options. Rather than relying on the complex operating system user interface, simply inserting the ArtCard into the ArtCard reader can meet any configuration requirement.
[1616]
The back side of ArtCard has the same visual appearance regardless of the application (because it stores the data), but the front side of ArtCard is application dependent. The surface is understood by the user in the context of the application.
[1617]
Therefore, the device of FIG. Z35 efficiently distributes information in the form of books, newspapers, magazines, technical manuals, and the like.
[1618]
In a further application, as shown in FIG. Z36, the surface of the Artcard 80 displays an image containing the artistic effect applied to the sample image. It is possible to prepare a camera system 81 including a card reader 82 that reads the programmed data on the back surface of the card 80, and apply algorithmic data to the sample image 83 to generate an output image 84. The camera unit 81 includes an on-board inkjet printer and sufficient processing means for processing the sample image data. A further application of the ArtCard concept is called BizCard, which stores company information on business cards. BizCard is a new concept of company information. The surface of bizCard is exactly the same as today's ordinary business cards in terms of appearance and function, as shown in Figure Z37. It includes photos and contact information, and has a wide variety of card styles, similar to business cards. However, the back side of each biZCard contains a printed array of black and white dots and holds 1 to 2 megabytes of information about the company. The result is the same as a 3.5-inch diskette storage device attached to each business card.
[1619]
The information may be any information desired by the bizCard owner, such as company information, specific product sheets, website pointers, email addresses, biography, etc. BizCard can be read by any ArtCard reader, such as a PC-attached card reader that can be connected to a standard PC using a USB port. BizCard may be displayed as a document on a dedicated embedded device. In the case of a PC, the user only has to insert the bizCard into the reader. bizCar is preferably navigated using a regular web browser, just like a website.
[1620]
By accommodating the owner's photo and digital signature along with a pointer to the company's public key, each biZCard is a person who is truly the person and who actually works for the designated company. Can be used to electronically verify that. Moreover, by pointing to the company's public key, biZCard can easily initiate secure communications.
[1621]
A further application, called TourCard, is an ArtCard application that stores information for travelers and visitors to a city. When the tourCard is inserted into the Artcard book reader, the information can take the form:
*map
* Public transportation timetable
* Famous places
* Local history
* Events and special events
* Restaurant information
*Shopping center
TourCard is a low-cost alternative to tourist brochures, guidebooks, and street corner guides. If the manufacturing cost is only 1 penny per card, tourCard can be distributed free of charge at tourist information centers, hotels, and tourist destinations with minimal cost or advertising funding. Book reader portability makes this the perfect solution for travelers. TourCard can also be used in information kiosks where a computer equipped with an ArtCard reader can decrypt information encoded in tourCard on any web browser.
[1622]
The interactivity of the book reader makes tourCard very versatile. For example, a hypertext link stored on a map can be selected to display the historical story of the feature building. In this way, travelers can go on guided tours of the city, and relevant transportation routes and timetables are always available. tourCard eliminates the need to separate maps, guidebooks, timetables, and restaurant guides, creating a simple solution for each individual traveler. Of course, there are many other possibilities for data cards. For example, newspapers, learning guides, pop group cards, baseball cards, timetables, music data files, product parts, advertisements, TV guides, movie guides, trade fair information, magazine coupon cards, recipes, job advertisements, medical information, programs. And software, horse racing newspapers, electronic newspapers, annual reports, restaurant guides, hotel guides, vacation guides, translation programs, golf course information, news broadcasts, comics, weather details, etc.
[1623]
For example, ArtCard may include the contents of a book, or the contents of a newspaper. An example of such a system is shown in FIG. Z35, where the ArtCard 70 contains the title of the book on one side and the coded content of the book printed on the other side. The card 70 is inserted into the reader 72, which may include a flexible display 73 that allows the card reader 72 to be folded. The card reader 72 includes a display control unit 74, which allows movement to the previous page, movement to the next page, and other controls of the card reader 72.
Special use of art cards
Technical description
Description of Technology 04
[1624]
In a further improvement, the art cam device will be appropriately modified to be equipped with a microphone device and related recording techniques. When a picture is taken, you are given the opportunity to record either the surrounding sound environment or the message associated with the image. Then, the recorded voice is printed on the back side of the output photograph in the encoding format. It is desirable that the encoding has high resilience. The recorded audio provides a permanent audio recording related to the photo. The playback device is then provided to scan the encoded audio and decode this information.
[1625]
Here, with reference to FIG. 233, a further improvement 1601 of the art cam array is shown in schematic form, in which image 1602 is detected by the CCD sensor 1603 and transferred to the art cam central processor 1604, which has significant computational resources. It is supposed to be done. The art cam central processor 1604 can store images in memory 1605, which preferably comprises high speed RAMBUS® coupled to memory. The ArtCam central processor 1604 also controls the drive of the printhead 1606 for printing full-color photographs, such as 1607, in order to provide instant photographs on demand.
[1626]
In a further improvement, the camera organization 1601 also includes a sound chip 1610, which is connected to memory 1605 via RAMBUS 1611 under the control of ACP processor 1604. The sound chip 1610 can be in standard or dedicated format and may include, for example, a DSP processor that captures analog input 1612 from sound microphone 1613. Alternatively, as the complexity of the chip increases (Moore's Law), the functionality of the sound chip 1610 can be incorporated into the ACP chip 1604, which comprises a state-of-the-art CMOS integrated circuit chip. Is preferable. It will be readily apparent that many other types of knitting can be provided that fall within the scope of the present invention.
[1627]
The sound chip 1610 converts the analog input 1612 into the corresponding digital format and transfers it for storage in memory 1605. The recording process can be activated by pressing a button (not shown) on the camera device, otherwise the button is under the control of the ACP processor 1604 and the recording process is substantial when taking a picture. Can be automated. The recorded data is stored in the memory 1605.
[1628]
With reference to FIG. 234, the camera organization preferably has a printer device 1606 composed of two printheads 1615, 1616, the first printhead 1615 being used to print an image on print media 1617, and the first The print head 1616 of 2 is used to print information on the back surface of the print medium.
[1629]
Referring to FIG. 235, the output of the sample to the back surface of the photographic media 1617 is shown. The output was printed by the printhead 1616 of FIG. 234. The information can include location, date and time data 1620. Location data is then provided by keyboard input or by the use of ancillary positioning systems such as GPS and the like. The information 1620 is presented in a visible format for the user to maintain a record of the printed image. What is important is that the back side of the image 1617 is also printed with audio information 1622 in encoded format. Although the encoding format can be diverse, the encoding is preferably performed in a highly fault tolerant manner so as to tolerate scratches, stains, writing, wear, rotation, fading, and the like. FIG. 236 shows a portion of the data 1625 in schematic form, the data having a sequence of dots printed by the printhead 1616 of FIG. 234. The disclosed method stores about 2.5 megabytes of arbitrary data on the back of the photo and can include audio data in this special case. The coding format relies heavily on the use of Reed-Solomon coding of the data and provides high fault tolerance. In addition, a high frequency "checkerboard-like" pattern is added to the data to aid in image detection, as shown in FIG. 236. A data section 1625 is shown in schematic format in FIG. 236 such that the data includes a sequence of dots printed by the printhead of FIG.
[1630]
When it is desired to "reproduce" the recorded voice, the photo 1617 is moved so as to pass through the reading device 1626. The reading device 1626 has a pinch roller, and the pinch roller rotates with the photograph sandwiched so that the photograph passes through the CCD linear sensor device 1627.
[1631]
With reference to FIG. 238, a schematic format showing the operation of the voice reading device 1626 of FIG. 237 is shown. The CCD linear sensor 1627 is connected to a second art cam central processor 1628, which is appropriately adapted to read and decode the data stored on the back of the photo. The decoded audio information is stored in the memory 1632 for reproduction by the speaker 1629 via the sound processing chip 1633. The sound processing chip 1633 can operate under the control of the ACP decoder 1628, which operates under various user input controls 1633 that can include volume control, rewinding, playback and fast forward control.
[1632]
Importantly, as described above, the CCD linear sensor 1627 and the ACP decoder 1628 perform the reading process as if the information were printed on the back of the art card.
[1633]
As can be seen from the above description of the preferred embodiment, a system for automatic recording of audio associated with the output image is provided, just as it provides audio recording associated with photography. A voice reading system for reading the image output on the back of the photo is also disclosed.
Description of Technology 06
[1634]
In a further improvement, the aforementioned art cam includes a device for automatically determining the orientation of the camera used for later generation of digital images. The art cam is then properly programmed to utilize orientation information for image generation.
[1635]
By the way, many examples of using orientation information are described with reference to the accompanying drawings. With reference to FIG. 239, a first portrait photo 1801 is shown, in which information related to the portrait 1801 such as date and shooting location information input to the camera system is arranged. Area 1802 is provided for this purpose. Further, it is expected that the portrait 1801 may be processed by an image processing technique that deforms a particular visible portion of the image, such as a face. These variations depend on the orientation of the camera that captures photo 1801. Also shown in FIG. 239 is a second portrait mode image 1803 used in portrait mode with the camera rotated. Unfortunately, if the image data 1802 of the landscape mode image 1801 is in the same position, the data will appear in the unwanted region 1805 in the last image. Ideally, when a picture is taken in portrait mode, certain information in the image should appear at location 1806. It should be noted that the image processing effects that are right-angled, anisotropic, and given to the image in a particular way of the image content will be wasted when the image is rotated.
[1636]
The orientation sensor 1846 detects the orientation, and the detected orientation is converted by the ACP1831 to the corresponding digital orientation angle. The area image sensor 1802 detects an image taken by the camera, and the image is transferred to the ACP 1831 and stored in the memory storage device 1833. The detected orientation is then used to determine whether the captured image is in portrait mode or landscape mode. The detected image is read from the memory storage device 1833 and rotated before being output to the memory storage device 1833 again. The final result is a rotated image 1808. In addition, other techniques for utilizing the detected orientation information can be mentioned. For example, the detection image stored in the memory storage device 1833 can be stored in association with the orientation information, and the orientation information is used for conventional rotation matrix mapping, world coordinate system and local coordinate system mapping. .. A computer graphics algorithm that processes the information can then use the coordinate system while processing the image to manipulate it in a rotational direction. If position detection information (eg, reference numeral 1806 in FIG. 239) is incorporated into the image, the text can be oriented correctly. In addition, camera orientation can be used in algorithmic techniques that identify the image applied to the image, such as face detection. Since the position of the face is roughly known, the use of orientation information greatly simplifies the face detection algorithm.
[1637]
The orientation sensor can include a simple and inexpensive gravity switch, such as a Mercury sensor, or it can be a more complex, smaller device, such as a micromachine silicon accelerometer.
Description of Technology 07
[1638]
In addition, other forms of print rollers can be configured. With reference to FIG. 241, other sequences of print rolls, such as those used in modified versions of the devices described above, are schematically shown. Importantly, the disposable print roll (eg, 1910) comprises an "extended leaf portion 1911" having a sponge portion 1912 that allows ink to be collected. Therefore, the sponge portion 1912 is arranged below the printhead during operation to allow printing by the printhead on the edge of the film or paper conveyed across the printhead.
[1639]
The sponge portion 1912 forms part of the disposable print roll 1910 and is removed from the camera when the print roll is used up, thereby removing excess unwanted ink from the print head.
Description of Technology 08
[1640]
In a further embodiment, autofocus is performed by processing the CCD data stream to ensure maximum contrast. Techniques for determining the focal position based on the CCD data stream are known. For example, "The Encyclopedia of Photogramy" published by Butterworth-Heinemann in 1993 and edited by Leslie D Stroebel and Richard Zakia, and "Applied Photograph" in London and "Applied Photograph" in 1988. There is. These techniques first measure the contrast between adjacent pixels that cover part of the input image. The image is processed by the ACP to determine the exact autofocus setting.
[1641]
This autofocus information is used by the ACP when trying to locate a face in a particular mode, eg, in an image, simplifying the face position detection process by guiding the approximate size of the face in the image. It has become.
[1642]
Referring to FIG. 242, a sample 2001 of a method used to characterize a general image for investigation by a face detection algorithm is shown.
[1643]
For example, various images such as 2002, 2003, 2004 are acquired by the camera device. Focus setting details are stored in the ACP as a by-product of the autofocus operation. In addition, the current position of the zoom motor is also used (2006). All of these settings are determined by the ACP. Next, before outputting an image containing objects (objects of interest) in the image, which are sized according to the approximate depth location, ACP applies analytical technique 2008 to the detected values. ..
[1644]
Next, in order to find the position of the object in the image, the depth value is used in the face detection algorithm 2010 of ACP2031 in addition to the input detection image 2011. A short-distance value 2009 indicates a high possibility of a portrait image, a medium-distance value indicates a high possibility of a group photograph, and a long-distance value indicates a high possibility of a landscape image. This potential information can also be used for face detection purposes, producing "painted" effects in images, along with other techniques and clip art that are applied depending on the distance to the object. It can be used to select various parameters when drawing or drawing an image.
Description of Technology 09
[1645]
In a further embodiment, the art cam device can be modified to have an eye position sensor that detects the eye position at that time. The detected eye position information is used to process a digital image taken by a camera in order to perform correction, deformation, or the like according to the detected eye position.
[1646]
The configuration of the eye position sensor is known to those skilled in the art and is used in many product cameras (especially Canon cameras). The eye position sensor relies on the viewfinder's irradiation of the viewer's eyes with infrared light and the reflections detected and used to determine the approximate eye position.
[1647]
Referring to FIG. 243, the eye position information 2110 and the image 2111 are stored in the memory of the art cam, processed by the ACP (2112), and the processed image is output by the printhead for printing as a photograph. To. The form of image processing 2112 can be significantly changed depending on the eye position information 2110. For example, in the first form of image processing, to detect the position of a face in an image and apply various graphic objects (eg, blowouts that are generally offset in relation to the face). , The face detection algorithm is applied to image 2111. An example of such a process is shown in FIG. 244, where the first image 2115 shows three humans. By applying the face detection algorithm, three faces 2116, 2117, 2118 are detected. The eye position information is then used to select the face closest to the estimated eye during the frame. In the first example, the balloon is placed relative to the head 2116. In the second example 2120, the balloon is arranged with respect to the head 2117, and in the third example 2121 the balloon is arranged with respect to the head 2118. Therefore, in order to place the callout characters above a given face in the image, the art card is provided to include a coded form of the callout application algorithm and a processed image.
[1648]
It is easily understood that eye position information can be used to process image 2111 in many different ways. Focusing effects can be applied locally or in specific ways to give specific deformations to faces and objects. In addition, the image processing performed involves the artistic rendition of the image, which rendition involves applying artistic paintbrush techniques. The artistic brushing method can be applied in a particular way according to the eye position information 2110. The final processed image 2113 may be printed on demand. Further images are taken and different eye positions are detected and used to generate different output images.
Description of technology 10
[1649]
In a further improvement, the art cam has been reconfigured to have an automatic exposure sensor to determine the level of brightness of the captured image. This automatic exposure sensor is used to process an image according to a set exposure amount in order to enhance a part of the image.
[1650]
Desirably, the area image sensor has a device for determining the state of light when taking an image. The area image sensor adjusts the value of the dynamic range acquired by the CCD according to the detected level. The acquired image is sent to the ArtCam central processor and stored in the memory store. The intensity information measured by the area image sensor is also transferred to the ACP. This information is used by the ACP to give a particular effect to the stored image.
[1651]
Referring to FIG. 245, the automatic exposure setting information 2201 is used in connection with the stored image 2202 in order to process the image by ACP. The processed image is later returned to memory for printing 2204 on the printer.
[1652]
A number of processing steps can be performed according to a given light condition. When the auto-exposure setting information 2201 indicates that the image was taken in a dark place, the pixel colors of the image are selectively remapped in order to make the color of the image stronger, deeper, and more vivid. ..
[1653]
If the auto-exposure information indicates that the picture is taken in a bright state, the color of the image is processed to be brighter and more saturated. The recoloring of the image can be done by converting the image to a hue / saturation / brightness (HSV) format and changing the pixel values as required. The pixel value can be converted into a print output color format and output.
[1654]
Of course, many different recoloring techniques may be used. Those techniques are preferably clearly demonstrated on the art card inserted into the reader. Alternatively, the image processing algorithm can be automatically applied and incorporated into the camera for use in certain conditions.
[1655]
Alternatively, the inserted art card can have many treatments, limited to auto-exposure settings, that apply to the image. For example, a dark image can be inserted with clip art containing candles and the like, and a bright image can be inserted with a large sun.
Description of technology 11
[1656]
Eliminating the effects of "red eye" on the acquired image as a result of using the flash is one of the important processes. Referring to FIG. 246, in a further improvement, the image acquired by the CCD apparatus undergoes processing step 3 to form an output image processed for printing if a flash was used. With reference to FIG. 247, one special image processing algorithm 2310 that can be used if a flash was used in the acquisition of the image by the CCD device is shown in more detail. The algorithm is preferably used only when the flash is used to capture the image by the CCD (2311). The purpose of the algorithm is to reduce the impact of the use of flash on the image. The effects of such images can include the well-known "red-eye" effect that individual eyes appear red in photographic images. In addition, other effects such as reflection of the flash light from the reflecting surface can be separately processed by using another algorithm. The first step in eliminating the effects of red eye on the image is to determine the face in the image (2312). After some other image quality enhancement or color correction, the face detection process is performed by determining the proximity range on a map of HSV values for human face color under normal light. Various simple tests are performed on the detected range, including determination of eyes, mouth, overall shape and overlap. The simple test can produce results about facial potential and, above the threshold, can determine the position of the face in the image.
[1657]
When the face is determined in the image (2312), the position of the eyes is found in the face (2313). Then, in order to determine whether or not the red-eye removal process is necessary, a process for determining a special range of colors is performed individually for each eye. If red-eye removal is required, it is modified for the eye area to reduce redness while avoiding any discontinuities or possible unnaturalness in the output image. The algorithm is applied. Of course, many different techniques are used, including the Gaussian degree form around the center of the eye. Finally, the image is written to the back of the memory store 2333 in an updated format (2316).
[1658]
Desirably, at this point, other correction algorithms are used, including remapping the colors affected by the spectral characteristics of the flash light. Alternatively, the inserted art card may perform many processes applied to the image (processing to identify the flash settings). For example, a clip art such as a candle or a light globe may have a flash or a large sun inserted in an image without any flash.
Description of technology 12
[1659]
In a further improvement, a second inkjet is provided for printing on the back side of the photo. FIG. 248 shows a schematic of a standard sequence. A printhead 2402 is provided for printing a photo on paper 2403 sandwiched between rollers (eg, 2404). An alternative 2410 is shown in FIG. 249 according to an embodiment comprising two inkjet printheads 2402 and 2411. The printhead 2411 is provided to print important information related to the photo on the back side of the photo 2403. For example, the time and date when the picture was taken can be printed on the back side by the inkjet printhead 2411. In addition, the art cam device may be equipped with a global positioning sensor. The sensor may be used to determine where the photo was taken by the data retrieval by the ArtCam central processor. This additional information may also be printed on the back side of the photographic output 2403.
Description of technology 13
[1660]
Print rolls are provided in a tightly rolled form. Unfortunately, as a result of tightly wrapping the print roll, the characteristics of the print media may result in excessive curl in the photos output by the ArtCam system.
[1661]
With reference to FIG. 250, another array of print rolls is shown that provides a system with three roller arrays 2511-2513. The roller arrangement gives the print media 2514 out of the print roll a firm anti-curl. The three rollers 2511-2513 sandwich the media 2514 and give the paper anti-curl before being transported to the printhead 2516 by a pinch roller (eg, 2517). The three rollers 2511-2513 can be arranged inside a print roll case or art cam device.
Description of technology 15
[1662]
With reference to FIG. 251, for further improvement, it is desired to create a photographic image that is shown to the observer 2703 with a three-dimensional or pseudo-three-dimensional effect. These effects can be obtained by recording two images in close proximity at the same time, giving the first image to the observer's right eye 2704 and the second image to the observer's left eye 2705. it can. A three-dimensional effect can be created by recording images for the left and right eyes, and then showing the left stereoscopic image to the left eye and the right stereoscopic image to the right eye. ..
[1663]
In a further improvement, a series of lenticular transparent columns that capture images of the left and right eyes will make the photographic or stereoscopic image 2702 more pronounced, as follows:
[1664]
With reference to FIG. 252, a cross-sectional view of the surface portion of the photographic paper 2702 is shown. As is apparent in cross-sectional view 2710, the photographic paper has a series of lenticular rows designed to allow left and right stereoscopic viewing. The image is printed on the bottom surface 2712 of the transparent photographic paper 2710.
[1665]
The pitch 2713 of one pixel is 80 μm, and the dot arrangement pitch 2714 is 20 μm. Therefore, four dots 2714-2717 are arranged per pixel. The two dots 2714-2715 are prepared for the left stereoscopic view and the two dots 2716-2717 are prepared for the right stereoscopic view. The right eye looking at the photographic paper acquires an image of pixel dots 2716, 2717 on the right side (2720, 2721), and the left eye acquires an image of dots 2725, 2726 on the left side (2723, 2724). Therefore, the two images are shown separately to each eye, resulting in a physical photographic effect. A physical photographic effect mainly due to the lens-like outer shape of each column, such as 2711.
[1666]
Here, referring to FIG. 253, a perspective view of the lower surface portion of the paper 2710 is shown. The explanatory view of FIG. 253 includes a drawing line to show the dot pitch of each dot 2730, in addition to the pitch of the pixel having the four dots 2731-2734. As is clear from FIG. 253, each pixel is composed of four dots, two dots 2731-2732 prepared for right stereoscopic viewing and two dots 2733-2734 prepared for left stereoscopic viewing. Will be done. Since the dots, for example, 2730, are arranged on the print media 2710, correct stereoscopic viewing is performed when the media is turned inside out.
[1667]
Here, with reference to FIG. 254, one method of capturing a stereoscopic image will be discussed. Desirably, two images are captured by the CCD couplers 2740, 2741 arranged in the portable camera device. Each CCD device 2740, 2741 acquires separate images, and these separate images should be combined in the three-dimensional processing unit 2742 in a left-right alternating manner as shown in FIG. 235. When the images are correctly alternated in the 3D processing unit 2742, the images are sent to the print engine 2743 and the printhead 2744 to print the images on the surface 2746 of the photographic paper 2710.
[1668]
The current position of the photo paper 2710 is detected by the alignment unit 2750, and the current position is fed back by the print engine 2743 for control of the print head 2744. The position is determined by the LED type device 2780 illuminating the lenticular surface of the print media 2710 and the photoconductor 2781 on the opposite side of the print media 2710 measuring the periodic change in brightness.
[1669]
With reference to FIG. 255, the operation of the alignment unit, indicated by the dashed line 2750, is further described here. The photo paper 2710 is sandwiched between rollers 2751,272, and the roller 2752 is configured to have a surface that coincides with the lenticular surface 2754 of the photo paper (print media) 2710. Since the period of the lens of the photo paper 2710 is on the order of 2780 mm, the surface of the roller 2752 is exaggerated like the lens-like surface of the photo paper 2710. The precise cycle of the lenticular photographic paper means that the roller 2752 can be used in other forms of print media as well.
[1670]
The surface of the roller 2752 ensures that the print media 2710 maintains a constant spatial relationship with the roller 2752. Therefore, the print rollers 2751,2752 are monitored by the alignment unit 2750 under the control of the print engine 2743 so that the rollers 2752 rotate on demand and thereby convey the print media 2710 through the printhead 2744. It is driven while being done. As a result, the alignment of the dots printed by the printhead 2744 with the lenticular row is maintained.
[1671]
When the print media 2710 is conveyed so as to pass through the print head, the print head 2744 can print a stereoscopic image. As the print head 2744, a full page width print head is desirable.
[1672]
Of course, it is also possible to determine the current position of the print media 2710 associated with the printhead 2744 by another device.
[1673]
Referring to FIG. 256, a camera device is provided in accordance with the principles of the proposed embodiment by combining a printer roll 2760 with a suitable shaped lenticular paper 2761 and a corresponding ink supply (not shown). obtain. The paper 2761 is taken out from the print roller 2760 to the printing device 2764 by the pinch rollers 2763 and 2763. The printing apparatus 2764 further includes pinch rollers 2765, 2766, cutter 2767, platen 2769, pinch rollers 2751, 752, and a print head 2744. The stereoscopic image is printed by the printhead 2744, and the paper 2761 is taken out after being cut by the cutter 2767. Its output 2770 is in transparent form.
[1674]
With reference to FIG. 257, a flat white surface 2771 can be attached onto the image discharge 2770. This is accomplished by the use of an adhesive surface to which the transparent 2770 is applied. Subsequently, the left and right stereo images are generated and the images are visually recognized through the lens system as shown in FIG. 251 so as to give a three-dimensional effect to the captured image. The camera system depicted in FIG. 256 is ideally portable so that a photograph can be taken and immediately taken to the desired location.
Description of technology 17
Description of technology 21
[1675]
In a further improvement, the image media that is tightly rolled and stored is treated to have an anisotropic rib structure and is suitable for carrying in rolls to view the image printed on the print media. Occasionally, the degree of curl of the print media is reduced.
[1676]
Here, with reference to FIG. 259, the print media 3311 treated according to the essence of this improvement is shown (3310). The print media 3311 is composed of a flat plastic film, although other forms are suitable. The print media 3311 is pretreated to have a polymeric ribbed structure 3312, as shown in the enlarged view of FIG. 259, with an actual row pitch of about 200 m. Therefore, one surface of the print media 331 is processed so as to have a series of rows 3312 running up and down the entire length of the print media 331. The cross section of the column 3312 is shown in an enlarged view in the figure.
[1677]
The advantage of using a series of rows 3312 is apparent when a force 3313 is applied to the surface portion of the print media 3311. The row 3312 allows the print media 3311 to be tightly wound, while resisting the print media 3311 being wound in the direction of 3316. Therefore, any force applied 3313 is likely to be transmitted in both directions of 3315 and 3316. The anisotropic nature of the media 3311 is provided by the ribs 3312, which function to provide support in both directions of the 3315 and 3316, thereby limiting the curl of the media 3311. Also, the anisotropic strength of the material is allowed to be stored in strength along the central axis of the roll.
[1678]
Referring to FIG. 260, the image on media 3310 is reduced by simply holding the image 3311 in the user's hands 3320, 3321 and applying a slight pressure to points 3324, 3325 to reduce the effect of curling. You can see it.
[1679]
Of course, anisotropic media can be produced using many techniques when the media contains a plastic material. For example, it can be manufactured by an extrusion molding method. Alternatively, other techniques may be utilized. For example, one manufacturing method is schematically shown in FIG. 261 (3340). In this method, the media 3341 is pressed between the rollers 3342 and 3343. As shown in FIG. 261 (a), the roller 3343 has a flat surface, and the roller 3342 has a jagged surface 3345. For illustration purposes, the sawtooth outline is enlarged in FIG. 261.
[1680]
If the media is not suitable for use in such a process 3340, the anisotropic media is provided by utilizing the faces of two films bonded together. Such a process 3350 is shown in FIG. 262. The first surface 3351, for which an image is desired to be printed, is attached to the second surface 3352 as required by a method such as an adhesive or heat fusion.
[1681]
In addition, other methods of manufacturing print media are possible. For example, with reference to FIGS. 263 and 264, the structure of the print media 3360 is shown in cross section. The structure of the print media 3360 is formed from a first fiber material 3361 containing a reinforced polymer made of fibers formed of soft polyethylene naphthalate drawn into a fiber mold. A second heat-fluable-polymer, including polyethylene and the like, is used to provide a "paper" substrate for the carriage of ink / image chemicals. The media polymer 3362 is pressed against the fiber material 3361 while the adhesive strength remains (eg, after heating) so that the fiber 3361 and the print base 3362 form an integral unit as shown in FIG. 264. The media array of FIGS. 263 and 264 can be made according to many techniques. Next, with reference to FIG. 265, a first such technique using a molded spool 3380 of fibrous material is shown. In that technique, many spools and the corresponding fibers 3381 correspond to the desired print roll length. The spools 3380 are arranged such that the corresponding fibers 3381 are fed to the first roller 3382. The fibers 3381 are then drawn so as to pass through a print media coating unit 3384 that supplies a layer of heated, sticky print media to the fibers. The rollers 3385, 3386 then supply the necessary pressure to fuse the fibers and the print media together, and finally flatten the surface of the print media to form an anisotropic surface 3388. The surface 3388 is then cut and rolled to form the anisotropic print media as described above.
[1682]
Of course, the fibrous material can be formed in other forms as desired. For example, FIG. 266 shows one form of extruding a fibrous material by pulling a fiber 3391 from a tank 3390. The device of FIG. 266 can be replaced with the spool 3380 of FIG.
Description of technology 24
[1683]
A further improved version describes the algorithm used in the art cam system. The algorithm automatically transforms a photographic image into a "drawn" effect by replacing a group of pixels in the input image with a "brush stroke" in the output image. The algorithm works to automatically detect major edges in flat areas of an image and propagate information in the direction of the edges so that the brush strokes are closer to the Van Gogh style. The algorithm is suitable for implementation in the art cam device described above.
[1684]
First, referring to FIG. 267, the algorithm involves many steps 3601. These steps include a first step (3602) of filtering the image to detect edges. The edges are then thresholded or "skeletonized (3604)" prior to the process of determining the final edge (3605). Then, a Bezier curve is fitted to those edges. The curve is then offset (3607) and a brush stroke is drawn in the final image (3608). These processes 3607 and 3608 are repeated until the image is sufficiently covered by the brush stroke. A final "correction" to the image is then performed (3609).
[1685]
Next, each step will be described in more detail. In the first step (3602) of filtering to detect edges, a Sobel 3x3 filter with a set of coefficients 3612, 3613 as shown in FIG. 268 is applied to the image. The Sobel filter is a well-known filter used in digital image processing, and its characteristics are described in the standard textbook "Digital Image Processing" published in 1992 by Addison-Wesley Publishing Co., Ltd. of Massachusetts. Is fully discussed on pages 197-201 by Gonzalez and Woods. The Sobel derivative filter can be applied by converting the image to grayscale prior to filtering, or by filtering the image into each color channel to take the maximum value. Sobel filtering creates a grayscale image that shows the pixel-by-pixel edge intensity of the image.
[1686]
Next, threshold processing is performed to create the corresponding binary image (3603). The threshold can be varied, but a value of 50% of the maximum intensity value is appropriate. Each pixel in the edge strength image is compared with the threshold value, and if it is larger than the threshold value, "1" is output, and if it is smaller than the threshold value, "0" is output. As a result of this processing, a threshold edge map is created.
[1687]
Next, in step 3604 of FIG. 267, the threshold edge map is "skeletonized". The process of skeletonizing an image is described completely clearly in pages 491-494 of the reference textbooks mentioned above and in other standard textbooks. The skeletonization process creates a "thin" skeletonized edge map while maintaining a significant number of features in the threshold edge map.
[1688]
The next step is to determine the edges in the skeletonized edge map that give rise to the data structure that contains the list of points in the image. Preferably, only edges longer than the predetermined minimum are added to the list.
[1689]
Since the skeletonized image has only one pixel wide edges that can be multi-branched, the following algorithm, represented by a C ++ code fragment, will result in a seamless edge in the skeletonized image. We present one way to determine and identify the points to which they belong. It decomposes the branched edges into separate edges and chooses to extend along the edges in a direction that minimizes the curvature of each branch. For example, at a branch point, it helps the branch to produce the least curvature. The code is as follows. :
Figure 2001523900
Figure 2001523900
Figure 2001523900
Figure 2001523900
[1690]
Using this algorithm on a skeletonized edge map produces a list of edges with at least a given size. A suitable size has been found to be 20 pixels long.
[1691]
In the next step 3606 of FIG. 267, the Bezier curve is fitted to each of the edge lists obtained in step 3605. For each of the edge lists, a piecewise Bezier curve fits into the list of points. A suitable algorithm for fitting a piecewise Bezier curve is "Algorithm for automatically fitting a digitized curve" Schneider, P. et al. J. Written by Grassner, A. et al. S. A Schneider curve matching algorithm as described in Edit, Graphics Gems, Academic Publishing, 1990. This algorithm aims only at geometric continuity, not parametric continuity, and tries to converge quickly. The Schneider algorithm is functional, and if the goodness of fit is poor, it subdivides the curve at the maximum error and fits the curve to the split. Next, the estimation of the tangent line at the dividing portion is made using only one of the dividing points. Local noise tends to be amplified due to the dense set of points. The improved quality of fitting curves is obtained by using points away from the dividing point on which the tangent is based.
[1692]
In the next step 3607 of FIG. 267, the curve is offset from the initial curve list by half the desired "brush stroke width". The offset gives rise to two curves that are approximately one stroke wide apart from each other so that they are parallel to both sides of the first main curve.
[1693]
An algorithm involving the following steps is used to generate a piecewise Bezier curve that is approximately parallel to a particular piecewise Bezier curve.
i. Creating an empty point list
ii. Creating an empty tangent (vector) list
iii. Evaluate the selected points for each of the curved parts that form the piecewise Bezier curve and offset them by a particular offset value. An offset point is added to the point list, and a corresponding tangent is added to the tangent list.
iv. Fit the piecewise Bezier curve to the resulting point list. Instead of predicting tangents in the process of fitting curves, use the exact tangents associated with the offset points.
[1694]
Each curve section is offset as follows:
i. Find the curve value, the standardized tangent, and the standardized normal. The normals are 0.0 or more and 1.0 or less, and the size of the image is standardized by the parameter values (for example, 0.25 intervals) arranged at equal intervals.
ii. The normal is scaled by the specific offset value.
iii. A line segment is constructed using the points of the curve and the reduced normals.
iv. If two line segments intersect, delete the points associated with one line segment.
v. Add surviving points to the point list and add the corresponding tangents to the tangent list. If the line segment in question is at the end of the piecewise curve, add only the points related to the parameter value 1.0 and copy the points related to the parameter value 0.0 of the next line segment.
[1695]
The process of offsetting each curved portion is performed as follows. That is,
1. 1. First, for the parameter values of 0.0 or more and 1.0 or less, which are evenly spaced on the Bezier curve, for each parameter value Pn (Fig. 269), the curve value 3630 and the standardized tangent 3631 , The standardized normal 3632 is calculated.
2. Next, the normal 3632 is scaled by a specific offset value.
3. 3. Next, the line segment from point 3630 to point 3636 (the point at the end of the scaled normal 3634) is calculated.
4. The line segment 3630-3369 is then checked for all other points on the curve (eg, 3638, 3369). If either two line segments intersect, one of the points, 3636, is discarded. Add surviving points to the point list and add the corresponding tangents to the tangent list. If the line segment in question is at the end of the piecewise curve, add only the points related to the parameter value 1.0 and copy the points related to the parameter value 0.0 of the next line segment.
[1696]
Referring to FIG. 270, the final result of curve offset according to step 3607 of FIG. 267 is shown to create a series of Bezier curve divisions (eg, C1, C2, etc.). First, a series of parameter points P1-P5 arranged at regular intervals. Next, for each point P1-P5, normal points N1-N5 (corresponding to point 3636 in FIG. 269) are created. The piecewise Bezier curve 3640 is then created using those points N1-N5. This process also applies to the contralateral curve 3461 including points N6-N10. This process also applies to the following piecewise curves C2 and the like. The result is two curves 3640,3641 that are parallel to each other and are spaced approximately one brush stroke width apart.
[1697]
A series of brush strokes are then placed in the output image along the curve. Those strokes are oriented tangentially to the curve. Each brush stroke is defined by a footprint that defines where it does not overlap with the other brush strokes. If the footprint does not overlap the footprint already displayed in the output image, the brush stroke is only placed along the curve. Curves without brush strokes are discarded and the process of steps 3607 and 3608 is repeated until there are no curves (with minor modifications). A slight modification in step 3607 is to offset the curve more than half the brush stroke required to offset the curve from curve C1 in FIG. 270.
[1698]
The method described above can also be used to cause a series of brush strokes to be emitted from an object of interest in the image.
[1699]
Following the image being covered with a brush stroke of a given size, further processing is done with a smaller brush stroke and the threshold level is raised to further correct the important features of the brush stroke in the image. Such techniques are similar to the techniques Van Gogh uses for specific areas where fineness is required.
Description of technology 26
[1700]
For some image (eg, a photo), it is desirable to be able to determine an interesting area (eg, the position of a face, etc.) in the photo or the like. Once the position of the face in the image has been identified, it is possible to simply perform image processing that performs many unusual effects, such as arranging balloons on the face area, as shown in FIG. 271. Once the face region is detected, it can perform other effects such as deforming the face, such as placing objects related to the face such as eyeglasses.
[1701]
As described above, the detection of a region in an image can be applied to region-specific processing such as applying an artistic effect only to the region. For example, the sky area in the background is drawn with a wide brush stroke, and the front face area is drawn with a fine brush stroke. In addition, the determination of features in the image and the like. The detection of a region based on color is extremely useful when detecting a human face in an image because the detected color is a natural shade of skin.
[1702]
Changing the illumination may cause objects of a particular spectrum of color to appear in the image with varying brightness and saturation. Since hue evaluates the dominant frequency of an object, the color of an object tends to be significantly different in brightness and saturation than in hue. As shown in FIG. 272, the method of further improvement 3801 has a first step of first converting the acquired image into a color space that distinguishes hues from luminance and saturation. As such, the two well-known color spaces are the HLS color space and the HSV color space. The various color spaces, including these color spaces, are described in Foley, J. et al. D. , Van Dam, A. , Feiner, S.M. K. , Hughes, J.M. F. , Computer Graphics, Principles and Practices, Second Edition, Addison Wesley, 1990, pp. 584-599, is well explained in standard text.
[1703]
The next step is a large number of input color seeds (color)
Seed) is to be entered (3804). Each seed 3805 is defined as follows. :
(1) Seed color range of color values
(2) Limitation of local color difference (a local)
color difference limit)
(3) Limitation of overall difference (a global)
color difference limit)
[1704]
The next step 3808 is to process the seeds to build the bitmap.
[1705]
The final step 3807 in the method of FIG. 271 is to output a bitmap showing that the pixels in the input image have the same capacitance as the input image and belong to the color gamut defined by the list of seeds 3805. .. The method 3801 includes processing each seed on a separate path 3808 and combining the output bitmap of each path with the entire output bitmap. Any set of bits in an individual bitmap is written in the entire bitmap.
[1706]
With reference to FIG. 273, step 3808 of FIG. 272 is shown in more detail. In the first step 3820, a seed bitmap is determined for all colors that have seeds in the seed color range in which the seed in question is defined. In the next step 3821, for each seed in the seed bitmap, it is used as a seed position for a "seed filling" algorithm that detects a region of 4 or 8 connects in the input image connected to the seed position. .. The seed filling algorithm flags pixels that belong to the area of the seed output bitmap. The seeds flagged in the seed output bitmap in step 3821 are erased from the seed bitmap created in step 3820 so that they are not used as a starting point for the next seed filling.
[1707]
When all seeds are used for the seed filling process, the seed output bitmap is combined with the overall output bitmap for the entire list of seeds.
[1708]
As disclosed on pages 979-986 of the above references, the seed filling algorithm is a standard type. However, the seed filling algorithm has a specific pixel relationship test.
[1709]
If the colors differ to the same extent as the pixel colors described above and the local color difference limits, and to the same extent as the seed colors and the overall color difference limits, then the pixels are part of the current region. The color difference limit is determined separately for each color component. The aforementioned pixel is the pixel to the left of the current pixel, as the span is detected or processed from the left and right. At the beginning of the new span, the color of the aforementioned pixels is made to be the average color of the original span. The seed color is set to be a neutral color in the seed color range.
[1710]
Instead of using a single seed, a list of seeds is used to identify areas that are distinctive color features but are well known, such as faces.
[1711]
The use of local and global color difference limits is used to detect areas as much as possible without crossing discontinuities in the image. Areas may contain a variety of colors, but these change gently over the area. The overall color change in the area is generally greater than the local color change. The use of local color difference restrictions (imposing) reduces the risk of crossing discontinuities in an image. It also allows the overall color difference limits to be unobtrusive. Detection of that region can be more complete, for example, even in progressively brighter or darker regions.
[1712]
When the color space of the input image is based on hue, the hue difference is preferably reduced by luminance (or luminance value) and saturation because the hue is a little unreliable due to low luminance or low saturation. Therefore, if the hue is unreliable in dark or non-saturated areas of the area, the effect is reduced so that the detected areas include those areas. This, of course, is premised on the difference limitation in terms of brightness and saturation.
[1713]
Also, the hue difference is calculated accurately, matching the characteristics of the hue hexagonal circle.
[1714]
It has been found that very good results are often obtained when using the above algorithm to detect objects in an image. For example, the above method was utilized for images with many solids, with color seeds set to standard skin tones. The result is that the position of each face in the image can be accurately located.
Description of technology 27
[1715]
In a further improvement, the source image 3901 is transformed into the corresponding "tile" color image 3902, as shown in FIG. 274. The conversion process will be described later. In the first embodiment, each tile 3094 takes a standard arrangement in the output image 3902. Further, the color of each tile 3904 is drawn from the color of the corresponding pixel 3905 in the input image 3901. The tiling process in the output image is performed at a higher resolution than the input image 3901, so that the tiling process is actually used to make a low resolution image.
[1716]
Of course, many different tile shapes are possible. The shape of the tile that tiles the image is preferably combined with a "pattern unit" when the entire image is tiled and duplicated. For example, as shown in FIG. 276, the tiles 3908 and 3909 are combined as a pattern unit 3907, which tiles the image when duplicated.
[1717]
In a further embodiment, each tile is defined by an image with two channels. The first channel 3970 defines the shape and opacity of the tile, as shown in FIG. 276. The non-zero opaque region 3971 defines the pixels that are part of the tile. The value of each pixel 3971 indicates the opacity of that pixel. With reference to FIGS. 277 and 278, the second channel 3980 defines the pixel surface texture in the tile as a height field. In FIG. 278, a cross-sectional view taken along the line AA'in FIG. 277 is shown, showing intensities, peaks 3991 and slopes 3992, 3993.
[1718]
The inputs to the algorithm are as follows. That is,
Color image to be played as a tile
Tile pattern as described above
Output resolution
[1719]
The added optical input parameters are as follows.
[1720]
The output from the algorithm is to create a tiled effect on the input image.
[1721]
Repeated tile "pattern units" can be defined as:
(1) Pattern unit size (number of rows, number of columns)
(2) Offset to the start point in the pattern unit due to the first pixel of the image (row and column offset)
(3) Vertical offset for the placement of continuous pattern units
(4) List of tiles that make up the pattern unit
(5) Offset of horizontal continuous tile arrangement in one pattern unit
(6) The resolution of the pattern (for example, the resolution of the tile image of the pattern)
[1722]
The width of the pattern is defined by the sum of the column offsets of the tiles that are arranged continuously in the horizontal direction.
[1723]
All offsets are in a combination of consecutive pixels (eg, real-valued row and column offsets). This allows the tiles to be placed with sub-pixel accuracy. This allows the resolution of input and output images and independent tile patterns.
[1724]
The basic tiling algorithm is implemented by the following C ++ code fragment. That is:
Figure 2001523900
Figure 2001523900
Figure 2001523900
[1725]
As mentioned above, each tile has a morphology characterized by its shape / opacity channel. Together, the shape of the tile and the placement of the tile in the image determine the set of pixels in the input image that will be covered by the tile. The color of the tile in the output image is based on the series of pixels. The function of adding color is not limited, but it can copy the input color pixel by pixel, take the average of the input color, take the center of the input color, and so on. It may be included.
[1726]
The tiles colored in this way may be drawn directly on the output image, ignoring the opacity, or may be composited into the output image according to the opacity of the tile. In the latter case, the output image must first be initialized to some brightness (eg black) or some arbitrary image (eg the input image itself). Composite images using opaque masks and channels are standard disclosed in general articles such as Thomas Porter and Tom Duff (1984) "Synthetic Digital Images" SIGGRAPH Bulletin 1984, pp. 253-259. Synthetic techniques can be used.
[1727]
Each tile has a surface texture map defined by the texture channel. The texture channel defines the relative surface height of each pixel in the tile. This height field will be used later to determine the surface normal used to determine the angle of reflection of simulated incident light. The surface texture becomes more visually apparent when the image of the tile, or where the tile is placed, is given simulated light.
[1728]
Whether the tile is drawn directly on the output image or composited with the output image, in the simplest case the texture of the tile is written directly on the texture channel of the output image.
[1729]
The opaque channel of each tile controls the composition of the tile into the background. In addition, image-sized opaque channels may control the composition of the entire tile into the background. In the simplest case, tile opacity is measured by the global opacity that gives rise to the opacity used to composite the tiles. Referring to FIG. 279, an example of a process using global opacity is shown. The first plot 4000 shows an example of cross-sectional contours for each tile with a simple shape of a folded opacity profile (eg 4001, 4002, etc.). Next, a preferred global opacity channel 4004 consisting of a gradual increase in opacity 4005 is shown. In the simple case described above, the tile opacity profile 4001 is measured with the global opacity profile 4004 to create an opacity 4006 with an area of increasing opacity (eg 4007).
[1730]
Of course, a scheme of local tile opacity combinations with global opacity channels is possible. For example, first, for each tile, the pixel opacity is averaged, and the pixel-by-pixel opacity is measured by this averaged opacity rather than the pixel-by-pixel global opacity.
[1731]
It has been surprisingly discovered that the tiling algorithm described above helps to easily produce the effect as depicted with a few simple modifications. Strokes are overlapped and drawn by treating the pattern unit as a stack of brush strokes and making each tile image look like a brush stroke (eg, a layer of brush hair or one with a thickness at the end of the stroke). Such effects are performed in tiles and pattern units. The algorithm is then modified to randomly select strokes from the stroke collection, rather than iterating through the tiles continuously in the pattern. In addition, many of the textured, arranged, and colored effects depicted below can be provided as alternatives and additions.
[1732]
First, there are generally different levels of detail within the input image. The input image requires different levels of detail when reproduced via a tiling or coloring algorithm. This can be achieved by processing the image within various changes, utilizing different degrees of stroke collection within each change, and synthesizing each change and (cumulative) background. An image-sized detail map, composed of pixel-by-pixel detailed dimensions, can be used to control the image portion of each change process. Each change is given a "detailed boundary" on which the corresponding part of the image is processed. Continuous change is given an increase in the level of detail and a decrease in the stroke collection ratio. The first change thus processes the entire image, for example, the second change adds a fixed level of detail, the third change still adds more detail, and so on. This is somewhat similar to how a painter refines a painting by adding more and more detail. The detail map itself can be easily and automatically generated by placing edges within the image, in other words, passing the image between derived filters.
[1733]
Tiles are conceptually rigid. Its surface texture is unaffected by the background surface texture or the surface texture of other overlapping tiles (usually not overlapping any other tile). On the other hand, the brush stroke is conceptually flexible. Its thickness and surface texture are influenced by the surface texture of the background and the surface structure of other brush strokes that overlap. In particular, the brush stroke tends to fill the recesses in the background, but tends to be thinner at the peaks of the background. (The background includes the effect of the brush stroke that precedes that stroke.)
[1734]
In another embodiment, when a brush stroke is drawn, the texture is combined with the background texture by one of several methods. First, in order to generate a new background height, the stroke height is added by a certain percentage of the background height (for example, 25%), but the height is not reduced. The effect of this texture will be described with reference to FIGS. 280 (a)-(c). In FIG. 280 (a), an example of the cross-sectional contour of a single tile brush is shown. In FIG. 280 (b), a cross section of an image portion covering the brush pattern 4010 of FIG. 280 (a) is shown as an example. In FIG. 280 (c), the result of the join process using the above-mentioned rule is shown. The line segments 4013, 4014, 4016, 4017 are taken directly from the image 4011 so that the image value 4011 exceeds the corresponding brush value 4010. However, the portion of 4015 is calculated by adding the stroke height of the strike recording 4010 to 25% of the corresponding portion of the image 4011. The background under the stroke is calculated. For individual pixels, if the background height is lower than average, the stroke height is simply added to the background height. In this way, mimicry is performed such that the recesses in the background are "filled" with strokes. If the background height is equal to or higher than the average, the stroke height is added to that average. In this way, the background peaks reduce the stroke. Its height is made to increase with a minimum amount (of course, the minimum stroke thickness, including zero) so that the background does not substantially break the stroke (eg, it does not thin to zero). There is.
[1735]
In addition, the opacity of the stroke may be measured to calculate the net thinness of the stroke, which is the result of the texture combination algorithm. In this way, the areas where the stroke is thinned by the peaks in the background become more transparent.
[1736]
Once the tile / stroke position is determined, it may be processed in many more ways. For example, the tile / stroke position may be arbitrarily jittered at a particular range or speed to mimic the natural variation in manual tile and stroke positioning. When mimicking tiles rather than strokes, the range of tile jitter is usually limited so that the tiles do not overlap. For example, only the width of the "inner tile gap" is changed. When mimicking a brush stroke, the stroke jitter range is usually narrower and limited because the brush strokes usually overlap.
[1737]
In addition, the position of each tile is replaced according to the replacement map to mimic a more standard variation on the position of tiles and strokes. The replacement map consists of two channels. The first includes row substitutions and the second includes column substitutions.
[1738]
The tile / stroke color itself may be further processed for artistic effects. For example
(1) To imitate restricted tiles and restricted paint palettes, the colors may be mapped to any palette.
(2) Due to imperfections in tile color and variations in mixing paints, the color may be arbitrarily jittered in a particular range and at a particular speed.
(3) The chrominance of that color may be arbitrarily transformed at a particular speed to mimic the Impressionist style of using the opposite color.
[1739]
Once the average global opacity of the tile / stroke is determined, it may be further processed for artistic effects. For example, the averaged opacity may be binarized to zero opacity or 100% opacity. This creates the absence or presence of tiles. If the averaged opacity is binarized, global opacity reproduction may be improved by partial error diffusion on the input image. This has been found to produce important effects in the image.
[1740]
A further embodiment is performed by proper programming of the art cam device. When "drawing" an image on canvas, the painter usually works with a palette of limited paint colors and brushes that form a constrained set of brushstrokes. And I draw on a canvas with a unique color and texture. By noticing this, further examples are constructed. In order to bring the scene closer to or farther from the truth, the painter uses different colors to draw the painter's vision for the scene. Several painting styles are attempted to reproduce the features and colors of the scene. Other styles are attempted to get more impressions about the features and colors of the scene and are characterized by simpler, more uniform brush strokes and no mixing or overpainting of paints. These Impressionist styles achieve brighter and more vibrant colors than realist styles, but at the expense of detailed depiction.
[1741]
A computer system that automatically transforms a photographic image for a "painted" effect typically puts in the output image a brush stroke of a color somehow obtained from the pixels in the input image. The challenge of such a system is to incorporate the mode of human drawing as described above. Partial solutions to create an impressionist rendition are the construction of a color palette based on the colors of the actual artist's paint, the selection of brushstroke colors from the palette to match the input image as closely as possible, and the input image. There is color error diffusion to maintain the overall color consistent with.
[1742]
In a further embodiment, an algorithm has been constructed that error-diffuses the image relative to the final color of the brushstroke, rather than just the raw color. This final color is determined by the color of the paint, the composition of the brush, the color of the canvas and the fabric.
[1743]
The input of the algorithm is as follows. That is,
* Palette with limited paint colors
* A series of brush strokes, each defined by an opacity map or a bump map. The use of bump maps is well known to those skilled in the art of 3D graphic production and is described, for example, in Graphic Gems, Vol. 4, pp. 433-437.
* Canvas defined by color images and bump maps
* Color image reproduced as a painting
[1744]
The output of the algorithm is the production of the input image, that is, "drawing" on the canvas with brush strokes colored by the paint palette. The canvas and brush strokes are textured, and these textures are combined during the painting process, so the final painting may be unidirectionally illuminated.
[1745]
To achieve the effect as depicted, a basic tiling algorithm is used to achieve better color matching between the output image and the input image. The first process is a brushstroke palette feedback algorithm. This process is performed by creating a table of stroke color palettes. Table 4025 shown in FIG. 281 is divided by brush strokes B1, B2, B3 and the like. For each brush stroke Bn in the brush stroke set and for each paint color C1-CN in the paint palette set, the stroke colors S1-S4 are as follows, as described with reference to the flowchart of FIG. 282. Is decided. That is,
1. 1. At step 4021, the paint color C1 is used to color the corresponding brush stroke B1.
2. Colored brush strokes are then composited onto an empty canvas using an opaque map and a bump map.
3. 3. In step 4023, the average color of the drawn strokes is calculated. This average color is the stroke color S1 of FIG. 281. Then, a pointer (not shown) is set to point from the stroke color palette input S1 to the corresponding paint color palette input C1.
4. The stroke color table is then sorted by color.
[1746]
When drawing an image, each brush stroke is selected in the usual way, as shown in FIG. 283. Then, the desired color of each brush stroke is determined from the input image by a usual method. However, the closest paint color Cn in the paint color palette is not used. Instead, because of its brush stroke, the closest stroke color Sn in the stroke color palette is used. Next, the corresponding paint color Cn is used as the paint color as the paint color for the brush stroke.
[1747]
Due to the limited range of colors available in the paint palette, there is usually some difference between the desired color and the selectable color Cn. This difference, or error, can be error-diffused to adjacent parts of the input image in the usual way of error-diffusing. The error of the difference between the desired color and the paint color Cn is not used. Instead, the error, which is the difference between the desired color and the stroke color Sn, is used for this purpose as the average color across the stroke. Notice that this average color Sn may differ from the average color in the stroke palette, as the actual brush stroke overlaps with the other strokes, while the strokes in the stroke palette are drawn on an empty canvas.
[1748]
This method can be extended to incorporate the effects of other painting parameters in the same way. This includes types of painting medium (pineapple, chalk, charcoal, etc.) and canvas types (textured paper, glass, etc.). Each parameter adds a dimension to the multidimensional table in the stroke color palette, but the essential algorithm does not change.
[1749]
The artist occasionally mixes two or more colors in one brush stroke. In Impressionist style, these colors are often not well mixed, and unmixed colors are visible as separated components of the stroke.
[1750]
In the algorithm described above, the multi-color brush stroke can be a generalization of the one-color brush stroke. It can be done appropriately by a number of opacity maps. These opacity maps define non-zero opacity because of the common exclusive area of brush strokes. They define the shape of the overall brush stroke. By introducing the following modifications to the algorithm, multicolor brush strokes are provided.
[1751]
When a stroke color palette is built for each brush stroke, the brush strokes are colored with possible combinations of pliers colors from the paint color palette. This is clearly useful due to the small paint color palette. The input for each stroke color palette is constructed in the usual way, and each stroke color palette has a large number of corresponding paint color palettes. When drawing an image, use the usual method to find the closest stroke color in the stroke color palette. However, the strokes are colored with a number of paint colors.
Description of technology 30
[1752]
With reference to FIG. 284, steps for further improvement of the program of the art cam device are shown. As with standard techniques, it is assumed that the brush stroke is characterized as a piecewise Bezier curve. The brush stroke is expected to have a predetermined thickness. The brush stroke consists of a series of Bezier curves. The first step 4211 is to process each piecewise Bezier curve. Each Bezier curve is first converted to a polygonal line using standard techniques (4212). The "fastest" edge (whose meaning will be clarified below) is then used to "step along" the fastest edge in a given increment. That position synthesizes the brushstroke 4214. Used to do.
[1753]
With reference to FIG. 285, a first Bezier curve 4220 forming the basis of the brush stroke 4221 is shown. The process of converting the Bezier curve 4220 into a corresponding series of line segments (eg, 4222). The process of linear approximation to line divisions is standard and well known and is featured in ordinary textbooks. As part of that linear approximation process, the normals of the endpoints of each line (eg, 4224) are also determined. Those normals can, if necessary, be determined from the lines adjacent to the point (eg, 4225) by a method of interpolating the slope of the line.
[1754]
With reference to FIG. 286, an enlarged view of the two line segments 4233 and 4234 is shown. For each point (eg, 4232), the normals (eg, 4233, 4234) project to each side by the distance of the width of the brush stroke. Point 4236 has protruding normals 4237, 4238. Next, the distance 4239 between the normal 4233 and the normal 4237 is measured, and the distance 4240 between the normal 4234 and the normal 4238 is measured. The "fastest" edge is defined on the side with the longest distance in the sense that the body moving along the edge 4239 must move faster than along the edge 4240. Therefore, the fastest edge is the convex edge of the curve.
[1755]
The fastest edges are used to define a given number of points as parameters separated by an equal amount. The example of FIG. 286 shows three points 4243-4245 defined at equal intervals along line 4239. Most intervals are longer than those shown in FIG. 286.
[1756]
The parameter points for each point are then determined and used to determine the parameter points along line 4230. That position is where the brush stroke is placed.
[1757]
With reference to FIG. 287, a series of brush stamps 4246, 4247, 4248 are shown. The two stamps 4246, 4248 are used at the end of the line and the part 4247 is used continuously along the central part of the line.
[1758]
The brush stamp is defined by three separate channels: matte channel, bump map channel and footprint channel. In the example of FIG. 287, a brushed matte channel is shown. In the first technique, known as the "maximum" technique, matte channels and bump map channels are used to build brush strokes in separate brushing buffers. In this synthesis technique, the brush is constructed by taking maximum opacity. If the new opacity exceeds the old opacity in the buffer, the opacity is replaced with the new opacity. The results produced are similar to airbrushes and paintings in Photoshop.
[1759]
In the second synthesis technique, it is known as the "footprint" technique. The footprint channel is used so that the matte value is changed only if the aforementioned brush stamp for the current line was not written to the brush buffer for the pixel. In the third technique, a matte channel or a bump map channel is used, but at this time, the matte channel or the bump map channel is the minimum.
[1760]
The above techniques have been found to produce good results, especially when mimicking the effects of watercolor painting. The following code segment shows the processing of a further improved embodiment. :
Figure 2001523900
Figure 2001523900
Figure 2001523900
Figure 2001523900
Figure 2001523900
Description of technology 31
[1761]
Referring to FIG. 288, an array of further improvements (4310) including an art cam device 4302 is shown, which art cam device 4302 is connected to a text input device 4303 consisting of a touchpad LCD capable of proper character recognition. There is. Alternatively, a keyboard input device (eg, 4304) can be used as the text input device. A preferred embodiment of the text input device may consist of an Apple Newton® device adapted and programmed to be connected to the art cam device 4302. In addition, other forms of the text input device 4303 can also be used. Further, an art card device 4305 that is inserted into the art cam device 4302 is provided to process the detected image (as fully considered in advance) according to the figure drawn on the surface of the art card.
[1762]
With reference to FIG. 289, preferred embodiments with respect to the operation of the further improved version are shown. In this form of operation, the art card 4305 is encoded in a Vark script that includes a font defined in Roman letters and an explanation of how to create special characters in the font. For example, the description includes how to process the outline to create new characters in that font.
[1763]
The input devices 4303 and 4304 have an input device font. The input device font is used by the text input devices 4303, 4304 to display information. In particular, non-Roman characters are used. Therefore, the input devices 4303, 4304 are used for inputting the text required by the art card 4305. Based on the input, the font outline is downloaded to the art cam unit 4302, which processes the outline according to the instructions encoded on the art card 4305 for the creation of special characters. These characters are created by the art cam device 4302 and displayed as part of the printed output image.
[1764]
By using this method of operation, the flexibility of the art cam device 4302 is extended without storing the font array in the art cam device 4302 or the art card device 4305. According to this method, it is only necessary that the text input devices (eg, 4303, 4304) be country-specific in order to reduce the complexity of the model used to operate the art cam device 4302 in non-Roman language format. Is.
Description of technology 33
[1765]
A further improvement is the reproduction of camera images by taking a picture with a digital image camera and printing with a printing device such as an inkjet printer having a predetermined dpi (for example, 1600 dpi) as disclosed in the patent application described above. It is a prerequisite that it is desired.
[1766]
With reference to FIG. 290, such a digital image camera device 4501 is designed to print out an image 4502 with a standard output resolution. The image 4502 is a multicolor output (cyan, magenta, yellow) and is printed by an inkjet printer device consisting of an array of dots for each color component of the input image. If a copy of the output photo 4502 is desired, the image is first scanned to extract the appropriate color components.
[1767]
A further improved method is shown in FIG. In this method, the photographic image 4502 is scanned into each color component by the linear CCD 4510. Suitable linear CCDs are technically known. For a description of the configuration and operation of a linear CCD device, standard literature such as "CCD Array, Camera, Display" by Gerald C Holst, 1996, SPIE Optical Engineering Publishing, is referenced. In addition, suitable sensor devices are regularly mentioned in the report of the Association of Electrical and Electronic Engineers on Home Appliances.
[1768]
The CCD array 4510 scans an image passing under the CCD head to generate a signal and converts an analog signal into a digital signal. The CCD array 4510 has 4800 dots per inch, which is three times the dot resolution of the photograph. The CCD array 4510 has three primary colors, a filter, and a CCD, one for each color. 4800 dpi is achieved by using a series of staggered CCD arrays.
[1769]
The data value is transferred to the frame buffer controller 4512 and stored in the frame buffer 4513 for each color component. The saved image is printed on top of the photo and, as described above, is placed in its original dot position when scanned by the CCD at a CCD scanning resolution, which is about three times the resolution of the print. Will be processed. Unfortunately, there may be many flaws in the scanned image. These defects include defects related to the scanning process, including the effects of scratches and distortions on Photo 4502, in addition to the slight rotation of Photo 4502 when Photo 4502 is sent to the CCD scanner 4510.
[1770]
The procedure for determining patterns and dots depends on the use of the process of extracting the rotation of photo 4502. Many methods are available to determine such rotations.
[1771]
For example, the scanned pattern of ink dots has a fundamental characteristic based on the rotation.
frequencies). Since the ink is printed on the photo in a general arrangement of dots, the Fourier transform of the image is used to determine the possible rotations. As an alternative, the edge of the card can be determined from the abrupt boundary or the underneath scanning surface of the CCD. In addition, the desired dot pitch of the pixel is determined (1600 dpi).
[1772]
From one edge of the scanned image of the photograph, a process is performed to determine whether or not the dots are arranged at the respective output dot positions. Importantly, a method of maintaining synchronization across the card is used to determine the output dots. It is clear that the local changes in the gap from one column to the next are very small and many changes exceed the length of the image.
[1773]
One form of rotation and the process of determining the spacing between adjacent dots is to record a row of dot centers (known as the "center of gravity") and rewrite the center of gravity in the column by the column method (update). Is. With reference to FIG. 292, one form of center of gravity processing is shown, where the image area 4520 has sample ink dots 4521 on the surface portion of the card. The size of each ink dot in each pixel is about three times the corresponding pixel sampling rate. A series of center of gravity marks (eg, 4522) are kept in each column. Column CnIn order to determine the rotation of the initial center of gravity at the +1 center of gravity mark, the previously calculated center of gravity mark and the adjacent column CnCenter of gravity mark is used. For example, the centroid marks 4522, 4524, 4525 are used to determine the initial position of the centroid mark 4523. Once the initial position is determined, the pixel values around the center of gravity mark 4523 are examined to determine if further adjustment is needed.
[1774]
The determination that the center of gravity 4523 is moving from the expected position is derived by examining the pixel values around the point 4523. The survey is done separately in the X and Y directions, and the movement is done separately in those directions.
[1775]
Many different methods can be used. One method for determining whether a minor modification of the center of gravity 4523 is required is described according to FIG. 293. We find that only a limited number of ink dot arrays are possible with this method. These possible sequences are as shown in FIG. 293 at 4530, showing the current pixel 4531 and two adjacent pixels 4532, 4533. Each ink dot 4531-4533 has approximately three pixel values as detected by the CCD sensor. For each pixel pattern 4530 in FIG. 293, an example of the CCD output value 4535 after digital conversion is shown. Due to the sampling effect of the CCD and other mechanical and brightness effects, the CCD value 4535 of the dot pattern often includes an equivalent of the AD-converted Gaussian curve (or part thereof). Therefore, sharp edges are usually not given. However, the expected cross-section can be examined to determine the closest cross-section, the error is not very large and is adjusted within the limits for a better fit. According to this method, the new center of gravity position is obtained within the first dimension. Of course, the task of adjusting the center of gravity is symmetrical in the two directions, and the same processing steps apply in other dimensions. Many other techniques may use more advanced techniques, such as neural networks trained from sample images.
[1776]
When the adjusted position is determined, the center of gravity 4523 (FIG. 292) is slightly adjusted, and the process of determining the center of gravity is continued. From the new centroid position, the values of the surrounding swatches are examined to determine if the on or off ink dot values should be recorded for a particular centroid position.
[1777]
Returning to FIG. 291 the recorded ink dot values are stored in the ink dot array 4516 and of the ink dots of the same resolution (1600 dpi) or different resolutions shown on the printer (eg, 4517 and equal to the original photo 4502). It is used for printing in (for copying Photo 4518). According to this method, a high-quality photo copy, which is a copy from the original photo, can be obtained without using negatives or digitally dividing and storing the image.
[1778]
Of course, many improvements may be possible, including the use of customized real-time pipeline basic design concepts, to speed up processing and eliminate the need to store large sets of data in framebuffers, etc. Absent.
Description of technology 34
[1779]
In a further improvement, the art cam device will be modified to include a 2D motion sensor. The motion sensor can include a small microelectromechanical system (MEMS) device that detects biaxial motion, as well as other suitable devices. The motion sensor can be attached to the camera device and its output is monitored by the Artcam central processor.
[1780]
With reference to FIG. 294, a schematic representation of the preferred sequence for further improvement is shown. The accelerometer 4601 outputs to the art cam central processor 4602, which receives an unclear detection image from the CCD device. The art cam central processor 4602 uses the measurements of the acceleration clock to determine the angular velocity of the camera when the picture is taken. Then, the measured value (velocity factor) is utilized by a well-programmed art card processor 4602, blur correction is performed on the unclear detection image 4603, and an output image 4604 without blur is output. As the blur correction program in the art card processor 4602, standard algorithms known to those skilled in the art of computer programming and digital image restoration are used. For example, "Selected Papers on Digital Image Restoration", M.D. See Ibrahim Sezan ed., SPIE Milestone series, Volume 74, especially reprinted pages 167-175. In addition, a simplified technique is described in "Image Processing Handbook" 2nd Edition, John C.I. It is clarified by Russ, published by CRC Publishing, pp. 336-341.
Description of technology 38
[1781]
With reference to FIG. 295, the form of the attached printer 5010 is shown as a configuration according to the direction of further improvement. The printer 5010 is designed to have a print roll 5011 inserted into the cavity 5012. The print roll 5011 is inserted into the cavity 5012 and has rollers (eg, 5013, 5014). The roller sandwiches the paper inside and conveys the paper to the print head 5015 on demand for printing an image. Ideally, the print roll 5011 includes print media in addition to a device that supplies consumed ink. The ink is consumed by the print head 5015 when printing an image.
[1782]
The printer 5010 can be constructed by proper reworking of the ArtCam examples. The printer communicates with the computer 5024 via the USB port. The printer unit 5018 is a plastic molded case and has an internal print head 5015 for printing an image.
[1783]
The printhead 5015 is connected to the printhead chip 5020 by automatic bonding technology. To reduce the size of the printer unit 5018, the printhead chip 5020 is mounted on a flexible circuit board. In order to generate an image from the description transferred to the printer unit 5018 via the USB communication cable 5022, the printhead chip is made by the latest semiconductor manufacturing technology and has a related memory and the like. Of course, many other interface formats can be used. The printer head chip can be described in advance.
[1784]
Therefore, when printing an image is desired, the computer system 5024 connected to the printer unit 5018 transfers the page description language to the print unit 5018 via the cable 5022. The print chip 5020 prepares an image to be printed later by the printer head 5015. The print roll 5011 supplies the consumed print media and ink in an easy-to-use form, and when used by the printer unit 5018, the print roll is replaced with a new print roll.
Description of technology 40
[1785]
In further adaptations, camera and printing systems will be exempted and replaced by large screen readers. The art card is set so that information is written on the back side and the display of the information is printed on the other side. For example, an art card can contain book content or newspaper content. An example of such a system is shown in FIG. 296, in which the art card 5210 has a book title on one side and printed coded data on the other side. The card 5210 is inserted into the reading device 5212. The reading device 5212 includes a display 5213 that is flexible so that it can be folded. The card reader 5212 has a display control device 5214 for turning pages forward and backward and performing other controls.
[1786]
Therefore, it can be seen that the configuration shown in FIG. 296 can efficiently distribute information in the form of books, newspapers, magazines, technical manuals, and the like.
[1787]
It will be appreciated by those skilled in the art that numerous modifications and / or modifications may be made to the invention as set forth in a particular embodiment without departing from the spirit or scope of the invention as loosely described. Will be done. Therefore, this example should be considered in all respects, whether illustrated or not.
Description of technology 47
[1788]
Further improvements are discussed in the process of "drawing" an image onto the canvas using pseudo-brush strokes. It is premised that bump map technology is used, in particular that each image used has a bump map that defines the texture of the image surface.
[1789]
FIG. 297 shows a sample round brush bump map 5901. FIG. 298 shows a cross section of line AA' of FIG. 297, which has a general contour of the surface of a typical round brush stroke 5901. Apply a brush stroke with the bump map of FIG. 297 to a typical hesian-shaped "canvas" image (the bump map is shown in FIG. 299 and the height of the BB'line is shown in FIG. 300). Is the premise. Its height consists of wavy peaks (eg, 5906).
[1790]
In a further improvement, the bump map of FIG. 298 and the bump map of FIG. 300 are combined in various ways according to the supplied stiffness factors for the formation of the final bump map. The stiffness factor is designed to produce the effect of using "rigid" or "flexible" paint. FIG. 301 shows an example in which the two bump maps of FIGS. 298 and 300 are combined for low stiffness brush paint. FIG. 302 shows an example in which the two bump maps of FIGS. 298 and 300 are combined for high stiffness brush paint.
[1791]
In a further improvement, the bump map is not simply added when the bump maps are combined, as the brush strokes of the paint have a certain degree of plasticity and fill the recesses in the background. Therefore, in order to achieve the effects of FIGS. 301 and 302, the brushstroke bump map is added to the background bump map that is lowpass filtered. The four-pass filter has a range (radius) determined by the rigidity factor of the paint. The higher the stiffness factor, the wider the range of the filter and the less surface texture of the background that can be seen through. A range of lowpass filters so that the surface texture of the filtered background converges to the actual surface texture of the background where the brush strokes are light or empty (mostly along the edges). Varies according to the brush stroke thickness.
[1792]
With reference to FIGS. 303 and 304, an example of processing using FIG. 303 showing an initial background bump map is shown. FIG. 304 shows a high-rigidity paint 5912 covering the low-pass filtered bump map 5911, and FIG. 305 shows a low-rigidity paint 5914 covering the low-pass filtered bump map 5913. Shows.
Description of technology 48
[1793]
In a further improvement, the color gamut of the input image is "morphed" into the color gamut of the output image. The color gamut of this output image is arbitrarily determined by a method of trial of a plurality of different color gamuts. Further improvements would ideally use pre-processing steps for further artistic processing, such as replacing the image with a particular style of brush stroke. The brush stroke extracts a color from the image, and the brush stroke has a color associated with the desired color gamut.
[1794]
The step of creating the final output image is shown in FIG. 306 with reference numeral 6010. The first step 6011 is to input any input image, preferably detected by the art cam device. The color gamut of the input image is "Morphed" or "Warped" to create an output image of a predetermined range of color gamuts (6012). The morphing process will be described later. Once the output color gamut is created, the next step is to apply the proper brush stroke technique. Brush stroke technology is a process that can make a big difference. In the actual form of brush strokes used, the techniques described above are not absolutely necessary for the present invention. The brush stroke technique is applied to the input image to form an output image by performing an effect with a limited color gamut.
[1795]
With reference to FIG. 307, an example of a gamot mapping and morphing problem is shown. L*a*b*It is premised that many possible color values are defined in the universal color space 6021, which is the color space, and a single color space is used. Within this color space, the input sensor can detect a range of brightness 6022. Further, it is assumed that the output printing apparatus can output a specific range of colors in the printer color gamut 6023. The printer color gamut may be smaller or larger than the color gamut 6022 of the input sensor. The artistic color gamut 6024 is defined according to a particular style. Its artistic color gamut 6024 can be carefully constructed through the use of various techniques. For example, the desired output image is scanned and the desired output image is L.*a*b*Color histograms are constructed to include certain areas within the color space. Three-dimensional L of predetermined brightness*a*b*It can be understood by those skilled in the art of computer graphics that FIG. 307 can be interpreted like a color space.
[1796]
Therefore, it is necessary to map the colors in the input sensor color gamut 6022 to the artistic color gamut 6024. Further, unfortunately, the artistic color gamut 6024 includes colors that are "overhanging color gamut" for a particular output printer color gamut 6023. In such cases, it would be necessary to map the artistic color gamut 6024 because the output colors are within the printer color gamut 6023.
[1797]
With reference to FIG. 308, the main requirement is L*a*b*Value 6031 L*a*b*This means that the art card has a 3D look-up table (eg, 6030) for transferring to the output value 6032. Preferably, the 3D look-up table 6030 is compact with specific points defined for 3D mapping and cubic interpolation utilized for mapping intermediate values between the defined points. Provided in format.
[1798]
Referring to FIG. 309, a very general example of the process for applying gamot morphing from one substantially arbitrary input gamot space 6040 to a second desired output gamot target space 6041 is shown. There is. Potentially, the gamot mapping process must process points (eg, 6042) inside the input gamot space 6040 and outside the output gamot target space 6041. The three-dimensional color look-up table 6030 is (2).n+1)3Has the size of. n ranges from 1 to the maximum color component precision (eg, usually 8 bits). Any warp is encoded in the lookup table. The use of the table also gives rise to an algorithm that makes the separately prepared coded warp functions independent. The algorithm has predictable performance for any warp function. Warp functions are not required to be contiguous. Therefore, the algorithm is robust for any warp function.
[1799]
The lookup table is a 3D array of integers, and the real number output color coordinates are arranged in the order of the input coordinates. In this way, the forward warp function is encoded.
[1800]
The color warp of the requested image is calculated pixel by pixel, in the order of the output image. The algorithm requires random access to the 3D color lookup table, but since the input colors change smoothly in space, random access is generally coherent. Sequential access to input and output images is required.
[1801]
The essential trilinear warp algorithm is implemented in the following pseudo-C ++ code.
Figure 2001523900
[1802]
The gamot compression process attempts to map the source gamot color to the smaller target gamot color in a way that minimizes perceptible color changes while preserving the color differences in the source gamot. Since the gamot compression calculation is separated from the color warping, effective gamot compression is performed using the look-up table driven process described above.
[1803]
The Gamot compression algorithm involves the construction of a 3D look-up table and is implemented with the following pseudo-code as described with reference to FIG. 309.
Figure 2001523900
[1804]
If either the source gamot or the target gamot is known in the palette form, the gamot polyhedron is calculated from the convex hull of the palette points.
[1805]
Referring to FIG. 310, a process commonly used in the creation of artistic effects, which is referred to as gamot morphing as described below, is used to turn some source gamot 6050 into a target gamot 6051. The above process can be used to map. Gamot morphing is used to directly control the mapping of colors in the source gamot to colors in the target gamot.
[1806]
Similar to gamut compression, gamut morphing may be used to resemble the color gamut of an image to a particular artistic style. Since the gamot morph calculation is separated from the color warping process, effective gamot morphing, as well as gamot compression, can be performed by an algorithm that drives a look-up table.
[1807]
Along with gamut morphing, many source gamut colors (eg 6053) are directly mapped to the same number of corresponding target gamut colors (eg 6054). The remaining target colors of the mapped targets in the lookup table are calculated as the weighted sum of a particular target color (eg, 6054). The target color is preferably weighted by the reciprocal of the square of the distance from each lookup table point to the corresponding source color.
[1808]
The Gamot morphing algorithm is embodied in the following pseudocode.
Figure 2001523900
[1809]
It will be apparent to those skilled in the art of computer graphics that the techniques described above can first be used to limit the gamot of an image to a given area. Subsequently, a brush stroke filter is subsequently applied to the restricted gamot image to produce the same effect as provided by, for example, the "pointillism" technique.
Description of technology 53
[1810]
The basics of the art cam system described above are shown in FIG. 311 with reference numeral 6501. The art cam system 6501 relies on art cam 6502, which requires an art card 6503 as input. The art card 6503 has coded information (instruction information) for processing an image scene 6504 for creating an output photo 6505, and the output photo is an instruction of the art card 6503. Image processing is performed significantly according to the information. The art card 6503 is designed not to be extremely expensive, with coded information on one side and effects on the other side that would be produced if inserted into the art cam 6502. Includes depiction.
[1811]
According to the method of further improvement, a large number of art cards 6510 are prepared and sold in packs, as shown in FIG. 312. Each pack is associated with the wearing of a particular size of garment and has an image of the model wearing the garment 6512 (eg, 6511) to which the image taken by the camera is mapped. Its mapping is ha with different art card 6510
It is also possible to have different clothing items. One form of the mapping algorithm is shown in 6520 of FIG. 313. The algorithm warps the input image first using a warp map that maps the image to an iterative tiling pattern that produces an attractive warping effect (6521). Of course, many other forms of algorithms, given by Artcard 6503 (Fig. 311), are prepared to produce attractive forms of material.
[1812]
The second warp 6522 is then prepared to warp the output of the first warp map 6521 to an image of a particular model in the art card. Therefore, Warp 6522 is unique to art cards. The result is output for printing as an art cam photo 6505 (6523). Thus, the user can show the desired image 6504 on the art cam 6502 and create an art cam photo 6505 with a processed version of the image having a fashionable clothing model. This process can be continued until the desired result is obtained.
[1813]
Next, when the final selection of cloth is made, as shown in FIG. 314, the art cam 6502 is connected to the cloth printer 6534 having an inkjet cloth printer, related drive control electronic devices, etc. via a USB port. Connected (6503). Either Artcam 6502 or Inkjet Printer 6534 is programmed to print a garment piece (eg, 6536) on cloth 6535. The garment piece has an original warp image on its surface to create the same garment as conveyed by the model of the art card.
[1814]
The output cloth has tabs (eg, 6538) for alignment and boundary areas (eg, 6539), in addition to instructions 6540 for joining the garment pieces together. Preferably, the output program comprises providing a warp matching of the edging portion to generate continuously on the intersecting seams of the garment.
[1815]
In addition, the user interface takes into account differently shaped bodies, thus preparing for the use of the same card with many different output sizes. Based on the use of art cam technology, the use of art cam mechanism 6502 can provide a system for the production of custom garments and the rapid depiction of suitable results.
Description of technology 54 **
Description of technology 56
[1816]
In a further improvement, a plurality of art cam devices as described above are connected via USB ports in order to transfer the effect of the image. The transfer of image effects is accomplished by the appropriate program in the computer section inside each art cam.
[1817]
A preferred arrangement is that a series of art cams (eg, 6802,6803,6804) are connected via their USB ports, as shown in FIG. 315 (6805). Each of the art cams 6802, 6803, 6804 is provided with art cards 6807, 6808, 6809 in which suitable image processing programs are stored. Further, an instruction to use the network environment can be given by the art cards 6807, 6808, 6809. Then, the image 6810 detected by the art cam 6802 is processed by the processing program on the art card 6807. The result is transferred to an art cam device (the next art cam device in a series of art cam devices) 6803 to which the image processing function is applied by the art card 6808 (6805). For this purpose, each art cam device has been modified to have two USB ports. The final art cam device 6804 applies the processing stored in the art card 6809 to create the output 6812, which is an integration of the image processing described above.
[1818]
Therefore, the configuration 6801 of FIG. 315 can give various effects to one detected image. Of course, many further improvements are possible. For example, each art cam may print an image it processes in addition to transferring the image to the next art cam. In addition, the paths are separated so that one art cam is output to two different downstream art cams and different final images are output. In addition, loops and the like are also used.
Description of technology 57
[1819]
In a further improvement, the disclosed technology is adapted to be incorporated into the binocular set, allowing the image to be printed at the request of the user of the binoculars. First, referring to FIG. 316, an example of a binocular system is disclosed. The binoculars 6901 are of a known type and are modified according to the principles of the present invention. The binoculars have a conventional optical lens system 6902, 6902 with a lens input. The two lens systems are attached to the connector plate 6906 via a hinge system 6904-6905. The arrangement is generally conventional.
[1820]
The first optical lens system 6902 includes a beam splitter device 6908, which splits the optical path 6909 of light incident on the optical system 6902 into two optical paths. The first optical path 6910 is directed to the side where the CCD system 6914 is mounted. The second optical path 6911 is directed in the direction of the eyepiece 6915. The beam splitter 6908 will weaken the output intensity of the light beam 6911. Therefore, an attenuation filter 6918 may be arranged to match the attenuation by the beam splitter 6908 in the optical lens system 6902.
[1821]
Therefore, the CCD imaging device 6914 captures the same scene as seen by the optical lens system 6902. The CCD device 6914 is connected to a processing system mounted on a printed circuit board 6920 having an art cam central processor and a memory device. The art cam central processor device has an important image processing function, controls the CCD device to capture an image, and uses a printhead device 6923 to print an image. The printer uses an inkjet printing device that ejects ink onto print media. The print media consists of a "paper" film (actually a suitable polymer) supplied from a removable disposable print roll 6925 containing the print media and printing inks. The print roll 6925 is housed in a housing 6925, and a battery 6927 is detachably arranged in the housing.
[1822]
When the user presses button 6919, the artcam central processing unit activates the CCD6914 to capture the scene. The image captured by the CCD device 6914 is processed by the ACP processor and transferred to the printhead for immediate and permanent recording of the captured scene for immediate printing. The printhead will be as described above again.
[1823]
Many improvements can achieve further improvements. For example, a USB port connected to the ArtCam central processor may be provided to allow the image processing algorithm to be preloaded on the binoculars 6901. A series of buttons may be arranged to activate the routine. The routine includes various image enhancement operations and the like. In addition, the output image may be modified in many different ways to emphasize the features of the image. The image may be further characterized by automatically posting relevant information about the date, time and place on the image. In addition, the binoculars may be connected to GPS so that the observer's coordinates are also immediately printed on the output image. In addition, other options such as providing a distance measuring device for identifying the location of the subject and displaying information about the subject on the output image may be provided.
Description of technology 58
Description of technology 59
[1824]
In a further improvement, the disclosed technology will be utilized to provide a fault tolerant data array on the card surface. The data is updated by rewriting to another fault tolerant sequence.
[1825]
First, referring to FIG. 317, the card 1701 is shown after the data (for example, 7102) has been written on the surface of the card and the data array has been completely written. Each data array (eg, 7102) is an array of 64 data blocks shown on the surface of the card, and about 20 KB of information is encoded. Of course, other arrays can write less or more data in each data block (eg, 7102). In the initial state, the card 7101 does not have a data block. Instead, perhaps one usage data block is written on the surface of the card.
[1826]
A second card 7105 is shown with reference to FIG. 318, which has been "updated" 12 times with the latest data block 7106, which is the last data block written. Therefore, each card (eg, 7105) is updated according to the number of data blocks given to the card and is used many times.
[1827]
With reference to FIG. 319, the configuration of one data block (eg, 7108) is shown. The block is a reduced version of the "art cam" technology. The data block 7108 comprises a data area 7109, the area having a printed dot array, the dots having a one pixel wide border in addition to a series of clock marks along the edges. A target 7110 is placed along the edge of the data area 7109 to assist in positioning and reading of the data area 7109. The configuration of each target 7110 is as shown in FIG. 320, consisting of a large black area surrounding only one white dot. Of course, other configurations are possible. The target 7110 is provided to accurately position the data area 7109. In addition, those targets 7110 are further provided to be accurately detected and to derive accurate location information.
[1828]
With reference to FIG. 321 the card reading and writing device 7120 is shown. An enlargement of the main part of FIG. 321 is shown in FIG. 322. The device 7120 has an elongated gap 7121 for inserting a card 7122 on which information is printed. Many pinch rollers (eg, 7123,7124) control the movement of the card across the printhead 7125 and the linear CCD scanner 7126. The scanner 7126 scans the data passing underneath. FIG. 322 shows an enlarged view of the arrangement of the printhead 7125 and the CCD scanner 7126 for the inserted card 722.
[1829]
With reference to FIG. 323, it is schematically shown how the card 7122 is inserted into the CCD scanner 7126. The CCD scanner 7126 conveys the card 7122 so as to pass through the scanner, and the information stored in the card 7122 is decoded by the art cam central processor unit attached to the CCD scanner 7126. If the card 7122 is to be removed from the card reader, a decision is made as to whether or not a new block needs to be written to the card. The location of the new block is known from the previously scanned CCD data. Card removal is performed as shown in FIG. 324 so that the card passes through the printhead 7125 and the CCD scanner 7126. The scanner 7126 monitors the current position of the card 7122, and as shown in FIG. 325, the printhead 7125 ejects ink droplets when it is desired to update the square area 7128 with new data. Then, the card is taken out from the device (FIG. 321) in a manner similar to that of a floppy disk or the like. The card is then used continuously until all the data space is filled and a new card is created.
[1830]
Therefore, the use of the card system described above provides an effective and inexpensive form of information placement in that cards can be made inexpensively and used in an elastic way for information placement. It will be obvious.
[1831]
Referring to FIG. 326, a block diagram of different functions utilized in the art card reader is shown. The printhead 7125 and linear CCD7126 are operated under the control of a properly programmed ArtCam Central Processor (ACP) Chip (ACP) 7130. The ACP 7130 includes a memory 7131 for storing scanned data and other data and programs. In addition, the ACP controls various motors 7132 that actuate the pinch rollers. Of course, other control buttons and the like may be arranged as required. The use of such formations provides a system for monitoring and updating the information stored on the surface of the card.
Description of technology 60
[1832]
Further improvements will provide art card photo vending machines that can create their own art cards at the request of the user. The vending machine is constructed in the same way as a regular photo vending machine, but the essential element is the requirement for computational resources that are configured to automatically create art cards within a given time. Absent.
[1833]
First, with reference to FIG. 327, the functional elements of the further improvement 7201 are illustrated graphically. Further Improvement 7201 has a high resolution scanner 7202 for scanning the user's sample photo 7203. On the other hand, the scanner 7202 may optionally be allowed to process their photographs in order to give the art card creation system an added degree of realism. Photo 7203 scanned by scanner 7202 is transferred to mission-critical computer system 7204, which is a high-end PC-type computer with the proper operating system and programs. The computer 7204 controls the storage of scanned photographs and the photo printer and art card printer 7205. The photographic printer and the art card printer 7205 can preferably print on both sides of the output print media, and can use printing techniques as previously disclosed. The printer 7205 outputs a processed version of the user's photo 7206 in addition to the art card 7207. Both sides of the art card are printed. Includes coded instructions for image processing in Photo 7203 to generate Photo 7206. The encoded instructions are output in artcard format.
[1834]
The computer system 7204 also has a user interface 7209, such as a standard touch screen type. The computer system 7204 also controls or incorporates a payment system 7210. The payment system 7210 comprises a standard coin or banknote payment system or a credit payment system that makes an appropriate network connection with a credit card service provider for transaction approval. In addition, EFTPOS equipment may be provided.
[1835]
When the user inserts their photo 7203 into the scanner slot 7202, the photos are scanned, stored and subsequently ejected. Next, the user operates the user interface 7209 located in the "photo booth". The user interface 7209 first directs the payment system 7210 to pay money. However, at the core of the user interface 7209 is the creation of various art cards with a touch screen.
[1836]
An example of a suitable user interface is shown in FIG. 328. The core of the user interface consists of showing the user many sample thumbnail images 7213 that are processed by the methods described below. First, image processing 7213, such as company events, birthday events, seasonal events, processing types, etc., is placed in the subject area. The user selects a favorite image (eg, 7213) using the touch screen. If the desired image does not exist, the user can press the arrow button 7214 to display other processing. When the user selects image 7213, the image is used to generate an alternative that has a "theme" similar to that image and presents a series of processes. The user can continue to select images from the selected type.
[1837]
The desired image can be saved by using the save button 7217. The user interface then indicates a saved selection 7218. The navigation button 7215 is for returning to the previous screen, and the navigation button 7216h is for returning to a higher position. According to this method, users can search various art cards to create their own customized requirements. According to this method, unique artistic creative activities encourage the creation of unique art cards.
[1838]
The creation of such various art cards relies on genetic algorithmic techniques that give the user the role of the creator in the creation process. Here, with reference to FIG. 329, an example of a software layout of an application executed on the computer system of FIG. 327 is shown. The software layout 7220 includes a genetic pool of image processing 7221 that can be performed and theme processing that is adapted to a particular image. This genetic pool is utilized by the genetic algorithm core for the generation of new species (genus). An introduction to the standard text of genetic algorithms is, for example, by "Genetic Algorithms" Golberg, which has been updated in this area. Alternatively, the field of gene programming can be utilized, and in this regard, refer to a general study by Koza entitled "Gene Programming".
[1839]
The core of the genetic algorithm can also use the user's choice 7223 in creating new and suitable images. The core output of the genetic algorithm contains suitable new images that are transferred to the user interface module 7225 for display on a touch screen display.
[1840]
Returning to FIG. 328 again, when the user discovers his / her favorite selection, he / she can press the accept button 7219. As a result, payment by the user is requested and accepted. Further, the computer system is instructed to output an image to the printer 7205 in addition to a series of image processing on the art card 7207 so that the user can use the art card 7207 with another device (for example, the art cam device described above). It is done by 7204 (Fig. 327).
[1841]
Therefore, it will be apparent to those skilled in the art that further improvements will provide a system for creating complex, personalized images that users can use separately. The use of many images results in significant fluctuations in the combination of art cards that can lead to equally important personalities.
[1842]
Of course, many other types of core technologies can be used to build images. For example, other non-genetic techniques may be suitable. In the worst case, the selection of each image is prepared manually. In addition, other user interface mechanisms may be provided. In addition, the invention can also be run in a non-vending environment, such as a standard computer system.
[1843]
Further refinement operations prepare for an important expression of personal creativity. And it is thought that the individual creation by the artist may show important value in providing the art card "series" of the individual artist.
Description of technology 61
Description of technology 62
[1844]
The basics of the art cam arrangement described above are shown in FIG. 330 in the form of a schematic diagram. This array has a CCD sensor 7402 for detecting images and scenes. In addition, an art card reading sensor 7403 is provided to read the art card 7408 for a coded image processing algorithm for processing the detected image. Both the CCD sensor 7402 and the art card reading sensor 7403 are connected to an art card central processing unit (ACP) 7404 that provides complex computing power for processing the detected images. In addition, a memory unit 7405 is provided for storing images, detected data, programs, and the like. Connected to the ACP 7404 is a print head 7406 for printing the final photo 7404 on the print media supplied by the internal print roll.
[1845]
In a further improvement, a unique series of art cards 7408 is inserted into the art card reader 7403 to give unique control to the art cam central processor 7404. A first example, as shown in FIGS. X2 and 332, provides the use of multiple art cards to provide the effect of superimposed or augmented images. A suitable reproduction art card is shown in FIG. 332 at 7410, provided on one side with instructions on how to operate the camera device to produce an effect. On the other side surface, instructions for operating the art cam device for producing the effect are provided. With reference to FIG. 331, an example of operating a repetition card to produce a combined effect is shown. The art cam system has a detected image or a stored image of a certain scene. The first step is to insert a repetition card 7413 with a code that modifies the operation of the art cam system to enter the repetition mode. Subsequently, the first art card 7414 is inserted into the art card reading sensor 7403, and the image is given the first effect according to the instructions of the card 7414 (see reference numeral 7415). Subsequently, the repetition card is reinserted (reference numeral 7416), then a second art card 7417 is inserted, for example, giving a second effect of placing a text message on the image (reference numeral 7418). Next, the repetition card 7419 is inserted again, and then the third art card 7420 is inserted, further effect is given to the image 7421. The process of FIG. 331 is repeated as required to form the desired output image. According to this method, the above-mentioned device is used flexibly in order to create a combination effect from an art card having only one effect. Moreover, the provided user interface is simple and effective in creating the effect of the combination. Of course, many changes can be made. For example, in another embodiment, the repetition card is inserted only once, and a series of art cards are inserted following the repetition card.
[1846]
Referring to FIG. 333, another art card 7430 is shown for internal testing of the art cam system. Each art cam system has many internal test routines in its internal ROM. The test is accessed by a special function call in the translation language provided by the Artcam central processor. The routine is a specification of the art cam device, eg,
With a printout of test patterns to determine the operating status of the printhead;
With a test pattern printout (eg, an all-black print) that performs the printhead manipulation process for nozzle cleaning and for nozzle arrangements that improve printhead manipulation;
A test pattern should be printed for later analysis to demonstrate the effectiveness of the printhead operation;
Is included.
[1847]
Reference to FIG. 334 shows a sample of test output 7435 with various internal data for reference, in addition to a printout of test pattern 7437. The test pattern 7437 can be investigated later by an automatic or proactive method of identifying any problems that may be present in the camera system. Further improvements are made through the use of software routines programmed into the art cam device and stored in ROM memory.
[1848]
Of course, many improvements can be expected by updating or changing the routine. Many tests are not really limited. According to this method, the operation of the camera device can be changed according to the inserted card.
Description of technology 63
Description of technology 64
[1849]
In a further improvement, magnetically sensitive print media materials are used to record voice messages on the back of the output photo. The art cam device is modified to include an array of magnetic recorders that cover the entire surface of the photo, or a magnetic recorder consisting of magnetic bands, such as, for example, a magnetically sensitive central part of the photo. The art cam device is further endowed with the ability to record a voice message for later playback.
[1850]
In a further improvement, the art cam device will be appropriately modified to be equipped with a microphone device and related recording techniques. When you take a picture, you are given the opportunity to record either the ambient sound environment or the messages associated with the image. The print media or film, like tape media, is pretreated to be magnetically sensitive. Recording is done on the entire back surface of the output photograph or on the magnetically sensitive band. The recorded audio is retained on the back of the output photo in coded format. The coding is preferably in a highly digitally reproducible format. The recorded audio provides a permanent audio recording related to the photo. The playback device is then provided to scan the coded audio and decrypt this information.
[1851]
With reference to FIG. 335, a further improvement 7601 is shown in schematic form, including the configuration described above, i.e., a configuration in which the image 7602 is detected by the CCD sensor 7603 and transferred to the art cam central processor 7604. The art cam central processor 7604 stores images in a memory 7605, preferably consisting of a memory of a high speed RAMBUS® interface. The ArtCam central processor 7604 also includes a magnetic recording head 7616 for recording on the back of a photo, as well as a print head 7606 (for printing a full-color photo 7607 to provide an instant image on demand). It is designed to control the operation.
[1852]
In a further improvement, the camera organization 7601 includes a sound chip 7610 interfaced to memory 7605 via RAMBUS bus 7611 under the control of ACP processor 7604. The sound chip 7610 may be in standard format or in a dedicated format, and may include, for example, a DSP processor that obtains an analog input 7612 from the sound microphone 7613. Alternatively, with the complexity of the chip (Moore's Law), the functionality of the sound chip 7610 can be incorporated into the ACP chip 7604, preferably with state-of-the-art CMOS integrated circuit chips. It will be readily apparent that many other types of knitting can be provided that fall within the scope of the present invention.
[1853]
The sound chip 7610 converts the analog input 7612 into the corresponding digital format and transfers it for storage in memory 7605. Such a recording process can be activated by pressing a button (not shown) on the camera device. The button is under the control of the ACP processor 7604 or can otherwise be substantially automated when taking a picture. The recorded data is stored in the memory 7605.
[1854]
With reference to FIG. 336, the camera organization preferably has a printer device 7606 (having a printhead used to print an image on the print media 7617) and a magnetic recording printhead 7616 (information on the back of the print media 7617). Used to print) and. With reference to FIG. 337, an output example of the magnetic band 7618 formed on the back surface of the photo media 7617 is shown. The magnetic band is recorded by the recording head 7616 of FIG. 336. The recorded information includes location, date and time data, where location data is provided by keyboard input or by the use of ancillary positioning systems such as GPS and the like. Importantly, the encoded audio information is recorded on the back surface of the image 7617. There can be many different encoding methods, but preferably they are encoded in advanced fault tolerant methods to tolerate errors. The form of sophistication may utilize Reed-Solomon coding of the data to provide a high degree of fault tolerance.
[1855]
Referring to FIG. 338, when it is desired to "reproduce" the recorded voice, a reading device 7626 is used, and the photo 7617 is sandwiched between the pinch rollers and passed through the magnetic sensor device 7627.
[1856]
With reference to FIG. 339, the operation of the voice reading device 7626 of FIG. 338 is shown in schematic form. The magnetic sensor 7627 is connected to a second art cam central processor 7628 to read and decode the data stored on the back of the photograph. The decoded audio information is stored in the memory 7632 and reproduced by the speaker 7629 via the sound processing chip 7633. The sound processing chip 7633 is operated under the control of the ACP decoder 7628, and is sequentially operated based on various input controls 7633 of the user such as volume control, rewind, playback, and fast forward.
[1857]
As can be understood from the above description of further improvements, a system for automatic recording of audio related to the output image is provided and audio recording related to photography is performed. Also disclosed is a voice reading system for reading an image recorded on the back of a photograph. It will be appreciated by those skilled in the art that numerous modifications and / or modifications may be made to the invention as set forth in a particular embodiment without departing from the spirit or scope of the invention as loosely described. Will be done. For example, it is used for more complicated audio recording / playback technology such as stereo and B format technology.
Description of technology 65
[1858]
In a further improvement, the art cam device described above is properly programmed to print a "negative" using a printhead. The negative conforms to the standard art card format so that it can be inserted and used in the art card sensor device. The art card sensor device detects the information stored on the "negative" art card and prints the photo.
[1859]
First, with reference to FIG. 340, a standard art cam device 7701 including a sensor device 7702 that detects an image upon request and a card reading sensor 7703 for detecting art card information is shown in schematic form. ing. These sensors 7702, 7703 are operated under the control of the ArtCam central processor 7704, which is an important computational means for the operation of the Artcam device. The artcam central processor 7704 can include an onboard CPU in addition to a fully vectorized VLIW (very long instruction word) central processor. In addition to processing the acquired image 7702, ACP7704 processes and decodes the art card (information) read by the art card reading device 7703. In order to form a processed image to be printed by the print head 7706 on the print media supplied by the internal print roll and output the photograph 7707, the ACP 7704 interacts with the memory 7705. The art cam system 7701 is designed to build a complete portable camera system, which is for printing photo 7707 on demand under the control of the printhead 7706 (the printhead is under the control of the ACP processor 7704). It has a print roll (built-in, disposable, for supplying print media and ink) connected to the).
[1860]
With reference to FIG. 341, 7710 is shown which is a step of operation of the art cam system of FIG. 340, which follows further improvements. In a further improvement, first, the desired image is taken using the first art cam device (7710). The captured image is then processed to provide an output data format that is highly fault tolerant and can be recovered. The process can include compression of Reed-Solomon encoded data in addition to pseudo-randomly expanding the data into an array of images, duplicated data, and data values. The output format can be the same as provided by the "art card" device as described above, in addition to image compression, if desired. In addition to the output data of the art card, the thumbnail image of the detected image is printed along with the encoded data.
[1861]
As shown in FIG. 342, the art card organization includes an art cam device 7701 that acquires an image 7720 by a CCD sensor 7702 and outputs an art cam "negative" 7721. The "negative" format includes a thumbnail 7724 of the input image and a highly encoded 7722 of the detected image. Although not shown in FIG. 342, the output is usually cut along line 7725 by a cutting device within the art cam device 7701.
[1862]
The data area 7722 is printed with a series of markings (eg, 7727, 7728) along the side edges of the area 7722. Those marks 7727, 7728 give the exact location of the data area 7722 when scanned. By printing the "negative" 7721, a semi-permanent record of the image is obtained. This "negative" 7721 is stored in a manner similar to storing a photographic negative. If a further, higher quality copy of the acquired image is required, the art card "negative" is inserted into the art card reader 7703 of the art cam device of FIG. 342 (7713 of FIG. 341). The art card data is decrypted in the usual way to obtain the original image. The encoded data can include the original image and the instructions necessary to print the image with an art cam device. The detected card is decrypted (7714 in FIG. 341) and printed many times upon request (7715) to obtain the original image. That is, the detected image is output. Therefore, a system for copying the detected image with high resolution and high resilience can be obtained.
[1863]
Other embodiments can also be configured. For example, an organization that automatically prints the "negative" data on the back surface of a photographic surface may be used. Such an organization is shown in FIG. 343. What is shown in the figure is the back surface of Photo 7730, in which the data coding area 7731 is printed in addition to the thumbnail portion 7732. Therefore, the data area 7731 can provide a semi-permanent, high-precision recording of an image on the surface of the card 7730.
Description of technology 66
[1864]
Further improvements will provide art card printers that can output a large number of art cards in response to random output requests. The printer of that product is connected to the printer of another product via the network, and the integrated computer system controls the network to distribute the art cards according to a predetermined request. In this way, the production of art cards is controlled to give them a high degree of flexibility.
[1865]
With reference to FIG. 344, only one art card printer 7801 is shown in the form of a schematic. The printer has two printheads 7802, a printhead 7802 for printing an image on the upper surface of the art card and a printhead 7803 for printing an image instruction manual (encoded) on the lower surface of the art card. , 7803. The printhead 7802 can be a three-color printhead having an ink supply unit 7806. The bottom printer 7803 can be a monochromatic printhead with one ink supply 7807. The printer 7801 is operated under the control of a computer system to print out an art card upon request. After printing, a punching device 7809 is arranged to punch out the art cards from the base plate 7810 (where a large number of art cards are arranged for distribution purposes). Distribution according to the requirements of a given area.
[1866]
With reference to FIG. 345, a general array of control networks 7820 for the art card delivery system is shown. A series of printer computer devices (eg, 7821) are arranged and connected together to a network 7822 that can take various forms on demand. The central integrated computer 7823 controls the network 7822 and the printer computer (for example, 7821), and the printer computer (for example, 7821) sends an instruction to print a combination of art cards. The printer computer (eg, 7821) can be located in rural areas on demand. Alternatively, the printer computers may be centrally located, but may be sent to different regions or ordered to meet different demands. Each printer computer can have a large cache of art cards. The cache can be provided in a memory, an optical disc, or a CD-ROM appropriately distributed to each printer computer. The central integrated computer distributes a list of art cards to be printed by the printer computer. In addition, a new art card is read into the central integrated computer 7832 and sent to the associated printer computer (eg, 7821) upon request. The distribution is in the form of a cached distribution array.
[1867]
With reference to FIG. 346, one form of a suitable organization 7830 of the printer computer is shown. The organization 7830 includes a core computer system 7831, which is a high-end PC type computer having a large memory and disk capacity. The computer system 7831 is connected to an art card printer 7832 arranged according to the organization of FIG. 344. The computer system 7831 includes a large store of cached art cards 7833 in addition to the network 7834. Therefore, the list of art cards to be printed out is transferred from the central computer to each printer computer for printing the art cards.
[1868]
The organization of FIG. 345 overcomes the complex distribution problem of large combinations and proves to be an improved form of the distribution system.
Inkjet technology
[1869]
An example of the present invention uses an inkjet printer type device. Of course, many different devices can be used. However, the currently popular inkjet printing technology is unlikely to be suitable.
[1870]
The most important issue with thermal inkjet is power consumption. Due to the poor energy efficiency of ink droplet ejection, the power required for high speed is about 100 times. This is because the rapid boiling of water is required to generate the vapor bubbles that eject the ink. Water has a very high heat capacity and is overheated in the use of thermal inkjet. It requires an efficiency of about 0.02% because it converts the input of electricity into the output of motion.
[1871]
The most important issues with piezo electric inkjet are size and cost. Piezo electric crystals have very small deflections at the right drive voltage and therefore require a large area for each nozzle. Also, each piezo electric actuator must be connected to a separate board drive circuit. This is not an important issue in the current limit of about 300 nozzles, but is a major obstacle to the manufacture of page width printheads with 19,200 nozzles.
[1872]
Ideally, the inkjet technology used would require private digital color printing and other high quality, high speed, low cost print utilization. New inkjet technologies have been created to meet the demands of digital photography. The characteristics of the purpose are as follows. : That is
Low power (less than 10 watts)
High resolution performance (1,600 dpi or higher)
Photo quality output
Low manufacturing cost
Small size (adjust page width to minimize cross width)
High speed (<2 seconds per page)
[1873]
All of these features can be overcome with different levels of difficulty with the inkjet system described below. Forty-five different inkjet technologies have been developed by successors to give them a wide selection for high volume production. These techniques form a separate application designated by the Applicant, as shown in the table below.
[1874]
The inkjet design presented here is suitable for a wide range of digital printing systems, from battery-powered, single-use digital cameras to desktop network printers and commercial printing systems.
[1875]
For easy manufacturing using standard equipment, the printhead is designed by a MEMS post-processing method into a monolithic 0.5 micron CMOS chip. For the application of color photography, the printhead is 100 mm long and has a width depending on the type of inkjet. The smallest printhead is IJ38, width 0.35mm, 35mm2Has a chip area of. The printhead has 19,200 nozzles and data and control circuits.
[1876]
The ink is supplied to the back of the printhead via an injection molded plastic ink passage. The molding requires 50 micro features. Its features can be formed using lithographic micromachined inserts in standard injection molding tools. Ink flows into a nozzle chamber formed on the front surface of the wafer through holes formed to penetrate the wafer. The printhead is connected to the camera circuit by a TAB.

Applications with cross-references
[1877]
The following table is a guide to recently filed US patent applications. These applications are filed together with them and are considered with reference to the references used in subsequent tables when referring to special cases. These applications are also filed like Australian provisional patent applications with corresponding reference numbers (as shown in the table above).
[Table 212]
Figure 2001523900
[Table 213]
Figure 2001523900
Drop-on-demand inkjet
[1878]
Eleven important features regarding the basic operation of individual inkjet nozzles have been identified. These features are largely orthogonal and can therefore be elucidated as an 11-dimensional matrix. Most of the 11 axes of this matrix contain entries developed by the applicant.
[1879]
The following table forms the axes of an inkjet type 11-dimensional table.
Actuator mechanism (18 types)
Basic operation mode (7 types)
Auxiliary actuator (8 types)
Actuator amplification and improvement method (17 types)
Actuator movement (19 types)
Nozzle replenishment method (4 types)
Method to limit backflow to the suction port (10 types)
Nozzle cleaning method (9 types)
Nozzle plate structure (9 types)
Drop ejection direction (5 types)
Ink type (7 types)
[1880]
The complete 11-dimensional table represented by these axes contains 36.9 billion possible forms for inkjet nozzles. Millions are feasible, though not all of them are feasible in various inkjet technologies. Explaining all possible forms is clearly unrealistic. Instead, several inkjet types have been scrutinized in detail. They are the designated IJ01 to IJ45 mentioned above.
[1881]
Other inkjet forms can be immediately derived from these 45 examples by substituting alternative forms along one or more of the 11 axes. Most of the IJ01 to IJ45 can incorporate into the inkjet printhead some features that are superior to the currently available inkjet technology.
[1882]
If there are prior art examples known to the inventor, one or more of these are shown in the Examples column of the table below. The IJ01 to IJ45 series are also shown in the Examples column. In some cases, if the printers share one or more features, they may be listed more than once in a table.
[1883]
Suitable applications include: That is, home printers, office network printers, short-term digital printers, commercial print systems, cloth printers, pocket printers, Internet www printers, video printers, medical images, large format printers, laptop printers, copiers. , Industrial printing systems, photo copiers, photo development shops, etc.
[1884]
The information associated with the 11-dimensional matrix described above is shown in the table below.
[1885]
[Table 214]
Figure 2001523900
[1886]
[Table 215]
Figure 2001523900
[1887]
[Table 216]
Figure 2001523900
[1888]
[Table 217]
Figure 2001523900
[1889]
[Table 218]
Figure 2001523900
[1890]
[Table 219]
Figure 2001523900
[1891]
[Table 220]
Figure 2001523900
[1892]
[Table 221]
Figure 2001523900
[1893]
[Table 222]
Figure 2001523900
[1894]
[Table 223]
Figure 2001523900
[1895]
[Table 224]
Figure 2001523900
[1896]
[Table 225]
Figure 2001523900
[1897]
[Table 226]
Figure 2001523900
[1898]
[Table 227]
Figure 2001523900
[1899]
[Table 228]
Figure 2001523900
[1900]
[Table 229]
Figure 2001523900
[1901]
[Table 230]
Figure 2001523900
[1902]
[Table 231]
Figure 2001523900
[1903]
[Table 232]
Figure 2001523900
[1904]
[Table 233]
Figure 2001523900
[1905]
[Table 234]
Figure 2001523900
[1906]
[Table 235]
Figure 2001523900
[1907]
[Table 236]
Figure 2001523900
[1908]
[Table 237]
Figure 2001523900
[1909]
[Table 238]
Figure 2001523900
[1910]
[Table 239]
Figure 2001523900
[1911]
[Table 240]
Figure 2001523900
[1912]
[Table 241]
Figure 2001523900
[1913]
[Table 242]
Figure 2001523900
Inkjet printing
[1914]
A significant number of new inkjet printers have been developed to replace inkjet technology as a preferred embodiment. Various combinations of inkjet devices can be included in the printer devices disclosed as part of the present invention. There is an Australian provisional patent specification relating to these inkjets, specifically indicated by a cross-reference table. That is,
[Table 243]
Figure 2001523900
[Table 244]
Figure 2001523900
Inkjet production
[1915]
In addition, the application may use advanced semiconductor manufacturing techniques to build a large number of inkjet printers. Suitable manufacturing techniques are disclosed in the specification of the Australian provisional patent shown in the following cross-reference table.
[Table 245]
Figure 2001523900
[Table 246]
Figure 2001523900
[Table 247]
Figure 2001523900
Fluid supply
[1916]
Further, in this embodiment, an ink delivery system to an inkjet head may be used. A delivery system for supplying ink to a series of inkjet nozzles is disclosed in the specification of the Australian provisional patent shown in the following cross-reference table.
[Table 248]
Figure 2001523900
MEMS technology
[1917]
Further, the present application may utilize advanced semiconductor microelectromechanical technology (MEMS technology) when arranging inkjet printers. Suitable microelectromechanical techniques are disclosed in the specification of the Australian provisional patent shown in the following cross-reference table.
[Table 249]
Figure 2001523900
[Table 250]
Figure 2001523900
IR technology
[1918]
Further, the present application may utilize a disposable camera system as disclosed in the specification of the Australian provisional patent shown in the following cross-reference table.
[Table 251]
Figure 2001523900
Dot card technology
[1919]
Further, the present application may use a data distribution system as disclosed in the specification of the Australian provisional patent shown in the following cross-reference table.
[Table 252]
Figure 2001523900
Art cam technology
[1920]
Further, the present application may use cameras and data processing techniques such as the art cam type device disclosed in the specification of the Australian provisional patent shown in the following cross-reference table.
[Table 253]
Figure 2001523900
[Table 254]
Figure 2001523900
[Table 255]
Figure 2001523900
[1921]
It is possible for one of ordinary skill in the art to make various modifications and modifications to the present invention set forth in a particular embodiment without departing from the broadly described scope and spirit of the invention. This example should therefore be considered in all respects as exceptional and not restrictive.
[Simple explanation of drawings]
[1922]
FIG. 1
It is explanatory drawing of the art cam apparatus configured by a suitable embodiment.
FIG. 2
It is a schematic block diagram of the main art cam electronic components.
FIG. 3
It is a schematic block diagram of an art cam central processor.
FIG. 3 (a).
It is a detailed figure of a VLIW vector processor.
FIG. 4
It is a detailed view of a processing unit.
FIG. 5
It is a detailed view of ALU188.
FIG. 6
It is a detailed figure of an input block.
FIG. 7
It is a detailed figure of an output block.
FIG. 8
It is a detailed figure of a register block.
FIG. 9
It is a detailed view of a crossbar 1.
FIG. 10
It is a detailed view of a crossbar 2.
FIG. 11
It is a detailed figure of a read process block.
FIG. 12
It is a detailed figure of a read process block.
FIG. 13
It is a detailed view of a barrel shifter block.
FIG. 14
It is a detailed figure of an adder / logic block.
FIG. 15
It is a detailed figure of a multiplication block.
FIG. 16
It is a detailed figure of the I / O address generator.
FIG. 17
It is explanatory drawing of the pixel storage format.
FIG. 18
It is explanatory drawing of the sequential reading italator process.
FIG. 19
It is explanatory drawing of the box read italator process.
FIG. 20.
It is explanatory drawing of the box writing italator process.
FIG. 21.
It is explanatory drawing of the vertical strip read / write italator process.
FIG. 22.
It is explanatory drawing of the vertical strip read / write italator process.
FIG. 23.
It is explanatory drawing of the sequential generation process.
FIG. 24.
It is explanatory drawing of the sequential generation process.
FIG. 25.
It is explanatory drawing of the vertical strip generation process.
FIG. 26.
It is explanatory drawing of the vertical strip generation process.
FIG. 27.
It is explanatory drawing of the pixel data structure.
FIG. 28.
It is explanatory drawing of the pixel processing process.
FIG. 29.
It is a schematic block diagram of a display controller.
FIG. 30.
It is explanatory drawing of the CCD image organization.
FIG. 31.
It is explanatory drawing of the storage format for a logical image.
FIG. 32.
It is explanatory drawing of the internal image memory storage format.
FIG. 33.
It is explanatory drawing of the image pyramid accumulation format.
FIG. 34.
It is explanatory drawing of the time series of the process of sampling an art card.
FIG. 35.
It is explanatory drawing of the super sampling process.
FIG. 36.
It is explanatory drawing of the process of reading a rotated art card.
FIG. 37.
It is a flowchart of steps necessary for decrypting an art card.
FIG. 38.
It is an enlarged view of the left corner of a single art card.
FIG. 39.
A single target for detection.
FIG. 40.
It is explanatory drawing of the method used for detecting a target.
FIG. 41.
It is explanatory drawing of the method of calculating the distance between two targets.
FIG. 42.
It is explanatory drawing of the process of center of gravity drift.
FIG. 43.
It is a figure which shows one form of the center of gravity look-up table.
FIG. 44.
It is explanatory drawing of the center of gravity update process.
FIG. 45.
It is explanatory drawing of the look-up table for delta processing used in a preferred embodiment.
FIG. 46.
It is explanatory drawing of the process of descrambling an art card.
FIG. 47.
It is an enlarged view of the series of dots.
FIG. 48.
It is explanatory drawing of the data side of a dot card.
FIG. 49.
It is a schematic explanatory diagram of a single data block.
FIG. 50.
It is explanatory drawing of a single data block.
FIG. 51.
It is a partially enlarged view of the data block of FIG.
FIG. 52.
It is a partially enlarged view of the data block of FIG.
FIG. 53.
It is explanatory drawing of the single target structure.
FIG. 54.
It is explanatory drawing of the target structure of a data block.
FIG. 55.
It is explanatory drawing of the positional relationship of the target with respect to the border clock area of a data area.
FIG. 56.
It is explanatory drawing of the orientation column of a data block.
FIG. 57.
It is explanatory drawing of the array of dots of a data block.
FIG. 58.
It is a schematic explanatory diagram of the structure of the data of Reed-Solomon coding.
FIG. 59.
It is explanatory drawing of the exemplary Reed-Solomon coding process.
FIG. 60.
It is explanatory drawing of the Reed-Solomon coding process.
FIG. 61.
It is explanatory drawing of the layout of the coded data in a data block.
FIG. 62.
It is explanatory drawing of the sampling process when sampling an alternative art card.
FIG. 63.
It is an enlarged view of an example of sampling a rotated alternative art card.
FIG. 64.
It is explanatory drawing of the scanning process.
FIG. 65.
It is explanatory drawing of the scanning distribution which a scanning process may occur.
FIG. 66.
It is a figure which shows the relationship between the probability of a symbol error and a Reed-Solomon block error.
FIG. 67.
It is a flowchart of a decoding process.
FIG. 68.
It is a process operation diagram of the decryption process.
FIG. 69.
It is explanatory drawing of the data flow step in decoding.
FIG. 70.
It is a detailed figure of a reading process.
FIG. 71.
It is a detailed diagram of the process of detecting the start of an alternative art card.
FIG. 72.
It is a detailed figure of a bit data extraction process.
FIG. 73.
It is explanatory drawing of the segmentation process used in the decoding process.
FIG. 74.
It is a detailed view of the decryption process which finds a target.
FIG. 75.
It is explanatory drawing of the data structure used when finding a target.
FIG. 76.
It is explanatory drawing of Lancos3 function structure.
FIG. 77.
It is a partially enlarged view of the data block which shows a clock mark and a border area.
FIG. 78.
It is explanatory drawing of the processing step at the time of decoding a bit image.
FIG. 79.
It is explanatory drawing of the data flow step at the time of decoding a bit image.
FIG. 80.
It is explanatory drawing of the descrambling process of a suitable embodiment.
FIG. 81.
It is explanatory drawing of one Embodiment of a convolver.
FIG. 82.
It is explanatory drawing of a combo process.
FIG. 83.
It is explanatory drawing of the composite process.
FIG. 84.
It is a detailed view of a normal composite process.
FIG. 85.
It is explanatory drawing of the warp process which uses a warp map.
FIG. 86.
It is explanatory drawing of the warp bilinear interpolation process.
FIG. 87.
It is explanatory drawing of the process of span calculation.
FIG. 88.
It is explanatory drawing of the basic span calculation process.
FIG. 89.
It is explanatory drawing of one detailed embodiment of a span calculation process.
FIG. 90.
It is explanatory drawing of the process of reading an image pyramid level.
FIG. 91.
It is explanatory drawing of the method of using a pyramid table for bilinear interpolation.
FIG. 92.
It is explanatory drawing of the histogram collection process.
FIG. 93.
It is explanatory drawing of the color conversion process.
FIG. 94.
It is explanatory drawing of the color conversion process.
FIG. 95.
It is a detailed figure of a color space conversion process.
FIG. 96.
It is explanatory drawing of the process of calculating the input coordinates.
FIG. 97.
It is explanatory drawing of the process of composite processing with feedback.
FIG. 98.
It is explanatory drawing of the general-purpose scaling process.
FIG. 99.
It is explanatory drawing of the scale in the X scaling process.
FIG. 100.
It is explanatory drawing of the scale in the Y scaling process.
FIG. 101.
It is explanatory drawing of a mosaic process.
FIG. 102.
It is explanatory drawing of the subpixel moving process.
FIG. 103.
It is explanatory drawing of the composite process.
FIG. 104.
It is explanatory drawing of the process of compositing with feedback.
FIG. 105.
It is explanatory drawing of the process of tiling with the color from the input image.
FIG. 106.
It is explanatory drawing of the process of tiling with feedback.
FIG. 107.
It is explanatory drawing of the process of tiling by texture replacement.
FIG. 108.
It is explanatory drawing of the process of tiling with the color from the input image.
FIG. 108.
It is explanatory drawing of the process of tiling with the color from the input image.
FIG. 109.
It is explanatory drawing of the process of giving a texture without feedback.
FIG. 110.
It is explanatory drawing of the process of giving a texture with feedback.
FIG. 111.
It is explanatory drawing of the process of rotation of a CCD pixel.
FIG. 112.
It is explanatory drawing of the process of interpolation of a green subpixel.
FIG. 113.
It is explanatory drawing of the process of interpolation of a blue subpixel.
FIG. 114.
It is explanatory drawing of the process of interpolation of a red subpixel.
FIG. 115.
It is explanatory drawing of the process of CCD pixel interpolation which is rotated 0 degrees with respect to odd-numbered pixel rows.
FIG. 116.
It is explanatory drawing of the process of CCD pixel interpolation which is rotated 0 degrees with respect to even number pixel rows.
FIG. 117.
It is explanatory drawing of the process of color conversion to a Lab color space.
FIG. 118.
It is explanatory drawing of the process of calculation of 1 / √X.
FIG. 119.
It is a detailed explanatory drawing of the Example of the calculation of 1 / √X.
FIG. 120.
It is explanatory drawing of the process of normal calculation by a bump map.
FIG. 121.
It is explanatory drawing of the process of illuminance calculation by a bump map.
FIG. 122.
It is a detailed explanatory view of the process of illuminance calculation by a bump map.
FIG. 123.
It is explanatory drawing of the process of calculation of L using a directional light.
FIG. 124.
It is explanatory drawing of the process of calculation of L using an omni light and a spotlight.
FIG. 124.
It is explanatory drawing of one Embodiment of calculation of L using an omni light and a spotlight.
FIG. 126.
N. It is explanatory drawing of the process of calculating the L inner product.
FIG. 127.
N. It is a detailed explanatory diagram of the process of calculating the L inner product.
FIG. 128.
R. It is explanatory drawing of the process which calculates the V inner product.
FIG. 129.
R. It is a detailed explanatory diagram of the process of calculating the V inner product.
FIG. 130.
It is explanatory drawing of input and output of attenuation calculation.
FIG. 131.
It is explanatory drawing of the actual embodiment of the attenuation calculation.
FIG. 132.
It is explanatory drawing of the graph of a cone factor.
FIG. 133.
It is explanatory drawing of the process of penumbra calculation.
FIG. 134.
It is explanatory drawing of the corner used for the penumbra calculation.
FIG. 135.
It is explanatory drawing of the input and output to the penumbra calculation.
FIG. 136.
It is explanatory drawing of the actual embodiment of a penumbra calculation.
FIG. 137.
It is explanatory drawing of the input and output to the ambient light calculation.
FIG. 138.
It is explanatory drawing of the actual embodiment of the ambient light calculation.
FIG. 139.
It is explanatory drawing of the actual embodiment of the diffused light calculation.
FIG. 140.
It is explanatory drawing of the input and output to the diffuse calculation.
FIG. 141.
It is explanatory drawing of the actual embodiment of the diffused light calculation.
FIG. 142.
It is explanatory drawing of the input and output to the reflection calculation.
FIG. 143.
It is explanatory drawing of the actual embodiment of the reflection calculation.
FIG. 144.
It is explanatory drawing of the input and output to the reflection calculation.
FIG. 145.
It is explanatory drawing of the actual embodiment of the reflection calculation.
FIG. 146.
It is explanatory drawing of the actual embodiment of self-calculation of only ambient light.
FIG. 147.
It is explanatory drawing of the process outline of optical calculation.
FIG. 148.
It is explanatory drawing of an example of the illumination calculation for a single infinite light source.
FIG. 149.
It is explanatory drawing of an example of lighting calculation for an omni light source which does not use a bump map.
FIG. 150.
It is explanatory drawing of an example of the illumination calculation for an omni light source using a bump map.
FIG. 151.
It is explanatory drawing of an example of the illumination calculation for a spotlight light source which does not use a bump map.
FIG. 152.
It is explanatory drawing of the process of shining a single spotlight on an image using a related bump map.
FIG. 153.
It is explanatory drawing of the logical layout of a single printhead.
FIG. 154.
It is explanatory drawing of the structure of a printhead interface.
FIG. 155.
It is explanatory drawing of the process of rotation of a Lab image.
FIG. 156.
It is explanatory drawing of the format of the pixel of a printed image.
FIG. 157.
It is explanatory drawing of the dithering process.
FIG. 158.
It is explanatory drawing of the process which generates an 8-bit dot output.
FIG. 159.
It is a perspective view of a card reader.
FIG. 160.
It is a development perspective view of a card reader.
FIG. 161.
It is a close-up view of an art card reader.
FIG. 162.
It is a perspective view of a print roll and a print head.
FIG. 163.
It is a 1st developed perspective view of a print roll.
FIG. 164.
It is a second developed perspective view of the print roll.
FIG. 165.
It is explanatory drawing of the print roll authentication chip.
FIG. 166.
It is an enlarged view of the print roll authentication chip.
FIG. 167.
It is explanatory drawing of the one-step authentication chip data protocol.
FIG. 168.
It is explanatory drawing of the two-step verification chip data protocol.
FIG. 169.
It is explanatory drawing of the 1st presence only protocol.
FIG. 170.
It is explanatory drawing of the 2nd presence only protocol.
FIG. 171.
It is explanatory drawing of the 3rd data protocol.
FIG. 172.
It is explanatory drawing of the 4th data protocol.
FIG. 173.
It is a schematic block diagram of the LFSR for the longest period.
FIG. 174.
It is a schematic block diagram of a clock limiting filter.
FIG. 175.
It is a schematic block diagram of a tamper detection line.
FIG. 176.
It is a schematic block diagram of an oversized nMOS transistor.
FIG. 177.
It is a figure explaining the extraction of a large number of XORs from a tamper detection line.
FIG. 178.
It is explanatory drawing of the state which the tamper line covers a noise generation circuit.
FIG. 179.
It is explanatory drawing of the Embodiment of a normal FET.
FIG. 180.
It is explanatory drawing of the embodiment of the modified FET of a suitable embodiment.
FIG. 181.
It is an abbreviation for authentication chip.
FIG. 182.
It is explanatory drawing of an example of a memory map.
FIG. 183.
It is explanatory drawing of an example of a constant memory map.
FIG. 184.
It is explanatory drawing of an example of a RAM memory map.
FIG. 185.
It is explanatory drawing of an example of a flash memory variable memory map.
FIG. 186.
It is explanatory drawing of an example of a flash memory program memory map.
FIG. 187.
It is a figure which shows the data flow and the relationship between the components of a state machine.
FIG. 188.
It is a figure which shows the data flow and the relationship between the components of an I / O unit.
FIG. 189.
It is a schematic block diagram of an arithmetic logic unit (ALU).
FIG. 190.
It is a schematic block diagram of an RPL unit.
FIG. 191.
It is a schematic block diagram of the ROR block of ALU.
FIG. 192.
It is a block diagram of a program counter unit.
FIG. 193.
It is a schematic block diagram of a memory unit.
FIG. 194.
It is a schematic block diagram of an address generation unit.
FIG. 195.
It is a schematic block diagram of a JSIGEN unit.
FIG. 196.
It is a schematic block diagram of a JSRGEN unit.
FIG. 197.
It is a schematic block diagram of a DBRGEN unit.
FIG. 198.
It is a schematic block diagram of the LDKGEN unit.
FIG. 199.
It is a schematic block diagram of the RPLGEN unit.
FIG. 200.
It is a schematic block diagram of a VARGEN unit.
FIG. 201.
It is a schematic block diagram of a CLRGEN unit.
FIG. 202.
It is a schematic block diagram of a BITGEN unit.
FIG. 203.
It is a figure which shows the information stored in the print roll authentication chip.
FIG. 204.
It is explanatory drawing of the data stored in the art cam authentication chip.
FIG. 205.
It is explanatory drawing of the printhead pulse characterization process.
FIG. 206.
It is an enlarged cross-sectional perspective view of the printhead ink supply mechanism.
FIG. 207.
It is a bottom perspective view of the ink head supply unit.
FIG. 208.
It is sectional drawing of the bottom surface side of the ink head supply unit.
FIG. 209.
It is a top perspective view of the ink head supply unit.
FIG. 210.
It is sectional drawing of the upper surface side of the ink head supply unit.
FIG. 211.
It is a perspective view of a part of a print head.
FIG. 212.
It is an enlarged perspective view of the print head unit.
FIG. 213.
It is a perspective view of the inside of the art cam camera on the upper surface side, and shows the flattened parts.
FIG. 214.
It is a perspective view of the bottom side of the inside of the art cam camera, showing the flattened parts.
FIG. 215.
It is a perspective view of the first upper surface side inside the art cam camera, and shows the part housed in the art cam.
FIG. 216.
It is the perspective view of the 2nd upper surface side inside the art cam camera, and shows the part housed in the art cam.
FIG. 217.
It is the perspective view of the 2nd upper surface side inside the art cam camera, and shows the part housed in the art cam.
FIG. 218.
It is explanatory drawing of the backing part of a postcard print roll.
FIG. 219.
It is explanatory drawing of the corresponding table image of the postcard print roll after image printing.
FIG. 220.
It is explanatory drawing of the form of a print roll in a state which a customer can purchase.
FIG. 221.
It is explanatory drawing of the layout of the software / hardware module of the whole art cam application.
FIG. 222.
It is explanatory drawing of the layout of the software / hardware module of a camera manager.
FIG. 223.
It is explanatory drawing of the layout of the software / hardware module of an image processing manager.
FIG. 224.
It is explanatory drawing of the layout of the software / hardware module of a printer manager.
FIG. 225.
It is explanatory drawing of the layout of the software / hardware module of an image processing manager.
FIG. 226.
It is explanatory drawing of the layout of the software / hardware module of a file manager.
FIG. 227.
It is a partial cross-sectional perspective view of the print roll of an alternative form.
FIG. 228.
FIG. 2 is an enlarged perspective view on the left side of the print roll of FIG. 227.
FIG. 229.
It is an enlarged perspective view on the right side of a single print roll.
FIG. 230.
It is a partial cross-sectional enlarged perspective view of the core part of a print roll.
FIG. 231.
It is a second enlarged perspective view of the core part of a print roll.
FIG. 232.
It is a front view of'Bizcard'.
FIG. 233.
A schematic representation of a camera system configured according to further improvements.
FIG. 234.
A printer device for printing on the front and back surfaces of an output medium is shown schematically.
FIG. 235.
The format of the output data on the back side of the photograph is shown.
FIG. 236.
Shows the enlarged part of the output media.
FIG. 237.
Shows a reader used to read data from the back of a photo.
FIG. 238.
The use of further improved equipment is shown.
FIG. 239.
A schematic example of specific processing of image orientation is shown.
FIG. 240.
Demonstrates how to create the unique effects of an image when using a camera configured according to further improvements.
FIG. 241.
The print roll according to the further improvement is shown.
FIG. 242.
A further improved method of the example is shown.
FIG. 243.
The operation method of further improvement is shown.
FIG. 244.
A form of image processing according to further improvement is shown.
FIG. 245.
The operation method of further improvement is shown.
FIG. 246.
The process of image capture and output is shown.
FIG. 247.
Shows the process of red eye removal.
FIG. 248.
Shown is a photographic print organization constructed according to a standard art cam device.
FIG. 249.
Shown is a dual printhead formation configured according to further improvements.
FIG. 250.
A further improved curl remover is shown.
FIG. 251.
The process of viewing a stereoscopic image is shown.
FIG. 252.
Shown is a further improved lens system designed to create stereoscopic effects.
FIG. 253.
It is a partial perspective view which shows the creation of a stereoscopic photographic image.
FIG. 254.
A device for creating a stereoscopic image according to a further improvement is shown.
FIG. 255.
The positioning unit of FIG. 254 is shown in more detail.
FIG. 256.
A camera device suitable for creating a stereoscopic photographic image is shown.
FIG. 257.
The process of using an opaque backing to improve the stereoscopic effect is shown.
FIG. 258.
A method of generating an image on a print medium is shown schematically.
FIG. 259.
The structure of the print media constructed according to the present invention is shown.
FIG. 260.
Shows the use of print media configured according to further improvements.
FIG. 261.
The first form of the structure of the print media according to the further improvement is shown.
FIG. 262.
Further embodiments of the structure of the print media according to the present invention are shown.
FIG. 263.
A schematic cross-sectional view of a further form of the structure of the print media according to the present invention is shown.
FIG. 264.
A schematic cross-sectional view of a further form of the structure of the print media according to the present invention is shown.
FIG. 265.
A mode of manufacturing the print media configuration according to FIGS. 263 and 7 is shown.
FIG. 266.
Another embodiment of the manufacture by extruding the fibrous material to utilize the knitting of FIG. 265 is shown.
FIG. 267.
The main steps of further improvement are shown.
FIG. 268.
The effect of the Sobel filter used in further improvement is shown.
FIG. 269.
The curve offset method used in the further improvement is shown.
FIG. 270.
The curve offset method used in the further improvement is shown.
FIG. 271.
Shows a standard image containing a recognized face.
FIG. 272.
A first flowchart for determining the area of interest is shown.
FIG. 273.
A second flowchart for determining the area of interest is shown.
FIG. 274.
The first step of tiling an image is shown.
FIG. 275.
Shows another tile pattern for image tiling.
FIG. 276.
Shows an opaque mask for tiles.
FIG. 277.
The corresponding surface texture heights for the tile of FIG. 276 are shown.
FIG. 278.
The corresponding surface texture heights for the tile of FIG. 276 are shown.
FIG. 279.
Global to modify the image
The process of using opacigty is shown.
FIG. 280.
Here's how to modify the stroking effect to mimic the effect of mixing real paint.
FIG. 281.
The process of creating a brush stroke table is shown.
FIG. 282.
The process of creating a stroke color palette is shown.
FIG. 283.
The resulting painting process is shown.
FIG. 284.
The flow chart of the step in the further embodiment which synthesizes a brush stroke is shown.
FIG. 285.
The method of converting a Bezier curve into a piecewise line segment is shown.
FIG. 286.
The brush stroke process is shown.
FIG. 287.
Shown are suitable brush stamps used in further examples.
FIG. 288.
The first organization of further improvement is shown.
FIG. 289.
The flowchart of the operation of the further improvement is shown.
FIG. 290.
The composition of the image printed in high resolution is shown.
FIG. 291.
A device for processing the image of FIG. 290 for making a copy is shown.
FIG. 292.
Shows the processing steps of centroid.
FIG. 293.
Shows a series of detected patterns.
FIG. 294.
The figure of the implementation of the further improvement is shown.
FIG. 295.
Show further improvements.
FIG. 296.
A card reader of a further embodiment is shown.
FIG. 297.
Shows a brush bump map.
FIG. 298.
Shows a brush bump map.
FIG. 299.
Shows a bump map of the background canvas.
FIG. 300.
Shows a bump map of the background canvas.
FIG. 301.
The process of joining bump maps is shown.
FIG. 302.
The process of joining bump maps is shown.
FIG. 303.
Shows the background of the map.
FIG. 304.
The process of combining bump maps according to further improvements is shown.
FIG. 305.
The process of combining bump maps according to further improvements is shown.
FIG. 306.
The steps in how to further improve the generation of artistic images are shown.
FIG. 307.
The process of mapping one gamot to a second gamot is shown.
FIG. 308.
An embodiment of further improvement is shown.
FIG. 309.
The preferred form of gamot remapping is shown.
FIG. 310.
Shows Gamot morphing used in further improvements.
FIG. 311.
The basic operation of the art cam device is shown.
FIG. 312.
Shows a series of art cards used in further improvements.
FIG. 313.
It is a flowchart of the algorithm used in the further improvement.
FIG. 314.
It is a schematic of the output of a printed cloth produced according to the present invention.
FIG. 315.
A further improved connection method is shown.
FIG. 316.
A further improved perspective view with a partially cross-section is shown.
FIG. 317.
Indicates a card with a write data area array.
FIG. 318.
Indicates a card that has only a limited number of write data areas.
FIG. 319.
The structure of the data area is shown.
FIG. 320.
Shows the target configuration.
FIG. 321.
A device for further improvement is shown.
FIG. 322.
FIG. 321 is shown as a close-up view.
FIG. 323.
Demonstrates the process of inserting a card into a reader.
FIG. 324.
Shows the process of removing the card.
FIG. 325.
Shows the process of writing a data area on a card.
FIG. 326.
It is a schematic diagram of the structure of a card reader.
FIG. 327.
A schematic sequence of further improvements is shown.
FIG. 328.
An example of a further improved interface is shown.
FIG. 329.
A form of configuration of a further improved software module is shown.
FIG. 330.
It is a schematic diagram of the operation of the art cam system.
FIG. 331.
A first example of a modified operation of the art cam system is shown.
FIG. 332.
A repetition card is shown to change the operation of the art cam.
FIG. 333.
An art card test card for changing the operation of the art cam is shown.
FIG. 334.
The output test result of the art cam device is shown.
FIG. 335.
A schematic representation of a camera system configured according to further improvements.
FIG. 336.
Further improved printer devices and recording devices are shown schematically.
FIG. 337.
The composition of the magnetic band on the back side of the photograph is shown.
FIG. 338.
The back side of the photo shows the reader used to read the recorded data.
FIG. 339.
The use of further improved equipment is shown.
FIG. 340.
The schematic diagram of the functional part of the art cam device is shown.
FIG. 341.
The steps to use further improvements are shown.
FIG. 342.
The operation of the art cam device according to the further improvement is shown.
FIG. 343.
Other examples printed on the back side of the output "photograph" are shown.
FIG. 344.
The inside of a printer apparatus configured according to a further embodiment is shown.
FIG. 345.
A network distribution system configured according to a further embodiment is shown.
FIG. 346.
The operation of the printer computer of FIG. 345 is schematically shown.

JP2000503510A 1997-07-15 1998-07-15 Camera with internal printing system Pending JP2001523900A (en)

Applications Claiming Priority (143)

Application Number Priority Date Filing Date Title
AU7993 1979-03-13
AU7934 1983-02-08
AU9400 1983-05-18
AU7978 1984-11-05
AU8021 1984-11-07
AU8020 1984-11-07
AU9396 1985-08-06
AU8018 1986-09-15
AU8005 1989-12-22
AU9404 1991-11-08
AU2370 1992-05-11
AU8022 1995-01-24
AU8012 1996-02-12
AU8502 1996-03-06
AU0959 1996-07-12
AUPO7978A AUPO797897A0 (en) 1997-07-15 1997-07-15 Media device (ART18)
AUPO7997A AUPO799797A0 (en) 1997-07-15 1997-07-15 Media device (ART15)
AUPO7985A AUPO798597A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART37)
AUPO8025A AUPO802597A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART08)
AUPO8003A AUPO800397A0 (en) 1997-07-15 1997-07-15 Supply method and apparatus (F1)
AUPO8019A AUPO801997A0 (en) 1997-07-15 1997-07-15 Media processing method and apparatus (ART21)
AUPO8030A AUPO803097A0 (en) 1997-07-15 1997-07-15 Media device (ART13)
AUPO8022A AUPO802297A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART33)
AUPO7979A AUPO797997A0 (en) 1997-07-15 1997-07-15 Media device (ART16)
AUPO8015A AUPO801597A0 (en) 1997-07-15 1997-07-15 Media device (ART17)
AUPO7942A AUPO794297A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART23)
AUPO7987A AUPO798797A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART32)
AUPO7999A AUPO799997A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART10)
AUPO7983A AUPO798397A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART52)
AU7991 1997-07-15
AUPO7939A AUPO793997A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART29)
AUPO8016A AUPO801697A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART26)
AUPO7934A AUPO793497A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART45)
AUPO7988A AUPO798897A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART02)
AUPO8012A AUPO801297A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART05)
AUPO7938A AUPO793897A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART25)
AUPO7940A AUPO794097A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART28)
AUPO7991A AUPO799197A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART01)
AUPO7993A AUPO799397A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART03)
AUPO8020A AUPO802097A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART38)
AUPO8029A AUPO802997A0 (en) 1997-07-15 1997-07-15 Sensor creation method and apparatus (ART36)
AUPO8028A AUPO802897A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART56)
AUPO8023A AUPO802397A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART39)
AUPO8024A AUPO802497A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART27)
AUPO8005A AUPO800597A0 (en) 1997-07-15 1997-07-15 Supply method and apparatus (F2)
AUPO7990A AUPO799097A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART46)
AUPO7980A AUPO798097A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART22)
AUPO7998A AUPO799897A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART11)
AUPO8017A AUPO801797A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART06)
AUPO8032A AUPO803297A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART09)
AUPO8014A AUPO801497A0 (en) 1997-07-15 1997-07-15 Media device (ART07)
AUPO8027A AUPO802797A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART54)
AUPO7982A AUPO798297A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART19)
AUPO8021A AUPO802197A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART40)
AUPO7986A AUPO798697A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART51)
AUPO7981A AUPO798197A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART50)
AUPO8018A AUPO801897A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART24)
AUPO8031A AUPO803197A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART12)
AUPO8000A AUPO800097A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART43)
AUPO8026A AUPO802697A0 (en) 1997-07-15 1997-07-15 Image processing method and apparatus (ART53)
AUPO7977A AUPO797797A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART44)
AUPO7989A AUPO798997A0 (en) 1997-07-15 1997-07-15 Data processing method and apparatus (ART20)
AUPO8500A AUPO850097A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art31)
AUPO8498A AUPO849897A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (ART14)
AUPO8501A AUPO850197A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art30)
AUPO8504A AUPO850497A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art42)
AUPO8497A AUPO849797A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art34)
AUPO8505A AUPO850597A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art01a)
AUPO8502A AUPO850297A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art48)
AUPO8499A AUPO849997A0 (en) 1997-08-11 1997-08-11 Image processing method and apparatus (art47)
AUPO9396A AUPO939697A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART58)
AUPO9405A AUPO940597A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART66)
AUPO9401A AUPO940197A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART63)
AUPO9394A AUPO939497A0 (en) 1997-09-23 1997-09-23 Image processing method and apparatus (ART57)
AUPO9400A AUPO940097A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART62)
AUPO9397A AUPO939797A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART59)
AUPO9399A AUPO939997A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART61)
AUPO9395A AUPO939597A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART4)
AUPO9398A AUPO939897A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART60)
AUPO9402A AUPO940297A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART64)
AUPO9404A AUPO940497A0 (en) 1997-09-23 1997-09-23 A device and method (F3)
AUPO9403A AUPO940397A0 (en) 1997-09-23 1997-09-23 Data processing method and apparatus (ART65)
AUPP0959A AUPP095997A0 (en) 1997-12-16 1997-12-16 A data processing method and apparatus (art 68)
AUPP1397A AUPP139798A0 (en) 1998-01-19 1998-01-19 A media device (art 69)
AUPP2371A AUPP237198A0 (en) 1998-03-16 1998-03-16 Data processing method and apparatus (dot02)
AUPP2370A AUPP237098A0 (en) 1998-03-16 1998-03-16 Data processing method and apparatus (dot 01)
AU7990 1998-06-12
AU8015 1998-06-12
AU8019 1998-06-12
AU8499 1998-06-12
AU8032 1998-06-12
AU8030 1998-06-12
AU2371 1998-06-12
AU8028 1998-06-12
AUPP4094A AUPP409498A0 (en) 1998-06-12 1998-06-12 An authentication system (AUTH01)
AU8505 1998-06-12
AU9397 1998-06-12
AU4094 1998-06-12
AU7981 1998-06-12
AU8003 1998-06-12
AU8027 1998-06-12
AU8023 1998-06-12
AU8029 1998-06-12
AU8031 1998-06-12
AU7987 1998-06-12
AU7942 1998-06-12
AU7999 1998-06-12
AU9394 1998-06-12
AU7986 1998-06-12
AU8498 1998-06-12
AU7983 1998-06-12
AU8026 1998-06-12
AU7998 1998-06-12
AU7989 1998-06-12
AU7982 1998-06-12
AU1397 1998-06-12
AU8504 1998-06-12
AU7940 1998-06-12
AU7938 1998-06-12
AU7988 1998-06-12
AU8497 1998-06-12
AU8500 1998-06-12
AU8016 1998-06-12
AU8501 1998-06-12
AU7985 1998-06-12
AU9403 1998-06-12
AU8000 1998-06-12
AU9405 1998-06-12
AU7939 1998-06-12
AU8025 1998-06-12
AU7977 1998-06-12
AU9402 1998-06-12
AU7997 1998-06-12
AU9401 1998-06-12
AU9395 1998-06-12
AU9399 1998-06-12
PCT/AU1998/000544 WO1999004368A1 (en) 1997-07-15 1998-07-15 A camera with internal printing system
AU8024 1999-01-06
AU7980 1999-01-25
AU7979 1999-01-25
AU8017 2000-06-07
AU8014 2000-06-07
AU9398 2000-08-15

Related Child Applications (5)

Application Number Title Priority Date Filing Date
JP2008209323A Division JP4309954B2 (en) 1997-07-15 2008-07-16 Camera device and method with orientation detection
JP2008209324A Division JP2009010979A (en) 1997-07-15 2008-07-16 Method of using automatic focus information for image processing in digital camera
JP2008209326A Division JP2009065654A (en) 1997-07-15 2008-07-16 User interface for image transformation device
JP2008209325A Division JP4309955B2 (en) 1997-07-15 2008-07-16 Method for processing an image in a digital camera using eye detection
JP2008209322A Division JP2009081842A (en) 1997-07-15 2008-07-16 Camera system and method for recording audio message to photography

Publications (2)

Publication Number Publication Date
JP2001523900A JP2001523900A (en) 2001-11-27
JP2001523900A5 true JP2001523900A5 (en) 2006-09-07

Family

ID=27587067

Family Applications (6)

Application Number Title Priority Date Filing Date
JP2000503510A Pending JP2001523900A (en) 1997-07-15 1998-07-15 Camera with internal printing system
JP2008209325A Expired - Fee Related JP4309955B2 (en) 1997-07-15 2008-07-16 Method for processing an image in a digital camera using eye detection
JP2008209326A Pending JP2009065654A (en) 1997-07-15 2008-07-16 User interface for image transformation device
JP2008209322A Pending JP2009081842A (en) 1997-07-15 2008-07-16 Camera system and method for recording audio message to photography
JP2008209324A Pending JP2009010979A (en) 1997-07-15 2008-07-16 Method of using automatic focus information for image processing in digital camera
JP2008209323A Expired - Fee Related JP4309954B2 (en) 1997-07-15 2008-07-16 Camera device and method with orientation detection

Family Applications After (5)

Application Number Title Priority Date Filing Date
JP2008209325A Expired - Fee Related JP4309955B2 (en) 1997-07-15 2008-07-16 Method for processing an image in a digital camera using eye detection
JP2008209326A Pending JP2009065654A (en) 1997-07-15 2008-07-16 User interface for image transformation device
JP2008209322A Pending JP2009081842A (en) 1997-07-15 2008-07-16 Camera system and method for recording audio message to photography
JP2008209324A Pending JP2009010979A (en) 1997-07-15 2008-07-16 Method of using automatic focus information for image processing in digital camera
JP2008209323A Expired - Fee Related JP4309954B2 (en) 1997-07-15 2008-07-16 Camera device and method with orientation detection

Country Status (3)

Country Link
JP (6) JP2001523900A (en)
AT (1) ATE339743T1 (en)
CA (1) CA2296439C (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260585A (en) * 2006-04-13 2006-09-28 Pro Sensor Kk Apparatus, system, and method for preventing alerted area from intrusion
EP2120448A1 (en) 2008-05-14 2009-11-18 Thomson Licensing Method of processing of a compressed image into a gamut mapped image using spatial frequency analysis
KR101937272B1 (en) * 2012-09-25 2019-04-09 에스케이 텔레콤주식회사 Method and Apparatus for Detecting Event from Multiple Image
KR101348680B1 (en) * 2013-01-09 2014-01-09 국방과학연구소 Target acquisition method for video tracker, and target acquisition apparatus using the same
JP5724094B2 (en) * 2013-11-27 2015-05-27 株式会社大都技研 Amusement stand
JP5747277B2 (en) * 2014-02-17 2015-07-15 株式会社大都技研 Amusement stand
US10331039B2 (en) * 2014-10-02 2019-06-25 Asml Netherlands B.V. Rule-based deployment of assist features
JP5915959B2 (en) * 2015-04-14 2016-05-11 株式会社大都技研 Amusement stand
JP6115883B2 (en) * 2016-03-25 2017-04-19 株式会社大都技研 Amusement stand
CN110014754B (en) * 2019-03-25 2020-08-07 深圳市银之杰科技股份有限公司 Printing and counterfeit-identification batch stamping integrated machine and processing method
JP7424000B2 (en) 2019-11-19 2024-01-30 株式会社リコー Image processing device, image processing method, image reading device, and image forming device
KR102221348B1 (en) * 2020-11-30 2021-03-02 제일항업(주) Digital map making system)

Similar Documents

Publication Publication Date Title
KR100629216B1 (en) Printing cartridge with an integrated circuit device
JP4309954B2 (en) Camera device and method with orientation detection
KR100574290B1 (en) Image printing apparatus including a microcontroller
EP1021794A1 (en) A camera with internal printing system
IL160172A (en) Printing cartridge with barcode identification
IL174358A (en) Printing cartridge with pressure sensor array identification
IL174357A (en) Printing device
AU2002317629A1 (en) Image sensing apparatus including a microcontroller
EP1444822A1 (en) Image sensing apparatus including a microcontroller
AU2002344712A1 (en) Printing cartridge with an integrated circuit device
WO2003013862A1 (en) A printing cartridge with capacitive sensor identification
AU2002317636A1 (en) A printing cartridge with capacitive sensor identification
WO2003013864A1 (en) Printing cartridge with radio frequency identification
AU2002317029A1 (en) Printing cartridge with radio frequency identification
AU2002344713A1 (en) Printing cartridge with barcode identification
AU2002319008A1 (en) A printing cartridge with pressure sensor array identification
EP1425180A2 (en) Printing cartridge with two dimensional code identification
AU2002317030A1 (en) Printing cartridge with two dimensional code identification
JP2001523900A5 (en)
AU763277B2 (en) A camera with internal printing system