JP4168125B2 - データ処理システムおよび方法 - Google Patents
データ処理システムおよび方法 Download PDFInfo
- Publication number
- JP4168125B2 JP4168125B2 JP54397298A JP54397298A JP4168125B2 JP 4168125 B2 JP4168125 B2 JP 4168125B2 JP 54397298 A JP54397298 A JP 54397298A JP 54397298 A JP54397298 A JP 54397298A JP 4168125 B2 JP4168125 B2 JP 4168125B2
- Authority
- JP
- Japan
- Prior art keywords
- window
- image
- correlation
- column
- sum
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 211
- 238000000034 method Methods 0.000 title claims description 98
- 239000013598 vector Substances 0.000 claims description 524
- 230000008569 process Effects 0.000 claims description 67
- 238000006243 chemical reaction Methods 0.000 claims description 58
- 238000005457 optimization Methods 0.000 claims description 39
- 239000000872 buffer Substances 0.000 description 209
- 238000004364 calculation method Methods 0.000 description 209
- 230000000875 corresponding effect Effects 0.000 description 92
- 230000015654 memory Effects 0.000 description 92
- 238000004422 calculation algorithm Methods 0.000 description 90
- 230000009466 transformation Effects 0.000 description 82
- 230000033001 locomotion Effects 0.000 description 54
- 230000006870 function Effects 0.000 description 48
- 238000001514 detection method Methods 0.000 description 30
- 238000004458 analytical method Methods 0.000 description 29
- 238000004891 communication Methods 0.000 description 27
- 238000012856 packing Methods 0.000 description 26
- 238000003860 storage Methods 0.000 description 25
- 238000010276 construction Methods 0.000 description 21
- 230000003111 delayed effect Effects 0.000 description 20
- 238000012360 testing method Methods 0.000 description 19
- 230000009471 action Effects 0.000 description 15
- 230000002093 peripheral effect Effects 0.000 description 15
- 238000005259 measurement Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 13
- 230000002596 correlated effect Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 238000001914 filtration Methods 0.000 description 12
- 238000007906 compression Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000011156 evaluation Methods 0.000 description 11
- 239000000203 mixture Substances 0.000 description 11
- 238000012546 transfer Methods 0.000 description 11
- 238000000844 transformation Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 10
- 238000003491 array Methods 0.000 description 9
- 230000036961 partial effect Effects 0.000 description 9
- 230000003068 static effect Effects 0.000 description 9
- 238000006073 displacement reaction Methods 0.000 description 8
- 230000015572 biosynthetic process Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 7
- 210000003128 head Anatomy 0.000 description 7
- 230000000007 visual effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000003786 synthesis reaction Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000003909 pattern recognition Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000011068 loading method Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000013480 data collection Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000005286 illumination Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000004807 localization Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 239000010410 layer Substances 0.000 description 2
- 238000013021 overheating Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 244000257790 Brassica carinata Species 0.000 description 1
- 235000005156 Brassica carinata Nutrition 0.000 description 1
- 241000282994 Cervidae Species 0.000 description 1
- 244000260524 Chrysanthemum balsamita Species 0.000 description 1
- 235000005633 Chrysanthemum balsamita Nutrition 0.000 description 1
- 244000301850 Cupressus sempervirens Species 0.000 description 1
- 101100391182 Dictyostelium discoideum forI gene Proteins 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 241000764238 Isis Species 0.000 description 1
- 206010028813 Nausea Diseases 0.000 description 1
- 241000338240 Parallela Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 208000003464 asthenopia Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229960001948 caffeine Drugs 0.000 description 1
- 239000002775 capsule Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000881 depressing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000012489 doughnuts Nutrition 0.000 description 1
- 230000004064 dysfunction Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 206010016256 fatigue Diseases 0.000 description 1
- 230000005021 gait Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000001093 holography Methods 0.000 description 1
- 238000003702 image correction Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 230000007794 irritation Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008693 nausea Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000037081 physical activity Effects 0.000 description 1
- 238000000554 physical therapy Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000009182 swimming Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- RYYVLZVUVIJVGH-UHFFFAOYSA-N trimethylxanthine Natural products CN1C(=O)N(C)C(=O)C2=C1N=CN2C RYYVLZVUVIJVGH-UHFFFAOYSA-N 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/593—Depth or shape recovery from multiple images from stereo images
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C11/00—Photogrammetry or videogrammetry, e.g. stereogrammetry; Photographic surveying
- G01C11/04—Interpretation of pictures
- G01C11/06—Interpretation of pictures by comparison of two or more pictures of the same area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/24—Aligning, centring, orientation detection or correction of the image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/75—Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
- G06V10/757—Matching configurations of points or features
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/204—Image signal generators using stereoscopic image cameras
- H04N13/239—Image signal generators using stereoscopic image cameras using two 2D image sensors having a relative position equal to or related to the interocular distance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
- G06T2207/10012—Stereo images
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/111—Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/167—Synchronising or controlling image signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/189—Recording image signals; Reproducing recorded image signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/194—Transmission of image signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/204—Image signal generators using stereoscopic image cameras
- H04N13/246—Calibration of cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/296—Synchronisation thereof; Control thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N2013/0074—Stereoscopic image analysis
- H04N2013/0081—Depth or disparity estimation from stereoscopic image signals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Signal Processing (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
Description
発明の分野
本発明は一般にデータ処理に関する。さらに詳細には、関連したデータの組の間の対応を決定すること、および、そのようなデータの解析に関する。一つの用途(application)では、本発明はリアルタイムでのステレオおよび深度/距離/動き解析に対するイメージデータ対応に関する。
【0002】
関係する技術の説明
データ処理用途のある形式は関連するデータの組の比較に関する。つまり、データの関連度を決定し、存在し得る差の重要性を判断するよう設計される。時間が経過するにつれてデータの組がどのくらい変化するのかを決定するよう設計される用途を例示は含む。同様に、同じデータの組の二つの異なる同時の風景(simultaneousviews)の差を調べるように設計される用途も含まれる。
【0003】
エラーから、または、データ収集プロセスのアーチファクトから生じる差をデータの組が含むならば、そのような用途は非常に複雑になり得る。そのような場合、データの基礎をなす実質的な差は、実質的な対象に関係しないアーチファクトによって覆い隠され得る。
【0004】
例えば、物体が動いているかどうかを決定する映像シーケンスの解析は、あるフレームから別のフレームへピクセルが変化したかどうか、もしそうならば、それらのピクセルの差が物体の動きを表しているかどうかを決定するためにフレームごとの比較を実行することを必要とする。そのようなプロセスは、対象(物体の動きを示すもの)に対応し得るピクセルの差と無関係なアーチファクト(例えば、明暗の変化)の結果として導入されるピクセルの差とを区別することを必要とする。簡略なピクセルごとの比較はそのような用途にはあまり適さない。なぜなら、そのような比較は、意味のあるピクセル差と意味のないピクセルの差とを簡単に区別できないからである。
【0005】
そのような問題の第二の例は、同じ光景のステレオイメージからの深度情報の計算に関する。同時にとられた同じ光景の二つの画像、カメラ間の距離、焦点距離、および光学レンズ特性の情報が与えられると、その光景における任意のピクセル(従って、ピクセルの任意の関連する群、すなわち物体)との距離を決定することは可能である。しかしながら、(a)異なる深度でのピクセルは、異なる合計をオフセットし(これは深度計算を可能にする)、(b)カメラはわずかに異なる光学的な品質を有し得るので、簡略なピクセル整合によっては達成されない。異なる深度でのピクセルは、その異なる合計をオフセットするという事実によって作成される差が対象となる一方で、カメラの差のアーチファクトとして作成される差が対象とならないので、二つの形式の差を区別することは必要である。
【0006】
そのうえ、そのような比較をリアルタイムで実行することは有用であり得る。例えば、ステレオ深度解析は周囲の状況によってロボットを導くのに使用され得る。明らかな理由に関しては、ロボットが反応して障害物を回避するのに間に合うようにそのような解析が実行されるならば、最も有用である。別の例を選ぶと、圧縮アルゴリズムが前景情報と背景情報とを区別すること、および背景情報を前景情報より高い程度に圧縮することを可能にする映像圧縮にとって深度情報は非常に有用であり得る。
【0007】
しかしながら、この形式の正確なデータ組比較は演算量が非常に大きくなる。非常にハイエンドなコンピュータ(最もあり得る実世界の用途にとっては高価過ぎる)を使用するか、または、正確さまたは速さを犠牲にするかのいずれかを、存在する用途に強いる。そのようなアルゴリズムは、差の二乗の合計(Sumof Squared Difference)(”SSD”)、規格化SSDおよびラプラシアンレベル相を含む。構築の際に、それらのアルゴリズムは、次のいくつか、または全ての欠点を示す傾向にある。(1)低感度(イメージ内の重要なローカル変数を生成することができない)、(2)低安定性(対応するデータ位置の近辺に同様の結果を生じることができない)、(3)カメラの差に影響を受け易い。さらに、これらのアルゴリズムを実行するように設計されているシステムは、高価なハードウェアを使用する傾向にある。それらのハードウェアによって、これらのアルゴリズムは多くの用途に対して適応出来なくなる。
【0008】
現在の対応アルゴリズムも、局所変換動作の制限のため、ファクショナリズム(factionalism)を扱うことはできない。ファクショナリズムとは、別個の強度集合を適切に区別することはできないことをいう。例えば、強度イメージは、どのような物体が光景の中にある場合でもその強度データをピクセルを経由して与える。これらの物体の境界付近で、強度イメージにおけるいくつかのローカル領域のピクセルは、二つの別個の強度集合(population)からの光景要素を表し得る。いくつかのピクセルは物体に由来し、そしていくつかは光景の他の部分に由来する。結果として、ローカルピクセル分布は一般に、境界付近で多様となる。深度不連続を重ね合わせるイメージウインドウは、異なる位置での他のイメージにおける二つのハーフウインドウを整合する。そのような領域における大多数のピクセルが、深度不連続の一つの側面に向けられる(fall)と仮定すると、深度推定は大多数に一致し、少数に不一致となるはずである。これは多くの対応アルゴリズムに対して問題を引き起こす。局所変換が元の強度データの強度分布を適切に表さないならば、少数集合からの強度データは結果を歪め得る。平均または変化(meanorvariance)といったパラメトリック変換は多数の別個のサブ集合(それぞれがそれ自身と密接なパラメータを有する)の存在中で行儀良く振る舞(behavewell)わない。
【0009】
非パラメトリック変換として知られているアルゴリズムの分類(class)は、他のアルゴリズムが本来持っている効率の悪さを解決するよう設計されている。それぞれの要素をそれらそれぞれのデータの組における周囲の要素と比較することによって、非パラメトリック変換は、一つのデータ組におけるデータ要素を第2のデータ組におけるデータ要素にマッピングする。その後、他のデータの組における周辺の要素に対して同じ関係を有する、その組における要素の位置決めを試みる。従って、そのようなアルゴリズムは、アーチファクトに基づいた差を選別して除くように設計される。そのアーチファクトに基づいた差は、データの組が集められた方法における差から生じ、重要な差を濃縮することを可能にする。
【0010】
ランク変換は一つの非パラメトリック局所変換である。ランク変換は対象ピクセルを、どのくらい多くのその周辺ピクセルが、対象ピクセルよりも高いまたは低い輝度を有するのかの関数として特徴付ける。その後、その特徴付けは、他のデータの組におけるピクセルに行われた特徴付けと比較され、最近接整合(closestmatch)を決定する。
【0011】
センサス(census)変換は第2の非パラメトリック局所変換アルゴリズムである。センサスはまた、輝度の差に依存するが、ランクよりもさらに洗練された解析に基づく。というのも、センサス変換はより高いまたは低い輝度の周辺ピクセルの数に単に基づくだけでなく、対象ピクセルを取り囲むピクセル輝度の順序付けられた関係に基づくからである。センサス変換は関係するデータ組を整合し、および、重要性を有さない差から重要な差を区別するために知られている良いアルゴリズムを構成するのだが、このアルゴリズムを実行する存在するハードウェアシステムは効果がなく、そして、演算的に効果のある方法におけるこのアルゴリズムを実行するシステムは、全く知られていない。
【0012】
データ処理の広い分野において、データの組を解析するシステムおよび方法のための産業(industry)における必要性が存在し、このシステムおよび方法は関係性を決定し、これらのデータ組において含まれる本質的な情報を抽出し、他の望まない情報をフィルタで排除する。そのようなシステムおよび方法は、素早くそして効果のある方法で実装されるべきである。本発明はそのようなシステムおよび方法を与え、上述の問題に対する回答を与える。
【0013】
発明の要旨
本発明は前記の問題に対する解決方法を与える。本発明の一つの目的は、データの組を解析するアルゴリズムを与え、これらのデータの組に含まれる本質的な属性(attribute)情報を抽出することである。本発明の別の目的は、これらのデータの組を解析し、リアルタイムに結果を出すアルゴリズムを与えることである。本発明のさらなる目的は、これらのデータの組を解析するためのハードウェア実装を与えることである。本発明のさらなる目的は、これらのアルゴリズムおよびハードウェア回答をコンピュータ映像(vision)およびイメージ処理のような様々な用途に導入し、組み入れることである。
【0014】
本発明の様々な面はソフトウェア/アルゴリズム、ハードウェア実装および用途を、単独または組み合わせのいずれかで含む。本発明は、単独または組み合わせのいずれかで、改善された対応アルゴリズム、リアルタイムに対応アルゴリズムを効率的および廉価で実行するよう設計されたハードウェア、およびそのようなアルゴリズムおよびハードウェアの使用を可能にする用途を含む。
【0015】
本発明の一つの面は改善された対応アルゴリズムに関係する。一般的なレベルでは、このアルゴリズムは行データの組のセンサスベクトルへの変換およびデータ組間の相関を決定するためのセンサスベクトルの使用に関係する。
【0016】
一つの特別な実施形態では、センサス変換は一つの画像におけるピクセルを同時に得られた第二の画像におけるピクセルに整合するために使用され、それによって深度計算が可能になる。異なる実施形態では、このアルゴリズムは一つの画像と異なる時間に得られた第二の画像との間の動きの計算を可能にするために、または、音楽シーケンスを含む音を表すデータの組の比較を可能にするために使用され得る。
【0017】
第1のステップでは、センサス変換は行データの組を取り、これらのデータの組を非パラメトリック演算を使用して変換する。例えば、ステレオイメージからの深度情報の計算に適用されると、この演算はそれぞれのピクセルに対するセンサスベクトルを生じる。そのセンサスベクトルは、周囲に隣接する他のピクセルに対するピクセルの順序付けられた関係を表す。一つの実施形態では、この順序付けられた関係は、ピクセル内の輝度の差に基づく。他の実施形態では、この関係は、色を含むピクセルの他の面に基づく。
【0018】
第2のステップでは、センサス変換アルゴリズムはセンサスベクトルを関連付けることにより、一つのデータの組と他との間の最適な整合を決定する。これは、一つのデータの組におけるそれぞれの参照ピクセルと他のデータの組における参照ピクセルのサーチウインドウのそれぞれのピクセルとの間の最小ハミング距離を選択することによって行われる。一つの実施形態では、これは、参照ピクセルを取り囲むウインドウからの合計ハミング距離を他のデータ組におけるスライディングウインドウと比較することによって行われる。その後、この最適な整合は、データの組の一つと他のデータ組と間とのオフセット(または視差(disparity))として表され、外部指標アレイまたは視差マップにおいて視差の組が格納される。
【0019】
第3のステップでは、一つの方向における最適の整合が他の方向における最適の整合と同一であるかを決定するために、アルゴリズムは反対の方向における同じ検査を行う。これは、左右一貫性検査(left-rightconsistency check)と称される。一貫性のないピクセルは、今後の処理のために分類され、廃棄される。ある実施形態では、アルゴリズムは対象演算子を適用してコントラストまたは模様(テクスチャ)が低い領域における転置(displacement)を廃棄し得、モードフィルタを適用して集合解析に基づいた視差を選択し得る。
【0020】
本発明の第2の面は、センサス変換および対応アルゴリズムのようなアルゴリズムを実行するよう設計されたパワフルでスケーラブル(scaleable)なハードウェアシステムに関する。このハードウェアは並列化を処理するデータを最大化するよう設計されている。一つの実施形態では、このハードウェアはフィールドプログラム可能装置を使用して再構成可能である。しかしながら、他の本発明の実施形態は、特定用途向け集積回路(ASIC)技術を使用して実行され得る。さらに他の実施形態は、カスタム(custom)集積回路の形態であり得る。一つの実施形態では、このハードウェアは、深度を決定するためにステレオイメージデータをリアルタイム処理するために改良された、対応アルゴリズム/ソフトウェアとともに使用される。
【0021】
本発明の第3の面は、ステレオ情報から深度計算を可能にする、ハードウェアおよびソフトウェアの使用を介して実現できる応用に関する。一つの実施形態では、そのような応用は、リアルタイムの物体検出および認識を必要とする応用を含む。そのような応用は、様々なタイプのロボットを含む。そのようなロボットはハードウェアを含み得、ロボットが回避するかまたは拾い上げることを望む物体を識別し、さらに物体との間隔を決定するために、ソフトウェアアルゴリズムを動かしてもよい。深度情報はある距離はなれた情報を廃棄する(または記録しない)ために使用され得るので、そのような応用はまた、zキー処理またはクロマキー処理(例えば、ブルースクリーン処理)のような映像合成技術を含み得る。それゆえ、光景の中に物理的スクリーンを配置すること、または、背景情報を排除するために手動で映像を処理することを必要とせずにブルースクリーン処理効果を作成する。
【0022】
第2の実施形態では、そのような応用は深度情報が静止イメージまたは映像に関連するピクセル情報の属性として格納される場合に実現できる。その深度情報は圧縮アルゴリズムに有用であり得る。そのようなアルゴリズムはより離れた物体をカメラに接近して置かれている物体より高度に圧縮し得る。それゆえ、その深度情報はたぶん見る者にとってより興味のあるものになる。その深度情報はまた、映像およびイメージ編集において有用であり得る。例えば、一つの映像シーケンスからの物体が適切な深度で第2のシーケンスに挿入される合成イメージを作成するために使用され得る。
【0023】
好ましい実施形態の詳細な説明
I.概要
A.概略
本発明の目的は高い性能、関係するデータ組の素早く能率的な解析を提供することである。本発明は、三つの関係する面、すなわちアルゴリズム/ソフトウェア、ハードウェア実装、および産業用途を組み入れる。従って、本発明の様々な実施形態は、(1)これらのデータの組またはこれらのデータの組のいくつかの部分がいくつかの測定に関係付けられているかどうかを決定し得、(2)これらのデータの組またはこれらのデータの組のいくつかの部分がどの程度関係付けられているかを決定し得、(3)後で抽出された情報が元の本質的な情報を十分に表すような方法におけるデータの組の元の情報を変換する変換スキームを利用し得、(4)関係付けられているそれらのデータの組からいくつかの基礎となる本質的な情報を抽出し得、(5)ユーザが望む基礎となる情報に目立って貢献はしない他の情報(本質的かそうでないか)を排除し得る。これらの面は以下でより詳細に議論する。
【0024】
本発明の一つの面は、一般に対応アルゴリズムと呼ばれるソフトウェア/アルゴリズム実行である。一般に、対応アルゴリズムの一つの実施形態は以下のステップを含む。1)行データの組をベクトルに変換する。2)そのベクトルを使用してデータの組の相関を決定する。最終結果は、一つのデータの組におけるデータ要素と他のデータの組におけるデータ要素との間の最適相関を表す視差(disparity)値である。言い換えると、最適視差はまた、一つのデータの組における一つのデータ要素と他のデータの組における最適整合データ要素との間の距離を表す。
【0025】
本発明で使用される対応アルゴリズムの一つの実施形態の変換部分は、非パラメトリック局所変換として知られる変換アルゴリズムのクラスを構成する。そのようなアルゴリズムは、関係のある範囲および性質を決定するために関係付けられたデータの組を評価するように設計され、それぞれの組に対して使用されるデータ収集技術における差の結果として異なり得る(データの組が互いに関係付けられているのだが)データの組に対して特に有用であり得る。
【0026】
特定の実施形態では、本発明の対応アルゴリズムは以下のステップのいくつかまたはすべてを組み入れ得る。それぞれは以下に、より詳細に記述される。(1)二つ以上の関係付けられたデータの組を必要とする。(2)両方のデータの組におけるデータの変換演算、同じデータの組における他のデータ要素との関係によるデータ要素を特徴付ける変換演算を利用する。(3)変換された特徴を使用し、一つのデータ組におけるデータ要素を他のデータの組におけるデータ要素と相関する。(4)異常と思われるか、または、しきい値または対象演算に合わない(donot meet)結果を選別するように設計された方法で、結果をフィルタリングする。(5)利用可能な形式で結果を報告または使用する。
【0027】
本発明のソフトウェア/アルゴリズムの面の他の実施形態では、センサスおよび相関ステップは並列およびパイプライン型で実行される。アルゴリズムのシストリック(systolic)性質は効率および速度を促進する。従って、一つのイメージにおけるセンサスベクトル(または相関ウインドウ)は、並列およびパイプライン化方法における他のイメージのそれぞれの視差シフトセンサスベクトル(または相関ウインドウ)のそれぞれと相関される。この相関ステップと同時に、左右一貫性検査が実行される。従って、最適視差およびこれらの視差の左右一貫性検査は同時に実行される。
【0028】
本発明のハードウェア面は、効率的におよび低コストでデータの組の比較を行うように設計される並列およびパイプライン化演算システムを表す。データはパイプラインを通ってシストリックな性質において処理される。このイメージ処理システムは演算量の非常な増大、高メモリ帯域幅、および、高I/O帯域幅を介して高性能を与える。このハードウェアの実施形態は、データ配分技術の多様性を保障するように設計される柔軟性のあるトポロジーを含む。全体のスループットは、本発明のアレイボードを均等に通ってリソースを供給することによって増加される。そのようなトポロジーの一つは、再構成システムに対するトーラス構成である。
【0029】
一つの実施形態では、本発明のハードウェアシステムは再構成され得る。つまり、そのハードウェアを特定の演算に適合するように近くに再構成できる。例えば、多くの乗算が必要ならば、そのシステムは多くの乗算器を含んで構成される。他の演算要素または機能が必要である場合、それらもまたシステムにおいてモデリングされまたは形成され得る。このように、システムは特定の演算(リアルタイム映像または音声処理)を実行するように最適化され得る。再構成可能なシステムはまた柔軟であり、製造中、テスト中、または、使用中に生じる少数のハードウェア欠陥にユーザは対処できる。
【0030】
一つの実施形態では、本発明のハードウェア面は、FPGAチップおよび高速SRAMからなる演算要素の二次元アレイとして設計される再構成イメージ処理システムを構成し、リアルタイム相互作用マルチメディア用途に必要とされる演算リソースを与える。一つの実施形態では、演算システムは、演算要素、データパスユニット、PCIインタフェースユニット、および、クロック制御ユニットの4×4アレイを含む。演算要素は、センサス変換を実行し、相関を決定し、他の変換機能を実行する。データパスユニットは、アレイにおける様々な演算要素に対するデータの経路を制御する。PCIインタフェースユニットはPCIバスに対するインタフェースを与える。クロック制御ユニットは、演算要素、データパスユニット、および、PCIインタフェースユニットに対するクロック信号を生成し、分配する。
【0031】
本発明の用途の面は、静止画または動画の処理に関係付けられた用途を含み、そのアルゴリズムは、深度測定および動き追跡を含む様々な目的に使用され得る。アルゴリズムから派生する情報は、物体検出および認識、イメージ理解、圧縮および映像編集または合成として目的に使用され得る。
【0032】
本発明の様々な面は、様々な用途に使用され得るのだが、一つの図示的な実施形態は、発明の性質を図示するのに使用される。この実施形態では、センサス変換として知られる様々な非パラメトリック局所変換は同一の光景を同時に記録するのに使用される二つのカメラから受信されるイメージに適用される。それぞれのイメージにおけるそれぞれのピクセルは、輝度値として表される。そのピクセルは選択された周囲のピクセルに対するそれぞれの輝度の関係を表す“センサスベクトル”に変換される。すなわち、その関係というのは、対象ピクセルの輝度が、他のピクセルの輝度よりも高いか低いかである。その後、一つのイメージにおける対象ピクセルを取り囲むウインドウからのセンサスベクトルは、合計ハミング距離と表される比較で、他のイメージにおける様々なウインドウからのセンサスベクトルと比較される。その合計ハミング距離は、一つのイメージにおける対象ピクセルと他のイメージにおける同一のピクセルとのあいだの適当な整合を決定するのに使用される。その後、その整合は、一つのイメージにおけるピクセルのxy−座標と他のイメージにおける整合ピクセルのxy−座標との間の差に基づく視差として(またはオフセットとして)表される。その後、結果は、エラー検出を受けて、しきい値付けに供される。エラー検出およびしきい値付けに供される、逆方向の比較を含んで同一の整合ピクセルが比較が他の方向にいつなされたかを見つける(左右一貫性検査)かを決定し、イメージにおける構成を調べて結果が十分に信頼性のあるもの(対象演算子)かどうかを決定し、生じた視差の集合解析を適用する(モードフィルタ)。
【0033】
一つのイメージからのピクセルが、他のイメージにおけるピクセルにいったんマッピングされ、その視差がわかると、それぞれのイメージにおける光景に対するカメラからの距離は計算され得る。その後、この距離(または深度)は、様々な用途に使用され得る。それらの用途は、物体検出(周囲を動くロボットに有用である)および物体認識(物体エッジが深度視差に基づいて決定され得、物体の距離が物体の全三次元構造を決定するのに使用され得るので、物体はさらに容易に認識され得る)を含む。そのアルゴリズムにおけるステップの一つの特定の実施形態は、以下のことを含む。
【0034】
1)二つのカメラから入力イメージを受信する。
【0035】
2)エピポーラ(epipolar)線が結果イメージにおける線を走査されるように入力イメージを修正する。ただし、この制限がすでに満たされていれば、このステップが省略され得る。
【0036】
3)センサス変換のような局所変換を使用して、入力イメージを変換する。これは、それぞれの輝度イメージにおいて別々になされる。
【0037】
4)二つの変換されたピクセルPおよびQとの間のハミング距離を演算することによってステレオ整合を決定する。ここで、Pは一つの入力イメージに対して変換されたピクセルであり、Qは第二の入力イメージに対するサーチウインドウにおける変換されたピクセルである。これは、それぞれの輝度イメージにおいて別々になされる。
【0038】
5)スライディング合計を使用してこれらのハミング距離を四角の相関ウインドウ全体で合計し、サーチウインドウ全体での最小合計ハミング距離の変位を決定する。
【0039】
6)参照イメージを用いて上で逆にしたステップ3を概念的に繰り返すことによって左右一貫性検査を任意に実行し、結果の変位が逆であると決定する。構成されないピクセルを分類する。
【0040】
7)対象演算子を入力イメージに任意に適用する。十分なコントラストまたは模様(テクスチャ)のない領域における変位は疑いのあるものとして分類され得る。
【0041】
8)モードフィルタを適用し集合解析に基づいた視差を選択する。
【0042】
9)参照イメージにおけるそれぞれのピクセルに対して、他のイメージにおける対応するピクセルに対する変位を含む新しいイメージを生成する。他のイメージは、左右一貫性、対象信頼、および、モードフィルタ視差選択についての注釈に従う最小合計ハミング距離に関連付けられる。
【0043】
ここで、ソフトウェア/アルゴリズムは、二つのイメージ、左カメラからの一つのイメージ、および、右カメラからの他のイメージを受信するイメージ処理アルゴリズムである。輝度イメージは異なっているがどこか関係付けられたデータの組を表す。アルゴリズムは入力として二つの輝度イメージを取り、それぞれのイメージピクセルに対する視差を構成する出力イメージを生成する。センサス変換は両方のイメージにおけるそれぞれのピクセルに対するセンサスベクトルを生成する。所与のセンサスベクトル/ピクセルに対するサーチウインドウにおけるすべてのハミング距離の最小ハミング距離は、再び最適ハミング距離として選択される。その後、最適ハミング距離に関連付けられる視差は、様々な処理後用途に使用される。
【0044】
出力は、任意にさらに処理され、それぞれの結果ピクセルに対する信頼測定およびイメージ雑音特性に基づくしきい値付けを与える。一つ以上のそのようなスキームが使用されるならば、信頼/エラー検出検査を通過するまで、最初に選択される視差は単に一時的なものである。三つの信頼/エラー検出検査(左右一貫性検査、対象演算子、および、モードフィルタ)のいずれかの組み合わせは、このシステムにおいて使用され得る。
【0045】
左右一貫性検査は、エラー検出の形態である。この検査は右イメージにおけるイメージ要素による最適イメージ要素として選択される左イメージにおけるイメージ要素が、最適イメージ要素として右イメージにおける同一のイメージ要素を選択するかどうかを決定し、確認する。対象演算子は、キャプチャーされる光景の構成に基づいた高レベルの信頼に輝度イメージが関連付けられているかどうかを決定する。従って、均一な構成である光景のイメージ要素に関連付けられる対応演算は、構成がさらに変化しているそれらの光景でよりも低い信頼値を有する。モードフィルタは選択された最適な視差が集合解析に基づく視差を選択することにより高度の一貫性を有するかどうかを決定する。一つの実施形態では、モードフィルタはウインドウにおけるそれぞれの視差の頻度を計数し、そのウインドウに対する最大計数をもって視差を選択する。
【0046】
いくつかの実施形態では、イメージ処理システムはその外部環境からデータを受信し、対応を演算し、距離/深度計算、物体検出、および、物体認識といった様々な処理後の産業用途に対して対応演算の結果を使用する。本発明の以下のイメージ処理システムは、対応アルゴリズムの複数の変形および実施形態を実行し得る。アルゴリズムは、以下でさらに詳細に記述される。ステレオ表示に対する対応アルゴリズムの実行では、イメージ処理システムの一つの実施形態は非バースト(burst)モードにおけるPCIバスインタフェースから入力データとして一対のステレオイメージを受信し、24個のステレオ視差を演算する。入力データ対は、時分割方法におけるデータを受信する空間的に分けられた二つのカメラまたはセンサ、または、単一のカメラまたはセンサであり得る。別の実施形態は、16個の視差のみを使用する。他の実施形態は、他の数の視差を使用する。
【0047】
この完成したシステムは、イメージキャプチャー、ディジタイゼーション、ステレオおよび/または動き処理、および、結果の伝達を含む。これら他の実施形態は、データのキャプチャーにおいて一つ以上のセンサを使用し、アルゴリズムはデータを処理する。
【0048】
一般的な特徴として、再構成可能なイメージ処理システムは、そのハードウェアを再構成できて、すぐに特定の演算に適する機械またはエンジンである。多数の乗算が必要であれば、システムは多数の乗算器を有するように再構成される。他の演算要素または機能が必要であれば、それらはそのシステムにおいてモデルとなり形成される。このようにコンピュータは最適化され、特定の演算(例えばリアルタイム映像または音声処理)をさらに効率的に実行する。再構成可能なイメージ処理システムの別の利点は、その柔軟性である。テストまたはデバッグ中に生じる短絡のようなハードウェア欠陥は製造に重大な影響を与えることはない。ユーザは、他の線を使用して必要とされた信号の経路を決めることによってこれらの欠陥に直面し得る。
【0049】
ステレオ表示用途に対するほとんどのコンピュータは、それらの指示を連続して実行する。本発明では、その指示を同時に実行して、再構成可能なイメージ処理システムの範囲全体に広がる。そのような演算を支援するために、本発明の再構成可能なイメージ処理システムは、FPGAチップおよび高速SRAMを構成する演算要素の二次元アレイとして設計されており、リアルタイム相互作用マルチメディア用途に必要とされる演算リソースを与える。
【0050】
以下の様々な図に対する議論では、用語“イメージデータ”および“イメージ要素”は、様々なレベルの抽出概念でのイメージを表すデータのすべての面を表すために使用される。従って、これらの用語は、単一ピクセル、ピクセル群、変換された(センサスまたはランク)イメージベクトル、単一データのハミング相関値、相関合計、外部指標、対象演算合計、または、その状況に依存するモードフィルタ指標を意味し得る。
【0051】
B.PCI準拠システム
図1は、二つのセンサまたはカメラが物体に関してデータをキャプチャーし、演算システムにデータを提供する本発明の特定の産業用途を示す。映像または他の映像処理システムでキャプチャーされた光景10は物体11と背景12を含む。この図では、物体11にはフォルダを持った人間がいる。この物体11は静止しているか動いているかのいずれかであり得る。ただし、光景10におけるすべての要素は、構成、深度、および、動きをといった変化する特性を有し得る。従って、人間のシャツはズボンおよび持っているフォルダと異なる模様(テクスチャ)を有し得る。
【0052】
x−y−z座標システム15によって示されるように、光景は三次元像である。本発明は一次元または二次元像をキャプチャーすることも同様に可能である。ただし、本発明の様々な実施形態は、これらの実施形態においてリアルタイムに決定される二つのカメラの間隔の関係、ピクセル間隔、焦点距離、レンズ特性、および、視差といった情報から距離/深度を決定し得る。従って、DanaH. Ballard & Christopher M. Brown, COMPUTER VISION 19-22(1982)を参考として援用すると、
【0053】
【数1】
【0054】
となる。ここでzは深度位置、fは焦点距離、2dはカメラ間隔ベースライン、x’’−x’は視差である。
【0055】
カメラ/センサシステム20は、演算システム30によるさらなる処理のためのイメージをキャプチャーする。カメラ/センサシステム20は、実装ハードウェア23に取り付けられた左カメラ21と右カメラ22を有する。カメラ21および22は、赤外センサのようなセンサにもなり得る。この図におけるカメラの大きさは、教示または説明する目的のために拡大されているので、図示されているよりもさらに小さくなり得る。例えば、カメラは、個々が身につけるめがねになり得る。
【0056】
この特定の図示は、実装ハードウェア23の使用を示しているが、図1のような実装ハードウェアは本発明を行うにあたり必要ではない。カメラはなんらかの実装ハードウェアを使用することなく様々な物体に直接に実装され得る。
【0057】
他の実施形態では単一のカメラのみが用いられる。その単一のカメラは、動く場合もあり、静止している場合もある。従って、別個のイメージは、空間/時間特質によって同一であると認められ得る。単一のカメラを用いて、“左”イメージはある時間にキャプチャーされたイメージと対応し得、“右”イメージは別の時間にキャプチャーされたイメージと対応し得る。従って、解析は連続するフレームの比較を含む。つまり、a、b、c、および、dが単一のカメラでキャプチャーされたイメージの連続するフレームを表すならば、aとbが比較され、次にbとc、次にcとd、などと続く。同様に、単一のカメラは二つの別個の位置(すなわち、左位置および右位置)を前後へシフトしまたは動き、キャプチャーされたイメージは左または右イメージのいずれかへ適切に明示または指定される。
【0058】
左カメラ21と右カメラ22は一対のステレオイメージをキャプチャーする。これらのカメラはアナログまたはディジタルのいずれかであり得る。ディジタルカメラはSiliconVisionによって広められたものを含む。本発明はディジタル情報を演算するので、システムがアナログカメラを含んでいれば、画像情報はディジタイザ(図示せず)を使用してディジタル形式に変換されなければならない。
【0059】
フレームグラバは、カメラシステム20または演算システム30のいずれかに取り付けられ得る。たいてい、フレームグラバはディジタイザを有し、入ってくるアナログ信号をディジタルデータストリームに変換する。ディジタイザがフレームグラバに与えられないならば、別個のディジタイザが使用されうる。イメージデータは、ケーブルまたはワイヤ40を介してカメラ/センサシステム20から演算システム30に送信される。
【0060】
当業者によって通常知られているように、アナログ信号を形成する輝度データは、カメラ/センサシステム20によって最初にキャプチャーされる。アナログ信号は、電圧または電流の大きさによって表され得る。一つの実施形態では、カメラ/センサシステムは、この電圧または電流の大きさを0から255の範囲のルミナンス値に直す。ここで、0は黒を、255は白を表す。他の実施形態では、ルミナンス値は、0から511の範囲であり得る。これら0から255のルミナンス値をディジタルで表すために、8ビットが使用される。この8ビット値は、それぞれのピクセルまたはイメージ要素に対する輝度データを表す。他の実施形態では、カメラ/センサシステムは、イメージされる光景の温度特性を捕獲する赤外センサである。この温度情報は、輝度データに直され得、同じ方法でルミナンス値として使用され得る。
【0061】
演算システム30は、コンピュータ34、マルチメディアスピーカ32および33、モニタ31、および、マウス36を有するキーボード35を含む。この演算システム30は、単独のパーソナルコンピュータ、ネットワークワークステーション、ネットワークにつながったパーソナルコンピュータ、ネットワークターミナル、または、特別な目的の映像/グラフィックワークステーションであり得る。
【0062】
示された実施形態では、イメージデータを処理するのに使用されるハードウェアおよびアルゴリズムは、演算システム30のコンピュータ34に見られる。演算システムは、周辺装置相互接続(PCI)規格に従う。一つの実施形態では、PCまたはワークステーションホストと再構成可能なイメージ処理システムとの通信は、PCIバスで扱われる。
【0063】
生放送または映像のソースデータは、フレームグラバから入ってくるイメージをともにPCIバスでイメージ処理システムに送られる。あるいは、カメラは映像データをイメージ処理システムの端子に直接送られ得る。その方法は、(1)アナログ入力を使用して、ドータカードにおいてディジタイザを使用してイメージ信号をディジタル化して、ノイズ補償の間にディジタルデータをイメージ処理システムに送るか、または、(2)ディジタルカメラを使用するかのいずれかである。イメージ処理システムの視差計算は、明度が映像カメラに対して近接する光景要素のリアルタイム映像を生成する。
【0064】
図2は、パーソナルコンピュータまたはワークステーションにおいて本発明のイメージ処理システムが一つ以上のPCIカードに適合する周辺装置相互接続(PCI)準拠システムを示す。PCI準拠システムは、演算システム30において見られ得る。本発明の一つの実施形態は、PCIバス182に接続されるイメージ処理システム110である。ホスト演算システムは、ローカルバス180およびホスト/PCIブリッジ101に接続されるCPU100を含む。さらに、ホストプロセッサは、メインメモリ102に接続されるメモリバス181を含む。このホストプロセッサは、ホスト/PCIブリッジ101を介してPCIバス182に接続される。PCIバス182に接続され得る他の装置は、音声周辺装置120、映像周辺装置131、バス188を介して映像周辺装置131に接続される映像メモリ132、SCSIアダプタ140、ローカルエリアネットワーク(LAN)アダプタ150、グラフィックアダプタ160、および、複数のブリッジを含む。これらのブリッジは、PCI/ISAブリッジ170、PCI/PCIブリッジ171、および、前述のホスト/PCIブリッジ101を含む。SCSIアダプタ140は、ディスク141、テープドライブ142、CD ROM143、SCSIバス183を介してSCSIアダプタ140に接続されるすべてのような複数のSCSI装置に接続され得る。LANアダプタ150は、ネットワークバス184を介する演算システム30に対するネットワークインタフェースを可能にする。グラフィックアダプタ160は、バス186を介して映像フレームバッファ161に接続される。PCI/PCIブリッジ171は、バスマスタによる最適バスアクセスを可能にしながら、過度な負荷なしに単一のシステムにおける多数のPCIバスおよびPCI装置の相互接続を可能にする。PCI/PCIブリッジ171は、例示的なPCI装置172および173をPCIバス187に接続する。PCI/ISAブリッジ170は、ISA装置が同一のシステムに接続されることを可能にする。PCI/ISAブリッジ170は、バスマスタ174、I/Oスレーブ175、および、ISA拡張バス185を介するメモリスレーブ176に接続される。フレームグラバ130は、PCIバス182を介する本発明のイメージ処理システム110にイメージデータを与える。イメージ処理システム110もまた、同一のPCIバス182を介してローカルホストプロセッサ100に接続される。
【0065】
当業者によって通常知られているように、フレームグラバ130のようなフレームグラバは、動く映像、静止した映像、および、生放送の映像オーバーレイ(overlay)をキャプチャーし表示するフレームグラバイメージ処理システムを与える。フレームグラバが存在することで、Windows(登録商標)に対するVideo、PCMCIA、または、PCIに十分な互換性があり、および、単一のフレームを捕らえることが出来る。これらのフレームグラバは、カムコーダ(camcorder)、映像レコーダ、VCR、ビデオディスク、防犯カメラ、任意の規格NTSCまたはPALに互換性のあるソース、RCA型端子でNTSC信号を出力する任意の装置、または、任意の規格外の映像信号を含む様々なソースからの入力を受信することが出来る。
【0066】
上述した実施形態では、フレームグラバは、ピクセルアレイまたはディジタル画像要素を生成する。そのようなピクセルアレイはよく知られている。上述した実施形態は、カメラによって生成された輝度情報を使用し、数アレイを作る。ここで、それぞれの数は、特定の位置での光の強度に対応する。典型的に、数は正確に8ビットである。ここで、0は最も暗い強度値を、255は最も明るい強度値を表す。X(イメージの幅)およびY(イメージの高さ)の典型的な値は、320×240、640×240、および、640×480である。それぞれのピクセルでキャプチャーされた情報は、クロミナンス(または色相)およびルミナンス(輝度として本明細書で示している)を含み得る。
【0067】
代替の実施形態では、イメージデータは、フレームグラバ130を介するPCIバス182に沿いPCIシステムを通って与えられる必要はない。点線矢印199で示されるように、カメラ/フレームグラバからのイメージデータは、イメージ処理システム110に直接引き渡される。
【0068】
PCI準拠システムは、42フレーム/秒で320×240ピクセルイメージでの24個のステレオ視差を演算し、32ビットのセンサスデータの形成を密集して生成する。この速さで動作すると、イメージ処理システムは、約23億回のRISC相当の命令/秒(2.3giga-ops/秒)で動作し、5億バイト(500MB)のメモリアクセス/秒を維持し、2GB/秒のI/Oサブシステムのバンド幅を達成し、約7700万回の点×視差(point×disparity)測定(PDS)/秒を達成する。バーストPCIバスインタフェースを有すると、約124億回のRISC相当の演算/秒および2690MB/秒のメモリアクセスを使用して、このシステムは255フレーム/秒を達成し得る。入力データ対は、時分割方法でデータを受信する二つの空間的に分離されたカメラまたはセンサ、または、単一のカメラまたはセンサからなり得る。
【0069】
C.アレイボード
図3に示されているように、PCIバス182に接続されたイメージ処理システム110は、演算要素及びメモリのアレイ114、PCIインターフェースユニット110、データパスユニット112、クロック制御ユニット113、及び幾つかの接続バス115を含む。アレイ114は、部分的なトーラス構成に配列された16個のフィールドプログラマブルゲートアレイ(FPGA)と16個のスタティックランダムアクセスメモリ(SRAM)との均質なアレイを含む。これは、単一のボード上に実現され得る。もちろん、ASIC及びカスタム集積回路で実行される場合には、再構成可能な要素を使用せず、トーラス構成は使用しない。
【0070】
16個のFPGAのアレイは、センサス変換、相関、エラー検査(例えば、左右一貫性検査)、及び様々な伝送機能を実行する。これらの機能は、適用可能なレジスタ及びロジックの適切なプログラミングを介して、FPGA内に構築される。本発明のある実施形態は、シストリック的な(systolic)方法でデータを処理する。輝度イメージの各走査線に対して、本発明の並列及びパイプライン構造は、あるイメージ中の各センサスベクトル(すなわち各イメージ要素)と他のイメージのサーチウインドウの中のそのセンサスベクトルの各々と比較し得る。ある実施形態では、この並列及びパイプライン化システムの出力が、完全なサーチウインドウを有する各データストリームについての、左右最適視差数、ウインドウの左右最小合計ハミング距離、右左最適視差数、及びウインドウの右左最小合計ハミング距離である。
【0071】
PCI対応演算システムで使用される場合には、PCIインターフェースユニットが、PCIバスと演算要素のイメージ処理アレイとの間で、(読み出し動作に対する)イメージデータ及び(書き込み動作に対する)対応データのトラフィックを制御する。更に、PCIホストが、2つ或いは3つのそのようなイメージ処理システムを含んでおり、結果として、単一の標準パーソナルコンピュータ中のより密で且つ柔軟なパッケージをもたらす。ホストコンピュータは、マザーボード上のPCIコントローラを通して、PCIインターフェースユニットと直接に通信する。PCIバスのためのインターフェースは、バースト或いは非バーストモードであり得る。
【0072】
データパスユニット112は、アレイの様々な選択された部分へ及びそこからのデータの移送、並びに64ビットPCIバス拡張部の管理について、責任を担っている。データパスユニット112は、ホストプロセッサとアレイとの間での双方向データ伝送を許容し且つデータ通信タスクを管理する制御構造を有して、プログラムされている。アレイチップ間のパイプライン化されたデータパスは、33MHz以上で動作する。データパスユニット112は、アレイとPCIバスとの間の通信を制御するが、PCIバスの64ビット拡張部にも直接に接続されている。データパスユニット112は、PCI32チップによってプログラムされており、アプリケーションが必要とするように動的に再構成される。
【0073】
クロック制御ユニット113及びデータパスユニット112が構成されると、クロック制御ユニット113はアレイの残りを構成する。構成データをアレイに直接に伝達するが、1度に16ビット、16アレイ演算要素(FPGA及びSRAM)の各々に1ビットを、送る。アレイが完全にプログラムされると、クロック制御チップは、アレイ全体に対してのクロック供給を管理する。
【0074】
ある実施形態では、イメージ処理システムは、完全にボードを構成するために、3レベルのブーストトラップを必要とする。PCIインターフェースユニット110は、イメージ処理システムをPCIバスに直接に接続する。これは、データパスとクロック制御チップとをプログラムし、それらは次にアレイ全体をプログラムする。PCIインターフェースユニット110は、PCIバスの構成ビットを受け取り、それらをデータパスユニット112及びクロック制御ユニット113に転送する。
【0075】
本発明の基本的なハートウェア及びシステムを用いて、実行すべきアルゴリズムの様々な実施形態が述べられる。ハードウエア及び実行されるシステムの更なる詳細は、後述される。
【0076】
II.アルゴリズム/ソフトウェア
A.概略
本発明はアルゴリズムの階層及びこれらのアルゴリズムの様々なアプリケーションでの使用に関するが、対応アルゴリズムは、深度情報を生成するセンサス変換を使用する特定のソフトウェア実施形態の説明を通じて、最も良く説明される。このアルゴリズムは、まず高レベルの概略で説明され、引き続くセクションでは、様々なステップをより詳細に説明する。この明細書の例示的なプログラムでは、MAINと称されるプログラムが、本発明の対応アルゴリズムの一般的な動作及びある実施形態のフローを与える。
【0077】
アルゴリズムの第1のステップは、イメージを修正することである。これは、各々の輝度イメージについて個別に行われる。修正は、ステレオ対応のエピポーラ拘束(epipolar constraint)線がイメージ中の走査線でもあるように、イメージを再マッピングすることである。このステップは、カメラの位置合わせが不適切であったり、レンズのゆがみが個々のイメージを異なったように歪ませたりするときに、有用であり得る。しかし、修正ステップを行うかどうかは選択可能であり、オリジナルイメージが、一つのイメージからの線が修正無しに他のイメージからの線の上にうまくマッピングされるような質であるならば、不必要であり得る。
【0078】
アルゴリズムの第2のステップは、修正されたイメージにセンサスやランクのような非パラメトリック局所変換を適用することである。議論される実施形態では、使用されるアルゴリズムはセンサス変換である。この演算は、各イメージについての輝度マップをセンサスマップに変換し、センサスマップでは、各ピクセルが、そのピクセルと周囲のピクセルとの間の輝度関係を示すセンサスベクトルによって代表される。
【0079】
第3のステップは、相関である。このステップは、変換イメージの連続する線に対して演算されて、相関合計バッファを更新する。相関ステップは、参照変換イメージ2(右のイメージ)のサイズXWIN×YWINのウインドウの変換値を、視差と称される値だけ置換された参照変換イメージ1(左のイメージ)の同様なウインドウと比較する。比較は、参照イメージ要素のサーチウインドウの内部で、あるイメージの参照イメージ要素と他のイメージの各々のイメージ要素との間で行われる。
【0080】
相関ステップが進行しているのと同時に、信頼値がまた、同じ相関ウインドウについての左右一貫性検査を実行するか及び/或いは対象計算を合計することによって、演算される。各々の新しい線に対する対象演算器の結果は、ウインドウ合計バッファの一つの線に記憶される。左右一貫性検査及び対象演算を行うかどうかは選択可能である。
【0081】
相関ステップは、視差結果(disparity result)イメージの演算をもたらす。ここでは、2つの演算が行われる。(1)各イメージ要素のための最適視差値の決定、及び(2)低信頼イメージ輝度或いは視差結果の決定、である。最適視差演算は、最小合計相関値に対応する外部インデックスの生成を伴う。これは、最適マッチの視差を拾い出す。第2の演算は、(a)輝度値からの閾値信頼値の形態での対象演算、(b)相関合計バッファ上での左右一貫性検査、及び(c)個体群解析に基づいた視差を選択するためのモードフィルタ、に基づいて、信頼性の低さを理由として幾らかの視差結果を除去する。アルゴリズムの最終的な結果は、オリジナルイメージとほぼ同じサイズの視差値のイメージであり、視差イメージの各ピクセルは、輝度イメージ2の対応するピクセルの視差である。
【0082】
図4は、様々な機能が、イメージデータを実行し、取り扱い、且つ操作して、他の有用なデータを生成する、本発明のある実施形態の高レベルの表現を示す。本発明のこの実施形態の最終的な目標は、オリジナルイメージの中の個々のイメージ要素に対する選択された最適視差の組である視差イメージ290を生成することである。この視差イメージを得るために、イメージデータは、変換され、相関され、エラー及び信頼を検査されなければならない。
【0083】
光景10が、左カメラ21及び右カメラ22によってキャプチャーされる。適切なフレームグラバ及びデジタイザが、本発明の再構成可能なイメージの処理システムにイメージデータを提供する。個別のピクセル要素及びその各々の輝度の形態である左のイメージデータ200と右のイメージデータ201とは、左の輝度イメージ210と右の輝度イメージ211とにマッピングされる。これらのイメージは、それぞれ幅がX及び高さがY(X×Y)である。センサス変換或いはランク変換のような非パラメトリック局所変換は、これらの輝度イメージの各々に適用される。変換215は、矢印218によって示されているように左の輝度イメージ210に適用されて、変換されたベクトル左イメージ220を生成する。同様に、変換216は、矢印219によって示されているように右の輝度イメージ211に適用されて、変換されたベクトル右イメージ221を生成する。これらの変換は、各々のイメージ要素の近隣部或いはウインドウの中のこれら2つの輝度イメージの中のイメージ要素の実質的に全てに適用される。従って、ウインドウのサイズ及び参照イメージ要素の位置は、輝度イメージの端のどのイメージ要素が変換計算で無視されるかを決定する。これらの無視されたイメージ要素は参照イメージ要素としては使用されないが、これらは、他の参照イメージ要素の変換ベクトルの計算では、依然として使用され得る。
【0084】
本発明は、更に相関合計プロセスを含む。相関合計プロセスは、左イメージと右イメージとの間の対応の決定における一ステップである。相関合計プロセス225は、左イメージ220のための相関ウインドウの内部の変換ベクトル、及び右イメージ221の中の同じサイズの相関ウインドウの内部の変換ベクトルに動作して、単一の矢印226で示されているような相関合計マトリクス230を生成する。この相関合計マトリクス230の生成において、左或いは右イメージの何れかが参照として使用されて、もう一方のイメージの中のウインドウがシフトされる。右イメージが参照として取り扱われるならば、相関合計マトリクス230は、相関ウインドウの中の右イメージ221の各イメージ要素がどのように相関しているか、或いは左イメージ要素の右イメージ要素からのシフト或いは視差の各々についての相関ウインドウの中で左イメージ要素にどのように対応しているかを示すデータを含む。定義によって、特定の左イメージ要素の、右イメージ要素の様々なシフト或いは視差との相関或いは対応を示すデータは、やはり相関合計マトリクス230に含まれている。これらの視差に基づく相関合計及び相関合計マトリクス230、矢印231で示される最適視差は、各右イメージ要素について選択されて、外部インデックスアレイ270に記憶され得る。最終的な視差イメージ290は、その後に、矢印271で示されているように、外部インデックスアレイ270で決定される。ステレオの場合には、視差は、変換イメージ1のウインドウと変換イメージ2のウインドウとの間の水平オフセットである。動きの場合には、視差は垂直オフセットに渡って同様に範囲を有し、第2の変換イメージは、垂直オフセットを有するウインドウを有するために、より多くの線を読まなければならない。これは、図58に関連して後述される。
【0085】
視差イメージ決定は、3つのオプションの信頼/エラー検出検査、すなわち、対象演算、左右一貫性検査、及びモードフィルタを含み得る。対象演算は、輝度イメージが高レベル信頼に関連しているかを、キャプチャーされた光景の模様(テクスチャ)に基づいて決定する。これより、均一な模様(テクスチャ)である光景のイメージ要素に関連している対応演算は、模様(テクスチャ)が変化している光景よりも、低い信頼を有する。対象演算は、輝度イメージの一つのみ、左側或いは右側のいずれかにのみ、適用される。しかし、他の実施形態は、両輝度イメージに適用される対象演算をカバーし得る。図4では、対象演算235は、矢印236によって示されているように右輝度イメージに適用され、対象ウインドウの内部の各イメージ要素について、矢印237で示されているように合計のスライディング視差(SSD)アレイ240を生成する。閾値演算241の適用によって、最終対象結果アレイ250が生成される。対象結果は、特定のイメージ要素がこのイメージ処理システムの中に確立された信頼閾値をパスするかどうかを反映するデータを含む。対象結果アレイ250の中のデータに基づいて、視差イメージ290は外部インデックスアレイ270に関連して決定され得る。
【0086】
左右一貫性検査は、エラー検出の形態である。この検査は、右イメージの中のイメージ要素によって最適イメージ要素として選択された左イメージの中のイメージ要素が、最適イメージ要素として、右イメージの中の同じイメージ要素をまた選択する事を、決定且つ確認する。左右一貫性検査245は、矢印246によって示されているように相関合計アレイ230に適用され、矢印276で示されているように外部インデックスアレイ270と比較され、矢印247によって示されているようにLR結果アレイ260を生成する。LR結果アレイ260は、左右一貫性検査をパスするイメージ要素を示すデータを含む。LR結果アレイ260は、外部インデックスアレイ270と協同して、矢印261によって示されるように視差イメージ290を生成するために使用される。
【0087】
第3の信頼/エラー検出検査は、モードフィルタである。モードフィルタは、個体群解析に基づいて視差を選択することによって、選択された最適視差が高度の一貫性を有するかどうかを決定する。これより、外部インデックスアレイ270の中の選択された最適視差が、高度の一貫性を示さないならば、その後これらの最適視差は無効にされる。モードフィルタ275は、矢印276に示されているように外部インデックスアレイ270に動作し、矢印277に示されているようにモードフィルタ外部インデックスアレイ280を生成する。モードフィルタ外部インデックスアレイ280は、特定のイメージ要素がその視差一貫性検査をパスした視差を選択したかどうかを示すデータを含む。データ及びモードフィルタ外部インデックスアレイ280は、矢印281に示されるように、外部インデックスアレイ270と協同して視差イメージ290を生成するために使用され得る。
【0088】
これらの3つの信頼/エラー検出検査を行うかどうかは選択可能であることに留意されたい。幾つかの実施形態は、視差イメージ290の決定に当たってこれらの3つの検査の全てを行い得るが、他の実施形態ではこれらの検査を全く含まなくてもよい。更に他の実施形態は、これらの検査の組合せを含み得る。或いは、対象演算、左右一貫性検査、及びモードフィルタを含む単一のプログラムが、MAINと呼ばれ得る。この単一プログラムでは、各々のウインドウの中のウインドウサイズ及び参照点の位置が、この信頼/エラー検出検査プログラムの開始において一度実行される。
【0089】
これらの図は結果の一時的な記憶のために様々なメモリの使用を図示しているが、他の実施形態では、結果を記憶する必要性を無くし得る。これらの実施形態は、上記の様々な演算を並列に及びパイプライン方式で実行して、パイプラインのあるステージで得られた結果が直ぐ後のステージで使用される。残念ながら、タイミングの要求を満たすために、幾つかの一時的な記憶装置が必要であり得る。例えば、左右一貫性検査は相関演算と並列に発生する。パイプラインの出力は、各イメージに対する右から左への最適視差だけではなく、左から右への最適視差も生成する。検査が行われると、結果は必ずしもLR結果アレイ260に記憶されない。そのような記憶装置(strage)は、結果が他のプロセッサに移されなければならないときか、或いはイメージ処理の過去の記録が要求されるときに、必要である。
【0090】
B.ウインドウ及び参照点
先のセクションは、対応アルゴリズムの概略を示した。このセクションでは、アルゴリズムの各ステップをもっと詳しく説明する後のセクションで使用されるある概念の、より詳しい説明を提供する。
【0091】
図5(A)及び5(B)は、ウインドウ或いは近隣部、参照イメージ要素、参照イメージ、及び視差の概念を示す。図5(A)は、右イメージが参照として指定されたときの所与の視差に対する相対的なウインドウ位置を示し、図5(B)は、左イメージが参照として指定されたときの所与の視差に対する相対的なウインドウ位置を示す。
【0092】
ウインドウ或いは近隣部は、参照イメージ要素の近くの規定された近傍或いは領域における、イメージ要素の(輝度イメージに比較して)小さいサブセットである。本発明では、ウインドウのサイズはプログラム可能である。ある実施形態は、9×9のサイズの変換ウインドウを使用し、他のウインドウの組は全て7×7のサイズである。変換ウインドウと他のウインドウ(例えば、相関ウインドウ、対象ウインドウ、モードフィルタウインドウ)との相対的なサイズの変更が、本発明の精神及び範囲から逸脱することなく使用され得るが、より小さい相関ウインドウの使用は、深度或いは動きの不連続さにおいて、よりよい局在化をもたらす。
【0093】
ウインドウ内での参照イメージ要素の位置もまた、プログラム可能である。例えば、変換ウインドウのある実施形態は、変換ウインドウの中心に位置する参照点を使用する。他の実施形態では、参照イメージ要素はウインドウのより下の右側角に位置する。ウインドウの右下角の参照点としての使用は、本発明のボックスフィルタリング実施形態を手助けするが、そこでは、後述するように、過去に計算された結果を、各々の現在の計算に対するウインドウの合計を更新するために使用する。このようにして、ウインドウがあるイメージ要素から他に動くにつれて、新しい要素のみが右下角のイメージ要素になる。
【0094】
図5(A)は、参照イメージ要素302に関連したウインドウ301に沿った右イメージ300を示す。同様に、左イメージ303は、ウインドウ304とそれに関連した参照イメージ要素305とを含む。これらのウインドウ及びそれぞれのイメージの相対的なサイズは、図示の目的で誇張されている。右イメージ300のウインドウ301のサイズは、XWIN ×YWINである。左イメージ303のウインドウ304のサイズも、XWIN ×YWINである。右イメージ300の上でのウインドウ301の位置は、参照イメージ要素302の位置によって定義される。ここで、参照イメージ要素302が、(XREF,YREF)に位置している。参照イメージ要素302に関連する様々な演算及び動作が、ウインドウ301の中の各々の選択されたイメージ要素に対して実行される。ある場合には、ウインドウ301の中の各々の且つ全ての要素が計算で使用され、他の場合には、イメージ要素の一部のみが演算のために選択される。例えば、9×9の変換ウインドウは、その中に位置する81のイメージ要素を有しているが、実際の変換操作は、参照イメージ要素を囲んでいる32のイメージ要素のみを使用する。しかし、相関計算のためには、7×7のウインドウは49のイメージ要素を有し、49のイメージ要素の全てが相関演算に使用される。
【0095】
本発明のある実施形態では、右イメージ300が参照イメージに設定され、左イメージ310が、各シフト或いは視差値に対する様々な相関合計演算のためにシフトされる。これより、視差がゼロ(d=0)では、右イメージのためのウインドウ301は(XREF,YREF)に位置し、左イメージ303のウインドウ304は、(XREF,YREF)の対応する位置に位置している。右イメージ300は参照イメージに指定されているので、左イメージ303のウインドウ304は、各視差値について左から右へシフトされる。これより、参照イメージ要素302についての視差ゼロ演算の後には、視差1(d=1)演算が、左イメージ303のウインドウ304を1要素位置だけ右に(XREF+1,YREF)シフトさせることによって、行われる。d=1に対する相関合計のこの組を演算した後に、d=2における次の視差に対する相関合計が演算される。再び、右イメージ300のウインドウ301を固定したままで、左イメージ303のウインドウ304を1イメージ要素位置だけ右にシフトさせる。参照イメージ要素302に対するこれらの相関合計が、各視差(d=0、1、2、...、D)について、このシステムについてプログラムされた最大視差値が演算されるまで、演算される。本発明のある実施形態では、視差の最大数は16(D=16)である。別の実施形態では、視差の最大数は24(D=24)である。しかし、本発明の精神及び範囲を離れることなく、如何なる数の視差も使用され得る。ステレオに対しては、左イメージの視差オフセットは、右イメージと同じ水平線に沿っている。動きについては、左イメージの対応するイメージ要素の周囲に小さい水平及び垂直の近隣部がある。
【0096】
図5(B)は、右イメージではなく左イメージが参照イメージとして指定されたときの視差相関合計演算のための類似したシフトを示している。ここで、左イメージ309のウインドウ310は、参照イメージ要素311に対する様々な相関合計演算のために固定され、右イメージ306のウインドウ307が、参照左イメージ要素311に関する必要な視差の数についての全ての相関合計が計算され記憶されるまで、一度に一イメージ要素位置だけ左にシフトされる。結局、右イメージが参照として指定されれば、左イメージのウインドウが左から右に各視差計算毎にシフトされる。左イメージが参照として指定されると、右イメージが、右から左に各視差計算毎にシフトされる。
【0097】
C.非パラメトリック局所変換
本発明は、非パラメトリック局所変換を使用する。そのような変換は、要素間の絶対的な同様性ではなく要素が同じデータの組の他の要素に関連する様な方法での比較に基づいて、異なるデータの組のデータ要素を相関させるように設計されている。
【0098】
2つの非パラメトリック局所変換が知られている。ランク及びセンサスである。本発明の好適な実施形態はセンサスを使用しているが、代替として、ランク変換も使用でき、他の同様な非パラメトリック局所変換演算も使用できる。
【0099】
ランク変換は、ターゲットピクセルの輝度を周囲のピクセルの輝度と比較する。ある実施形態では、ターゲットピクセルよりも高い輝度を有する周囲のピクセルを「1」とし、ターゲットピクセルに等しいか低い輝度を有する周囲のピクセルを「0」とする。ランク変換は、これらの比較値を合計し、ターゲットピクセルに対するランクベクトルを生成する。記載した実施形態では、ランクベクトルは、ターゲットピクセルよりも高い輝度を有する周囲のピクセルの数を示す数からなる。
【0100】
センサス変換は、以下のセクションでより詳細に説明される。一般には、この変換は、ターゲットピクセルを1組の周囲ピクセルと比較し、他のピクセルの輝度に対するターゲットピクセルの輝度に基づいて、センサスベクトルを生成する。ランク変換は、そのような比較の全ての合計を示す数を生成し、その数を使用して、ターゲットピクセルを特徴付ける。センサス変換は、個別化された比較の結果からなるセンサスベクトル(例えば、より高い輝度或いは、等しいかまたはより低い輝度を有する周囲ピクセルを示す1及び0の列)を生成する。
【0101】
これらの非パラメトリック局所変換は、主に比較7の組に依存し、従って、ゲイン或いはバイアスの変化の下では不変であり、ファクショナリズム(factionalism)に対する耐性を有する。加えて、そのような変換は、小数の輝度値に対する限定的な依存性を有している。これより、局所的な近隣部での少数ピクセルが、多数ピクセルに対して非常に異なった輝度分布を有しているならば、少数メンバーを含む比較のみが実行される。そのようなピクセルは、輝度に比例した寄与をしないが、数に比例して寄与する。
【0102】
イメージのゲイン或いはバイアスを変化させても高く安定して不変の結果が得られることは、以下の例によって示される。ピクセルPを囲む3×3の近隣部ピクセルを想定する。
【0103】
Pl P2 P3
P4 P P5
P6 P7 P8
このピクセルPを囲む3×3近隣部ピクセルの各ピクセルの実際の輝度値は、以下のように分布し得る。
【0104】
114 115 12
111 116 12
115 125 A
ここで、P8=Aであり、Aは、0≦A<256とP=116との間のどの値もとり得る。相対的輝度値に依存するセンサス或いはランクのような非パラメトリック変換を適用すると、以下の比較7の結果が得られる。
【0105】
1 1 0
1 0
1 0 a
ここで、aは、Pに関する輝度値Aに依存する1或いは0の何れかであり、この例ではP=116である。Aが0から256まで変化すると、A<116であればa=1であり、A≧116であればa=0である。
【0106】
センサス変換の結果として、{1,1,0,1,0,1,0,a}のような何らかのカノニカルオーダの8ビットが得られる。ランク変換は、A<116(a=1)であれば「5」を生成し、A≧116(a=0)であれば「4」を生成する。
【0107】
この例は、中心ピクセルと近隣部での周囲のピクセルとの比較が近隣部の各ピクセルについて実行される非パラメトリック局所変換演算を示す。しかし、本発明は十分に柔軟であって、サブ近隣部比較を含む。すなわち、実際の演算は、近隣部の全ての単一のピクセルに対してではなく、ウインドウのサブセットに対して行われ得る。従って、上記で示した例に対して、センサス演算は、中心ピクセルを、周囲の8ピクセル全てではなく近隣部のピクセルの幾つかとのみ比較することによって、8ビットよりも小さい長さのビット列を作り得る。
【0108】
これらの変換は、ハードウエア利得或いはバイアス差をもたらし得るピクセルP8に対する輝度値Aの大きな変動にもかかわらず、安定した値を示す。そのような変動は、変換によって拾い上げられるが、例えば生の輝度値が合計されるときに生じるように、結果を大きくゆがめることはない。
【0109】
同じ理由で、これらの変換はまた、下地のデータに鋭い差が存在するファクショナリズムに耐えることができる。そのような差は、データ収集プロセスでのエラー或いはアーチファクトだけではなく、イメージの実際の差によっても、導入される。例えば、物体を示すピクセルとその物体の後ろの背景を示すピクセルとの間の境界線で、これは生じ得る。
【0110】
D.センサス変換
1.センサス変換概略
以下の名称が、変数、関数、及び組を述べるために使用される。Pをピクセルとする。I(P)は、8ビット整数のようなnビットの数で表される、特定のピクセルの輝度を示す。N(P)は、Pを囲む直径dの方形の近隣部のピクセルの組を示す。センサス変換は、近隣部N(P)のピクセルに対するPの相対的な輝度に依存する。ある実施形態では、変換は比較の符号に依存する。例えば、もしI(P′)<I(P)ならばV(P,P′)=1、そうでなければ0と定義する。非パラメトリック局所変換は、ピクセル比較組のみに依存するが、その組とは、以下の順序付けられたペアである。
【0111】
【数2】
【0112】
センサス変換R\(P)は、ピクセルPを囲む局所的な近隣部N(P)を、輝度がPの輝度よりも低い近隣のピクセル組を示すビット列にマッピングする。これより、中心ピクセルPの周囲の近隣部(例えば3×3)に対して、センサス変換は、その近隣部の各近隣ピクセルP′がその中心ピクセルPの輝度よりも低い輝度を有しているかどうかを決定し、Pを囲むこの近隣についての順序付けられたビットを生成する。言い換えれば、センサス変換は、コアピクセルPをその直近の近隣にあるピクセル組と比較することによって、ビットベクトルを演算する。ピクセルP1の輝度がコアピクセルPよりも低ければ、そのときにはビットベクトルの位置1が1であり、そうでなければ0である。ベクトルの他のビットが、ビット列が生成されるまで同様に演算される。このビット列は、比較に使用される組の近隣ピクセルの数と同じ長さである。このビット列は、センサスベクトルとして知られている。
【0113】
比較組のピクセル数は、変化し得る。ウインドウが大きくなると、より多くの情報が考慮され得るが、不連続さによるマイナスの効果が増加して、必要とされる演算量も増加する。現時点で好ましい実施形態は、32ビットのセンサスベクトルを含んでいる。
【0114】
加えて、現時点で好ましい実施形態は、非パラメトリック変換の基礎として輝度情報を使用しているが、変換は、あるピクセルを他のピクセルに比較するために使用され得るいかなる定量的情報(色調情報を含む)を使用できる。加えて、記載した実施形態は、単一の参照ピクセルと近隣のピクセルとの個別化した比較組(一連の1対1の比較)を使用しているが、変換は、例えば、ある領域に関連する合計された輝度を周囲の領域に関連する合計された輝度と比較することによって、1つの或いは一連の多数対多数の比較に基づくこともできる。
【0115】
N(P)=PrDとする。但し、rは、ミンコウスキ(Minkowski)合計演算を示し、Dは、変位組を示す。センサス変換のある実施形態は、以下のようである。
【0116】
【数3】
【0117】
ここで、
【0118】
【数4】
【0119】
は、濃度を示す。以下で述べるように、センサスベクトルは相関ステップで使用される。
【0120】
2.センサスウインドウ
現時点で好ましい実施形態は、9×9のセンサスウインドウを使用する。これは、有意な変換を可能にするための十分な情報を盛り込む必要性と、必要な演算を最小にする必要性との間のトレードオフを示す。他の実施形態では、これら2つの考慮点をバランスさせることを考慮しながら、異なったサイズ或いは形状のウインドウを含むことができる。
【0121】
3.処理されないイメージ領域
参照ピクセルを囲むセンサスウインドウがマップのエッジを越えて処理しないように、ピクセルマップのエッジに近く位置する参照ピクセルに対する境界条件が存在する。例えば、センサスウインドウが9×9であり、参照ピクセルがウインドウの中央に位置しているとき、完全な(complete)センサスウインドウは、全体イメージのエッジから5ピクセルより近く位置するピクセルに対しては、不可能である。これは、図6(A)に示されており、参照ピクセル315が、センサスウインドウ312の中央に位置している。完全な(full)センサスウインドウは、参照ピクセル315がエッジから4ピクセル以内に位置するときには、不可能である。
【0122】
同様に、図6(B)に示されるように、参照ピクセル(318)が、9×9のウインドウ(321)の右下のピクセルであれば、イメージの右側エッジ或いは底辺に位置するピクセルは、完全なセンサスウインドウを有するが、イメージの頂部或いは左側エッジから8ピクセルより近くに位置するピクセルは、完全なセンサスウインドウを含まないであろう。このように、完全な変換演算は、内部領域314(図6(A))及び320(図6(B))に対してのみ可能である。
【0123】
現時点で好ましい実施形態では、これらの内部領域の外側に存在するピクセルに対しては、センサス変換は実行されない。これらのピクセルは、その代わりに無視される。その結果、深度計算が実行される左及び右のイメージのこれらの部分は、実際には全体の利用可能なピクチャー情報のサブセットを示す。他の実施形態では、内部領域の外側のピクセルは、改変されたセンサス変換の対象になり得るが、これは、境界条件の特別な処理を必要とする。そのような特別な処理は、付加的な演算を必要とし、その結果、比較低価格でリアルタイムに高質の深度データを与えるシステムの能力を損ねる。
【0124】
現時点で好ましい実施形態では、内部領域314及び320の全体が変換計算に利用可能であるが、ユーザ(或いは外部ソフトウェア)は、ある行及び列をスキップしてこれらの領域にセンサス変換を実行させないようにすることができる。例えば、これは、もしユーザ(或いは外部ソフトウェア)がイメージのある領域が不変になり、対象となる変化はイメージのサブセットで生じる可能性が高いと判断したときに、行われ得る。例えば、もし、カメラがドアを含む壁を記録していて、ユーザがドアが開いているかどうかに主に関心があるときには、ユーザは、各サイクル毎にドアを含むイメージ領域についてのセンサス変換演算を行うが、その他の全ての領域についてはそのような変換をもっと少ない頻度で行うか、或いはそのような変換を完全に行わないように、アルゴリズムをプログラムすることができる。
【0125】
このような方法で特定の行及び列を指定することで、ユーザ(或いは外部ソフトウェア)は、必要な演算を低減させ、それによってシステムをより高速に動作させたり、或いは低コストのシステムに適切に動作させたりすることが可能になる。
4.センサスベクトルで使用されるセンサスウインドウの内部のピクセルの選択
現時点で好ましい実施形態では、センサスウインドウ或いは近隣部のサイズは、参照中心点を囲むピクセルの9×9ウインドウである。ある実施形態では、センサスベクトルは、参照ピクセルとセンサスウインドウ内の全ピクセルとの比較を含む。9×9ウインドウの場合、これは80ビットのセンサスベクトルをもたらす。
【0126】
しかし、現時点で好ましい実施形態では、センサスベクトルは、参照ピクセルとセンサスウインドウに含まれるピクセルのサブセットとの間の比較を示し、32ビットのセンサスベクトルをもたらす。サブセットの使用はセンサスベクトルに含まれる情報を減少させるが、この手法は、センサスベクトルを決定するために必要とされる演算ステップを低減させるので、特に有用である。センサスベクトルは各イメージの各ピクセルについて個別に計算されなければならないので、そのベクトルを演算するために必要とされる時間の低減は、全体プロセスにおいて非常に重要なスピードアップをもたらす。
【0127】
図7は、参照点(x,y)に中心を有するセンサスベクトルを演算するために使用される9×9のセンサスウインドウの中のイメージ輝度データのある特定の選択及びシーケンスを示す。この図では、数を含む位置は、センサスベクトルの計算のために使用されるピクセルを示し、その数は、そのピクセルに割り当てられたセンサスベクトル内の位置を示す。示されている実施形態では、参照イメージ要素(x,y)のための32ビットセンサスベクトルに対して使用される特定のピクセルは、以下の通りである:(x+1,y−4),(x+3,y−4),(x−4,y−3),(x−2,y−3),(x,y−3),(x+2,y−3),(x−3,y−2),(x−1,y−2),(x+1,y−2),(x+3,y−2),(x−4,y−1),(x−2,y−1),(x,y−1),(x+2,y−1),(x−3,y),(x−1,y),(x+2,y),(x+4,y),(x−3,y+1),(x−1,y+1),(x+1,y+1),(x+3,y+1),(x−2,y+2),(x,y+2),(x+2,y+2),(x+4,y+2),(x−3,y+3),(x−1,y+3),(x+1,y+3),(x+3,y+3),(x−2,y+4)及び(x,y+4)。このように、参照イメージ要素(x,y)との比較のために選択される最初のイメージデータは、図7では数「1」によって指定されている(x+1,y−4)である。比較のために選択される第2のイメージデータは、数「2」によって指定されている(x+3,y−4)であり、数「32」によって指定されている最終イメージデータ(x,y+4)が選択されるまで、続く。どの数によっても指定されていないピクセルは、センサスベクトル計算では無視されるか、或いはスキップされる。この実施形態では、そのような無視されるイメージデータは(x−1,y+4)に位置しており、項目324として示されている。
【0128】
他の実施形態では、参照イメージ要素(x,y)のための32ビットセンサスベクトルに対して使用される特定のピクセルは、以下の通りである:(x−1,y−4),(x+1,y−4),(x−2,y−3),(x,y−3),(x+2,y−3),(x−3,y−2),(x−1,y−2),(x+1,y−2),(x+3,y−2),(x−4,y−1),(x−2,y−1),(x,y−1),(x+2,y−1),(x+4,y−1),(x−3,y),(x−1,y),(x+2,y),(x+4,y),(x−3,y+1),(x−1,y+1),(x+1,y+1),(x+3,y+1),(x−4,y+2),(x−2,y+2),(x,y+2),(x+2,y+2),(x−3,y+3),(x−1,y+3),(x+1,y+3),(x+3,y+3),(x,y+4)及び(x+2,y+4)。ここで、これらの点は、図7で使用されている同じxyグリッドにマッピングされている。
【0129】
現時点で好ましい実施形態では、センサスベクトルのために使用される特定のピクセルの選択は、2つの原則に基づいている。(1)非対称性及び(2)簡潔さ。各々は以下のように説明される。
【0130】
非対称性は、センサスベクトルのために選択されたピクセルA及びBに対して、対応するピクセル−A及び−Bが除外されることを必要とする。すなわち、中心参照ピクセル(0,0)及び比較点(a,b)を含む比較組において、点(−a,−b)が、非対称性の性質を満たすために比較組に存在しない。これより、(1,−4)に位置し且つ数「1」で指定されたピクセルは、図7で選択され、(−1,4)に位置し且つ数「324」で指定されたピクセルは選択されない。(1,4)または(−1,−4)の選択が許容されることに留意されたい。
【0131】
非対称性は、あるピクセル関係の2重のカウントを避けるために設計されている。図7のピクセル(x,y)に対するセンサスベクトルが、ピクセル(x,y)と数1〜32で指定されたピクセル(x,y)を囲む32のピクセルとの間の関係を示していることを思い出されたい。また、イメージの各ピクセルに対してセンサスベクトルが計算されること、及びこのセンサスベクトルが各ピクセルの周囲の9×9のセンサスウインドウに基づくことも、思い出されたい。
【0132】
図7は、ピクセル(x,y)を囲むセンサスウインドウを示す。必要な場合には、このセンサスウインドウはピクセル(x,y)を含み、それは図7に示すセンサスウインドウのための中心参照ピクセルをなす。図7に示されるセンサスウインドウでは、ピクセル「1」は(1,−4)に位置する。これは、図7におけるピクセル324の位置の否定を必ず示し、一般原則の典型である。図7のように、中心参照ピクセルからの正及び負のオフセットを示すX及びY座標にピクセルが位置するセンサスウインドウを考えると、ピクセルPaがピクセルPbを囲むセンサスウインドウに含まれるならば、また、PbはPaのセンサスウインドウに含まれなければならず、PbのためのセンサスウインドウにおけるPaの位置は、Paに対するセンサスウインドウにおけるPbの正確な否定であるだろう。
【0133】
従って、非対称性は、2重カウントを避ける。なぜなら、それによって、ピクセルAが参照ピクセルBのセンサスベクトルに含まれていれば、参照ピクセルBはピクセルAのセンサスベクトルには決して含まれないことを確実にするからである。これより、ピクセル(a,b)を含む相関ウインドウに対して、相関合計はピクセル(a,b)の2つの演算を含まない。2重カウントの回避は、有用である。なぜなら、2重カウントは、2重にカウントされた関係に比例しない重みを割り当てるからである。
【0134】
現時点で好ましい実施形態では、センサスベクトルのためのピクセルの選択は、簡潔さの原則にも基づいている。簡潔さは、非対称性の要件を条件にして、参照ピクセルにできるだけ近いピクセルが選択されることを要求する。これより、図7で参照ピクセル(x,y)に直かに隣接して位置する8つのピクセルから、4つのピクセル、すなわち、数13、16、20及び21で指定されたピクセルが、選択される。これは、非対称性を破ることなく参照ピクセル(x,y)からこの距離だけ離れて選択され得るピクセルの最大数である。同様に、参照ピクセルから1ピクセルだけ離れた距離にある16の位置から、8つのピクセルが選択され(これらは、センサスベクトルビット位置8、9、12、14、17、23、24、及び25と割り当てられる)、参照ピクセルから2ピクセルだけ離れた距離にある24の位置から、12のピクセルが選択される(これらは、センサスベクトルビット位置4、5、6、7、10、15、17、19、27、28、29、及び30と割り当てられる)。これらの各々の場合に、利用可能なピクセルの半分が選択されている。これは、非対称性を維持しながら可能な最大の数を示す。
【0135】
センサスベクトルは32ビットであるので、外部のリングから、付加的な8ビットが選択される。他の実施形態では、センサスベクトルは32ビットより多く或いは少なく含み得る。長さ32が好ましい実施形態で使用されるが、これは、この長さが大抵の処理システムで従来取り扱われてきた長さであり、次のより高い好都合な数(64ビット)が使用されたときに必要とされる処理のオーバーヘッドを避けながら、深度演算に適すると思われる利用可能なピクセルの半分近くを含み得るからである。
【0136】
他の実施形態では、異なるサイズのセンサスウインドウ(例えば、7×7、7×9、9×9、10×12、10×10)、センサスウインドウ内の参照イメージ要素の異なる位置(例えば、中心、右下角、左上角、中心を外れた位置)、センサスウインドウ内の異なるイメージデータ、センサスウインドウ内の異なる数のイメージデータ(例えば8、10、16、24、32)、及び、センサスウインドウ内の異なるイメージデータシーケンス(例えば、各行の3イメージ毎、隣接するイメージデータ1つおき)の組合せを使用する。同じ原則が、相関ウインドウ、対象ウインドウ、及びモードフィルタウインドウに適用される。
【0137】
E.相関
データの組が、各データの組の中でのデータ要素の相互関係を示すように変換(例えば、センサス変換が一例である)されると、データの組内で変換された要素を相関させる必要が生じる。再び、ステレオイメージからの深度を計算するためのセンサス変換の使用が、例示される実施形態として使用される。
【0138】
1.ハミング距離
好ましい実施形態では、ハミング距離が、参照イメージの中のピクセルを他のイメージの中のピクセルに相関させるために使用される。2つのビット列の間のハミング距離とは、これら2つのビット列の中で異なるビット位置の数である。2つのピクセルの対応は、センサス変換の適用後にハミング距離を最小化することによって、演算される。従って、ほとんど同じ輝度構造を有する2つのピクセル領域は、ほとんど同じセンサス変換を有し、それら2つの代表センサス変換値は小さい。
【0139】
ピクセルP及びQが2つの変換されたピクセルを示し、Pは1つの入力イメージに対するセンサス変換されたピクセルであり、Qは、第2の入力イメージに対するサーチウインドウW(P)の中のセンサス変換されたピクセルである。2つの変換されたピクセル間のハミング距離は、2つのピクセルに関して異なっているセンサスベクトル内のビット位置の数(すなわち、一方のセンサスベクトルでは「0」で、他方では「1」)を計算することによって、演算される。これより、例えば、32ビットのセンサス値は、0から32の範囲のハミング距離をもたらし、ハミング距離0は、2つのセンサスベクトルが同一であることを示し、ハミング距離32は、個々のビット位置が全て異なる2つのセンサスベクトルを示す。
【0140】
ハミング距離は、できるかぎりマッチするセンサスベクトルを決定するために使用されるので、全ての比較的大きなハミング距離を効果的に等しく処理することによって、演算効率を向上し得る。これは、飽和閾付け(saturationthresholding)によって実行され得て、そのときには、例えば、14を超える全てのハミング距離が区別できないものとして取り扱われる。この例では、4ビットがハミング距離を記憶するために使用され得て、0000はハミング距離0を示し、0001はハミング距離1を示し、0010はハミング距離2を示し、0011はハミング距離3を示し、同様に1111まで続いて、15〜32の範囲のハミング距離を示す。この範囲のハミング距離は2つの値の間に大きな差があり、従ってほぼ確実に対象外であることを意味しているので、飽和閾付けは、記憶空間(6ではなく4ビットを使用する)及び演算リソースを、質を犠牲にすることなく低減する。
【0141】
F.動くウインドウの合計及びボックスフィルタリング
最も単純な実施形態では、参照イメージの各ピクセルは、他のイメージの特定の数のピクセルと比較される。参照イメージとの比較に使用される特定の数のピクセルは、視差或いはサーチウインドウとして知られている。これより、参照ウインドウが右イメージに位置していれば、視差或いはサーチウインドウは左イメージにおけるある数のピクセルで構成される。ある実施形態では、視差ウインドウは、参照ピクセルと同じX,Yアドレスに位置する他のイメージの中のピクセルで開始して同じ線に沿って多数のピクセルに一方向に延びる。ある実施形態では、左イメージに対する視差ウインドウが、参照ピクセルと同じアドレスに位置するピクセルの右まで延び、右イメージに対する視差ウインドウが左まで延びる。この方向性は、もし同じ物体が2つのイメージに示されたら、その物体は左イメージでは右にオフセットし、右イメージでは左にオフセットするという事実から生じている。別の実施形態では、カメラが垂直に向いていて、視差ウインドウは垂直で、上のイメージについては下に、下のイメージについては上に延びるであろう。
【0142】
視差数Dは、右イメージデータに関する左イメージデータのシフトを意味し、プログラム可能である。上述したように、視差数はユーザが選択可能である。ある実施形態では、24或いは16の視差が使用される。
【0143】
最も単純な実施形態では、各参照ピクセルのセンサスベクトルは、その参照ピクセルに対する視差ウインドウの中に含まれる他のイメージのピクセルのセンサスベクトルと比較される。ある実施形態では、この比較は、参照ピクセルと視差ウインドウの各ピクセルとの間のハミング距離を計算し、最低のハミング距離を選択することによって、行われる。
【0144】
現時点で好ましい実施形態では、もう少し複雑なシステムを使用し、そこでは、相関はウインドウ中での合計ハミング距離を計算することによって決定される。ある実施形態では、参照イメージの中の各ピクセルについて、そのピクセルのセンサスベクトルと、他のイメージにおけるそのピクセルの視差ウインドウのピクセルのセンサスベクトルとの間で、ハミング距離が計算される。視差ウインドウが24である(及びその瞬間での境界条件を無視する)とすれば、これによって、参照イメージの各ピクセルについて、24のハミング距離が得られる。
【0145】
各参照ピクセルについての最適視差が、視差ウインドウの各視差を見て、参照ピクセルの近隣部のピクセルにおけるその視差に対するハミング距離を合計することによって、計算される。その後、最低の合計ハミング距離に関連する視差が、最適視差として選択される。
【0146】
相関ウインドウ合計の概念が、図8(A)に示されている。ここでは、ウインドウは5×5であり、参照イメージ要素は、ウインドウの右下角に位置している。図8(A)は、(14,18)に位置する参照イメージ要素331を有するウインドウ330を示す。参照イメージ要素331について、24の合計ハミング距離が計算されて、各合計ハミング距離は、ウインドウ中での1つの視差についてのハミング距離の合計を示す。これより、視差0における要素331に対するハミング距離が、ウインドウ330の中の全ての他の要素についての視差ゼロにおけるハミング距離に、加えられる。この合計は、視差0に関連した合計ハミング距離とされる。この演算は、視差1〜23について繰り返される。合計ハミング距離の全てが計算された後に、最低の合計ハミング距離が選択される。これより、もしウインドウに対する合計ハミング距離が視差5で最低になると、そのときには、視差5がイメージ要素331に対する最適視差として選択される。このようにして、イメージ要素331はオフセット或いは視差が5である他のイメージにおけるイメージ要素に対応すると決定される。このプロセスは、参照イメージの各要素について繰り返される。
【0147】
各ウインドウは直ぐ近傍にあるウインドウにオーバラップしているので、各参照ピクセルに対する5×5ウインドウにおける24の合計ハミング距離を別個に計算することは極めて無駄であることに留意されたい。この非効率さは、各ウインドウ計算にて以前の計算を考慮し、新しい要素を追加して古い要素を減じるボックスフィルタリングの概念を使用することによって、除去され得る。
【0148】
ウインドウをスライドさせるこのボックスフィルタリングの概念は、図8(A)〜8(C)に示されている。前述のように、図8(A)は、14、18に位置する参照ピクセル331に基づいた5×5のウインドウ330を示す。ウインドウ330の中では、ウインドウの各5列ずつに対して、列の合計が計算されて記憶される。この実施形態では、参照イメージ要素331によって同定される列の合計は、336、337、338、339、及び331のデータの合計を含む。
【0149】
このウインドウ330が、参照イメージ要素331(行18)によって占められる行に沿って走査(travel)されて各参照イメージ要素についての合計が計算された後に、ウインドウは、次の行(行19)にラップアラウンド(次の行の走査開始位置に移り)、各参照イメージ要素に対するその合計演算を続ける。
【0150】
図8(B)において、ウインドウ332は、ウインドウ330と同じであるが空間的(異なる行及び列)及び時間的(将来の演算)に変位されていて、点(8,19)に位置する。先と同様に、参照イメージ要素333に関連し且つこれによって同定される列の合計が演算されて、列合計アレイに記憶される。この列合計アレイはイメージデータ344、345、346、347、及び333の合計を含む。
【0151】
図8(C)に示すように、ウインドウ334は、ウインドウ330及び332と同じであるが空間的(異なる行及び列)及び時間的(将来の演算)に変位されていて、いくつかの将来の反復において、点(13,19)に位置する。再び、参照イメージ要素340に関連し且つそれによって同定される対応する列の合計及び個別のウインドウ合計が、演算される。次の演算のために、ウインドウ335が、1つの列に亘って、参照イメージ要素341(位置(14,19))まで移動する。再び、ウインドウ335は、ウインドウ330、332及び334と同じであるが空間的(異なる行及び列)及び時間的(将来の演算)に変位されている。ウインドウ335に対するウインドウ合計の計算においては、先に計算されたウインドウ合計(ウインドウ334に対する)、及び先に計算された列合計(参照イメージ要素331に対する)が、使用される。ウインドウ330の右最上部角に位置するイメージデータ(イメージデータ336)は、列合計331から引き算される。イメージ要素341の寄与が列合計に加算されて、参照イメージ要素341に関連する新しい列合計が生成される。参照イメージ要素333にて先に計算された列合計は、現時点のウインドウ合計(ウインドウ334に対するウインドウ合計であった)から引き算される。最後に、参照イメージ要素341に関連して新しく生成された列合計が、ウインドウ合計に加算される。これらの新しく生成されたウインドウ合計及び列合計は、引き続く計算で使用される。
【0152】
このように、現時点で好ましい実施形態では、ウインドウ合計が、先のウインドウ合計に基づいて計算される。図8(C)における参照ピクセル341に対しては、ウインドウ合計335が、直前のウインドウ334に基づいて計算される。これは、以下のように行われる。(1)ウインドウ335の右側の列について、ウインドウがより高次の行に位置していたときに同じ列に対して計算した列合計を採用して(例えば、図8(A)から列合計336、337、338、339、及び331を採用して)、列合計(336)から最も上の要素を引き算し、参照ピクセル(341)を加える。(2)この改変された列合計を先のウインドウ(ウインドウ334)についてのウインドウ合計に加算する。(3)先のウインドウから最も左側の列合計を引き算する(例えば、要素333を含む列に対する列合計をウインドウ334に対するウインドウ合計から引き算する)。このようにして、参照要素341に対するウインドウ合計が、ウインドウをスライドさせ、新しい値を加えて古い値を引き算することによって、参照要素340に対するウインドウ合計に基づいて、計算され得る。
【0153】
図9(A)〜図9(C)は本発明の一実施態様の概要を示す。これらの図もまた境界条件を無視している。図9(A)は、ウインドウ合計演算の間、3つのウインドウ343、344および345がオーバーラップすることを示す。これらのウインドウは実際は互いに間隔と時間を空けて移動された同一のウインドウである。すなわち、ウインドウ343は、参照イメージ要素351に対するウインドウ合計の計算のための、ウインドウの特定の過去のポジションを表している。ウインドウ344は、参照イメージ要素352に対するウインドウ合計の計算のための、それ以後のある時点でのウインドウのポジションを表している。またウインドウ345は、同一のウインドウの現在のポジションを表している。参照イメージ要素351および352がそれぞれウインドウ343および344を識別するように、参照イメージ要素346はこのウインドウを識別する。
【0154】
図9(B)を参照して、ウインドウ345に対するウインドウ合計の計算には、過去の計算を用いる必要がある。参照イメージ要素351に対して計算された列合計347およびウインドウ344に対して少し前に計算されたウインドウ合計354は既にメモリに格納されている。図9(C)に示すように、イメージ要素349に対するデータおよび参照イメージ要素353によって識別される列合計350もまたメモリ内で使用可能である。現在のウインドウ345に対するウインドウ合計を計算するために、以下の処理を行う必要がある:(1)列合計347からイメージ要素349からのデータを引く、(2)イメージ要素346内のデータを最新の修正列合計347に加える(この時点で347からのデータを含まない)、(3)列合計350(参照イメージ要素353に対して前に計算されたもの)をウインドウ合計354(ウインドウ344に対して前に計算されたもの)から引く、および(4)修正列合計(列合計347−データ349+データ346)を修正ウインドウ合計(ウインドウ合計354−列合計350)に加えて現在のウインドウ345に対するウインドウ合計を生成する。後述するように、列合計または個々のデータ要素の減算は領域によっては必要でないことがあり得る。
【0155】
G.周辺領域1〜10
先に述べた議論は周縁部のありさまに関する議論を無視しているが、周縁部のありさまは考慮されなければならない。
【0156】
図10(A)〜図10(C)は本発明の一実施態様による周辺領域を示す。図10(A)は多数の周縁部のありさまと関連する10個の特定の領域を示す。これらの10個の領域は概して相関合計、対象演算およびモードフィルタの演算に関する。これらの10個の領域の正確なサイズおよび位置は、移動するウインドウのサイズおよびウインドウ内の参照イメージ要素の位置に依存する。
【0157】
ある実施態様では、ウインドウサイズは7×7(幅がイメージ要素7個×高さがイメージ要素7個)であり、参照イメージ要素の位置はウインドウの右下の角である。処理速度を増大させ且つ本発明の多様な実施態様をリアルタイムに動作させる演算において、列合計バッファを用いるために、これらの領域が存在する。相関およびモードフィルタウインドウについては、これらの10個の領域は内部エリア314または320(図6(A)および図6(B)参照)内に位置される。内部エリア314または320は変換ベクトルが多数存在する。相関合計は変換ベクトルに直接依存し、モードフィルタは相関合計に間接的に依存する。対象ウインドウについては、これらの10個の領域は同じ内部エリア314または320(図6(A)および図6(B)参照)に限定されない。対象計算は変換計算に依存せず、むしろ輝度イメージに依存するからである。
【0158】
上述のように、これらの全ての場合において、イメージの全側部の幾つかの行および列はスキップされ得るため、これらの10の領域が実際にイメージの許容エリアの単に一部分しか占め得ない。このように相関およびモードフィルタ計算の場合は、内部エリア314または320(図6(A)および図6(B)参照)の一部分のみが使用され得、また、対象演算計算の場合は、輝度イメージの一部分のみが使用され得る。
【0159】
以下に述べる議論は、参照イメージ要素がウインドウの最も右下の角に位置されており、且つイメージ処理に対する所望のエリアが決定済みである(すなわちスキップされる行および列が既にプログラムされている)ことを前提としている。従って、対象の所望のイメージエリアの左上の角に位置されるイメージ要素に対して、行および列のナンバリングは(0,0)にリセットされる。図10(A)に示されるように、領域1は第一の行(行0)であり、第1の行にある全ての列である。この領域は列合計アレイを初期化する。
【0160】
領域2は行1からYEDGE -1までである。7×7のウインドウの場合、領域2は行1から行5までを含み、これらの行にある全ての列を含む。ここでは、この系は列合計アレイを累積(builtup)する。
【0161】
領域3は、(0,YEDGE)に位置されるイメージ要素である。7×7のウインドウの場合、領域3は(0,6)に位置される。ここでは、ウインドウ合計(すなわち相関合計、モードフィルタウインドウ合計、対象演算の差のスライディング合計(SSD))が初期化される。
【0162】
領域4は、行YEDGEであり、列1から列XEDGE -1までを含む。7×7のウインドウの場合、領域4は行6上に位置し、列1から列5までの範囲である。ここではウインドウ合計が累積される。
【0163】
領域5は、(XEDGE,YEDGE)に位置されるイメージ要素であり、一実施態様では、この領域は(6,6)に位置される。ここでは、ウインドウ全体が所望のイメージ処理エリアに組み込まれ(fitinto)、列合計全体およびウインドウ合計がその後の計算に使用可能である。
【0164】
領域6は列XEDGE +1から所望のイメージ処理エリアの端の列まで行YEDGEのを含む。ここでは、上述したように、直ぐ前のウインドウに関連する列合計を引く(例えば7×7のウインドウの場合、現在の参照イメージ要素の右の7行を引く)ことによって新しいウインドウ合計が計算される。ウインドウの下部の最も右の角による追加のイメージ要素合計(現在の参照イメージ要素)が全体のウインドウ合計に加算される。7×7のウインドウの場合、領域6は行6に位置され、列7から所望のイメージ処理エリアの端までの範囲である。
【0165】
領域7は、列0にある、行YEDGE +1から所望のイメージ処理エリアの下端までを含む。これは列0にある行7およびその下方を意味する。ここでは、1行上のウインドウの上部の右上の角が列合計アレイから引かれ、ウインドウ合計が初期化される。
【0166】
領域8は、列1から列XEDGE -1までの、行YEDGE +1から所望のイメージ処理エリアの下端までに位置される全てのイメージデータを含む。これは列1から列5までの行7から下端までという意味である。ここでは、1行上のウインドウの最も右上の角が列合計アレイから引かれ、ウインドウ合計が累積される。
【0167】
領域9は、列XEDGEの、所望のイメージ処理エリアの行YEDGE +1から下端までを含む。これは、列6の行7から下端までという意味である。ここでは、1行上のウインドウの最も右上の角が列合計アレイから引かれ、完全なウインドウ合計が得られる。
【0168】
領域10は、行YEDGE +1から所望のイメージ処理エリアの下端までであり且つ列XEDGE +1から所望のイメージ処理エリアの下端までの領域を含む。この領域は、領域の数の1/10でしかないが、処理の大部分はこの領域で行われる。ここで生じる処理は計算の最も一般的な形態を表している。実際、領域1〜9は周縁部のありさままたは境界値問題を表し、領域10の一般的なケースに対して、特別なケースである。
【0169】
図10(B)は領域10の、他の9個の領域に対する相対的なサイズを示す。アイテム326で示されるように、イメージデータの大部分は領域10にある。周辺領域1〜9(アイテム325で示される)のサイズは領域10のサイズ(アイテム326で示される)と比べて小さい。
【0170】
図10(C)は領域10の最も左上の角にあるウインドウのポジショニングを示す。ウインドウ329の参照イメージ要素が領域10(アイテム328で示される)の左上の角に設けられる場合、所望のイメージ処理エリアにおいて、ウインドウ329の上方にあるのは、エリア327のイメージデータの多くとも1行のみでなければならず、またウインドウ329より左側にあるのは、エリア327のイメージデータの多くとも1列のみでなければならない。
【0171】
H.7×7のウインドウに対するウインドウ合計
図11(E)〜図11(J)は、移動ウインドウサイズが7×7の場合の、10個の領域の位置およびサイズを示す。これらの10個の領域は図10(A)〜図10(C)については既に上記で明らかにされている。図11(E)〜図11(J)において、マトリクスエリアは、本発明の計算が実行される所望のイメージ処理エリアを表す。これらのスキップされた領域が、有用なイメージデータを含み得るという事実にもかかわらず、他の全てのエリアはスキップされたエリアを表す。マトリクスの各「ブロック」は、単一のイメージ要素についての、単一のイメージデータ、変換ベクトル、または極値的(extremal)指標データに対して特定の座標ポジションを表す。7×7のウインドウは幅に7個の「ブロック」、高さに7個の「ブロック」を有する。上述したように、計算の形態および内容は、10個の領域について、参照イメージ要素の位置の影響を受ける。ウインドウの位置は、参照イメージ要素の位置に拘束される。
【0172】
領域1(図示せず)は、マトリクスの最上行(行0)を含む。ここでは、ウインドウ355はウインドウ合計または列合計を計算するために必要な全てのデータを有さない。しかし、ウインドウ355およびその参照イメージ要素356がこの行に沿って移動すると、後で用いられる多様なアレイおよび変数が初期化される。
【0173】
領域2(図示せず)は、行1〜5の全ての列を含む。ウインドウ355およびその参照イメージ要素356がこの領域の各行および各列に沿って移動すれば、前に初期化された変数およびアレイが累積される。領域1と同様に、ウインドウはイメージデータを完全に含まない。
【0174】
領域3(図示せず)は、行6および列0を含む。参照イメージ要素356はマトリクスのこの「ブロック」に位置する。この点では、列合計357全体が生成可能であり、生成される。この列合計357は、ウインドウ355におけるこの列にある全てのまたは選択された数のイメージデータの合計である。列合計357の存在のため、特定の参照イメージ要素356に対するウインドウ355のウインドウ合計は初期化可能であり、初期化される。ウインドウ合計は、このウインドウにおける全てのまたは選択された数のイメージデータの合計である。
【0175】
領域4(図示せず)は、行6、列1〜5で規定されるエリアを含む。個々の列合計が生成され、ウインドウ合計が累積される。しかし、この点では、完全なウインドウ合計は得られない。
【0176】
図11(E)は領域5を示す。領域5は、行6、列6を含む。この点では、ウインドウ355全体は、所望のイメージ処理エリアの最も左上の角に丁度組み込まれ得る(justfit)。この座標に位置する参照イメージ要素356に関連する完全なウインドウ合計が生成され且つ格納される。個々の列合計もまた生成される。この領域の後、演算は、前に計算されたアレイおよびイメージデータの加算および減算の組み合わせを包含する。
【0177】
図11(F)は領域6を示す。領域6は、行6であって且つ列7から所望のイメージ処理エリアの右端までを含む。ここでは、左にある7列の列合計(x−ウインドウ幅)は直ぐ前に計算されたウインドウ合計から引くことができる。本実施態様では、引かれる列合計は参照イメージ要素358に関連する。このイメージデータ356はまた前回の繰り返し(previousiteration)においてと同様に列合計に加えられる。最終的に、参照イメージ要素356に関して新しく生成された列合計は新しく生成されたウインドウ合計に加えられる。
【0178】
図11(G)は領域7を示す。領域7は、行7から所望のイメージ処理エリアの底部までであり且つ列0を含む。領域3と同様に、特定の参照イメージ要素356に関連するウインドウ355に対するウインドウ合計は初期化可能であり、初期化される。しかし、領域3と異なり、参照イメージ要素360に関する完全な列合計361が前の計算より得られる。参照イメージ要素356に対する列合計を計算するために、イメージデータ359が列合計361から引かれ、イメージデータ356が修正列合計361(データ359以外)に加えられる。参照イメージ要素356に関して新しく計算された列合計は、ここではウインドウ355に対するウインドウ合計を初期化するために用いられる。完全なウインドウ合計が得られないことに留意されたい。
【0179】
図11(H)は領域8を示す。領域8は、列1から列5までの、行7から所望のイメージ処理エリアの下端に位置する全てのイメージデータを含む。ここでは、演算は領域7と類似した様式で行われるが、ウインドウ合計がここでは累積される点が異なる。
【0180】
図11(I)は領域9を示す。領域9は、列6の、行7から所望のイメージ処理エリアの下端までを含む。領域5と同様に、ウインドウ355全体が所望のイメージ処理エリアの左上の角に組み込まれ得る。ここでは、参照イメージ要素356に関する完全なウインドウ合計が得られる。演算は領域7および8と類似の様式で行われる。
【0181】
図11(J)は領域10を示す。領域10は、行7から所望のイメージ処理エリアの下端までと列7から所望のイメージ処理エリアの右端までを含む。ここで生じる処理は、演算の最も一般的な形態である。領域10の演算の性質は図8および図9に関して既に述べた。
【0182】
I.代替の実施態様―行合計
本発明の一実施態様は、個々のイメージ要素演算、列合計、ウインドウ合計およびウインドウが行に沿って移動する場合の本明細書で述べたデータ操作スキームに関連する加算/減算を用いるが、別の実施態様はウインドウが列を下方へ移動する場合の同様のスキームを利用する。従って、ウインドウは列を一行ずつ下方へ移動し、列の端に至る。列の端では、ウインドウは次の列などの始点まで移動し、所望のイメージ処理エリアのすべての列および行が横断され且つそこにおけるデータが処理される。ここでは、ほとんどの演算の場合、参照イメージポイントがウインドウの右下の角にある。列合計の代わりに、ラインバッファで行合計が演算される。ウインドウ合計は、現在の参照ポイントの左にあるウインドウ幅の列の個々のデータを現在の行合計から引く工程(現在の領域でこの演算が適用可能な場合)と、この現在の修正行合計に現在のイメージ参照ポイントを加える工程と、現在の参照ポイントからのウインドウ高さに位置された行合計を現在のウインドウ合計から引く工程(現在の領域でこの演算が適用可能な場合)および、直ぐ前に修正されたウインドウ合計に現在の修正行合計に加えて、参照ポイントにおける現在のウインドウ位置に対する新しいウインドウ合計を生成する工程とによって演算される。この実施態様は、本明細書で列合計について述べたものと同じコンセプトを用いているが、この場合はウインドウが列内で一行ずつ下方へ移動する点が異なる。10個の領域の位置は図10(A)で示すような領域を取ることで決定され得る。この10個の領域のレイアウトがxy平面内と仮定すれば、その位置を同一のxy平面内で半時計回りに90度回転させ且つz平面内で180度反転させることによって、ウインドウが列を一行ずつ下方に移動する場合の代替実施態様に対する10個の領域の位置が決定され得る。
【0183】
J.相関合計バッファの説明
図13(A)は相関合計バッファの構成を示す。相関合計バッファは図4において最初に導入された。相関合計バッファは最終的には、他の非参照イメージ内の視差によってオフセットされる一連の相関ウインドウに関する、参照イメージ内の相関ウインドウについての相関合計の結果を保持する。相関演算は2つのベクトル間のハミング距離である。相関合計バッファの幅は、イメージ幅(X)に視差数(D)を掛けたもの、すなわちX*Dである。
【0184】
相関合計バッファの部分は、ウインドウが演算の間に移動すれば、左右のイメージにある変換ベクトル対の個々のハミング距離を保持できる。イメージ処理システムが演算においてこれらの個々のハミング距離を用いた後、上記の相関合計バッファの部分は続いてウインドウ相関合計に書き換えられ得る。従って、ウインドウが相関バッファの行および列に沿って移動すれば、1つの相関合計バッファには、センサスベクトル-センサスベクトル間の個々のハミング距離およびウインドウ内のこれらのハミング距離の相関ウインドウ合計の両方が、異なる時間フェーズ(phase)で格納される。
【0185】
この例では、右のイメージが参照イメージとして指定される(designate)。相関合計バッファでは、特定の行にあるライン362は、右イメージの単一の変換ベクトルに対するD個の視差相関合計結果を含む。言い換えれば、ライン362は、特定の右イメージ参照変換ベクトルと、1×1相関ウインドウに対応する視差によってオフセットされた参照右変換ベクトルのサーチウインドウにおける、左イメージの各変換ベクトルとの間のハミング距離を含む。D=16のとき、16個の個々のハミング距離(すなわち、d=0,1,2,...,15)はライン362に収容される。しかし、相関ウインドウは通常1×1より大きい。1つの実施態様では、相関ウインドウは7×7である。よって、7×7相関ウインドウの場合、ライン362は、特定の右イメージ参照変換ベクトルに関連する相関ウインドウと、対応する視差によってオフセットされた参照右変換ベクトルのサーチウインドウにおける、左イメージの各変換ベクトルに関連する各相関ウインドウとの間の、合計ハミング距離を含む。同一の行にある変換ベクトルに対するD個の視差相関合計結果の他のラインは、ライン363および370を含む。ライン370は、サーチウインドウのそれぞれの変換ベクトルに関連する相関ウインドウと、同一の行内の所望のイメージ処理エリア内のサーチウインドウの変換ベクトルの完全な組(すなわちD変換ベクトル)を有する右イメージの最終参照変換ベクトルに関連する相関ウインドウとの間の、合計ハミング距離の最終組を含む。次の行では、代表的(representative)ラインは368、369および371を含む。所望のイメージ処理エリアの最終行では、対応するラインは372、373および374を含む。
【0186】
上述したように、ライン362は、特定の右イメージ参照変換ベクトルに関連する相関ウインドウと、対応する視差によってオフセットされた参照右変換ベクトルのサーチウインドウにおける、左イメージの変換ベクトルに関連する各相関ウインドウとの間の、合計ハミング距離を含む。従って、データ要素364内の相関データは、右イメージの参照変換ベクトルと関連する相関ウインドウと、参照右イメージの変換ベクトルと同じ行および列に位置する左イメージの変換ベクトルに関連する相関ウインドウとの相関を表す。ここで、視差はゼロ(0)であり、そのため左イメージおよび参照右イメージにある2つのウインドウは互いにオフセットされない。
【0187】
データ要素365内の相関データは、右イメージの参照変換ベクトルに関連するウインドウの、参照右イメージの参照変換ベクトルの位置と同じ行に位置されるが、参照右イメージの変換ベクトルの位置を右に2列シフトさせた、左イメージの変換ベクトルに関連するウインドウとの相関を表す。ここで、視差は2であり、そのため左イメージおよび参照右イメージにある2つのウインドウは互いに関して2列分オフセットされる。
【0188】
同様に、データ要素366内の相関データは、右イメージの参照変換ベクトルに関連するウインドウの、参照右イメージの参照変換ベクトルの位置と同じ行に位置されるが、参照右イメージの変換ベクトルの位置を右に15列シフトさせた、左イメージの変換ベクトルに関連するウインドウとの相関を表す。ここで、視差は15であり、そのため左イメージおよび参照右イメージにある2つのウインドウは互いに関して15列分オフセットされる。
【0189】
他のイメージ要素およびそれらのそれぞれの視差に対する他の相関結果にとっても、上記と同じことが当てはまる。例えば、データ要素367の相関データは右イメージのライン363によって示される参照変換ベクトルと関連するウインドウの、参照右イメージのライン363によって示される変換ベクトルの位置と同じ行に位置されるが、その参照右イメージの変換ベクトルの位置を右に1列シフトさせた、左イメージの変換ベクトルに関連するウインドウとの相関を表す。ここで、視差は1であり、そのためそのため左イメージおよび参照右イメージにある2つのウインドウは互いに関して1列分オフセットされる。
【0190】
ウインドウのサイズが1×1(単一の座標位置)の場合は、データ要素364(視差=0)内で計算され且つ格納される値は、右イメージの変換ベクトルと左イメージの対応する変換ベクトルとの間のハミング距離である。ウインドウのサイズが1×1より大きい場合(例えば7×7)、データ要素364で計算され且つ格納される値は、右イメージのウインドウの各変換ベクトルと左イメージの対応する変換ベクトルとの間で計算された個々のハミング距離の合計である。
【0191】
図13(B)は、上記と同じ相関バッファを3次元的に表現して説明する図である。図示されるように、D個の相関バッファのそれぞれはX×Yのサイズであり、所与のディスプレイに対する左イメージの対応するイメージ要素に関する所望のイメージ処理エリアの右イメージの各参照イメージ要素に対する相関合計値を保持する。D個の視差がある場合には、D個の上記の相関バッファが与えられる。
【0192】
K.ウインドウ間の相関
図12を参照して、ウインドウ375は、参照右イメージの対応するウインドウ376から、特定の視差によってオフセットされる左イメージの3×3のウインドウを表す。相関計算が図13(A)のイメージ要素372に対するデータ要素377について行われる場合、視差は5である。図12を再び参照して、各データ要素L1からL9は、前工程において左輝度イメージから計算された参照左イメージの一部分に対する変換ベクトルを表す。同様に、各データ要素R1〜R9は、前工程において右輝度イメージから計算された参照右イメージの一部分に対する変換ベクトルを表す。左ウインドウ375に対する参照変換ベクトルはL9であり、参照右ウインドウ376に対する参照変換ベクトルはR9である。変換ベクトルL9およびR9は、それらのそれぞれの変換イメージ内の同一の行上に位置されるが、L9は5列(視差=5)分シフトされる。これらの2つの3×3のウインドウに対する相関は、各変換ベクトル間の個々のハミング距離の合計である。つまり、次に示す変換ベクトルの組の間でハミング距離が計算される。これらの変換ベクトルの組は、L1とR1、L2とR2、L3とR3、L4とR4、L5とR5、L6とR6、L7とR7、L8とR8、およびL9とR9である。次に、これらの9個の各組のハミング距離計算が合計される。ある実施態様では、完全な相関合計が領域5、6、9および10について得られる。
【0193】
このようなウインドウ内の変換ベクトルの1対1マッチングは本発明の1実施態様である。他の実施態様では、右ウインドウ376内の全ての変換ベクトルと左ウインドウ375の1つおきの変換ベクトルとのマッチングを含む、異なるマッチングパターンが適用され得る。他の実施態様ではさらに、ある変換ベクトルをセンサス変換計算と類似の様式でスキップまたは無視することを含む。よって、処理速度を増大させるためには、相関演算がL1とR1、L3とR3、L5とR5、L7とR7およびL9とR9の間のハミング距離を決定する工程、これらの個々のハミング距離を合計する工程、および参照イメージ要素R9に対する適当なデータ要素ポジションにそれらのハミング距離を格納する工程を含み得る。
【0194】
L.列合計バッファ
図15(A)〜図15(D)は相関合計、対象計算、および視差カウント計算に用いられる列合計アレイ[x][y]の例示的な更新シーケンスを示す。図14(A)〜図14(D)は、移動ウインドウに対する列合計アレイ[x][y]の使用および動作を示す。図解の目的のため、議論の間、図14(A)〜図14(D)を再び参照しなければならない。列合計アレイは、移動ウインドウがある座標位置から他の座標ポジションへ移動すると更新される、単一のラインバッファである。列合計アレイは相関合計計算、対象計算およびモードフィルタ計算に用いられて、ウインドウ合計計算を容易にし且つ処理速度を増大させる。この単一のライン列合計アレイの幅または長さはイメージの幅である。より具体的には、列合計バッファの幅は所望のイメージ処理エリアの幅である。所望のイメージ処理エリアの幅は通常は元のイメージよりも小さい。
【0195】
図14(A)に戻って、ウインドウ378およびその参照イメージ要素379は(X+2,Y)に位置される。つまり、参照イメージ要素379は行Yおよび列X+2に位置される。列合計バッファはXで開始し、2*XWIDTH -1で終了する。従って、参照イメージ要素379は、所望のイメージ処理エリアの左端から2列分離れて位置される。参照イメージ要素379に対する列合計の計算後、列合計はポジション384で列合計バッファに格納される。列合計バッファは、図15(A)に示すように、そこに存在する列合計を書き換えて、それを(X+2,Y)に位置される参照イメージ要素379に対する列合計と置換する。図14(A)のウインドウは行の残りに沿って移動し、列合計を計算し、列合計バッファ内のそれぞれの位置でこれらの列合計を格納する。このように、図15(A)に示すように、X+2を過ぎれば、列合計は列X+3でイメージ要素に対して計算され、その列合計は列合計バッファ内の位置385で格納される。行の終点で、列合計バッファは行Yにおける各列(X,X+1,X+2,...,2*XWIDTH -1)に対する列合計値を保持する。このことは図15(A)に示されている。これらは時間t=0のときに列合計バッファに保持される列合計値である。
【0196】
時間t=1のとき、列合計バッファは再び更新される。図14(B)を参照して、ウインドウ380およびその参照イメージ要素381は新しい行の開始時には(X,Y+1)に位置される。この位置は、直前の計算から1行下且つ2*XWIDTH -1列分左である。直前の計算がウインドウおよびその参照イメージ要素に対して、行Yの終点である位置(2*XWIDTH -1,Y)で行われたことを思い出されたい。図15(B)に示すように、位置(X,Y+1)で、列合計が計算され列合計バッファ内にポジション386で格納される。列合計バッファ内の全ての他のポジションは前の行からの前に計算された列合計値を保持する。従って、図15(B)のポジション386(X,Y+1)は、図14(B)の参照イメージ要素381に関連する行の列合計を保持し、一方、列合計バッファの残りのポジションでは行Yからの列合計値を保持する。実際、参照イメージ要素379に対して計算された列合計はポジション384で格納されたままである。これは、時間t=1の場合である。
【0197】
時間t=2のとき、ウインドウ380は1列分右に移動したため、図14(C)に示すように、参照イメージ要素381は(X+1,Y+1)に位置される。この特定の位置(X+1,Y+1)に対する列合計が計算された後、図15(C)に示すように、列合計は列合計バッファのポジション387に格納される。ポジション387の右にある列合計バッファの残りのポジションは、前の行からの前に計算された列合計値を保持する。従って、ポジション384は参照イメージ要素379に対して計算された列合計をまだ保持している。
【0198】
時間t=3のとき、ウインドウ380は一列分右に移動したため、図14(D)に示すように、参照イメージ要素381は(X+2,Y+1)に位置される。参照イメージ要素381はイメージ要素379の直ぐ下に位置される。この特定の位置(X+2,Y+1)に対する列合計が計算された後、図15(D)に示すように、列合計は、列合計バッファのポジション384に格納される。格納は、前回の繰り返し(previousiteration)に、イメージ要素379に対して前に計算された列合計を書き換えることによって行われる。ポジション384の右にある列合計バッファの残りのポジションは、前の行からの前に計算された列合計値を保持する。この時点で、列合計バッファのポジション384は、参照イメージ要素379に対してではなく、参照イメージ要素381に対して計算された列合計を保持する。勿論、イメージ要素379に対する前の列合計値は、実際のポジション384への書き換え動作が行われる前に、演算で用いられる。前述したように、379に対する列合計からの右上の角のイメージ要素の減算が実行される。イメージ要素381の修正列合計への加算もまた、書込み動作の前に行われる。ウインドウおよびその参照イメージ要素の現在の位置に基づく過去の列合計の更新は、単一のライン列合計バッファを用いて繰り返し達成される。
【0199】
M.左−右一貫性検査
図16(A)〜図16(G)は左−右一貫性検査を示す。図16(A)〜図16(D)は、右イメージまたは左イメージのどちらかが参照として指定された場合の、視差に対する相対ウインドウシフトを示す。図16(E)〜図16(F)は例示的な左および右センサスベクトルの一部分を示す。そして図16(G)は相関合計バッファの一実施態様の構造およびそこに格納されるイメージ要素および対応する視差データを示す。
【0200】
左−右一貫性検査はエラー検出の一形態である。この検査は右イメージのイメージ要素によって最適イメージ要素として選択された左イメージのイメージ要素がまた、その最適イメージ要素として右イメージの同じイメージ要素を選択するかどうか決定し且つ確認する。基本的に、左イメージのP’がベストマッチ(そのイメージ要素Pに対する視差のうちの最小の相関合計値)と決定されるように右イメージのイメージ要素Pが視差を選択すれば、次に右イメージのイメージ要素Pがそのベストマッチであるように左イメージのイメージ要素P’は視差値を選択しなければならない。光景要素がどちらのイメージにおいても視覚可能でない場合、あるいは光景がマッチングしているように見せかける(plausiblematch)ために十分な模様(テクスチャ)を有しない場合には、1つの視界(view)から決定される最小値が意味をなさない可能性がある。
【0201】
左−右一貫性検査は、相関合計バッファ内の既に計算されたデータを用いてその任務を遂行する。相関合計バッファは、参照の役目をする右イメージに基づいて生成されたが、本発明の設計は、多様な視差に対するデータが、あたかも左イメージが(順序は異なるが)参照として指定されたように、含まれることを確実にする。
【0202】
図16(A)および16(B)に示すように、右イメージが参照として指定される場合、多様な相関合計が右イメージの対応するポジションからのそれぞれのシフトまたは視差に対して演算されると、左イメージは右にシフトする。参照右イメージはその場所に留まる。図16(C)および16(D)に示されるように、左イメージが参照として指定される場合、多様な相関合計が右イメージの対応するポジションからのそれぞれのシフトまたは視差に対して演算されると、右イメージは左にシフトする。参照左イメージはその場所に留まる。
【0203】
図16(E)は、特定の光景の左イメージに対するセンサス変換ベクトルアレイを示す。センサス変換アレイは左輝度イメージから演算されたセンサスベクトルを含む。センサスベクトルはアレイ全体として、例えばAL、BL、CL、DL、EL、FL、GL、HL、IL、JLなどを含む。これらの特定の左センサスベクトルは単一の行に沿って位置される。図16(F)は、同一の光景の右イメージに対するセンサス変換ベクトルアレイを表す。これらのセンサス変換アレイは右輝度イメージから計算されたセンサスベクトルを含む。これらのセンサスベクトルは、アレイ全体として、例えばAR、BR、CR、DR、ER、FR、GR、HR、IR、JRなどを含む。これらの特定のセンサスベクトルは単一の行であり且つ左イメージのセンサスベクトルAL、BL、CL、DL、EL、FL、GL、HL、ILおよびJLと同じ対応する行に沿って位置される。この例では、選択された視差の数は4(D=4)であるため、視差は0から3まで及び(run)、右イメージは参照イメージとして指定される。
【0204】
図16(G)は、上記のセンサスベクトルに対応する相関合計バッファの一部分を示す。第1の行0に沿って、相関合計データは参照右イメージにおける各参照イメージ要素に対して演算され、相関合計バッファ内の適切なポジションに格納された。他の相関合計データは、バッファの残りの行および列に格納される。従って、第1の参照イメージ要素ARの各視差(0,1,2,3)に対する相関合計データは、行0の第1の4個のデータ位置に格納される。同様に、第2の参照イメージ要素BRの各視差(0,1,2,3)に対する相関合計データは、行0の第2の4個のデータ位置に格納される。データの格納は、参照イメージ要素のそれぞれについて全ての相関合計が計算されるまで、参照右イメージ要素(例えばCR、DR、ER、FR、GR、HR、IR、JR)の残りについて相関合計バッファ内でこの様式で実施される。
【0205】
相関合計バッファのデータが右イメージを参照として用いて生成されたが、一方で、左イメージのウインドウおよび点がそれぞれの視差に対してシフトされることに留意されたい。データはこのコンセプトを反映する様式で格納され且つ構成される。しかし、格納データはまた、相関合計バッファ内の順序は異なるが、あたかも左イメージが参照として指定されたように、左イメージの相関結果も反映する。概して、バッファ内の隣接するデータの連続シーケンスは参照右−左相関を示すが、D−1オフセットデータの連続シーケンスは参照左−右相関を示す。
【0206】
例えば、図16(G)のイメージ要素Dに注目すれば、その視差0〜3のそれぞれに対する相関合計は既に計算され、隣接するバッファ位置に格納されている。これらの特定のデータは、左イメージのシフトされたイメージ要素(対応する変換ベクトル)に関する参照右イメージ要素DR(その変換ベクトル)の相関を表す。従って、DR(図16(F)参照)の相関ウインドウ内の変換ベクトルとDL(図16(E)参照)の相関ウインドウ内の変換ベクトルとの相関合計は、相関合計バッファ内のデータ要素Dの位置0(d=0)に格納される。相関合計バッファ内のこの位置を図16(G)に参照符号710として表す。同様に、DR(図16(F)参照)の相関ウインドウ内の変換ベクトルと、EL(図16(E)参照)の相関ウインドウ内の変換ベクトルとの相関合計は相関合計バッファ内のデータ要素Dの位置1(d=1)に格納される。相関合計バッファ内のこの位置を図16(G)に参照符号711として表す。次に、DR(図16(F)参照)の相関ウインドウ内の変換ベクトルと、FL(図16(E)参照)の相関ウインドウ内の変換ベクトルとの相関合計は、相関合計バッファ内のデータ要素Dの位置2(d=2)に格納される。相関合計バッファ内のこの位置を図16(G)に参照符号712として表す。最後に、データ要素Dに対して、DR(図16(F)参照)の相関ウインドウ内の変換ベクトルと、GL(図16(E)参照)の相関ウインドウ内の変換ベクトルとの相関合計は、相関合計バッファ内のデータ要素Dの位置3(d=3)に格納される。相関合計バッファ内のこの位置を図16(G)に参照符号713として表す。これらの相関合計はデータ要素Dに関連する相関バッファ内の隣接する位置に格納される。他の相関合計データは、他の参照イメージ要素(すなわち変換ベクトル)A、B、C、E、F、G、H、IおよびJなどに対して、同様の方法で格納される。
【0207】
ここで、左イメージが参照として指定された場合、右イメージは左へシフトする。その結果、左イメージの全ての左データ要素が全ての視差に対する相関合計の完全な組を持たない。例えば、左データ要素ALは、視差が0の場合、右データ要素ARとのみマッチングし得る。視差が1の場合、ALは右イメージ内に対応するデータ要素を持たない。左イメージが参照として指定された際に、それぞれの視差が左へシフトしたからである。
【0208】
従って、視差のそれぞれに対して相関合計の完全な組を有する左イメージの第1のデータ要素は、左イメージのDデータ要素に位置される。言い換えれば、相関バッファ内のデータ要素Aの視差D−1の相関合計と関連する左データ要素は、視差のそれぞれに対して相関合計の完全な組を有する、左イメージの第1のデータ要素である。視差が4(すなわちD=4)の場合、D−1=3であり、そのため左イメージの4個のデータ要素に位置されるデータ要素はDLである。逆に、相関合計バッファのデータ要素Aに対して、視差3(すなわちD−1)に対する相関合計と関連する左データ要素はDLである。
【0209】
この例の場合、D=4であり全ての視差に対して相関合計の完全な組を有する、第1の左データ要素はDLである。視差が3の場合、データ要素AはARのウインドウとDLのウインドウとの相関合計を有する。D−1(すなわち3)位置を移動すれば、視差2において、データ要素BはBRのウインドウとDLのウインドウとの相関合計を有する。D−1(すなわち3)位置を移動すれば、視差1において、データ要素CはCRのウインドウとDLのウインドウとの相関合計を有する。D−1(すなわち3)位置を移動すれば、視差0において、データ要素DはDRのウインドウとDLのウインドウとの相関合計を有する。この例から明らかなように、相関合計バッファは元々右イメージを参照として用いて作成されたものであっても、相関合計バッファは多様な左イメージデータ要素および視差の分だけシフトされた右イメージデータ要素に対する相関合計を含む。
【0210】
左−右一貫性検査は、左および右イメージの対応選択を比較する工程およびそれらがマッチングするかどうかを決定する工程を含む。上述の例では、DRがその最適視差として元々視差2を選択していれば、対応するイメージとしてFLを選択する。左−右一貫性検査は、FLがDRをベストマッチとして選択したかを確認する。ベストマッチは所与の参照イメージ要素に対する視差のうちの最小の相関合計によって決定される。FLに関して、視差のそれぞれに対する相関データが位置714(視差0、FR)、位置715(視差1、ER)、位置712(視差2、DR)および位置716(視差3、CR)に位置される。位置712がデータ要素FL(位置714、715、712および716)に対するこれらの全ての視差のうちの最小の相関合計を含めば、マッチングが起こり、左−右一貫性検査は元々の右から左への選択を確認する。マッチングが生じなければ、両方の視界(view)からの選択は無視できるか、あるいは両方の視界に対する視差のうち最小の相関合計を伴う視差が選択され得る。さらに、この選択は対象演算またはモードフィルタの結果に依存し得る。
【0211】
N. 対象演算
例示的なプログラムで用いられる別の検査は、対象演算器によって生成される信頼値に関する。対象演算から生じる低い値は、輝度イメージ(光景によっては)内に模様(テクスチャ)がほとんどない(または均一な模様(テクスチャ)である)ことを表している。よって、有効な相関マッチングの可能性は比較的低い。対象演算から生じる高い値は、輝度イメージ内に多数の模様(テクスチャ)が存在することを意味する。そのため、有効な相関マッチングの可能性は比較的高い。信頼値が低い場合、イメージ1近傍の輝度は均一であり、イメージ2に対して信頼性をもってマッチングされ得ない。
【0212】
視差値が十分高い信頼を有する場合を決定するために閾値が用いられる。閾値はプログラム可能であり、比較的高い値が、ピクセル近傍の模様(テクスチャ)の量に関連する映像およびディジタイザシステム内のノイズの存在に依存する。
【0213】
本明細書に述べる対象演算器は、スライディング合計を用いる部分的なエリアまたはウインドウにわたる部分的な輝度の差も含む。本明細書ではそれを合計輝度差演算器と呼ぶ。スライディング合計法は、イメージ内の各ピクセルで、部分的なエリアの合計/差を演算する動的プログラムの一形態である。対象演算は、ピクセルの周囲の値の長方形の部分的領域(対象ウインドウと呼ばれる)にわたる輝度値の差を演算し、これらの差を合計することによって、この部分的エリア和/差法を用いる。約7×7の比較的小さい対象ウインドウは、本発明の一実施態様にとって十分である。他の実施態様では異なるサイズの対象ウインドウが用いられ得る。様々な相対的なサイズのセンサスウインドウおよび対象ウインドウが、本発明の精神および範囲を逸脱することなく用いられ得るが、より大きいセンサスウインドウおよびより小さい対象ウインドウが深度または動きの不連続性(motion discontinuities)においてより良好な局在化(localization)を引き起こす。
【0214】
O. モードフィルタ
モードフィルタは個体群解析(population analysis)に基づく視差を選択する。イメージ要素に関する極値的指標アレイ内に格納された全ての最適視差は、モードフィルタウインドウ内で調べられる(examine)。極値的指標アレイ内の最適視差はMAIN内で予め決定されている。典型的に、ウインドウまたはイメージ要素の近傍の最適視差値は視差イメージの単一演算のために極めて均一でなければならない。特に光景内の対象物(object)または光景それ自体が幾分動的かつ変化する場合は、これらの特定の視差値は演算ごとに変動し得る。参照イメージ要素のモードフィルタウインドウ内の最大カウントを有する視差が、そのイメージ要素に対する視差として選択され、MF極値的指標アレイ内に格納される。これは誤って(strayerroneously)決定された視差値がもたらし得る、所与のイメージ要素に対する影響を打ち消す。例えば、7×7のウインドウの場合、イメージ要素に関連するウインドウの最適視差は、次に示す表のようになる。
【0215】
【数5】
【0216】
この7×7ウインドウの各ブロックは、これらのブロック内に位置される各イメージ要素に対して選択された最適視差を表す。視差の最大数は16(D=16)である。モードフィルタは、上の表に、大きいフォントで、下線付きでまたボールドで示される視差値4を有する、ウインドウの右下の角における参照点に関する近傍またはウインドウ内で視差の一貫性を決定する。このウインドウの視差値に対するカウントを次に示す。
【0217】
【数6】
【0218】
このウインドウに対するカウント総数は49(7×7)となるべきである。この例では、視差4値が20回生じたが、この数はこのウインドウの全ての視差値の最高数である。視差3はこのウインドウ内で11カウントあり、2番目に高い数である。従って、このウインドウに対して選択され、且つウインドウの右下にある参照点に割り当てられる視差値は、視差4である。これはまた、この位置でのこのイメージ要素に対して選択された最適視差値と一致する。
【0219】
視差値の結合(ties)のため、プログラムはスキューされるかまたはバイアスされて、より高い視差値を選択する。従って、この例では、視差4に対するカウントが14であり且つ視差5に対するカウントが14であれば、本発明の一実施態様では、このウインドウの最適視差値として視差5を選択する。他の実施態様では、結合状況(tie situation)においてより低い視差値が最適視差値として選択される。モードフィルタ動作はエラー検出の一形態であるため、本発明の多様な実施態様を機能させるために必然的に実装されるわけではない。
【0220】
P. サブピクセル推定
これまでで、本発明のアルゴリズムが所望のイメージ処理エリアに位置される各イメージ要素に対する最適視差が生成された。この離散的または整数の最適視差は、たとえ極めて正確で高性能なものであっても、初期「推測」として特徴付けられ得る。対象演算、左−右一貫性検査、およびモードフィルタの任意の組み合わせを用いて、この「推測」が確認され、修正され、または無視される。この信頼/エラー検査に加えて、最適視差の初期「推測」はさらにサブピクセル推定を用いてより精度を高めることができる。サブピクセル推定は、その両側に隣接する視差に対する相関合計を再検討する工程と、次に補間(interpolate)して新しい最小相関合計を得て、その結果より正確な視差をが得る工程とによって、より正確な視差(それが存在するならば)を推定する。従って、例として、視差d=3が最適視差として選択された場合、サブピクセル推定は、視差d=2、d=3、d=4を表す相関合計点間の線分(例えば[V])また曲線(例えば放物線)の組などの、数学的に関連する点の組をフィッティング(fitting)することを含む。この「V」または放物線上の最小点は、適切な信頼/エラー検出検査を有するメイン相関プログラムを通じて初期に選択された離散視差に対応する相関合計と同じか、またはそれより低い相関合計を表す。新しい最大相関合計に関連する推定された視差は、この時点で新しい最適視差として選択される。
【0221】
図17は、精度の高い最適視差数を決定するために用いられるサブピクセル推定のコンセプトおよび動作を示す。図17(A)は例示的な視差数の分布と特定の一イメージ要素に対する相関合計との関係を示す。x軸は所与のイメージ要素に対する許容可能な視差を表す。ここでは、視差の最大数は5(D=5)である。y軸は特定のイメージ要素についてx軸に示されたそれぞれの視差に対して計算された相関合計を表す。よって、視差0の場合の相関合計はY0、視差1の場合の相関合計はY1、視差2の場合の相関合計はY2、視差3の場合の相関合計はY3および視差4の場合の相関合計はY4と計算される。この例では、Y2<Y1<Y3<Y0<Y4である。最初に、アルゴリズムは最適視差として視差2を選択する。それが最も小さい相関合計であるからである。この初期の選択が対象演算、モードフィルタ、および左−右一貫性検査を通過すると仮定すれば(これらの信頼/エラー検出検査が少しでも役立てば)、この初期の選択は最適視差として特徴付けられる。図17(A)では、視差が整数であるため、相関合計が離散点にプロットされることに留意されたい。初期に選択された最適視差周辺にある相関パターンが存在すると仮定すれば、これらの多数のプロットされた点を通過して補間することにより、初期に選択された最適視差に関連する相関合計値よりも小さい相関合計値を生じ得る。
【0222】
図17(B)は上記の補間の一方法を示す。図17(A)と同じプロットを用いて、本発明の一実施態様に沿った補間方法は、「V」字形を形成する2つの線分を用いる。「V」は、3点――視差2(すなわちY2)に対する初期に選択された相関合計の点、およびこの初期に選択された最適視差数(すなわち視差2)の直ぐ前(すなわち視差1に対する相関合計Y1)および直ぐ後(すなわち視差3に対する相関合計Y3)の視差数に関連する2個の相関合計の点を通って描かれている。この図では、正確な最適視差数は、相関合計Y2よりも小さい相関合計YOPTに対して1.8である。この正確な視差数を用いて、距離/動き(motion)/深度の演算をより正確にできる。
【0223】
「V」は異なる形を含んでいてもよい。ある実施態様では、「V」は完全な「V」、すなわち図17(B)において角度1=角度2であるが、角度についての特定値は1プロットから他のプロットまで変化し得る。角度1=角度2である限り、完全な「V」が2次元スペースの任意の3点を通って描かれ得る。相関合計の特定の相関合計値の位置と、初期に選択された最適視差に関連する相関合計値に対する視差数プロットとの関係は、角度1および角度2に対して選択される角度値を決定する。
【0224】
次の式が、この新しい最適視差を計算するために用いられ得る。ここでも図17(B)を参照する。
【0225】
【数7】
【0226】
変数Offsetは、このサブピクセル推定動作の前の、初期に選択された離散最適視差からのオフセットを表す。MIN(a,b)関数は2つの値aまたはbの小さい方を選択する。MAX(a,b)関数は2つの値aまたはbの大きい方を選択する。従って、図17(B)の例では、初期に選択される離散視差は2であり、計算されるオフセットは−0.2であり、その結果新しく推定される視差は1.8である。
【0227】
Q.並行演算
明晰になることを意図して、議論はシーケンシャル処理(sequential processing)に焦点を当ててきたが、本発明を実行するに当たって、さまざまな動作が、互いに別々の時間に行われる必要はない。むしろ、可能な限り早くエンドユーザに使用可能な結果を提供するために、動作は並行して実行され得る。それどころか、ある実施形態は、並列動作及びパイプライン動作を必要とする。つまり、システムは、シストリック(systolic)様式でデータを処理し得る。
【0228】
本発明のある実施形態は、完全な並列およびパイプライン様式で左右の一貫性の検査を実行する一方で、視差の各々についての相関を決定する。さらに詳細な議論のために、以下、図48、49、50、52、54、55および57を参照して、ハードウェア実現に言及する。
【0229】
ある実施形態は、まず所望のイメージ処理領域内の、関連する全イメージデータについてセンサス変換を演算し、次に生成されたセンサスベクトルのアレイから相関結果を演算する。別の実施形態において、イメージデータがシステムに与えられると、相関結果を素早く提供するために、センサス変換が、相関演算と並行して、イメージデータに適用される。従って、センサからの十分な数のイメージ輝度データがシステムによって受け取られた場合、対象の光景についてのセンサスベクトルを素早く生成するために、センサス変換がイメージ輝度データに即座に適用され得る。通常は、十分なイメージ輝度がセンサス計算のために利用可能かどうかの決定は、センサスベクトル生成のために選択されるセンサスウインドウのサイズ、センサスウインドウ参照点の位置およびセンサスウインドウ内の特定のイメージ輝度データに依存する。センサスベクトル計算のために使用されるセンサスウインドウ内の最終点が、左右両方のイメージについて利用可能である場合、センサス変換プログラムが開始し得る。これが、所望のイメージ処理領域の上方左端の隅についての単一のセンサスベクトルを計算する。
【0230】
十分なセンサスベクトルが、ある与えられたイメージ要素について相関結果を計算するために利用可能である場合、システムは相関合計プログラムをトリガまたは開始する。通常、左右のイメージの各々についての第1のセンサスベクトルが利用可能である場合、相関プログラムが、これら2つのベクトルについてのハミング距離を即座に計算し得、列合計およびウインドウ合計アレイを開始し得る。更なるイメージ輝度データがシステムによって受け取られると、更なるセンサスベクトルが生成され得、相関合計が列毎およびウインドウ毎に集められる。
【0231】
十分なウインドウ合計が利用可能な場合、視差最適化プログラムが開始し得る。従って、相関合計プログラムが、ある与えられたイメージ要素についての視差の各々についての相関合計を計算している場合、最適な視差が決定され得る。視差最適化プログラムが、ある与えられたイメージ要素についての視差の中の最小の相関を選択し、それを極値指標アレイ内に格納する。
【0232】
相関合計および最適視差決定、またはシステムによるイメージ輝度データ受容の受容のいずれかと並行して、対象動作が開始され得る。対象動作が、イメージ輝度データ受容とともに開始する場合、対象結果が、後の使用のために格納される。対象動作が、相関合計および最適視差決定プログラムとともに開始する場合、対象結果は、イメージ要素のために選択された最適視差の信頼を評価するために、即座に使用され得る。
【0233】
極値指標アレイが、イメージ要素について、十分な最適視差データを選択した場合、モードフィルタおよび左右一貫性検査が開始し得る。これらのエラー検出検査は、データが利用可能になると、選択された最適視差(つまり、左右一貫性検査)または最適視差の選択された群(つまり、モードフィルタ)を評価し得る。これら並行処理の全てが、フレーム内でデータ毎に進行し得、リアルタイムでの使用のために、結果がユーザに伝送される。
【0234】
本発明のさまざまな動作は、センサス変換、相関合計、視差最適化、対象動作、左右一貫性検査、モードフィルタ、および特定のキャッシング動作を含む。これら動作の量は、列合計およびウインドウ合計を介して、イメージ処理システム内で実行される。コンピューティング要素のアレイに加えて、システムは、ホストシステムからのコンピューティングおよびメモリリソースを利用し得る。
III. 例示的なプログラム
A.メインプログラム
上で論じたコンセプトは、ステレオイメージからの深度を計算するためにセンサス変換を使用する例示的なプログラムを検討することによって説明され得る。
【0235】
図18は、さまざまな任意性を有する本発明の一実施形態のハイレベルなフローチャートを示す。この実施形態において、さまざまな動作が、展開されたループを使用して実行される。展開されたループは、処理時間を節約するために、「イフ...ゼン...ネクスト」(”If...then...Next”)のループを実質的に省略する反復性の演算として、当業者には公知である。つまりプログラムがループに関する条件をテストする必要がない場合、これらのステップは組み込まれず、処理時間およびリソースを消費しない。
【0236】
”メイン(MAIN)”と呼ばれるプログラムは、ステップ400において開始する。ステップ405が、所望のイメージ処理領域を決定する。通常、対象のオブジェクトは、スクリーンの小さな領域内に位置し、一方、光景の残りの部分は単に静的な背景である。このことが、リアルタイムアップデートのために所望のイメージ処理領域に焦点を当てる頻繁な演算を可能にし、一方で、静的な背景はよりずっと低い頻度で処理され、全く処理されない場合には、ノンリアルタイムモードでディスプレイに伝送される。他のケースにおいて、光景の他の部分が静的かどうかに関わらず、ユーザは光景の特定の領域に焦点を当てることを望み得るか、または光景全体が所望のイメージ処理領域であり得る。
【0237】
ステップ410は、本発明のこの実施形態において利用される、さまざまなアレイについてメモリスペースを割り当てる。左右のカメラのための元の輝度イメージが、各X×Yである。上で論じたように、他の実施形態において、X×Yは、光景の元の輝度イメージのほんの一部である所望のイメージ処理領域も表し得る。
【0238】
輝度イメージに基づいて、左右変換ベクトルが生成される。これらのベクトルは各々X×Yのメモリスペースを必要とする。列合計ラインバッファが、輝度イメージおよび変換イメージのラインに沿った各参照イメージ要素について計算されたさまざまな列合計を格納するために、長さXの単一のラインを必要とする。相関合計バッファが、左右の輝度イメージについての最大の相関合計結果を保持する。相関合計バッファの幅または長さがX*Dであり、Xは輝度イメージ幅、Dは視差の数である。相関合計バッファの高さはY+1である。さらにもうひとつのラインまたは行が、領域5および6についての相関合計結果を格納するために必要とされる。相関の計算に基づいて、ディメンションX×Yの極値指標アレイが生成され、そのアレイが最適な視差を含む。最終的に、ディメンションX×Yの視差イメージが、最適視差から生成される。
【0239】
他の実施形態において、ステップ405とステップ410とが入れ換えられ得る。つまり、メモリ割り当てステップ410が、イメージ処理領域決定ステップ405の前に行われる。これが意味するのは、所望のイメージ処理領域が、イメージのための割り当てられたメモリスペースと同じかまたは小さいサイズでしかないということである。
【0240】
ステップ420は、光景の所望のフレームレートで、別個の左右の輝度イメージを得る。ステップ430は、左右のイメージのための局所変換ベクトルを演算し、各々の左右変換ベクトルアレイ内にそれらを格納する。ある実施形態において、変換はセンサス変換である。別の実施形態において、変換はランク変換である。そのようなベクトルを演算するために、変換ウインドウのサイズおよび変換ウインドウ内の参照点の位置が規定されねばならない。ある実施形態において、変換ウインドウは9×9であり、一方他の実施形態においては、7×7などの異なるサイズが使用され得る。参照点の位置はウインドウの中心である。他の実施形態において、ウインドウの下方右端の隅などの異なる参照点が使用される。
【0241】
ステップ440が、相関プロセスを開始し、このプロセスは左右のイメージ両方に依存する。この時またはこの時より前に、システムがいずれのイメージが参照イメージであるかを決定する。ある実施形態において、右のイメージが参照イメージとして指定される。ステップ440は、相関ウインドウ内の参照右イメージの(イメージ要素と関連した)各変換ベクトルについての相関合計の値を、同じサイズの相関ウインドウ内の左イメージの、対応する視差シフトされた変換ベクトルに関して演算する。従って、各右イメージ要素は、視差シフトされた左イメージ要素に関してD相関合計結果を有する。ある実施形態において、相関動作はハミング距離である。他の実施形態において、相関動作はハミング重量である。ある実施形態において、相関ウインドウは7×7、つまり、7個の変換ベクトル掛ける7個の変換ベクトルである。他の実施形態において、相関ウインドウは、9×9などの異なるサイズであり得る。相関ウインドウサイズは、データを処理するのに要求される処理時間と得られた結果の正確さとの間のバランスを表す。
【0242】
ステップ450が、ステップ440において生成された相関合計バッファに基づく参照右イメージ内の各イメージ要素についての最適視差を決定する。相関合計バッファが、左イメージの各所望のシフトまたは視差に関して、参照右イメージ内の、各イメージ要素についての相関合計の値(つまりハミング距離)を含むので、右イメージ内の各イメージ要素の最適視差は、参照右イメージの各イメージ要素について計算および格納された、視差に基づく相関合計の値の中の、最も低い相関合計の値である。次に、これらの最適視差は、視差イメージを生成するために使用され、他のアプリケーションについても有用である。ステップ460においてプログラムは終了する。しかし上のステップは、キャプチャーされ得る輝度イメージの次のフレームのために繰り返され得る。次のフレームまたは一連の後続フレームは、光景内のオブジェクトの動き(または動きの欠如)を表し得、もしくは光景の異なる領域も表し得る。プログラムはステップ405、410または420から繰り返され得る。
【0243】
図18はまた、3つの任意の信頼/エラー検出検査、つまり対象動作、モードフィルタおよび左右一貫性検査、を示す。対象動作は、光景の性質または描かれた光景内のオブジェクトに起因して得られた結果の信頼の決定を下す。光景またはイメージ化された光景内のオブジェクトが、変化する模様(テクスチャ)を有する場合、相関決定が信頼できる左右のイメージの”マッチ(match)”を表す信頼は高くなり得る。一方で、光景またはイメージ化された光景内のオブジェクトが均一な模様(テクスチャ)を有するまたは模様(テクスチャ)を有さない場合、相関決定が信頼できる左右のイメージの”マッチ”を表す信頼は比較的低くなり得る。
【0244】
対象動作470への呼び出しが、ステップ420の後、ステップ430の後、ステップ440の後およびステップ450の後を含むがそれに限定されないプログラムの中のいくつものポイントにおいて行われ得る。対象動作は輝度イメージに依存するので、輝度イメージが対象の光景のために得られるよりも前に、呼び出され得ない。呼び出された場合、必要な量の輝度イメージが利用可能な場合には、対象動作が、MAINに戻るか、または計算を続け得る。対象動作は、左または右のいずれかの、ただ1つの輝度イメージを必要とし、いずれかひとつが利用可能な場合、対象動作が誘発され得る。一方のまたは他方のイメージ、例えば右のイメージが、対象計算のために使用されねばならないとユーザが予定する場合、対象動作への呼び出しは、所望の輝度イメージが利用可能になるまで、遅延されねばならない。
【0245】
対象動作の性質のために、対象動作はスキャンインされた全てのフレームについて、イメージ処理システムへと呼び出される必要はない。あるケースにおいて、光景または光景内のオブジェクトは、静的なので対象動作を実行する必要性が比較的低い。対象結果がフレームからフレームへとまたはフレームの群からフレームの群へと頻繁に変化し得ない場合、イメージ処理システムは、有価な演算リソースを対象計算に転用することを望み得ない。しかし、光景が動的である場合、またはイメージ処理システムが、変化が頻繁に起こる光景の小さな領域に集中する場合に、対象動作が極めて頻繁に呼び出され得る。
【0246】
ステップ472が対象動作のためのメモリを割り当てる。これらのメモリスペースは、対象列合計ラインバッファ(X)、差のスライディング合計(SSD)アレイ(X×Y)、および対象結果アレイ(X×Y)である。あるいは、メモリ割り当てステップは、対象動作内においてよりもむしろステップ410において、MAINプログラム内に組み込まれ得る。
【0247】
この時に前後して、対象ウインドウのサイズおよびウインドウ内の参照点の位置が決定される。ある実施形態において、対象ウインドウのサイズは7×7であり、参照点の位置はウインドウの下方右端の隅である。あるいは、これらのパラメーターは、対象動作プログラム内よりもむしろMAIN内において決定され得る。
【0248】
対象動作は、ステップ474において、選択された輝度イメージ、例えば右輝度イメージに対して実行される。閾値処理された信頼結果は、対象結果アレイ内に格納される。ステップ476において、対象動作プログラムはMAINへ戻る。
【0249】
モードフィルタは、イメージ処理システムによって選択される最適視差の一貫性を、個体群解析に基づく視差を選択することによって決定する。イメージ要素に関連する極値指標アレイ内に格納された全ての最適視差が、モードフィルタウインドウ内で調べられる。極値指標アレイ内の最適視差は、MAIN内で前もって決定されている。典型的には、ウインドウ内のまたはイメージ要素の近傍の最適視差の値は、視差イメージの単一の演算のためにかなり均一でなければならない。参照イメージ要素のモードフィルタウインドウ内において最大のカウントを有する視差は、イメージ要素についての視差として選択され、MF極値指標アレイ内に格納される。モードフィルタ動作はエラー検出の形態であるので、本発明物のさまざまな実施形態を機能させるためにモードフィルタ動作が実行される必要は全く無い。
【0250】
モードフィルタプログラム、つまりステップ480への呼び出しは、最適視差が決定されMAIN内の極値指標アレイ内に格納された後の、つまりステップ450の後のいずれの時点でもなされ得る。この時点に前後して、モードフィルタウインドウのサイズおよびウインドウ内の参照点の位置が決定される。ある実施形態において、モードフィルタウインドウのサイズが7×7であり、参照点の位置はウインドウの下方右端の隅である。あるいは、これらのパラメータは、モードフィルタプログラム内よりもむしろMAIN内で決定され得る。
【0251】
ステップ482において、メモリスペースが、単一のライン列合計バッファ(ここでは視差カウントバッファ(X)と呼ぶ)およびMF極値指標アレイ(X×Y)について割り当てられる。MF極値指標アレイが、各イメージ要素についてモードフィルタによって選択された視差の値を保持する。あるいは、メモリ割り当てステップが、モードフィルタプログラム内よりもむしろステップ410においてMAINプログラム内に組み込まれ得る。モードフィルタ動作が、ステップ484において実行され、MF極値指標アレイ内に最終結果を格納する。ステップ486はMAINへ戻る。
【0252】
左右一貫性検査は、エラー検出の形態である。右イメージ内のイメージ要素Pが、左イメージ内のP′がその最良のマッチ(イメージ要素Pについての視差の中で最も低い相関合計の値)であると決定するように、視差を選択する場合、左イメージ内のイメージ要素P′は、右イメージ内のイメージ要素Pがその最良のマッチとなるように、視差の値を選択する。左右一貫性検査は、そのタスクを実行するために、相関合計バッファ内の既に計算されたデータを使用する。相関合計バッファは参照として利用される右イメージに基づいて生成されたが、それは、左イメージが参照として指定されているかのような、さまざまな視差についてのデータを必然的に含む。しかし、各左イメージ要素について関連するデータは、異なる様式で構成される。
【0253】
左右一貫性検査への呼び出しが、ステップ490において行われる。左右一貫性検査が相関合計および最適視差に依存するので、プログラムは、ステップ450の後のいずれの時点においても呼び出され得る。あるいは、プログラムは、相関合計の演算(ステップ440)の後で即座に呼び出され得、中間バッファ(intermediate buffer)内の左イメージ要素についての最適視差を一時的に格納し得、MAINが、最適視差(右から左)の演算を行い、それらを極値指標アレイ内に格納するまでに、左右一貫性検査プログラムを終了し得る。この時点で、左右一貫性検査の最終ステージ(左から右を右から左と比較する)が実行され得る。
【0254】
左右一貫性検査が、ステップ492において、LR結果アレイ(X×Y)のためのメモリスペースを割り当てる。あるいは、メモリ割り当てステップが、左右一貫性検査プログラム内よりもむしろステップ410において、MAINプログラム内に組み込まれ得る。左右一貫性検査動作はステップ494において実行される。プログラムはステップ496においてMAINへ戻る。
【0255】
本発明は、相関合計をコンピューティングするのに先立って、輝度イメージから変換ベクトルを生成するために、局所変換を使用する。そのような変換の1つがセンサス変換である。図19は、センサス変換動作のフローチャートおよびセンサスベクトルの生成を示す。単一のフローチャートが示されているが、もちろんそれは左右両方の輝度イメージに対して適用可能である。一般に、センサス変換は、センサスウインドウのサイズおよびウインドウ内の参照点の位置を考慮しつつ、所望のイメージ処理領域内の、実質的に全てのイメージ要素に適用される。センサス変換は、参照イメージ要素に関して、センサスウインドウ内のイメージ要素の相対イメージ輝度を数値(numerical term)で評価し且つ表す、ノン−パラメトリック動作である。その結果、イメージ要素の数値的評価はベクトルである。
【0256】
本発明のソフトウェア/アルゴリズム面の別の実施形態において、センサスおよび相関ステップは並列およびパイプライン式で実行される。従って、一方のイメージ内のセンサスベクトル(または相関ウインドウ)は、もう一方のイメージのサーチウインドウ内の、それぞれ視差シフトされた(disparity−shifted)センサスベクトル(または相関ウインドウ)の各々と、並列およびパイプライン式で、相関される。この相関ステップと同時に、左右一貫性検査が実行される。従って、最適視差およびこれらの視差の左右一貫性検査は、並行して計算される。この並列およびパイプラインシステムの出力は、左右の最適視差の数、ウインドウについての左右の合計ハミング距離の最小値、右左の最適視差の数、および完全なサーチウインドウを有する各データストリームのための、ウインドウについての右左の合計ハミング距離の最小値である。
【0257】
B.センサス変換プログラム
図19に示されるように、ステップ500において、センサス動作が開始する。ステップ510がセンサスウインドウのサイズおよび参照点の位置を決定する。ある実施形態において、センサスウインドウは9×9であり、参照点の位置はセンサスウインドウの中心である。各センサスベクトルの長さもまた決定されねばならない。ある実施形態において、センサスベクトルは32ビットの長さである。つまり、参照点に加えて、センサスウインドウ内の32個のイメージ要素が、32ビットのセンサスベクトルを生成するために使用される。他の実施形態において、16、24および48を含む、異なるセンサスベクトル長が使用され得る。もちろん、センサスベクトル長の選択は、センサスウインドウのサイズに密接に関連している。センサスウインドウが9×9よりも大きな場合、センサスベクトルは32ビットよりも長くなり得る。逆に、センサスウインドウが9×9よりも小さな場合、センサスベクトルの長さは32ビットよりも短くなり得る。
【0258】
ステップ515および520は、ステップ560および570と共に、センサス変換がイメージデータに適用される順序(order)を示す。センサスウインドウは、行内の全ての列を通って、左から右へと行の最後まで、移動する。最後の点において、センサスウインドウは次の行の初めに即座に移動し、次の行内の全ての列を通って移動し、最後の行および最後の列内のイメージデータについてセンサス変換が実行されるまで、一般にこの様式で継続する。図19のフローチャートに示すように、列ループは、外側の行ループに対して内側のループである。つまり、センサス変換がその行の全ての列内のイメージデータについて演算された後でのみ行が変わる。
【0259】
センサスウインドウについて参照点としても指定される、ある与えられた行および列の位置(x,y)について、ステップ525に示されるように、センサスベクトルが全てゼロへと初期値化される。ステップ530が、(x,y)において中心参照点のイメージ輝度値をフェッチする。ステップ535が、現センサスウインドウ内の選択されたイメージ要素のイメージ輝度データをフェッチする。この実施形態において、第1の選択された点は、ボックス580に示すように(x+1,y−4)である。この現センサスウインドウ内の他のイメージ要素についての輝度値も後に、センサスウインドウ内の所望のイメージ要素の全てが調べられてしまうまで、フェッチされる。ある実施形態において、参照イメージ要素(x,y)についての32ビットのセンサスベクトルを生成するための、センサス変換演算のために選択されたセンサスウインドウ内の、これら近傍のイメージデータは、(x+1,y−4),(x+3,y−4),(x−4,y−3),(x−2,y−3),(x,y−3),(x+2,y−3),(x−3,y−2),(x−1,y−2),(x+1,y−2),(x+3,y−2),(x−4,y−1),(x−2,y−1),(x,y−1),(x+2,y−1),(x−3,y),(x−1,y),(x+2,y),(x+4,y),(x−3,y+1),(x−1,y+1),(x+1,y+1),(x+3,y+1),(x−2,y+2),(x,y+2),(x+2,y+2),(x+4,y+2),(x−3,y+3),(x−1,y+3),(x+1,y+3),(x+3,y+3),(x−2,y+4)および(x,y+4)である。このパターンは図7に示されている。
【0260】
別の実施形態において、参照イメージ要素(x,y)についての32ビットのセンサスベクトルに使用される特定のイメージデータは、(x−1,y−4),(x+1,y−4),(x−2,y−3),(x,y−3),(x+2,y−3),(x−3,y−2),(x−1,y−2),(x+1,y−2),(x+3,y−2),(x−4,y−1),(x−2,y−1),(x,y−1),(x+2,y−1),(x+4,y−1),(x−3,1),(x−1,1),(x+2,y),(x+4,y),(x−3,y),(x−1,y),(x+1,y+1),(x+3,y+1),(x−4,y+2),(x−2,y+2),(x,y+2),(x+2,y+2),(x−3,y+3),(x−1,y+3),(x+1,y+3),(x+3,y+3),(x,y+4)および(x+2,y+4)である。
【0261】
ステップ540が、ちょうどフェッチされた近傍のイメージ要素、この例では(x+1,y−4)についての輝度データが、(x,y)に位置する中心参照イメージ要素の輝度データよりも小さいかどうかを判定する。小さい場合、ステップ545が、センサスベクトル内の対応するビット位置を、”1”として設定する。これが第1の近傍のイメージ要素であったことから、センサスベクトル内の対応するビット位置は、ビット0、つまり最下位ビット(LSB)である。ステップ540においての決定が”NO”として評価される場合(近傍のイメージ要素について輝度の値が、参照イメージ要素についての輝度の値と同値である、またはそれよりも大きい場合)、プログラムはステップ550へと分岐し、且つ対応するヒット位置(ビット0)のセンサスベクトルは”0”のままである。
【0262】
ステップ550が、センサスウインドウ内の全ての関連する近傍のイメージ要素が評価されたかどうかを決定する。ステップ550は、センサスベクトル内の対応するビット位置を設定する、ステップ545の後の決定分岐点でもある。ステップ550が”YES”と評価する場合、プログラムは、並列に配置されたセンサスウインドウ内の参照イメージ要素についてのセンサスベクトル全体を演算し、ここでステップ560によって指示されるように、次の列へと進むことができる。ステップ550が”NO”と評価する場合、ウインドウ内の参照イメージ要素についてのセンサスベクトルはまだ完成されず、且つセンサスウインドウ内の次の近傍のイメージ要素がフェッチされる。この例において、次のイメージ要素が、(x+3,y−4)に位置する。この第2のイメージ要素についてのセンサスベクトル内の対応するビット位置は、ビット1である。次にフェッチされた近傍のイメージ要素についてのセンサスベクトル内の対応するビット位置はビット2などである。最後の近傍のイメージ要素についてのセンサスベクトル内の対応するビット位置はビット31、つまり最上位ビット(MSB)、である。このループ535−540−545−550は、参照イメージ要素についてのセンサスベクトル全体が生成されるまで、繰り返し循環する。もし参照イメージ要素についてのセンサスベクトル全体が生成された場合、ステップ550での決定は”YES”へと評価する。
【0263】
前に述べたように、ステップ560がステップ520と共に、同じ行内の次の列へと分岐するようにプログラムに指示する。現列が行内の最後の列である場合、ステップ560はステップ570へと進んで次の行へ演算を継続し、行の先頭に位置するイメージ要素が処理される次のデータとなるように列数はリセットする。参照イメージ要素が行内の次の列(またはその行の最後の列の場合には次の行の第1の列)へと移動すると、センサスウインドウがそれと共に移動する。この次の参照点の位置は、図19において発明の理解を容易にするために、(x,y)で示される。従って、新しい参照点(x,y)の周辺に選択された近傍のイメージ要素は、ボックス580内に列挙したとおりである。所望のイメージ処理領域内の全てのイメージ要素についてのセンサスベクトルが生成された場合、プログラムはステップ590において終了する。
【0264】
C.相関合計および視差の最適化プログラム
本発明の1つの実施形態は、ボックスフィルタリングアレイデータの合計および操作を上述したように有用化する。個別のデータの行列またはアレイのためにウインドウ合計が所望であるときは、以下のステップが実行され得る:(1)現在の参照点の位置から同一列内でウインドウの高さ分上に位置するイメージ要素からのデータを、現在の列合計から減算する。(2)現在の参照イメージ要素中のデータを、変更された列合計へ加算する。(3)現在の参照点からウインドウ幅分横に位置する列合計を現在のウインドウ合計から減算する。そして、(4)現在のウインドウのためのウインドウ合計を生成させるために、変更された列合計を変更されたウインドウ合計に加算する。特定の領域中の現在のウインドウの位置にもよるが、列合計または個別のデータ要素の減算は、いくつかの領域において不必要であり得る。このスキーム自体が、特定の処理速度を与えられた効果的な処理能力の増加に有利である。ウインドウ合計のアレイに加えて、このキャッシング演算は所望のイメージ処理領域の幅と等しい幅を有する単一のライン列合計バッファを要求する。相関合計プログラムの1つの実施形態は、これらの概念を用いる。
【0265】
本発明のソフトウェア/アルゴリズム面の他の実施形態では、センサスおよび相関のステップは、並列パイプライン方式で実行される。よって、1つのイメージ中のセンサスベクトル(または、相関ウインドウ)は、他のイメージのサーチウインドウ中で、それぞれの視差がシフトしたセンサスベクトル(または、相関ウインドウ)の各々と並列パイプライン方式で相関される。この相関ステップと同時に、左右一貫性の検査も実行される。
【0266】
次に本発明の1つの実施形態の相関演算および最適な視差の決定のスキームが議論される。図20は、全ての領域1〜10に対する相関合計および視差の最適化の機能の1つの実施形態のハイレベルのフローチャートを示す。プログラムのこの時点において、センサスベクトルが左および右のイメージのために発生される。このセンサスベクトルに基づいて、イメージ処理システムはどちらの左イメージのイメージ要素が右イメージの与えられたイメージ要素と対応するのかを決定しようと試みる。
【0267】
図20に示すように、プログラムはステップ600から開始する。ステップ601は、相関ウインドウの大きさとウインドウ中の参照点の位置とを決定する。1つの実施形態では、相関ウインドウは7×7であり、参照点は、ウインドウの一番右下の角に位置する。
【0268】
9つの周縁部のありさまおよび1つの一般的な場合が存在することから、演算は異なって実行される。領域1から9は周縁部のありさまを表し、領域10は一般的な場合を表す。図11(E)から11(J)について上記で議論したように、ウインドウ全体の相関またはウインドウ合計は、完全なウインドウが所望のイメージ処理領域に適合し得る領域について計算される。すなわち、イメージデータはウインドウの全ての部分において見つけられる。よって、ウインドウ相関合計の全体は、領域5、6、9および10について計算される。処理の大部分は、領域10で行われる。10個の領域に関するウインドウの参照イメージ要素の位置は、どのようにおよび何の演算が達成されたかを指示する。ステップ602は、相関演算が実行された領域1から6に適用する。これらの領域は、列合計バッファ、中間相関合計、および相関ウインドウ合計を設定する。相関演算が完成したとき、ステップ603が、プログラムが領域7から10に進むことを要求する。
【0269】
参照右イメージ中の各変換ベクトルについて、行の範囲内の列毎に演算が実行され、行の終わりにおいてプログラムは所望のイメージ処理領域中の次の行の第1の列へ進む。これは、ステップ604、605、610、612、611および613に反映される。ステップ604、612および613に規定される低い頻度で生じる行のループは、外側のループであり、一方、ステップ605、610および611に規定される高い頻度で生じる列のループは、内側のループである。プログラムが、行内で列毎に進むのにしたがい、ウインドウは領域7、8、9、および10の順番で領域を通過する。プログラムが次の行に到達し、行の最後に進んだとき、領域7、8、9、および10は、図11(G)から11(J)に再び示されるように、ウインドウによって横切られる。
【0270】
初めに、プログラムは、ステップ604および605に示すように、行Iの領域7および列Jに進む。行の始めにあるのが当然であるが、ウインドウが領域7にある場合、領域7の相関演算がステップ606に要求される通りに実行される。ウインドウが領域8にある場合、領域8の相関演算がステップ607に要求される通りに実行される。ウインドウが領域9にある場合、領域9の相関演算がステップ608に要求される通りに実行される。ウインドウが領域10にある場合、領域10の相関演算がステップ609に要求される通りに実行される。
【0271】
次へ進む前に、ステップ610は、行Iおよび列Jの現在の参照イメージ要素が行Iの最終列にあるかどうか決定する。この決定が「いいえ」と評価した場合、プログラムは次の列Jに進み(ステップ611および605)、ウインドウの位置によってステップ606、607、608または609のうちの1つを実行する。ステップ610への決定が「はい」と評価した場合、ステップ612はこの行が所望のイメージ処理領域の最終行であるかどうか決定する。異なる場合は、ステップ613および604は、ウインドウが次の行Iおよびその列の第1の列Jに進むことを要求する(列および行の番号は、最終列および行に到達した後リセットされる)。ステップ612の決定が「はい」と評価する場合、相関プログラムはステップ614で終了する。
【0272】
1.領域1および2
図21は、領域1および2に対する相関合計および視差の最適化演算の1つの実施形態のフローチャートを示す。プログラムはステップ615で開始する。
【0273】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が領域1または2に位置する場合、ステップ616および622が、以下の相関合計が、行内で列毎に進むことによって各行および列に対して実行されることを要求する。相関ウインドウの参照点が行の最後に到達したとき、参照点は次の行の始めに移動する。
【0274】
ステップ616は、相関ウインドウ範囲内の右イメージ中のセンサスベクトルおよび、それに対応する相関ウインドウ範囲内の左イメージ中のセンサスベクトルを選択するように要求する。これらの左および右のセンサスベクトルは同一の行および列に位置する。すなわち、これらのウインドウは、視差0で互いに関してシフトされない。
【0275】
ステップ617および621は、相関合計が参照右イメージ中の各ウインドウの各々の視差について演算されることを可能にするループのそれぞれ始めと終わりである。ここでは、zが0からD/2−1へと変化し、よって、16の視差について、D=16であり、zが0から7まで変化する。zループが用いられる補助的な理由は、データパッキングの目的のためである。
【0276】
1つの実施形態では32ビット長の中間temp(intermediate temp)と呼ばれる変数が、2つの異なる視差の相関合計値を保持する。変数のMSB部分中の16ビットは、視差d1のための相関合計値を保持し、変数のLSB部分中の16ビットは、視差d2のための相関合計値を保持する。よって、16の視差について、8の中間temp値が用いられる。本発明の実施形態において、単一の中間temp変数が用いられているため、視差に基づいた相関合計の各一対は、1つのzループで実質的に同時に演算される。すなわち、システムをインプリメントする16の視差について、視差0および視差1の相関合計は一緒に処理され、視差2および視差3の相関合計は一緒に処理され、視差4および視差5の相関合計は一緒に処理されるなど、視差14および視差15の相関合計が処理されるまで同様の処理が続く。偶数の視差値に関する相関合計は、中間temp変数のMSBの半分(16ビット)中に格納され、一方、奇数の視差値に関する相関合計は、中間temp変数のLSBの半分(16ビット)中に格納される。中間temp変数の各半分の長さは16ビットであるため、所定の視差について最大相関合計値を保持することは、十二分である。例えば、任意の2つの32ビットセンサスベクトル間の、最大可能なハミング距離の値は32である(左のセンサスベクトルxは全て0であり、右のセンサスベクトルx’は全て1であるので、lとl’との間のハミング距離は32である)。16ビットは、32のハミング距離の値を適応するのに十二分に長い。よって、中間tempのためのデータパッキングスキームが設計され、LSBの半分がMSBの半分への移動、またはMSBの半分が中間temp変数の範囲の外への移動に対するキャリービット(またはビット17)の危険性が存在しない。中間tempのデータパッキングの概念は図36に関連して下記に更なる詳細に説明される。
【0277】
中間temp変数の長さは、より小さく(または、より大きく)形成され得るが、最終的には、この設計は、列合計アレイの大きさに適応するべきである。なぜなら、中間tempはデータ毎に32ビット長である列合計アレイに追加されるからである。中間tempおよび列合計バッファのそれぞれのデータの長さは、それぞれの追加に適応するべきである。その結果、追加の結果が追加演算を正確に反映する。単純化するために、中間tempおよび列合計は、両方32ビットである。
【0278】
データパックされた中間tempは、本発明のいくつかの実施形態に組み込まれている。他の実施形態は、データパッキングの概念を用いず、代わりに、2つのイメージセンサスベクトルの間の個別のハミング距離の計算などの中間値を、後に相関合計バッファに格納され、列合計値に加えるために保持する単一の変数を用い得る。相関計算は、一時に2つの視差に実行され得ず、むしろ、相関合計は、全てのD視差に対する合計が計算されるまで一時に1つの視差に対して決定され得る。
【0279】
ステップ618は、対応する対のセンサスベクトルの間の個別のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zが0から7までループする。zループ内の所定のz値について、本発明の1つの実施形態では、異なる視差全体(視差2*zおよび視差2*z+1)に関係する一対の相関合計を処理する。z=0について、左イメージ内の(x,y)に位置するシフトしない(d=0)相関ウインドウ中のセンサスベクトルと参照右イメージ内の(x,y)に位置する参照相関ウインドウ中の参照センサスベクトルとの間のハミング距離が計算される。これら2つのセンサスベクトルの間の視差0である場合の結果として得られたハミング距離は、中間temp変数のMSBの半分に格納される。
【0280】
同様に、左イメージ内の(x+1,y)に位置する1つの列分シフトした(d=1)相関ウインドウ中のセンサスベクトルと、参照右イメージ内の(x,y)に位置する参照相関ウインドウ中の参照センサスベクトルとの間のハミング距離が計算される。右イメージは、参照イメージとして指定され、相関値は多様な視差または参照右相関ウインドウから左相関ウインドウへのシフトに対して決定されるので、参照右イメージ中の相関ウインドウはシフトされないことに注意されたい。視差1の場合の結果として得られるハミング距離は、中間temp変数のLSBの半分に格納される。この時点で、中間temp変数は、視差0および1のみに対する、(x,y)における右イメージ相関ウインドウ中の参照点の相関結果を保持する。続きの演算では、中間tempは他の視差に対する相関結果を保持する:z=1について、視差2および3の相関結果は中間tempにあり、z=2について、視差4および5の相関結果は中間tempにあり、z=3について、視差6および7の相関結果は中間tempにあり、z=4について、視差8および9の相関結果は中間tempにあり、z=5について、視差10および11の相関結果は中間tempにあり、z=6について、視差12および13の相関結果は中間tempにあり、そしてz=7について、視差14および15の相関結果は中間tempにある。
【0281】
ステップ619は、参照右イメージ中の参照相関ウインドウが領域1に位置する場合、中間tempの内容で列合計バッファ[x]を初期化する。列合計バッファ[x]は、視差0および1に対する参照右イメージ点の相関結果を保持する。ステップ619は、参照右イメージ中の参照相関ウインドウが領域2に位置する場合、列合計バッファ[x]を前の列合計バッファに中間tempを加えた内容にアップデートする。列合計バッファ[x]は、視差0および1に対する参照右イメージ点の相関結果を保持する。
【0282】
ステップ620は、相関合計バッファ[x][y]内の参照点(x,y)に位置する参照右相関ウインドウの一対のセンサスベクトルの個別のハミング距離の結果の格納を要求する。相関合計バッファ[x][y]は、最終的には参照右イメージの所望のイメージ処理領域中の各イメージ要素に関する相関結果を保持する。領域1について、列合計は本質的に当面は個別の相関結果である。
【0283】
ステップ621は、プログラムが同一相関ウインドウの同一参照点について異なる一対の視差である次のzへ進むことを要求する。D視差に対する全ての相関結果を計算するにあたって、プログラムはステップ622へ進む。ステップ622は、同一の行の次の列、または現在の参照点が行の最終列に位置する場合は次の行の最初を選択するシステムを指示する。そして、新しい参照点に対する同一相関計算が、各視差について実行される。最終的には、完全な列合計(相関ウインドウの高さ)はまだ入手可能ではないが、列合計アレイ[x]は各視差について構築される。そして、各参照イメージ要素に対する個別の相関結果もまた、相関合計バッファ[x][y]に格納される。相関合計および視差の最適化演算のこの部分は、ステップ623で終了する。
【0284】
他の実施形態では、データパッキングの概念および中間temp変数は用いられない。0から(D/2−1)までのzループ内でハミング距離の対と一緒に扱う代わりに、2つの点の間の単一のハミング距離が計算され得、0からD−1まで変化するzループの相関合計バッファ[x][y]に格納され得る。
【0285】
2.領域3および4
図22は、領域3および4に対する相関合計および視差の最適化演算の1つの実施形態のフローチャートを示す。プログラムは、領域1および2に若干の変化を加えた基本的には同一の方法で進む。ここでは、列の全部が利用可能であるので、相関ウインドウ全体の相関合計が初期化およびアップデートされ得る。プログラムはステップ624で開始する。
【0286】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が領域3または4に位置する場合、ステップ625および632は、以下の相関合計が、行内で列毎に進むことによって各行および列に対して実行されることを要求する。相関ウインドウの参照点が行の最後に到達したとき、参照点は次の行の始めに移動する。領域3は、単一のイメージ要素位置であるので、次の列は領域4である。ステップ625は、相関ウインドウ範囲内の右イメージ中のセンサスベクトルおよび、それに対応する相関ウインドウ範囲内の左イメージ中のセンサスベクトルを選択するよう要求する。これら左および右のセンサスベクトルは、同一の行および列に位置する。すなわち、これらのウインドウは、視差0で互いに関してシフトされない。
【0287】
ステップ626および631は、相関合計が参照右イメージ中の各ウインドウの各視差に対して演算されることを許容するループのそれぞれ始めと終わりである。ここでは、zが0からD/2−1まで変化し、よって、16の視差について、D=16でありzが0から7まで変化する。zループが用いられる補助的な理由は、データパッキングの目的のためである。上記に説明された中間tempと呼ばれる変数がデータパッキングの目的に用いられ得る。
【0288】
ステップ627は、対応する対のセンサスベクトルの間の個別のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zが0から7までループする。zループ内の所定のz値について、本発明の1つの実施形態では、異なる視差全体(視差2*zおよび視差2*z+1)に関係する一対の相関合計を処理する。z=0について、左イメージ内の(x,y)に位置するシフトしない(d=0)相関ウインドウ中のセンサスベクトルと参照右イメージ内の(x,y)に位置する参照相関ウインドウ中の参照センサスベクトルとの間のハミング距離が計算される。これら2つのセンサスベクトルの間の視差0である場合の結果として得られるハミング距離は、中間temp変数のMSBの半分に格納される。同様に、左イメージ内の(x+1,y)に位置する1つの列分シフトした(d=1)相関ウインドウ中のセンサスベクトルと、参照の右イメージ内の(x,y)に位置する参照相関ウインドウ中の参照センサスベクトルとの間のハミング距離が計算される。視差1の場合の結果として得られるハミング距離は、中間temp変数のLSBの半分に格納される。この時点で、中間temp変数は、視差0および1のみに対する、(x,y)における右イメージ相関ウインドウ中の参照点の相関結果を保持する。次の演算では、中間tempは他の視差に対する相関結果を保持する。
【0289】
ステップ628は、列合計バッファ[x]を前の列合計バッファに中間tempを加えた内容にアップデートし続ける。列合計バッファ[x]は、視差0および1に対する参照右イメージ点の相関結果を保持する。
【0290】
ステップ629は、相関合計バッファ[x][y]内の(x,y)に位置する参照右参照点の対のセンサスベクトルの個別のハミング距離の結果の格納を要求する。領域3および4において、列合計全体が入手可能であるが、相関ウインドウ全体の相関合計は入手可能ではない。
【0291】
ステップ630は、参照点が領域3にある場合、列合計を加算することによって相関合計[x][y]を初期化する。参照点が領域4にある場合、相関合計は現在の相関合計を列合計値に加算することによって構築される。
【0292】
ステップ631は、プログラムが同一相関ウインドウの同一参照点について異なる一対の視差である次のzへ進むことを要求する。D視差に対する全ての相関結果を計算するにあたって、プログラムはステップ632へ進む。ステップ632は、同一の行の次の列、または現在の参照点が行の最終列に位置する場合は次の行の最初を選択するシステムを指示する。そして、新しい参照点に対する同一の相関計算が、各視差について実行される。最終的には、相関ウインドウ全体の相関合計が領域5、6、9、および10で計算される。領域3および4は、適切な列合計および相関合計をウインドウ計算の準備として構築する。相関合計および視差の最適化演算のこの部分は、ステップ633で終了する。
【0293】
3.領域5
図23は、領域5に対する相関合計および視差の最適化演算の1つの実施形態のフローチャートを示す。プログラムは、領域1から4に若干の変化を加えた、基本的には同一の方法で進む。ここでは、相関ウインドウ全体に対する相関合計が演算され得、よって、参照点の最適な視差が決定され得る。プログラムはステップ634で開始する。
【0294】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が領域5に位置する場合、ステップ635および645は、以下の相関合計が、行内で列毎に進むことによって各行および列について実行されることを要求する。相関ウインドウの参照点が行の最後に到達したとき、参照点は次の行の始めに移動する。領域5は、単一のイメージ要素位置であるので、次の列は領域6である。ステップ635は、相関ウインドウ範囲内の右イメージ中のセンサスベクトルおよび、それに対応する相関ウインドウ範囲内の左イメージ中のセンサスベクトルを選択するよう要求する。これら左および右のセンサスベクトルは、同一の行および列に位置する。すなわち、これらのウインドウは、視差0で互いに関してシフトされない。
【0295】
ステップ636および644は、相関合計が参照右イメージ中の各ウインドウの各視差に対して演算されるのを許容するループのそれぞれ始めと終わりである。ここでは、zが0からD/2−1まで変化し、よって、16の視差について、D=16でありzが0から7まで変化する。zループが用いられる補助的な理由は、データパッキングの目的のためである。上記に説明された中間tempと呼ばれる変数がデータパッキングの目的に用いられる。
【0296】
ステップ637は、対応する対のセンサスベクトルの間の個別のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zが0から7までループする。zループ内の所定のz値について、本発明の1つの実施形態では、異なる視差全体(視差2*zおよび視差2*z+1)に関係する一対の相関合計を、領域1から4に関して上記に議論したのと同様に処理する。
【0297】
ステップ638は、列合計バッファ[x]を前の列合計バッファに中間tempを加えた内容でアップデートし続ける。列合計バッファ[x]は、現在、各視差に対する参照右イメージ点の相関結果を保持する。
【0298】
ステップ639は、相関合計バッファ[x][y]内の(x,y)に位置する参照右参照点の対のセンサスベクトルの個別のハミング距離の結果の格納を要求する。領域5において、列合計の全体およびウインドウ全体の相関合計が、入手可能である。
【0299】
ステップ640は、相関ウインドウ合計[x][y]を、列合計値と現在の相関合計を加算することでアップデートする。ステップ641は、相関ウインドウ内の個別のハミング距離の全ての合計である相関合計結果を、同一列内の相関ウインドウの高さの行だけ上方に位置する相関合計バッファに格納する。よって、相関合計は相関合計バッファ[x][y−相関ウインドウの高さ]に格納される。1つの実施形態では、これは相関合計バッファの最上部の行である。
【0300】
ステップ642は、相関合計バッファにおける現在の相関合計データのうちのいずれが最も小さいかを決定する。最初に、相関合計が、z=0のときの視差0および1について計算される。ステップ642は、2つの相関合計データのうちの小さい方を決定し、この視差番号(この時点では、0または1)を極値指標アレイに格納する。z=1のときの次の繰り返しでは、相関合計は、視差2および3について計算される。これらの2つの視差についての相関合計のいずれかが、極値指標に格納されている現在の小さい方の視差番号に関連する相関合計よりも小さい場合には、ステップ643に示すように、その小さい方の相関合計データについての視差番号が、極値指標アレイに格納される。最も小さい相関合計を比較し、関連する視差番号を極値指標アレイに格納するこのプロセスは、すべてのz値が評価されるまで続けられる。本実施態様は、zループにおける最適視差選択を導入し、最適視差の決定が、一対の視差についての相関合計の計算と実質的に同時に行われる。あるいは、中間アレイは、最終の比較が、最も小さい相関合計で最適な視差値を生み出すまで、視差値およびそれに関連した相関合計を保持し得る。他の実施態様において、最適視差決定は、視差をベースとしたzループ内でなされる必要はない。むしろ、視差決定は、ループの外で行われ得、最適視差は、視差のそれぞれについての相関合計の完全な組が計算された後にのみ選択される。中間視差アレイは、一時的な結果を保持するために用いられ得る。これらの変形は他のすべての適用可能な領域(例えば、領域6、9および10)に適用される。
【0301】
ステップ644は、プログラムが次のzに進むことを要求する。次のzは、同じ相関ウインドウの同じ参照ポイントについての異なる一対の視差である。D視差についてのすべての相関結果を計算すると、プログラムは、ステップ645に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ相関計算が、各視差に対して行われる。最後に、全相関ウインドウについての相関合計が、領域5、6、9および10において計算される。この相関合計および視差最適化演算の部分は、ステップ646で終了する。
【0302】
4.領域6
図24は、領域6に対する相関合計および視差最適化演算の1つの実施態様のフローチャートを示す。領域6に対する演算は、領域5に対する演算と同様である。但し、相関ウインドウ幅の列だけ左に位置する列合計は、列相関合計から減算される。プログラムは、ステップ647で開始する。
【0303】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が、領域6に位置する場合、ステップ648および659は、以下の相関合計が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、相関ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。ステップ648は、相関ウインドウ内の右イメージにおけるセンサスベクトルおよび相関ウインドウ内の左イメージにおける対応するセンサスベクトルが選択されることを要求する。これらの左および右センサスベクトルは、同じ行および列に位置する。即ち、これらのウインドウは、視差0では互いにシフトしない。
【0304】
ステップ649および658は、それぞれ、相関合計が参照右イメージにおける各ウインドウに対する視差のそれぞれについて演算されることを可能にするループの始めおよび終わりである。ここで、zは、0からD/2−1まで変化するので、16の視差(D=16)の場合、zは、0から7まで変化する。zループが用いられる第2の理由は、データパッキングのためである。上記のように、中間tempと呼ばれる変数が、データパッキングの目的で用いられる。
【0305】
ステップ650は、対応する対のセンサスベクトル間の個々のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zは0から7までループする。zループにおける所定のz値について、本発明の1つの実施態様は、領域1から4に関して上述したように、個別の視差(視差2*zおよび視差2*z+1)と共に関連する一対の相関合計を処理する。
【0306】
ステップ651は、前の列合計バッファおよび中間tempの内容で、列合計バッファ[x]を更新し続ける。中間tempは、このzループにおける適用可能な2つの視差についての参照イメージポイントに対する現在のハミング距離計算を保持する。この時点で、列合計バッファ[x]は、各視差についての参照右イメージポイントに対する列合計結果を保持する。
【0307】
ステップ652は、相関合計バッファ[x][y]内の位置(x、y)における参照右参照ポイントについてのこれらの対のセンサスベクトルに対するこれらの個々のハミング距離結果の格納を要求する。この時点で、領域6について、列合計全体およびウインドウ相関合計全体が得られる。
【0308】
ステップ653は、相関ウインドウ幅の列だけ左に位置する列合計値を、現在の相関合計値から減算する。ウインドウ合計を完全にするのに現在必要な唯一の値は、現在の列合計である。
【0309】
ステップ654は、列合計値を現在の相関合計に加えることによって、相関ウインドウ合計[x][y]を更新する。この結果は、後の演算において有用である。ステップ655は、相関合計結果を格納する。この相関合計結果は、同じ列における相関ウインドウ高さの行だけ上の位置で相関合計バッファにおいて図12を参照しながら説明したように得られる相関ウインドウの個々のハミング距離のすべての合計である。従って、相関合計は、相関合計バッファ[x][y−相関ウインドウ高さ]に格納される。
【0310】
ステップ656は、相関合計バッファにおける現在の相関合計データのうちのいずれが最も小さいかを決定し、この最適視差結果は、極値指標に格納される。プロセスは、領域5のプロセスと同様である。
【0311】
ステップ658は、プログラムが次のzに進むことを要求する。次のzは、同じ相関ウインドウの同じ参照ポイントについての異なる一対の視差である。Dの視差についてすべての相関結果を計算すると、プログラムは、ステップ659に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ相関計算が、各視差に対して行われる。最後に、全相関ウインドウについての相関合計が、領域5、6、9および10において計算される。この相関合計および視差最適化演算の部分は、ステップ660で終了する。
【0312】
5.領域7および8
図25は、領域7および8に対する相関合計および視差最適化演算の1つの実施態様のフローチャートを示す。これらの2つの領域に対する演算は、わずかな変更を除いて、領域3および4に対する演算と同様である。ここで、同じ列において1行だけ上に位置するウインドウの最も右上側のイメージは、現在の計算から減算されなければならない。プログラムは、ステップ661で開始する。
【0313】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が、領域7または8に位置する場合、ステップ662および670は、以下の相関合計が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、相関ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。ステップ662は、相関ウインドウ内の右イメージにおけるセンサスベクトルおよび相関ウインドウ内の左イメージにおける対応するセンサスベクトルが選択されることを要求する。これらの左および右センサスベクトルは、同じ行および列に位置する。即ち、これらのウインドウは、視差0では互いにシフトしない。
【0314】
ステップ663および669は、それぞれ、相関合計が参照右イメージにおける各ウインドウに対する視差のそれぞれについて演算されることを可能にするループの始めおよび終わりである。ここで、zは、0からD/2−1まで変化するので、16の視差(D=16)について、zは、0から7まで変化する。zループが用いられる第2の理由は、データパッキングのためである。上記のように、中間tempと呼ばれる変数が、データパッキングの目的で用いられる。
【0315】
ステップ664は、列合計アレイ[x]における値から最も右上の相関合計要素(相関合計バッファ[x][y−相関ウインドウ高さ])を減算する。この時点で、列合計アレイは、列合計を完了するために、現在の参照ポイントからの寄与を必要とする。
【0316】
ステップ665は、対応する対のセンサスベクトル間の個々のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zは0から7までループする。zループにおける所定のz値について、本発明の1つの実施態様は、領域1から4に関して上述したように、個別の視差(視差2*zおよび視差2*z+1)と共に関連する一対の相関合計を処理する。
【0317】
ステップ666は、前の列合計バッファおよび中間tempの内容で、列合計バッファ[x]を更新し続ける。中間tempは、このzループにおける適用可能な2つの視差についての参照イメージポイントに対する現在のハミング距離計算を保持する。この時点で、列合計バッファ[x]は、各視差についての参照右イメージポイントに対する列合計結果を保持する。
【0318】
ステップ667は、相関合計バッファ[x][y]内の位置(x、y)における参照右参照ポイントについてのこれらの対のセンサスベクトルに対するこれらの個々のハミング距離結果の格納を要求する。ステップ668は、領域7についての相関合計を開始し、列合計値を領域8についての列相関合計に加えることによって、相関ウインドウ合計[x][y]を更新する。この結果は、後の演算において有用である。
【0319】
ステップ669は、プログラムが次のzに進むことを要求する。次のzは、同じ相関ウインドウの同じ参照ポイントについての異なる一対の視差である。Dの視差についてすべての相関結果を計算すると、プログラムは、ステップ670に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ相関計算が、各視差に対して行われる。最後に、全相関ウインドウについての相関合計が、領域5、6、9および10において計算される。この相関合計および視差最適化演算の部分は、ステップ671で終了する。
【0320】
6.領域9
図26は、領域9に対する相関合計および視差最適化演算の1つの実施態様のフローチャートを示す。この領域に対する演算は、わずかな変更を除いて、領域5に対する演算と同様である。ここでは、同じ列において1行だけ上に位置するウインドウの最も右上側のイメージ要素は、現在の計算から減算されなければならない。プログラムは、ステップ672で開始する。
【0321】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が、領域9に位置する場合、ステップ673および684は、以下の相関合計が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、相関ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。ステップ673は、相関ウインドウ内の右イメージにおけるセンサスベクトルおよび相関ウインドウ内の左イメージにおける対応するセンサスベクトルが選択されることを要求する。これらの左および右センサスベクトルは、同じ行および列に位置する。即ち、これらのウインドウは、視差0では互いにシフトしない。
【0322】
ステップ674および683は、それぞれ、相関合計が参照右イメージにおける各ウインドウに対する視差のそれぞれについて演算されることを可能にするループの始めおよび終わりである。ここで、zは、0からD/2−1まで変化するので、16視差(D=16)について、zは、0から7まで変化する。zループが用いられる第2の理由は、データパッキングのためである。上記のように、中間tempと呼ばれる変数が、データパッキングの目的で用いられる。
【0323】
ステップ675は、列合計アレイ[x]における値から最も右上の相関合計要素(相関合計バッファ[x][y−相関ウインドウ高さ])を減算する。この時点で、列合計アレイは、列合計を完了するために、現在の参照ポイントからの寄与を必要とする。
【0324】
ステップ676は、対応する対のセンサスベクトル間の個々のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zは0から7までループする。zループにおける所定のz値について、本発明の1つの実施態様は、領域1から4に関して上述したように、個別の視差(視差2*zおよび視差2*z+1)と共に関連する一対の相関合計を処理する。
【0325】
ステップ677は、相関合計バッファ[x][y]内の位置(x、y)における参照右参照ポイントについてのこれらの対のセンサスベクトルに対するこれらの個々のハミング距離結果の格納を要求する。このように、中間tempは、相関合計バッファ[x][y]に格納される。
【0326】
ステップ678は、前の列合計バッファおよび中間tempの内容で、列合計バッファ[x]を更新し続ける。中間tempは、このzループにおける適用可能な2つの視差についての参照イメージポイントに対する現在のハミング距離計算を保持する。この時点で、列合計バッファ[x]は、各視差についての参照右イメージポイントに対する列合計結果を保持する。
【0327】
ステップ679は、列合計値を現在の相関合計に加えることによって、相関ウインドウ合計[x][y]を更新する。この結果は、後の演算において有用である。ステップ680は、相関合計結果を格納する。この相関合計結果は、同じ列における相関ウインドウ高さの行だけ上の位置で相関合計バッファにおいて図12を参照しながら説明したように得られる相関ウインドウの個々のハミング距離のすべての合計である。従って、相関合計は、相関合計バッファ[x][y−相関ウインドウ高さ]に格納される。
【0328】
ステップ681は、相関合計バッファにおける現在の相関合計データのうちのいずれが最も小さいかを決定し、この最適視差結果は、ステップ682において要求されるように、極値指標に格納される。プロセスは、領域5のプロセスと同様である。
【0329】
ステップ683は、プログラムが次のzに進むことを要求する。次のzは、同じ相関ウインドウの同じ参照ポイントについての異なる一対の視差である。Dの視差についてすべての相関結果を計算すると、プログラムは、ステップ684に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ相関計算が、各視差に対して行われる。最後に、全相関ウインドウについての相関合計が、領域5、6、9および10において計算される。この相関合計および視差最適化演算の部分は、ステップ685で終了する。
【0330】
7.領域10
図27は、領域10に対する相関合計および視差最適化演算の1つの実施態様のフローチャートを示す。領域に対する演算は、プログラムの一般的な形式を示す。この領域に対する演算は、わずかな変更を除いて、領域6および9に対する計算と同様である。ここでは、演算は、同じ列における1ウインドウ上の最も右側の角を列合計から減算し、現在の参照イメージ要素を列合計に加え、ウインドウ幅の列だけ左側に位置する列合計をウインドウ合計から減算し、現在の変更された列合計を変更されたウインドウ合計に加えることを含む。プログラムはステップ686で開始する。
【0331】
相関ウインドウ、より詳細には、相関ウインドウ内の参照イメージ要素が、領域10に位置する場合、ステップ687および699は、以下の相関合計が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、相関ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。ステップ687は、相関ウインドウ内の右イメージにおけるセンサスベクトルおよび相関ウインドウ内の左イメージにおける対応するセンサスベクトルが選択されることを要求する。これらの左および右センサスベクトルは、同じ行および列に位置する。即ち、これらのウインドウは、視差0では互いにシフトしない。
【0332】
ステップ688および698は、それぞれ、相関合計が参照右イメージにおける各ウインドウに対する視差のそれぞれについて演算されることを可能にするループの始めおよび終わりである。ここで、zは、0からD/2−1まで変化するので、16の視差(D=16)について、zは、0から7まで変化する。zループが用いられる第2の理由は、データパッキングのためである。上記のように、中間tempと呼ばれる変数が、データパッキングの目的で用いられる。
【0333】
ステップ689は、列合計アレイ[x]における値から最も右上の相関合計要素(相関合計バッファ[x][y−相関ウインドウ高さ])を減算する。この時点で、列合計アレイは、列合計を完了するために、現在の参照ポイントからの寄与を必要とする。
【0334】
ステップ690は、対応する対のセンサスベクトル間の個々のハミング距離を格納するデータパッキングの概念を用いる。16の視差について、zは0から7までループする。zループにおける所定のz値について、本発明の1つの実施態様は、領域1から4に関して上述したように、個別の視差(視差2*zおよび視差2*z+1)と共に関連する一対の相関合計を処理する。
【0335】
ステップ691は、相関合計バッファ[x][y]内の位置(x、y)における参照右参照ポイントについてのこれらの対のセンサスベクトルに対するこれらの個々のハミング距離結果の格納を要求する。このように、中間tempは、相関合計バッファ[x][y]に格納される。
【0336】
ステップ692は、前の列合計バッファおよび中間tempの内容で、列合計バッファ[x]を更新し続ける。中間tempは、このzループにおける適用可能な2つの視差についての参照イメージポイントに対する現在のハミング距離計算を保持する。この時点で、列合計バッファ[x]は、各視差についての参照右イメージポイントに対する列合計結果を保持する。
【0337】
ステップ693は、相関ウインドウ幅の列だけ左に位置する列合計値を、現在の相関合計値から減算する。ウインドウ合計を完全にするのに現在必要な唯一の値は、現在の列合計である。
【0338】
ステップ694は、列合計値を現在の相関合計に加えることによって、相関ウインドウ合計[x][y]を更新する。この結果は、後の演算において有用である。ステップ695は、相関合計結果を格納する。この相関合計結果は、同じ列における相関ウインドウ高さの行だけ上の位置で相関合計バッファにおいて図12を参照しながら説明したように得られる相関ウインドウの個々のハミング距離のすべての合計である。従って、相関合計は、相関合計バッファ[x][y−相関ウインドウ高さ]に格納される。
【0339】
ステップ696は、相関合計バッファにおける現在の相関合計データのうちのいずれが最も小さいかを決定し、この最適視差結果は、ステップ697において要求されるように、極値指標に格納される。プロセスは、領域5のプロセスと同様である。
【0340】
ステップ698は、プログラムが次のzに進むことを要求する。次のzは、同じ相関ウインドウの同じ参照ポイントについての異なる一対の視差である。Dの視差についてすべての相関結果を計算すると、プログラムは、ステップ699に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ相関計算が、各視差に対して行われる。最後に、全相関ウインドウについての相関合計が、領域5、6、9および10において計算される。この相関合計および視差最適化演算の部分は、ステップ700で終了する。
【0341】
一対のイメージに対するステレオ演算には、各イメージ内の各ピクセルにおいてセンサス変換を行い、その後、各ピクセルにおいてサーチウインドウ全体にわたるサーチが行われれなければならない。センサス変換には、中央ピクセルと、中央ピクセルを近隣で取り囲むN個の他のピクセルとの比較が含まれる。従って、変換には、中央ピクセルに対して1つのロードがとられ、続いて、Nロード、N比較、N−1シフト、およびN論理演算を行って、最終的なN長のビットベクトルが形成される。従って、幅Xおよび高さYのイメージに対するNビットセンサス変換については、センサス変換は、約X*Y*(1+N)ロードをとり、X*Y*(2+4N)演算(ポインタ算術、およびループオーバヘッドを無視する)の合計に対しては、X*Y格納およびX*Y*3N演算をとる。
【0342】
最良の視差を探すことは、各ピクセルについてD個の可能な視差に制限される。各ピクセルに対する演算は、1つのイメージに対しては変換されたセンサスピクセルをロードし、他のイメージに対してはD個の変換されたピクセルをロードすることを含む。ハミング距離を演算するためには、後半のピクセルのそれぞれは、前半のピクセルとの間で、排他的論理和(XOR)がなされなければならない。得られた結果におけるビット数は、ルックアップテーブルを用いてカウントされ得る。Nビットセンサスビットの数Nが8または16ビットよりも大きい場合には、このビットカウンティングは、関係のあるバイトを抽出するために、多数のロードおよびさらなる演算を必要とし得る。このハミング距離は、格納され、続いて使用され得る。ハミング距離が一旦演算されると、エリア合計は、ボックスフィルタを用いてXWIN×YWINのエリアに対して演算される必要がある。以下のものがロードされなければならない。(1)前のピクセルと同じ視差に対する合計、(2)前の行と同じ視差に対する列合計、(3)XWINピクセル前と同じ視差に対する列合計、および(4)YWIN行前と同じ視差に対するハミング距離。これらが一旦ロードされると、新しい列合計は、古いハミング距離を前の行の列合計から減算し、新しいハミング距離に加えることによって形成される。この新しい列合計は、格納され、続いて使用され得る。新しいエリア合計は、XWINピクセル前から列合計を減算し、新しい列合計を加えることによって演算される。最後に、エリア合計は、前の最小スコアと比較され得る。新しいスコアが前の最小値より小さい場合には、新しいスコアが最小値として格納され、現在の視差が格納される。
【0343】
D.対象演算
1.すべての領域
図28は、領域1から10についての対象演算に対する1つの実施態様の高レベルフローチャートを示す。一般に、対象演算には、領域1から10に関して上述した、相関合計および視差最適化演算の要素である、同じ列における1つの対象ウインドウだけ上の最も右上の角を列合計から減算すること、現在の参照イメージ要素についての差の計算を列合計に加えること、ウインドウ幅の列だけ左に位置する列合計をウインドウ合計から減算すること、および現在の変更された列合計を改変されたウインドウ合計に加えることを含む。
【0344】
プログラムのこの時点において、輝度イメージの少なくとも1つが得られる。1つの実施態様において、参照イメージ(右または左)に対する輝度イメージが得られる場合、対象演算は進行し得る。図28に示すように、プログラムはステップ800で開始する。
【0345】
ステップ801は、対象ウインドウサイズ、およびウインドウにおける参照ポイントの位置を決定する。1つの実施態様において、対象ウインドウは、7×7であり、参照ポイントは、ウインドウの最も右下の角に位置する。
【0346】
9つの周縁部のありさまおよび1つの一般的なケースが存在するので、演算は異なって実行される。領域1から9は周縁部のありさまを示すのに対し、領域10は一般的なケースを示す。図11(E)から図11(J)について上述したように、ウインドウ全体に対する対象合計は、完全なウインドウが所望のイメージ処理エリアに適合し得る領域に対して計算される。即ち、イメージデータは、対象ウインドウの各部分において見いだされる。従って、ウインドウ合計全体は、領域5、6、9および10について計算される。処理の大部分は、領域10において起こる。10個の領域に対するウインドウの参照イメージ要素の位置は、演算がどのように成し遂げられ、どんな演算が成し遂げられるかを示す。ステップ802は、対象演算が実行される領域1から6に適用される。これらの領域は、列合計バッファ、差の変数、および対象ウインドウ合計をセットアップする。対象演算が完了すると、ステップ803は、プログラムが領域7から10に進むことを要求する。
【0347】
演算は、行内で列毎に参照右イメージにおける各イメージ要素について行われ、行の最後になると、プログラムは、所望のイメージ処理エリアにおける次の行の第1の列に進む。これは、ステップ804、805、810、812、811および813によって反映される。ステップ804、812および813によって定義されるあまり頻繁に発生しない行ループは、外部ループであるのに対して、ステップ805、810および811によって定義されるより頻繁に発生する列ループは、内部ループである。プログラムが行内で列毎に進行するにつれて、ウインドウは、領域7、8、9および10をこの順序で通過する。プログラムが次の行に到達し、行の終わりに進むと、領域7、8、9および10は、図11(G)から図11(J)に示すように、ウインドウによって横切られる。
【0348】
最初に、プログラムは、ステップ804および805に示すように、行Iおよび列Jにおいて、領域7に進む。ウインドウが領域7にある場合、領域7は行の始めになければならないので、領域7の対象演算は、ステップ806によって要求されるように行われる。ウインドウが領域8にある場合、領域8の対象演算は、ステップ807によって要求されるように行われる。ウインドウが領域9にある場合、領域9の対象演算は、ステップ808によって要求されるように行われる。ウインドウが領域10にある場合、領域10の対象演算は、ステップ809によって要求されるように行われる。
【0349】
進行する前に、ステップ810は、行Iおよび列Jにおける現在の参照イメージ要素が、行Iの最後の列にあるかどうかを決定する。この決定が「いいえ」と判定する場合、プログラムは、次に列Jに進み(ステップ811および805)、ウインドウの位置に従って、ステップ806、807、808または809の1つを実施する。ステップ810の決定が「はい」と判定する場合、ステップ812は、この行が所望のイメージ処理エリアの最後の行であるかどうかを決定する。もしそうでない場合、ステップ813および804は、ウインドウが次の行Iおよびその行の第1の列Jに進むことを要求する(列および行番号は、最後の列および行にそれぞれ到達した後にリセットされる)。ステップ812における決定が「はい」と判定する場合、対象プログラムはステップ814で終了する。
【0350】
いくつかの実施態様において、対象演算は、同じ相関ウインドウにわたって信頼値を発生することによって、相関ステップが進行するのと同時に行われ得る。新しいラインのそれぞれに対する対象演算子の結果は、ウインドウ合計バッファの1つのラインに格納される。このため、対象演算子バッファの使用または同じ相関バッファの使用のいずれかが必要になる。対象演算は、相関バッファの次のラインに格納され、対象結果(即ち、信頼「1」または非信頼「0」)を発生するために用いられ、このラインにおける対象値は、相関合計および視差最適化方式から発生されるデータによって上書きされる。
【0351】
2.領域1および2
図29は、領域1および2についての対象演算の1つの実施態様のフローチャートを示す。プログラムは所望のイメージ処理エリアにおいてステップ815で開始する。対象ウインドウ、より詳細には、対象ウインドウ内の参照イメージ要素が、領域1または2に位置する場合、ステップ816および820は、以下の対象計算が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、対象ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。
【0352】
ステップ817は、1つの実施態様において32ビット長のdiff tempと呼ばれる変数を用い、2つの隣接するイメージ要素間に値の視差を保持する。difftemp変数の長さは、より短く(またはより長く)され得るが、最終的には、対象列合計アレイのサイズを収容するような設計でなければならない。なぜなら、difftempは、データ当たり32ビット長の対象列合計アレイに加えられるからである。difftempおよび対象列合計バッファのそれぞれのデータ長は、それらを加算したものを収容し、その加算結果が、加算演算を正しく反映するようになされなければならない。簡単に言うと、difftempおよび対象列合計は共に32ビットである。相関合計および視差最適化演算からの中間tempのように、データパッキングは、difftempに対して用いられ得る。
【0353】
ステップ817は、現在の参照イメージ要素(入力(x、y))の輝度値と、隣接のイメージ要素(入力(x+1、y))の輝度値との間の視差の絶対値を演算する。いくつかの実施態様では、絶対値は、ファンクションコールとして計算される。他の実施態様では、差が計算され、結果が負であるかどうかに応じて、同じ値の正のバージョンが、difftemp変数に対して選択される。参照イメージ要素が、所望のイメージ処理エリアの最終列に到達すると、difftempに対する差の計算が行われる。なぜなら、この参照イメージ要素のすぐ右の位置(および所望のイメージ処理データの外側)にある輝度データは、プログラムの初めに決定され、飛ばされた行および列のために一定して得られる。
【0354】
ステップ818は、diff tempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、差のスライディング合計(SSD)アレイ[x][y]でもあり得る。
【0355】
ステップ819は、参照対象ウインドウが領域1に位置する場合、diff tempの内容で対象列合計バッファ[x]を初期化する。この時点で、対象列合計バッファ[x]は、参照イメージ要素に対する対象結果を保持する。ステップ819はまた、参照対象ウインドウが領域2に位置する場合、前の対象列合計バッファおよびdifftempの内容で対象列合計バッファ[x]を更新する。この時点で、対象列合計バッファ[x]は、列の最も下側のイメージ要素である列の参照イメージ要素によって規定される各列についての対象列合計結果を保持する。列のサイズは、対象ウインドウの高さである。領域1および2において、列全体は得られないので、列合計は部分のみである。
【0356】
プログラムはステップ820に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントに対して同じ対象演算が実施される。最後に、対象列合計アレイ[x]は、対象ウインドウの高さに対して各列について構築される。しかし、完全な対象列合計(対象ウインドウの高さ全体)は、まだ得られない。対象演算のこの部分は、ステップ821で終了する。
【0357】
3.領域3および4
図30は、領域3および4についての対象演算の1つの実施態様のフローチャートを示す。演算は、対象列合計がこの時点で得られることを除いて、領域1および2の演算と同様である。プログラムは、所望のイメージ処理エリアにおいてステップ822で開始する。対象ウインドウ、より詳細には、対象ウインドウ内の参照イメージ要素が、領域3または4に位置する場合、ステップ823および828は、以下の対象計算が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、対象ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。
【0358】
ステップ824は、現在の参照イメージ要素(入力(x、y))の輝度値と、隣接のイメージ要素(入力(x+1、y))の輝度値との間の視差の絶対値を演算する。ステップ825は、difftempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、差のスライディング合計(SSD)アレイ[x][y]でもあり得る。
【0359】
ステップ826は、前の対象列合計バッファとdiff tempとを加算した内容で対象列合計バッファ[x]を構築する。この時点で、対象列合計バッファ[x]は、列の最も下側のイメージ要素である列の参照イメージ要素によって規定される各列についての完全な対象列合計結果を保持する。列のサイズは、対象ウインドウの高さである。
【0360】
ステップ827は、対象ウインドウが領域3に位置する場合、対象列合計アレイ[x][y]における値で、SSD[x][y]アレイを初期化する。ステップ827は、対象ウインドウが領域4に位置する場合、SSDアレイの現在の値とイメージ要素の現在の位置についての対象列合計アレイにおける値とを加算して、SSD[x][y]アレイを構築する。
【0361】
プログラムはステップ828に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ対象演算が行われる。最後に、SSD[x][y]アレイが、各イメージポイントに対して構築される。対象演算のこの部分は、ステップ829で終了する。
【0362】
4.領域5
図31は、領域5に対する対象演算の1つの実施態様のフローチャートを示す。演算は、この時点で対象ウインドウ合計全体が得られることを除いて、領域3および4の演算と同様である。プログラムは、所望のイメージ処理エリア内でステップ830で開始する。対象ウインドウ、より詳細には、対象ウインドウ内の参照イメージ要素が、領域5に位置する場合、ステップ831および839は、以下の対象計算が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、対象ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。
【0363】
ステップ832は、現在の参照イメージ要素(入力(x、y))の輝度値と、隣接のイメージ要素(入力(x+1、y))の輝度値との間の視差の絶対値を演算する。ステップ833は、difftempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、差のスライディング合計(SSD)アレイ[x][y]でもあり得る。
【0364】
ステップ834は、前の対象列合計バッファとdiff tempとを加算した内容で対象列合計バッファ[x]を構築する。この時点で、対象列合計バッファ[x]は、列の最も下側のイメージ要素である列の参照イメージ要素によって規定される各列についての完全な対象列合計結果を保持する。
【0365】
ステップ835は、SSDアレイの現在の値とイメージ要素の現在の位置についての対象列合計アレイにおける値とを加算して、この参照ポイントにおいてSSD[x][y]アレイを完了する。この領域では、SSD[x][y]の内容は、この時点で、完全なウインドウ合計を示す。
【0366】
ステップ836は、この領域に対して現在得られる対象ウインドウ合計値が、特定の予めプログラムされた閾値よりも大きいかどうかを決定する。対象ウインドウ合計が、その特定の参照イメージポイントにおいて、輝度イメージの模様(テクスチャ)を示すことに留意されたい。閾値レベルは、模様(テクスチャ)をベースとした出力の質を決定し、この出力は、イメージ処理システムに、相関演算の信頼測定を示す。閾値が非常に低いかまたは0に設定される場合、ほとんどすべての対象ウインドウ合計計算はこのレベルを越える。従って、白いボードなどの非常に均一な光景でもこの閾値を越え得る。閾値が非常に高く設定されている場合、ほとんどの対象ウインドウ合計はこの閾値を超えず、出力は、イメージ処理システムに、出力のほとんどが相関結果に対して充分に高い信頼を有することを示す。ステップ836における決定が「はい」と判定する場合、対象結果[x][y]における値は、ステップ838に示すように、1に設定され、これは、相関結果に対する信頼の測定を示す。ステップ836における決定が「いいえ]と判定する場合、対象結果[x][y]における値は、ステップ837に示すように、0に設定され、これは、相関結果の非信頼の測定を示す。
【0367】
対象結果アレイ[x][y]についての適切な信頼値を設定した後、プログラムはステップ839に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ対象計算が行われる。対象演算のこの部分はステップ840で終了する。
【0368】
5.領域6
図32は、領域6に対する対象演算の1つの実施態様のフローチャートを示す。演算は、この時点で、対象ウインドウ幅の列だけ左に位置する列合計が、対象ウインドウ合計から減算され得ることを除いて、領域5の演算と同様である。プログラムは、所望のイメージ処理エリア内でステップ841で開始する。対象ウインドウ、より詳細には、対象ウインドウ内の参照イメージ要素が、領域6に位置する場合、ステップ842および851は、以下の対象計算が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、対象ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。
【0369】
ステップ843は、現在の参照イメージ要素(入力(x、y))の輝度値と、隣接のイメージ要素(入力(x+1、y))の輝度値との間の視差の絶対値を演算する。ステップ844は、difftempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、差のスライディング合計(SSD)アレイ[x][y]でもあり得る。
【0370】
ステップ845は、前の対象列合計バッファとdiff tempとを加算した内容で対象列合計バッファ[x]を構築する。この時点で、対象列合計バッファ[x]は、列の最も下側のイメージ要素である列の参照イメージ要素によって規定される各列についての完全な対象列合計結果を保持する。
【0371】
ステップ846は、SSD[x][y]アレイにおける現在の値から、対象列合計アレイ[x−対象ウインドウ幅」における列合計値を減算する。その現在の値は、(x−1、y)に位置するイメージ要素に関連するウインドウ合計である。対象ウインドウ合計を完了するために、対象列合計[x]は、ステップ847に示すように、SSD[x][y]に加えられる。この領域において、SSD[x][y]の内容は、この時点で、完全な対象ウインドウ合計を示す。
【0372】
ステップ848は、この領域に対して現在得られる対象ウインドウ合計値が、特定の予めプログラムされた閾値よりも大きいかどうかを決定する。ステップ846における決定が「はい」と判定する場合、対象結果[x][y]における値は、ステップ850に示すように、1に設定され、これは、相関結果に対する信頼の測定を示す。ステップ848における決定が「いいえ]と判定する場合、対象結果[x][y]における値は、ステップ849に示すように、0に設定され、これは、相関結果の非信頼の測定を示す。
【0373】
対象結果アレイ[x][y]についての適切な信頼値を設定した後、プログラムはステップ851に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ対象計算が行われる。対象演算のこの部分はステップ852で終了する。
【0374】
6.領域7および8
図33は、領域7および8に対する対象演算の1つの実施態様のフローチャートを示す。演算は、この時点で、同じ列における現在の参照ポイントから対象ウインドウ高さだけ上に位置するイメージポイントに対する単一の差の計算が、対象列合計[x]における値から減算されなければならないことを除いて、領域3および4の演算と同様である。プログラムは、所望のイメージ処理エリア内でステップ853で開始する。対象ウインドウ、より詳細には、対象ウインドウ内の参照イメージ要素が、領域7または8に位置する場合、ステップ854および860は、以下の対象計算が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、対象ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。
【0375】
ステップ855は、対象列合計アレイ[x]における値から、キャッシュ[x][y−対象ウインドウ高さ]に位置する単一のイメージ要素についての差の計算を減算する。キャッシュアレイは、1つの実施態様においてSSD[x][y]アレイである。
【0376】
ステップ856は、現在の参照イメージ要素(入力(x、y))の輝度値と、隣接のイメージ要素(入力(x+1、y))の輝度値との間の視差の絶対値を演算する。ステップ857は、difftempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、SSDアレイ[x][y]でもあり得る。
【0377】
ステップ858は、前の対象列合計バッファとdiff tempとを加算した内容で対象列合計バッファ[x]を構築する。この時点で、対象列合計バッファ[x]は、列の最も下側のイメージ要素である列の参照イメージ要素によって規定される各列についての完全な対象列合計結果を保持する。
【0378】
ステップ859は、対象ウインドウが領域7に位置する場合、対象列合計アレイ[x][y]における値で、SSD[x][y]アレイを初期化する。ステップ859は、対象ウインドウが領域8に位置する場合、SSDアレイの現在の値とイメージ要素の現在の位置についての対象列合計アレイにおける値とを加算して、SSD[x][y]アレイを構築する。
【0379】
プログラムはステップ860に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ対象演算が行われる。最後に、SSD[x][y]アレイが、各イメージポイントに対して構築される。対象演算のこの部分は、ステップ861で終了する。
【0380】
7.領域9
図34は、領域9に対する対象演算の1つの実施態様のフローチャートを示す。演算は、この時点で同じ列における現在の参照ポイントから対象ウインドウ高さだけ上に位置するイメージポイントについての単一の差の計算が、対象列合計[x]における値から減算されなければならないことを除いて、領域5の演算と同様である。プログラムは、所望のイメージ処理エリア内でステップ862で開始する。対象ウインドウ、より詳細には、対象ウインドウ内の参照イメージ要素が、領域9に位置する場合、ステップ863および872は、以下の対象計算が、行内で列毎に進むことによって各行および列に対して実行されることを要求し、対象ウインドウの参照ポイントが行の終わりに到達すると、参照ポイントは、次の行の始めに移動する。
【0381】
ステップ864は、対象列合計アレイ[x]における値から、キャッシュ[x][y−対象ウインドウ高さ」に位置する単一のイメージ要素についての差の計算を減算する。キャッシュアレイは、1つの実施態様においてSSD[x][y]アレイである。
【0382】
ステップ865は、現在の参照イメージ要素(入力(x、y))の輝度値と、隣接のイメージ要素(入力(x+1、y))の輝度値との間の視差の絶対値を演算する。ステップ866は、difftempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、差のスライディング合計(SSD)アレイ[x][y]でもあり得る。
【0383】
ステップ867は、前の対象列合計バッファとdiff tempとを加算した内容で対象列合計バッファ[x]を構築する。この時点で、対象列合計バッファ[x]は、列の最も下側のイメージ要素である列の参照イメージ要素によって規定される各列についての完全な対象列合計結果を保持する。
【0384】
ステップ868は、SSDアレイの現在の値とイメージ要素の現在の位置についての対象列合計アレイにおける値とを加算して、この参照ポイントにおいてSSD[x][y]アレイを完了する。この領域では、SSD[x][y]の内容は、この時点で、完全なウインドウ合計を示す。
【0385】
ステップ869は、この領域に対して現在得られる対象ウインドウ合計値が、特定の予めプログラムされた閾値よりも大きいかどうかを決定する。対象ウインドウ合計が、その特定の参照イメージポイントにおいて、輝度イメージの模様(テクスチャ)を示すことに留意されたい。閾値レベルは、模様(テクスチャ)をベースとした出力の質を決定し、この出力は、イメージ処理システムに、相関演算の信頼測定を示す。ステップ869における決定が「はい」と判定する場合、対象結果[x][y]における値は、ステップ871に示すように、1に設定され、これは、相関結果に対する信頼の測定を示す。ステップ869における決定が「いいえ]と判定する場合、対象結果[x][y]における値は、ステップ870に示すように、0に設定され、これは、相関結果の非信頼の測定を示す。
【0386】
対象結果アレイ[x][y]についての適切な信頼値を設定した後、プログラムはステップ872に進み、現在の参照ポイントが行の最終列に位置する場合には、システムは、同じ行の次の列または次の行の始まりにおける次の参照ポイントを選択するように方向づけられる。次に、新しい参照ポイントについて、同じ対象計算が行われる。対象演算のこの部分はステップ873で終了する。
【0387】
8. 領域10.
図35は、領域10についての対象演算の一実施形態を示すフローチャートである。演算は、領域6および9のものと同様であるが、ここではアルゴリズムの一般の場合を想起されたい。ここでの演算は、列合計から同じ列中の1ウインドウ上の右上角を減算し、現在の参照イメージ要素を列合計に加算し、ウインドウ合計からウインドウ幅の列数だけ左に位置する列合計を引算し、現在の修正された(modified)列合計を修正されたウインドウ合計に加算することを包含する。
【0388】
ステップ874において、所望のイメージ処理領域でプログラムは開始する。対象ウインドウ、より具体的には対象ウインドウ中の参照イメージ要素が領域10に位置するならば、ステップ875および885は、行中において列単位で進むことにより以下の対象演算を各行および列について実行することを要求とし、もし対象ウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0389】
ステップ876では、キャッシュ[x][y−対象ウインドウの高さ]に位置する単一のイメージ要素についての差計算を、対象列合計アレイ[x]中の値から減算する。一実施形態において、キャッシュアレイはSSD[x][y]アレイである。
【0390】
ステップ877では、現在の参照イメージ要素(入力(x,y))の輝度値と、隣接するイメージ要素(入力(x+1,y))の輝度値との差の絶対値を演算する。ステップ878は、diff tempの値をキャッシュ[x][y]に格納する。このキャッシュはまた、差(SSD)アレイ[x][y]のスライディング合計であり得る。
【0391】
ステップ879では、対象列合計バッファ[x]に、前の対象列合計バッファの内容プラスdiff tempを累積していく(buildup)。こうして、対象要素合計バッファ[x]は、列中の参照イメージ要素(列中の一番下のイメージ要素である)によって規定される、各列についての完全な対象列合計結果を保持している。
【0392】
ステップ880では、対象列合計アレイ[x−対象ウインドウ幅]中の列合計値を、SSD[x][y]アレイ中の現在の値から減算する。SSD[x][y]アレイ中のこの現在の値は、(x-1,y)に位置するイメージ要素に対応するウインドウ合計である。ステップ881に示すように、対象ウインドウ合計を完全にするために、対象列合計[x]をSSD[x][y]に加算する。この領域において、SSD[x][y]の内容はこの時点で完全な対象ウインドウ合計を表している。
【0393】
ステップ882では、この時点でこの領域について利用可能になった対象ウインドウ合計値が、特定の予めプログラムされたしきい値より大きいか否かを決定する。対象ウインドウ合計は、この特定の参照イメージポイントにおける輝度イメージの模様(テクスチャ)を表していることに注意せよ。しきい値レベルは、模様(テクスチャ)に基づいた出力品質を決定する。この出力は、相関演算の信頼度(confidencemeasure)を、イメージ処理システムに対して示している。ステップ882における決定が「YES」の評価をすれば、対象結果[x][y]中の値はステップ884に示されるように1に設定され、相関結果の信頼度を示す。ステップ882における決定が「NO」の評価をすれば、対象結果[x][y]中の値はステップ883に示されるように0に設定され、相関結果の非信頼度(measureofno confidence)を示す。
【0394】
対象結果アレイ[x][y]の適切な信頼値を設定した後、プログラムはステップ885に進み、同じ行の次の列中の次参照ポイントを、あるいは現在の参照ポイントが行の最後の列に位置している場合は次の行の初めの次参照ポイントを、システムに選択させる。そして、新しい参照ポイントについての同じ対象計算を行う。対象演算のこの部分は、ステップ886において終了する。
【0395】
E.データ圧縮(data packing)
図36は、相関合計および視差最適化演算の一実施形態に用いられる、データ圧縮概念を示している。一実施形態においては32ビット長である中間tempと呼ばれる変数が、2つの異なる視差についての個々の変換ベクトル−変換ベクトルハミング距離値を保持する。変数のMSB部の16ビットは視差d1についての相関合計値を保持し、変数のLSB部の16ビットは視差d2についての相関合計値を保持する。このように図21〜27を参照して上述したzループの間に、16個の視差に対して8個の中間temp値が用いられる。本発明の一実施形態において単一の中間temp値が用いられるため、視差に基づいた相関合計の各対は、1つのzループ中において実質的に同時に演算される。中間tempは32ビット長であることにより、過剰なデータ操作なしに32ビット列合計値に単に加算することができる。
【0396】
一実施形態において、中間temp 1および中間temp 2と呼ばれる2つの中間temp値を用いて、データを圧縮する。左(x+2*z,y)および参照右(x,y)の2つのセンサスベクトルの間のハミング距離を演算し、図36において701として示す中間temp1のLSB側半分に一時的に格納する。この値を、図中702として示す中間temp2のMSB側半分に移動する。左(x+2*z+1,y)および参照右(x,y)の2つのセンサスベクトルの間のハミング距離を演算し、図中において703として示す中間temp1のLSB側半分に一時的に格納する。このようにして、z=0について、中間temp 2のMSB側半分は左(x,y)および参照右(x,y)の間のハミング距離を保持しており、中間temp1のLSB側半分は左(x+1,y)および参照右(x,y)の間のハミング距離を保持しており、zループは0から(D/2−1)まで実行し、従ってD=16視差によりz=0〜7が得られる。
【0397】
707として示す論理OR動作は、中間temp 1(705)と中間temp 2(704)との間で行われ、中間temp1(706)に格納される。706に示すように、この時点で中間temp 1は左(x+2*z,y)および参照右(x,y)の間のハミング距離を中間temp1のMSB側半分に格納しており、左(x+2*z+1,y)および参照右(x,y)の間のハミング距離を同じ中間temp 1のLSB側半分に格納している。
【0398】
F.左−右一貫性チェック
図37は、左−右一貫性チェックの一実施形態のフローチャートを示している。このプログラムは最終的には、最適な視差値およびそれに対応する相関合計を決定し、各「参照」左イメージ要素についてBEST LR INDEXおよびBEST LR SCOREにそれぞれ格納する。プログラムはステップ720で開始する。
【0399】
ステップ721および733は、あるイメージ要素に対応するある変換ベクトルから別のイメージ要素に対応する別の変換ベクトルへと、行中を1度にD列進むことにより、以下の一貫性チェックを各行および列について実行することを要求する。もし参照イメージ要素が行の終わりに到達した場合は、参照イメージ要素は次の行の初めに移動する。相関合計バッファのデータ構造のため、1度につき1列移動することは一般に、同じイメージ要素中においてある視差の相関合計から別の視差の別の相関合計へと移動することになり、場合によっては、あるイメージ要素の視差D−1についての相関合計から次の隣接イメージ要素の視差0についての相関合計へと移動することになる。所与の視差についてあるイメージ要素から別のイメージ要素へ移動するためには、システムは視差0の位置から開始し、これを位置[x][y]と名付ける。次に右にD−1列移動しなければならない。もし現在のイメージが行中の最後のイメージ要素であれば、システムは次の行の最初のイメージ要素へ移動しなければならない。各イメージ要素について、システムはまず各イメージ要素の視差D−1に移動し、そこで時域計算についての相関データを得なければならない。各次の参照イメージ要素は、前のイメージ要素の位置からD列移動することを包含する。
【0400】
ステップ722では、インクリメントする変数INCRを0に設定する。この値を用いて、所与の「参照」左イメージ要素についての全ての相関合計データがチェックされるまで、D−1から0までの全ての視差をチェックする。
【0401】
ステップ723は、後の比較に用いるために、最適な視差数およびその視差数に対応する相関合計値を一時的に格納する。ステップ723は、相関合計バッファ[x+D-1-INCR][y]中に見いだされる相関合計値を、変数BEST LR SCOREに一時的に格納する。最初のイメージ要素について、D−1は、各視差について相関合計の完全な組を有する最初の左イメージ要素を見いだすための、初期のシフトである。16個の視差に関して、最初のイメージ要素は、相関合計バッファ[x+15][y](右イメージの最初のイメージ要素についての視差15に関する相関合計データである)内に位置している。この現在15である視差数D−1−INCRは、変数BEST LR INDEXに格納される。このようにシステムはスキューまたはバイアスされることにより、相関値にタイが生じた場合(すなわち、複数の視差数が最大の相関値を共有した場合)にはより高い視差数を最適視差数として維持する。他の実施形態においては、タイの場合において低い方の視差数を優先するようにシステムをバイアスしてもよい。
【0402】
ステップ724では、INCR変数を1インクリメントする(例えばINCR=1)。このインクリメントにより、次のより低い視差数を調べることができる。
【0403】
ステップ725では、変数CURRENT CORRELATION SUM SCOREを、相関合計バッファ[x+D*INCR+D-1-INCR][y]に設定する。現在、この値は相関合計バッファ[x+30][y]中に位置しており、これは視差14についての次の隣接イメージ要素に関する相関合計データを保持している位置に対応する。D*INCR項は、システムが右方向に次のイメージ要素に移動するかまたは複数のイメージ要素移動することを可能にし、D-1-INCR項は、調べられている特定の視差を選択する。
【0404】
ステップ726では、「参照」左イメージ要素から視差14であるデータ要素についての相関合計値を保持するBEST LR SCOREが、「参照」左イメージ要素から視差15であるデータ要素についての相関合計値を保持するBEST LR SCORE中の値未満であるか否かを決定する。もし決定の評価が「NO」であれば、システムはCURRENT CORRELATION SUM SCOREおよびBEST LR INDEX中の値に変更を加えず、ステップ728に進んで現在の「参照」左イメージ要素について全ての視差を調べたか否かをチェックする。
【0405】
ステップ726における決定の評価が「YES」であれば、BEST LR INDEX変数およびBEST LR SCORE変数をステップ727において更新する。BEST LR INDEXは、現在の視差数D−1−INCRによって置換され、BEST LR SCOREは、CORRELATION SUM SCOREに格納されている現在の低い方の相関合計値によって置換される。
【0406】
ステップ728では、D−1−INCR=0か否かを決定することにより、現在の「参照」左イメージ要素について全ての視差を調べたか否かをチェックする。もしこの式の解が0であれば、最後の視差値およびその対応する相関合計値は最適性について調べられており、プログラムはステップ729に進む。もしこの式の解が0でなければ、プログラムはステップ724に進み、INCRを1インクリメントする。724−725−726−727−728で規定される流ロープは、所与の「参照」左イメージ要素についての全ての視差およびその対応する相関合計が調べられるまで続けられる。
【0407】
所与の「参照」左イメージ要素について全ての視差が調べられれば、ステップ728は「YES」と評価し、ステップ729において変数CURRENT RL INDEXを、右から左分析において最適と決定され、極値指標[x-BESTLR INDEX+D-1][y]に現在格納されている視差数に設定する。最終的には、全ての極値指標が、参照右イメージ中のイメージ要素についての最適視差を含んでいる。
【0408】
ステップ730では、BEST LR INDEXがCURRENT RL INDEXに等しいか否かを決定する。すなわち、もし「参照」左イメージ要素が、それに最適にマッチするのが特定の右イメージであるように視差を選択した場合、この特定の右のイメージは現在の「参照」左イメージ要素を選択したか?このステップが決定を「NO」と評価した場合、左−右チェック結果は、元々の右−左チェック結果に対して一貫性を有していず、ステップ732においてLR RESULT[x][y]は−1に設定される。一実施形態においてこれは、データが破棄されることを意味する。他の実施形態において、モードフィルタおよび/または対象演算結果に依存して、データは条件的に破棄される。ステップ730が決定を「YES」と評価した場合、左−右チェック結果は元々の右−左結果と一貫性を有しており、ステップ731においてLR RESULT[x][y]に、変数BEST LR INDEX中の値が設定される。このようにして、各「参照」左イメージ要素について、LR RESULT[x][y]は、左−右および右−左間の一貫性を反映したデータを含んでいる。
【0409】
ステップ731および732におけるLR RESULT[x][y]へのデータ格納の後、ステップ733では、行中の処理するべき次のイメージ要素を選択する。次のイメージ要素は、現在のイメージ要素の現在位置からD行離れて位置している。もし現在のイメージ要素が行中の最後のイメージ要素であれば、次のイメージ要素は次の行中の最初のイメージ要素である。プログラムはステップ734で終了する。
【0410】
G.モードフィルタ
1.全領域。
【0411】
図38は、領域1〜10に対するモードフィルタの一実施形態の高レベルのフローチャートを示す。一般にモードフィルタ演算は、視差最適化演算および相関合計の領域1〜10について前述した要素を含む。すなわち、列合計から同じ列中の1モードフィルタウインドウ上の右上角の相関カウントを減算し、現在の参照イメージ要素についてのモードフィルタカウント計算値を列合計に加算し、ウインドウ合計からウインドウ幅の列数だけ左に位置する列合計を引算し、現在の修正された列合計を修正されたウインドウ合計に加算することである。
【0412】
プログラム中のこのポイントにおいて、極値指標を利用することが可能である。図38に示すように、プログラムはステップ900において開始する。
【0413】
ステップ901は、モードフィルタウインドウサイズおよびウインドウ中の参照ポイントの位置を決定する。一実施形態において、モードフィルタウインドウは7×7であり、参照ポイントはウインドウの右下角に位置している。
【0414】
9個の周縁部のありさまおよび1つの一般的場合が存在するため、演算は異なって実行される。領域1〜9は周縁部のありさまを表し、領域10は一般的場合を表している。図11(E)〜11(J)について上述したように、全ウインドウについてのモードフィルタ合計を計算して、完全なウインドウが所望のイメージ処理領域内にはまり得るような領域を求める。すなわち、モードフィルタウインドウの全ての部分においてイメージデータを見いだす。このようにして、全ウインドウ合計を、領域5、6、9、および10について計算する。処理の大部分は、10で起こる。10個の領域に対するウインドウの参照イメージ要素の位置が、どういった演算をどのように達成するかを支配する。ステップ902は、モードフィルタ演算がどこで実行されるかを領域1〜6に適用する。これらの領域は、列合計バッファ、個々の視差カウント、およびモードフィルタウインドウ合計を設定する(setup)。モードフィルタ演算が完了すれば、ステップ903においてプログラムが領域7〜10に進むことを要求する。
【0415】
演算は、参照右イメージ中の各イメージ要素について、1つの行中において列単位で行われ、行の終わりにおいてプログラムは、所望のイメージ処理領域中の次の行中の次の列に進む。これは、ステップ904、905、910、912、911および913に反映される。より少なく起こるステップ904、912、913によって規定される行ループは外側ループであり、より頻繁に起こるステップ905、910および911によって規定される列ループは内側ループである。プログラムが行中において列単位で進むにつれ、ウインドウは領域7、8、9および10をこの順で通過する。プログラムが次の行に到達しその行の終わりに進むとき、領域7、8、9、10は再び図11(G)〜11(J)に示すようにウインドウによって横切られる。
【0416】
まずプログラムは、ステップ904および905に示されるように行Iおよび列Jにおいて領域7に進む。もしウインドウが領域7中にあれば(行の初めではそうなるはずである)、ステップ906において要求されるように領域7モードフィルタ演算を行う。もしウインドウが領域8中にあれば、ステップ907において要求されるように領域8モードフィルタ演算を行う。もしウインドウが領域9中にあれば、ステップ908において要求されるように領域9モードフィルタ演算を行う。もしウインドウが領域10中にあれば、ステップ909において要求されるように領域10モードフィルタ演算を行う。
【0417】
進む前にステップ910において、行Iおよび列Jにおける現在の参照イメージ要素が、行Iの最後の列にあるか否かを決定する。決定の評価が「NO」であれば、プログラムは次の列Jに進み(ステップ911および905)、ウインドウの位置に応じてステップ906、907、908、または909のうちいずれか1つを行う。ステップ910における決定の評価が「YES」であれば、ステップ912において行が所望のイメージ処理領域中の最後の行であるか否かを決定する。もしそうでなければ、ステップ913および904において、ウインドウが次の行Iおよびその行中の最初の列Jに進むことを要求する(列および行番号は最後の列および行にそれぞれ到達した後にリセットされる)。ステップ912における決定の評価が「YES」であれば、モードフィルタプログラムはステップ914において終了する。
【0418】
2.領域1および2
図39は、領域1および2についてのモードフィルタの一実施形態のフローチャートを示す。領域1において、列合計を初期化する。領域2において、列合計を累積する。ただし両領域において、フル列合計またはウインドウ合計はまだ利用可能ではない。プログラムはステップ915から開始する。
【0419】
ステップ916では、モードフィルタウインドウサイズおよびウインドウ中の参照ポイントの位置を決定する。一実施形態において、ウインドウサイズは7×7である(7個のイメージ要素の幅掛ける7個のイメージ要素の高さ)であり、参照イメージ要素の位置は、ウインドウの左下角である。モードフィルタウインドウは本発明の相関合計および視差最適化部分において確立された極値指標アレイを横切って「移動する」ため、各イメージ要素は、視差値(すなわちd=0、1、2、...またはD−1)を含んでいる。この視差値は、本発明のイメージ処理システムによって参照右イメージと視差シフトされた左イメージとの間の最高のマッチまたは対応を表しているものとして選択された、最適な視差を表している。モードフィルタサイズおよびウインドウ中の参照ポイント位置の決定あるいは選択は、このモードフィルタ演算へのサブプログラムコール無しに、プログラムの主部分(MAIN)で行われ得る。
【0420】
ステップ917では、視差カウント[x+Z]変数を初期化する。ここでモードフィルタの文脈において用いている「Z」は、1対の視差についての相関データの処理の説明のために図21〜27を参照して上述した相関合計および視差最適化スキームにおいて用いた「z」とは異なる。一実施形態において、視差カウント[x+Z]は32ビット長であり、各ビン(bin)が1バイト長である4つの「ビン」を有していると考えることができる。この構造を用いることは、本発明の相関合計および視差最適化スキームの、列合計アレイのデータ圧縮構造および中間temp変数データと類似している。視差カウント[x+Z]アレイの概念は、単一ライン列合計アレイバッファと若干似ている。実際、他の実施形態においては、列中の視差をカウントするために視差カウント[x+Z]アレイの構造を用いない。
【0421】
視差カウント[x+Z]はZ=0から5まで変わるため、このアレイは6個の変数を表しており、Zの特定の値についての各変数視差カウント[x+Z]は4個のビンを含んでいる。合計24個のビンが利用可能である。各ビンは、単一の視差値を表している。本発明のイメージ処理システムは、各視差の発生を、その発生している視差に対応するビンに1ビットを加算することにより、カウントする。本発明の一実施形態においては、16個の視差を用いる(D=16)。このように、24ビットの全てを用いるわけではなく、むしろ、16個のビンのみを用いて視差の発生をカウントする。以下の表は、Zの各値およびこれらのビンについての視差カウント[x+Z]の理解を容易にするものである:
【0422】
【数8】
【0423】
【0424】
【数9】
【0425】
表に示すように、視差カウント[x+Z]の6個の変数は以下に表される:視差カウント[x]、視差カウント[x+1]、視差カウント[x+2]、視差カウント[x+3]、視差カウント[x+4]、および視差カウント[x+5]である。各可変視差カウント[x+Z]は4バイト長であり、各バイトはビンを表す。「00」記号は16進数記述であり、ビットに直せば実際には8ビット長−−0000 0000である。従って、各ビンまたはバイト位置は、隣接するビンまたはバイト位置に影響することなく(すなわち繰り上がり(carries)なしに)、最悪の場合の最大視差カウント数を保持することができる。
【0426】
アンダーラインは、視差カウントを保持している特定のビンまたはバイト位置を表す。従って、可変視差カウント[x+3]について、視差13カウントがMSBから2番目のバイトに格納されている。従って、例えば視差7などの所与の視差があるウインドウ列内で3回発生した場合、値3が視差カウント[x+1]のLSBバイトに格納される。視差14があるウインドウ列内で10回発生した場合、視差カウント[x+3]は、LSBバイトから2番目のバイトに値A(10進法における10に対応する16進数)を保持する。
【0427】
モードフィルタウインドウ、より具体的にはモードフィルタウインドウ中の参照イメージ要素が領域1または2に位置している場合、ステップ918および921は、行中を列単位で進むことにより各行および列について以下のモードフィルタ計算を実行することを要求し、もしモードフィルタウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0428】
ステップ919では、モードフィルタウインドウ内の極値指標アレイ[x][y]から視差データを取り込む(fetch)。ステップ920において、カウントビット(単数または複数)を、実質的に列合計である視差カウント[x+Z]中の各視差カウントビンに、モードフィルタウインドウ中の各視差の発生に基づいて加算する。カウントビット(単数または複数)は、特定の視差がモードフィルタウインドウ内における極値指標アレイ中に現れる回数を表す。これらのカウントビットは、枠923内に示されるように、適切な視差カウント[x+Z]ビン中に置かれる。
【0429】
プログラムはステップ921に進み、システムに、同じ行の次の列中の次参照ポイントを、あるいは現在の参照ポイントが行の最後の列に位置している場合は次の行の初めの次参照ポイントを、システムに選択させる。そして、新しい参照ポイントについての同じモードフィルタ計算を行う。モードフィルタ演算のこの部分は、ステップ922において終了する。
【0430】
3.領域3および4
図40は、領域3および4についてのモードフィルタの一実施形態のフローチャートを示している。領域3において完全な列合計が利用可能であるため、モードフィルタウインドウsum_Zが初期化される。領域4において、モードフィルタウインドウsum_Zを累積する。ただし、両領域において、フルのモードフィルタウインドウsum_Zはまだ利用可能ではない。プログラムはステップ924から開始する。
【0431】
モードフィルタウインドウ、より具体的にはモードフィルタウインドウ中の参照イメージ要素が領域3または4に位置している場合、ステップ925および929は、行中を列単位で進むことにより各行および列について以下のモードフィルタ計算を実行することを要求し、もしモードフィルタウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0432】
ステップ926では、モードフィルタウインドウ内の極値指標アレイ[x][y]から視差データを取り込む。ステップ927において、カウントビット(単数または複数)を、実質的に列合計である視差カウント[x+Z]中の各視差カウントビンに、モードフィルタウインドウ中の各視差の発生に基づいて加算する。カウントビット(単数または複数)は、特定の視差がモードフィルタウインドウ内における極値指標アレイ中に現れる回数を表す。これらのカウントビットは、枠931内に示されるように、適切な視差カウント[x+Z]ビン中に置かれる。
【0433】
モードフィルタが6個の可変視差カウント[x+Z]を用いてそれぞれ4つの視差(合計24個の可能な視差)の発生(単数または複数)をカウントするように、モードフィルタ合計は4個のウインドウ合計変数−−モードフィルタウインドウsum_Z(Z=0〜5について)を用いて計算される。各モードフィルタウインドウsum_Zは、4個の視差に対してウインドウ合計を保持する。従って、ウインドウsum_0は、視差0〜3についてのウインドウ合計発生回数(occurences)を保持し;ウインドウsum_1は、視差4〜7についてのウインドウ合計発生回数を保持し;ウインドウsum_2は、視差8〜11についてのウインドウ合計発生回数を保持し;ウインドウsum_3は、視差12〜15についてのウインドウ合計発生回数を保持し;ウインドウsum_4は、視差16〜19についてのウインドウ合計発生回数を保持し;ウインドウsum_5は、視差20〜23についてのウインドウ合計発生回数を保持する。
【0434】
ステップ928において、内側Zループ(1対の視差についての相関データの処理の説明のために図21〜27を参照して上述した相関合計および視差最適化スキームにおいて用いた「z」ループとは区別される)を行う。0から5の各Zについて、領域3はモードフィルタウインドウsum_Z変数を初期化し、領域4は、列合計(視差カウント[x+Z]である)をモードフィルタウインドウsum_Zの現在の値に加算することにより、モードフィルタウインドウsum_Zを更新する。
【0435】
プログラムはステップ929に進み、システムに、同じ行の次の列中の次参照ポイントを、あるいは現在の参照ポイントが行の最後の列に位置している場合は次の行の初めの次参照ポイントを、システムに選択させる。そして、新しい参照ポイントについての同じモードフィルタ計算を行う。モードフィルタ演算のこの部分は、ステップ930において終了する。
【0436】
4.領域5
図41は、領域5についてのモードフィルタの一実施形態のフローチャートを示している。ウインドウが所望のイメージ処理領域の左上角にちょうどはまるため、領域5において完全なウインドウ合計が利用可能である。従って、この領域において視差一貫性を決定することができる。プログラムはステップ932から開始する。
【0437】
モードフィルタウインドウ、より具体的にはモードフィルタウインドウ中の参照イメージ要素が領域5に位置している場合、ステップ933および949は、行中を列単位で進むことにより各行および列について以下のモードフィルタ計算を実行することを要求し、もしモードフィルタウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0438】
ステップ934では、モードフィルタウインドウ内の極値指標アレイ[x][y]から視差データを取り込む。ステップ935において、カウントビット(単数または複数)を、実質的に列合計である視差カウント[x+Z]中の各視差カウントビンに、モードフィルタウインドウ中の各視差の発生に基づいて加算する。カウントビット(単数または複数)は、特定の視差がモードフィルタウインドウ内における極値指標アレイ中に現れる回数を表す。これらのカウントビットは、枠951内に示されるように、適切な視差カウント[x+Z]ビン中に置かれる。
【0439】
ステップ936において、内側Zループ(1対の視差についての相関データの処理の説明のために図21〜27を参照して上述した相関合計および視差最適化スキームにおいて用いた「z」ループとは区別される)を行う。0から5の各Zについて、領域5は、列合計(視差カウント[x+Z]である)をモードフィルタウインドウsum_Zの現在の値に加算することにより、モードフィルタウインドウsum_Zを更新する。この時点において、ウインドウ中で表される全ての視差の完全なウインドウ合計が利用可能になる。
【0440】
ステップ937ではまず、極値指標を0に設定し(ここで、Z=0について4*Z=0である)、極値を一番左のMSBビンのウインドウsum_Zに設定する。これにより、最大カウントを有する視差が視差0に向かってスキューまたはバイアスされ、カウント値はウインドウ内の視差0の発生回数にスキューまたはバイアスされる。このようにして、タイは低い方の視差数に向かってスキューされる。他の実施形態においては、タイの場合において高い方の視差数に向かってスキューする。
【0441】
ステップ938および947によって規定される第2の内側Zループを用いて、最大視差カウントを決定する。最大視差カウントは、ウインドウ内の24個のビン(他の場合においては、16個の視差のみを用いるので16個のビンのみを比較する)中の個々のカウント値を比較することによって決定される。最悪の場合のカウントは、7×7のウインドウについて単一の視差が49回発生することである(16進数記述=31)。Z=0〜5について、ステップ939から946を行う。所与のZについて、ステップ939から942は、sum_Zの様々なビンが極値より大きいか否かを決定する。もしそうであれば、極値指標を、最大カウント視差値の極値指標によって置き換え、極値は適切なビンのsum_Zによって置き換えられる。このようにして、極値指標は、最大のカウントを有する視差によって表され、極値は最大の発生した視差回数のカウント(単数または複数)または量(特定の視差がウインドウ中において現れる回数)によって表される。
【0442】
ステップ939において、もしsum_Zの一番左のMSBビンが極値より大きければ、ステップ943は、極値指標を4*Zで置き換えることを要求する。極値はまた、sum_Zの一番左のMSBビンによって置き換えられる。次にプログラムはステップ940に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ939の評価が「NO」であれば、現在の極値指標および極値は更新されず、ステップ940において次の比較に用いられる。
【0443】
ステップ940において、sum_Zの左から2番目のMSBビンが極値より大きければ、ステップ944は極値指標が4*Z+1によって置き換えられることを要求する。また極値も、sum_Zの左から2番目のMSBビンによって置き換えられる。プログラムは次にステップ941に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ940の評価が「NO」であれば、現在の極値指標および極値は更新されず、ステップ941において次の比較に用いられる。
【0444】
ステップ941において、sum_Zの左から3番目のMSBビンが極値より大きければ、ステップ945は極値指標が4*Z+2によって置き換えられることを要求する。また極値も、sum_Zの左から3番目のMSBビンによって置き換えられる。プログラムは次にステップ942に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ941の評価が「NO」であれば、現在の極値指標および極値は更新されず、ステップ942において次の比較に用いられる。
【0445】
ステップ942において、sum_ZのLSBビンが極値より大きければ、ステップ946は極値指標が4*Z+3によって置き換えられることを要求する。また極値も、sum_ZのLSBビンによって置き換えられる。プログラムは次に、ステップ947に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ942の評価が「NO」であれば、現在の極値指標および極値は更新されず、Zをインクリメントした後にステップ947において次の比較に用いられる。
【0446】
極値を用いて比較を行い、比較により現在の極値より大きいsum_Z値が得られた場合に極値指標および極値を更新するこの第2のZループは、全てのZ値についてループし続ける(0〜5)。最終結果として、ウインドウ内で見いだされる他の全ての最適視差中において最大のカウントを有する特定の視差数(すなわちd=0、1、2、...またはD−1)を保持する極値指標および、実際のカウントそのものを保持する極値が得られる。全てのsum_Zを全てのZについて比較した後、極値指標結果アレイ[x][y]は、ステップ948に示すように極値指標を対応する位置に格納する。
【0447】
プログラムはステップ949に進み、システムに、同じ行の次の列中の次参照ポイントを、あるいは現在の参照ポイントが行の最後の列に位置している場合は次の行の初めの次参照ポイントを、システムに選択させる。そして、新しい参照ポイントについての同じモードフィルタ計算を行う。モードフィルタ演算のこの部分は、ステップ950において終了する。
【0448】
5.領域6
図42は、領域6についてのモードフィルタの一実施形態のフローチャートを示している。領域6において、演算は領域5のものと同様であるが、今度は、ウインドウ幅の列数だけ左に位置する列合計を、対象ウインドウ合計から引算することができる。完全なウインドウ合計もまた利用可能である。従って、この領域において視差一貫性を決定することができる。プログラムはステップ952から開始する。
【0449】
モードフィルタウインドウ、より具体的にはモードフィルタウインドウ中の参照イメージ要素が領域6に位置している場合、ステップ953および969は、行中を列単位で進むことにより各行および列について以下のモードフィルタ計算を実行することを要求し、もしモードフィルタウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0450】
ステップ954では、モードフィルタウインドウ内の極値指標アレイ[x][y]から視差データを取り込む。ステップ955において、カウントビット(単数または複数)を、実質的に列合計である視差カウント[x+Z]中の各視差カウントビンに、モードフィルタウインドウ中の各視差の発生に基づいて加算する。カウントビット(単数または複数)は、特定の視差がモードフィルタウインドウ内における極値指標アレイ中に現れる回数を表す。これらのカウントビットは、枠971内に示されるように、適切な視差カウント[x+Z]ビン中に置かれる。
【0451】
ステップ956において、内側Zループ(1対の視差についての相関データの処理の説明のために図21〜27を参照して上述した相関合計および視差最適化スキームにおいて用いた「z」ループとは区別される)を行う。0から5の各Zについて、領域6は、モードフィルタウインドウsum_Zを更新する。第1に、現在の参照ポイントよりウインドウ幅だけ左に位置する列合計を現在のウインドウ合計から引算する。この結果、視差カウント[x+Z-モードフィルタウインドウ幅]がsum_Zから減算される。第2に、現在の列合計(視差カウント[x+Z]である)をモードフィルタウインドウsum_Zの現在の値に加算する。この時点において、ウインドウ中で表される全ての視差の完全なウインドウ合計が利用可能になる。
【0452】
ステップ957ではまず、極値指標を0に設定し(ここで、Z=0について4*Z=0である)、極値を一番左のMSBビンのウインドウsum_Zに設定する。これにより、最大カウントを有する視差が視差0に向かってスキューまたはバイアスされ、カウント値はウインドウ内の視差0の発生回数にスキューまたはバイアスされる。このようにして、タイは低い方の-視差数に向かってスキューされる。他の実施形態においては、タイの場合において高い方の視差数に向かってスキューする。
【0453】
ステップ958および967によって規定される第2の内側Zループを用いて、最大視差カウントを決定する。最大視差カウントは、ウインドウ内の24個のビン(他の場合においては、16個の視差のみを用いるので16個のビンのみを比較する)中の個々のカウント値を比較することによって決定される。Z=0〜5について、ステップ959から966を行う。所与のZについて、ステップ959から962は、sum_Zの様々なビンが極値より大きいか否かを決定し、各決定につき、領域5のモードフィルタ計算について説明した通りの結果を決定する。
【0454】
ステップ959において、もしsum_Zの一番左のMSBビンが極値より大きければ、ステップ963は、極値指標を4*Zで置き換えることを要求する。極値はまた、sum_Zの一番左のMSBビンによって置き換えられる。次にプログラムはステップ960に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ959の評価が「NO」であれば、現在の極値指標および極値は更新されず、ステップ960において次の比較に用いられる。
【0455】
ステップ960において、sum_Zの左から2番目のMSBビンが極値より大きければ、ステップ964は極値指標が4*Z+1によって置き換えられることを要求する。また極値も、sum_Zの左から2番目のMSBビンによって置き換えられる。プログラムは次にステップ961に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ960の評価が「NO」であれば、現在の極値指標および極値は更新されず、ステップ961において次の比較に用いられる。
【0456】
ステップ961において、sum_Zの左から3番目のMSBビンが極値より大きければ、ステップ965は極値指標が4*Z+2によって置き換えられることを要求する。また極値も、sum_Zの左から3番目のMSBビンによって置き換えられる。プログラムは次にステップ962に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ961の評価が「NO」であれば、現在の極値指標および極値は更新されず、ステップ962において次の比較に用いられる。
【0457】
ステップ962において、sum_ZのLSBビンが極値より大きければ、ステップ966は極値指標が4*Z+3によって置き換えられることを要求する。また極値も、sum_ZのLSBビンによって置き換えられる。プログラムは次に、ステップ967に進み、新しく更新された極値指標および極値により次の比較を行う。ステップ962の評価が「NO」であれば、現在の極値指標および極値は更新されず、Zをインクリメントした後にステップ967において次の比較に用いられる。
【0458】
極値を用いて比較を行い、比較により現在の極値より大きいsum_Z値が得られた場合に極値指標および極値を更新するこの第2のZループは、全てのZ値についてループし続ける(0〜5)。最終結果として、ウインドウ内で見いだされる他の全ての最適視差中において最大のカウントを有する特定の視差数(すなわちd=0、1、2、...またはD−1)を保持する極値指標および、実際のカウントそのものを保持する極値が得られる。全てのsum_Zを全てのZについて比較した後、極値指標結果アレイ[x][y]は、ステップ968に示すように極値指標を対応する位置に格納する。
【0459】
プログラムはステップ969に進み、システムに、同じ行の次の列中の次参照ポイントを、あるいは現在の参照ポイントが行の最後の列に位置している場合は次の行の初めの次参照ポイントを、システムに選択させる。そして、新しい参照ポイントについての同じモードフィルタ計算を行う。モードフィルタ演算のこの部分は、ステップ970において終了する。
【0460】
6.領域7および8
図43は、領域7および8についてのモードフィルタの一実施形態のフローチャートを示している。演算は領域3および4のものと同様であるが、今度は、同じ列中の現在の参照ポイントからモードフィルタウインドウ高さだけ上に位置するイメージポイントについての単一視差発生回数を、視差カウント[x+Z](モードフィルタ列合計である)内の値から減算しなければならない。この単一視差発生回数は、全てのZについての視差カウント[x+Z]のビンのうち1つ中の単一のビットである。領域7において、完全な列合計が利用可能であるため、モードフィルタウインドウsum_Zを初期化する。領域8において、モードフィルタウインドウsum_Zを累積する。ただし、両領域において、フルのモードフィルタウインドウsum_Zはまだ利用可能ではない。プログラムはステップ972から開始する。
【0461】
モードフィルタウインドウ、より具体的にはモードフィルタウインドウ中の参照イメージ要素が領域7または8に位置している場合、ステップ973および978は、行中を列単位で進むことにより各行および列について以下のモードフィルタ計算を実行することを要求し、もしモードフィルタウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0462】
ステップ974では、極値指標アレイ[x][y-モードフィルタウインドウ高さ]中に位置する視差カウント[x+Z]から1ビットを減算する。極値指標アレイ[x][y-モードフィルタウインドウ高さ]中において見いだされる特定の視差数に基づき、単一のカウントまたはビットを、視差数に対応する視差カウント[x+Z]中のビンから減算する。このようにして、位置極値指標アレイ[x][y-モードフィルタウインドウ高さ]に対応するイメージ要素に対して視差6が最適であることが見いだされた場合、視差最適化プログラムは、値6(視差6を表す)を、この位置において極値指標アレイに格納する。このようにして、視差カウント[x+1]の3番目のMSBビンからの1ビットを、現在そのビンにおいて見いだされる値(すなわちカウント)から減算する。
【0463】
ステップ975において、モードフィルタウインドウ内の極値指標アレイ[x][y]から視差データを取り込む。ステップ976において、カウントビット(単数または複数)を、実質的に列合計である視差カウント[x+Z]中の各視差カウントビンに、モードフィルタウインドウ中の各視差の発生に基づいて加算する。カウントビット(単数または複数)は、特定の視差がモードフィルタウインドウ内における極値指標アレイ中に現れる回数を表す。これらのカウントビットは、枠980内に示されるように、適切な視差カウント[x+Z]ビン中に置かれる。
【0464】
ステップ977において、内側Zループ(1対の視差についての相関データの処理の説明のために図21〜27を参照して上述した相関合計および視差最適化スキームにおいて用いた「z」ループとは区別される)を行う。0から5の各Zについて、領域7は、モードフィルタウインドウsum_Zを初期化し、領域8は、列合計(視差カウント[x+Z]である)をモードフィルタウインドウsum_Zの現在の値に加算する。
【0465】
プログラムはステップ978に進み、システムに、同じ行の次の列中の次参照ポイントを、あるいは現在の参照ポイントが行の最後の列に位置している場合は次の行の初めの次参照ポイントを、システムに選択させる。そして、新しい参照ポイントについての同じモードフィルタ計算を行う。モードフィルタ演算のこの部分は、ステップ979において終了する。
【0466】
7.領域9
図44は、領域9についてのモードフィルタの一実施形態のフローチャートを示している。領域9において、演算は領域5のものと同様であるが、今度は、同じ列中の現在の参照ポイントからモードフィルタウインドウ高さだけ上に位置するイメージポイントについての単一視差発生回数を、視差カウント[x+Z](モードフィルタ列合計である)内の値から減算しなければならない。この単一視差発生回数は、全てのZについての視差カウント[x+Z]のビンのうち1つ中の単一のビットである。完全なウインドウ合計もまた利用可能である。従って、この領域において視差一貫性を決定することができる。プログラムはステップ981から開始する。
【0467】
モードフィルタウインドウ、より具体的にはモードフィルタウインドウ中の参照イメージ要素が領域9に位置している場合、ステップ982および999は、行中を列単位で進むことにより各行および列について以下のモードフィルタ計算を実行することを要求し、もしモードフィルタウインドウの参照ポイントが行の終わりに到達した場合は、参照ポイントは次の行の初めに移動する。
【0468】
ステップ983では、極値指標アレイ[x][y-モードフィルタウインドウ高さ]中に位置する視差カウント[x+Z]から1ビットを減算する。極値指標アレイ[x][y-モードフィルタウインドウ高さ]中において見いだされる特定の視差数に基づき、単一のカウントまたはビットを、視差数に対応する視差カウント[x+Z]中のビンから減算する。
【0469】
ステップ984では、モードフィルタウインドウ内の極値指標アレイ[x][y]から視差データを取り込む。ステップ985において、カウントビット(単数または複数)を、実質的に列合計である視差カウント[x+Z]中の各視差カウントビンに、モードフィルタウインドウ中の各視差の発生に基づいて加算する。カウントビット(単数または複数)は、特定の視差がモードフィルタウインドウ内における極値指標アレイ中に現れる回数を表す。これらのカウントビットは、枠1001内に示されるように、適切な視差カウント[x+Z]ビン中に置かれる。
【0470】
ステップ986において、内側Zループ(1対の視差についての相関データの処理の説明のために図21〜27を参照して上述した相関合計および視差最適化スキームにおいて用いた「z」ループとは区別される)を行う。0から5の各Zについて、領域9は、現在の列合計(視差カウント[x+Z]である)をモードフィルタウインドウsum_Zの現在の値に加算することによって、モードフィルタウインドウsum_Zを更新する。この時点において、ウインドウ中で表される全ての視差の完全なウインドウ合計が利用可能になる。
【0471】
ステップ987ではまず、極値指標を0に設定し(ここで、Z=0について4*Z=0である)、極値を一番左のMSBビンのウインドウsum_Zに設定する。これにより、最大カウントを有する視差が視差0に向かってスキューまたはバイアスされ、カウント値はウインドウ内の視差0の発生回数にスキューまたはバイアスされる。このようにして、タイは低い方の視差数に向かってスキューされる。他の実施形態においては、タイの場合において高い方の視差数に向かってスキューする。
【0472】
ステップ988および997によって規定される第2の内部Zループを用いて、最大視差カウントが決定される。最大視差カウントは、ウィンドウ内の24個のビンの個々のカウント値を比較することによって決定される(他の場合では、16個の視差のみが用いられるため16個のビンのみが比較される)。Z=0〜5に対してステップ988〜997が実行される。所与のZに対して、ステップ989〜996は、sum_Zのそれぞれのビンが極値、および領域5のモードフィルタ計算に関連して上述したようにいずれかの決定から生じる結果より大きいかどうかを決定する。
【0473】
ステップ989で、sum_Zの最左端のMSBビンが極値より大きい場合は、ステップ993で、極指数を4*Zに置き換える必要がある。極値もまたsum_Zの最左端のMSBビンに置き換えられる。プログラムは次にステップ990に進み、新しく更新された極指数および極値によって次の比較を行う。ステップ989で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ990での次の比較のために使用され得る。
【0474】
ステップ990で、sum_Zの最左端から2番目のMSBビンが極値より大きい場合は、ステップ994で極指数を4*Z+1に置き換える必要がある。極値もまたsum_Zの最左端から2番目のMSBビンに置き換えられる。プログラムは次にステップ991に進み、新しく更新された極指数および極値によって次の比較を行う。ステップ990で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ991での次の比較のために使用され得る。
【0475】
ステップ991で、sum_Zの最左端から3番目のMSBビンが極値より大きい場合は、ステップ995で極指数を4*Z+2に置き換える必要がある。極値もまたsum_Zの最左端から3番目のMSBビンに置き換えられる。プログラムは次にステップ992に進み、新しく更新された極指数および極値によって次の比較を行う。ステップ991で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ992での次の比較のために使用され得る。
【0476】
ステップ992で、sum_ZのLSBビンが極値より大きい場合は、ステップ996で極指数を4*Z+3に置き換える必要がある。極値もまたsum_ZのLSBビンに置き換えられる。プログラムは次にステップ997に進み、Zをインクリメントし、新しく更新された極指数および極値によって次の比較を行う。ステップ992で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ997でZをインクリメントした後、次の比較のために使用され得る。
【0477】
極値との比較を行って、比較により現在の極値より大きなsum_Z値が得られる場合は極指数および極値を更新するこの第2のZループは、すべてのZ値(0〜5)に対してループを続ける。この最終結果には、ウィンドウ内で見いだされるすべての他の最適視差のうちで最大のカウントを有する特定の視差番号(すなわち、d=0,1,2,...またはD−1)を保持する極指数、および実際のカウント自体を保持する極値が得られる。すべてのZに対してすべてのsum_Z値が比較されると、ステップ998に示すように、極指数結果アレイ[x][y]は、対応する位置に極指数を格納する。
【0478】
プログラムはステップ999に進み、ここでシステムに、同じ行の次の列の次の参照ポイントを、または現在の参照ポイントがその行の最後の列に位置する場合は、次の行の先頭を選択するように指示する。次に、新しい参照ポイントのためのモードフィルタ計算が行われる。モードフィルタ演算のこの部分はステップ1000で終了する。
【0479】
8.領域10
図45は、領域10のためのモードフィルタの1つの実施形態のフローチャートを示す。演算は領域6および9の演算と同様であるが、この場合はアルゴリズムの一般的な場合が喚起されるという点で異なる。この場合は、演算は以下のものを含む。すなわち、同じ列の上方の1つのウィンドウの最右上端を列合計から減算すること、現在の参照イメージ要素を列合計に加算すること、ウィンドウ幅の列だけ左に位置する列の合計をウィンドウ合計から減算すること、および現在の変更された列合計を変更されたウィンドウ合計に加算することを含む、完全なウィンドウ合計もまた得られる。従って、この領域では視差の一貫性が決定され得る。プログラムはステップ1002で開始される。
【0480】
モードフィルタウィンドウ、より詳しくはモードフィルタウィンドウ内の参照イメージ要素が領域10内に位置する場合は、ステップ1003および1020で、行内を列毎に進むことによって、各行および列に対して以下のモードフィルタ計算を実行する必要がある。モードフィルタウィンドウの参照ポイントが行の終わりに到着した場合は、参照ポイントは次の行の先頭に移動する。
【0481】
ステップ1004は、極指標アレイ[x][y−モードフィルタウィンドウ高さ]内に位置する視差カウント[x+Z]から1ビットを減算する。極指標アレイ[x][y−モードフィルタウィンドウ高さ]内に見いだされる特定の視差番号に基づいて、視差番号に対応する視差カウント[x+Z]のビンから単一カウントまたはビットが減算される。
【0482】
ステップ1005は、モードフィルタウィンドウ内の極指標アレイ[x][y]から視差データを取り出す。ステップ1006は、モードフィルタウィンドウ内での各視差の出現に基づいて、実質的に列合計である、視差カウント[x+Z]における各視差カウントビンにカウントビットを加算する。カウントビットは、特定の視差がモードフィルタウィンドウ内の極指数アレイに現れる回数を表す。これらのカウントビットは、ボックス1022に示すように、適切な視差カウント[x+Z]内に置かれる。
【0483】
内部Zループ(一対の視差に対する相関データの処理について述べるために図21〜27に関連して上述した相関合計および視差最適化方法で使用される「z」ループとは区別される)はステップ1007で行われる。0〜5の各Zに対して、領域10はモードフィルタウィンドウsum_Zを更新する。先ず、現在の参照ポイントよりウィンドウ幅だけ左に位置する列合計を現在のウィンドウ合計から減算する。従って、視差カウント「x+Z−モードフィルタウィンドウ幅]の値がsum_Zから減算される。第2に、視差カウント[x+Z]である現在の列合計が、モードフィルタウィンドウsum_Zの現在の値に加算される。この時点で、ウィンドウ内で表されるすべての視差の完全なウィンドウ合計が得られる。
【0484】
ステップ1008は、先ず極指標を0に設定する。Z=0に対しては4*Z=0である。そして、極値を、最左端のMSBビンのウィンドウsum_Zに設定する。これにより、最大カウントを有する視差が、視差0に向かってスキューされまたはバイアスされ、カウント値がウィンドウ内の視差0の出現数に設定される。従って、連なりは、より低い視差番号に向かってスキューされる。他の実施形態では、スキューの連なりは、より高い視差番号に向かう。
【0485】
ステップ1009および1018によって規定される第2の内部Zループを用いて、最大視差カウントが決定される。最大視差カウントは、ウィンドウ内の24個のビンの個々のカウント値を比較することによって決定される(場合によっては、16個の視差のみが用いられるため16個のビンのみが比較される)。Z=0〜5に対して、ステップ1009〜1018が実行される。所与のZに対して、ステップ1010〜1017は、sum_Zのそれぞれのビンが極値、および領域5のモードフィルタ計算に関連して上述したようにいずれかの決定から生じる結果より大きいかどうかを決定する。
【0486】
ステップ1010で、sum_Zの最左端のMSBビンが極値より大きい場合は、ステップ1014で極指数を4*Zに置き換える必要がある。極値もまたsum_Zの最左端のMSBビンに置き換えられる。プログラムは次にステップ1011に進み、新しく更新された極指数および極値によって次の比較を行う。ステップ1010で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ1011で次の比較のために使用され得る。
【0487】
ステップ1011で、sum_Zの最左端から2番目のMSBビンが極値より大きい場合は、ステップ1015で極指数を4*Z+1に置き換える必要がある。極値もまたsum_Zの最左端から2番目のMSBビンに置き換えられる。プログラムは次にステップ1012に進み、新しく更新された極指数および極値によって次の比較を行う。ステップ1011で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ1012での次の比較のために使用され得る。
【0488】
ステップ1012で、sum_Zの最左端から3番目のMSBビンが極値より大きい場合は、ステップ1016で極指数を4*Z+2に置き換える必要がある。極値もまたsum_Zの最左端から3番目のMSBビンに置き換えられる。プログラムは次にステップ1013に進み、新しく更新された極指数および極値によって次の比較を行う。ステップ1012で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ1013での次の比較のために使用され得る。
【0489】
ステップ1013で、sum_ZのLSBビンが極値より大きい場合は、ステップ1017で極指数を4*Z+3に置き換える必要がある。極値もまたsum_ZのLSBビンに置き換えられる。プログラムは次にステップ1018に進み、Zをインクリメントし、新しく更新された極指数および極値によって次の比較を行う。ステップ1013で「いいえ」と評価された場合は、現在の極指数および極値は更新されず、ステップ1018でZをインクリメントした後、次の比較のために使用され得る。
【0490】
極値との比較を行って、比較の結果、sum_Z値が現在の極値より大きい場合は極指数および極値を更新するこの第2のZループは、すべてのZ値(0〜5)に対してループを続ける。この最終結果として、ウィンドウ内で見いだされるすべての他の最適視差のうちで最大カウントを有する特定の視差番号(すなわち、d=0,1,2,...またはD−1)を保持する極指数、および実際のカウント自体を保持する極値が得られる。すべてのsum_Z値がすべてのZに対して比較されると、ステップ1019に示すように、極指数結果アレイ[x][y]は、対応する位置に極指数を格納する。
【0491】
プログラムはステップ1020に進み、ここでシステムに、同じ行の次の列の次の参照ポイント、または現在の参照ポイントがその行の最後の列に位置する場合は、次の行の先頭を選択するように指示する。次に、新しい参照ポイントに対して同じモードフィルタ計算が行われる。モードフィルタ演算のこの部分はステップ1021で終了する。
IV.ハードウェア実装
A.演算要素アレイ
本発明のハードウェア実装に戻ると、本明細書で述べる対応アルゴリズムは、マイクロプロセッサベースのコンピュータシステム、様々なFPGAを用いる再構成可能演算システム、アプリケーション特異的集積回路(ASIC)実装、およびカスタム集積回路の実装を含む様々な実施形態で実現され得る。特に、ASICおよびカスタム集積回路の実装は、本発明のデータ処理システムの大量生産を促進させる。ステレオビジョン演算のためのイメージ処理への適用可能性とは別に、本発明のハードウェアの面は、データの組を処理してこれらの関連性を決定するいかなるアルゴリズムにも適用され得る。本明細書でのハードウェア実装の教示により、当業者であれば本発明を様々なハードウェア形態に容易に拡張させ得る。
【0492】
以下に述べるいくつかの図面はクロックソースを図示してはいないが、本発明を実行するためにクロックソースをどのようの組み込むかについては、当業者にとっては既知であろう。実際において、デジタルデータを処理するためにレジスタおよびデジタルロジックを使用することは、クロック信号が利用可能であることを示唆している。
【0493】
イメージ処理において、図46は、本発明のハードウェアシステムの1つの実施形態を示す。同図では、FPGA、SRAM、コネクタ、データパスユニット、クロックユニット、PCIインタフェース要素、および様々なバスよりなる4×4アレイ1100が、部分トーラス構成で配置される。FPGAは、他の要素からのサポートにより、センサスベクトルを発生させ、各データの組の各要素に対する相関を決定する。この特定の実施形態は再構成システムを示しているが、他の実施形態は必ずしも再構成可能であるとは限らない。実際において、いくつかの実施形態は非FPGAハードウェア構成要素を利用する。さらに他の実施形態はASIC形態である。
【0494】
様々な実施形態において、本発明は、データを並列パイプライン方式で処理し、これにより異なる時間からの多数の異なるイメージデータを同時に処理することができる。実際において、本システムの処理データは圧縮されているため、効率およびスループットが促進される。従って、各イメージ内の各ラインのためのイメージデータがシステムに供給され、システムは次にセンサスベクトルを演算し発生させ、相関を決定する。相関については、左右カメラからのイメージデータ対が同時に処理される。このとき、一方のイメージの各イメージ要素が、各サーチウィンドウ内の他方のイメージの各イメージ要素と比較される。以下の原理および実現可能な記述は、本発明のハードウェアの面に対して用いられる形態に関係なく適用される。
【0495】
1つの実施形態では、部分トーラス構成で配置された16個のFPGAおよび16個のSRAMの特定の均一なアレイが、演算要素の4×4二次元アレイとなる。4×4アレイは、列A、B、CおよびDならびに行0、1、2および3を含む。4×4アレイは、コラムAに演算要素1101、1102、1103および1104を、コラムBに演算要素1105、1106、1107および1108を、コラムCに演算要素1109、1110、1111および1112を、そしてコラムDに演算要素1113、1114、1115および1116を含む。アレイはまた、コラムAにメモリ要素1121〜1124、コラムBにメモリ要素1125〜1128、コラムCにメモリ要素1129〜1132、そしてコラムDにメモリ要素1133〜1136を含む。演算要素の部分制御のために、アレイはクロックユニット1120およびデータパスユニット1138を含む。PCIバスシステム1139へのインタフェースのために、PCIインタフェース1233が配備される。
【0496】
1つの実施形態では、アレイは、周線4の円筒メッシュ状に接続された4個の演算要素(例えばFPGA)およびメモリ要素よりなる4つの列として考えられ得る。円筒の中心軸は垂直である。垂直軸に沿ってアレイの演算要素が互いに接続される。列Aでは、演算要素1101はコネクタ/バス1221を介して演算要素1102に接続され、演算要素1102はコネクタ/バス1222を介して演算要素1103に接続され、演算要素1103はコネクタ/バス1223を介して演算要素1104に接続され、そして演算要素1104は、コネクタ1140および1144を介してまたは要素間のケーブルを介して、列の先端の演算要素1101に接続される。列Bでは、演算要素1105はコネクタ/バス1224を介して演算要素1106に接続され、演算要素1106はコネクタ/バス1225を介して演算要素1107に接続され、演算要素1107はコネクタ/バス1226を介して演算要素1108に接続され、そして演算要素1108は、コネクタ1141および1145を介してまたは要素間のケーブルを介して、列の先端の演算要素1105に接続される。列Cでは、演算要素1109はコネクタ/バス1227を介して演算要素1110に接続され、演算要素1110はコネクタ/バス1228を介して演算要素1111に接続され、演算要素1111はコネクタ/バス1229を介して演算要素1112に接続され、そして演算要素1112は、コネクタ1142および1146を介してまたは要素間のケーブルを介して、列の先端の演算要素1109に接続される。列Dでは、演算要素1113はコネクタ/バス1230を介して演算要素1114に接続され、演算要素1114はコネクタ/バス1231を介して演算要素1115に接続され、演算要素1115はコネクタ/バス1232を介して演算要素1116に接続され、そして演算要素1116は、コネクタ1143および1147を介してまたは要素間のケーブルを介して、列の先端の演算要素1113に接続される。
【0497】
アレイの演算要素はまた、水平アクセスに沿って互いに接続される。行0では、演算要素1101はコネクタ/バス1174を介して演算要素1105に接続され、演算要素1105はコネクタ/バス1175を介して演算要素1109に接続され、演算要素1109はコネクタ/バス1176を介して演算要素1113に接続され、そして演算要素1113は、コネクタ/バス1177および1170を介して行の西側端部の演算要素1101に接続され得る。行1では、演算要素1102はコネクタ/バス1178を介して演算要素1106に接続され、演算要素1106はコネクタ/バス1179を介して演算要素1110に接続され、演算要素1110はコネクタ/バス1180を介して演算要素1114に接続され、そして演算要素1114は、コネクタ/バス1181および1171を介して行の西側端部の演算要素1102に接続され得る。行2では、演算要素1103はコネクタ/バス1182を介して演算要素1107に接続され、演算要素1107はコネクタ/バス1183を介して演算要素1111に接続され、演算要素1111はコネクタ/バス1184を介して演算要素1115に接続され、そして演算要素1115は、コネクタ/バス1185および1172を介して行の西側端部の演算要素1103に接続され得る。行3では、演算要素1104はコネクタ/バス1186を介して演算要素1108に接続され、演算要素1108はコネクタ/バス1187を介して演算要素1112に接続され、演算要素1112はコネクタ/バス1188を介して演算要素1116に接続され、そして演算要素1116は、コネクタ/バス1189および1173を介して行の西側端部の演算要素1104に接続され得る。
【0498】
他の要素が1つのポイントから別のポイントへのデータの伝送のみに使用されるのに対して、いくつかの演算要素はセンサスベクトルを発生させる。1つの実施形態では、24個の視差が選択され、これによりサーチウィンドウは24個のピクセルを含み、各ピクセル当たり24回の比較を行わなければならない。各比較(すなわち単一の視差)は単一の相関ユニットで行われる。すなわち、各相関ユニットは、特定の視差のために左センサスベクトルと右センサスベクトルとの間の相関演算を行う。24個の視差すべてに対して相関結果を演算するためには、24個の相関ユニットが必要である。これを実現するために、8個の演算要素が配備される。従って、各演算要素には3個の相関ユニットが実装される。相関ユニットについては、データフローについての記述に関連してさらに後述する。特に、図57は各層間ユニットの内部ハードウェア実装を示す。
【0499】
図46を続けて参照すると、水平軸上の演算要素の各対間にメモリ要素が配置される。1つの実施形態では、メモリ要素は1MB×8ビットのオンチップSRAMであり、16個のSRAMにより16メガバイトのメモリが提供される。行0では、メモリ要素1121はそれぞれコネクタ/バス1190および1191を介して演算要素1101および1105の間に接続され、メモリ要素1125はそれぞれコネクタ/バス1192および1193を介して演算要素1105および1109の間に接続され、メモリ要素1129はそれぞれコネクタ/バス1194および1195を介して演算要素1109および1113の間に接続され、そしてメモリ要素1133はそれぞれコネクタ/バス1196および1170を介して演算要素1113および1101の間に接続される。行1では、メモリ要素1122はそれぞれコネクタ/バス1197および1198を介して演算要素1102および1106の間に接続され、メモリ要素1126はそれぞれコネクタ/バス1199および1200を介して演算要素1106および1110の間に接続され、メモリ要素1130はそれぞれコネクタ/バス1201および1202を介して演算要素1110および1114の間に接続され、そしてメモリ要素1134はそれぞれコネクタ/バス1203および1171を介して演算要素1114および1102の間に接続される。行2では、メモリ要素1123はそれぞれコネクタ/バス1204および1205を介して演算要素1103および1107の間に接続され、メモリ要素1127はそれぞれコネクタ/バス1206および1207を介して演算要素1107および1111の間に接続され、メモリ要素1131はそれぞれコネクタ/バス1208および1209を介して演算要素1111および1115の間に接続され、そしてメモリ要素1135はそれぞれコネクタ/バス1210および1172を介して演算要素1115および1103の間に接続される。行3では、メモリ要素1124はそれぞれコネクタ/バス1211および1212を介して演算要素1104および1108の間に接続され、メモリ要素1128はそれぞれコネクタ/バス1213および1214を介して演算要素1108および1112の間に接続され、メモリ要素1132はそれぞれコネクタ/バス1215および1216を介して演算要素1112および1116の間に接続され、そしてメモリ要素1136はそれぞれコネクタ/バス1217および1173を介して演算要素1116および1104の間に接続される。
【0500】
32ビットセンサス変換は、1サイクルでピクセルのためのセンサスベクトルを形成するために、9×9センサスウィンドウに対して8個のデータスキャンラインを必要とする。FPGA演算要素は、各サイクルにおいてこれらのスキャンラインのそれぞれから数個のピクセルにアクセスする必要がある。これは、数バイトのメモリ読み出し、および変換ピクセル毎に変換当たり1回の書き込みに翻訳される。8個の640ピクセルスキャンラインは1つのXC4025ではおさまらないため、各変換演算は2つのFPGAで行われる。1つの実施形態では、メモリ要素(例えばSRAM)は25ナノ秒(ns)サイクル時間および33MHzのクロック速度を有する。この特定のSRAMサイクル時間により、イメージ処理システムアレイボードの33MHzクロック速度でメモリに読み出しまたは書き込みを行うことができる。しかし、読み出しから書き込みへの動作の変更時には、本発明のこの特定の実施形態ではさらなる遅延が生じ、このため、33MHzのクロック速度で読み出しおよび書き込み間をサイクリングすることは可能ではない。ボードの持続読み出しまたは書き込み帯域幅は、毎秒533メガバイトである。他の実施形態では、異なるサイクル時間および異なるクロック速度のSRAMが用いられる。特定のクロック速度およびメモリサイクル時間により、本発明の精神および範囲が制限されるべきではない。
【0501】
上述のように、FPGAは、各FPGAが2つの隣接するSRAMに接続する部分トーラス形状で接続される。SRAMはFPGAに堅固に接続されるため、すべてのSRAMは同時にアクセスされ得、メモリ帯域幅およびエンジン規則性を最大限にすることができる。このイメージ処理システムでは、利用する周縁状態および外来資源の数が最小限ですむ。通常、演算中に周縁状態が現れると、特別なケースが必要となる。外来資源は、これらの演算資源にとって障害およびボトルネックとなる。イメージ処理システムを通じて資源、例えばSRAM資源を均一に配分することによって、汎用演算において全体的なスループットが向上し得る。さらに、翻訳の不変性を得ることができ、これによりあるFPGA構成がFPGAのうちの1つで機能する場合は、これはアレイ内のFPGAのいずれにおいても機能し得る。メモリ帯域幅を大きくするためには、イメージ処理システムは、各FPGAがメモリのそれ自体のメガバイトを局所的に制御し得るように設計および実装される。各メモリは8ビット幅であり、33MHzで動作し得、これにより500MB/秒を超えるピーク外部メモリ帯域幅が提供される。
【0502】
PCIインタフェースユニット1137は、PCIバスシステム1139に接続され、これにより本発明のイメージ処理システムが、ホストプロセッサ、ネットワーク、グラフィックス周辺機器、映像周辺機器、音声周辺機器、大規模記憶装置、SCSIユニット、およびフレームグラバを含む多くのPCI互換システムと接続および通信することが可能となる。いくつかの実施形態では、PCIインタフェースユニット1137は、演算要素に直接接続されない。代わりに、PCIインタフェースユニット1137はデータパスユニット1138に接続され、データパスユニット自体が様々な演算要素に接続される。他の実施形態では、図46に示すように、PCIインタフェースユニット1137はまた、各列(すなわちA、B、CおよひD)の演算要素にも接続される。PCIインタフェース1137は、コネクタ/バス1233を介して列Aに、コネクタ/バス1234を介して列Bに、コネクタ/バス1235を介して列Cに、そしてコネクタ/バス1236を介して列Dに接続される。これらのコネクタ/バス1233、1234、1235および1236はアレイの中央バスの一部である。
【0503】
同様に、アレイからホストコンピュータへの主データ接続部を制御して、64ビットPCIバス延長部を管理するデータパスユニット1138は、PCIバスシステム1139に接続される。PCIインタフェースユニット1137とデータバスユニット1138とはまた、コネクタ/バス1237を介して互いに接続される。いくつかの実施形態では、データパスユニット1138は、演算要素の各列(すなわちA、B、CおよひD)に接続される。読み出し動作では、PCIバスからのデータは、PCIインタフェース1137を通して入力され、PCIインタフェースはデータパスユニット1138に通じている。データパスユニット1138は、データがアレイ内の適切な演算要素に伝送されるように制御する。書き込み動作では、アレイからのデータはデータパスユニット1138に入力される。データパスユニットはデータをPCIインタフェースユニット1137を介してPCIバスに伝送する。
【0504】
アレイ内で起こる様々な並列処理のサイクリングを制御するために、クロックユニット1120が配備される。クロックユニット1120は複数のクロック出力a、b、c、dおよびpを有する。クロックユニット1120のポートaから列Aの演算要素のポート1154、1155,1156および1157へのクロック信号は、クロックコネクタ/バス1150を介して送られる。クロックユニット1120のポートbから列Bの演算要素のポート1158、1159,1160および1161へのクロック信号は、クロックコネクタ/バス1151を介して送られる。クロックユニット1120のポートcから列Cの演算要素のポート1162、1163,1164および1165へのクロック信号は、クロックコネクタ/バス1152を介して送られる。クロックユニット1120のポートdから列Dの演算要素のポート1166、1167,1168および1169へのクロック信号は、クロックコネクタ/バス1153を介して送られる。これらの異なるクロックラインは、クロック信号のスキューを補償するために配備される。これは通常は高い周波数で生じる。しかし、ほとんどの部分では、クロック信号は実質的に互いに類似している。
【0505】
クロックユニット1120のポートpからPCIインタフェースユニット1137およびデータパスユニット1138へのクロック信号は、コネクタ/バス1220を介して送られる。いくつかの実施形態では、ライン1220に加えて、クロック制御ユニット1120からPCIインタフェースユニット1137への直接ラインが配備される。
【0506】
アレイは垂直および水平コネクタを有する。各列の先端および末端の演算要素はそれぞれ上部および下部にコネクタを有する。列Aはコネクタ1140および1144を有し、これらはそれぞれコネクタ/バス1240および1244を介して演算要素に接続される。列Bはコネクタ1141および1145を有し、これらはそれぞれコネクタ/バス1241および1245を介して演算要素に接続される。列Cはコネクタ1142および1146を有し、これらはそれぞれコネクタ/バス1242および1246を介して演算要素に接続される。列Dはコネクタ1143および1147を有し、これらはそれぞれコネクタ/バス1243および1247を介して演算要素に接続される。これらの垂直コネクタは、これら同士で接続されてトーラスを閉鎖するか、または別のイメージ処理システムボードに接続されて、4×8、4×12、8×8、またはいかなる数のアレイサイズへもアレイを拡張し得る。これらのコネクタはまた、各列をリング状に作成して、トーラスを形成するか、または列を直列に接続して、南北軸に16要素よりなるチェーンを形成し得る。多くの他の組み合わせも可能である。
【0507】
アレイ自体は、ボードの縁周りを囲む水平接続部を有する。これらのコネクタは垂直コネクタと同様に構成される。これらのコネクタはまた、周辺I/Oのためのドーターカードをサポートする。
【0508】
部分トーラス配置により、演算をアレイ内のいかなるサイトにも容易に再配置することができる。これにより、アレイを横断する様々な演算の混合および整合が柔軟に促進される。上述のように、トーラスは一次元に延長して、N個のボードを用いて4×4Nトーラスを形成し得る。アレイの各要素はその4つの隣接要素への幅広い通信チャネルを有する。アレイ内の最右端チップの右エッジは最左端チップの左エッジにトークして、水平方向のトーラスを形成する。アレイ内のすべての通信チャネルは、各要素の4つの最隣接要素間に存在する。通信チャネルは、26〜30個のアレイピンおよび8対の「スーパーピン」よりなる。スーパーピンについては後述する。これらの接続部は25〜50MHzで通信が可能であり、これは16個の演算要素の各隣接対間で約100〜200MB/秒の直接通信速度が得られることを意味する。
【0509】
1つの実施形態では、演算要素はフィールドプログラマブルゲートアレイ(FPGA)である。本発明の1つの実施形態で用いられるFPGAの例としては、XilinxXC4025がある。XC4000、XC4000A、XC4000D、XC4000H、XC4000E、XC4000EX、XC4000LおよびXC4000XLを含むFPGAのXilinxXC4000シリーズが用いられ得る。特定のFPGAとしては、XilinxXC4005H、XC4025、およびXilinx XC4028EXが含まれる。
【0510】
XC4025FPGAについて以下に簡単に概要を述べる。各アレイ演算要素は、240ピンのXilinxチップと1MB×8ビットのスタティックRAM(SRAM)よりなる。XilinxXC4025要素が配備されたアレイボードは約440,000個の構成可能ゲートを含み、映像コンボルーションまたはステレオ視差アルゴリズムなどの演算集中タスクを行い得る。XilinxXC4025PFGAは、1024個の構成可能ロジックブロック(CLB)よりなる。各CLBは、32ビットの非同期SRAM、または少数の汎用ブールロジック、および2つのストローブレジスタを実装し得る。チップの周辺には、非ストローブI/Oレジスタが配備される。XC4025の代わりにXC4005Hを用いてもよい。これは、120,000個の構成可能ゲートを有する比較的低コストのアレイボードである。XC4005Hデバイスは、ハイパワーの24mAドライブ回路を有するが、標準XC4000シリーズの入出力フリップフロップは配備されていない。チップ間のパイプライン動作のためには、FPGAアレイの内部フリップフロップが代わりに用いられる。クロック配分、データ配分、およびPCIバスインタフェースのために、3つの追加のFPGA、Xilinx4013FPGAが用いられる。PCIインタフェースユニットは、Xilinx標準から90度回転される。これらのおよび他のXilinxFPGAについての詳細は、一般に入手可能なデータシートを通して得ることができる。これらのデータシートは本明細書において参考として援用されている。
【0511】
Xilinx XC4000シリーズのFPGAの機能性は、構成データを内部メモリセルにロードすることによってカスタマイズされ得る。これらのメモリセルに格納された値が、FPGA内でのロジック機能および相互接続を決定する。これらのFPGAの構成データはオンチップメモリに格納され得、外部メモリからロードされ得る。FPGAは外部の直列または並列PROMから構成データを読み出すか、または構成データが外部装置からFPGAに書き込まれ得る。これらのFPGAは、特にハードウェアがダイナミックに変更されるとき、またはユーザがハードウェアを異なるアプリケーションに適合させたいとき、無制限の回数で再プログラミングされ得る。
【0512】
一般に、XC4000シリーズのFPGAは1024個までのCLBを有する。各CLBは2レベルのルックアップテーブル、ならびに2つの4入力ルックアップテーブル(または関数発生器FおよびG)および2つのフリップフロップまたはラッチを有する。4入力ルックアップテーブルは、入力のいくつかを第3の3入力ルックアップテーブル(または関数発生器H)に供給する。これらのルックアップテーブルの出力は、これらのフリップフロップまたはラッチとは独立して駆動され得る。CLBは、以下の任意のブール関数の組み合わせを実現し得る。すなわち、(1)4または5個の変数よりなる任意の関数、(2)4個の変数よりなる任意の関数、4個までの非関連変数よりなる任意の第2の関数、および3個までの非関連変数よりなる任意の第3の関数、(3)4個の変数よりなる1つの関数および6個の変数よりなる別の関数、(4)4個の変数よりなる任意の2つの関数、ならびに(5)9個の変数よりなるいくつかの関数である。CLB入力を登録するかまたはルックアップテーブル出力を格納するためには、2つのDタイプフリップフロップまたはラッチが利用され得る。これらのフリップフロップは、ルックアップテーブルとは独立して使用され得る。DINが、これらの2つのフリップフロップまたはラッチのうちのいずれか一方への直接入力として使用され得、H1が他方を、H関数発生器を介して駆動し得る。
【0513】
CLBの各4入力関数発生器(すなわちFおよびG)は、繰り上げおよび桁下げ信号を迅速に発生させるための専用の演算ロジックを含み、これは繰り入れ(carry-in)および繰り出し(carry-out)を有する2ビット加算器を実現するように構成され得る。これらの関数発生器はまた、読み出し/書き込みランダムアクセスメモリ(RAM)として実現され得る。4入力ラインは、RAMのためのアドレスラインとして使用され得る。
【0514】
1つの実施形態では、イメージ処理システムは、ボードを完全に構成するために3レベルのブートストラッププロセスを必要とする。PCI−32チップは、イメージ処理システムをPCIバスに直接接続する。このPCI−32チップはデータパスおよびクロック制御チップをプログラムし、これらが次にアレイ全体をプログラムする。PCI−32チップは、PCIバスにわたって構成ビットを受け取ることができ、これらをデータパスおよびクロック制御チップに伝送する。この多段階プロセスにより、アレイがどのようにプログラムおよびアクセスされるかを決定する際にランタイムに柔軟性が与えられる。ボード上のアレイ全体は単一のFPGAとして同時にプログラムされ得る。単一のXilinxXC4025FPGAは、最高速度でプログラムするのに約50ミリ秒要する。本発明のアレイ全体はこの速度でプログラムされ得、理論的には構成の上書きが可能である。
【0515】
PCI−32チップはイメージ処理システム全体を制御し、イメージ処理システムの50ピンコネクタに接続されたXilinx Xcheckerケーブルと共に、またはパワーアップ上の直列PROMと共にプログラムされ得る。Xchecker方式では、設計を、ホストパーソナルコンピュータまたはワークステーションから容易に変更、ダウンロード、または試験することができる。PCI−32チップの構成が決定されると、直列PROMは、イメージ処理システムを高信頼性で迅速におよび自動的にプログラムするように構成され得る。
【0516】
クロック制御チップおよびデータパスチップが構成されると、クロック制御チップがアレイの残りの部分を構成し得る。クロック制御チップは、構成データを、16ビットを同時に、16個のアレイチップ(FPGAおよびSRAM)のそれぞれに1ビットづつ、直接アレイに送る。アレイが完全にプログラムされると、クロック制御チップはアレイ全体へのクロック配分を管理する。
【0517】
アレイボードへのソフトウェア接続は、インタフェースライブラリを介して管理される。このインタフェースにより、プログラムされる予定の各FPGAに対してXilinxビットファイルを特定化する手段によってアレイボードの構成が可能となる。FPGAが構成されると、ホストプロセッサからアレイボード上の任意の列の中央接続部にデータの読み出しおよび書き込みを行うことが可能となる。この読み出しおよび書き込みは、PCIバスを横断するマッピングされたメモリにより実現され、ライブラリコールを介して、または直接ポインタ割り付けを介してサポートされる。
【0518】
使用される設計ツールは主に、図解キャプチャーシステムであるViewlogicViewdrawおよびXilinx Xact位置およびルートソフトウェアである。
【0519】
メモリ帯域幅の別のソースとしては、FPGA内の構成可能ロジックブロック(CLB)のオンチップSRAMがある。このメモリはFPGA内のメモリであるため帯域幅を非常に高くすることができ、またアップ外部接続部を用いずに他の構成要素に直接接続し得る。XilinxXC4025の1つのCLBには32ビットしか格納することができず、従って、1024個のCLBよりなるFPGA全体は4000バイトしか保持することができない。他の演算要素はもっと多くのビットを記憶することができるため、メモリ資源は本発明の様々な実施形態において重要な制限ファクタとはならない。
【0520】
対応アルゴリズムは、変換ベクトルがシステムのまわりを搬送され得るように、相当な通信帯域幅を必要とする。1つの実施形態では、相関はハミング距離を利用する。ハミング距離を合計するには相当なメモリ帯域幅が必要である。カメラのピクセルは、便宜的に、約12.5MHzで入力されると仮定され得、一方、本発明は33MHzでそのバスおよび外部SRAMとインタフェースし得る。ピクセルデータのためのストローブを用いるモデルが実現されている。これは、多くて2クロックサイクル毎に1回ハイになり得る。この2段階方式により、ピクセル毎に2回の通信および2回の外部SRAMアクセスが可能になる。
【0521】
イメージ処理システムは、FPGAチップのためのHQ240フットプリントを用いる。XilinxXC4028EXFPGAエンジンは、単一のPCIボード上の最大50万個のゲートに接近する。さらに、PCIホストは2または3個のこのようなイメージ処理システムを含みことができ、この結果、単一の標準パーソナルコンピュータに百万個以上の構成可能ゲートが可能になる。
【0522】
本発明のいくつかの実施形態によるボックスフィルタリング動作のハードウェアの面について以下に述べる。ボックスフィルタリングのハミング距離は、1本の列合計スキャンラインを格納すること、およびピクセルクロック毎に1つの要素の読み出しおよび書き込みを行うことを必要とする。これはまた、ピクセルクロック毎に一度読み出しおよび書き込みが行われる、2BOX_RADIUS + 1行のハミング距離を必要とする。32ビットのセンサスを用いると、ハミング距離は32までの範囲となり得る。しかし、ハミング距離に飽和しきい値を用いることによって、距離は4ビットに制限され得る。ハミング距離を合計するためには、サイクル毎にデータの読み出しおよび書き込みを行う必要がする。しかし、外部SRAMの読み出しから書き込みへの切り替えには1クロックサイクルが必要であるため、システムはスキャンラインでのアクティブピクセル中に切り替えを行うゆとりはない。従って、システムは相関のためにFPGAのうちの8個を用いるが、各FPGAは、読み出し用に1つ、書き込み用に1つの合計2つのSRAMを使用する。2BOX_RADIUS+ 1スキャンライン毎にこれらのメモリの役割が反転する。
【0523】
B.アレイ内データフロー
図47は、イメージ処理システムのアレイ内でのデータフローを示し、図48、図52,図54および図55は、センサス変換、相関演算、および左右一貫性検査が並列して行われるときの、センサスベクトル発生器および相関ユニットを通るイメージデータおよびセンサスベクトルの高レベルデータフロー図を示す。図48、図49,図50および図51は、本発明のセンサスベクトル発生器の1つの実施形態を示す。図57は、相関ユニットのハードウェア実装の1つの実施形態を示す。これらの図は合わせて、本発明のイメージ処理システムのパイプラインおよび並列動作を示す。
【0524】
図47は、図46に関連して最初に紹介および記載したアレイにおけるデータフローを示す。太い矢印は、アレイ1100におけるデータのフローを示す。左側センサ/カメラおよび右側センサ/カメラが、フレームグラバ(図47には示さず)を介してPCIバス1139に左右イメージデータ情報を供給する。PCIインタフェース1137が(データパスユニット1138を介して)これらの左右イメージデータを列AおよびCの演算要素に供給し、これらの演算要素で、これらのイメージデータの各センサス変換ベクトルが演算および発生され、さらに格納および処理される。1つの実施形態では、PCIインタフェース1137は、イメージデータの一方を、パス1300および1301を介して、センサス変換が適用されるアレイ1100の列Aの演算要素1101および1102に供給する。1つの実施形態では、このイメージデータは、左または右カメラのいずれかからのピクセルに対するものである。ピクセルデータが右カメラからのものであると仮定すると、左カメラからの他方のイメージデータは横向きに、パス1302および1303を介して列Cの演算要素1110に、およびパス1304を介して演算要素1109に送られ、センサス変換が行われる。
【0525】
いくつかの実施形態では、PCIインタフェースユニット1137は演算要素に直接接続されない。代わりに、PCIインタフェースユニット1137はデータパスユニット1138に接続され、データパスユニット自体が様々な演算要素に接続される。いくつかの実施形態では、データパスユニット1138は演算要素の各列(すなわちA、B、CおよびD)に接続される。読み出し動作では、PCIバスからのデータはPCIインタフェース1137を通って入力され、PCIインタフェースはデータパスユニット1138に通される。データパスユニット1138は、データがアレイの適切な演算要素に伝送されるように制御する。書き込み動作では、アレイからのデータはデータパスユニット1138に入力される。データパスユニットは、データをPCIインタフェースユニット1137を介してPCIバスに伝送する。
【0526】
列AおよびCそれぞれのこれらの上部2つの演算要素は、センサスデータを列Bの演算要素1105に、演算要素1105の左右に配置されている16本のワイヤを通して2倍の速度で出力する。列Aの演算要素1101および1102からの右センサスデータは、パス1305を介して演算要素1105に送られ、列Cの演算要素1109および1110からの左センサスデータは、パス1306を介して同じ演算要素1105に送られる。
【0527】
次に相関演算が行われる。列Bの演算要素1105は、水平軸に沿って両側に配置されているメモリ要素1121および1125を用いて、3ステージの相関アルゴリズムを行う。この時点からデータは列Bの残りの部分を下向きに流れ、列Dの先端にケーブル接続され、列Dの末端へと下向きに進み、列Cの末端へと横向きに進み、そして列Cに沿って上向きに中央バスに通される。中央バスで、得られるデータはPCIインタフェース1137およびPCIバス1139を介してホストシステムに送られる。このパスの相関部分の演算要素は、列Bの演算要素1105、1106、1107および1108、ならびに列Dの演算要素1113、1114、1115および1116を含む。パスのこの相関部分はパス1307〜1315によって表される。
【0528】
このパス1307〜1315内の各演算要素は、隣接メモリ要素を用いて、3ステージの相関演算を行う。各ステージは、2つのセンサスベクトル間の相関決定である。パス内の8個の演算要素では、24個のステージが、参照センサスベクトルとその24個の視差との間の相関を表す。16個の視差の場合は、各演算要素は、2ステージの相関演算を行うようにプログラムおよび構成される。もしくは、8個の演算要素は、任意の組み合わせの、D(すなわち視差)個のステージの相関演算を行い得る。演算要素のいくつかが、D個の視差の組全体に対する相関合計を計算している限り、8個の演算要素すべてを相関演算に使用する必要はない。
【0529】
1つの実施形態では、32ビットセンサスベクトル対にとっては、2つの32ビットセンサスベクトル間のハミング距離計算の最大数は32であり、値32が生じることは恐らくないため、得られるデータは5ビットであり、このため、5ビットで格納され得る値0〜31で十分であり得る。しかし、いくつかの実施形態では、飽和しきい値を使用することによって、ハミング距離を表すために必要とされるビットまたはワイヤライン数を減らすことができる。従って、7または15より大きい任意のハミング距離はそれぞれ天井数7または15によって表され得るため、必要とされるハミング距離は、5ビットではなく、3または4ビットでよい。この結果はパス1316〜1318を介して中央バスに渡される。このバスに沿った演算要素、すなわち演算要素1112および1111は送達媒体として働く。
【0530】
PCIインタフェースユニット1137はパス1319を介して結果を受け取り、これをPCIバス1139に供給する。PCIバス上に供給されると、適切なPCI媒体、通常はホストプロセッサおよびそのメモリがデータを読み出す。
【0531】
FPGAを用いることにより、本発明のイメージ処理システムのアーキテクチャは、所望のロジック演算を実現するように設計され得る。適切なプログラミングツールを用いることにより、これらのFPGA内のロジックブロック、およびこれらのロジックブロックとFPGAとの組み合わせは、センサスベクトルを発生させ、本発明の相関演算を行うように構成され得る。
【0532】
C.センサスベクトル発生器
図48〜図51は、本発明によるセンサスベクトル発生器の1つの実施形態を示す。図48は、本発明によるセンサスベクトル発生器のハードウェア実装の1つの実施形態の高レベルブロックブロック図を示す。同図は、単一イメージのためのセンサスベクトル発生器を示す。言うまでもなく、2台のカメラからキャプチャーされる一対のイメージに対して、2台のこのようなセンサスベクトル発生器が配備される。
【0533】
このセンサスベクトル発生器は、イメージスキャンライン遅延要素と、センサスウィンドウの実質的に上半分に位置するイメージ要素のための16ビットのセンサスベクトル発生器と、センサスウィンドウの実質的に下半分に位置するイメージ要素のための16ビットのセンサスベクトル発生器と、これら2台の16ビット発生器間の時間差を補償する遅延要素と、2つの個別の16ビット結果を組み合わせて32ビットセンサスベクトルを発生させる連結器とを含む。連結器は、単に連なることによって大きなバスを形成する一連のバスであり得る。連結器は特定の装置を必要としない。代わりに、融合して大きなバスラインを形成する数本のバスラインを表し得る。従って、例えば、一対の16ビット幅バスを互いに隣接させて配置し、大きな32ビットバスを形成する。
【0534】
以下の記述では、センサスベクトル発生器は、センサスウィンドウ内の中央の参照イメージ要素をセンサスウィンドウ内のこれを取り囲む他のイメージ要素と比較することによって、32ビットセンサスベクトルを発生させ得る。比較のために選択される特定のイメージ要素は図7に示すものである。図7では、最初の32ビットセンサスベクトルの発生における(x,y)は(5,5)である。しかし、以下の教示を考慮すれば、当業者であれば、センサスウィンドウ内の他のイメージ要素を比較のために選択するように、後述する回路を操作し得る。すなわち、センサスウィンドウ内の異なるポイント組を用いて32ビットセンサスベクトルを発生させることができる。
【0535】
センサスベクトル発生器は、イメージデータをライン1600を介して直列に受け取り、32ビットセンサスベクトルをライン1637に出力する。イメージデータは直列に入力されるが、センサスウィンドウの異なるライン上のこれらのイメージデータは並列に処理される。9×9のセンサスウィンドウでは、9本のライン上の選択イメージ要素は、センサスウィンドウがイメージを通って移動するとき、各中央イメージ要素に対する32ビットセンサスベクトルを発生させるように処理されなければならない。9本のラインすべてのイメージデータが16ビットセンサスベクトル発生器1611および1612で実質的に同時に処理されるのを確実にするために、適切な遅延要素1601〜1608が配備される。すなわち、各ライン(L1〜L9)のためのイメージデータが、これらの16ビットセンサスベクトル発生器1611および1612に実質的に並列に入力される。これらの9本のライン(L1〜L9)のためのイメージデータは並列に入力されるため、32ビットセンサスベクトルは、実質的に新しいピクセルのイメージデータがこの32ビットセンサスベクトル発生器に入る毎に発生され得る。そのイメージの特定のラインに対して最後のセンサスベクトルが発生された後は、IMAGEDATA INライン1600に沿って次のピクセルのイメージデータを受け取ることにより、ラインL1〜L9はライン2〜10の先頭からの最初のピクセルのイメージデータを含む結果となる。従って、これは、センサスウィンドウが次のラインの先頭にシフトしこれにより中央参照イメージ要素が変更することに対応する。
【0536】
このセンサスベクトルジェネレータは、8つの遅延要素1601〜1608を有する。各遅延要素は、入力データを、1本の走査線の長さ分である320時間単位だけ遅延させる。各遅延要素1601〜1608へのそれぞれの入力1614〜1621は、その前の遅延要素の出力からくる。従って、ライン1600からのイメージデータは、ライン1614を介して遅延要素1601に入る。遅延要素1601は、遅延されたイメージデータをライン1615上に出力して、遅延要素1602に送る。遅延要素1602は、遅延されたイメージデータをライン1616上に出力して、遅延要素1603に送る。遅延要素1603は、遅延されたイメージデータをライン1617上に出力して、遅延要素1604に送る。遅延要素1604は、遅延されたイメージデータを、ノード1634へのライン1627、ライン1618、およびライン1629上に出力する。以下、ノード1634について説明する。ライン1628および1618上のイメージデータは、遅延要素1605に入力される。遅延要素1605は、遅延されたイメージデータをライン1619上に出力して、遅延要素1606に送る。遅延要素1606は、遅延されたイメージデータを、ライン1620上に出力して、遅延要素1607に送る。遅延要素1607は、遅延されたイメージデータをライン1621上に出力して、遅延要素1608に送る。遅延要素1608は、イメージデータを、ライン1633上に出力して、16ビットセンサスベクトルジェネレータ1611に送る。
【0537】
入力されるイメージデータはまた、介在する遅延要素のないライン1600および1622を介して低部16ビットセンサスベクトルジェネレータ1612に入力される。16ビットセンサスベクトルジェネレータ1612へのこの入力は、センサスウィンドウのライン9上のイメージデータを表す。遅延要素1601〜1608の各々はまた、イメージデータを、それぞれの16ビットセンサスベクトルジェネレータ1611または1612に直接出力する。このように、遅延要素1601は、遅延されたイメージデータをライン1623上に出力して、16ビット低部センサスベクトルジェネレータ1612に送る。16ビットセンサスベクトルジェネレータ1612へのこの入力は、センサスウィンドウのライン8上のイメージデータを表す。遅延要素1602は、遅延されたイメージデータをライン1624上に出力して、16ビット低部センサスベクトルジェネレータ1612に送る。16ビットセンサスベクトルジェネレータ1612へのこの入力は、センサスウィンドウのライン7上のイメージデータを表す。遅延要素1603は、遅延されたイメージデータをライン1625上に出力して、16ビット低部センサスベクトルジェネレータ1612に出力する。16ビットセンサスベクトルジェネレータ1612へのこの入力は、センサスウィンドウのライン6上のイメージデータを表す。
【0538】
ライン5(L5)は、センサスウィンドウのラインであって、中心参照イメージ要素がこの9×9のセンサスウィンドウに配置されるラインを表す。尚、16ビットセンサスベクトルジェネレータ1611および1612はともに、センサスウィンドウのライン5上のイメージデータを処理する。16ビットセンサスベクトルジェネレータの各々は、中心参照イメージ要素の左側または右側のいずれかのイメージデータを扱う。センサスウィンドウの下半分については、遅延要素1604が、遅延されたデータをライン1626上に出力して、16ビット低部センサスベクトルジェネレータ1612に送る。センサスウィンドウの上半分については、遅延要素1604が、遅延されたデータをライン1627、1628および1629上に出力して、16ビット低部センサスベクトルジェネレータ1611に送る。16ビットセンサスベクトルジェネレータ1611へのこの入力は、センサスウィンドウのライン5上のイメージデータを表す。
【0539】
続けて上部16ビットセンサスベクトルジェネレータ1611への入力について、遅延要素1605は、遅延されたイメージデータをライン1630上に出力して、16ビット低部センサスベクトルジェネレータ1611に送る。16ビットセンサスベクトルジェネレータ1611へのこの入力は、センサスウィンドウのライン4上のイメージデータを表す。遅延要素1606は、遅延されたイメージデータをライン1631上に出力して、16ビット低部センサスベクトルジェネレータ1611に送る。16ビットセンサスベクトルジェネレータ1611へのこの入力は、センサスウィンドウのライン3上のイメージデータを表す。遅延要素1607は、遅延されたイメージデータをライン1632上に出力して、16ビット低部センサスベクトルジェネレータ1611に送る。16ビットセンサスベクトルジェネレータ1611へのこの入力は、センサスウィンドウのライン2上のイメージデータを表す。遅延要素1608は、遅延されたイメージデータをライン1633上に出力し、16ビット低部センサスベクトルジェネレータ1611に送る。16ビットセンサスベクトルジェネレータ1611へのこの入力は、センサスウィンドウのライン1上のイメージデータを表す。
【0540】
9番目のラインからのイメージデータのストリームがライン1600上に入るときに、16ビットセンサスベクトルジェネレータ1611への入力L1〜L5はそれぞれ、センサスウィンドウのライン1〜5からのイメージデータを表し、16ビットセンサスベクトルジェネレータ1612への入力L5〜L9はそれぞれ、センサスウィンドウのライン5〜9からのイメージデータを表す。16ビットセンサスベクトルジェネレータ1611は、中心参照イメージ要素と、センサスウィンドウの上半分(ライン1〜5)にある他の16個のイメージ要素との比較により、ライン1635上の出力で、16ビットのベクトルを発生する。同様に、16ビットセンサスベクトルジェネレータ1612は、中心参照イメージ要素と、センサスウィンドウの下半分(ライン5〜9)にある他の16個のイメージ要素との比較により、ライン1636上の出力で、16ビットのベクトルを発生する。ほとんどの実施形態では、ジェネレータ1611からの上位16ビットは、ジェネレータ1612からの下位16ビットと実質的に同時に発生される。
【0541】
他の実施形態では、ジェネレータ1611からの上位16ビットは、ジェネレータ1612からの下位16ビットの1時間単位前に発生される。このタイミング差を補償するために、ライン1635上にレジスタまたは遅延要素が設けられ得る。ライン1635上の上位16ビットおよびライン1636上の下位16ビットは、連結器1613で連結され、ライン1637上に32ビットセンサスベクトルが発生される。
【0542】
センサスウィンドウがラインの終わりに達し、移動しているセンサスウィンドウの各中央イメージ要素について32ビットセンサスベクトルが発生されるまで、ライン1600で入力されるイメージデータの次の組は、ライン10の初めからのイメージデータを表す。従って、この時点で、ラインL9はライン10のイメージデータを含み、ラインL8はライン9のイメージデータを有し、ラインL7はライン8のイメージデータを有し、ラインL6はライン7のイメージデータを有し、ラインL5はライン6のイメージデータを有し、ラインL4はライン5のイメージデータを有し、ラインL3はライン4のイメージデータを有し、ラインL2はライン3のイメージデータを有し、ラインL1はライン2のイメージデータを有する。従って、センサスウィンドウは、今、次のラインの行の初めに移動している。より多くのイメージデータが入力されると、センサスウィンドウはラインを下方に移動し、より多くのセンサスベクトルが発生される。このサイクルは、ユーザにより停止されるまで、または、それ以上のイメージデータがセンサスベクトルジェネレータに入らなくなるまで、繰り返される。
【0543】
1つの実施形態では、図48に示されるセンサスベクトルジェネレータは、2つのFPGAユニットにおいて実現される。一方のFPGAユニットは、ノード1634よりも上のイメージデータを処理するコンポーネントおよびラインにおいて上位16ビット(ライン1〜5)を発生する。他方のFPGAユニットは、ノード1634よりも下のイメージデータを処理するコンポーネントおよびラインにおいて下位16ビット(ライン5〜9)を発生する。実際には、ノード1634は、2つのFPGAユニット間の境界を表す。他の実施形態では、図48に示される32ビットセンサスベクトルジェネレータ全体は、1つのFPGAユニットにおいて実現される。言うまでもなく、ASICおよびカスタム集積回路の実現では、FPGAは使用されず、従って、ノード1634は、伝送ラインと単に一体であってもよい。
【0544】
通信パスにおける様々な遅延の結果として起こるタイミング差を補償するために、適切な遅延要素またはシフトレジスタが設けられ得る。これらのシフトレジスタの例示的な場所としては、ライン1635、1636および/または1627などがある。
【0545】
図49は、中心参照イメージ要素と、センサスウィンドウの実質的に上半分(ライン1〜5)にあるイメージ要素との比較結果を表す最下位16ビットについてのセンサスベクトルジェネレータ1611(図48参照)を示す。センサスベクトルジェネレータ1611(図48参照)は5つの入力(L1、L2、L3、L4およびL5)を有し、出力ライン1655で、32ビットセンサスベクトルの最下位16ビットを発生する。これらの16ビットは、中心参照イメージ要素と、センサスウィンドウの上半分にある他のイメージ要素との比較から得られる。特に、ライン1〜4のイメージ要素と、ライン5の、中心参照イメージ要素の右側の2つのイメージ要素とが比較のために使用される。
【0546】
16ビットセンサスベクトルジェネレータは、幾つかの遅延要素1657〜1661、比較器1662〜1666、および連結器1667を含む。遅延要素1657〜1661は、ライン1〜5のイメージ要素の所望の組み合わせが、センサス比較のために確実に選択されるようにする。比較器1662〜1666は、比較演算を行って、センサスベクトルについてのビットを発生する。これらの比較器はまた、比較的変動する数の遅延要素を組み込んで、ライン1〜5の特定の所望のイメージ要素がセンサス比較のために確実に選択されるようにする。連結器は、各ラインからの様々な出力センサスビットを組み合わせ、これらのビットを整理して、このセンサスウィンドウのライン1〜5について16ビットセンサスベクトルを発生する。
【0547】
各ラインからのイメージデータは、ライン1640〜1644を介してこの16ビットセンサスベクトルジェネレータに入る。従って、ライン1からのイメージデータは、ライン1640を介して遅延要素1657に入り、ライン2からのイメージデータは、ライン1641を介して遅延要素1658に入り、ライン3からのイメージデータは、ライン1642を介して遅延要素1659に入り、ライン4からのイメージデータは、ライン1643を介して遅延要素1660に入り、ライン5からのイメージデータは、ライン1644を介して遅延要素1661に入る。
【0548】
遅延要素1662〜1666は、比較器1662〜1666へのイメージデータ入力のタイミングを制御する。従って、遅延要素1657は、イメージデータをライン1645を介して比較器1662に出力し、遅延要素1658は、イメージデータをライン1646を介して比較器1663に出力し、遅延要素1659は、イメージデータをライン1647を介して比較器1664に出力し、遅延要素1660は、イメージデータをライン1648を介して比較器1665に出力し、遅延要素1661は、イメージデータをライン1649を介して比較器1666に出力する。比較器自体は、これらの比較器に既に入力されたイメージデータのうちの特定のイメージデータが、センサス比較のために選択され得るように、独自の遅延要素の組を組み込む。1つの実施形態では、遅延要素は、選択されたクロックエッジで入力データを出力するレジスタまたはDフリップフロップである。
【0549】
遅延要素1657〜1661の各々における遅延量は、他のラインの他のイメージ要素に関する、比較器1662〜1666へのイメージデータ入力が制御されるように、慎重に選択される。この特定の実施形態では、センサス比較のために選択された特定のイメージデータが、最終的に図7のイメージデータと一致するように、図49に示される遅延が選択されている。この特定の16ビットセンサスベクトルジェネレータは、図7のポイント1〜14、17および18を選択する。従って、遅延要素1657は2時間単位の遅延を与え、遅延要素1658は3時間単位の遅延を与え、遅延要素1659は2時間単位の遅延を与え、遅延要素1660は3時間単位の遅延を与え、遅延要素1661は1時間単位の遅延を与える。1つの実施形態では、1時間単位は1クロックサイクルであり、遅延要素は、クロックの立ち上がりエッジごとに変わる。他の実施形態では、遅延要素は、クロックの立ち下がりエッジごとにトリガされる。
【0550】
比較器1662〜1666は、センサスウィンドウのライン1〜5の選択されたイメージ要素を、センサスウィンドウの中心参照イメージ要素と比較する。センサスウィンドウの各ラインについて選択されるイメージ要素数に依存して、各比較器1662〜1666において、異なる数の個々の比較器ユニットが実現される。従って、センサスウィンドウのライン1で2つのイメージ要素が選択されるため、比較器1662は2つの比較器ユニットを含み、センサスウィンドウのライン2で4つのイメージ要素が選択されるため、比較器1663は4つの比較器ユニットを含み、センサスウィンドウのライン3で4つのイメージ要素が選択されるため、比較器1664は4つの比較器ユニットを含み、センサスウィンドウのライン4で4つのイメージ要素が選択されるため、比較器1665は4つの比較器ユニットを含み、センサスウィンドウのライン5で2つのイメージ要素が選択されるため、比較器1666は2つの比較器ユニットを含む。
【0551】
中心参照イメージ要素との比較は、センサスウィンドウの選択されたイメージ要素の各々について行われる。各センサスウィンドウの中心参照イメージ要素は、比較器1666の出力1650に与えられ、比較器1666はまた、センサスウィンドウの、中心参照イメージ要素が配置されるライン5を処理する。この出力は、必要な比較が行われ得るように、比較器1662〜1666の各々への入力の別の組にフィードバックされる。イメージデータの新しい組が比較器1662〜1665に入ると、センサスウィンドウは、新しい場所にシフトし、従って、新しい中心参照イメージ要素が、比較のために使用される。
【0552】
比較結果は、ライン1651〜1655上に出力される。連結器1667は、ライン1656での出力がLSB16ビットセンサスベクトルを含むように、これらのビットを配列する。従って、完全な32ビットセンサスベクトルの半分が発生されている。
【0553】
図50は、中心参照イメージ要素と、センサスウィンドウの実質的に下半分(ライン5〜9)にあるイメージ要素との比較結果を表す最上位16ビットについてのセンサスベクトルジェネレータ1612(図48参照)を示す。センサスベクトルジェネレータ1612(図48参照)は5つの入力(L5、L6、L7、L8およびL9)を有し、出力ライン1698で、32ビットセンサスベクトルの最上位16ビットを発生する。これらの16ビットは、中心参照イメージ要素と、センサスウィンドウの下半分にある他のイメージ要素との比較から得られる。特に、ライン6〜9のイメージ要素と、ライン5の、中心参照イメージ要素の左側の2つのイメージ要素とが比較のために使用される。
【0554】
16ビットセンサスベクトルジェネレータは、幾つかの遅延要素1670〜1675、比較器1676〜1680、および連結器1681を含む。遅延要素1670〜1675は、ライン5〜9のイメージ要素の所望の組み合わせが、センサス比較のために確実に選択されるようにする。比較器1676〜1680は、比較演算を行って、センサスベクトルについてのMSBビットを発生する。これらの比較器はまた、比較的変動する数の遅延要素を組み込んで、ライン5〜9の特定の所望のイメージ要素がセンサス比較のために確実に選択されるようにする。連結器1681は、各ラインからの様々な出力センサスビットを組み合わせ、これらのビットを整理して、このセンサスウィンドウのライン5〜9について16ビットセンサスベクトルを発生する。
【0555】
各ラインからのイメージデータは、ライン1682〜1686を介してこの16ビットセンサスベクトルジェネレータに入る。従って、ライン5からのイメージデータは、ライン1682を介して遅延要素1670に入り、ライン6からのイメージデータは、ライン1683を介して遅延要素1672に入り、ライン7からのイメージデータは、ライン1684を介して遅延要素1673に入り、ライン8からのイメージデータは、ライン1685を介して遅延要素1674に入り、ライン9からのイメージデータは、ライン1686を介して遅延要素1675に入る。
【0556】
遅延要素1670の出力には、別の遅延要素1671が設けられる。このライン5には6つの遅延要素が必要とされるが、遅延要素1970の出力のイメージデータは、比較において中心参照イメージ要素として使用するために、ライン1692を介して抽出されなければならない。
【0557】
遅延要素1670〜1675は、比較器1676〜1680へのイメージデータ入力のタイミングを制御する。従って、遅延要素1670および1671は、イメージデータをライン1687を介して比較器1676に出力し、遅延要素1672は、イメージデータをライン1688を介して比較器1677に出力し、遅延要素1673は、イメージデータをライン1689を介して比較器1678に出力し、遅延要素1674は、イメージデータをライン1690を介して比較器1679に出力し、遅延要素1675は、イメージデータをライン1691を介して比較器1680に出力する。比較器自体は、これらの比較器に既に入力されたイメージデータのうちの特定のイメージデータが、センサス比較のために選択され得るように、独自の遅延要素の組を組み込む。1つの実施形態では、遅延要素は、選択されたクロックエッジで入力データを出力するレジスタまたはDフリップフロップである。
【0558】
遅延要素1670〜1675の各々における遅延量は、他のラインの他のイメージ要素に関する、比較器1676〜1680へのイメージデータ入力が制御されるように、慎重に選択される。この特定の実施形態では、センサス比較のために選択された特定のイメージデータが、最終的に図7のイメージデータと一致するように、図50に示される遅延が選択されている。この特定の16ビットセンサスベクトルジェネレータは、図7のポイント15、16および19〜32を選択する。従って、遅延要素1670は5時間単位の遅延を与え、遅延要素1671は1時間単位の遅延を与え、遅延要素1672は2時間単位の遅延を与え、遅延要素1673は、1時間単位の遅延を与え、遅延要素1674は、2時間単位の遅延を与え、遅延要素1675は、5時間単位の遅延を与える。
【0559】
比較器1676〜1680は、センサスウィンドウのライン5〜9の選択されたイメージ要素を、センサスウィンドウの中心参照イメージ要素と比較する。センサスウィンドウの各ラインについて選択されるイメージ要素数に依存して、各比較器1676〜1680において、異なる数の個々の比較器ユニットが実現される。従って、センサスウィンドウのライン5で2つのイメージ要素が選択されるため、比較器1676は2つの比較器ユニットを含み、センサスウィンドウのライン6で4つのイメージ要素が選択されるため、比較器1677は4つの比較器ユニットを含み、センサスウィンドウのライン7で4つのイメージ要素が選択されるため、比較器1678は4つの比較器ユニットを含み、センサスウィンドウのライン8で4つのイメージ要素が選択されるため、比較器1679は4つの比較器ユニットを含み、センサスウィンドウのライン9で2つのイメージ要素が選択されるため、比較器1680は2つの比較器ユニットを含む。
【0560】
中心参照イメージ要素との比較は、センサスウィンドウの選択されたイメージ要素の各々について行われる。各センサスウィンドウの中心参照イメージ要素は、センサスウィンドウのライン5上の遅延要素1970の出力1692に与えられる。この出力は、必要な比較が行われ得るように、比較器1676〜1680の各々への入力の別の組に与えられる。イメージデータの新しい組が比較器1682〜1686に入ると、センサスウィンドウは、新しい場所にシフトし、従って、新しい中心参照イメージ要素が、比較のために使用される。
【0561】
比較結果は、ライン1693〜1697上に出力される。連結器1681は、ライン1698での出力がMSB16ビットセンサスベクトルを含むように、これらのビットを配列する。従って、完全な32ビットセンサスベクトルの半分が発生されている。
【0562】
図51は、センサスウィンドウの各ラインについて32ビットベクトルを計算するために用いられる比較器1662〜1666(図49参照)および1676〜1680(図50参照)のより詳細な図を示す。イメージデータはライン1720で入力され、ライン1730〜1733で入力される中心参照イメージ要素との比較が行われ、センサス比較結果は、各比較器ユニット1700〜1702の出力でライン1740〜1743に与えられる。未処理のイメージデータもまた、比較器ユニットを介して出力1726に送られる。
【0563】
各比較器は、比較器ユニット1、比較器ユニット2および比較器ユニットNのための多数の比較器ユニット1700、1701および1702をそれぞれ含む。ここで、Nは、比較のために使用されるライン中のイメージ要素数である。従って、ライン1〜9では、センサス比較のためにイメージ要素は2つしか選択されないため、N=2であり、2つの比較器ユニット1700および1701だけが設けられる。ライン3では、センサス比較のために4つのイメージ要素が選択されるため、N=4であり、4つの比較器ユニットだけが設けられる。
【0564】
各ラインの特定の所望のイメージ要素が、各センサスウィンドウについてのセンサス比較のために選択されることを確実にするために、遅延要素1710および1711が設けられる。これらの遅延要素は、レジスタまたはDフリップフロップであり得る。1つの実施形態では、各遅延ユニットにおける遅延量は、1時間単位である。他の実施形態では、比較のために望ましい特定のイメージデータに依存して、他の時間単位の遅延を組み込んでもよい。この実施形態では、比較ユニット1700〜1702のそれぞれの間に遅延要素が設けられる。他の実施形態では、幾つかの比較ユニット1700〜1702の間には幾つかの遅延要素が存在しなくてもよい。これらの遅延要素および比較ユニットは、ライン1721〜1725を介して互いに結合される。
【0565】
図49のライン5の比較器1666について、図51の比較器回路図では、正し中心参照イメージ要素が、比較器1662〜1666の各々の入力にフィードバックされるように、出力1726に別の遅延要素が設けられている。
【0566】
図51のこの比較器回路の動作を説明するために、9×9のセンサスウィンドウであり、第1の32ビットセンサスベクトルが今発生されていると仮定する。中心参照点は(5,5)の位置にある。即ち、中心点は、列5、行/ライン5に位置する。イメージ要素5に関連するイメージデータは、比較器ユニット1700〜1702の各々へのライン1730〜1733に与えられる。従って、ライン2では、イメージ要素7に関連するイメージデータは、比較器ユニット1700への入力1720に与えられ、イメージ要素5に関連するイメージデータは、比較器ユニット1701への入力1722に与えられ、イメージ要素3に関連するイメージデータは、その次の比較器ユニット(図示せず)への入力に与えられ、最後に、イメージ要素1に関連するイメージデータが、比較器ユニット1702への入力1725に与えられる。中心参照イメージデータが、入力イメージデータ未満である場合、比較結果ライン1740〜1743に論理「1」が出力される。そうでなければ、これらの比較結果ラインに論理「0」が与えられる。これらの比較結果データは、連結され、32ビットセンサスベクトルが発生される。
【0567】
D.相関合計ジェネレータ
図52および図54に示されるように、本発明の1つの実施形態は、完全にパイプライン式で、パラレルで、シストリックな態様で実現され得る。図52に示される特定の実施形態は、標準の形態をとる。図52は、相関計算の24ステージを示す。視差が24個であるため、この実施形態では24のステージが設けられる。しかし、他の実施形態では、ステージの数は、視差の数と一致していなくてもよい。
【0568】
図46および図47の計算要素、特に、列BおよびDの計算要素が、これらの24のステージにおいて計算を行う。典型的には、列BおよびDの8つの計算要素の各々は、これらのステージのうちの3つのステージでの計算を行う。本発明のこの実施形態は、センサス変換ユニット、相関ユニットおよび遅延要素を用いて、各ピクセルのサーチウィンドウ内の一方のイメージの各ピクセルのセンサスベクトルを、他方のイメージの各ピクセルのセンサスベクトルと比較する。即ち、一方のイメージのピクセルについてのサーチウィンドウは、許容可能な視差の各々についての他方のイメージのシフトされたピクセルを含む。24個の視差の場合、サーチウィンドウ内の一方のイメージのピクセルと、他方のイメージのピクセルとの間の最も遠いピクセル変位は、23のピクセル変位である。最終的には、この実施形態は、比較から得られた最も小さい合計ハミング距離決定値を表すminスコアと、この最も小さい合計ハミング距離決定値に関連する視差の値を表すmin指標とを出力する。
【0569】
左側のカメラからのイメージデータを、基準とする。左右のカメラからのピクセルがイメージ処理システムに入ると、このシステムは、データを2つの並列なセンサス変換ユニット1400および1401に与える。センサス変換ユニット1400は、左側のピクセルについてのセンサスベクトルを発生し、センサス変換ユニット1401は、右側のピクセルについてのセンサスベクトルを発生する。実際に、センサス変換ユニット1400および1401は、左右のイメージの対応する場所の、ピクセルデータの各対についてのセンサスベクトルストリームを発生する。第1のステージで、センサスベクトルは、左側のピクセルについてはライン1410および1420を介して、右側のピクセルについてはライン1411および1421を介して、相関ユニット1440に送られる。相関ユニット1440は、これらの2つのセンサスベクトルの視差0の相関を表すこれらの2つのベクトル間のハミング距離を計算する。相関ユニット1440はまた、ハミング距離を発生して、これをライン1430に出力し、最小の合計ハミング距離についての視差の数をライン1431に出力し、この時点までに行われたすべての比較についてのそれぞれの関連する視差の数を出力する。この時点まで、minスコアは、視差が0の2つのベクトルのハミング距離である。左側のピクセルについての同じセンサス変換ベクトルは、パイプを下方に移動して他の相関ユニットに達すると、そのサーチウィンドウの、この左側のピクセルのDの視差を表す他のすべてのセンサスベクトルと比較される。1つの実施形態では、24個の視差が使用されるため、右側のイメージの各ピクセルについて比較が24回行われなければならない。他の実施形態では、16個の視差が使用される。しかし、視差の数はどんな数であってもよく、ユーザにより選択可能である。
【0570】
この実施形態では、各相関ユニットはまた、最小の合計ハミング距離(MIN SCORE)を運ぶデータパスに1遅延要素(z-1)を含み、それに関連する視差の数(MININDEX)を運ぶデータパスに別の遅延要素(z-1)を含む。別の実施形態では、遅延要素(z-1)は、相関ユニットの外部にあり、MINSCOREのデータパスおよびMININDEXのデータパスの相関ユニットの間に配置される。従って、2クロックサイクルごとに、左側の同じピクセル(そのセンサスベクトルを介する)が、右側の異なるピクセル(そのセンサスベクトルを介する)と比較され、最小の合計ハミング距離が更新され、最小の合計ハミング距離に関連する視差の数も更新される。これらの動作は、左右のセンサスベクトルのストリームが相関ユニットおよび遅延要素に供給されると、パイプライン式に行われる。左右のセンサスベクトルの1つまたは2つの遅延はそれぞれ、各ピクセルのそれぞれのサーチウィンドウでそのような比較が行われることを可能にする。最後の相関ユニット1443の終わりでは、左側のピクセルのサーチウィンドウの様々な右側のピクセルに必要とされるすべての比較が行われており、MINSCOREおよびMININDEXが出力される。
【0571】
1つの実施形態では、出力は、すべての関連する右−左の比較についてのすべての最適な視差を追跡する極値インデックスアレイに格納される。この極値インデックスアレイは、後に、左−右の一貫性検査、モードフィルタリング、および様々なアプリケーションのための視差イメージの発生のために使用され得る。
【0572】
別の実施形態では、右−左および左−右の比較は、図52に示されるものと同じデータパスを使用してパラレルに同時に行われ、最後の相関ユニット1443の出力は、左右のピクセルの各々について選択された最適な視差をキューイングバッファに格納するため、一貫性検査は、データが処理されて、パラレルパイプライン式データパスを通過するときに、リアルタイムで行われ得る。これについては、以下に図53、図54、図55および図57を参照して説明する。この実施形態では、すべての左−右の一貫性検査結果のそのように格納は必要でない。但し、何らかのアプリケーションまたは何らかの履歴記録が望まれるため、結果が、別のプロセッサに送られている場合は除く。
【0573】
1つの実施形態では、Xilinx FPGAの構成論理ブロックなどの論理ブロックが、論理機能を実現する。当業者に知られているように、これらの論理ブロックおよび論理機能は、別の方法でも表され得る。より低いレベルでは、遅延要素は、データのビットごとに、レジスタまたはDフリップフロップによって表され得る。1つのクロッキング信号が使用される場合、2で割る適切な除算回路が、1時間単位の遅延要素(即ち、視差がシフトされたピクセルについてのセンサスベクトルによって使用されるパスに沿った遅延要素)へのクロック入力で実現され得、そのような除算回路は、2時間単位の遅延要素へのクロック入力では使用されず、そのため、適切なシフトが起こり得、各ステージで正しいデータ対が比較される。あるいは、適切な乗算回路が、2時間単位の遅延要素へのクロック入力で使用され得るが、そのような乗算回路は、1時間単位の遅延要素へのクロック入力には使用されない。これらのクロック信号変更回路は、Dフリップフロップへの入力でのデータが、比較演算のための適切な時間に、出力にシフトされることを確実にする。
【0574】
相関要素は、異なるビット位置を決定するための排他的OR論理演算、異なるビットを加えて、ハミング距離ビットを計算し、これをnビット(例えば、n=5)の数で表すためのビットカウンタ、ボックスフィルタリング動作のための幾つかの加算器、ならびに、現在のminスコアの値を新しく発生されたハミング距離と比較して、2つの値のうちの小さい方を決定するための幾つかの比較器およびマルチプレクサによって表され得る。あるいは、ビット数をn=5からn=3またはn=4に減らしてハミング距離を表すために、飽和閾値デバイスが用いられ得る。入力データについて相関演算が2時間単位ごとに行われることを確実にして、適切なピクセルのセンサスベクトルが比較のためにシフトされるようにするために、適切なクロッキング回路が用いられ得る。別の実施形態では、左イメージセンサスベクトルと右イメージセンサスベクトルとの間の適切な相対遅延を確実にするためにそのようなクロッキング回路は必要でなく、その代わりに、右イメージデータパスに遅延要素を2つ使用し、各相関ユニット(視差0のユニットを表す第1の相関ユニット1440を除く)への入力での左イメージデータパスに遅延要素を1つだけ使用する。
【0575】
図53(A)および図53(B)は、2つのカメラの左右のイメージについての左右のセンサスベクトルを示す。これらの2つのカメラは、互いに間隔があけられているが、同じ光景を見てキャプチャーしている。これらの図は、本発明の1つの実施形態のパラレルパイプライン式データフローを説明するために使用される。図53(A)は、左側のセンサスベクトルを示す。各ベクトルは、数字で表される。教授の目的のために、走査線には、15個の左側のセンサスベクトル1〜15しか与えていない。同様に、図53(B)は、右側のセンサスベクトル1’〜15’を示す。この図示およびそれに関する説明では、プライム符号(’)を付した数字は右側のイメージを表し、プライム符号を付していない数字は左側のイメージを表す。ここでも、教授の目的のために、図54および図55に関する説明では、サーチウィンドウの長さが5の視差だけである(D=5)と仮定している。即ち、一方のイメージ中の関係するセンサスベクトルの各々が、他方のイメージの5つの他のセンサスベクトル(視差d=0、1、2、3および4)とのみ比較されると仮定している。
【0576】
図54は、本発明の1つの実施形態のパラレルパイプライン式相関アーキテクチャのブロック図を示す。データを受け取り、他のデータを出力している相関ユニット1450、1490、1491、1492、および(サーチウィンドウの大きさ、即ち、視差に依存して)その他の相関ユニットが示されている。図53(A)に示される15個の左側のセンサスベクトルと、図53(B)に示される15個の右側のセンサスベクトルとは、これらの相関ユニットに送られる。視差D=5である場合、5つの相関ユニットが使用される。従って、視差D−1(d=D−1)についての相関演算を行う相関ユニット1492まで、相関ユニット1450は、視差0(d=0)についての相関演算を行い、相関ユニット1490は、視差1(d=1)についての相関演算を行い、相関ユニット1491は、視差2(d=2)についての相関演算を行う、などとなる。D=5については、相関ユニット1492が、視差4(d=4)についての相関演算を行う。
【0577】
各相関ユニットへの入力は、左センサスベクトル(L)、右センサスベクトル(R)、左−右の最小合計ハミング距離スコア(LRSC)、左−右の最小合計ハミング距離に関連する左−右の視差の数または指標(LRI)、右−左の最小合計ハミング距離スコア(RLSC)、および右−左の最小合計ハミング距離に関連する右−左の視差の数または指標(RLI)である。相関ユニットでの処理前のLRSC、LRI、RLSCおよびRLIの初期値は、これらの値の可能な最大値よりも高い、非常に高い値に設定することができる。このようにして、最初の相関ユニットからの計算結果は、最初の相関比較後に最適値として選択される。この最適値は、その後、パイプラインの下方でより最適な値が決定されると、他の相関ユニットにより更新され得る。
【0578】
相関ユニット間には、幾つかの遅延要素が設けられる。これらの遅延要素は、典型的には、Dフリップフロップである。左センサスベクトル(L)、左−右の指標(LRI)およびスコア(LRSC)についてのそれぞれのデータパス間には、1遅延要素が設けられる。右センサスベクトル(R)、右−左の指標(RLI)およびスコア(RLSC)についてのそれぞれのデータパス間には、2遅延要素が設けられる。従って、出力1451は1遅延要素1475に結合され、出力1452は2遅延要素1476に結合され、出力1453は1遅延要素1477に結合され、出力1454は1遅延要素1478に結合され、出力1455は2遅延要素1479に結合され、出力1456は2遅延要素1480に結合される。これらの遅延要素の出力は、次の相関ユニット1490についてのそれぞれのL、R、LRSC、LRI、RLSCおよびRLIへの入力に結合される。同様に、出力1457は1遅延要素1481に結合され、出力1458は2遅延要素1482に結合され、出力1459は1遅延要素1483に結合され、出力1460は1遅延要素1484に結合され、出力1461は2遅延要素1485に結合され、出力1462は2遅延要素1486に結合される。これらの遅延要素の出力は、次の相関ユニット1491についてのそれぞれのL、R、LRSC、LRI、RLSCおよびRLIへの入力に結合される。これと同じ遅延要素構成が、残りの相関ユニットの相関ユニット間に使用される。最後の出力1469、1470、1471、1472、1473および1474は、相関ユニット1492の出力に示されている。
【0579】
図55は、本発明の1つの実施形態のパイプラインおよびパラレル動作を示す。この図は、視差D=5のときに、左右のセンサスベクトルが、いつどのように相関ユニットを通って進んでいくかを示す疑似タイミング図を示す。ここに示されるように、水平方向の「軸」は時間であり、垂直方向の「軸」は相関ユニットである。従って、この図は、任意の所定の瞬間に、各相関ユニットにおいて、一方のイメージのどのセンサスベクトルが、他方のイメージのそのサーチウィンドウ内のセンサスベクトルと比較されるかを示す。図53も参照して、この実施例では、走査線について15個の左センサスベクトルと、15個の右センサスベクトルとが使用される。従って、左センサスベクトル5〜15および右センサスベクトル1’〜11’だけが、それぞれのサーチウィンドウの、視差だけシフトされたセンサスベクトルを有する。従って、例えば、左センサスベクトル5は、相関計算のために、そのサーチウィンドウにおいて、右センサスベクトル1’、2’、3’、4’および5’を有する。左センサスベクトル4は、そのサーチウィンドウにおいて1’、2’、3’および4’だけを有するが、これは、5つの視差に対する完全な組ではないため、左センサスベクトル4は、左−右の比較については無視される。同様に、右センサスベクトル1’は、相関計算のために、そのサーチウィンドウにおいて、1、2、3、4および5を有する。右センサスベクトル12’は、そのサーチウィンドウにおいて、12、13、14および15しか持たず、これは、5つの視差に対する完全な組ではないため、右センサスベクトル12’は、右−左の比較については無視される。以下の説明でも、図54が参照される。
【0580】
図55の時間t=1で、左センサスベクトル1(Lの入力)および右センサスベクトル1’(Rの入力)は、視差0の相関ユニット(即ち、図54の相関ユニット1450)で互いに比較される。比較に加えて、飽和閾値、周縁状態識別、およびボックスフィルタリング(以下に説明する)が行われる。この時点で、1−1’について計算されたハミング合計が、最適であると考えられる。これが、それまでに行われた唯一の比較であるからである。パイプの下方の他の相関ユニットは、センサスベクトルデータストリームの前の組(例えば、前の走査線)からのセンサスベクトルを含むか、または、何も含まない。従って、LRSCは、1−1’についてのハミング合計であり、LRIは0であり、RLSCは、1−1’についてのハミング合計であり、RLIは0である。
【0581】
図55の時間t=2で、左センサスベクトル1は、左−右の最小のスコアおよび指標(LRSC、LRI)とともに、次の相関ユニット(d=1)に移動しており、右センサスベクトル1’は、最小のスコアおよび指標(RLSC、RLI)とともに、相関ユニット1450(視差0)と相関ユニット1490(視差1)との間の2遅延要素1476にある。相関ユニット1490は、左センサスベクトル1だけを含み、右センサスベクトルを含まないため、相関ユニット1490では、使用できる相関演算は行われない。同様に、左センサスベクトル1は、そのサーチウィンドウに、使用できる右センサスベクトルを持たないため、左−右の指標およびスコアは使用できない。今、相関ユニット1450は、左右のセンサスベクトルの次の対2−2’を含んでいる。相関ユニット1450のセンサスベクトルのこの新しい対について、相関演算が行われる。
【0582】
図55の時間t=3で、左センサスベクトル2は、相関ユニット1490(視差1)に移動している。前に2遅延要素1476にあった右センサスベクトル1’もまた、これと同じ相関ユニットに移動している。この2遅延要素1476にある右−左の最小のスコアおよび指標(RLSC、RLI)もまた、これと同じ相関ユニットに移動している。左センサスベクトル2と右センサスベクトル1’との間の相関演算が行われる。尚、この時点で、右センサスベクトル1’は、相関ユニット1450(時間0)および相関ユニット1490(現在の時間3)で、左センサスベクトル1および2と比較されている。従って、そのサーチウィンドウにおける5つのベクトルのうちの2つが処理されている。新しく計算された相関結果は、前に計算された右−左の最小のスコアおよび指標(RLSC、RLI)と比較され、新しく計算された相関結果が前に計算された相関結果よりも小さければ、更新される。左センサスベクトル3はまた、相関ユニット1450で右センサスベクトル3’と比較される。
【0583】
図55の時間4で、左センサスベクトル4は、相関ユニット1450で、右センサスベクトル4’と比較される。左センサスベクトル3はまた、相関ユニット1490で、右センサスベクトル2’と比較される。右センサスベクトル1’は、最小のスコアおよび指標(RLSC、RLI)とともに、2遅延要素1486に移動している。
【0584】
図55の時間5で、左センサスベクトル3は、相関ユニット1491(視差2)に移動している。前に2遅延要素1486にあった右センサスベクトル1’もまた、これと同じ相関ユニットに移動している。この2遅延要素1486にある右−左の最小のスコアおよび指標(RLSC、RLI)もまた、これと同じ相関ユニットに移動している。左センサスベクトル3と右センサスベクトル1’との間の相関演算が行われる。尚、この時点で、右センサスベクトル1’は、相関ユニット1450(時間0)、相関ユニット1490(時間3)、および相関ユニット1491(現在の時間5)で、左センサスベクトル1、2および3と比較されている。従って、そのサーチウィンドウにおける5つのベクトルのうちの3つが処理されている。新しく計算された相関結果は、前に計算された右−左の最小のスコアおよび指標(RLSC、RLI)と比較され、新しく計算された相関結果が前に計算された相関結果よりも小さければ、更新される。左センサスベクトル5はまた、相関ユニット1450で右センサスベクトル5’と比較され、左センサスベクトル4は、相関ユニット1490で右センサスベクトル3’と比較される。
【0585】
ここで、図55の時間t=5では、そのサーチウィンドウの左センサスベクトルと右センサスベクトルとの最初の使用できる比較が行われている。ここで、左センサスベクトル5は、そのサーチウィンドウの視差0のセンサスベクトルである右センサスベクトル5’と比較されている。パイプラインの下方に移動して各相関ユニットにより更新される右センサスベクトルと右−左の最小のスコアおよび指標(RLSC、RLI)と同様に、左センサスベクトル5もまた、左−右の指標(LRI)およびスコア(LRSC)とともにパイプの下方に移動し、そのサーチウィンドウの各右センサスベクトルで更新される。右センサスベクトルとは異なり、左センサスベクトルについての相関および更新は、各時間で起こる。なぜなら、これらのベクトルおよびそれらに対応する左−右のデータ(LRSC、LRI)が、1遅延要素だけを通って下方に移動しており、右センサスベクトルおよびそれらに対応する右−左のデータ(RLSC、RLI)が、2遅延要素を通ってデータパスを下方に移動しているからである。
【0586】
尚、図55の時間t=2およびt=4では、右センサスベクトル2’は、相関ユニット1450(視差0)および1490(視差1)で、左センサスベクトル2および3と比較されている。これらの左センサスベクトル2および3は、右センサスベクトル2’のサーチウィンドウの5つの左センサスベクトルのうちの2つである。右センサスベクトル2’についてのこれらの相関演算は、1’についての相関演算と同時に行われている。右−左の最小のスコアおよび指標(RLSC、RLI)はまた、右センサスベクトル2’とともに、右センサスベクトル1’のパイプラインから遅延されたパイプラインを下方に移動する。
【0587】
同様に、図55の時間t=3およびt=5では、右センサスベクトル3’は、相関ユニット1450(視差0)および1490(視差1)で、左センサスベクトル3および4と比較されている。これらの左センサスベクトル3および4は、右センサスベクトル3’のサーチウィンドウの5つの左センサスベクトルのうちの2つである。右センサスベクトル3’についてのこれらの相関演算は、1’および2’についての相関演算と同時に行われている。右−左の最小のスコアおよび指標(RLSC、RLI)はまた、右センサスベクトル3’とともに、右センサスベクトル1’および2’のパイプラインから遅延されたパイプラインを下方に移動する。
【0588】
これらのパラレルパイプライン式相関演算は、入力LおよびRから入るセンサスベクトルのストリームに対して行われる。相関演算は、図55に示されるように様々な時間に様々な相関ユニットで行われる。視差D=5のこの走査線で、左右のイメージの15個のセンサスベクトルしか比較されないこの特定の実施例では、t=1からt=19である。
【0589】
図55の時間t=9で始まると、右センサスベクトルと、そのサーチウィンドウの左センサスベクトルの各々とについて、相関結果の完全な組が利用可能である。従って、右センサスベクトル1’は、以前の相関ユニットで左センサスベクトル1、2、3および4と比較されており、現在の相関ユニットで左センサスベクトル5と比較されている。相関ユニット1492の出力は、左センサスベクトル(L)、右センサスベクトル(R)、左−右の最小合計ハミング距離スコア(LRSC)、左−右の最小合計ハミング距離に関連する左−右の視差の数または指標(LRI)、右−左の最小合計ハミング距離スコア(RLSC)、および右−左の最小合計ハミング距離に関連する右−左の視差の数または指標(RLI)である。この時点から先では、最適な左−右および右−左の指標(視差)が出力され、キューイングバッファに格納される。キューイングバッファは、左−右の一貫性検査のために使用される
以下、左−右の一貫性検査のためのキューイングバッファについて図56を参照して説明する。この最後の相関ユニット1492の出力の、左−右の最小合計ハミング距離指標(LRI)および右−左の最小合計ハミング距離指標(RLI)は、2つのキューイングバッファに格納される。これらの2つのキューイングバッファのうちの一方は、左−右の指標(LRI)用であり、他方は、右−左の指標(RLI)用である。このキューイングバッファの1つの実施形態では、格納場所を指定するためにポインタが用いられる。別の実施形態では、キューイングバッファは、ファーストインファーストアウト(FIFO)バッファであり、格納されているデータは、スタックの頂部に入れられ、頂部に新しいデータが入ると、スタックの底部に向かって下方向にシフトされる。1つの実施形態では、各バッファのサイズは、視差の高さ(D)であり、視差が5である(D=5)場合、5つのバッファ場所が与えられる。別の実施形態では、キューイングバッファのサイズは、視差Dの2倍であり、D=5の場合、キューイングバッファは10の記憶場所を有する。
【0590】
図55の時間t=9で、左センサスバッファ5および右センサスバッファ1’のそれぞれの左−右および右−左の最適な視差(LRI、RLI)は、相関ユニット1492から出力され、図56(A)に示されるようにそれぞれのキューイングバッファに入れられる。時間t=10で、左センサスバッファ6および右センサスバッファ2’のそれぞれの左−右および右−左の最適な視差(LRI、RLI)は、相関ユニット1492から出力され、キューイングバッファの頂部に入れられ、以前に格納された視差を押し下げる。これは、キューイングバッファ内のすべての記憶場所が図56(A)に示されるように満たされるまで続く。これは、図55の時間t=13に対応する。図において、記憶場所は、2つのバッファ間の数字1〜5として与えられる。従って、最も古い指標LRI(5)およびRLI(1’)は、記憶場所1にあり、最も新しい指標LRI(9)およびRLI(5’)は、記憶場所5にある。
【0591】
一旦満たされると、左センサスベクトル5の最も古い左−右の指標LRI(5)が、左センサスベクトル5によって選択される最適な視差に対応する右センサスベクトルの右−左の指標と比較される。即ち、以下の関係、LRI(x)=RLI(D−LRI(x))が検査される。ここで、xは、記憶場所1のセンサスベクトルであり、LRI(x)は、そのセンサスベクトルxがパイプラインを進んで最終的に相関ユニット1492の出力に達したときにセンサスベクトルxによって選択される指標または最適な視差である。Dは、サーチウィンドウにおける視差の最大数を表し、RLI(x)は、記憶場所yのセンサスベクトルによって選択される指標または最適な視差を表す。
【0592】
例えば、左センサスベクトル5によってそのサーチウィンドウについて選択された最適な視差が2であると仮定する。これは、右センサスベクトル3’に対応する。従って、x=5、LRI(x)=2、およびD−LRI(x)=3である。記憶場所3(即ち、D−LRI(x)=3)の右センサスベクトルは、右センサスベクトル3’である。RLI(3’)=2であれば、LRI(x)=RLI(y)であるため、一致が存在し、左−右の一貫性検査で、最適な視差の選択が確認されている。一方、RLI(3’)≠2であれば、LRI(x)≠RLI(y)であるため、一致が存在せず、左−右の一貫性検査で、エラーが検出されている。不一致である場合、この右センサスベクトルの視差に、ダミー値(例えば、−1)が割り当てられ得る。
【0593】
あるいは、視差LRI(x)−(RLI(D−LRI(x)))の絶対値が検査され、この結果が1以下であるかどうか判断される。1以下であれば、選択された最適な個別の視差は、左−右の一貫性検査に合格し、この視差は保持される。この交互の関係を与えるために、何らかの「スロップ(slop)」または公差が設けられる。即ち、左−右および右−左の視差が1だけ異なっていても、とにかく、選択された視差は許容可能となる。
【0594】
記憶場所1にあるこのデータ対についてこの左−右の一貫性検査が終了すると、新しいデータ対が、キューイングバッファの頂部に入れられ得、これにより、古いデータ対(即ち、LRI(5)およびRLI(1’))がキューイングバッファから押し出される。この時点でのキューイングバッファの内容が、図56(B)に示される。次に、記憶場所1にあるLRI(x)およびRLI(x)の次の対が、左−右の一貫性について検査される。今、この対は、LRI(6)およびRLI(2’)である。このデータ対が検査された後、記憶場所1にあるこの対は、キューイングバッファ外に出され、新しい対が、キューイングバッファの頂部に入れられる。これは、図56(C)に示される。
【0595】
図56(D)に示されるように、キューイングバッファの大きさはまた、視差の総数(D)の2倍であり得る。D=5である場合、キューイングバッファの高さは、10個の記憶場所である。
【0596】
図57は、本発明の相関ユニットの1つの実施形態のハードウェア実現を示す。相関ユニット1450、1490、1491および1492の各々は、同じ方法で形成される。左右のセンサスベクトルはそれぞれ、ライン1520および1521で入力される。別の相関ユニットがある場合、これらのセンサスベクトルはまた、相関ユニットから、LOUTライン1522およびROUTライン1523を介して次の相関ユニットに送られる。しかし、このステージでは、左右のセンサスベクトルは、排他的ORゲート1524を介して比較される。排他的ORゲート1524は、入力が異なる場合には論理「1」を出力する。32ビットセンサスベクトルの場合、そのようなXOR演算がパラレルに32回行われ、ハミングビットカウンタまたはルックアップテーブル1525に出力される。ハミングビットカウンタまたはルックアップテーブル1525は、単に、その入力にある論理「1」の数をカウントするだけである。このビットカウンタ1525の出力値は、0のような低い値(左センサベクトルと右センサスベクトルとの間に差がない場合)から32のような高い値(左センサベクトルと右センサスベクトルとのすべてのビット位置が異なる場合)であり得る。
【0597】
この値は、飽和閾値ユニット1526に出力される。飽和閾値への入力が、0と15との間の値(0および15を含む)であれば、出力値は、入力値である。飽和閾値への入力が、15よりも大きい値であれば、出力値は、15に設定される。飽和閾値ユニット1526から出力される最大値が15であるため、ハミング距離を伝達するのに必要な出力ラインの数はより少ない。ここでは、ラインを4本だけ使用して、ハミング距離0〜15を表している。ほとんどの場合、ハミング距離が15以上であれば、相関ユニットは、おそらく、それを最適な視差としては選択しない。従って、大きい(>15)ハミング距離の精度は必要でない。他の実施形態では、出力が2つのセンサスベクトル間のハミング距離そのものを表すように、そのような飽和閾値を使用しなくてもよい。
【0598】
飽和閾値ユニットを用いることにより、3または4ビット(および従って3または4ライン)がハミング距離を表すために用いられ得る。そうでなければ最大32ハミング距離を伝達するために5ビットが必要である。7の最大ハミング距離が用いられる場合、3ビットが用いられ得る。すなわち、飽和閾値前の計算されたハミング距離が0以上且つ7以下である場合、計算されたハミング距離の値が用いられ、飽和閾値前の計算されたハミング距離が7以上且つ32以下である場合、計算されたハミング距離の値は7である。最大ハミング距離が7である場合に3ビットが用いられるのに対して、用いられるシーリングが15である場合、4ビットが用いられ得る。
【0599】
相関ユニットにおいて、入力された左および右センサスベクトルに関する特定の行および列情報もまた、周縁部のありさまの決定のために留意される。これは、ボックスフィルタリング動作に特に関係がある。
【0600】
次の加算/減算動作のシーケンスは、最終的に各移動相関ウインドウに関するウインドウ合計を計算するボックスフィルタリング動作を表す。飽和閾値ユニット1526の出力1540は、相関ウインドウの最も右側の下隅のイメージ要素を表す。これは、移動相関ウインドウのウインドウイラストレーション1570の黒い部分によって表される。この部分がウインドウ合計演算に寄与する前に、さらに1つの動作が行われる。加算器1527は、ライン1541内の値からライン1542内の値を減算し、その結果をライン1543に出力する。ウインドウイラストレーション1572内に図示するように、現在のイメージ要素上方のウインドウ高さに位置するイメージに関して計算されたハミング距離は、ライン1541上にある。列合計ラインバッファ内の列合計は、ウインドウイラストレーション1571内に図示するように、現在のイメージ要素位置の直上に位置し、ライン1542上にある。出力ライン1543は、ウインドウイラストーション1573内に図示するように、改変された列合計を供給する。
【0601】
加算器1528はライン1540上の値をライン1543上の値に加算することにより、ライン1544上に新しい列合計を生成する。ウインドウイラストレーション1570内に図示する左および右センサスベクトルの現在の対に関する現在のハミング距離が、ライン1540上に供給される。出力ライン1543は、ウインドウイラストレーション1573内に示すように、改変された列合計を供給する。加算器1528の出力は、ウインドウイラストレーション1574内に図示するように、新しい列合計である。
【0602】
加算器1529は、ライン1544上の値からライン1545上の値を減算することにより、出力1546を生成する。ライン1544は、ウインドウイラストレーション1574内に図示するように、新しい列合計を含む。ライン1545は、ウインドウイラストレーション1575内に図示するように、新しい列合計位置からのウインドウ長さに位置する列合計を含む。この差違が、ウインドウ合計を生成するために用いられる。
【0603】
加算器1530は、ライン1547上の値にライン1546上の値を加算することによりライン1548上に新しいウインドウ合計を生成する。この出力ウインドウ合計値はまた、レジスタ1531内に格納されてライン1549上に載置される。この加算前に、ライン1547上のレジスタ1531の出力は、直前の計算からのウインドウ合計を含む。次のクロックサイクルにおいて、現在の左および右センサスベクトル(LおよびR)を表す新しいウインドウ合計が出力ライン1548および1549で生成されるように、ライン1546上の値からの寄与が、ウインドウ合計を更新する。ライン1548、レジスタ1531、ライン1547、および加算器1530によって規定されるループ構造は、ウインドウ合計が1サイクルで計算されることを可能にする。
【0604】
左−右スコアおよび指標(LRSC、LRI)は対応する左センサスベクトル(L)と共にパイプラインを下流に進み、且つ右−左スコアおよび指標(RLSC、RLI)は対応する右センサスベクトル(R)と共にパイプラインを下流に進むため、ライン1549、1553、1550および1551におけるウインドウ合計は、この相関ユニットのための左−右スコアおよび右−左スコア(および従ってこの差)を表す。左−右スコアおよび右−左スコアは、これらが最小の左−右および右−左スコアをも表すか否かを決定するために、比較において用いられる。
【0605】
比較器1532の出力は次の相関ユニットのためのLRSCおよびLRI値を生成するために用いられるマルチプレクサのためのセレクタ信号を供給する。同様に、比較器1536の出力は次の相関ユニットのためのRLSCおよびRLI値を生成するために用いられるマルチプレクサのためのセレクタ信号を供給する。比較器1532はライン1549におけるウインドウ合計を、以前の相関ユニットから決定された入力LRSCと比較する。新しいウインドウ合計が以前に計算されたLRSC未満である場合、比較器1532は論理「1」を生成する。そうでなければ、論理「0」が比較器1532から出力される。比較器1536は、ライン1551におけるウインドウ合計を、以前の相関ユニットから決定された入力RLSCと比較する。新しいウインドウ合計が以前に計算されたRLSC未満である場合、比較器1536はライン1554において論理「1」を生成する。そうでなければ、論理「0」がライン1558において比較器1536から出力される。
【0606】
マルチプレクサ1553への入力は、ライン1552における以前に計算されたLRSCと、この相関ユニットにおいて計算されたライン1553における新しいウインドウ合計とを含む。比較器1532からのライン1554上のセレクタ信号が論理「1」である場合、マルチプレクサ1533の出力1563はウインドウ合計である。なぜなら、この新しいウインドウ合計は、以前の相関ユニットからの以前に計算されたウインドウ合計よりも低いウインドウ合計を表すからである。ライン1554上のセレクタ信号が論理「0」である場合、マルチプレクサ1533の出力1563は、以前の相関ユニットからの出力と同一のLRSCである。同様に、マルチプレクサ1534への入力は、ライン1555における以前に計算されたLRIと、この相関ユニットにおいて計算されたライン1556における相関ユニットのための現在の視差の数(disparity number)とを含む。比較器1532からのライン1554上のセレクタ信号が論理「1」である場合、マルチプレクサ1534の出力1564は、この相関ユニットのための視差の数である。なぜなら、この視差の数は、以前の相関ユニットからの以前に計算されたウインドウ合計よりも低いウインドウ合計と関連するからである。ライン1554上のセレクタ信号が論理「0」である場合、マルチプレクサ1534の出力1564は、以前の相関ユニットからの出力と同一のLRIである。
【0607】
マルチプレクサ1535への入力は、ライン1557における以前に計算されたRLSCと、この相関ユニットにおいて計算されたライン1550における新しいウインドウ合計とを含む。比較器1536からのライン1558上のセレクタ信号が論理「1」である場合、マルチプレクサ1535の出力1565は新しいウインドウ合計である。なぜなら、この新しいウインドウ合計は、以前の相関ユニットからの以前に計算されたウインドウ合計よりも低いウインドウ合計を表すからである。ライン1558上のセレクタ信号が論理「0」である場合、マルチプレクサ1535の出力1565は、以前の相関ユニットからの出力と同一のRLSCである。同様に、マルチプレクサ1537への入力は、ライン1561における以前に計算されたRLIと、この相関ユニットにおいて計算されたライン1562における相関ユニットのための現在の視差の数とを含む。比較器1536からのライン1558上のセレクタ信号が論理「1」である場合、マルチプレクサ1537の出力1566は、この相関ユニットのための視差の数である。なぜなら、この視差の数は、以前の相関ユニットからの以前に計算されたウインドウ合計よりも低いウインドウ合計と関連するからである。ライン1558上のセレクタ信号が論理「0」である場合、マルチプレクサ1537の出力1566は、以前の相関ユニットからの出力と同一のRLIである。
【0608】
上記に述べたように、各相関ユニットは特定の視差の数と関連する。24の視差に対して24の相関ユニット(各視差の数当たり1つ)が供給される。製造プロセスを容易にするために相関ユニットが同一に製造されることを確実にするために、各相関ユニットのための視差の数を生成する回路は同一でなければならない。上述したように、相関ユニットに関連するこの視差の数は、マルチプレクサ1534および1537への入力のために用いられる。その回路は、以前の相関ユニットから伝搬した視差の数を受け取ってそれをインクリメント値(通常「1」)に加算することにより相関ユニットに割り当てられた現在の指標または視差の数を生成する加算器である。相関ユニットは、この視差においてセンサスベクトルを比較する。ワイヤラインを節約するために、以前の相関ユニットからの視差の数は、新しいLRI値を伝送するために用いるラインと同一のライン上で伝送される。従って、新しいLRI値が次の相関ユニットに伝送されない期間、伝搬する視差の数がまず次の相関ユニットに伝送され、その後新しいLRI値が次に伝送される。
【0609】
第1の相関ユニットへの入力は、値−1でハードワイヤされる。従って、第1の相関ユニットは視差の数0に割り当てられ、この相関ユニットにおいて行われる全ての比較は視差0におけるセンサスベクトル間にある。この伝搬する視差の数は、第1の相関ユニットにおいては0であり、新しいLRI値を伝送するために用いられるライン上で次の相関ユニットに伝送される。この伝送は、新しいLRI値が次の相関ユニットに伝送される前に起こる。新しいLRI値が次の相関ユニットに入り、従って加算器に入ると、伝搬する視差の数は、第2の相関ユニット用に1になる。これが、パイプライン内の最後の相関ユニットまで続けられる。
【0610】
図54を参照して上述したように、視差D=5に対して、5つの相関ユニットが用いられる。換言すると、相関ユニットの数はサーチウインドウ内で用いられる視差Dの数に一致する。しかし、他の実施形態において、利用される相関ユニットの数は、視差Dの数と一致する必要はない。実際、1を越える視差に対するデータを処理するために単一の相関ユニットが用いられ得る。従って、視差24サーチウインドウを実行するシステムに対して、12の相関ユニットが供給され得、各相関ユニットは24の異なる視差のうちの互いに2ずつオフセットしたイメージデータを処理する。従って、例えば、1つの相関が、視差0および1において互いにオフセットしたイメージデータを処理し、別の相関ユニットが視差2および3において互いにオフセットしたイメージデータを処理し、第3の相関ユニットが視差4および5において互いにオフセットしたイメージデータを処理し、これが、視差22および23において互いにオフセットしたイメージデータを処理する相関ユニット12まで同様に行われる。
【0611】
しかし上記の記載は、本発明のサブピクセル推定特徴を組み込まない。以下の議論は、並列パイプライン内にサブピクセル推定を組み込むために必要な詳細を提供する。上述したように、サブピクセル推定動作は、初期選択された不連続な最適の視差の数を与えられた、より良好且つより精密な視差の数を推定する。概念的には、推定は、視差の数(X軸)と合計されたハミング距離(Y軸)との関係を表すグラフを分析し、初期選択された最適の視差の数と、最適の不連続な視差の数のいずれかの側の2つの視差の数との間を補間することによって達成される。1実施形態において、「V」が補間に用いられる。特定の視差の数もまた以下の関係を用いて計算され得る。
【0612】
【数10】
【0613】
サブピクセル推定はまた、相関ユニットに関して上述した並列のパイプライン化システムにおいて実行され得る。図54において、左センサスベクトル(L)、右センサスベクトル(R)、左−右スコア、左−右指標、右−左スコア、および右−左指標が、並列パイプラインシステムに沿ってパスされる。サブピクセル推定のために、以下の値がパイプライン内をパスされる。(1)現在の相関合計が最小合計である場合に用いられる以前の視差からの相関合計(図17においてY1で表す)、(2)最適の視差の数(LRI)、(3)最小相関合計、および(4)サブピクセル推定。最小相関合計は左−右(LRSC)である。これらの値は各相関ユニットにおいて処理される。これらの変数の、相関ユニット間の遅延は単一の遅延である。LRIおよびLRSCは、上述したように既にパイプラインの相関部分をパスされていることに留意されたい。
【0614】
従って、データが相関ユニットを介してパイプラインを下流に進む際に、サブピクセル推定は、新しく且つより低い相関合計に当たると更新される。パイプライン内の1点において新しい最小相関合計に達した場合、最小相関合計(LRSC)が更新され、最適の視差の数(LRI)が更新されて、以前の視差からの相関合計が格納されパスされる。このとき、次の視差からの相関合計データはまだ処理されていないため、サブピクセル推定は生成され得ない。他のデータが予測されない(従って最適の不連続な視差がDであり現在の相関ユニットが最後の相関ユニットでもある)場合、不連続な視差の数はサブピクセル推定動作からの最適の視差として扱われる。より多くの相関ユニットが使用可能である(すなわち、この左の参照イメージ要素のサーチウインドウ内の全てのイメージ要素が、この左の参照イメージ要素とまだ比較されていない)場合、次の相関ユニット内の次回のユニットにおいて、サブピクセル推定が計算され得る。なぜなら、現在の相関合計(最小でなくとも)が「V」補間曲線に適合する他方の隣接点であり、すなわち、この次の相関合計が図17のY3を表すからである。次の相関ユニット内の次回のユニット(存在する場合)において、相関合計は、新しい最小相関合計でない場合は、無視される。なぜなら、最適の不連続な視差の数に隣接する2点のうちの1つではないからである。
【0615】
E.モーションのための垂直および水平移動
モーションの分析のために、垂直な移動もまた考慮されなければならない。視差の範囲は、垂直オフセットにも亘り、システムは、垂直オフセットを有するウインドウを有するためには、イメージデータのより多くのライン(すなわちセンサスベクトル)を読み出さなければならない。垂直モーションを並列処理するために、各走査線に関する上記の教示内容が用いられ得る。従って、1つのイメージ内の座標(x1、y1)に位置する与えられたイメージ要素に対して、他のイメージ内の位置(x2、y2)にある対応するイメージ要素が本発明によって決定され得る。垂直オフセットが考慮されるため、最適の合致は必ずしも同一の線内で見い出され得ない。サーチウインドウはこのとき、ラインまたはラインに対応する行または参照イメージ要素の行に沿った1組のイメージ要素ではない。むしろ、サーチウインドウはこのとき、いくつかの行および列のイメージ要素を含む。
【0616】
図58は、本発明の1つの実施形態を示す。ライン1800での入力は、センサスベクトル発生器からの左および右のセンサスベクトルのストリームである。ライン1829上の出力におけるデータは、左および右のイメージ内の各選択されたイメージ要素に関する特定の行および列における最適の視差である。1つの実施形態において、出力は、最小の左−右スコア(LRSC)、左−右指標(LRI)、最小の右−左スコア(RLSC)、および右−左指標(RLI)を含む。ライン1800における、センサス発生器(図58には示さない)からの左(L)および右(R)のセンサスベクトル出力は、LRSC、LRI、RLSCおよびRLIと共にライン1829からも出力され得る。
【0617】
この並列のパイプライン化システム内のライン1における出力1829は、左−右および右−左の一貫性チェッキング用のキューイングバッファおよび外部指標アレイまたは視差マップに接続され、並びに/または視差データの処理用の別のアプリケーション/システムに直接接続されている。上述したように、視差データは、互いに行および列に位置する、1つのイメージ内の選択されたイメージ要素と他のイメージ内のイメージ要素との間の最適のオフセットを表す。これは、ライン2〜5用の「出力」ライン1830および1833を、直上のラインにおける第1の相関ユニットの入力に供給することにより達成される。例えば、ライン1833はライン5の相関ユニット1859の出力をライン4の相関ユニット1852への第2の組の入力に接続する。ライン1832は、ライン4の相関ユニット1855の出力を、ライン3の相関ユニット1848への第2の組の入力に接続する。ライン1831は、ライン3の相関ユニット1851の出力を、ライン2の相関ユニット1844への第2の組の入力に接続する。ライン1830は、ライン2の相関ユニット1847の出力を、ライン1の相関ユニット1840への第2の組の入力に接続する。これらのライン1830〜1833は、LRSC、LRI、RLSCおよびRLIを含む。
【0618】
図58に示し且つ図53〜図57に関して上述したように、この実施例において5つの視差(D=5)が用いられており、従って、5ラインのセンサスベクトルが処理され得る。各ラインまたは行について、相関結果を演算するために5つの相関ユニットが用いられ得る。従って、各ライン(L1〜L5)の最後の相関ユニットは、視差4(d=D−1であって、D=5であり、従ってd=5−1=4である)のためである。他の視差Dも選択され得、選択される特定の視差Dに依存して、この並列のパイプライン化システムを介して処理される走査線の数もまた変化し得ることに留意されたい。
【0619】
各ライン(L1〜L5)について、図54〜図57に示す構造に類似の構造を有する5つの相関ユニットが提供される。相関ユニット間の遅延要素もまた、図54に示すが、簡潔化および教育上の目的のために、これらの遅延要素は図58には示さない。しかし、適切な遅延を有するこれらの遅延要素は、この実施形態において、一方のイメージ内の各参照イメージ要素と、他方のイメージ内の参照イメージ要素のサーチウインドウ内の全てのイメージ要素との間のデータ処理を扱うために、実際に存在する。これもまた、図53〜図57を参照して述べている。
【0620】
ライン1(L1)について、相関ユニット1840〜1843が、データパス1813、1814、1819、1824および1829を介してイメージデータ対(左および右)を処理する。ライン2(L2)について、相関ユニット1844〜1847が、データパス1812、1815、1820、1825および1830を介してイメージデータ対(左および右)を処理する。ライン3(L3)について、相関ユニット1848〜1851が、データパス1811、1816、1821、1826および1831を介してイメージデータ対(左および右)を処理する。ライン4(L4)について、相関ユニット1852〜1855が、データパス1810、1817、1822、1827および1832を介してイメージデータ対(左および右)を処理する。ライン5(L5)について、相関ユニット1856〜1859が、データパス1809、1818、1823、1828および1833を介してイメージデータ対(左および右)を処理する。各ラインについて、左および右のセンサスベクトル(L、R)がライン1809〜1813を介して相関ユニットに向かう。
【0621】
適切なライン(L1〜L5)がこの並列のパイプライン化システムに入ることを確実にするために、遅延要素1801〜1804が設けられている。ここでの設定は、図48に示すセンサス発生器用の設定と類似である。従って、ライン1800において左および右のイメージに関するセンサスベクトルが入る。簡潔化のためにここでは単一のラインを示すが、実際には、左のイメージに1つ及び右のイメージに1つの、1対のラインが実行される。ライン1800においてこのシステムに入るイメージデータの5ラインは最終的には、ライン1809〜1813において相関ユニットに入る。ライン1810〜1813は、各遅延要素1801〜1804からの出力である。従って、ライン1800からの左および右のセンサスベクトルはライン1805を介して遅延要素1801に入る。遅延要素1801からの左および右のセンサスベクトルは、ライン1806を介して遅延要素1802に入る。遅延要素1802からの左および右のセンサスベクトルはライン1807を介して遅延要素1803に入る。遅延要素1803からの左および右のセンサスベクトルはライン1808を介して遅延要素1804に入る。
【0622】
ライン1〜5(L1〜L5)を図示するが、これは本発明を、イメージの最初の5ラインまたは所望のイメージ処理データの最初の5ラインに限定するものではない。L1〜L5は、参照イメージ要素のサーチウインドウ内のいずれの5ラインをも示す。従って、例えば、L1〜L5はライン78〜82上に位置するイメージデータに対応し得る。
【0623】
従って、この構成は、システムが、互いにオフセットする行および列に位置する、1方のイメージ内のイメージ要素と他方のイメージ内のイメージ要素との間の最適の合致を決定することを可能にする。この並列のパイプライン化システム内のライン1における出力1829は、左−右および右−左一貫性チェッキング用のキューイングバッファ、外部指標アレイまたは視差マップに接続され、並びに/または視差データの処理用の別のアプリケーション/システムに直接接続される。
【0624】
F.「スーパーピン」バス
図59は、本発明のイメージ処理システムの一部分に関連する「スーパーピン」バスおよびコネクタのいくつかを示す。図59に示すように、4×4アレイは、最近傍メッシュ接続を有するのみならず、各演算要素の各側に1組み8つの「スーパーピン」接続を有し、スーパーピンバスを形成する。これらのスーパーピン接続は、データが、互いに隣接するピン間の単一の接続を用いて、1つのチップから次のチップヘと移動することを可能にする。従って、ソフトパイプラインバス、トークンリング、または他の分布ネットワークが、演算要素上のルーティングリソースの多くを用いることなく構築され得る。これらのスーパーピンは、ローカル通信およびパイプライン化バス用のローカル相互接続用に用いられ得る。北−南および東−西バスを通過し得るいずれのデータもスーパーピンバスを通過し得る。
【0625】
図59は、図46および図47に元々示すアレイの一部分のみを示す。互いに隣接して位置づけられた演算要素1101、1102、1105および1106は互いに接続されており、且つスーパーピンバスを介してコネクタに接続されている。図示しない他の演算要素はもまた互いに、コネクタに、および類似の様式でここに示す演算要素と接続されている。スーパーピンバス1500は、演算要素1101とコネクタ1140との間に接続されている。スーパーピンバス1501は演算要素1101と演算要素1102との間に接続されている。スーパーピンバス1502は、演算要素1101と演算要素1105との間に接続されている。スーパーピンバス1503は演算要素1101と、そのすぐ左に位置する演算要素(図示せず)があればその演算要素との間に接続されている。スーパーピンバス1504は演算要素1105とコネクタ1141との間に接続されている。スーパーピンバス1505は演算要素1105と演算要素1106との間に接続されている。スーパーピンバス1506は演算要素1105と、そのすぐ右に位置する演算要素(図示せず)があればその演算要素との間に接続されている。スーパーピンバス1507は演算要素1106と、その下に位置する演算要素(図示せず)があればその演算要素との間に接続されている。スーパーピンバス1508は演算要素1106と、そのすぐ右に位置する演算要素(図示せず)があればその演算要素との間に接続されている。スーパーピンバス1509は演算要素1106と演算要素1102との間に接続されている。スーパーピンバス1510は演算要素1102と、そのすぐ左に位置する演算要素(図示せず)があればその演算要素との間に接続されている。スーパーピンバス1511は演算要素1102と、そのすぐ下に位置する演算要素(図示せず)があればその演算要素との間に接続されている。
【0626】
G.概要
図60は、図46に関して述べた4×4アレイのより詳細な図である。図60はさらに、スーパーピンバス、テストピン、およびプログミングピンを示す。しかし、データパスユニット、PCIインターフェースユニット、およびクロックユニットは示されていない。演算モジュールCUI〜CU16のレイアウトおよびピンは実質的に同一である。しかし、これらの機能は異なる。上述したように、完全にパイプライン化されたアーキテクチャは、いくつかの演算モジュールがセンサス変換を演算するため、別の演算モジュールが相関合計を演算するため、更に別の演算モジュールがPCIバスへの伝送パスを提供するための準備をする。
【0627】
例としての演算モジュールは、行1列Bに位置する演算モジュールCU6である。1つの実施形態において、演算モジュールCU6は、Xilinx XC4000シリーズFPGAチップおよび外部SRAMを含む。北−南軸ピンは、北ピン用のNORTHおよび南ピン用のSOUTHとして示される。西−東軸ピンは、西ピン用のWESTおよび東ピン用のEASTとして示される。NSP、SSP、WSPおよびESPは、それぞれ、北、南、西および東スーパーピンバスピンである。
【0628】
いくつかのピンが構築の目的のために用いられる。TDI、TCKおよびTMSは、これらの電子サブアセンブリのボードレベルテスト用の境界走査目的のための、Test Data In、Test ClockおよびTest Mode Select入力である。境界走査が用いられない場合、これらのピンは、構築が完了した後、CLB論理への入力として用いられ得る。TDOは、境界走査が用いられる場合のTest Data Outputである。TDOは、境界走査が用いられない場合、構築後のレジスタのない3状態出力である。PROGは、演算モジュールCU6を、強制的に構築メモリをクリアさせて構築サイクルを開始させる入力である。DONEは、双方向信号であり、入力としては、グローバル論理初期化および出力のイネーブルを遅延させるために用いられ得、出力としては、構築プロセスの完了を示す。INITは、構築中および構築後の双方向信号である。INITは、電力安定化および構築メモリの内部クリアリング中の出力である。INITは、入力としては、構築の開始前にFPGAを内部WAIT状態に保持するために用いられ得る。構築中、INITは構築データエラーを示すために用いられ得る。
【0629】
いくつかのピンが構築機能を提供し、さらに構築後の他の機能を提供する。DINは、スレーブ/マスタ直列構築中の直列構築データ入力として作用し、並列構築中の出力D0として作用する。構築後、DINはユーザプログラマブルI/Oピンとして作用する。典型的には、DINはH機能発生器入力2であり、DOUTは、構築中(エクスプレスモード以外)のデージーチェーンスレーブFPGAのDINピンを駆動し得る直列構築データ出力である。構築後、DOUTは、ユーザプログラマブルI/Oピンである。
【0630】
2つのクロック信号が用いられる。構築中、CCLKはマスタモードまたは非同期周辺モード中の出力として作用し得るが、スレーブモード、同期周辺モード、およびエクスプレスモードにおいては入力である。構築後、CCLKは、リードバッククロックとして選択され得る。CLKはアレイ内の演算モジュールCU1〜CU16の同期を制御する主要クロッキング信号である。CLK用クロッキング信号は、アレイの列A〜Dにユニークである。これらのXilinx FPGAの詳細は、参考のためここに援用する、データブックであるXilinx,The Programmable Logic Data Book(9/96)において得られ得る。
【0631】
上述したように、アレイの上部および底部は、アレイを拡張するため、トーラスを閉じるため、および周辺(I/O)デバイスを追加するために適した50ピンコネクタを有する。行0の演算モジュール(すなわち、CU1、CU5、C9、CU13)より上で且つ行3の演算モジュール(すなわち、CU4、CU8、CU12、CU16)より下のコネクタXCONNは、北−南軸スーパーピン(すなわち、NSP、SSP)への接続および北−南メッシュ接続(すなわち、NORTH、SOUTH)を提供する。4×4アレイのためには、僅か8つのコネクタが必要であるにすぎない。異なるサイズのアレイは異なる数の接続を有し得る。
【0632】
チップ間通信は北−南通信および東−西通信に分割される。アレイは、ボード上の2つの垂直方向に隣接したFPGA間に43のピンを有する。北および南端コネクタがリボンケーブルによって接続される場合、各列の最上および最下のチップもまた43本のピンによって接続される。中間の2つの行は43のピンによって接続されるが、いずれかの列がホストプロセッサと通信している場合、これらのピンのうちの20ピンはこの通信専用となっている。東−西通信のために、アレイは42のピンを有する。しかし、外部SRAMが用いられている場合、これらのピンのうちの20ピンは、アドレス専用となり、8ピンがデータ専用となり、東−西軸の通信用には16本ピンが残されるのみである。
【0633】
相関パイプラインの各段階間の通信は、2つの32ビットセンサスベクトル、5ビット指標、10ビット合計ハミング距離、および1対の制御情報ビットを含む。これらの合計は、パイプライン全体を介して起こることが必要である81ビットの通信となる。これは、北−南軸上のこのような通信を提供するために使用可能な43のピンを越える。しかし、2つのクロックサイクル用に1つのピクセルというモデルは、ピクセル当たり2回の通信を可能にする。従って、北−南の43のピンによる接続上の出力および入力を多重化することにより、86ビットが通信され得る。損失的な(lossy)通信およびレジスタ使用の大容量による否定的な影響は、ストローブされたI/Oレジスタおよび多重化されたI/Oピンの使用により減少する。XiIinx XC4028EXは、このような機能性を提供する。
【0634】
互いに隣接する要素間のピンは、容量的に軽くロードされ、チップ間のギャップを介して非常に迅速にデータをパスすることができる。XC4025チップは、各チップから及び各チップにパスされる際にデータをラッチし得るI/Oレジスタを有し、それにより高速パイプラインが起こることが可能になる。実際、クロックイネーブルを用いることは、データワイヤ上の遅延が制御ワイヤを通った遅延とほぼ均等である限り、簡単な束ねられた要求/承認通信スキームが設定されることを可能にする。要求/承認の往復を必要とすることは、通常、制御信号が往復を完了するときまでに、データ伝送のための適切な時間を確実にする。
【0635】
アレイボード上の最も遅いラインは、エッジチップの遠い側を連結する、ボードの右エッジからボードの左エッジまでのラインである。これらのラインは、レジスタタイミングの何らかのスキューイングが行われた場合、25MHzでのデータ伝送を可能にする。高速デバイスは、スキューイングの必要性を排除する。実際、これらのより高速なデバイスをアレイのエッジで用いることは、アレイ全体の性能を均等化する。
【0636】
図61は、1つのFPGA演算モジュール(すなわち、U8)と1対のSRAM(U9およびU10)の詳細図を示す。1つの実施形態において、SRAMは、Toshiba TC551402チップである。メモリ要素U9およびU10は、EASTメッシュバスラインを介して演算モジュールU8に接続される。メモリ要素U9内のアドレスラインA0〜A19は、その後LSBデータラインD0〜D3上で読み出されるデータを読み出すことによりにより、またはアドレスラインによって識別された特定のメモリ位置への書込みにより、SRAMチップ内のデータにアクセスするために用いられる。CEは、チップイネーブルを表し、WEはライトイネーブルを表す。メモリ要素U10はMSBデータラインD4〜D7を供給する。
【0637】
アレイボードの各FPGA演算要素は4つの最も近傍の隣接する演算要素に接続し、さらに各FPGAに使用可能な1MB×8ビットメモリを共に形成する1対のSRAMチップにも接続する。接続は、容量的ロードを最小にするためにアレイ内にできるだけ短くレイアウトされる。しかし、メッシュ端部において、トーラスを閉じるために、より長いワイヤが必要である。これらのより長いワイヤは、アレイワイヤよりも多少ゆっくりと動作する。
【0638】
アレイボードの各演算要素は、要素毎に2つの1MB×4ビットのチップを用いることにより、1MBメモリを有する。2つのチップは平行にオーガナイズされて、FPGA演算要素チップから見られるように、1MB×8ビットメモリを供給する。SRAMは、FPGAチップ間の西−東相互接続チャネル上にあり、CEピンを高く保持することにより無視され得るか、またはCEラインを降下することにより活性化され得る。現在のボードは25nsの速度グレードを用いている。Toshibaなどのいくつかの製造者は、より高性能用の20nsのSRAMチップを供給し得る。アレイボード上には、計16MBのスタティックメモリが供給される。
【0639】
アレイボードは、FPGAデバイス上およびFPGA外の両方において、映像ピクセルなどのデータ要素のリアルタイム処理およびフローを管理するために非常に有用なメモリ階層を含む。メモリは、アクセス速度およびメモリサイズに応じてオーガナイズされ得、FPGAデバイス、FPGAオンチップSRAM、オフチップSRAM、およびホストコンピュータDRAM内にレジスタを含む。これらの各々の速度およびメモリアクセスを以下に述べる。
【0640】
各FPGAチップは、構築可能論理ブロックまたはCLBの2次元アレイからなる。各CLBは、Xilinx XC4000シリーズ内に2つのレジスタと3つのルックアップテーブルとを有する。レジスタは、FPGAチップ間およびFPGAチップ内においてデータ動作をパイプライン化するために非常に有用である。レジスタは、Xilinxデバイスの速度グレードに依存して、3〜5ナノ秒でアクセスされ得る。所望の位置への総伝搬時間を得るためには、ワイヤ遅延がこの図に追加されなければならない。XC4025ベースのアレイボードは、演算アレイ内に32Kレジスタを有し、PCIおよびクロックチップ内に3456レジスタを有する。映像の適用については、レジスタは、個々のピクセルを格納するために非常に有用である。レジスタの総帯域幅は、最高100MHzの速度で動作すると仮定して、3兆ビット/秒である。
【0641】
XilinxデバイスのオンチップSRAMは、10ナノ秒未満の読出し/書込みサイクル時間を有し、レジスタの16倍高密度である。これらのSRAMは、ビットを格納するために、CLB内のルックアップテーブルを用いる。Xilinxチップ内の各CLBは、32ビットのSRAMとして構築され得る。XC4025ベースのアレイボードの総容量は、SRAM512Kビットまたは64Kバイトである。これらの内部SRAMは、データの走査線をオンチップで格納すラインバッファとして非常に有用である。例えば、畳込みフィルタは、マルチタップFIRフィルタを作成するために、このSRAMを用い得る。理論的には、オンチップSRAMは、SRAMの全てを用いるアレイボード全体において1秒当たり1.5兆ビットの総帯域幅を用いる。SRAMのアドレスラインは、ルーティング制約を与えられた場合、最高約50MHzの速度で動作し得る。
【0642】
外部SRAMはToshibaなどの多くの製造者を介して入手可能であり、25ナノ秒のアクセス時間および1メガバイトの容量を有しており、ボード上で計16MBとなる。このメモリは、イメージのフレーム全体を格納するために適している。このストリームの帯域幅ははるかに限定されている。なぜなら、各25〜40ns毎に、メガバイト全体のうちの僅か1バイトが使用可能であるにすぎないからである。このSRAM用の総メモリ帯域幅は、30〜50億ビット/秒であり、オンチップSRAMから3オーダー狭い。
【0643】
ホストCPU上のDRAMは、アレイボード用のイメージのシーケンスまたはプログラムオーバーレイを格納するために適している。PCIバス上では、32ビットインターフェースでの130MB/秒および64ビットインターフェースでの260MB/秒が達成され得る。具体的には、今日までPCにおいて最高80MB/秒の速度が達成されている。オフボードRAMは1オーダー狭い帯域幅で1オーダー大きい容量を供給し得る。
【0644】
最後に、RAIDアレイは10ギガバイト(GB)以上の容量および1秒当たり約10〜20メガバイトのアクセス速度を提供し得る。これは、オフボードDRAMよりも1オーダー遅い速度で2オーダー大きい容量を提供する。
【0645】
アレイボードの1構成は、最高25MHzの速度で非バースストバス転送を実行するカスタム設計されたPCIインターフェースを用いる。現存するボード上のPCIチップの全ては、XC4013E−2デバイスにより置換され得る。XC4013E−2デバイスは、PCIバスの最高速度(33MHz)でバースト転送を行うことが可能である。PCIバスは、転送データに対する単一ワード転送または複数バーストモード転送を用いて動作することができる。単一ワード転送は、標的インターフェースに対して有するタイミングが比較的重要でない傾向がある。バースト転送によるとはるかに高い速度が可能である。なぜなら、アドレスを送るために費やされる時間が、多くのデータサイクルに亘って償却されるからである。バーストモード転送用のタイミングおよび制御論理は、単一ワード転送用よりも重要である。Xilinx LogiCore PCIインターフェース設計は、アレイボード上での使用に適合され得る。アレイボードは、132MB/秒でバースト書込みをすることができ、66MB/秒でバースト読出しをすることができる。
【0646】
図62は、PCIインターフェースチップ、データパスチップ、およびバス接続の詳細図を示す。PCIバスは、標的インターフェースを供給するために数千のゲートを必要とする。インターフェースは、データトランザクションを開始し且つ管理する1組の制御信号と組み合わされた32ビット多重化アドレスおよびデータバスからなる。制御信号用のターンアラウンド時間は、PCI−32バスインターフェースにとって重要なパスを表す。Xilinx XC4000−4シリーズチップを用いると、システムは、25MHzの速度から33MHzの最高PCI速度で動作し得る。
【0647】
PCI64チップは、PCIバスの64ビット拡張に接続し、さらにアレイからホストコンピュータへの主要データ接続を制御するデータパスチップとして作用する。データパスチップは、アレイに対してデータを出し入れすること、および64ビットPCIバス拡張を管理することに責任を負う。データパスチップは、クロック制御チップに類似の構造を有し、クロック制御チップ同様、PCI−32チップによってプログラム可能である。制御構造は、アレイを介する双方向データ伝送を可能にし、且つデータ通信タスクを管理する。
【0648】
図63は、クロック制御チップの詳細図を示す。クロック制御チップは、アレイ全体への制御信号分布ツリーを制御する。これらの信号は、1以上のクロック信号、並びにアレイからのグローバル制御信号およびデータを含む。ラインは、いずれのアレイチップもがデータをクロック制御チップに送信するように又はデータ管理チップから信号を受信するように構成されるように、双方向である。1組の信号がアレイチップをプログラムする責任を負う。各チップは16方向スターパターンでクロック制御チップから直接導かれるいくつかの専用プログラミングラインを有する。構築後、これらのラインのうちのいくつか(DINおよびDOUT)が汎用データI/Oのために用いられ得る。
【0649】
さらに、アレイの各列は、クロック制御チップから8つの信号を受信する。これらの8つの信号は、FPGAチップ上の4つの主要クロック信号および4つの2次的クロック信号に達する。各クロック信号は列内の各チップ内の同一のピンに接続する。アレイ内の列は、ボード上のほぼ等時間的領域を表し、その結果、クロック制御チップのレイアウトは、1つの列から次の列まで正当な量のスキューを提供することにより、最小のネットのスキューでボード全体に亘る同期クロック生成するように設計され得る。
【0650】
Cypress周波数シンセサイザは、1MHz〜60MHzのクロック源をとって、周波数を350kHz〜少なくとも115MHzの範囲の所望の周波数に乗算/除算することができる。アレイボードは、2つのシンセサイザを有し、2つのシンセサイザは同一のクロック源からの異なる周波数を合成することができる。PCIバスクロックは、アレイボード用の基本的クロック源を提供することができる。しかし、多くのPCシステムは、1%以上のジッタを有し、映像タイミング生成などの精密なタイミング適用のために外部クロック源を必要とする。外部クロック源は、クロック制御チップに直接接続する外部50ピンコネクタにより達成され得る。この特徴は、アレイボードへの外部インターフェースを処理する際に、大量のフレキシビリティを提供する。
【0651】
図64は、上部および底部の外部コネクタ並びにそれらのピンの詳細図を示す。アレイの上部および底部は、アレイを拡張するため、トーラスを閉じるため、または周辺(I/O)デバイスを追加するために適した50ピンコネクタを有する。4×4アレイのためには、僅か8つのコネクタが必要であるにすぎない。異なるサイズのアレイは、異なる数のコネクタを必要とし得る。いくつかの実施形態において、カメラまたは映像データは、これらの上部および底部コネクタを介してアレイに直接供給され得る。トーラスを閉じることは、長さ僅か1cmの短いジャンパケーブルを、互いに隣接するコネクタ間に取り付けることを含む。複数のイメージ処理システムボードが共にデージーチェーンされて、より大きなトーラスを形成する。他の適用は、特別な制御または信号条件を要する他のリボンケーブルと周辺デバイスとを取り付け得る。
【0652】
1秒当たり2ギガバイトを越える総帯域幅は、転送速度が50MHzであると仮定して、アレイボード上において4対の50ピンコネクタを用いることにより入手可能である。この帯域幅は、映像ホログラフィなどの最も要求の厳しい適用に適している。アレイボードのアーキテクチャは、複数のボードを拡張するため、リボンケーブルを用いて外部機器に接続するため、またはアレイボード上に適合するドーターボードを支持するために十分柔軟である。50ピンコネクタは、外部機器に対するリボンケーブル接続を形成し得る。短いリボンケーブル接続は、単一のアレイボード上のトーラスを閉じ得るか、またはドーナツ形状デージーチェーン用の他のアレイボードに接続し得る。アレイボード接続はさらに、ドーターボードに接続することにより、外部インターフェース用の専用ハードウェアを提供する。
【0653】
FPGA内で最も電力消費の激しい機能は、出力ピンを駆動することである。本発明の1つの実施形態は、33MHzで出力ピンを駆動するために、相関演算要素の各々において、43の通信ピンおよび最高56のメモリピンを必要とするため、イメージ処理システム全体がかなりの電力を消費し得る。PCI仕様は、バス上において最高5アンペアの電力消費を可能とする。本発明の1つの実施形態は、24の視差、320×240ピクセルの解像度で、4.5アンペアの定常状態電力消費を必要とする。
【0654】
何百ワットもの電力を消費するようにボードをプログラムすることが可能であるため、アレイボードは、温度の上昇を感知するDS1620ディジタルサーモメータ/リレーを含む。このチップは、クロック制御チップに取り付けられる。クロック制御チップは、必要であれば、ボードがオーバーヒートすることを阻止するために、アレイチップの全てを初期の低電力状態にリセットし得る。空気流はボード上でDS1620に向けられることにより、アレイの温度上昇を感知することができることを確実にする。
【0655】
単一のチップ内の加熱を検出するために、チップが室温にあるときに、各チップ上のリング発振器の周波数が測定され得る。チップの温度が上昇すると、リング発振器の動作周波数は予想可能に低下する。リング発振器の周波数の低下を測定することにより、温度変化が感知され得、いずれのアレイチップがオーバーヒートしていることをも高い信頼度で予測し得る。閾値温度を越えるチップは、システムに対するダメージを阻止するためにシャットダウンされ得る。従って、ユーザは、PC上のアレイボードを、オーバーパワー状態を懸念することなく直接動作し得る。
【0656】
本発明の別の実施形態は、640長の走査線の拡張である。これは、12のFPGA内に、各隣接するSRAM要素の僅か半分を用いて2つの相関段階を置くことにより達成され得る。光学的フローアルゴリズムもまた、本発明の別の重要な適用である。
【0657】
本発明のアルゴリズムは、限定されたメモリリソースを有する小さい低電力の埋め込みプロセッサにおいて実行されるように設計された。本発明は、アルゴリズムの多くの異なるハードウェア実装を想定しており、それらは、現存するコンポーネントを1対1で別のコンポーネントに置換すること、多くのコンポーネント全体を単一のコンポーネントに置換すること、または請求の範囲に記載する本発明の思想および範囲が満たされる限りにおける完全に異なる設計概念を含む。本明細書に記載する特定の実施形態は、サイズ、速度および消費電力のすべてにおいて有効である。
【0658】
V.産業上の利用性
本発明に記載する技術は、広範囲の分野の多くのタスク領域に適用される。多くの場合、当該距離測定方法およびそれらを具現化した手段により生成される結果は、隣接したスタンドアロン型アプリケーションに提供される。別の場合、手段および方法は、それぞれの分野で確立された現存する方法と組み合わされることにより、性能の大幅な向上をもたらす。
A.zキー処理
zキー処理は、Zまたは深度情報を用いて映像光景またはイメージを編集または操作することからなる。zキー処理は、以下を含む多くの映像での適用を有し得る。
【0659】
(a)ブルースクリーン処理
映像処理における共通の必要性は、イメージ信号の重畳、例えば単一の人を合成された表示の前で動かすこと(地図の前の天気予報官を考えられたい)である。この錯覚を起こさせるような表示は、現在、「ブルースクリーン処理」と呼ばれる方法を用いて行われている。ブルースクリーン処理において、グラウンドに近い映像(すなわち、天気予報官)が色に基づいてその周囲から識別され抽出される。その場合、背景は特定の色、例えばブルーである。所望のキャラクターの分離は、単一色の閾値処理により得られ、残りの信号(天気予報官)は所望の背景(天気地図)上に重畳している。
【0660】
開示する発明は、このような適用を、従来のブルースクリーン処理よりも正確で且つ低価格な様式で行うために用いられ得る。図68はこのような1実施形態を示す。この図において、ステレオ映像カメラD1が、メインカメラD2および2次カメラD3とからなるように示されている。
【0661】
メインカメラD2は、映像情報をアナログまたはディジタルのいずれかの形態でキャプチャーするために用いられる。このような情報がディジタル形態で記録されている場合、情報はフレームバッファD4から直接ダウンロードされる。このような情報がアナログ形態で記録されている場合、情報は、当該分野で周知のアナログ/ディジタル変換プロセスを介してディジタル形態に変換される。ディジタル表示はその後ピクセルバッファD5内に格納される。これらの要素は、ステレオ映像カメラD1の一部分として示されているが、バスまたは何らかの他の接続メカニズムを介してステレオ映像カメラD1に接続された別個のコンピュータ内に存在し得ることに留意されたい。
【0662】
当該分野で周知であるように、映像データのディジタル表示は、各記録ピクセルのクロミナンスおよびルミナンスの値を含む。1つの実施形態において、各ピクセルのルミナンス情報は、ピクセルバッファD5から抽出されて輝度マップD6に格納され、それにより各ピクセルの輝度値マップが生成される。他の実施形態においては、クロミナンスを含む他の情報が用いられ得る。
【0663】
1つの実施形態において、2次カメラD3が、深度計算のためのみに用いられる。この実施形態においては、2次カメラD3は、メインカメラD3よりも低品質であり得、且つ、深度計算プロセスに関連するピクセルデータのコンポーネント、この例ではルミナンスのみをキャプチャーし格納するように設計され得る。他の実施形態においては、2次カメラD3はメインカメラD2と同等の品質を有し得、且つ、入手可能な映像情報の完全な範囲をキャプチャーし得、それによりD3映像を可能にする。
【0664】
2次カメラD3がルミナンス情報のみをキャプチャーするように設計されている場合、その情報はキャプチャーされて2次カメラD3用の輝度マップD7に直接転送される。それにより、映像情報を別個のピクセルバッファ内に格納しルミナンス情報を抽出する必要が回避される。
【0665】
一旦各カメラについて輝度マップが生成されると、視差の値が上記の教示に従って計算され、上述したようにこれらの値から、深度または視差の測定値が導かれる。これらの測定値はその後、ピクセルバッファD5の、メインカメラからの映像情報を表す部分をマスクするために用いられる。このようなマスキングは、カメラからの、ある深度を越える情報、例えば、カメラから4フィートを越える全ての情報、ある深度範囲内の情報、または何らかの他の様式で規定された空間容量の情報をマスキングするように設計され得る。マスキングされないピクセルはその後、別のイメージ上に重ねられ得る。別のイメージは、格納されたイメージを表し得るか、または生映像を表し得る。
【0666】
1つの可能性のある適用を得るために、開示する発明は、天気予報官のイメージをピックアップしてそのイメージを天気地図のイメージ上に重畳させて表示するために用いられ得る。
【0667】
このようなzキー処理適用において用いられる深度計算の信頼性は、2つの方法で向上し得る。第1に、抽出用に用いられる映像イメージ(例えば、天気予報官の写真)が、背景内でのコントラストおよび背景と抽出すべき前景とのコントラストを最大にするように設計された背景と共に撮影され得る。第2に、背景からの天気予報官のイメージの抽出の場合、深度計算において追加の後工程が追加され得る。後工程において、周囲のピクセルに関して計算された深度と合致しないピクセルまたはピクセル群がその深度に割り当てられる。このようにして、誤ったピクセル計算が排除され得る。
【0668】
メインカメラD2が調整可能焦点距離(通常そうであるように)である場合、2次カメラD3は常に同一の焦点距離を用いなければならないことに留意されたい。なぜなら、そうでなければ、2台のカメラの焦点が発散し、その結果、1つのイメージ内の対象が他のイメージ内の対象よりも近く(且つ大きく)見えるからである。2台のカメラの焦点を同期させる手法は、当該分野で周知であり、機械的手法を含むことにより一方のカメラの焦点距離の移動が直接、他方のカメラの焦点距離の移動を制御し、且つ電子的手法を含むことにより回路がメインカメラの焦点距離を監視しメインカメラの焦点距離が変化するときに自動的に2次カメラの焦点距離を調整する。このような手法は、カメラの焦点距離が調整可能である場合、デュアルカメラを用いる如何なる適用にも用いられ得る。
【0669】
(b)背景削除
インタラクティブコンピュータ/映像ゲームは現在、参加者を、合成された表示への再挿入(参加者または参加者を表すアイコンがゲーム画像内で重畳されている)のために参加者の周囲から分離するために、背景削除であるブルースクリーン処理の変形を採用している。背景削除はさらに、S.Ahmad、”A Usable Real-Time 3D Hand Tracker”、28thAsilomar Conference onSignals,Systems and Computers,IEEE Computer SocietyPress 1995およびT.Darrell、B.MoghaddamおよびA.Pentland、”Active Face Trackingand Pose Estimation in anInteractive Room”、Computer Vision and PatternRecognition Conference,SanFrancisco、67〜72頁、1996に記載されている。
【0670】
開示する発明は、このようなアプリケーションを、ブルースクリーン処理に置き換わるために用いられるアプリケーションと同様の様式で実行するために用いられ得る。このアプリケーションにおいて、通常、映像会議の適用に用いられるタイプの2台の比較的安価なカメラが用いられ得る。このようなカメラはコンピュータモニタに直接搭載され得る。
【0671】
(c)多層表示
多くの類似のイメージ合成シナリオもまた、この技術から利益を得る。この書類に記載の深度または「zキー処理」(ブルースクリーン処理に対向して)はこのような適用の1つである(T.Kanade、A.Yoshida、K.Oda、H.KanoおよびM.Tanaka、”A stereo Machine forVideo-rate Dense depth Mapping and Its New Applications”、Computer Visionand Pattern Recognition Conference,IEEE Computer Society Press、196〜202頁、1996を参照のこと)。マルチプルクリッピング平面を有する多層表示は、このzキー処理のより一般的な形態である。
【0672】
例えば、図69に示す2つの映像シーケンスを考える。映像シーケンスE1は、道を走るオートバイE3のいくつかのフレームを示し、映像シーケンスE2は森の光景のフレームを示す。オートバイE3が映像シーケンスE2からの森を走っているように示されるように、これらの2つの光景を合成することは、通常、多大な尽力を含む。なぜなら、オートバイは映像シーケンスE2からの木のいくつかの前であって他の木の後ろを通過するように示されなければならないからである。
【0673】
この合成の問題は、本発明の使用を介して解決され得る。映像シーケンスE1および映像シーケンスE2がディジタルカメラを用いて(またはアナログカメラを用いて出力をディジタルに変換することにより)撮影されていると仮定する。さらに、このようなカメラの各々が、上述したようにメインカメラと2次カメラを含んでいると仮定する。このような場合、各映像シーケンスの各フレームに関する深度情報は、各ピクセルのディジタル表示のアトリビュート(他のアトリビュートはルミナンスおよびクロミナンスを含む)として、または各フレームに対応する別の深度マップ内に格納され得る。この深度情報は、以下の工程を用いて、映像シーケンスE1を映像シーケンスE2と合成するために用いられ得る。
【0674】
(1)上述したように映像シーケンスE1からオートバイを抽出し、その結果映像シーケンスE4を得る。
【0675】
(2)フレームバッファ内において、抽出されたピクセルを映像シーケンスE2からのピクセルと組み合わせ、その結果映像シーケンスE5を得る。ピクセルの重複がない部分(すなわち、映像シーケンスE2のうち、オートバイと重複しない部分)において、映像シーケンスE2からのピクセルを用いる。ピクセルの重複がある部分(すなわち、映像シーケンスE2のうち、オートバイと重複する部分)において、カメラに近い方のピクセルを用いる。従って、カメラに「より近い」木の後ろであるがカメラから「より遠い」木の前にオートバイE3を示すフレームが構成される。
【0676】
開示された技術は、そのような合成が、多数のビデオストリームフレームについてリアルタイムで行われることを可能にする。本発明により、合成において多数の明らかな改良点が得られる。この改良点には、背景が一定のまたは均一な色分布である必要がないこと、被写体が背景色となることを避ける(そうしなければ、表示にホールができる)必要がないこと、動きとともに変化し得る場所に基づいて被写体を識別することができること、ビデオシーンの様々な場所から多数のオーバレイを選択することができること、などがある。最終的な作業生成物を作り出すため、または、ビデオエディタが、どのビデオストリームが従来の合成に最良に使用され得るかを迅速に見極めることを可能にするために、そのような合成を用いることができる。
【0677】
(d)ビデオ会議
上で開示されたzキー処理技術は、デスクトップビデオ会議アプリケーションに容易に適用され得る。そのようなアプリケーションでは、目的の情報は、通常、カメラに比較的近い場所にある。背景情報は、通常関係ないが、前景および背景がともに動きを含み得るため、排除するのが困難である場合もある。背景情報のキャプチャーおよび伝送は、性能に関する重大な問題につながる。なぜなら、利用可能な処理力およびバンド幅が、許容可能な解像度で光景全体を伝送するには不十分である場合があるからである。
【0678】
zキー処理は、通常はユーザのビデオディスプレイスクリーンに配置されるステレオカメラ対から、ある特定の距離(例えば、5フィート)を越えるところにあるすべての背景情報を排除することにより、そのようなアプリケーションに使用され得る。これにより、関連情報だけを送ることが可能になる。受信者の場所では、前景情報が、送信者のサイトからキャプチャーされた静止背景情報、または、選択可能な背景(例えば、グレー一色の背景、森林の光景を示す背景、など)と組み合わされ得る。
【0679】
B.空間情報
この情報は、視覚的な欠陥、暗さ、または障害物のため、他の方法では判断することができない空間情報を、ユーザに示すために使用され得る。そのようなアプリケーションでは、ステレオカメラ対は、その時にその他の方法ではユーザに視覚的にアクセス不可能な場所に取り付けられる。その後、距離情報を使用して、ユーザに、規定された視野内に入っている対象物についての情報が与えられる。
【0680】
各々の場合、これらのアプリケーションは、ステレオカメラ対を使用する。ステレオカメラ対は、環境からのディジタル情報を入力し、センサスステレオ(または、他の非パラメトリック局所変換)を使用して、深度マップを作成する。この深度マップは、その後、処理されて、ユーザに示される。
【0681】
尚、この対象物の検出は、対象物の認識を必要としない。その代わりに、対象物の検出は、単に、所定の経路または視野に存在する構造物の場所を示して、ユーザにその構造物の存在を警告するだけであり得る。潜在的なアプリケーションは多数存在する。
【0682】
1.暗がりでの対象物の検出
赤外線カメラは、当該分野において周知である。そのようなカメラは、光景の色またはルミナンスではなく、光景の様々な部分から受け取られる赤外線信号に基づいて、光景を記録する。
【0683】
開示された非パラメトリック局所変換は、赤外線入力からの深度情報を抽出するために使用され得る。そのようなアプリケーションでは、赤外線信号の強度は、ピクセルごとに記録され、その後、この強度を用いて、局所変換が作り出される。他のすべての点では、そのようなアプリケーションは、上で開示された態様と同様の態様で動作するが、このアプリケーションでは、可視光線強度の代わりに赤外線強度が使用される。
【0684】
一旦、深度情報が抽出されると、特定の距離または特定の空間領域内に入る対象物は、背景と区別され得る。そのような対象物についての情報は、ビデオスクリーン上でユーザに示され得、赤外線ピクセルが、表示されるイメージ全体から引き出されて表示される対象物を表す。そのような情報はまた、アラームなどの自動システムに示され得る。そのような用途は、アラームシステムが、ユーザの介入も可視照射もなしに、受動的に動作して、対象物をその場所で区別することを可能にし、動き分析を使用する場合には、対象物をその動きで区別することを可能にする。
【0685】
2.死角(obscuredview)における対象物検出
開示する発明は、死角のため通常ユーザには見えない領域における対象物の検出に用い得る。これは、複数の重要な死角が存在し、ユーザがリアルタイムで決定を行うことを要求されるようなアプリケーションにおいて、特に有用であり得る。このような状況下において、ユーザは複数のスクリーン上で同時にリアルタイムの画像(picture)を観察かつ分析することは不可能であり得るため、フル映像の用途は限られ得る。開示する発明は、zキー処理用の深度情報を用いることにより、対象物が予め設定された距離内に来たときに警告を発した後特定の距離内にあるイメージの部分のみを表示することでこの問題を解決し得る。
【0686】
例えば、長いまたは関節部を有する(articulated)大型トレーラー(bigrig)を後進させるのは困難な作業であり、作業者が自身の乗り物と潜在的な障害物との間の関係についての適切な空間的モデルを得ることができないことのため、より困難さが増す。範囲センサ(rangingsensor)の出力の俯瞰図(高さ方向に圧縮した)により、作業者の近傍にある対象物
ならびに、それらに対する作業者の乗り物の位置および方向のディスプレイされた空中展望が、作業者に提供される。キャブディスプレイにより、作業者は自身の制御および周囲に対して最適な注意を払うことを可能にし、安全な操作が可能になる。
【0687】
このようなシステムを、大型トレーラーA1を示す図65に図示する。大型トレーラーA1の後部周辺には、ステレオカメラ対A2〜A7が並べられている。これらのカメラは、大型トレーラーA1の後部ならびに大型トレーラーA1の後部に近い側部を連続的にカバーするように配置されている。
【0688】
大型トレーラーA1が後進状態にされたとき、A2〜A7は、範囲処理を開始する。上記に開示するように深度をフィルタとして用いることにより、カメラ対は、特定の範囲(例えば5フィート)内の対象物のみをユーザに知らせる。
【0689】
大型トレーラーA1は、カメラA2〜A7の予め設定された範囲内の画素のみを出力する映像ディスプレイを有するように設計され得る。あるいは、大型トレーラーA1は、図66中B1として示すような単純で安価な分割ディスプレイを有するように設計され得る。この分割ディスプレイにおいて、各分割部分(segment)は、ステレオ対のうちいずれか1つの視野(field of view)を表している。従って、分割部分B2はカメラ対A2からの情報を表し、分割部分B3はカメラ分割部分B3からの情報を表す、といった具合である。ディスプレイはまた、全ての観察された分割部分を統一化ディスプレイに結合してもよい。
【0690】
ディスプレイB1は、対応するカメラから特定の距離内(例えば5フィート)に対象物が来たときに分割部分がまず照明されるように設計され得る。ディスプレイB1はさらに、より近い距離(例えば4フィート)にある対象物の存在が、視覚的に区別され得る方法、例えば分割部分の照明を増大する、分割部分を点滅させる、分割部分の色を変えるなどにより、ユーザに表示されるように設計され得る。ディスプレイB1はさらに、対象物がさらにより近づく(例えば3フィート、2フィート、および1フィート)に従って分割部分が変化し(alter)、対象物が特定の最小距離(例えば6インチ)内に来たときに可聴形態の警告が発されるように設計され得る。
【0691】
B1のようなディスプレイは当該分野において周知であり、大型トレーラーの運転手に対象物の近さを告知するために、多くの異なる機構を用い得る。非パラメトリック局所変換(non-parametriclocal transform)アルゴリズムを深度計算に用いることは、このアプリケーションにおいて大きな利点を有する。大型トレーラーA1の後部および側部に位置するカメラからの映像データをを単に表示することは、数個の効果な絵像ディスプレイを必要とし、運転手に大量の情報を呈示してしまうが、そのほとんどは任意の時刻において運転手には無関係であったりする。また、対象物と背景とを示す不異端な映像ディスプレイのみに基づいて運転手が対象物への距離を決定することや、シーン中の比較的小さな構造物に適切に注意を払うことは、非常に困難であり得る。開示するハードウェアおよびソフトウェアは、これらの問題を緩和し得る。
【0692】
大型トレーラーA1をアプリケーション例として用いたが、開示される発明は、ユーザの視界が隠される領域においてリアルタイムの障害物検出および回避を要求する任意のアプリケーションに用いられ得る。また、本発明は、より多くのあるいはより少ないカメラを用いて実施することができ、これらは図65とは異なって設けられ得る。
【0693】
3.目の不自由な人のための対象物の検出
このシステムによって生成されるレンジマップは、目の不自由な人に対して、触覚または聴覚で知覚される環境の表示を提供する。これらのデータを用いるために、優れた「光景理解」は必要ない。なぜなら、人は、レンジ測定値の取得を方向づけ、これらを解釈することがかなりできるからである。レンジを測定する「長いステッキ(LongCane)」を目の不自由な人に与えることで即座に使用される。ヘッドまたは他の動きによってレンジングシステムを方向づけることで、光景のそのエリアにおける選択可能ないくらかの距離レンジにわたって知覚可能なものすべてに対する深度が伝えられる。フィードバックは、シーケンシャルまたはパラレル(2次元)な様式の聴覚手段(ピッチ、強度等)、触覚コーディング(単一または多重フィンガリングデバイス(T.H.Massieand J.K.Salibury,”The Phantom Haptic Interface:A Device forProbingVirtual Objects,”ASME Winter Annual Meeting,Symposium on HapticIntefaces for Virtual Environment andTeleoperator System,Chicago,November1994;J.P.Fritz,T.P.Way and K.E.Barner,”Haptic representation ofscientific data for visually impairedorblind persons,”Proceedings ofCSUN Technology and Persons with DisabilitiesConference,1996)、接触感知用に配置されたまたはフィンガフィードバック用に構成されたアレイ(J.Fricke and Baehring,H.,”Design of a tactile graphic I/O tablet and itsintegration into apersonal computer system for blind users,”Electronicproceedings of the1994 EASI High Resolution Tactile Graphics Conferenceを参照)、およびシーケンシャルまたはパラレルな様式で深度信号を通信する他の手段を通して行われ得る。T.Heyes,”SonicPathfinder:Electronic Travel Aids for the Vision Imparied,Remotesensing usingUltra-Sonics,”Perceptual Alternatives,Melbourne,Australia;P.Meijer,”An Experimental System for Auditory Image Representations,”IEEETrans.Biomedical Engineering,V39,N2,1992,112-121頁を参照のこと。
【0694】
4.ディジタルマッピング用深度推定
本発明はまた、むしろ従来の方向測定法において多く応用される。例えば、建築における写真測量分析、工業的視察、ならびに、例えばディジタル地形マッピングおよび顕微鏡的表面評価におけるマクロおよびマイクロレベルでの距離測定である。これらすべてにおいて、リアルタイムセンサス深度演算を導入することによって、より迅速かつより安価なマッピングが可能になり、開発のための新たな機会が得られやすくなる。
【0695】
C.オートフォーカス
従来のオートフォーカス技術は、比較的未完成の傾向にある。例えば、テレビまたはフィルム製造において、動いている対象物(例えば、俳優)に焦点を当てる場合、カメラオペレータによる手動制御、または特定距離において焦点を予め設定しておく必要が頻繁にあり、俳優は、正確にかつ予め設定されたように移動することが要求される。ホームビデオカメラにおけるオートフォーカスは、大抵、イメージの「ぼやけ具合(fuzziness)」の度合いを解釈し、ぼやけ具合を減少させ、対象物間で明確な境界線を形成するように焦点を変更する回路からなる。
【0696】
開示される発明は、主要カメラをオートフォーカスするために用いられ得る。1つのこのような応用において、図68を参照しながら上述したのと同様の主要カメラおよび第2のカメラが用いられ得る。ショットの初めにおいて、主要カメラD2および第2のカメラD3は、移動する対象物の1つの局面、例えば、俳優の目に焦点が当てられ得る。フレーム毎に焦点対象物を追跡するために、開示される非パラメトリック局所変換が用いられ得る。各場合において、同じカメラからの各フレームと前のフレームとを比較し、局所変換を用いて、後のフレームのどの近隣のピクセルが、前のフレームの参照ピクセルと同じであるかを決定することによって、焦点対象物は、マスターカメラおよび第2のカメラによって形成されるフレームにおいて識別され得る。適切に較正されたカメラ配置が用いられる場合、このような比較によるイメージ修正は必要ない。
【0697】
次のフレームにおいて焦点対象物が一旦識別されると、焦点対象物への距離が1つのフレームから次のフレームへと変化するかどうかを決定するために、深度測定値が用いられ得る。深度が変化する場合、カメラの焦点距離は、このような変化を反映するように自動的に変更される。同様に、多数の特徴が、コレクションに対する最適なフォーカス制御のために追跡され得る。
【0698】
D.映像圧縮
格納および伝送のための映像イメージの圧縮は、コンピュータおよびビデオ産業が直面している最も困難で重要な問題の1つである。MPEGおよびMPEG2などの従来のシステムは、フレームの他の近隣フレームからの変化を表す部分を格納および伝送し、光景の非変化部分は前のフレームに基づいて再生成されるように設計される。
【0699】
このような圧縮アルゴリズムは、背景が多くのクラッタおよび/または動きを含む映像シーケンスの場合には困難となる。背景は映像シーケンスのためには重要ではないかも知れないが、従来の圧縮システムでは、「重要な」前景の動きと「重要ではない」背景の動きとの間を区別するのは困難であり、従って、両タイプの情報を同等に処理するため、多大な帯域幅が必要となり得る。利用可能な処理パワーおよび/または帯域幅によってはこのような映像シーケンスを扱うことができない場合は、画像の質が目視によっても低下し得る。
【0700】
開示した本発明は、背景の特徴を前景の特徴から容易に区別し得るようにすることによって、圧縮アルゴリズムにおいて有用となり得る。上述のタイプのデュアルカメラシステムは、映像シーケンスのための深度情報を計算および格納するために使用され得る。このような深度情報は、各ピクセルの属性として、ルミナンスおよびクロミナンス情報を格納するために用いられる方法と類似の方法で格納され得る。
【0701】
制限された帯域幅のみが利用可能な場合は、このような情報により、圧縮アルゴリズムを、より重要な前景情報を送ることに集中させ得る。例えば、前処理ステップでは、光景の背景(例えば、カメラから10フィート離れた位置のすべてのもの)を表すピクセルを1つおきに取り去って、直前のフレームからの背景ピクセルに置き換えてもよい。これにより、イメージ全体(背景および前景)はフレーム1に対しては格納されるが、フレーム2は、フレーム1の背景にフレーム2の前景を重ねたものを表す。フレーム1では隠れているがフレーム2では前景の移動によって可視となる背景ピクセルは、フレーム2の背景から取り出すことができる。本システムは、ユーザが背景の動きが特に重要である映像シーケンスを選択し、このようなシーケンスを上述のプロセスから除外することができるように設計され得る。
【0702】
これらの変更されたフレームは次に、MPEGエンコーダなどの標準圧縮装置に供給され得る。開示された本発明は、フレームからフレームへの背景の変化を最小限にすることによって、このようなエンコーダがより迅速に動作して、エンコードされた映像ストリームを、より狭い帯域幅しか必要とせずに出力することを可能にし得る。
【0703】
もしくは、深度情報は、このような情報を考慮に入れるように設計されたアルゴリズムによって直接使用され得る。上述のzキー処理は、このようなアルゴリズムの1つの極端な例を構成する。すなわち、背景情報を、伝送前に映像シーケンスから完全に除去し得る。これは特に、デスクトップ映像会議などの、背景情報が重要ではないアプリケーションにとって有用であり得る。
【0704】
もしくは、比較的静的におよび均一に変化している背景情報は、各フレームに対して一種類の共通ベクトルを使用して伝送され得る。例えば、カメラがクローズアップまたはミディアムショットで演技者を追跡するように移動している場合は、カメラの視野角が変化しているという事実によって生じる変化以外は、背景は完全に静止状態であり得る。このような環境下では、背景イメージの変化は比較的単純な一方向の移動を表し得る。このような移動は一種類のベクトルによって容易に表され得る。この一種類のベクトルは、復号化アルゴリズムに、前の背景を用いるべきであるが、特定の方法でトランスレートさせるべきであると知らせ、前のフレームからシフトインされた情報が供給される。
【0705】
E.包囲型ディスプレイ
仮想空間および一般に包囲型(immersive)ディスプレイは、参加者の目線の位置および方向が、イメージが参加者が見るために生成される各瞬間において既知であることをその基本的な要件とする。映像ディスプレイが観察者の知覚予想と密接に連結しているとき、すなわち観察者が見るイメージが観察者の動きと一貫しているときのみに、経験が確実なものとなる。この連結は、現時点では、ユーザが外部に装着するセンサの使用によって実現されているが、これらのセンサは、経験にとって邪魔になり気を散らすものである。
【0706】
そのようなセンサは開示された発明に基づく映像オリエンテーションシステムによって置換され得る。そのようなシステムにおいては、1以上のステレオカメラ対が、空間内のユーザの頭の位置と方向を正確に決定するために使用される。開示された非パラメトリック局所変換は、上述した方法に類似の方法で、ユーザの頭の特定の位置の移動を追従するために用いられ得る。そのようなリアルタイム頭トラッキングは、頭の位置とオリエンテーションを正確に突き止めるように設計されたセンサの必要をなくす。
【0707】
F.視線追跡
視線方向物体追跡は、長年に亘り科学研究の領域の1つであった。視線方向物体追跡は、精神物理研究に始まり(例えば、H.D.CraneとC.M.Steele、”Generation-VDual-Purkinje-ImageEyetracker”、Applied Optics 24(4)527〜537頁、1985年;H.D.Crane、”ThePurkinjeImage Eyetracker”、Visual Science and Engineering、D.Kelly編集、DekkerPublishing、1994年参照)、より最近ではヒューマン−コンピュータインタフェースの領域において試みられている(例えば、R.J.K.Jacob、”EyeTrackingin Advanced Interface Design”、Virtual Environments andAdvancedInterface Desin、258〜288頁、W.BarfieldとT.A.Furness編集、OxfordUniversity Press、NewYork、1995年参照)。多くのこの研究は外部に装着された感知装置(例えば、Skalar Instruments,Inc.(現在はBruxtonCorporation)の目の追跡のための電磁気鞏膜サーチコイルシステム参照)又はアクティブイルミネーション(LEDエミッタのような)を使用していた。
【0708】
控えめで目立たない目線監視は好まれるが、これは余り一般的でなく、より難しい。視線追跡は、高速処理が必要であることによってさらに難しくされている。高速処理が必要なのは、眼が非常に高速に動き、人間が30ミリ秒(映像の1フレーム)よりはるかに小さいオーダーの潜伏時間で知覚するからである。眼の位置及び視線方向を知ることにおける遅延は、決定及び適切な情報の表示における遅延を導く。このことは、眼の緊張、疲労、吐き気、及び視覚者側の苛立ちを引き起こす。
【0709】
正確性はもう1つの困難である。目線推定の解像度が足りないことにより、多くの目線関連タスクは性質上定性である。対象は空間の狭い領域内に位置することが必要であり、分析はこの位置についての仮定に基づいている(例えば、R.J.K.Jacob、”EyeTracking in Advanced Interface Design”、VirtualEnvironments and AdvancedInterface Design、258〜288頁、W.BarfieldとT.A.Furness編集、OxfordUniversity Press、New York、1995年参照)。
【0710】
本発明は同時に両目を追跡することも可能にし、これにより固定位置と目線位置とが決定され得る。
【0711】
従来技術の視線追跡システムは不便なセンサか、ユーザが小さな所定の領域に位置することかのいずれかを要求する。開示された発明は、視線追跡システムが高速かつ正確にユーザの頭と眼の位置を識別することを可能にすることにより、そのような制限を回避するために使用され得る。このことは頭を背景(背景は大きく離れている)とは別の物体として識別することにより達成され得る。また、形状及びオリエンテーションに関する正確な情報を提供し、虹彩位置及び方向を局在させることにより達成され得る。
【0712】
視覚者の目線位置及び目線方向の認識が要求される任意のタスクは、ここで述べられるシステムから恩恵を受ける。これらの応用の近い範囲での目標においては、コンピュータオペレータは、自分の行動場所を制御し、仮想ページを持ち上げて動かし、オブジェクトを選択し、インタラクティブ編集コマンドを起動するための、手で操作するマウスポインティングデバイスよりむしろ、自分の眼を使って、自分のディスプレイの前に座っていることができる。コンピュータオペレータがウェブサイトに移動すると、コンピュータオペレータの注意は目的を説明するために監視されている。これらの応用のより遠い目標においては、3次元動画鑑賞者はディスプレイ環境の中で動きながら、自動立体視ディスプレイシステムを見ることができる(例えば、R.EzraらとSharpLabs、”Observer Tracking autostereoscopic 3Ddisplay system”、PhotonicsWest Conference、San Jose CA,3012-23、1997年)。この自動立体視ディスプレイシステムは、その位置にかかわらず適当な画素データを鑑賞者の目に向けさせる。
【0713】
見る方向の認識は、視覚者の視覚感度に合うように選択された、変化するデータの品質を提供することにより、表示の帯域幅を削減するためにも使用され得る。例えば、高い分解能は視覚者の中心窩視覚のために提供され、低い分解能は周辺に向かって減少する品質で提供される。このことは、自動立体視ディスプレイシステムにおいて、相当の計算上の通信帯域幅を節約する。
【0714】
G.視点従属ディスプレイ
仮想現実システムは、一般にユーザに人工的な環境を通じてナビゲートすることを可能にする。しかしながら、そのような環境は一般に動く物体によって構築されている。映像品質のイメージに基づいた仮想世界の創造は、一般に経済的に合理的な方法で実行することが困難であると考えられている。
【0715】
1.範囲マップを使用した視覚合成
本発明は視覚補間を可能にするディスプレイを含む、映像品質の仮想世界ディスプレイの創造を可能にする。視覚補間は、カメラによって得られたことがない透視光景を表示することを可能にする。例えば、M.LevoyとP.Hanrahan、”LightField Rendering”、SIGGRAPH 97.ACM、及びD.Scharstein、”Stereo Vision forView Synthesis”、Computer Vision and Pattern Recognition Conference、SanFrancisco、852〜858頁、1996年を参照のこと。
【0716】
範囲推定と関連するイメージ画素は、あたかも別の視野(perspective)から見たかのようにイメージ上に置かれうる。このことは視点従属ディスプレイの合成を可能にする。例えばアフリカの自然保護領域のような遠隔地点の実データが得られた状況を考える。このとき視覚者は、他のどこかに位置して、この範囲に基づく視覚合成を通じて同じ場所であるように見える所を動き回る経験を与えられている。2以上のカメラが像を補正し、範囲はカメラ対の間で計算される。我々および他の者(例えば、D.Scharstein、”StereoVisionfor View Synthesis”、Computer Vision and Pattern RecognitionConference、SanFrancisco、852〜858頁、1996年参照)は、この知覚的な再構築オフラインを実証した。リアルタイム距離測定(ranging)はそのような方法に親しむ者によって、従前に実証された非リアルタイムディスプレイから完全に直接的に開発されることを期待され得る。
【0717】
2.3D光景モデリング
特定の場所の3次元表現の構築は、上述の距離測定システムによって促進される。例えば、建物の内部はステレオイメージングシステムによって連続して観察され得る。ここで、連続範囲記述は、距離セットの間の通信を確立するための、距離測定と動きトラッキング特徴の両方を使用して統合されている(例えば、H.BakerとR.BollesとJ.Woodfill、”RealtimeStereo and MotionIntegration for Navigation”、ISPRS Spatial Informationfrom DigitalPhotogrammetry and Computer Vision、1994年9月、Munich Germany、17〜24頁参照)。そのような連続した距離および強度情報の蓄積は、種々の視点からの自動車又は家の連続したリアルタイム観察に実証されるような、物体ジオメトリのモデリングに等しく適用可能である。
【0718】
図67は、この適用における本発明の使用の単純な例を表す。この図において、ステレオカメラ対C1およびC2は、カメラ対の視界が例えば直交する様式で交差するように配置される。この視界は建物C3と木C4、C5を含む。
【0719】
上述したように、各カメラ対は光景のデジタルイメージをキャプチャーし格納する。各カメラ対はまた、各ピクセルについての深度情報を計算する。1つの視界の1つの物体は、2つのカメラ対の関係と各カメラ対から各物体までの距離を考慮に入れることによって、他の視界の同じ物体と関連づけられ得る。この方法において、ステレオカメラ対C1によりキャプチャーされた建物C3のイメージは、ステレオカメラC2によりキャプチャーされた同じ建物のイメージと関連づけられ得る。深度情報を有効かつリアルタイムにキャプチャーすることにより、開示された発明はそのような関連づけを可能にする。関連づけには、各カメラ対から各物体までの距離の認識が要求され、そのような距離情報はそれから各イメージに示されるように各物体を関連づけるために使用される。
【0720】
1つの物体が2つの視界において関連づけられると、その物体の3次元イメージが作成される。例えば、図67において、建物C3の前面および1つの側面のイメージが入手できてもよい。この建物の他の側面は、イメージの他の側面に配置されたカメラ対を要求する可能性がある。
【0721】
3次元イメージが構築されると、本来の知覚された各物体への距離と共に、ユーザの知覚された物理的な位置を考慮に入れて、そのイメージを通じてユーザをナビゲートすることが可能となる。
【0722】
この例においては、距離情報の登録は同時に得られた深度データセットの2つの対を一致させることによって得られた。別のアプローチはデータが直接統合され得るように予めカメラセットを較正し、又は上述したように、個別の特徴を追従するためにカメラの動きを使用することである。個別の特徴を追従するためにカメラの動きを使用する場合、観察された動きはデータ統合のためのカメラ位置の獲得を明らかにする。
【0723】
H.動き分析
提示されたリアルタイムシステムの動き追跡能力は、信頼できる高速空間情報の欠乏により分析方法が妨げられていた適用領域を開ける。我々の範囲と動きの結果は特定のプロセスの動的モデルと共に取得されて、高度な注釈、制御および測定可能性を与える。
【0724】
例えば水泳、ランニング、空手、又はダンスのような、特定の一連のアクションを要求するスポーツ又は物理的な活動の研究を考える。そのような連続を、「本来の」活動を行う方法を表現する、理想化された連続に関連づけることはしばしば有用である。そのような活動の2次元イメージは、特定の価値ある情報をキャプチャーし損なうことになる。それは、そのようなイメージでは、例えば運動者の身体の部分への距離の正確な計算ができないからである。
【0725】
開示された範囲を発見する発明は、特に図67に図示されるように、直交する視界に方向付けされたステレオカメラ対と共に使用されたとき、上記のような用途に使用され得る。そのようなカメラは、熟練した運動者を表現するイメージおよび深度情報を記録するために使用され得る。そのような情報は、その後、トレーニングする運動者を表現するイメーンおよび深度情報の上にオーバレイされ得る。このことは、例えば、前方、後方、側方、上面視点から示されるオーバーレイされたイメージを生ぜしめ得る。それぞれの場合において、熟練者の動きと練習生の動きとの間の差は強調され得る。
【0726】
そのような能力は、歩行分析又は身体治療評価におけるように、機能不全に対して等しく有効である(D.A.Meglan、”EnhancedAnalysis of Human Locomotion”、OhioState University、PhD Thesis、1991年参照)。
【0727】
I.入力装置としての手の使用
もしステレオカメラ対がユーザの映像スクリーンディスプレイ上又はその近くに位置しているならば、開示された発明は、ディスプレイの前の規定された視界内において起こる、手のジェスチャーのリアルタイム認識を可能にする。従って、例えばステレオカメラは、仮想彫刻アプリケーションにおけるユーザの手の位置およびオリエンテーションを識別するために使用され得る。仮想彫刻アプリケーションにおいては、手の位置およびオリエンテーションが追従されることにより、ユーザがスクリーン上に表現される仮想物体を「形作る」ことが可能にされる。同様に、特定のユーザのジェスチャー(例えば、スクリーンを指し示す)は、標準のマウスと組み合わされて、又は標準のマウスの代替として、仮想ディスプレイの制御メカニズムとして使用され得る。例えば、R.J.K.Jacob、”EyeTracking in Advanced Interface Design”、VirtualEnvironments and AdvancedInterface Design、258〜288頁、W.BarfieldとT.A.Furness編集、OxfordUniversity Press、NewYork、1995年を参照のこと。
【0728】
J.高度なナビゲーションおよび制御
高度なナビゲーションおよび制御の能力は、本明細書において述べられているリアルタイム範囲決定および動作分析システムが、移動する乗物に取り付けられることにより実現可能となる。単純なナビゲーションタスクにおいては、範囲決定システムは乗物の前の地表が平坦かつ水平ではない場合に、警告として作用する。このことは窪みのような障害を識別するために使用され、あるいは乗物が舗装された地表から外れる危険にある場合を判定するために使用される。
【0729】
範囲決定システムによって描写されるより複雑な形状の分析により、障害の検知および弁別、移動する物体のトラッキング、および多数の移動する装置の整合が可能となる。交差点に置かれると、範囲決定および動きシステムは交通、歩行者および他の相互作用する通りの要素を監視することができ(N.FerrierとS.RoweとA.Blake、”RealTime Traffic Monitoring”、2ndIEEE Workshop on Applications of ComputerVision、Sarasota、Florida、1994年12月5〜7日;D.BeymerとP.McLauchlanとB.CoifmanとJ.Malik、”AReal-TimeComputer Vision System for Measuring Traffic Parameters”、ComputerVisionand Pattern Recognition Conference、Puerto Rico、1997年)、ある所定の状況のための特定の行動(子供が車の座席に座っていると判定されたときにエアバッグの力を緩和する、猫・鹿などであると判定された侵入者に対して音又は水を向ける、制御された区域に入る人にその存在の危険を警告し又はその回りの危険な活動の向きを変える、ごみ・再生利用可能物・果物などのよりな種々の素材を調査し評価する等のような行動)を呼び起こす特殊化された警報として機能することができる。
【0730】
乗物の周辺に設置されると、本発明はナビゲーションおよび障害回避制御のために情報を提供する。前方距離および動き測定は、乗物自体の道路に対する位置と共に、他の乗物および潜在的な障害の存在、位置および速度を示す。側方および後方の範囲測定は、乗物の横方向のドリフト、他の近づく乗物、および一般的な操作状態についての等しく重要な情報を提供する。本発明の処理のリアルタイム高帯域幅の性質は、乗物の護送を高速移動に安全に近接して結合させることを可能にする。それは、パーキングおよびドッキングのような、近い範囲の操作における自動ナビゲーションの基礎として使用され得る。
【0731】
VI.要旨
要約すれば、本発明の様々な面には、ソフトウェア/アルゴリズム、ハードウェア実現、および応用が、単独でまたは組み合わせて含まれる。これらの実施形態は、データの組を分析し、それらの相関性を決定し、そして、これらのデータの組に含まれる実体的(substantive)属性情報を抽出する。ある形態において、上記データの組は、何らかのプロセスの内部で、または何らかの外部刺激から得られる。別の形態の1つにおいて、これらのデータの組は、同じ光景を観察する空間的に変位させた2つのカメラからのイメージデータである。上記の様々な実施形態によって、データをより使用可能な形式に変換し(例えば、センサス変換)、その後、変換されたデータを相関させて、2つのデータの組の関係から導出され得る何らかの所望の実体的な情報を表す出力を発生させる。
【0732】
本発明のいくつかの実施形態は、イメージ処理の分野において、ファクショナリズムを許容する局所変換(local transform)を規定および適用する。さらに、本発明は、最先端技術からの進歩を明らかにするその他の特性を有する:(1)高い感度−−局所変換は、所与のイメージ中に有意な局所的変化を提供するデータを生成し、高密度組の結果値を生成する。いくつかの他の方法は低密度な(sparse)結果を生成する;(2)高い安定性−−本スキームは、2つのイメージ間における対応点の近傍において同様の結果を生じる;(3)上記変換は、イメージゲインまたはバイアスにおける、センサまたはカメラハードウェアの相違に対して不変の結果を生じ、これにより、適切にステレオ像(imagery)を処理する;(4)本発明は、他のアルゴリズムよりも空間効率的である。必要とされるのは、小さな格納バッファ組および2つの処理用イメージである。この空間効率特徴は、ハードウェア実現のために必要なオーバーヘッドを低減し、より多くの局所参照を用いることによって処理速度を高める;(5)本発明は、各ピクセル、各視差毎に最大でも4つの命令しか必要としない内部ループを有するので、他のアルゴリズムよりも時間効率的である;(6)本発明のいくつかの実施形態は、ステレオ読み値が信頼性を持つ、または信頼性を持たない点を決定するための、対象演算(interestoperation)と呼ばれる特有
の信頼尺度を含む;(7)リアルタイム形状(real-time feature)トラッキングおよび局在化を必要とする様々な規律(disciplines)に対する本発明の産業的な利用方法は、現時点では利用可能ではない機能性を得ることを可能にし、プロセスの信頼性を大幅に高める。
【0733】
上記の発明の好適な実施形態の説明は、説明および記載の便宜上示したものである。これは全てを網羅しているわけではなく、開示されている厳密な形態に本発明を限定するものでもない。明らかに、多数の改変例および変形例が当業者には明らかである。当業者であれば、本発明の趣旨および範囲から逸脱することなく、本明細書中に記載した応用に代えて他の応用を使用し得ることが容易に理解されるであろう。従って、本発明は、以下に記載の請求の範囲によってのみ限定される。
【図面の簡単な説明】
本発明の上記の目的および概要は以下の文と添付の図面を参照してよりよく理解され得るであろう。
【図1】図1は、二つのセンサまたはカメラが光景に関するデータをキャプチャーし、そのデータを演算システムに供給する本発明の特定の産業用途を示す。
【図2】図2は、本発明が実行されるPCI準拠バスシステムを形成するブロック図を示す。
【図3】図3は、演算要素、データパスユニット、クロック制御ユニット、および、PCIインタフェースユニットを含む本発明の特定のブロック図表示を示す。
【図4】図4は、様々な機能がデータを演算し、取り扱い、操作して、他の有用なデータを発生させる本発明の一つの実施形態の高レベル表現を示す。
【図5】図5(A)は、右イメージが参照として指定されたときの所与の視差に対する相対ウインドウ位置を示し、一方で図5(B)は、左イメージが参照として指定されたときの所与の視差に対する相対ウインドウ位置を示す。
【図6】図6(A)および図6(B)は、X×Y輝度イメージおよびそれらそれぞれの参照イメージ要素に関した二つの特定の9×9変換ウインドウを示す。
【図7】図7は、参照位置(x,y)に中心を置かれたセンサスベクトルを計算するために使用される9×9センサスウインドウにおけるイメージ輝度データの一つの特定の選択およびシーケンスを示す。
【図8】図8(A)から図8(C)は、イメージデータを横断する動作ウインドウの動きを図示する。
【図9】図9(A)から図9(C)は、本発明の一つの実施形態を略して図示する。
【図10】図10(A)は、本発明の一つの実施形態がどのようにして演算するかを決定する多数の周縁状態に関連した10個の特定領域を示し、図10(B)は、他の9個の領域に関する領域10の相対サイズを示し、図10(C)は、領域10の左最上部角の適用可能なウインドウの位置を示す。
【図11】図11(E)から図11(J)は、動作ウインドウのサイズが7×7である場合の10個の領域の位置とサイズを図示する。
【図12】図12は、二つのウインドウの相関整合を示す。
【図13】図13(A)は、相関合計バッファの構造を示し、図13(B)は、同一の相関バッファの概略三次元表示を示す。
【図14】図14(A)から図14(D)は、動作ウインドウに関する列合計アレイ[x][y]の使用および演算を図示する。
【図15】図15(A)から図15(D)は、相関合計、対象計算、および、視差計数計算において使用される列合計アレイ[x][y]の例示的な更新シーケンスを示す。
【図16】図16(A)から図16(G)は、左右一貫性検査を導入する図を与える。図16(A)から図16(D)は、左イメージまたは右イメージのいずれかが参照として指定されるときの視差に対してシフトする相対ウインドウを示す。図16(E)および図16(F)は、左および右センサスベクトルの部分を示す。図16(G)は、相関合計バッファの構造およびそこに格納されたイメージ要素と対応する視差データを示す。
【図17】図17は、本発明の一つの実施形態によるサブピクセル推定を図示する。
【図18】図18は、用いるかどうか選択可能な様々な構成を有する本発明の一つの実施形態の高レベルフローチャートを示す。
【図19】図19は、センサス変換演算のフローチャートおよびセンサスベクトルの発生のフローチャートを示す。
【図20】図20は、すべての領域1から10に対する相関合計および視差最適化機能の一つの実施形態の高レベルフローチャートを示す。
【図21】図21は、領域1および2に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図22】図22は、領域3および4に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図23】図23は、領域5に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図24】図24は、領域6に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図25】図25は、領域7および8に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図26】図26は、領域9に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図27】図27は、領域10に対する相関合計および視差最適化機能の一つの実施形態のフローチャートを示す。
【図28】図28は、領域1から10に対する対象演算の一つの実施形態の高レベルフローチャートを示す。
【図29】図29は、領域1および2に対する対象演算の一つの実施形態のフローチャートを示す。
【図30】図30は、領域3および4に対する対象演算の一つの実施形態のフローチャートを示す。
【図31】図31は、領域5に対する対象演算の一つの実施形態のフローチャートを示す。
【図32】図32は、領域6に対する対象演算の一つの実施形態のフローチャートを示す。
【図33】図33は、領域7および8に対する対象演算の一つの実施形態のフローチャートを示す。
【図34】図34は、領域9に対する対象演算の一つの実施形態のフローチャートを示す。
【図35】図35は、領域10に対する対象演算の一つの実施形態のフローチャートを示す。
【図36】図36は、相関合計および視差最適化機能の一つの実施形態において使用されるようなデータ収納概念を図示する。
【図37】図37は、左右一貫性検査の一つの実施形態のフローチャートを示す。
【図38】図38は、領域1から10に対するモードフィルタ演算の一つの実施形態の高レベルフローチャートを示す。
【図39】図39は、領域1および2に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図40】図40は、領域3および4に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図41】図41は、領域5に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図42】図42は、領域6に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図43】図43は、領域7および8に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図44】図44は、領域9に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図45】図45は、領域10に対するモードフィルタの一つの実施形態のフローチャートを示す。
【図46】図46は、FPGA、SRAM、コネクタ、および、PCIインタフェース要素の4×4アレイが部分トーラス(torus)構成に配置された本発明のイメージ処理システムの一つの実施形態を示す。
【図47】図47は、イメージ処理システムのアレイにおけるデータフローを示す。
【図48】図48は、本発明によるセンサスベクトル発生器のハードウェア実装の一つの実施形態の高レベルブロック図を示す。
【図49】図49は、センサスウインドウの実質的に上半分に位置するイメージ要素を有する中心参照イメージ要素間の比較結果を表す最下位16ビットのためのセンサスベクトル発生器を示す。
【図50】図50は、センサスウインドウの実質的に下半分に位置するイメージ要素を有する中心参照イメージ要素間の比較結果を表す最下位16ビットのためのセンサスベクトル発生器を示す。
【図51】図51は、センサスウインドウにおけるそれぞれの線に対する32ビットセンサスベクトルを演算するために使用される一連の比較器およびレジスタ要素を示す。
【図52】図52は、相関演算および最適視差決定の高レベルデータフローを示す。
【図53】図53(A)および図53(B)は、本発明の一つの実施形態の並列パイプライン化データフローを記述するために使用され得る左および右イメージに対する左および右センサスベクトルを示す。
【図54】図54は、本発明の一つの実施形態の並列パイプライン構造のブロック図を示す。
【図55】図55は、D=5のときに左および右センサスベクトルがどのようにそしていつ相関ユニットを通って進行するかの擬似タイミング図を示す。
【図56】図56は、本発明の待ち(queueing)バッファの一つの実施形態を示す。
【図57】図57は、本発明の相関ユニットの一つの実施形態のハードウェア実装を示す。
【図58】図58は、物体の垂直移動がリアルタイムに処理され得る動き解析のための並列パイプライン化システムの一つの実施形態を示す。
【図59】図59は、本発明のイメージ処理システムの部分に関連するいくつかの“スーパーピン”(superpin)バスおよびコネクタを示す。
【図60】図60は、本発明のイメージ処理システムアレイ構造の詳細図を示す。
【図61】図61は、一つのFPGA演算要素および一対のSRAMの詳細図を示す。
【図62】図62は、PCIインタフェースチップおよびデータパスチップの詳細図を示す。
【図63】図63は、クロック制御チップの詳細図を示す。
【図64】図64は、上部および底部の外部コネクタおよびそれらのピンの詳細図を示す。
【図65】図65は、不明瞭な光景に対する物体検出のための本発明の利用を示す。
【図66】図66は、図65で示された実施形態についてセグメントに分割した表示を示す。
【図67】図67は、映像品質バーチャルワールド表示のための本発明の利用を示す。
【図68】図68は、ブルースクリーン処理用途を改善するための本発明の利用を示す。
【図69】図69は、複数のイメージ合成シナリオにおける本発明の利用を示す。
Claims (3)
- それぞれが複数の要素を有する第1のデータの組および第2のデータの組の複数の要素を処理するデータ処理システムにおいて複数の視差結果を発生させる方法であって、該データ処理システムは、変換ユニットと、該変換ユニットに接続されている相関ユニットと、該相関ユニットに接続されている視差発生ユニットとを含み、
該方法は、
該変換ユニットが、該第1のデータの組および該第2のデータの組の複数の要素であって、該第2のデータの組の複数の選択された要素のそれぞれから特定の視差だけオフセットされている該第1のデータの組の第1の要素を含む複数の要素を受信することと、
該変換ユニットが、該第1の要素および該複数の選択された要素のそれぞれを含む該受信された複数の要素に対して変換を行うことであって、該変換ユニットは、該第1のデータの組および該第2のデータの組において選択された第1のイメージデータのそれぞれに対して、複数の第1のベクトルおよび複数の第2のベクトルを発生させ、該第1のベクトルおよび該第2のベクトルのそれぞれは、該選択された第1のイメージデータと、該選択された第1のイメージデータの周囲にある複数の選択された第2のイメージデータとの関係を表す複数の値を有し、該複数の値は、該選択された第1のイメージデータの位置に対する該複数の選択された第2のイメージデータの位置に従って順序付けられている、ことと、
該相関ユニットが、該複数の第1のベクトルと該複数の第2のベクトルとに基づいて、該変換された第1の要素と該複数の変換された選択された要素のそれぞれとを相関させることにより、各視差に対して相関結果を発生させることと、
該視差発生ユニットが、該第1の要素に対する視差結果を発生させることであって、該第1の要素に対する視差結果を発生させることは、
所定の最適化基準に従って、該相関結果のうちの最適な相関結果を選択することによって予備視差結果を発生させるステップと、
第1の隣接相関結果および第2の隣接相関結果として、該予備視差結果の次に高い視差および次に低い視差に対する該相関結果を選択するステップと、
該第1の隣接相関結果および該第2の隣接相関結果および該予備視差結果のサブピクセル推定関数によって該視差結果を計算するステップと
を介して行われる、ことと
を包含する、方法。 - 前記サブピクセル推定関数は、実質的にV形に整形された区分関数である、請求項1に記載の方法。
- 前記サブピクセル推定関数は、
前記第1の隣接相関結果から前記予備視差結果を引いたものに等しい第1の差を計算するステップと、
前記第2の隣接相関結果から該予備視差結果を引いたものに等しい第2の差を計算するステップと、
該第1の差および該第2の差の最小値を該第1の差および該第2の差の最大値の2倍で割り算することによって得られる演算結果を0.5から引いたものに等しいオフセットを計算するステップと、
該予備視差結果と該オフセットとの和として該視差結果を計算するステップと
を包含する、請求項1に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/839,767 | 1997-04-15 | ||
US08/839,767 US6215898B1 (en) | 1997-04-15 | 1997-04-15 | Data processing system and method |
PCT/US1998/006675 WO1998047061A2 (en) | 1997-04-15 | 1998-04-02 | Data processing system and method for determining and analyzing correspondence information for a stereo image |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007252770A Division JP2008033958A (ja) | 1997-04-15 | 2007-09-27 | データ処理システムおよび方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000512790A JP2000512790A (ja) | 2000-09-26 |
JP4168125B2 true JP4168125B2 (ja) | 2008-10-22 |
Family
ID=25280573
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP54397298A Expired - Fee Related JP4168125B2 (ja) | 1997-04-15 | 1998-04-02 | データ処理システムおよび方法 |
JP2007252770A Withdrawn JP2008033958A (ja) | 1997-04-15 | 2007-09-27 | データ処理システムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007252770A Withdrawn JP2008033958A (ja) | 1997-04-15 | 2007-09-27 | データ処理システムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (6) | US6215898B1 (ja) |
EP (1) | EP0923757A2 (ja) |
JP (2) | JP4168125B2 (ja) |
AU (1) | AU716654B2 (ja) |
CA (1) | CA2258293A1 (ja) |
WO (1) | WO1998047061A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10872432B2 (en) | 2018-01-05 | 2020-12-22 | Panasonic Intellectual Property Management Co., Ltd. | Disparity estimation device, disparity estimation method, and program |
Families Citing this family (594)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352400B2 (en) | 1991-12-23 | 2013-01-08 | Hoffberg Steven M | Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore |
US6693666B1 (en) * | 1996-12-11 | 2004-02-17 | Interval Research Corporation | Moving imager camera for track and range capture |
US6215898B1 (en) * | 1997-04-15 | 2001-04-10 | Interval Research Corporation | Data processing system and method |
US6097851A (en) * | 1998-03-31 | 2000-08-01 | Agilent Technologies | Low latency correlation |
US6438497B1 (en) | 1998-12-11 | 2002-08-20 | Symyx Technologies | Method for conducting sensor array-based rapid materials characterization |
US6477479B1 (en) | 1998-12-11 | 2002-11-05 | Symyx Technologies | Sensor array for rapid materials characterization |
CA2317743A1 (en) * | 1998-12-11 | 2000-06-22 | Paul Mansky | Sensor array-based system and method for rapid materials characterization |
US7904187B2 (en) | 1999-02-01 | 2011-03-08 | Hoffberg Steven M | Internet appliance system and method |
EP1126409A4 (en) * | 1999-05-10 | 2003-09-10 | Sony Corp | IMAGE PROCESSING APPARATUS AND METHOD, AND ROBOT THEREOF |
US6781606B2 (en) * | 1999-05-20 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | System and method for displaying images using foveal video |
US6931384B1 (en) * | 1999-06-04 | 2005-08-16 | Microsoft Corporation | System and method providing utility-based decision making about clarification dialog given communicative uncertainty |
JP2001005675A (ja) * | 1999-06-21 | 2001-01-12 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
US7626594B1 (en) * | 1999-08-01 | 2009-12-01 | Puredepth Limited | Interactive three dimensional display with layered screens |
WO2001015132A1 (en) * | 1999-08-19 | 2001-03-01 | Deep Video Imaging Limited | Control of depth movement for visual display with layered screens |
JP2003507827A (ja) | 1999-08-19 | 2003-02-25 | ディープ ヴィデオ イメイジング リミテッド | 多層スクリーンの表示方法 |
CA2419719C (en) * | 1999-08-19 | 2011-03-29 | Deep Video Imaging Limited | Data display for multiple layered screens |
US6674892B1 (en) * | 1999-11-01 | 2004-01-06 | Canon Kabushiki Kaisha | Correcting an epipolar axis for skew and offset |
US20050079524A1 (en) * | 2000-01-21 | 2005-04-14 | Shaw Sandy C. | Method for identifying biomarkers using Fractal Genomics Modeling |
US20050158736A1 (en) * | 2000-01-21 | 2005-07-21 | Shaw Sandy C. | Method for studying cellular chronomics and causal relationships of genes using fractal genomics modeling |
US7366719B2 (en) * | 2000-01-21 | 2008-04-29 | Health Discovery Corporation | Method for the manipulation, storage, modeling, visualization and quantification of datasets |
US20050026199A1 (en) * | 2000-01-21 | 2005-02-03 | Shaw Sandy C. | Method for identifying biomarkers using Fractal Genomics Modeling |
US6701005B1 (en) | 2000-04-29 | 2004-03-02 | Cognex Corporation | Method and apparatus for three-dimensional object segmentation |
US7224357B2 (en) * | 2000-05-03 | 2007-05-29 | University Of Southern California | Three-dimensional modeling based on photographic images |
US7227526B2 (en) | 2000-07-24 | 2007-06-05 | Gesturetek, Inc. | Video-based image control system |
US6678413B1 (en) * | 2000-11-24 | 2004-01-13 | Yiqing Liang | System and method for object identification and behavior characterization using video analysis |
US7043745B2 (en) * | 2000-12-29 | 2006-05-09 | Etalk Corporation | System and method for reproducing a video session using accelerated frame recording |
NZ511444A (en) | 2001-05-01 | 2004-01-30 | Deep Video Imaging Ltd | Information display |
US7110525B1 (en) | 2001-06-25 | 2006-09-19 | Toby Heller | Agent training sensitive call routing system |
DE10201859B4 (de) * | 2002-01-18 | 2004-01-29 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren zur Versorgung eines programmgestützten Informationssystems mit gezielten Ortsinformationen |
US6990639B2 (en) | 2002-02-07 | 2006-01-24 | Microsoft Corporation | System and process for controlling electronic components in a ubiquitous computing environment using multimodal integration |
JP2003274374A (ja) * | 2002-03-18 | 2003-09-26 | Sony Corp | 画像伝送装置及び方法、送信装置及び方法、受信装置及び方法、並びにロボット装置 |
KR100976930B1 (ko) | 2002-03-22 | 2010-08-18 | 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 | 패턴 비교 방법 |
US6668218B1 (en) | 2002-03-27 | 2003-12-23 | Lockheed Martin Corporation | Method and system for target localization |
CA2390350A1 (en) * | 2002-06-10 | 2003-12-10 | Ibm Canada Limited-Ibm Canada Limitee | Incremental cardinality estimation for a set of data values |
US7161579B2 (en) * | 2002-07-18 | 2007-01-09 | Sony Computer Entertainment Inc. | Hand-held computer interactive device |
US7883415B2 (en) | 2003-09-15 | 2011-02-08 | Sony Computer Entertainment Inc. | Method and apparatus for adjusting a view of a scene being displayed according to tracked head motion |
US7623115B2 (en) * | 2002-07-27 | 2009-11-24 | Sony Computer Entertainment Inc. | Method and apparatus for light input device |
US7646372B2 (en) * | 2003-09-15 | 2010-01-12 | Sony Computer Entertainment Inc. | Methods and systems for enabling direction detection when interfacing with a computer program |
US8797260B2 (en) | 2002-07-27 | 2014-08-05 | Sony Computer Entertainment Inc. | Inertially trackable hand-held controller |
US7312816B2 (en) | 2002-07-24 | 2007-12-25 | Freestone Systems, Inc. | Digital observation system |
US20040017333A1 (en) * | 2002-07-24 | 2004-01-29 | Cooper Alan Neal | Universal serial bus display unit |
US7760248B2 (en) | 2002-07-27 | 2010-07-20 | Sony Computer Entertainment Inc. | Selective sound source listening in conjunction with computer interactive processing |
US8686939B2 (en) | 2002-07-27 | 2014-04-01 | Sony Computer Entertainment Inc. | System, method, and apparatus for three-dimensional input control |
US7627139B2 (en) * | 2002-07-27 | 2009-12-01 | Sony Computer Entertainment Inc. | Computer image and audio processing of intensity and input devices for interfacing with a computer program |
US9393487B2 (en) | 2002-07-27 | 2016-07-19 | Sony Interactive Entertainment Inc. | Method for mapping movements of a hand-held controller to game commands |
US8313380B2 (en) | 2002-07-27 | 2012-11-20 | Sony Computer Entertainment America Llc | Scheme for translating movements of a hand-held controller into inputs for a system |
US8570378B2 (en) | 2002-07-27 | 2013-10-29 | Sony Computer Entertainment Inc. | Method and apparatus for tracking three-dimensional movements of an object using a depth sensing camera |
US9474968B2 (en) | 2002-07-27 | 2016-10-25 | Sony Interactive Entertainment America Llc | Method and system for applying gearing effects to visual tracking |
US9682319B2 (en) * | 2002-07-31 | 2017-06-20 | Sony Interactive Entertainment Inc. | Combiner method for altering game gearing |
US20040045007A1 (en) * | 2002-08-30 | 2004-03-04 | Bae Systems Information Electronic Systems Integration, Inc. | Object oriented component and framework architecture for signal processing |
US7017140B2 (en) * | 2002-08-29 | 2006-03-21 | Bae Systems Information And Electronic Systems Integration Inc. | Common components in interface framework for developing field programmable based applications independent of target circuit board |
US20040049609A1 (en) * | 2002-08-29 | 2004-03-11 | Peter Simonson | Mechanism for integrating programmable devices into software based frameworks for distributed computing |
US7397929B2 (en) * | 2002-09-05 | 2008-07-08 | Cognex Technology And Investment Corporation | Method and apparatus for monitoring a passageway using 3D images |
US7920718B2 (en) * | 2002-09-05 | 2011-04-05 | Cognex Corporation | Multi-zone passageway monitoring system and method |
US7400744B2 (en) * | 2002-09-05 | 2008-07-15 | Cognex Technology And Investment Corporation | Stereo door sensor |
NZ521505A (en) | 2002-09-20 | 2005-05-27 | Deep Video Imaging Ltd | Multi-view display |
US7225324B2 (en) * | 2002-10-31 | 2007-05-29 | Src Computers, Inc. | Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions |
US6879879B2 (en) * | 2002-10-31 | 2005-04-12 | Hewlett-Packard Development Company, L.P. | Telepresence system with automatic user-surrogate height matching |
US20040136485A1 (en) * | 2002-12-19 | 2004-07-15 | Bennett Forrest H. | Method and apparatus for quantum mechanical analysis of molecular systems |
KR100503820B1 (ko) * | 2003-01-30 | 2005-07-27 | 학교법인 포항공과대학교 | 시스톨릭 어레이를 이용한 멀티레이어 실시간 입체 영상정합 시스템 및 방법 |
US7446797B2 (en) * | 2003-02-10 | 2008-11-04 | Activeye, Inc. | User assisted customization of automated video surveillance systems |
US9177387B2 (en) * | 2003-02-11 | 2015-11-03 | Sony Computer Entertainment Inc. | Method and apparatus for real time motion capture |
US7146356B2 (en) * | 2003-03-21 | 2006-12-05 | International Business Machines Corporation | Real-time aggregation of unstructured data into structured data for SQL processing by a relational database engine |
US7665041B2 (en) * | 2003-03-25 | 2010-02-16 | Microsoft Corporation | Architecture for controlling a computer using hand gestures |
US8745541B2 (en) | 2003-03-25 | 2014-06-03 | Microsoft Corporation | Architecture for controlling a computer using hand gestures |
IL155525A0 (en) * | 2003-04-21 | 2009-02-11 | Yaron Mayer | System and method for 3d photography and/or analysis of 3d images and/or display of 3d images |
NZ525956A (en) | 2003-05-16 | 2005-10-28 | Deep Video Imaging Ltd | Display control system for use with multi-layer displays |
US8072470B2 (en) * | 2003-05-29 | 2011-12-06 | Sony Computer Entertainment Inc. | System and method for providing a real-time three-dimensional interactive environment |
US7792335B2 (en) * | 2006-02-24 | 2010-09-07 | Fotonation Vision Limited | Method and apparatus for selective disqualification of digital images |
US7574016B2 (en) * | 2003-06-26 | 2009-08-11 | Fotonation Vision Limited | Digital image processing using face detection information |
US7844076B2 (en) * | 2003-06-26 | 2010-11-30 | Fotonation Vision Limited | Digital image processing using face detection and skin tone information |
US20050015201A1 (en) * | 2003-07-16 | 2005-01-20 | Sarnoff Corporation | Method and apparatus for detecting obstacles |
US8323106B2 (en) * | 2008-05-30 | 2012-12-04 | Sony Computer Entertainment America Llc | Determination of controller three-dimensional location using image analysis and ultrasonic communication |
US10279254B2 (en) | 2005-10-26 | 2019-05-07 | Sony Interactive Entertainment Inc. | Controller having visually trackable object for interfacing with a gaming system |
US9573056B2 (en) * | 2005-10-26 | 2017-02-21 | Sony Interactive Entertainment Inc. | Expandable control device via hardware attachment |
US7874917B2 (en) | 2003-09-15 | 2011-01-25 | Sony Computer Entertainment Inc. | Methods and systems for enabling depth and direction detection when interfacing with a computer program |
US8287373B2 (en) | 2008-12-05 | 2012-10-16 | Sony Computer Entertainment Inc. | Control device for communicating visual information |
US7623674B2 (en) * | 2003-11-05 | 2009-11-24 | Cognex Technology And Investment Corporation | Method and system for enhanced portal security through stereoscopy |
US8326084B1 (en) | 2003-11-05 | 2012-12-04 | Cognex Technology And Investment Corporation | System and method of auto-exposure control for image acquisition hardware using three dimensional information |
DE10351778A1 (de) * | 2003-11-06 | 2005-06-09 | Daimlerchrysler Ag | Verfahren zur Korrespondenzanalyse in Bilddatensätzen |
ES2233202B1 (es) * | 2003-11-24 | 2006-10-16 | Universidad De Granada | Dispositivo para la estimacion de flujo optico en imagenes mediante fpgas. |
US7663689B2 (en) * | 2004-01-16 | 2010-02-16 | Sony Computer Entertainment Inc. | Method and apparatus for optimizing capture device settings through depth information |
US7800582B1 (en) * | 2004-04-21 | 2010-09-21 | Weather Central, Inc. | Scene launcher system and method for weather report presentations and the like |
US7799273B2 (en) | 2004-05-06 | 2010-09-21 | Smp Logic Systems Llc | Manufacturing execution system for validation, quality and risk assessment and monitoring of pharmaceutical manufacturing processes |
US7444197B2 (en) | 2004-05-06 | 2008-10-28 | Smp Logic Systems Llc | Methods, systems, and software program for validation and monitoring of pharmaceutical manufacturing processes |
US7787009B2 (en) * | 2004-05-10 | 2010-08-31 | University Of Southern California | Three dimensional interaction with autostereoscopic displays |
US20050270310A1 (en) * | 2004-06-03 | 2005-12-08 | Eric Jeffrey | Apparatuses and methods for incorporating a border within an image |
EP1610462B1 (fr) * | 2004-06-24 | 2012-07-11 | St Microelectronics S.A. | Circuit et procédé de vérification de la constance de biais d'un flux de bits |
FR2872357A1 (fr) * | 2004-06-24 | 2005-12-30 | St Microelectronics Sa | Verification d'un flux de bits |
US8031978B2 (en) * | 2004-06-30 | 2011-10-04 | Hitachi Aloka Medical, Ltd. | Method and apparatus of image processing to detect edges |
EP2765533A1 (en) | 2004-07-26 | 2014-08-13 | Automotive Systems Laboratory, Inc. | Vulnerable road user protection system |
JP2006221603A (ja) * | 2004-08-09 | 2006-08-24 | Toshiba Corp | 3次元情報復元装置、3次元情報復元方法および3次元情報復元プログラム |
US9030532B2 (en) * | 2004-08-19 | 2015-05-12 | Microsoft Technology Licensing, Llc | Stereoscopic image display |
US8547401B2 (en) | 2004-08-19 | 2013-10-01 | Sony Computer Entertainment Inc. | Portable augmented reality device and method |
DE102004042166A1 (de) * | 2004-08-31 | 2006-03-16 | MAX-PLANCK-Gesellschaft zur Förderung der Wissenschaften e.V. | Bildverarbeitungseinrichtung und entsprechendes Betriebsverfahren |
ATE404938T1 (de) | 2004-09-17 | 2008-08-15 | British Telecomm | Analyse von mustern |
CA2511040A1 (en) * | 2004-09-23 | 2006-03-23 | The Governors Of The University Of Alberta | Method and system for real time image rendering |
WO2006052508A2 (en) * | 2004-11-03 | 2006-05-18 | Tyzx, Inc. | An integrated image processor |
JP4692956B2 (ja) * | 2004-11-22 | 2011-06-01 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置および描画処理方法 |
JP4449723B2 (ja) * | 2004-12-08 | 2010-04-14 | ソニー株式会社 | 画像処理装置、画像処理方法、およびプログラム |
US8488023B2 (en) * | 2009-05-20 | 2013-07-16 | DigitalOptics Corporation Europe Limited | Identifying facial expressions in acquired digital images |
US20110102553A1 (en) * | 2007-02-28 | 2011-05-05 | Tessera Technologies Ireland Limited | Enhanced real-time face models from stereo imaging |
DE102005008131A1 (de) * | 2005-01-31 | 2006-08-03 | Daimlerchrysler Ag | Objektdetektion auf Bildpunktebene in digitalen Bildsequenzen |
JP2006236022A (ja) * | 2005-02-25 | 2006-09-07 | Renasas Northern Japan Semiconductor Inc | 画像処理装置 |
US7512262B2 (en) * | 2005-02-25 | 2009-03-31 | Microsoft Corporation | Stereo-based image processing |
WO2006110952A1 (en) * | 2005-04-19 | 2006-10-26 | Fairlight.Au Pty Ltd | Media processing system and method |
US9492240B2 (en) | 2009-06-16 | 2016-11-15 | Intuitive Surgical Operations, Inc. | Virtual measurement tool for minimally invasive surgery |
US8971597B2 (en) * | 2005-05-16 | 2015-03-03 | Intuitive Surgical Operations, Inc. | Efficient vision and kinematic data fusion for robotic surgical instruments and other applications |
EP1732030A1 (en) | 2005-06-10 | 2006-12-13 | BRITISH TELECOMMUNICATIONS public limited company | Comparison of patterns |
US20070016425A1 (en) * | 2005-07-12 | 2007-01-18 | Koren Ward | Device for providing perception of the physical environment |
US20070019883A1 (en) * | 2005-07-19 | 2007-01-25 | Wong Earl Q | Method for creating a depth map for auto focus using an all-in-focus picture and two-dimensional scale space matching |
WO2007012798A1 (en) | 2005-07-28 | 2007-02-01 | British Telecommunications Public Limited Company | Image analysis |
US7606430B2 (en) * | 2005-08-30 | 2009-10-20 | Asml Netherlands B.V. | Lithographic apparatus and device manufacturing method utilizing a multiple dictionary compression method for FPD |
US20070120969A1 (en) * | 2005-09-15 | 2007-05-31 | Alpha Omega International | Audio visual communication system and method |
US8111904B2 (en) | 2005-10-07 | 2012-02-07 | Cognex Technology And Investment Corp. | Methods and apparatus for practical 3D vision system |
US7697827B2 (en) | 2005-10-17 | 2010-04-13 | Konicek Jeffrey C | User-friendlier interfaces for a camera |
US7716100B2 (en) * | 2005-12-02 | 2010-05-11 | Kuberre Systems, Inc. | Methods and systems for computing platform |
EP1798961A1 (en) | 2005-12-19 | 2007-06-20 | BRITISH TELECOMMUNICATIONS public limited company | Method for focus control |
US20070167702A1 (en) * | 2005-12-30 | 2007-07-19 | Intuitive Surgical Inc. | Medical robotic system providing three-dimensional telestration |
US7907166B2 (en) * | 2005-12-30 | 2011-03-15 | Intuitive Surgical Operations, Inc. | Stereo telestration for robotic surgery |
KR101249988B1 (ko) * | 2006-01-27 | 2013-04-01 | 삼성전자주식회사 | 사용자의 위치에 따른 영상을 디스플레이하는 장치 및 방법 |
US7551754B2 (en) * | 2006-02-24 | 2009-06-23 | Fotonation Vision Limited | Method and apparatus for selective rejection of digital images |
US7804983B2 (en) * | 2006-02-24 | 2010-09-28 | Fotonation Vision Limited | Digital image acquisition control and correction method and apparatus |
US7616254B2 (en) * | 2006-03-16 | 2009-11-10 | Sony Corporation | Simple method for calculating camera defocus from an image scene |
CN100455263C (zh) * | 2006-04-26 | 2009-01-28 | 东软飞利浦医疗设备系统有限责任公司 | 一种x射线机图像处理装置 |
EP2020906B1 (en) * | 2006-05-26 | 2013-09-18 | The Cleveland Clinic Foundation | System for measuring biomechanical properties in an eye |
KR100813100B1 (ko) * | 2006-06-29 | 2008-03-17 | 성균관대학교산학협력단 | 실시간 확장 가능한 스테레오 매칭 시스템 및 방법 |
WO2008008500A2 (en) * | 2006-07-13 | 2008-01-17 | Yale University | Methods for making cancer prognoses based on the subcellular localization of biomarkers |
US7847730B2 (en) * | 2006-09-27 | 2010-12-07 | Bae Systems Information And Electronic Systems Integration, Inc. | Software defined navigation signal generator |
US8781151B2 (en) | 2006-09-28 | 2014-07-15 | Sony Computer Entertainment Inc. | Object detection using video input combined with tilt angle information |
US8310656B2 (en) | 2006-09-28 | 2012-11-13 | Sony Computer Entertainment America Llc | Mapping movements of a hand-held controller to the two-dimensional image plane of a display screen |
USRE48417E1 (en) | 2006-09-28 | 2021-02-02 | Sony Interactive Entertainment Inc. | Object direction using video input combined with tilt angle information |
JP2008089868A (ja) * | 2006-09-29 | 2008-04-17 | Fujifilm Corp | 描画点データ取得方法および装置ならびに描画方法および装置 |
US8125510B2 (en) | 2007-01-30 | 2012-02-28 | Ankur Agarwal | Remote workspace sharing |
US7876940B2 (en) * | 2007-01-30 | 2011-01-25 | International Business Machines Corporation | Universal image processing |
US8238624B2 (en) * | 2007-01-30 | 2012-08-07 | International Business Machines Corporation | Hybrid medical image processing |
WO2008104549A2 (en) | 2007-02-28 | 2008-09-04 | Fotonation Vision Limited | Separating directional lighting variability in statistical face modelling based on texture space decomposition |
KR101247147B1 (ko) | 2007-03-05 | 2013-03-29 | 디지털옵틱스 코포레이션 유럽 리미티드 | 디지털 영상 획득 장치에서의 얼굴 탐색 및 검출 |
US8340512B2 (en) * | 2007-03-15 | 2012-12-25 | Nvidia Corporation | Auto focus technique in an image capture device |
US8290357B2 (en) * | 2007-03-15 | 2012-10-16 | Nvidia Corporation | Auto-exposure technique in a camera |
US8005238B2 (en) | 2007-03-22 | 2011-08-23 | Microsoft Corporation | Robust adaptive beamforming with enhanced noise suppression |
US20080231835A1 (en) * | 2007-03-23 | 2008-09-25 | Keigo Iizuka | Divergence ratio distance mapping camera |
US8117137B2 (en) | 2007-04-19 | 2012-02-14 | Microsoft Corporation | Field-programmable gate array based accelerator system |
US8326092B2 (en) * | 2007-04-23 | 2012-12-04 | International Business Machines Corporation | Heterogeneous image processing system |
US8462369B2 (en) * | 2007-04-23 | 2013-06-11 | International Business Machines Corporation | Hybrid image processing system for a single field of view having a plurality of inspection threads |
US8331737B2 (en) * | 2007-04-23 | 2012-12-11 | International Business Machines Corporation | Heterogeneous image processing system |
US8005237B2 (en) | 2007-05-17 | 2011-08-23 | Microsoft Corp. | Sensor array beamformer post-processor |
US8126260B2 (en) * | 2007-05-29 | 2012-02-28 | Cognex Corporation | System and method for locating a three-dimensional object using machine vision |
CA2687213C (en) * | 2007-06-20 | 2015-12-22 | Thomson Licensing | System and method for stereo matching of images |
US8538696B1 (en) * | 2007-09-25 | 2013-09-17 | The Weather Channel, Llc | Providing weather data for a location using weather data stored for a finite number of locations |
US8629976B2 (en) * | 2007-10-02 | 2014-01-14 | Microsoft Corporation | Methods and systems for hierarchical de-aliasing time-of-flight (TOF) systems |
US8675219B2 (en) * | 2007-10-24 | 2014-03-18 | International Business Machines Corporation | High bandwidth image processing with run time library function offload via task distribution to special purpose engines |
US8095486B2 (en) * | 2007-10-29 | 2012-01-10 | Nec Laboratories America, Inc. | Discovering optimal system configurations using decentralized probability based active sampling |
US20090132582A1 (en) * | 2007-11-15 | 2009-05-21 | Kim Moon J | Processor-server hybrid system for processing data |
JP5376163B2 (ja) * | 2007-11-15 | 2013-12-25 | 日本電気株式会社 | 文書管理・検索システムおよび文書の管理・検索方法 |
US9135073B2 (en) * | 2007-11-15 | 2015-09-15 | International Business Machines Corporation | Server-processor hybrid system for processing data |
US20090150556A1 (en) * | 2007-12-06 | 2009-06-11 | Kim Moon J | Memory to storage communication for hybrid systems |
US9332074B2 (en) * | 2007-12-06 | 2016-05-03 | International Business Machines Corporation | Memory to memory communication and storage for hybrid systems |
TW200925023A (en) * | 2007-12-07 | 2009-06-16 | Altek Corp | Method of displaying shot image on car reverse video system |
US8542907B2 (en) * | 2007-12-17 | 2013-09-24 | Sony Computer Entertainment America Llc | Dynamic three-dimensional object mapping for user-defined control device |
US20090166684A1 (en) * | 2007-12-26 | 2009-07-02 | 3Dv Systems Ltd. | Photogate cmos pixel for 3d cameras having reduced intra-pixel cross talk |
JP4876080B2 (ja) * | 2008-01-25 | 2012-02-15 | 富士重工業株式会社 | 環境認識装置 |
JP4956452B2 (ja) * | 2008-01-25 | 2012-06-20 | 富士重工業株式会社 | 車両用環境認識装置 |
US8750578B2 (en) * | 2008-01-29 | 2014-06-10 | DigitalOptics Corporation Europe Limited | Detecting facial expressions in digital images |
US8433747B2 (en) * | 2008-02-01 | 2013-04-30 | Microsoft Corporation | Graphics remoting architecture |
US8229251B2 (en) * | 2008-02-08 | 2012-07-24 | International Business Machines Corporation | Pre-processing optimization of an image processing system |
JP4382156B2 (ja) * | 2008-02-12 | 2009-12-09 | パナソニック株式会社 | 複眼撮像装置、測距装置、視差算出方法及び測距方法 |
WO2009108645A1 (en) * | 2008-02-27 | 2009-09-03 | Sony Computer Entertainment America Inc. | Methods for capturing depth data of a scene and applying computer actions |
US8897482B2 (en) * | 2008-02-29 | 2014-11-25 | Trimble Ab | Stereo photogrammetry from a single station using a surveying instrument with an eccentric camera |
US8368753B2 (en) | 2008-03-17 | 2013-02-05 | Sony Computer Entertainment America Llc | Controller with an integrated depth camera |
US8284249B2 (en) | 2008-03-25 | 2012-10-09 | International Business Machines Corporation | Real time processing of video frames for triggering an alert |
US8379963B2 (en) * | 2008-03-28 | 2013-02-19 | International Business Machines Corporation | Visual inspection system |
KR100996542B1 (ko) * | 2008-03-31 | 2010-11-24 | 성균관대학교산학협력단 | 실시간 모션 검출 영상 처리 장치 및 그 방법 |
JP5360052B2 (ja) * | 2008-04-09 | 2013-12-04 | 日本電気株式会社 | 物体検出装置 |
US8788967B2 (en) | 2008-04-10 | 2014-07-22 | Perceptive Pixel, Inc. | Methods of interfacing with multi-input devices and multi-input display systems employing interfacing techniques |
GB0807411D0 (en) * | 2008-04-23 | 2008-05-28 | Mitsubishi Electric Inf Tech | Scale robust feature-based indentfiers for image identification |
US8280194B2 (en) | 2008-04-29 | 2012-10-02 | Sony Corporation | Reduced hardware implementation for a two-picture depth map algorithm |
US8830341B2 (en) * | 2008-05-22 | 2014-09-09 | Nvidia Corporation | Selection of an optimum image in burst mode in a digital camera |
US8121363B2 (en) * | 2008-06-12 | 2012-02-21 | International Business Machines Corporation | Thermographic image processing system |
US8385557B2 (en) | 2008-06-19 | 2013-02-26 | Microsoft Corporation | Multichannel acoustic echo reduction |
US8325909B2 (en) | 2008-06-25 | 2012-12-04 | Microsoft Corporation | Acoustic echo suppression |
US8203699B2 (en) | 2008-06-30 | 2012-06-19 | Microsoft Corporation | System architecture design for time-of-flight system having reduced differential pixel size, and time-of-flight systems so designed |
US8261117B2 (en) | 2008-09-11 | 2012-09-04 | International Business Machines Corporation | Virtualization in a multi-core processor (MCP) |
US8131659B2 (en) * | 2008-09-25 | 2012-03-06 | Microsoft Corporation | Field-programmable gate array based accelerator system |
US8301638B2 (en) * | 2008-09-25 | 2012-10-30 | Microsoft Corporation | Automated feature selection based on rankboost for ranking |
US8610726B2 (en) * | 2008-09-26 | 2013-12-17 | Apple Inc. | Computer systems and methods with projected display |
US20100079653A1 (en) * | 2008-09-26 | 2010-04-01 | Apple Inc. | Portable computing system with a secondary image output |
US7881603B2 (en) | 2008-09-26 | 2011-02-01 | Apple Inc. | Dichroic aperture for electronic imaging device |
US8553093B2 (en) * | 2008-09-30 | 2013-10-08 | Sony Corporation | Method and apparatus for super-resolution imaging using digital imaging devices |
US8438404B2 (en) * | 2008-09-30 | 2013-05-07 | International Business Machines Corporation | Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element |
US8732716B2 (en) * | 2008-09-30 | 2014-05-20 | International Business Machines Corporation | Virtualization across physical partitions of a multi-core processor (MCP) |
US8341638B2 (en) * | 2008-09-30 | 2012-12-25 | International Business Machines Corporation | Delegated virtualization across physical partitions of a multi-core processor (MCP) |
US8194995B2 (en) * | 2008-09-30 | 2012-06-05 | Sony Corporation | Fast camera auto-focus |
US20100095188A1 (en) * | 2008-10-09 | 2010-04-15 | Transwitch Corporation | Apparatus and method for detecting and correcting errors in control characters of a multimedia interface |
FI121901B (fi) * | 2008-10-17 | 2011-05-31 | Visidon Oy | Objektien ilmaiseminen ja seuraaminen digitaalisissa kuvissa |
US8634635B2 (en) * | 2008-10-30 | 2014-01-21 | Clever Sys, Inc. | System and method for stereo-view multiple animal behavior characterization |
US9122617B2 (en) | 2008-11-21 | 2015-09-01 | International Business Machines Corporation | Pseudo cache memory in a multi-core processor (MCP) |
US7804329B2 (en) * | 2008-11-21 | 2010-09-28 | International Business Machines Corporation | Internal charge transfer for circuits |
US9886389B2 (en) * | 2008-11-21 | 2018-02-06 | International Business Machines Corporation | Cache memory bypass in a multi-core processor (MCP) |
US9824008B2 (en) | 2008-11-21 | 2017-11-21 | International Business Machines Corporation | Cache memory sharing in a multi-core processor (MCP) |
US8806129B2 (en) | 2008-11-21 | 2014-08-12 | International Business Machines Corporation | Mounted cache memory in a multi-core processor (MCP) |
US20100128118A1 (en) * | 2008-11-26 | 2010-05-27 | Locarna Systems, Inc. | Identification of visual fixations in a video stream |
US8961313B2 (en) * | 2009-05-29 | 2015-02-24 | Sony Computer Entertainment America Llc | Multi-positional three-dimensional controller |
US8830224B2 (en) | 2008-12-31 | 2014-09-09 | Intuitive Surgical Operations, Inc. | Efficient 3-D telestration for local robotic proctoring |
US8681321B2 (en) | 2009-01-04 | 2014-03-25 | Microsoft International Holdings B.V. | Gated 3D camera |
KR101290023B1 (ko) * | 2009-01-29 | 2013-07-30 | 닛본 덴끼 가부시끼가이샤 | 영상 시그니처 생성 디바이스 |
US7996793B2 (en) | 2009-01-30 | 2011-08-09 | Microsoft Corporation | Gesture recognizer system architecture |
US8565477B2 (en) | 2009-01-30 | 2013-10-22 | Microsoft Corporation | Visual target tracking |
US20100199231A1 (en) * | 2009-01-30 | 2010-08-05 | Microsoft Corporation | Predictive determination |
US8199248B2 (en) * | 2009-01-30 | 2012-06-12 | Sony Corporation | Two-dimensional polynomial model for depth estimation based on two-picture matching |
US8448094B2 (en) * | 2009-01-30 | 2013-05-21 | Microsoft Corporation | Mapping a natural input device to a legacy system |
US8294767B2 (en) * | 2009-01-30 | 2012-10-23 | Microsoft Corporation | Body scan |
US8295546B2 (en) * | 2009-01-30 | 2012-10-23 | Microsoft Corporation | Pose tracking pipeline |
US8577085B2 (en) * | 2009-01-30 | 2013-11-05 | Microsoft Corporation | Visual target tracking |
US8588465B2 (en) * | 2009-01-30 | 2013-11-19 | Microsoft Corporation | Visual target tracking |
US8577084B2 (en) * | 2009-01-30 | 2013-11-05 | Microsoft Corporation | Visual target tracking |
US8565476B2 (en) | 2009-01-30 | 2013-10-22 | Microsoft Corporation | Visual target tracking |
US8487938B2 (en) * | 2009-01-30 | 2013-07-16 | Microsoft Corporation | Standard Gestures |
US8267781B2 (en) | 2009-01-30 | 2012-09-18 | Microsoft Corporation | Visual target tracking |
US8682028B2 (en) * | 2009-01-30 | 2014-03-25 | Microsoft Corporation | Visual target tracking |
US8199186B2 (en) * | 2009-03-05 | 2012-06-12 | Microsoft Corporation | Three-dimensional (3D) imaging based on motionparallax |
US8773355B2 (en) | 2009-03-16 | 2014-07-08 | Microsoft Corporation | Adaptive cursor sizing |
US8988437B2 (en) | 2009-03-20 | 2015-03-24 | Microsoft Technology Licensing, Llc | Chaining animations |
US9256282B2 (en) * | 2009-03-20 | 2016-02-09 | Microsoft Technology Licensing, Llc | Virtual object manipulation |
US8527657B2 (en) * | 2009-03-20 | 2013-09-03 | Sony Computer Entertainment America Llc | Methods and systems for dynamically adjusting update rates in multi-player network gaming |
US9313376B1 (en) | 2009-04-01 | 2016-04-12 | Microsoft Technology Licensing, Llc | Dynamic depth power equalization |
GB2469342A (en) * | 2009-04-09 | 2010-10-13 | Sony Comp Entertainment Europe | A system and method of image transmission using stereographic images |
US8342963B2 (en) * | 2009-04-10 | 2013-01-01 | Sony Computer Entertainment America Inc. | Methods and systems for enabling control of artificial intelligence game characters |
US8253746B2 (en) | 2009-05-01 | 2012-08-28 | Microsoft Corporation | Determine intended motions |
US8638985B2 (en) | 2009-05-01 | 2014-01-28 | Microsoft Corporation | Human body pose estimation |
US8340432B2 (en) | 2009-05-01 | 2012-12-25 | Microsoft Corporation | Systems and methods for detecting a tilt angle from a depth image |
US9015638B2 (en) | 2009-05-01 | 2015-04-21 | Microsoft Technology Licensing, Llc | Binding users to a gesture based system and providing feedback to the users |
US8660303B2 (en) * | 2009-05-01 | 2014-02-25 | Microsoft Corporation | Detection of body and props |
US8181123B2 (en) | 2009-05-01 | 2012-05-15 | Microsoft Corporation | Managing virtual port associations to users in a gesture-based computing environment |
US9498718B2 (en) | 2009-05-01 | 2016-11-22 | Microsoft Technology Licensing, Llc | Altering a view perspective within a display environment |
US8503720B2 (en) | 2009-05-01 | 2013-08-06 | Microsoft Corporation | Human body pose estimation |
US8649554B2 (en) | 2009-05-01 | 2014-02-11 | Microsoft Corporation | Method to control perspective for a camera-controlled computer |
US9377857B2 (en) | 2009-05-01 | 2016-06-28 | Microsoft Technology Licensing, Llc | Show body position |
US9898675B2 (en) | 2009-05-01 | 2018-02-20 | Microsoft Technology Licensing, Llc | User movement tracking feedback to improve tracking |
US8942428B2 (en) | 2009-05-01 | 2015-01-27 | Microsoft Corporation | Isolate extraneous motions |
US8142288B2 (en) | 2009-05-08 | 2012-03-27 | Sony Computer Entertainment America Llc | Base station movement detection and compensation |
US8393964B2 (en) | 2009-05-08 | 2013-03-12 | Sony Computer Entertainment America Llc | Base station for position location |
DE102009003110A1 (de) * | 2009-05-14 | 2010-11-18 | Robert Bosch Gmbh | Bildverarbeitungsverfahren zur Bestimmung von Tiefeninformation aus wenigstens zwei mittels eines Stereokamerasystems aufgenommenen Eingangsbildern |
US20100302365A1 (en) * | 2009-05-29 | 2010-12-02 | Microsoft Corporation | Depth Image Noise Reduction |
US8542252B2 (en) * | 2009-05-29 | 2013-09-24 | Microsoft Corporation | Target digitization, extraction, and tracking |
US8744121B2 (en) | 2009-05-29 | 2014-06-03 | Microsoft Corporation | Device for identifying and tracking multiple humans over time |
JP5456159B2 (ja) * | 2009-05-29 | 2014-03-26 | デジタルオプティックス・コーポレイション・ヨーロッパ・リミテッド | 背景から前景の頭頂部を分離するための方法および装置 |
US8693724B2 (en) | 2009-05-29 | 2014-04-08 | Microsoft Corporation | Method and system implementing user-centric gesture control |
US8379101B2 (en) | 2009-05-29 | 2013-02-19 | Microsoft Corporation | Environment and/or target segmentation |
US8320619B2 (en) | 2009-05-29 | 2012-11-27 | Microsoft Corporation | Systems and methods for tracking a model |
US8625837B2 (en) | 2009-05-29 | 2014-01-07 | Microsoft Corporation | Protocol and format for communicating an image from a camera to a computing environment |
US9182814B2 (en) | 2009-05-29 | 2015-11-10 | Microsoft Technology Licensing, Llc | Systems and methods for estimating a non-visible or occluded body part |
US8509479B2 (en) * | 2009-05-29 | 2013-08-13 | Microsoft Corporation | Virtual object |
US9383823B2 (en) | 2009-05-29 | 2016-07-05 | Microsoft Technology Licensing, Llc | Combining gestures beyond skeletal |
US8418085B2 (en) | 2009-05-29 | 2013-04-09 | Microsoft Corporation | Gesture coach |
US9400559B2 (en) | 2009-05-29 | 2016-07-26 | Microsoft Technology Licensing, Llc | Gesture shortcuts |
US8856691B2 (en) | 2009-05-29 | 2014-10-07 | Microsoft Corporation | Gesture tool |
US8487871B2 (en) * | 2009-06-01 | 2013-07-16 | Microsoft Corporation | Virtual desktop coordinate transformation |
US9155592B2 (en) * | 2009-06-16 | 2015-10-13 | Intuitive Surgical Operations, Inc. | Virtual measurement tool for minimally invasive surgery |
US8665375B2 (en) * | 2009-06-22 | 2014-03-04 | Wsi Corporation | Apparatus and method for tracking the location of a pointing element in a cropped video field |
US8390680B2 (en) | 2009-07-09 | 2013-03-05 | Microsoft Corporation | Visual representation expression based on player expression |
US9159151B2 (en) | 2009-07-13 | 2015-10-13 | Microsoft Technology Licensing, Llc | Bringing a visual representation to life via learned input from the user |
US8565479B2 (en) * | 2009-08-13 | 2013-10-22 | Primesense Ltd. | Extraction of skeletons from 3D maps |
US8264536B2 (en) * | 2009-08-25 | 2012-09-11 | Microsoft Corporation | Depth-sensitive imaging via polarization-state mapping |
FR2949637B1 (fr) * | 2009-08-28 | 2011-09-23 | Commissariat Energie Atomique | Dispositif de calcul reconfigurable sur voisinage flexible de pixels |
US9141193B2 (en) | 2009-08-31 | 2015-09-22 | Microsoft Technology Licensing, Llc | Techniques for using human gestures to control gesture unaware programs |
US20110050857A1 (en) * | 2009-09-03 | 2011-03-03 | Electronics And Telecommunications Research Institute | Apparatus and method for displaying 3d image in 3d image system |
SG169950A1 (en) * | 2009-09-11 | 2011-04-29 | Agency Science Tech & Res | Electrocardiogram signal processing system |
US8508919B2 (en) | 2009-09-14 | 2013-08-13 | Microsoft Corporation | Separation of electrical and optical components |
US8330134B2 (en) * | 2009-09-14 | 2012-12-11 | Microsoft Corporation | Optical fault monitoring |
US8976986B2 (en) * | 2009-09-21 | 2015-03-10 | Microsoft Technology Licensing, Llc | Volume adjustment based on listener position |
US8428340B2 (en) * | 2009-09-21 | 2013-04-23 | Microsoft Corporation | Screen space plane identification |
US8760571B2 (en) | 2009-09-21 | 2014-06-24 | Microsoft Corporation | Alignment of lens and image sensor |
US9014546B2 (en) | 2009-09-23 | 2015-04-21 | Rovi Guides, Inc. | Systems and methods for automatically detecting users within detection regions of media devices |
US8452087B2 (en) * | 2009-09-30 | 2013-05-28 | Microsoft Corporation | Image selection techniques |
US8619128B2 (en) * | 2009-09-30 | 2013-12-31 | Apple Inc. | Systems and methods for an imaging system using multiple image sensors |
US8723118B2 (en) * | 2009-10-01 | 2014-05-13 | Microsoft Corporation | Imager for constructing color and depth images |
US8564534B2 (en) | 2009-10-07 | 2013-10-22 | Microsoft Corporation | Human tracking system |
US8867820B2 (en) * | 2009-10-07 | 2014-10-21 | Microsoft Corporation | Systems and methods for removing a background of an image |
US7961910B2 (en) | 2009-10-07 | 2011-06-14 | Microsoft Corporation | Systems and methods for tracking a model |
US8963829B2 (en) | 2009-10-07 | 2015-02-24 | Microsoft Corporation | Methods and systems for determining and tracking extremities of a target |
US20110093099A1 (en) * | 2009-10-16 | 2011-04-21 | Newport Controls | Controller system adapted for spa |
US20110202150A1 (en) * | 2009-10-16 | 2011-08-18 | Newport Controls | Controller system adapted for SPA |
US9400548B2 (en) * | 2009-10-19 | 2016-07-26 | Microsoft Technology Licensing, Llc | Gesture personalization and profile roaming |
US20110099476A1 (en) * | 2009-10-23 | 2011-04-28 | Microsoft Corporation | Decorating a display environment |
JP5578701B2 (ja) * | 2009-10-30 | 2014-08-27 | 任天堂株式会社 | 楽音生成プログラム、楽音生成装置、楽音生成システム、および、楽音生成方法 |
US8988432B2 (en) * | 2009-11-05 | 2015-03-24 | Microsoft Technology Licensing, Llc | Systems and methods for processing an image for target tracking |
US8843857B2 (en) * | 2009-11-19 | 2014-09-23 | Microsoft Corporation | Distance scalable no touch computing |
US9244533B2 (en) | 2009-12-17 | 2016-01-26 | Microsoft Technology Licensing, Llc | Camera navigation for presentations |
US20110151974A1 (en) * | 2009-12-18 | 2011-06-23 | Microsoft Corporation | Gesture style recognition and reward |
US20110150271A1 (en) | 2009-12-18 | 2011-06-23 | Microsoft Corporation | Motion detection using depth images |
US8027582B2 (en) * | 2009-12-21 | 2011-09-27 | Sony Corporation | Autofocus with confidence measure |
US8320621B2 (en) | 2009-12-21 | 2012-11-27 | Microsoft Corporation | Depth projector system with integrated VCSEL array |
US9207765B2 (en) * | 2009-12-31 | 2015-12-08 | Microsoft Technology Licensing, Llc | Recognizing interactive media input |
US9268404B2 (en) * | 2010-01-08 | 2016-02-23 | Microsoft Technology Licensing, Llc | Application gesture interpretation |
US9019201B2 (en) | 2010-01-08 | 2015-04-28 | Microsoft Technology Licensing, Llc | Evolving universal gesture sets |
US8631355B2 (en) | 2010-01-08 | 2014-01-14 | Microsoft Corporation | Assigning gesture dictionaries |
CN102129678A (zh) * | 2010-01-12 | 2011-07-20 | 鸿富锦精密工业(深圳)有限公司 | 影像特征模型建立系统及方法以及应用其的影像处理系统 |
US8933884B2 (en) | 2010-01-15 | 2015-01-13 | Microsoft Corporation | Tracking groups of users in motion capture system |
US8334842B2 (en) | 2010-01-15 | 2012-12-18 | Microsoft Corporation | Recognizing user intent in motion capture system |
US8676581B2 (en) | 2010-01-22 | 2014-03-18 | Microsoft Corporation | Speech recognition analysis via identification information |
US8265341B2 (en) * | 2010-01-25 | 2012-09-11 | Microsoft Corporation | Voice-body identity correlation |
US8864581B2 (en) | 2010-01-29 | 2014-10-21 | Microsoft Corporation | Visual based identitiy tracking |
US8891067B2 (en) * | 2010-02-01 | 2014-11-18 | Microsoft Corporation | Multiple synchronized optical sources for time-of-flight range finding systems |
US8619122B2 (en) | 2010-02-02 | 2013-12-31 | Microsoft Corporation | Depth camera compatibility |
US8687044B2 (en) | 2010-02-02 | 2014-04-01 | Microsoft Corporation | Depth camera compatibility |
US8717469B2 (en) * | 2010-02-03 | 2014-05-06 | Microsoft Corporation | Fast gating photosurface |
US8659658B2 (en) * | 2010-02-09 | 2014-02-25 | Microsoft Corporation | Physical interaction zone for gesture-based user interfaces |
US8499257B2 (en) * | 2010-02-09 | 2013-07-30 | Microsoft Corporation | Handles interactions for human—computer interface |
US8633890B2 (en) * | 2010-02-16 | 2014-01-21 | Microsoft Corporation | Gesture detection based on joint skipping |
US20110199302A1 (en) * | 2010-02-16 | 2011-08-18 | Microsoft Corporation | Capturing screen objects using a collision volume |
US8928579B2 (en) * | 2010-02-22 | 2015-01-06 | Andrew David Wilson | Interacting with an omni-directionally projected display |
US8787663B2 (en) * | 2010-03-01 | 2014-07-22 | Primesense Ltd. | Tracking body parts by combined color image and depth processing |
US8422769B2 (en) | 2010-03-05 | 2013-04-16 | Microsoft Corporation | Image segmentation using reduced foreground training data |
US8411948B2 (en) | 2010-03-05 | 2013-04-02 | Microsoft Corporation | Up-sampling binary images for segmentation |
US8655069B2 (en) | 2010-03-05 | 2014-02-18 | Microsoft Corporation | Updating image segmentation following user input |
US20110221755A1 (en) * | 2010-03-12 | 2011-09-15 | Kevin Geisner | Bionic motion |
US20110223995A1 (en) | 2010-03-12 | 2011-09-15 | Kevin Geisner | Interacting with a computer based application |
US8279418B2 (en) * | 2010-03-17 | 2012-10-02 | Microsoft Corporation | Raster scanning for depth detection |
US8213680B2 (en) * | 2010-03-19 | 2012-07-03 | Microsoft Corporation | Proxy training data for human body tracking |
US8514269B2 (en) * | 2010-03-26 | 2013-08-20 | Microsoft Corporation | De-aliasing depth images |
US20110234481A1 (en) * | 2010-03-26 | 2011-09-29 | Sagi Katz | Enhancing presentations using depth sensing cameras |
US8523667B2 (en) * | 2010-03-29 | 2013-09-03 | Microsoft Corporation | Parental control settings based on body dimensions |
EP2372512A1 (en) * | 2010-03-30 | 2011-10-05 | Harman Becker Automotive Systems GmbH | Vehicle user interface unit for a vehicle electronic device |
US8605763B2 (en) | 2010-03-31 | 2013-12-10 | Microsoft Corporation | Temperature measurement and control for laser and light-emitting diodes |
US9646340B2 (en) | 2010-04-01 | 2017-05-09 | Microsoft Technology Licensing, Llc | Avatar-based virtual dressing room |
US9098873B2 (en) | 2010-04-01 | 2015-08-04 | Microsoft Technology Licensing, Llc | Motion-based interactive shopping environment |
US8351651B2 (en) | 2010-04-26 | 2013-01-08 | Microsoft Corporation | Hand-location post-process refinement in a tracking system |
US8379919B2 (en) | 2010-04-29 | 2013-02-19 | Microsoft Corporation | Multiple centroid condensation of probability distribution clouds |
US8284847B2 (en) | 2010-05-03 | 2012-10-09 | Microsoft Corporation | Detecting motion for a multifunction sensor device |
US8885890B2 (en) | 2010-05-07 | 2014-11-11 | Microsoft Corporation | Depth map confidence filtering |
US8498481B2 (en) | 2010-05-07 | 2013-07-30 | Microsoft Corporation | Image segmentation using star-convexity constraints |
US8457353B2 (en) | 2010-05-18 | 2013-06-04 | Microsoft Corporation | Gestures and gesture modifiers for manipulating a user-interface |
US8594425B2 (en) * | 2010-05-31 | 2013-11-26 | Primesense Ltd. | Analysis of three-dimensional scenes |
US8803888B2 (en) | 2010-06-02 | 2014-08-12 | Microsoft Corporation | Recognition system for sharing information |
US8751215B2 (en) | 2010-06-04 | 2014-06-10 | Microsoft Corporation | Machine based sign language interpreter |
US9008355B2 (en) | 2010-06-04 | 2015-04-14 | Microsoft Technology Licensing, Llc | Automatic depth camera aiming |
US9557574B2 (en) | 2010-06-08 | 2017-01-31 | Microsoft Technology Licensing, Llc | Depth illumination and detection optics |
US8330822B2 (en) | 2010-06-09 | 2012-12-11 | Microsoft Corporation | Thermally-tuned depth camera light source |
US8675981B2 (en) | 2010-06-11 | 2014-03-18 | Microsoft Corporation | Multi-modal gender recognition including depth data |
US8749557B2 (en) | 2010-06-11 | 2014-06-10 | Microsoft Corporation | Interacting with user interface via avatar |
US9384329B2 (en) | 2010-06-11 | 2016-07-05 | Microsoft Technology Licensing, Llc | Caloric burn determination from body movement |
US8982151B2 (en) | 2010-06-14 | 2015-03-17 | Microsoft Technology Licensing, Llc | Independently processing planes of display data |
KR20110136414A (ko) * | 2010-06-15 | 2011-12-21 | 삼성전자주식회사 | 영상처리장치 및 그 제어방법 |
US8670029B2 (en) | 2010-06-16 | 2014-03-11 | Microsoft Corporation | Depth camera illuminator with superluminescent light-emitting diode |
US8558873B2 (en) | 2010-06-16 | 2013-10-15 | Microsoft Corporation | Use of wavefront coding to create a depth image |
US8296151B2 (en) | 2010-06-18 | 2012-10-23 | Microsoft Corporation | Compound gesture-speech commands |
US8381108B2 (en) | 2010-06-21 | 2013-02-19 | Microsoft Corporation | Natural user input for driving interactive stories |
US8416187B2 (en) | 2010-06-22 | 2013-04-09 | Microsoft Corporation | Item navigation using motion-capture data |
KR101012691B1 (ko) * | 2010-07-05 | 2011-02-09 | 주훈 | 3차원 입체 열상 카메라 시스템 |
US8971628B2 (en) | 2010-07-26 | 2015-03-03 | Fotonation Limited | Face detection using division-generated haar-like features for illumination invariance |
US8483481B2 (en) * | 2010-07-27 | 2013-07-09 | International Business Machines Corporation | Foreground analysis based on tracking information |
EP2601782A4 (en) * | 2010-08-02 | 2016-09-28 | Univ Beijing | REPRESENTATIVE MOVEMENT DATA FLOW EXTRACTION FOR EFFICIENT RECOVERY AND CLASSIFICATION OF VIDEO DATA |
JP2012044383A (ja) * | 2010-08-18 | 2012-03-01 | Sony Corp | 画像処理装置および方法、並びにプログラム |
US9075434B2 (en) | 2010-08-20 | 2015-07-07 | Microsoft Technology Licensing, Llc | Translating user motion into multiple object responses |
US8613666B2 (en) | 2010-08-31 | 2013-12-24 | Microsoft Corporation | User selection and navigation based on looped motions |
US8655093B2 (en) * | 2010-09-02 | 2014-02-18 | Edge 3 Technologies, Inc. | Method and apparatus for performing segmentation of an image |
US8582866B2 (en) * | 2011-02-10 | 2013-11-12 | Edge 3 Technologies, Inc. | Method and apparatus for disparity computation in stereo images |
US8437506B2 (en) | 2010-09-07 | 2013-05-07 | Microsoft Corporation | System for fast, probabilistic skeletal tracking |
US20120058824A1 (en) | 2010-09-07 | 2012-03-08 | Microsoft Corporation | Scalable real-time motion recognition |
US8582867B2 (en) | 2010-09-16 | 2013-11-12 | Primesense Ltd | Learning-based pose estimation from depth maps |
US10776635B2 (en) * | 2010-09-21 | 2020-09-15 | Mobileye Vision Technologies Ltd. | Monocular cued detection of three-dimensional structures from depth images |
US8988508B2 (en) | 2010-09-24 | 2015-03-24 | Microsoft Technology Licensing, Llc. | Wide angle field of view active illumination imaging system |
US8538132B2 (en) | 2010-09-24 | 2013-09-17 | Apple Inc. | Component concentricity |
US8681255B2 (en) | 2010-09-28 | 2014-03-25 | Microsoft Corporation | Integrated low power depth camera and projection device |
US8548270B2 (en) | 2010-10-04 | 2013-10-01 | Microsoft Corporation | Time-of-flight depth imaging |
US9484065B2 (en) | 2010-10-15 | 2016-11-01 | Microsoft Technology Licensing, Llc | Intelligent determination of replays based on event identification |
US8592739B2 (en) | 2010-11-02 | 2013-11-26 | Microsoft Corporation | Detection of configuration changes of an optical element in an illumination system |
US8866889B2 (en) | 2010-11-03 | 2014-10-21 | Microsoft Corporation | In-home depth camera calibration |
WO2012060093A1 (ja) * | 2010-11-05 | 2012-05-10 | パナソニック株式会社 | ステレオ画像処理装置及びステレオ画像処理方法 |
US8667519B2 (en) | 2010-11-12 | 2014-03-04 | Microsoft Corporation | Automatic passive and anonymous feedback system |
US10726861B2 (en) | 2010-11-15 | 2020-07-28 | Microsoft Technology Licensing, Llc | Semi-private communication in open environments |
US9349040B2 (en) | 2010-11-19 | 2016-05-24 | Microsoft Technology Licensing, Llc | Bi-modal depth-image analysis |
US10234545B2 (en) | 2010-12-01 | 2019-03-19 | Microsoft Technology Licensing, Llc | Light source module |
US8553934B2 (en) | 2010-12-08 | 2013-10-08 | Microsoft Corporation | Orienting the position of a sensor |
US8618405B2 (en) | 2010-12-09 | 2013-12-31 | Microsoft Corp. | Free-space gesture musical instrument digital interface (MIDI) controller |
US8408706B2 (en) | 2010-12-13 | 2013-04-02 | Microsoft Corporation | 3D gaze tracker |
US8920241B2 (en) | 2010-12-15 | 2014-12-30 | Microsoft Corporation | Gesture controlled persistent handles for interface guides |
US8884968B2 (en) | 2010-12-15 | 2014-11-11 | Microsoft Corporation | Modeling an object from image data |
US9171264B2 (en) | 2010-12-15 | 2015-10-27 | Microsoft Technology Licensing, Llc | Parallel processing machine learning decision tree training |
US8448056B2 (en) | 2010-12-17 | 2013-05-21 | Microsoft Corporation | Validation analysis of human target |
US8803952B2 (en) | 2010-12-20 | 2014-08-12 | Microsoft Corporation | Plural detector time-of-flight depth mapping |
US9821224B2 (en) | 2010-12-21 | 2017-11-21 | Microsoft Technology Licensing, Llc | Driving simulator control with virtual skeleton |
US9848106B2 (en) | 2010-12-21 | 2017-12-19 | Microsoft Technology Licensing, Llc | Intelligent gameplay photo capture |
US8385596B2 (en) | 2010-12-21 | 2013-02-26 | Microsoft Corporation | First person shooter control with virtual skeleton |
US9823339B2 (en) | 2010-12-21 | 2017-11-21 | Microsoft Technology Licensing, Llc | Plural anode time-of-flight sensor |
US8994718B2 (en) | 2010-12-21 | 2015-03-31 | Microsoft Technology Licensing, Llc | Skeletal control of three-dimensional virtual world |
US9123316B2 (en) | 2010-12-27 | 2015-09-01 | Microsoft Technology Licensing, Llc | Interactive content creation |
US8488888B2 (en) | 2010-12-28 | 2013-07-16 | Microsoft Corporation | Classification of posture states |
US8401242B2 (en) | 2011-01-31 | 2013-03-19 | Microsoft Corporation | Real-time camera tracking using depth maps |
US8401225B2 (en) | 2011-01-31 | 2013-03-19 | Microsoft Corporation | Moving object segmentation using depth images |
US8587583B2 (en) | 2011-01-31 | 2013-11-19 | Microsoft Corporation | Three-dimensional environment reconstruction |
US9247238B2 (en) | 2011-01-31 | 2016-01-26 | Microsoft Technology Licensing, Llc | Reducing interference between multiple infra-red depth cameras |
US8817984B2 (en) | 2011-02-03 | 2014-08-26 | mSignia, Inc. | Cryptographic security functions based on anticipated changes in dynamic minutiae |
US11063920B2 (en) | 2011-02-03 | 2021-07-13 | mSignia, Inc. | Cryptographic security functions based on anticipated changes in dynamic minutiae |
US8724887B2 (en) | 2011-02-03 | 2014-05-13 | Microsoft Corporation | Environmental modifications to mitigate environmental factors |
US8942917B2 (en) | 2011-02-14 | 2015-01-27 | Microsoft Corporation | Change invariant scene recognition by an agent |
US8497838B2 (en) | 2011-02-16 | 2013-07-30 | Microsoft Corporation | Push actuation of interface controls |
IT1404274B1 (it) * | 2011-02-28 | 2013-11-15 | Fond Istituto Italiano Di Tecnologia | Disposizione circuitale multiprocessore per l'esecuzione di un algoritmo di visione stereoscopica e sistema di visione stereoscopica ed elusione di ostacoli per robot mobili |
US20120224037A1 (en) * | 2011-03-02 | 2012-09-06 | Sharp Laboratories Of America, Inc. | Reducing viewing discomfort for graphical elements |
US9551914B2 (en) | 2011-03-07 | 2017-01-24 | Microsoft Technology Licensing, Llc | Illuminator with refractive optical element |
US9067136B2 (en) | 2011-03-10 | 2015-06-30 | Microsoft Technology Licensing, Llc | Push personalization of interface controls |
US8571263B2 (en) | 2011-03-17 | 2013-10-29 | Microsoft Corporation | Predicting joint positions |
US9470778B2 (en) | 2011-03-29 | 2016-10-18 | Microsoft Technology Licensing, Llc | Learning from high quality depth measurements |
US9760566B2 (en) | 2011-03-31 | 2017-09-12 | Microsoft Technology Licensing, Llc | Augmented conversational understanding agent to identify conversation context between two humans and taking an agent action thereof |
US10642934B2 (en) | 2011-03-31 | 2020-05-05 | Microsoft Technology Licensing, Llc | Augmented conversational understanding architecture |
US9842168B2 (en) | 2011-03-31 | 2017-12-12 | Microsoft Technology Licensing, Llc | Task driven user intents |
US9298287B2 (en) | 2011-03-31 | 2016-03-29 | Microsoft Technology Licensing, Llc | Combined activation for natural user interface systems |
US8503494B2 (en) | 2011-04-05 | 2013-08-06 | Microsoft Corporation | Thermal management system |
US8824749B2 (en) | 2011-04-05 | 2014-09-02 | Microsoft Corporation | Biometric recognition |
US8620113B2 (en) | 2011-04-25 | 2013-12-31 | Microsoft Corporation | Laser diode modes |
US8702507B2 (en) | 2011-04-28 | 2014-04-22 | Microsoft Corporation | Manual and camera-based avatar control |
US9259643B2 (en) | 2011-04-28 | 2016-02-16 | Microsoft Technology Licensing, Llc | Control of separate computer game elements |
US10671841B2 (en) | 2011-05-02 | 2020-06-02 | Microsoft Technology Licensing, Llc | Attribute state classification |
US8888331B2 (en) | 2011-05-09 | 2014-11-18 | Microsoft Corporation | Low inductance light source module |
US9064006B2 (en) | 2012-08-23 | 2015-06-23 | Microsoft Technology Licensing, Llc | Translating natural language utterances to keyword search queries |
US9137463B2 (en) | 2011-05-12 | 2015-09-15 | Microsoft Technology Licensing, Llc | Adaptive high dynamic range camera |
US8788973B2 (en) | 2011-05-23 | 2014-07-22 | Microsoft Corporation | Three-dimensional gesture controlled avatar configuration interface |
US8760395B2 (en) | 2011-05-31 | 2014-06-24 | Microsoft Corporation | Gesture recognition techniques |
US9594430B2 (en) | 2011-06-01 | 2017-03-14 | Microsoft Technology Licensing, Llc | Three-dimensional foreground selection for vision system |
US8526734B2 (en) | 2011-06-01 | 2013-09-03 | Microsoft Corporation | Three-dimensional background removal for vision system |
US9724600B2 (en) | 2011-06-06 | 2017-08-08 | Microsoft Technology Licensing, Llc | Controlling objects in a virtual environment |
US10796494B2 (en) | 2011-06-06 | 2020-10-06 | Microsoft Technology Licensing, Llc | Adding attributes to virtual representations of real-world objects |
US9013489B2 (en) | 2011-06-06 | 2015-04-21 | Microsoft Technology Licensing, Llc | Generation of avatar reflecting player appearance |
US9208571B2 (en) | 2011-06-06 | 2015-12-08 | Microsoft Technology Licensing, Llc | Object digitization |
US8897491B2 (en) | 2011-06-06 | 2014-11-25 | Microsoft Corporation | System for finger recognition and tracking |
US8597142B2 (en) | 2011-06-06 | 2013-12-03 | Microsoft Corporation | Dynamic camera based practice mode |
US8929612B2 (en) | 2011-06-06 | 2015-01-06 | Microsoft Corporation | System for recognizing an open or closed hand |
US9098110B2 (en) | 2011-06-06 | 2015-08-04 | Microsoft Technology Licensing, Llc | Head rotation tracking from depth-based center of mass |
US9597587B2 (en) | 2011-06-08 | 2017-03-21 | Microsoft Technology Licensing, Llc | Locational node device |
GB2492333B (en) | 2011-06-27 | 2018-12-12 | British Broadcasting Corp | Video encoding and decoding using transforms |
US8885882B1 (en) | 2011-07-14 | 2014-11-11 | The Research Foundation For The State University Of New York | Real time eye tracking for human computer interaction |
TWI481262B (zh) * | 2011-07-28 | 2015-04-11 | Ind Tech Res Inst | 影像編碼系統及影像編碼方法 |
US8743205B2 (en) * | 2011-08-10 | 2014-06-03 | Nice Systems Ltd. | System and method for semantic video content analysis |
US8786730B2 (en) | 2011-08-18 | 2014-07-22 | Microsoft Corporation | Image exposure using exclusion regions |
US9002099B2 (en) | 2011-09-11 | 2015-04-07 | Apple Inc. | Learning-based estimation of hand and finger pose |
JP2013073598A (ja) * | 2011-09-29 | 2013-04-22 | Sony Corp | 画像処理装置、画像処理方法、及びプログラム |
US9098908B2 (en) | 2011-10-21 | 2015-08-04 | Microsoft Technology Licensing, Llc | Generating a depth map |
JP5539945B2 (ja) * | 2011-11-01 | 2014-07-02 | 株式会社コナミデジタルエンタテインメント | ゲーム装置、及びプログラム |
US9557836B2 (en) | 2011-11-01 | 2017-01-31 | Microsoft Technology Licensing, Llc | Depth image compression |
US9503713B2 (en) | 2011-11-02 | 2016-11-22 | Intuitive Surgical Operations, Inc. | Method and system for stereo gaze tracking |
US9117281B2 (en) | 2011-11-02 | 2015-08-25 | Microsoft Corporation | Surface segmentation from RGB and depth images |
US8854426B2 (en) | 2011-11-07 | 2014-10-07 | Microsoft Corporation | Time-of-flight camera with guided light |
US8724906B2 (en) | 2011-11-18 | 2014-05-13 | Microsoft Corporation | Computing pose and/or shape of modifiable entities |
US8509545B2 (en) | 2011-11-29 | 2013-08-13 | Microsoft Corporation | Foreground subject detection |
US8803800B2 (en) | 2011-12-02 | 2014-08-12 | Microsoft Corporation | User interface control based on head orientation |
US8635637B2 (en) | 2011-12-02 | 2014-01-21 | Microsoft Corporation | User interface presenting an animated avatar performing a media reaction |
CN103164851B (zh) * | 2011-12-09 | 2016-04-20 | 株式会社理光 | 道路分割物检测方法和装置 |
US9100685B2 (en) | 2011-12-09 | 2015-08-04 | Microsoft Technology Licensing, Llc | Determining audience state or interest using passive sensor data |
US8971612B2 (en) | 2011-12-15 | 2015-03-03 | Microsoft Corporation | Learning image processing tasks from scene reconstructions |
US8630457B2 (en) | 2011-12-15 | 2014-01-14 | Microsoft Corporation | Problem states for pose tracking pipeline |
US8879831B2 (en) | 2011-12-15 | 2014-11-04 | Microsoft Corporation | Using high-level attributes to guide image processing |
US8811938B2 (en) | 2011-12-16 | 2014-08-19 | Microsoft Corporation | Providing a user interface experience based on inferred vehicle state |
US9342139B2 (en) | 2011-12-19 | 2016-05-17 | Microsoft Technology Licensing, Llc | Pairing a computing device to a user |
JP5821610B2 (ja) * | 2011-12-20 | 2015-11-24 | 富士通株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP5841427B2 (ja) * | 2011-12-28 | 2016-01-13 | 株式会社キーエンス | 画像処理装置及び画像処理方法 |
WO2013101095A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Variable depth compression |
US20130177237A1 (en) | 2012-01-09 | 2013-07-11 | Gregory Gerhard SCHAMP | Stereo-vision object detection system and method |
US9720089B2 (en) | 2012-01-23 | 2017-08-01 | Microsoft Technology Licensing, Llc | 3D zoom imager |
JP2013181837A (ja) * | 2012-03-01 | 2013-09-12 | Canon Inc | 撮像装置 |
US8768007B2 (en) | 2012-03-26 | 2014-07-01 | Tk Holdings Inc. | Method of filtering an image |
US8824733B2 (en) | 2012-03-26 | 2014-09-02 | Tk Holdings Inc. | Range-cued object segmentation system and method |
TWI524735B (zh) * | 2012-03-30 | 2016-03-01 | 華晶科技股份有限公司 | 三維影像產生方法及裝置 |
US10109056B2 (en) * | 2012-04-02 | 2018-10-23 | Thomson Licensing | Method for calibration free gaze tracking using low cost camera |
WO2013151883A1 (en) * | 2012-04-02 | 2013-10-10 | Intel Corporation | Systems, methods, and computer program products for runtime adjustment of image warping parameters in a multi-camera system |
US8898687B2 (en) | 2012-04-04 | 2014-11-25 | Microsoft Corporation | Controlling a media program based on a media reaction |
US9047507B2 (en) | 2012-05-02 | 2015-06-02 | Apple Inc. | Upper-body skeleton extraction from depth maps |
US9210401B2 (en) | 2012-05-03 | 2015-12-08 | Microsoft Technology Licensing, Llc | Projected visual cues for guiding physical movement |
CA2775700C (en) | 2012-05-04 | 2013-07-23 | Microsoft Corporation | Determining a future portion of a currently presented media program |
WO2013170040A1 (en) * | 2012-05-11 | 2013-11-14 | Intel Corporation | Systems and methods for row causal scan-order optimization stereo matching |
US9924196B2 (en) * | 2012-05-18 | 2018-03-20 | The Regents Of The University Of California | Independent thread video disparity estimation method and codec |
US20130329985A1 (en) * | 2012-06-07 | 2013-12-12 | Microsoft Corporation | Generating a three-dimensional image |
US9571818B2 (en) * | 2012-06-07 | 2017-02-14 | Nvidia Corporation | Techniques for generating robust stereo images from a pair of corresponding stereo images captured with and without the use of a flash device |
CN104395929B (zh) | 2012-06-21 | 2017-10-03 | 微软技术许可有限责任公司 | 使用深度相机的化身构造 |
US9836590B2 (en) | 2012-06-22 | 2017-12-05 | Microsoft Technology Licensing, Llc | Enhanced accuracy of user presence status determination |
US9361699B2 (en) * | 2012-06-27 | 2016-06-07 | Imec Taiwan Co. | Imaging system and method |
JP5929553B2 (ja) * | 2012-06-28 | 2016-06-08 | ソニー株式会社 | 画像処理装置、撮像装置、画像処理方法およびプログラム |
US20140043447A1 (en) * | 2012-08-09 | 2014-02-13 | Sony Corporation | Calibration in the loop |
US8907282B2 (en) * | 2012-08-10 | 2014-12-09 | Fluke Corporation | Thermal imaging camera with intermittent image capture |
US9696427B2 (en) | 2012-08-14 | 2017-07-04 | Microsoft Technology Licensing, Llc | Wide angle depth detection |
US8739097B2 (en) * | 2012-09-14 | 2014-05-27 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method for placing decoupling capacitors |
US9621780B2 (en) | 2012-10-04 | 2017-04-11 | Nvidia Corporation | Method and system of curve fitting for common focus measures |
US9392158B2 (en) | 2012-10-04 | 2016-07-12 | Nvidia Corporation | Method and system for intelligent dynamic autofocus search |
US9019267B2 (en) | 2012-10-30 | 2015-04-28 | Apple Inc. | Depth mapping with enhanced resolution |
DE102012110460A1 (de) * | 2012-10-31 | 2014-04-30 | Audi Ag | Verfahren zum Eingeben eines Steuerbefehls für eine Komponente eines Kraftwagens |
WO2014070448A1 (en) | 2012-10-31 | 2014-05-08 | Tk Holdings, Inc. | Vehicular path sensing system and method |
US9265458B2 (en) | 2012-12-04 | 2016-02-23 | Sync-Think, Inc. | Application of smooth pursuit cognitive testing paradigms to clinical drug development |
US8882310B2 (en) | 2012-12-10 | 2014-11-11 | Microsoft Corporation | Laser die light source module with low inductance |
US20140176532A1 (en) * | 2012-12-26 | 2014-06-26 | Nvidia Corporation | Method for image correction and an electronic device embodying the same |
US9857470B2 (en) | 2012-12-28 | 2018-01-02 | Microsoft Technology Licensing, Llc | Using photometric stereo for 3D environment modeling |
US9251590B2 (en) | 2013-01-24 | 2016-02-02 | Microsoft Technology Licensing, Llc | Camera pose estimation for 3D reconstruction |
US9020190B2 (en) | 2013-01-31 | 2015-04-28 | International Business Machines Corporation | Attribute-based alert ranking for alert adjudication |
KR20140102038A (ko) * | 2013-02-13 | 2014-08-21 | 삼성전자주식회사 | 영상 정합 장치 및 영상 정합 방법 |
US9052746B2 (en) | 2013-02-15 | 2015-06-09 | Microsoft Technology Licensing, Llc | User center-of-mass and mass distribution extraction using depth images |
US9940553B2 (en) | 2013-02-22 | 2018-04-10 | Microsoft Technology Licensing, Llc | Camera/object pose from predicted coordinates |
US20140241612A1 (en) * | 2013-02-23 | 2014-08-28 | Microsoft Corporation | Real time stereo matching |
US9135516B2 (en) | 2013-03-08 | 2015-09-15 | Microsoft Technology Licensing, Llc | User body angle, curvature and average extremity positions extraction using depth images |
US9380976B2 (en) | 2013-03-11 | 2016-07-05 | Sync-Think, Inc. | Optical neuroinformatics |
US9092657B2 (en) | 2013-03-13 | 2015-07-28 | Microsoft Technology Licensing, Llc | Depth image processing |
US9538081B1 (en) | 2013-03-14 | 2017-01-03 | Amazon Technologies, Inc. | Depth-based image stabilization |
US9274606B2 (en) | 2013-03-14 | 2016-03-01 | Microsoft Technology Licensing, Llc | NUI video conference controls |
WO2014152470A2 (en) | 2013-03-15 | 2014-09-25 | Tk Holdings, Inc. | Path sensing using structured lighting |
US9953213B2 (en) | 2013-03-27 | 2018-04-24 | Microsoft Technology Licensing, Llc | Self discovery of autonomous NUI devices |
US10848642B2 (en) * | 2013-04-18 | 2020-11-24 | Infineon Technologies Ag | Apparatus for generating trusted image data, an apparatus for authentication of an image and a method for generating trusted image data |
JP2014220704A (ja) * | 2013-05-09 | 2014-11-20 | ソニー株式会社 | 画像処理装置および画像処理方法 |
US9442186B2 (en) | 2013-05-13 | 2016-09-13 | Microsoft Technology Licensing, Llc | Interference reduction for TOF systems |
US9602806B1 (en) * | 2013-06-10 | 2017-03-21 | Amazon Technologies, Inc. | Stereo camera calibration using proximity data |
US9031393B2 (en) | 2013-06-12 | 2015-05-12 | Nvidia Corporation | Methods for enhancing camera focusing performance using camera orientation |
KR20150003573A (ko) * | 2013-07-01 | 2015-01-09 | 한국전자통신연구원 | 영상 패턴 검출 방법 및 그 장치 |
US9356061B2 (en) | 2013-08-05 | 2016-05-31 | Apple Inc. | Image sensor with buried light shield and vertical gate |
US9251435B2 (en) | 2013-09-20 | 2016-02-02 | Oracle International Corporation | Screenshot database for application verification |
US9462253B2 (en) | 2013-09-23 | 2016-10-04 | Microsoft Technology Licensing, Llc | Optical modules that reduce speckle contrast and diffraction artifacts |
US9123131B2 (en) * | 2013-09-24 | 2015-09-01 | Pixart Imaging Inc. | Parallel correlation method and correlation apparatus using the same |
US9565416B1 (en) | 2013-09-30 | 2017-02-07 | Google Inc. | Depth-assisted focus in multi-camera systems |
US9443310B2 (en) | 2013-10-09 | 2016-09-13 | Microsoft Technology Licensing, Llc | Illumination modules that emit structured light |
US9674563B2 (en) | 2013-11-04 | 2017-06-06 | Rovi Guides, Inc. | Systems and methods for recommending content |
US9769459B2 (en) | 2013-11-12 | 2017-09-19 | Microsoft Technology Licensing, Llc | Power efficient laser diode driver circuit and method |
US9508385B2 (en) | 2013-11-21 | 2016-11-29 | Microsoft Technology Licensing, Llc | Audio-visual project generator |
JP6417886B2 (ja) * | 2013-12-12 | 2018-11-07 | 株式会社リコー | 視差値導出装置、移動体、ロボット、視差値生産方法、及びプログラム |
TW201528775A (zh) | 2014-01-02 | 2015-07-16 | Ind Tech Res Inst | 景深圖校正方法及系統 |
US9971491B2 (en) | 2014-01-09 | 2018-05-15 | Microsoft Technology Licensing, Llc | Gesture library for natural user input |
KR102135770B1 (ko) * | 2014-02-10 | 2020-07-20 | 한국전자통신연구원 | 스테레오 카메라 기반의 3차원 얼굴 복원 방법 및 장치 |
JP6565188B2 (ja) * | 2014-02-28 | 2019-08-28 | 株式会社リコー | 視差値導出装置、機器制御システム、移動体、ロボット、視差値導出方法、およびプログラム |
US9412036B2 (en) * | 2014-03-07 | 2016-08-09 | Samsung Electronics Co., Ltd. | Methods and systems for object detection based on column-wise and row-wise sums of pixel values |
US9196039B2 (en) | 2014-04-01 | 2015-11-24 | Gopro, Inc. | Image sensor read window adjustment for multi-camera array tolerance |
JP6589313B2 (ja) * | 2014-04-11 | 2019-10-16 | 株式会社リコー | 視差値導出装置、機器制御システム、移動体、ロボット、視差値導出方法、およびプログラム |
US9756312B2 (en) | 2014-05-01 | 2017-09-05 | Ecole polytechnique fédérale de Lausanne (EPFL) | Hardware-oriented dynamically adaptive disparity estimation algorithm and its real-time hardware |
US10021366B2 (en) * | 2014-05-02 | 2018-07-10 | Eys3D Microelectronics, Co. | Image process apparatus |
US9791267B2 (en) * | 2014-05-27 | 2017-10-17 | Bourbaki 13, Inc. | Determining three-dimensional information from projections or placement of two-dimensional patterns |
US9754377B2 (en) * | 2014-08-15 | 2017-09-05 | Illinois Institute Of Technology | Multi-resolution depth estimation using modified census transform for advanced driver assistance systems |
CN104299261B (zh) * | 2014-09-10 | 2017-01-25 | 深圳大学 | 人体三维成像方法及系统 |
EP3185180B1 (en) * | 2014-10-23 | 2019-01-02 | Axis AB | Modification of at least one parameter used by a video processing algorithm for monitoring of a scene |
WO2016092532A1 (en) * | 2014-12-09 | 2016-06-16 | Inuitive Ltd. | A method for determining depth for stereoscopic reconstruction of three dimensional images |
KR101590777B1 (ko) * | 2014-12-16 | 2016-02-11 | 경북대학교 산학협력단 | 스테레오 비젼에서의 시차 보정장치 및 그 방법 |
KR102298652B1 (ko) | 2015-01-27 | 2021-09-06 | 삼성전자주식회사 | 시차 결정 방법 및 장치 |
US9905020B2 (en) * | 2015-02-12 | 2018-02-27 | Texas Instruments Incorporated | Method and circuitry for performing census transforms |
US9978135B2 (en) * | 2015-02-27 | 2018-05-22 | Cognex Corporation | Detecting object presence on a target surface |
US10853625B2 (en) | 2015-03-21 | 2020-12-01 | Mine One Gmbh | Facial signature methods, systems and software |
EP3274986A4 (en) | 2015-03-21 | 2019-04-17 | Mine One GmbH | METHODS, SYSTEMS, AND SOFTWARE FOR VIRTUAL 3D |
US11189043B2 (en) | 2015-03-21 | 2021-11-30 | Mine One Gmbh | Image reconstruction for virtual 3D |
US9805662B2 (en) * | 2015-03-23 | 2017-10-31 | Intel Corporation | Content adaptive backlight power saving technology |
US10142353B2 (en) | 2015-06-05 | 2018-11-27 | Cisco Technology, Inc. | System for monitoring and managing datacenters |
US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
US9836895B1 (en) | 2015-06-19 | 2017-12-05 | Waymo Llc | Simulating virtual objects |
US20170039567A1 (en) * | 2015-08-03 | 2017-02-09 | Capital One Services, LLC. | Systems and methods for item-based transaction authentication |
JP2017045124A (ja) * | 2015-08-24 | 2017-03-02 | 株式会社日本自動車部品総合研究所 | 視差検出装置 |
CN105160665A (zh) * | 2015-08-25 | 2015-12-16 | 东南大学 | 一种双圆子模板水下地形匹配方法 |
EP3142068B1 (de) | 2015-09-08 | 2018-01-03 | Sick Ag | Verfahren zur dreidimensionalen erfassung von objekten |
KR101766756B1 (ko) * | 2015-11-20 | 2017-08-10 | 경북대학교 산학협력단 | 스테레오 비전 시스템의 렉티피케이션 장치 및 그 방법 |
US10043279B1 (en) | 2015-12-07 | 2018-08-07 | Apple Inc. | Robust detection and classification of body parts in a depth map |
US10823950B2 (en) * | 2016-01-07 | 2020-11-03 | Digital Surigcals PTE. LTD. | Camera system with balanced monocular cues for use in digital stereo microscopes |
US10412280B2 (en) | 2016-02-10 | 2019-09-10 | Microsoft Technology Licensing, Llc | Camera with light valve over sensor array |
US10257932B2 (en) | 2016-02-16 | 2019-04-09 | Microsoft Technology Licensing, Llc. | Laser diode chip on printed circuit board |
US10462452B2 (en) | 2016-03-16 | 2019-10-29 | Microsoft Technology Licensing, Llc | Synchronizing active illumination cameras |
SE541141C2 (en) * | 2016-04-18 | 2019-04-16 | Moonlightning Ind Ab | Focus pulling with a stereo vision camera system |
US10789850B2 (en) * | 2016-05-10 | 2020-09-29 | Mitsubishi Electric Corporation | Obstacle detection device, driving assistance system, and obstacle detection method |
CN105809890B (zh) * | 2016-05-13 | 2017-10-13 | 中国人民解放军国防科学技术大学 | 面向校车安全的遗漏孩童检测方法 |
US10366278B2 (en) | 2016-09-20 | 2019-07-30 | Apple Inc. | Curvature-based face detector |
US10572031B2 (en) | 2016-09-28 | 2020-02-25 | Salesforce.Com, Inc. | Processing keyboard input to cause re-sizing of items in a user interface of a web browser-based application |
US10642474B2 (en) * | 2016-09-28 | 2020-05-05 | Salesforce.Com, Inc. | Processing keyboard input to cause movement of items in a user interface of a web browser-based application |
US10430994B1 (en) | 2016-11-07 | 2019-10-01 | Henry Harlyn Baker | Techniques for determining a three-dimensional textured representation of a surface of an object from a set of images with varying formats |
KR102507383B1 (ko) * | 2016-11-08 | 2023-03-08 | 한국전자통신연구원 | 직사각형 윈도우를 이용한 스테레오 정합 방법 및 스테레오 정합 시스템 |
DE102016223079B4 (de) * | 2016-11-23 | 2024-03-28 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Ermittlung einer Zuordnung zwischen einem Matrixelement einer Matrix und einem Vergleichsmatrixelement einer Vergleichsmatrix mittels Korrespondenztabelle |
US10372532B2 (en) * | 2016-12-07 | 2019-08-06 | Taiwan Semiconductor Manufacturing Co., Ltd. | Memory array and measuring and testing methods for inter-hamming differences of memory array |
US10552151B1 (en) | 2016-12-08 | 2020-02-04 | Ambarella, Inc. | Computer vision implementing calculations of window sums in overlapping windows |
JP7320352B2 (ja) * | 2016-12-28 | 2023-08-03 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元モデル送信方法、三次元モデル受信方法、三次元モデル送信装置及び三次元モデル受信装置 |
CN108268357B (zh) | 2016-12-30 | 2021-10-26 | 阿里巴巴集团控股有限公司 | 实时数据处理方法和装置 |
US10489920B2 (en) * | 2017-01-11 | 2019-11-26 | Egis Technology Inc. | Method and electronic device for determining moving direction of a finger |
JP6997369B2 (ja) * | 2017-02-28 | 2022-02-04 | 富士通株式会社 | プログラム、測距方法、及び測距装置 |
DE102017205458A1 (de) * | 2017-03-30 | 2018-10-04 | Robert Bosch Gmbh | System und ein Verfahren zur Erkennung von Augen und Händen, insbesondere für ein Kraftfahrzeug |
DE112018002572T5 (de) * | 2017-05-19 | 2020-06-04 | Movidius Ltd. | Verfahren, systeme und vorrichtungen zur optimierung der pipeline-ausführung |
US10083352B1 (en) * | 2017-05-22 | 2018-09-25 | Amazon Technologies, Inc. | Presence detection and detection localization |
FR3068557A1 (fr) | 2017-07-05 | 2019-01-04 | Orange | Procede de codage et decodage d'images,dispositif de codage et decodage et programmes d'ordinateur correspondants |
FR3068558A1 (fr) | 2017-07-05 | 2019-01-04 | Orange | Procede de codage et decodage d'images,dispositif de codage et decodage et programmes d'ordinateur correspondants |
FR3062010A1 (fr) * | 2017-07-05 | 2018-07-20 | Orange | Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'une sequence d'images |
US10325174B2 (en) * | 2017-09-18 | 2019-06-18 | Texas Instruments Incorporated | System and method for an efficient hardware implementation of census transform |
US10656706B2 (en) * | 2017-12-04 | 2020-05-19 | International Business Machines Corporation | Modifying a computer-based interaction based on eye gaze |
US10354128B2 (en) * | 2017-12-07 | 2019-07-16 | Friendsport, Inc. | Apparatus and method for improving swimmer performance |
US10782197B2 (en) * | 2017-12-19 | 2020-09-22 | Schlumberger Technology Corporation | Method for measuring surface torque oscillation performance index |
GB201807392D0 (en) * | 2018-05-04 | 2018-06-20 | Five Ai Ltd | Method and image processing system for extracting depth information |
EP3572971B1 (de) | 2018-05-22 | 2021-02-24 | Sick Ag | Absichern eines überwachungsbereichs mit mindestens einer maschine |
CN109263557B (zh) * | 2018-11-19 | 2020-10-09 | 威盛电子股份有限公司 | 车辆盲区侦测方法 |
CN109656870B (zh) * | 2018-11-19 | 2023-07-04 | 北京时代民芯科技有限公司 | 一种sram型fpga在轨动态重构管理系统及方法 |
US11231873B2 (en) * | 2018-12-07 | 2022-01-25 | Intel Corporation | Apparatus and method for assigning velocities to write data |
CN112581477A (zh) * | 2019-09-27 | 2021-03-30 | 京东方科技集团股份有限公司 | 图像处理方法、图像匹配方法、设备以及存储介质 |
US11455813B2 (en) * | 2019-11-14 | 2022-09-27 | Nec Corporation | Parametric top-view representation of complex road scenes |
US11030478B1 (en) * | 2019-11-27 | 2021-06-08 | Compound Eye, Inc. | System and method for correspondence map determination |
CN111078153B (zh) * | 2019-12-20 | 2023-08-01 | 同方知网数字出版技术股份有限公司 | 一种基于文件的分布式存储方法 |
US11270467B2 (en) | 2020-01-21 | 2022-03-08 | Compound Eye, Inc. | System and method for camera calibration |
EP3893145B1 (de) | 2020-04-06 | 2022-03-16 | Sick Ag | Absicherung einer gefahrenstelle |
JP7233399B2 (ja) * | 2020-06-23 | 2023-03-06 | 任天堂株式会社 | ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法 |
US11782254B2 (en) * | 2020-07-24 | 2023-10-10 | United Scope LLC | Digital microscopy system and graphical user interface |
CN112699204B (zh) * | 2021-01-14 | 2021-08-27 | 国家卫星海洋应用中心 | 空间匹配窗口的确定方法和装置 |
CN113313744B (zh) * | 2021-07-30 | 2021-09-28 | 成都工业学院 | 一种无人飞行器高度及位置显示方法 |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3946696A (en) * | 1969-12-05 | 1976-03-30 | The United States Of America As Represented By The Secretary Of The Navy | Automatically controlled magnetic minesweeping system |
US4067027A (en) * | 1976-08-31 | 1978-01-03 | Asia American Industries Ltd. | Binocular telescope containing a camera |
US4418993A (en) * | 1981-05-07 | 1983-12-06 | Stereographics Corp. | Stereoscopic zoom lens system for three-dimensional motion pictures and television |
GB8430980D0 (en) * | 1984-12-07 | 1985-01-16 | Robinson M | Generation of apparently three-dimensional images |
IL75728A (en) * | 1985-07-05 | 1989-06-30 | Elbit Computers Ltd | Image converter system |
US4761066A (en) | 1986-01-14 | 1988-08-02 | Carter William J | Stereoscopic optical system |
US5004328A (en) * | 1986-09-26 | 1991-04-02 | Canon Kabushiki Kaisha | Spherical lens and imaging device using the same |
GB8626527D0 (en) | 1986-11-06 | 1986-12-10 | British Broadcasting Corp | 3d video transmission |
GB2210530B (en) | 1987-09-28 | 1991-06-12 | Pearpoint Ltd | T.v. camera with tilt/pan effect |
JPH01177530A (ja) * | 1988-01-08 | 1989-07-13 | Toshiba Corp | 立体カメラの支持機構 |
GB2215942B (en) * | 1988-02-12 | 1992-01-08 | Pearpoint Ltd | Scanning t.v.camera |
JPH02238576A (ja) | 1989-03-13 | 1990-09-20 | Fujitsu Ltd | 距離情報抽出回路 |
US5063441A (en) * | 1990-10-11 | 1991-11-05 | Stereographics Corporation | Stereoscopic video cameras with image sensors having variable effective position |
US5142357A (en) * | 1990-10-11 | 1992-08-25 | Stereographics Corp. | Stereoscopic video camera with image sensors having variable effective position |
DE4115793C2 (de) | 1991-05-10 | 1993-09-30 | Rheinmetall Jenoptik Optical M | Anordnung zur hochgenauen videogrammetrischen Meßwerterfassung |
US5249056A (en) * | 1991-07-16 | 1993-09-28 | Sony Corporation Of America | Apparatus for generating video signals from film |
US5206503A (en) * | 1991-08-07 | 1993-04-27 | Northrop Corporation | X-Y translational imaging device with housing supporting means for a camera body including image sensing means |
US5454064A (en) | 1991-11-22 | 1995-09-26 | Hughes Aircraft Company | System for correlating object reports utilizing connectionist architecture |
US5270861A (en) * | 1991-12-13 | 1993-12-14 | Eastman Kodak Company | Zoom lens system for use in a compact camera |
US5179441A (en) | 1991-12-18 | 1993-01-12 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Near real-time stereo vision system |
JPH05288532A (ja) | 1992-04-06 | 1993-11-02 | Ricoh Co Ltd | 立体画像入力装置 |
DE4214283A1 (de) * | 1992-04-30 | 1993-11-04 | Schneider Co Optische Werke | Messkamera |
US5454069A (en) * | 1992-08-25 | 1995-09-26 | University Of Kentucky Research Foundation | Process for converting serial image to the sterolithography apparatus (SLA) slice file with automatic base and support generation |
US5402171A (en) * | 1992-09-11 | 1995-03-28 | Kabushiki Kaisha Toshiba | Electronic still camera with improved picture resolution by image shifting in a parallelogram arrangement |
FR2700654B1 (fr) | 1993-01-19 | 1995-02-17 | Thomson Csf | Procédé d'estimation de disparité entre les images monoscopiques constituant une image stéréoscopiques. |
JP3380963B2 (ja) * | 1993-01-25 | 2003-02-24 | ソニー株式会社 | 撮像装置 |
US5453784A (en) * | 1993-02-10 | 1995-09-26 | Krishnan; Arun | Imaging apparatus and method for determining range and determining focus information |
DE4304529C1 (de) | 1993-02-15 | 1994-06-30 | Ems Technik Gmbh | Meßkameraanordnung, insbesondere für photogrammetrische Messungen an technischen Objekten |
JP3301153B2 (ja) * | 1993-04-06 | 2002-07-15 | 株式会社ニコン | 投影露光装置、露光方法、及び素子製造方法 |
US6038071A (en) | 1993-05-24 | 2000-03-14 | Deutshce Thomson-Brandt Gmbh | Apparatus for recording a stereoscopic image |
US5764871A (en) | 1993-10-21 | 1998-06-09 | Eastman Kodak Company | Method and apparatus for constructing intermediate images for a depth image from stereo images using velocity vector fields |
US5440343A (en) * | 1994-02-28 | 1995-08-08 | Eastman Kodak Company | Motion/still electronic image sensing apparatus |
JPH07274006A (ja) | 1994-03-28 | 1995-10-20 | Mitsubishi Electric Corp | 画像処理装置及びスキャナ装置及びプリンタ装置及びディジタル複写機及びディスプレイ装置 |
US5768404A (en) | 1994-04-13 | 1998-06-16 | Matsushita Electric Industrial Co., Ltd. | Motion and disparity estimation method, image synthesis method, and apparatus for implementing same methods |
JPH07298307A (ja) | 1994-04-28 | 1995-11-10 | Canon Inc | 画像記録再生装置 |
JPH07303207A (ja) | 1994-05-09 | 1995-11-14 | Canon Inc | 撮像装置 |
GB2289983B (en) * | 1994-06-01 | 1996-10-16 | Simage Oy | Imaging devices,systems and methods |
JP3242529B2 (ja) | 1994-06-07 | 2001-12-25 | 松下通信工業株式会社 | ステレオ画像対応付け方法およびステレオ画像視差計測方法 |
US6028672A (en) * | 1996-09-30 | 2000-02-22 | Zheng J. Geng | High speed three dimensional imaging method |
WO1996014641A1 (en) * | 1994-11-04 | 1996-05-17 | Kelly Shawn L | Modular binocular electronic imaging system |
US5619032A (en) * | 1995-01-18 | 1997-04-08 | International Remote Imaging Systems, Inc. | Method and apparatus for automatically selecting the best focal position from a plurality of focal positions for a focusing apparatus |
US6587148B1 (en) * | 1995-09-01 | 2003-07-01 | Canon Kabushiki Kaisha | Reduced aliasing distortion optical filter, and an image sensing device using same |
US5819120A (en) * | 1995-11-28 | 1998-10-06 | Fuji Photo Film Co., Ltd. | Variable focus lens device in camera |
US6115482A (en) * | 1996-02-13 | 2000-09-05 | Ascent Technology, Inc. | Voice-output reading system with gesture-based navigation |
US5969760A (en) * | 1996-03-14 | 1999-10-19 | Polaroid Corporation | Electronic still camera having mechanically adjustable CCD to effect focus |
US5767922A (en) | 1996-04-05 | 1998-06-16 | Cornell Research Foundation, Inc. | Apparatus and process for detecting scene breaks in a sequence of video frames |
US5712483A (en) * | 1996-06-28 | 1998-01-27 | The Regents Of The University Of California | X-ray grid-detector apparatus |
US5652616A (en) | 1996-08-06 | 1997-07-29 | General Instrument Corporation Of Delaware | Optimal disparity estimation for stereoscopic video coding |
US5864630A (en) * | 1996-11-20 | 1999-01-26 | At&T Corp | Multi-modal method for locating objects in images |
US6693666B1 (en) * | 1996-12-11 | 2004-02-17 | Interval Research Corporation | Moving imager camera for track and range capture |
US5917937A (en) * | 1997-04-15 | 1999-06-29 | Microsoft Corporation | Method for performing stereo matching to recover depths, colors and opacities of surface elements |
US6215898B1 (en) | 1997-04-15 | 2001-04-10 | Interval Research Corporation | Data processing system and method |
US6188777B1 (en) * | 1997-08-01 | 2001-02-13 | Interval Research Corporation | Method and apparatus for personnel detection and tracking |
US6141434A (en) * | 1998-02-06 | 2000-10-31 | Christian; Andrew Dean | Technique for processing images |
US6141440A (en) * | 1998-06-04 | 2000-10-31 | Canon Kabushiki Kaisha | Disparity measurement with variably sized interrogation regions |
AU1930700A (en) * | 1998-12-04 | 2000-06-26 | Interval Research Corporation | Background estimation and segmentation based on range and color |
US6807290B2 (en) * | 2000-03-09 | 2004-10-19 | Microsoft Corporation | Rapid computer modeling of faces for animation |
-
1997
- 1997-04-15 US US08/839,767 patent/US6215898B1/en not_active Expired - Lifetime
-
1998
- 1998-04-02 EP EP98915278A patent/EP0923757A2/en not_active Withdrawn
- 1998-04-02 WO PCT/US1998/006675 patent/WO1998047061A2/en not_active Application Discontinuation
- 1998-04-02 JP JP54397298A patent/JP4168125B2/ja not_active Expired - Fee Related
- 1998-04-02 CA CA002258293A patent/CA2258293A1/en not_active Abandoned
- 1998-04-02 AU AU69502/98A patent/AU716654B2/en not_active Ceased
-
2000
- 2000-08-17 US US09/641,610 patent/US6456737B1/en not_active Expired - Lifetime
-
2005
- 2005-07-21 US US11/187,613 patent/US7567702B2/en not_active Expired - Fee Related
-
2007
- 2007-09-27 JP JP2007252770A patent/JP2008033958A/ja not_active Withdrawn
-
2009
- 2009-01-30 US US12/362,562 patent/US7925077B2/en not_active Expired - Fee Related
-
2011
- 2011-03-02 US US13/039,248 patent/US8260040B2/en not_active Expired - Fee Related
-
2012
- 2012-08-01 US US13/563,889 patent/US8639024B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10872432B2 (en) | 2018-01-05 | 2020-12-22 | Panasonic Intellectual Property Management Co., Ltd. | Disparity estimation device, disparity estimation method, and program |
Also Published As
Publication number | Publication date |
---|---|
US20060013473A1 (en) | 2006-01-19 |
CA2258293A1 (en) | 1998-10-22 |
US8260040B2 (en) | 2012-09-04 |
EP0923757A2 (en) | 1999-06-23 |
AU716654B2 (en) | 2000-03-02 |
JP2008033958A (ja) | 2008-02-14 |
US20130101160A1 (en) | 2013-04-25 |
US6215898B1 (en) | 2001-04-10 |
JP2000512790A (ja) | 2000-09-26 |
WO1998047061A3 (en) | 1999-02-18 |
WO1998047061A9 (en) | 1999-05-20 |
US6456737B1 (en) | 2002-09-24 |
US7925077B2 (en) | 2011-04-12 |
US8639024B2 (en) | 2014-01-28 |
US20110210851A1 (en) | 2011-09-01 |
WO1998047061A2 (en) | 1998-10-22 |
AU6950298A (en) | 1998-11-11 |
US7567702B2 (en) | 2009-07-28 |
US20090136091A1 (en) | 2009-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4168125B2 (ja) | データ処理システムおよび方法 | |
KR102647351B1 (ko) | 3차원의 포인트 클라우드를 이용한 모델링 방법 및 모델링 장치 | |
JP7403528B2 (ja) | シーンの色及び深度の情報を再構成するための方法及びシステム | |
Banz et al. | Real-time stereo vision system using semi-global matching disparity estimation: Architecture and FPGA-implementation | |
US9846960B2 (en) | Automated camera array calibration | |
WO2016123913A1 (zh) | 数据处理的方法和装置 | |
US9129435B2 (en) | Method for creating 3-D models by stitching multiple partial 3-D models | |
US20030198378A1 (en) | Method and system for 3D smoothing within the bound of error regions of matching curves | |
US20090079730A1 (en) | Method and apparatus for generating 3D image using 2D photograph images | |
US11044398B2 (en) | Panoramic light field capture, processing, and display | |
JP7285834B2 (ja) | 三次元再構成方法および三次元再構成装置 | |
JP2018026064A (ja) | 画像処理装置、画像処理方法、システム | |
CN115035235A (zh) | 三维重建方法及装置 | |
TW201436552A (zh) | 用於使用至少一較高訊框率之影像流而增加影像流之訊框率之方法及裝置 | |
CN110310325B (zh) | 一种虚拟测量方法、电子设备及计算机可读存储介质 | |
CN114881841A (zh) | 图像生成方法及其装置 | |
Valsaraj et al. | Stereo vision system implemented on FPGA | |
US11665330B2 (en) | Dynamic-baseline imaging array with real-time spatial data capture and fusion | |
TW202221655A (zh) | 修改三維模型的方法及電子設備 | |
JP7378960B2 (ja) | 画像処理装置、画像処理システム、画像生成方法、および、プログラム | |
KR20190072742A (ko) | 캘리브레이션된 멀티 카메라 입력 기반 실시간 초다시점 중간시점 영상 합성 방법 및 시스템 | |
JP2002222430A (ja) | 3次元ポリゴンメッシュを生成する方法、装置、プログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
Perez et al. | A comparison of hardware resources required by real-time stereo dense algorithms | |
CA3214699A1 (en) | Systems and methods for generating or rendering a three-dimensional representation | |
Yao et al. | Image-based modeling and rendering from multiple views: A multiple cues based propagation approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070327 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070626 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070813 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070726 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070903 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070824 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071001 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070927 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080218 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080605 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080610 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080708 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080709 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080708 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |