(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-02
(45)【発行日】2024-02-13
(54)【発明の名称】ディスプレイ装置およびシステム
(51)【国際特許分類】
G03H 1/04 20060101AFI20240205BHJP
G03H 1/22 20060101ALI20240205BHJP
【FI】
G03H1/04
G03H1/22
【外国語出願】
(21)【出願番号】P 2021067223
(22)【出願日】2021-04-12
【審査請求日】2021-08-19
(32)【優先日】2020-06-04
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】519027213
【氏名又は名称】エンヴィシクス リミテッド
(74)【代理人】
【識別番号】100116850
【氏名又は名称】廣瀬 隆行
(74)【代理人】
【識別番号】100165847
【氏名又は名称】関 大祐
(72)【発明者】
【氏名】スティグ ミカエル コリン
【審査官】池田 博一
(56)【参考文献】
【文献】特開平06-131456(JP,A)
【文献】特開2001-160140(JP,A)
【文献】米国特許出願公開第2010/0214306(US,A1)
【文献】特表2013-524688(JP,A)
【文献】特開2009-087252(JP,A)
【文献】米国特許出願公開第2020/0117139(US,A1)
【文献】中国特許出願公開第110095968(CN,A)
【文献】米国特許出願公開第2019/0377840(US,A1)
【文献】米国特許出願公開第2020/0167889(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G03H 1/04
G03H 1/22
G06T 1/20
G06T 1/60
H04N 13/332
H04N 9/31
(57)【特許請求の範囲】
【請求項1】
m行およびn列のカーネル値を有するカーネルを使用して一次画像をアンダーサンプリングすることにより二次画像を生成するように構成された画像処理エンジンであって、前記カーネルが、前記一次画像の各行に対して複数のカーネルサンプリング位置を有し、行の各サンプリング位置が
x方向のx画素のストライド距離で隔てられ、
前記画像処理エンジンが、
画素値の第1のデータストリームを形成し、前記第1のデータストリームが前記一次画像の画像画素値を行ごとに読み取ることによって形成され、前記第1のデータストリームが前記一次画像の最初の行から最後の行までの画素値を含み、
カーネル値の第2のデータストリームを形成し、
前記第2のデータストリームの各カーネル値は、前記第1のデータストリームの対応する画素値と対となるように調整されており、
前記第1のデータストリームの前記画素値を前記第2のデータストリームの前記カーネル値と同期させて、各画素値が、対応する前記カーネルサンプリング位置の前記カーネルの当該カーネル値と対になるようにする
ように構成されたデータ・ストリーミング・エンジンを備える
画像処理エンジン。
【請求項2】
前記第1のデータストリーム内の前記一次画像の前記画素値と前記第2のデータストリームの前記カーネル値との間に1対多の相関関係がある
請求項1に記載の画像処理エンジン。
【請求項3】
前記データ・ストリーミング・エンジンが、
(i)前記カーネルの第1の行の前記カーネル値を複数回繰り返し読み取るステップ、
(ii)前記カーネルの次の行の前記カーネル値を複数回繰り返し読み取るステップと、
(iii)前記ステップ(ii)を(m-2)回反復的に繰り返すステップ、
(iv)前記ステップ(i)に戻るステップ、および
(v)前記第1のデータストリーム内にもう画素値がないときに前記ステップ(i)~(iv)を停止するステップ
を使用して、前記第2のデータストリームを形成するように構成される
請求項1または2に記載の画像処理エンジン。
【請求項4】
前記第2のデータストリーム内の前記カーネルのカーネル値の各行が、前記第1のデータストリーム内の前記一次画像の画像画素の複数の行と対になる
請求項1から請求項3のいずれか一項に記載の画像処理エンジン。
【請求項5】
バッファをさらに備え、前記画像処理エンジンが、
前記データ・ストリーミング・エンジンから前記第1のデータストリームの画像画素値と前記第2のデータストリームのカーネル値の同期された対を順番に受け取り、
前記第1のデータストリームの各画素値を、前記第2のデータストリームの、前記画素値の対になったカーネル値で処理し、
前記バッファに保存するための各カーネルサンプリング位置に対して前記処理が済んだ画素値を累積する
ようにさらに構成される
請求項1から請求項4のいずれか一項に記載の画像処理エンジン。
【請求項6】
(a)各画素値に、前記第2のデータストリームの、前記画素値の対になったカーネル値を乗算して、対応する重み付き画素値のシーケンスを決定するステップ、
(b)第1の複数のカーネルサンプリング位置の各カーネルサンプリング位置に対してn個の前記重み付き画素値を合計するステップ、
(c)前記第1の複数のカーネルサンプリング位置のそれぞれに対して前記累積重み付き画素値を決定するステップ、および
(d)前記バッファ内の連続するストレージ場所における前記第1の複数のカーネルサンプリング位置のそれぞれに対して前記累積重み付き画素値を保存して、前記バッファ内の二次画像の部分的画素値のシーケンスを形成するようにするステップ
を使用して、前記第1のデータストリーム内の前記一次画像の第1の行の画素値を処理し、
前記ステップ(a)~(d)を反復的に繰り返して、前記第1のデータストリーム内の前記一次画像の後続の各行に対して前記画素値を処理する、
ように構成された
請求項5に記載の画像処理エンジン。
【請求項7】
前記ステップ(a)~(d)を反復的に繰り返して前記第1のデータストリーム内の前記一次画像の(m-1)後続行の画素値を処理し、それによって前記第1の複数のカーネルサンプリング位置のそれぞれに対して累積重み付き完全画素値を決定し、
他の複数のカーネルサンプリング位置の各カーネルサンプリング位置に対して前記ステップ(a)~(d)を使用して前記第1のデータストリーム内の前記一次画像のm行の画素値の後続連続するセットを処理する、
ように構成された
請求項6に記載の画像処理エンジン。
【請求項8】
(e)前記第1のデータストリーム内の前記一次画像の次の行の前記画素値を処理する際に使用するための前記二次画像の部分的画素値の前記シーケンスを含む第3のデータストリームを前記バッファからフィードバックするステップ
を使用して、前記第1のデータストリーム内の前記一次画像の各行の前記画素値を処理する
ようにさらに構成された
請求項6または7に記載の画像処理エンジン。
【請求項9】
カーネルサンプリング位置に対して前記(b)で決定されたn個の前記重み付き画素値と、
前記(e)でのフィードバックに含まれる前記カーネルサンプリング位置に対する前記第3のデータストリームの前記対応する部分的2次画像画素値と
の和を決定することにより、前記(c)での各前記カーネルサンプリング位置に対して前記累積重み付き画素値を決定するように構成された
請求項8に記載の画像処理エンジン。
【請求項10】
(f)前記複数のカーネルサンプリング位置のそれぞれの各カーネルサンプリング位置に対応する最終二次画像画素値を前記バッファから出力する
ようにさらに構成された
請求項6から9のいずれか一項に記載の画像処理エンジン。
【請求項11】
x方向の前記ストライド距離がn画素であり、前記カーネルが
、y方向の前記ストライド距離がm画素であるラスタ走査パス内で移動されて、前記カーネルサンプリング位置が前記一次画像のm×n画素の連続する配列をサブサンプリングするようにする
請求項1から請求項10のいずれか一項に記載の画像処理エンジン。
【請求項12】
m行およびn列のカーネル値を有するカーネルを使用して一次画像をアンダーサンプリングすることにより二次画像を生成する方法であって、前記カーネルが、前記一次画像の各行に対して複数のカーネルサンプリング位置を有し、行の各カーネルサンプリング位置が
x方向のx画素のストライド距離で隔てられ、前記方法が、
画素値の第1のデータストリームを形成することであって、前記第1のデータストリームが前記一次画像の画像画素値を行ごとに読み取ることによって形成され前記第1のデータストリームが前記一次画像の最初の行から最後の行までの画素値を含むこと、
カーネル値の第2のデータストリームを形成することであって、
前記第2のデータストリームの各カーネル値は、前記第1のデータストリームの対応する画素値と対となるように調整されており、および
前記第1のデータストリームの前記画素値を前記第2のデータストリームの前記カーネル値と同期させて、各画素値が、対応する前記カーネルサンプリング位置に対する前記カーネルの当該カーネル値と対になるようにすること
を含む、
方法。
【請求項13】
前記第2のデータストリームを形成することが、
(i)前記カーネルの第1の行の前記カーネル値を複数回繰り返し読み取るステップ、
(ii)前記カーネルの次の行の前記カーネル値を複数回繰り返し読み取るステップ、
(iii)前記ステップ(ii)を(m-2)回反復的に繰り返すステップ、
(iv)前記ステップ(i)に戻るステップ、および
(v)前記第1のデータストリーム内にもう画素値がないときに前記ステップ(i)~(iv)を停止するステップ
を含む、
請求項12に記載の方法。
【請求項14】
前記第2のデータストリーム内の前記カーネルのカーネル値の各行を、前記第1のデータストリーム内の前記一次画像の画像画素の複数の行と対にすることをさらに含む
請求項12または13に記載の方法。
【請求項15】
前記第1のデータストリームの画像画素値と前記第2のデータストリームのカーネル値の同期された対を順番に受け取ること、
前記第1のデータストリームの各画素値を、前記第2のデータストリームの、前記画素値の対になったカーネル値で処理すること、
各カーネルサンプリング位置に対して前記処理が済んだ画素値を累積すること、および
前記累積値のそれぞれを、バッファ内の対応するストレージ場所に保存すること
をさらに含む、
請求項12から14のいずれか一項に記載の方法。
【請求項16】
(a)各画素値に、前記第2のデータストリームの、前記画素値の対になったカーネル値を乗算して、対応する重み付き画素値のシーケンスを決定するステップ、
(b)第1の複数のカーネルサンプリング位置の各カーネルサンプリング位置に対してn個の前記重み付き画素値を合計するステップ、
(c)前記第1の複数のカーネルサンプリング位置のそれぞれに対して前記累積重み付き画素値を決定するステップ、および
(d)前記バッファ内の連続するストレージ場所における前記第1の複数のカーネルサンプリング位置のそれぞれに対して前記累積重み付き画素値を保存して、前記バッファ内の二次画像の部分的画素値のシーケンスを形成するようにするステップ
を使用して、前記第1のデータストリーム内の前記一次画像の第1の行の前記画素値を処理すること、および
前記ステップ(a)~(d)を反復的に繰り返して、前記第1のデータストリーム内の前記一次画像の後続の各行に対して前記画素値を処理すること
をさらに含む、
請求項15に記載の方法。
【請求項17】
前記ステップ(a)~(d)を反復的に繰り返して前記第1のデータストリーム内の前記一次画像の(m-1)後続行の画素値を処理し、それによって前記第1の複数のカーネルサンプリング位置のそれぞれに対して累積重み付き完全画素値を決定すること、および
他の複数のカーネルサンプリング位置の各カーネルサンプリング位置に対して前記ステップ(a)~(d)を使用して前記第1のデータストリーム内の前記一次画像のm行の画素値の後続連続するセットを処理すること
をさらに含む、
請求項16に記載の方法。
【請求項18】
前記第1のデータストリーム内の前記一次画像の各行の前記画素値を処理することが、
(e)前記第1のデータストリーム内の前記一次画像の次の行の前記画素値を処理する際に使用するための前記二次画像の部分的画素値のシーケンスを含む第3のデータストリームを前記バッファからフィードバックするステップ
を含む、
請求項16または17に記載の方法。
【請求項19】
前記(c)での各カーネルサンプリング位置に対して前記累積重み付き画素値を決定するステップが、
前記カーネルサンプリング位置に対して前記(b)で決定されたn個の前記重み付き画素値と、
前記(e)での前記フィードバックに含まれる前記カーネルサンプリング位置に対する前記第3のデータストリームの前記対応する部分的2次画像画素値と
の和を決定することを含む、
請求項18に記載の方法。
【請求項20】
(f)前記複数のカーネルサンプリング位置のそれぞれの各カーネルサンプリング位置に対応する最終二次画像画素値を前記バッファから出力するステップ
をさらに含む、
請求項16から19のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ホログラフィック投影(holographic projection)のために画像を処理するための画像プロセッサ(image processor)および方法に関する。本開示はさらに、ホログラフィックプロジェクタ(holographic projector)、ホログラフィック投影システム、画像をホログラフィックに投影する方法、およびビデオ画像をホログラフィックに投影する方法に関する。いくつかの実施形態は、ヘッドアップディスプレイ(head-up display)および光検出測距システムに関する。
【背景技術】
【0002】
物体から散乱された光は、振幅と位相の両方の情報を含んでいる。この振幅と位相の情報は、干渉縞を含むホログラフィック記録、すなわち「ホログラム(hologram)」を形成するために、周知の干渉技法によって例えば感光板上に捕捉され得る。ホログラムは、元の物体を表す2次元または3次元のホログラフィック再構成(holographic reconstruction)、すなわち再生画像を形成するために、適切な光で照明することによって再構成され得る。
【0003】
コンピュータ生成ホログラフィが干渉プロセスを数値的にシミュレートし得る。コンピュータ生成ホログラムが、フレネル変換やフーリエ変換などの数学的変換に基づく技法によって計算され得る。この種のホログラムは、フレネル/フーリエ変換ホログラムまたは単にフレネル/フーリエホログラムと呼ばれることがある。フーリエホログラムは、物体のフーリエ領域/面表現または物体の周波数領域/面表現と見なされ得る。コンピュータ生成ホログラムは、例えば、コヒーレント光線追跡技法または点群技法によって計算されてもよい。
【0004】
コンピュータ生成ホログラムは、入射光の振幅および/または位相を変調するようになされた空間光変調器上で符号化され得る。光変調は、例えば、電気的にアドレス可能な液晶、光学的にアドレス可能な液晶、またはマイクロミラーを使用して実現され得る。
【0005】
空間光変調器は、通常、セルまたは要素と呼ばれることもある複数の個別にアドレス可能な画素を備える。光変調方式は、バイナリ、マルチレベルまたは連続であり得る。あるいは、装置は連続的でよく(すなわち、画素から構成されず)、したがって、光変調は装置全体にわたって連続的でよい。空間光変調器は反射性でよい、すなわち変調光が反射して出力される。空間光変調器は同様に透過性でよい、すなわち変調光が透過して出力される。
【0006】
ホログラフィックプロジェクタは、本明細書に記載のシステムを使用して提供され得る。この種のプロジェクタは、例えば、ニアアイ装置(near-eye devices)を含むヘッドアップディスプレイ「HUD」およびヘッドマウントディスプレイ「HMD」に応用されている。
【0007】
ホログラフィックプロジェクタなどのコヒーレント光を使用する装置の画質を向上させるために、移動ディフューザ(moving diffuser)が使用され得る。
【発明の概要】
【0008】
本開示の諸態様は、添付の独立請求項に定義されている。
【0009】
データストリーミングを使用して投影用のターゲット画像のホログラムを形成する画像処理エンジンおよび方法が開示される。特に、以下でより詳細に説明するように、ターゲット画像のアップスケールおよび/または修正されたバージョンであり得る入力画像または一次画像は、カーネル(kernel)を使用してサブサンプリングされてもよく、二次画像は、ターゲット画像のホログラムを生成するために出力され使用され得る。本明細書に記載されるように、複数の2つ以上のデータストリームを使用してカーネルサブサンプリングする技法は、データストレージ要件(data storage requirements)(例えば、記憶容量および/またはバッファ容量)の低減および処理速度の向上を含む効率の改善を提供する。
【発明が解決しようとする課題】
【0010】
従来、カーネルサブサンプリング用の一次画像データ全体を保存するには、大容量のデータストレージが必要である。所期のカーネル演算(kernel operation)ごとに必要なすべての画素の一次画像データにアクセスするには、ランダム・メモリ・アクセスが必要である。さらに、ビデオ速度処理には、バッファリングされるべき画像データの少なくとも一部が必要であり、特に、処理を開始するためにかつその後の処理の各段階で必要な少なくともデータエントリ(画像画素値)が必要である。したがって、所要バッファリング容量は、出力データ(二次画像)のサイズではなく、入力データ(一次画像)のサイズに依存する。
【0011】
ホログラフィック画像投影の場合、画像の所望の解像度(ホログラフィック再構成)を達成するために、投影用のターゲット画像は、増加した画素数を有するソース画像を形成するように「アップスケール」され得る。さらに、ソース画像は、当技術分野で周知のようにプロジェクタの光学再生システムの光学構成要素によって引き起こされる画像歪み(ワーピング)を補正するために、中間画像、例えばいわゆる「ワープ画像」を形成するように修正され得る。アップスケールされたソース画像またはこの画像から導出された中間画像は、カーネルサブサンプリング用の一次画像として使用され得る。したがって、一次画像のサイズ(解像度/画素数)、したがってデータ量は、二次画像のサイズの複数倍とすることができる。その結果、一次画像をカーネルサブサンプリングして二次画像を生成するには、大量のデータストレージおよびバッファリング容量が必要になる。
【課題を解決するための手段】
【0012】
本開示によれば、データストリーミングは、ホログラム計算のための出力画像を決定するためにカーネルを使用して一次画像をサブサンプリングするために使用されるデータストレージおよびバッファリング容量を減らすために使用される。
【0013】
一次画像の画素値の第1のデータストリームは、カーネルのカーネル値の第2のデータストリームと同期されてもよく、その結果、各画素値は、複数のカーネルサンプリング位置でのカーネル演算のための対応するカーネル値と対になる。カーネル値は、カーネルサンプリング位置ごとに第2のデータストリーム内で繰り返される。したがって、第1のデータストリーム内の一次画像の画素値と第2のデータストリームのカーネル値との間には1対多の相関関係がある。さらに、第2のデータストリーム内のカーネルのカーネル値の各行は、第1のデータストリーム内の一次画像の画像画素の複数の行と対になる。
【0014】
いくつかの実施形態では、データ・ストリーミング・エンジンが、データストリーミング手順を実行するように構成される。特に、データ・ストリーミング・エンジンは、一次画像の画素の画素値を行ごとに読み取ることにより、第1のデータストリームを形成することができる。例えば、画素値は、ラスタ走査順序で画素ごとに読み取ることができる。同時に、データ・ストリーミング・エンジンは、(i)カーネルの第1の行のカーネル値を複数回繰り返し読み取るステップ、(ii)カーネルの次の行のカーネル値を複数回繰り返し読み取るステップ、(iii)ステップ(ii)を(m-2)回反復的に繰り返すステップ、(iv)ステップ(i)に戻るステップ、および(v)第1のデータストリーム内にもう画素値がないときにステップ(i)~(iv)を停止するステップを使用して、m行を有するカーネルのカーネル値の第2のデータストリームを形成することができる。クロックカウンタが、第1のデータストリーム内の値と第2のデータストリーム内の値を同期させるために使用され得る。
【0015】
いくつかの実施形態では、画像処理エンジンは、カーネル演算およびバッファリング手順を実行するように構成される。特に、カーネル演算は、複数のカーネルサンプリング位置で実行される。一次画像の画素の各行に対して、カーネル演算は、カーネルサンプリング位置に関連する第1および第2のデータストリームの値の同期された対を処理して、バッファに出力されるそれぞれの累積(部分的)画素値を導出する。バッファリング手順は、累積(部分的)画素値をバッファ内の連続する位置に保存することによって実行される。一次画像の1行の画素を処理することからバッファに出力される累積(部分)画素値は、一次画像の次の行の画素を処理するためのフィードバックとして提供される第3のデータストリームを形成して、更新された累積(部分)画素値を導出することができる。フィードバックプロセスは、一次画像の最後の行の画素が同じ複数のカーネルサンプリング位置に対して(すなわち、同じ行または列のカーネルサンプリング位置で)処理されるまで、行ごとに繰り返すことができる。次いで、バッファに出力される累積画素値は、二次画像の行の全または完全画素値になる。したがって、二次画像の画素の行が生成され、行ごとに出力され得る。好適には、二次画像の画素の行は、二次画像に対応するホログラムを計算するためのホログラムエンジンにリアルタイムでストリーミングされ得る。したがって、二次画像のすべての画素が導出される前にホログラム計算を開始することが可能である。
【0016】
いくつかの例では、m行およびn列を有するカーネルは、x方向のストライドがn画素であり、y方向のストライドがm画素であるラスタ走査パス内で移動される。したがって、カーネルウィンドウは、一次画像のm×n画素の連続する配列をサブサンプリングする。これらの例では、第1のデータストリームは、一次画像の画素値を画素ごとにラスタ走査順序で読み取ることによって形成され得る。これにより、第1のデータストリームを形成するためのデータストリーミング手順が簡素化される。
【0017】
実装形態では、データストリーミングにより、一次画像からの二次画像の決定および対応するホログラムの決定を同時に実行することが可能になり、それによって処理速度を上げることができる。特に、二次画像に対して決定された画素値は、以下でさらに説明するように、リアルタイムでホログラムエンジンにストリーミングされ得る。処理速度の向上により、ビデオストリーム内の画像に対してより多くのホログラムを表示することが(すなわち、より多くの二次画像またはサブフレームを使用して)が可能になる。人間の目の積分時間内により多くの画像を表示することにより、観察者に見られるホログラフィック再構成(ホログラフィック画像)の品質が向上する。
【0018】
いくつかの実装形態では、複数の二次画像は、異なるサブサンプリングスキームを使用して同じソース画像をサブサンプリングすることによって決定され得る。例えば、複数の異なるカーネルおよび/またはカーネルサンプリング位置が、複数の異なる二次画像を決定するために使用され得る。複数の異なる二次画像は、ターゲット画像を投影するための対応する複数のホログラムを生成するために使用され得る。例えば、複数の異なるホログラムは、人間の目の積分時間内に、空間光変調器上に順次表示されてもよく、空間光変調器は、投影し見るために再生面で一連のホログラフィック再構成を形成するために照明されてもよい。投影用の同じターゲット画像を表す複数の異なるホログラムを表示することは、観察者に見られる画像の品質の向上につながる可能性があることが見出されている。
【0019】
「ホログラム(hologram)」という用語は、物体に関する振幅情報または位相情報、あるいはそれらの何らかの組合せを含む記録を指して使用される。「ホログラフィック再構成(holographic reconstruction)」という用語は、ホログラムを照明することによって形成される物体の光学的再構成を指して使用される。本明細書に開示されるシステムは、ホログラフィック再構成が実画像であり、ホログラムから空間的に隔てられているため、「ホログラフィックプロジェクタ(holographic projector)」と言われる。「再生フィールド(replay field)」という用語は、ホログラフィック再構成が形成され、完全に焦点を合わせられている2次元領域を指して使用される。ホログラムが画素を備える空間光変調器に表示される場合、再生フィールドは、複数の回折次数の形で繰り返され、各回折次数は、ゼロ次再生フィールドのレプリカである。ゼロ次再生フィールドは通常、これが最も明るい再生フィールドであるため、好ましい再生フィールドまたは一次再生フィールドに対応する。特に明記されていない限り、「再生フィールド」という用語は、ゼロ次再生フィールドを指すと解釈されるものとする。「再生面(replay plane)」という用語は、すべての再生フィールドを含む空間内の平面を指して使用される。「画像(image)」、「再生画像(replay image)」および「画像領域(image region)」という用語は、ホログラフィック再構成の光によって照明される再生フィールドの領域を指す。いくつかの実施形態では、「画像」は、「画像スポット」または便宜上「画像画素」と呼ばれることがある離散スポットを含むことができる。
【0020】
「符号化(encoding)」、「書き込み(writing)」または「アドレス指定(addressing)」という用語は、SLMの複数の画素に、各画素の変調レベルをそれぞれ決定する当該複数の制御値を提供するプロセスを説明するために使用される。SLMの画素は、複数の制御値を受け取るのに応答して光変調分布を「表示する」ように構成されると言うことができる。したがって、SLMはホログラムを「表示する」と言うことができ、ホログラムは、光変調の値またはレベルの配列と見なすことができる。
【0021】
許容品質のホログラフィック再構成は、元の物体のフーリエ変換に関連する位相情報のみを含む「ホログラム」から形成され得ることが分かっている。そのようなホログラフィック記録は、位相限定ホログラムと呼ばれることがある。諸実施形態は、位相限定ホログラムに関するが、本開示は、振幅限定ホログラフィにも同様に適用可能である。
【0022】
本開示はまた、元の物体のフーリエ変換に関連する振幅および位相情報を使用してホログラフィック再構成を形成することにも同様に適用可能である。いくつかの実施形態では、これは、元の物体に関連する振幅情報と位相情報の両方を含む、いわゆる完全複素ホログラムを使用する複素変調によって達成される。この種のホログラムは、ホログラムの各画素に割り当てられた値(グレーレベル)が振幅および位相の成分を有するため、完全複素ホログラムと呼ばれることがある。各画素に割り当てられた値(グレーレベル)は、振幅成分と位相成分の両方を有する複素数として表すことができる。いくつかの実施形態では、完全複素コンピュータ生成ホログラムが計算される。
【0023】
「位相遅れ」の省略表現として、位相値、位相成分、位相情報、あるいは単に、コンピュータ生成ホログラムまたは空間光変調器の画素の位相が参照され得る。すなわち、記載される位相値は、実際には、その画素によって提供される位相遅延の量を表す数値(例えば、0~2πの範囲内)である。例えば、位相値がπ/2であると言われる空間光変調器の画素は、受信光の位相をπ/2ラジアンだけ遅らせる。いくつかの実施形態では、空間光変調器の各画素は、複数の可能な変調値(例えば、位相遅れ値)のうちの1つで動作可能である。「グレーレベル(grey level)」という用語は、複数の利用可能な変調レベルを指して使用され得る。例えば、「グレーレベル」という用語は、便宜上、異なる位相レベルが異なるグレー色合いを提供しない場合でも、位相限定変調器で利用可能な複数の利用可能な位相レベルを指して使用され得る。「グレーレベル」という用語はまた、便宜上、複素変調器での複数の利用可能な複素変調レベルを指して使用され得る。
【0024】
したがって、ホログラムは、グレーレベルの配列、すなわち、位相遅れ値の配列や複素変調値などの光変調値の配列を含む。ホログラムはまた、回折パターンと見なされる、というのは、ホログラムは、空間光変調器に表示され、空間光変調器の画素ピッチに匹敵する、一般にはそれよりも短い波長を有する光で照明されると回折を引き起こすパターンであるからである。本明細書では、ホログラムを、レンズまたは格子として機能する回折パターンなどの他の回折パターンと組み合わせることについて説明する。例えば、格子として機能する回折パターンは、再生面上の再生フィールドを並進させるためにホログラムと組み合わせることができる、または、レンズとして機能する回折パターンは、ホログラフィック再構成の焦点を近接場(near field)での再生面に合わせるためにホログラムと組み合わせることができる。
【0025】
「ターゲット画像(target image)」という用語は、本明細書では、投影のための所望の画像を指して用いられる。すなわち、ターゲット画像は、ホログラフィックシステムがホログラフィック再生面上に投影するよう求められる画像である。ターゲット画像は、静止画像、またはビデオレート画像シーケンスなどの一連の画像のうちの1つの画像(または画像フレーム)とすることができる。
【0026】
「ソース画像(source image)」という用語は、本明細書では、ターゲット画像から導出される画像を指して用いられる。ソース画像はターゲット画像と同じとすることができる、または、ソース画像は、ターゲット画像の高解像度バージョンまたはアップスケールバージョンとすることができる。特に、ソース画像は、この画像の解像度(画素数に関して)を高めるように、ターゲット画像のアップスケールバージョンとすることができる。すなわち、ソース画像は、ターゲット画像よりも多くの画素を含むことができる。任意のアップスケーリング手法が使用され得る。いくつかの実施形態では、アップスケーリングは、詳細な説明に記載されているように、ターゲット画像の画素値を繰り返すことを含む。これらの実施形態では、ターゲット画像をアップスケールするための計算エンジンは、繰り返しを表すために単純なマッピングスキームを使用することができる。
【0027】
さらに、ソース画像は、例えば、ホログラフィックプロジェクタの光学構成要素によって引き起こされる歪みを反映するように修正され得る。この場合、ソース画像は、ソース画像から導出される「中間画像」である。諸実施形態の記述では、「中間画像(intermediate image)」という用語は、本明細書では、例えばワーピングマップ(warping map)に従って、ソース画像から導出される画像を指して用いられる。
【0028】
「一次画像(primary image)」という用語は、本明細書では、本明細書に記載されるようにサブサンプリングされた画像を指して用いられる。一次画像は、(1)ソース画像か(2)ソース画像から導出された中間画像のどちらかである。
【0029】
「二次画像(secondary image)」という用語は、本明細書では、一次画像から導出される画像を指して用いられる。本明細書に記載されるように、複数の二次画像が個々の一次画像から導出され得る。各二次画像は、一次画像をサブサンプリング(「アンダーサンプリング」とも呼ばれる)することによって形成される。各二次画像は、ソース画像よりも少ない画素を含む。二次画像の各画素値は、随意に、詳細な説明に記載されているように重み付け技法を使用して、一次画像のいくつかの画素値(例えば、画素の群または配列)から計算することができる。特に、ターゲット画像からソース画像を形成するために使用されるアップスケーリングプロセスは、一次画像から各二次画像を形成するために使用されるサブサンプリング技法とは異なる。二次画像はそれぞれ一次画像とは異なるが、随意に、二次画像は同じ画素数を有していてもよい。各二次画像に対応するホログラムが計算される。
【0030】
「出力画像(output image)」という用語は、本明細書では、一次画像をサブサンプリングすることによって導出される「二次画像」を指して使用される、というのは、出力画像は、本明細書に記載されるように適切なアルゴリズムを使用してホログラムを計算するために画像処理エンジンからホログラムエンジンに出力されるからである。特に明記しない限り、「ターゲット画像」、「一次画像」、「ソース画像」、「中間画像」、および「二次/出力画像」という用語は、本明細書では(省略表現として)、それぞれの画像を表す画素値(または同様のもの)を含む画像データを指して使用される。
【0031】
様々な実施形態および実施形態の群が以下の詳細な説明において別個に開示され得るが、任意の実施形態または実施形態の群の他の特徴が、任意の実施形態または実施形態の群の他の特徴または他の特徴の組合せと組み合わされてもよい。すなわち、本開示で開示される特徴のすべての可能な組合せおよび順列が想定される。
【0032】
特定の実施形態について、以下の図を参照してほんの一例として説明する。
【図面の簡単な説明】
【0033】
【
図1】スクリーン上にホログラフィック再構成を生成する反射型SLMを示す概略図である。
【
図2A】Gerchberg-Saxton型アルゴリズム例の第1の反復を示す図である。
【
図2B】Gerchberg-Saxton型アルゴリズム例の第2の反復およびその後の反復を示す図である。
【
図2C】Gerchberg-Saxton型アルゴリズム例の代替の第2の反復およびその後の反復を示す図である。
【
図4A】諸実施形態による、2つの連続するサンプリング位置で動作する4×4カーネルを使用して出力画像を導出するために一次画像をサブサンプリングするための例示的な技法を示す図である。
【
図4B】諸実施形態による、2つの連続するサンプリング位置で動作する4×4カーネルを使用して出力画像を導出するために一次画像をサブサンプリングするための例示的な技法を示す別の図である。
【
図5B】
図4Aおよび
図4Bの技法で使用する、カーネルの値または重みを有するカーネル例を示す図である。
【
図6】諸実施形態による、カーネルを使用してサブサンプリングするための一次画像の画素データをデータストリーミングする方法を概略的に示す図である。
【
図7】諸実施形態による、一次画像の第1の行の入力データストリームの画像画素データとバッファに提供される出力データストリームの値とに対して実行される
図6のカーネルサブサンプリング手順を示す図である。
【
図8】諸実施形態による、
図7に示される出力データストリームの値が、カーネルサブサンプリング手順へのフィードバックとして提供される部分的画素値としてどのように使用されるかを概略的に示す図である。
【
図9】諸実施形態による、
図7の手順の出力データ値をフィードバックとして受け取り、バッファに提供される出力データストリームの値を受け取る、一次画像の第2の行の入力データストリームの画像画素データに対して実行されるカーネルサブサンプリング手順を示す図である。
【
図10】諸実施形態による、一次画像の前の行の画素値に対して実行された手順の出力データ値をフィードバックとして受け取り、二次画像に対応する全(または完全)画素値のストリームの出力を受け取る、一次画像の最後の行の入力データストリームの画像画素データに対して実行されるカーネルサブサンプリング手順を示す図である。
【
図11】諸実施形態による、カーネルサブサンプリング手順のための、画素値のデータストリームがカーネル値のデータストリームと同期されるデータストリーミング手順の流れ図である。
【
図12】諸実施形態による、各行のサブサンプリング手順の出力値が部分的画素値としてバッファリングされ、次の行のためのサブサンプリング手順へのフィードバックとして提供される、行ごとの画素値およびカーネル値のデータストリーミングによるカーネルサブサンプリング手順への入力値を含む、カーネル演算およびバッファリング手順の流れ図である。
【
図13】諸実施形態によるホログラフィックプロジェクタを示す概略図である。
【発明を実施するための形態】
【0034】
同じまたは類似の部品を参照するために、図面全体で同じ参照番号が使用される。
【0035】
本発明は、以下に記述される実施形態に限定されるものではなく、添付の特許請求の範囲全体に及ぶ。すなわち、本発明は、様々な形態で具現化することができ、例示する目的で提示した上述の実施形態に限定されると解釈されるべきではない。
【0036】
単数形の用語は、特に指定のない限り、複数形を含み得る。
【0037】
ある構造が別の構造の上部/下部に形成されるかまたは他の構造上/下に形成される記述されるのは、その構造が互いに接触する場合を含み、さらに、第3の構造が上記構造の間に配置される場合も含むと解釈されるべきである。
【0038】
時間的関係を記述する際(例えば、事象の時間的順序が「後」、「後続」、「次」、「前」などと記述される場合)、本開示は、特に指定のない限り、連続的事象および非連続的事象を含むと解釈されるべきである。例えば、この記述は、「ちょうど」、「即時」、「直接」などの表現が用いられない限り、連続していない場合を含むと解釈されるべきである。
【0039】
「第1の(first)」、「第2の(second)」などの用語は、様々な要素を記述するために本明細書で用いられることがあり、これらの要素はこれらの用語によって限定されるべきではない。これらの用語は、一要素を別の要素と区別するためにのみ使用される。例えば、添付の特許請求の範囲から逸脱することなく、第1の要素は第2の要素と呼ばれることがあり、同様に、第2の要素は第1の要素と呼ばれることがある。
【0040】
異なる実施形態の特徴は、部分的または全体的に互いに結合されるかまたは組み合わされてもよく、互いに様々に相互運用されてもよい。いくつかの実施形態は、互いに独立して実行されてもよく、または共存関係で一緒に実行されてもよい。
【0041】
光学構成
図1は、コンピュータ生成ホログラムが単一の空間光変調器上で符号化される実施形態を示す。コンピュータ生成ホログラムは、再構成のための物体のフーリエ変換である。したがって、ホログラムは、物体のフーリエ領域または周波数領域またはスペクトル領域表現であると言うことができる。この実施形態では、空間光変調器は、反射型液晶オンシリコン「LCOS」装置である。ホログラムは空間光変調器上で符号化され、ホログラフィック再構成が、再生フィールド、例えば、スクリーンやディフューザなどの受光面で形成される。
【0042】
光源110、例えばレーザまたはレーザダイオードが、コリメートレンズ111経由でSLM140を照明するように配置される。コリメートレンズにより、光の略平面波面がSLM上に入射する。
図1では、波面の方向はオフノーマルである(例えば、透明層の平面に真に直交することから2~3度離れている)。しかしながら、他の実施形態では、略平面波面は垂直入射で提供され、ビームスプリッタ配置が入力光路と出力光路を分離するために使用される。
図1に示される実施形態では、この配置は、光源からの光がSLMのミラー後面で反射され、光変調層と相互作用して出口波面112を形成するようなものである。出口波面112は、スクリーン125にその焦点を合わせたフーリエ変換レンズ120を含む光学系に適用される。より具体的には、フーリエ変換レンズ120は、SLM140から変調光のビームを受け取り、周波数空間変換を実行してスクリーン125でホログラフィック再構成を生成する。
【0043】
特に、この種のホログラフィでは、ホログラムの各画素が再構成全体に寄与する。再生フィールド上の特定の点(または画像画素)と特定の光変調要素(またはホログラム画素)との間に1対1の相関関係はない。言い換えれば、光変調層から出て行く変調光は、再生フィールド全体に分散される。
【0044】
これらの実施形態では、空間におけるホログラフィック再構成の位置は、フーリエ変換レンズの屈折(集束)力によって決定される。
図1に示される実施形態では、フーリエ変換レンズは物理レンズである。すなわち、フーリエ変換レンズは光学フーリエ変換レンズであり、フーリエ変換は光学的に実行される。どのレンズもフーリエ変換レンズとして機能することができるが、レンズの性能は、レンズが実行するフーリエ変換の精度を制限する。当業者は、レンズを使用して光学フーリエ変換を実行する方法を理解している。
【0045】
ホログラム計算
いくつかの実施形態では、コンピュータ生成ホログラムは、画像が正レンズのフーリエ変換特性を利用することによって遠方場(far field)で再構成されるフーリエ変換ホログラム、あるいは単純にフーリエホログラムまたはフーリエベースのホログラムである。フーリエホログラムは、再生面の所望の明視野をフーリエ変換してレンズ面に戻すことによって計算される。コンピュータ生成フーリエホログラムは、フーリエ変換を使用して計算され得る。
【0046】
フーリエ変換ホログラムは、Gerchberg-Saxtonアルゴリズムなどのアルゴリズムを使用して計算され得る。さらに、Gerchberg-Saxtonアルゴリズムは、空間領域(写真など)の振幅限定情報からフーリエ領域のホログラム(すなわち、フーリエ変換ホログラム)を計算するために使用され得る。物体に関連する位相情報は、空間領域の振幅限定情報から効果的に「取得」される。いくつかの実施形態では、コンピュータ生成ホログラムは、Gerchberg-Saxtonアルゴリズムまたはその変形を使用して振幅限定情報から計算される。
【0047】
Gerchberg Saxtonアルゴリズムは、平面A内の光線の強度横断面IA(x,y)および平面B内の光線の強度横断面IB(x,y)が既知であり、IA(x,y)およびIB(x,y)が単一のフーリエ変換によって関連付けられる場合の状況を考慮する。所与の強度横断面で、平面Aおよび平面B内の位相分布の近似値ΨA(x,y)およびΨB(x,y)が見出される。Gerchberg-Saxtonアルゴリズムは、反復プロセスに従うことにより、この問題の解決策を見出す。より具体的には、Gerchberg-Saxtonアルゴリズムは、IA(x,y)およびIB(x,y)を表すデータセット(振幅および位相)を空間領域とフーリエ(スペクトルまたは周波数)領域との間で繰り返し転送しながら、空間制約およびスペクトル制約を繰り返し適用する。スペクトル領域内の対応するコンピュータ生成ホログラムは、アルゴリズムの少なくとも1回の反復によって得られる。アルゴリズムは収束し、入力画像を表すホログラムを生成するようになされる。ホログラムは、振幅限定ホログラム、位相限定ホログラム、または完全複素ホログラムとすることができる。
【0048】
いくつかの実施形態では、位相限定ホログラムは、参照によりその全体が本明細書に組み込まれる英国特許第2,498,170号明細書または第2,501,112号明細書に記載されているようなGerchberg-Saxtonアルゴリズムに基づくアルゴリズムを使用して計算される。しかしながら、本明細書に開示される実施形態は、ほんの一例として、位相限定ホログラムを計算することを記述している。これらの実施形態では、Gerchberg-Saxtonアルゴリズムは、既知の振幅情報T[x,y]の元であるデータセットのフーリエ変換の位相情報Ψ[u,v]を検索する、ただし、振幅情報T[x,y]はターゲット画像(例えば写真)を表す。大きさおよび位相はフーリエ変換で本質的に組み合わされるので、変換された大きさおよび位相は、計算されたデータセットの精度に関する有用な情報を含んでいる。したがって、アルゴリズムは、振幅情報と位相情報の両方に関するフィードバックとともに繰り返し使用され得る。しかしながら、これらの実施形態では、ターゲット画像を表すホログラフィックを画像平面に形成するために、位相情報Ψ[u,v]のみがホログラムとして使用される。ホログラムは、位相値のデータセット(例えば2次元配列)である。
【0049】
他の実施形態では、完全複素ホログラムを計算するために、Gerchberg-Saxtonアルゴリズムに基づくアルゴリズムが使用される。完全複素ホログラムは、大きさ成分および位相成分を有するホログラムである。ホログラムは、複素データ値の配列を含むデータセット(例えば2次元配列)であり、各複素データ値は大きさ成分および位相成分を含む。
【0050】
いくつかの実施形態では、アルゴリズムは複素データを処理し、フーリエ変換は複素フーリエ変換である。複素データは、(i)実数成分および虚数成分、あるいは(ii)大きさ成分および位相成分を含むと見なすことができる。いくつかの実施形態では、複素データの2つの成分は、アルゴリズムの様々な段階で異なって処理される。
【0051】
図2Aは、位相限定ホログラムを計算するためのいくつかの実施形態によるアルゴリズムの第1の反復を示す。アルゴリズムへの入力は、画素またはデータ値の2次元配列を含む入力画像210であり、各画素またはデータ値は、大きさすなわち振幅の値である。すなわち、入力画像210の各画素またはデータ値は、位相成分を有していない。したがって、入力画像210は、大きさのみまたは振幅のみまたは強度のみの分布と見なすことができる。この種の入力画像210の一例が、写真、またはフレームの時系列を含むビデオの1つのフレームである。アルゴリズムの第1の反復は、開始複素データセットを形成するために、ランダム位相分布(またはランダム位相シード)230を使用して入力画像の各画素にランダム位相値を割り当てることであって、セットの各データ要素が大きさおよび位相を含む、ランダム位相値を割り当てることを含むデータ形成ステップ202Aで始まる。開始複素データセットは、空間領域内の入力画像を表していると言うことができる。
【0052】
第1の処理ブロック250は、開始複素データセットを受け取り、複素フーリエ変換を実行してフーリエ変換済み複素データセットを形成する。第2の処理ブロック253は、フーリエ変換済み複素データセットを受け取り、ホログラム280Aを出力する。いくつかの実施形態では、ホログラム280Aは位相限定ホログラムである。これらの実施形態では、第2の処理ブロック253は、ホログラム280Aを形成するために、各位相値を量子化し、各振幅値を1に設定する。各位相値は、位相限定ホログラムを「表示する」ために使用される空間光変調器の画素上に表すことができる位相レベルに従って量子化される。例えば、空間光変調器の各画素が256個の異なる位相レベルを提供する場合、ホログラムの各位相値は、256個の可能な位相レベルのうちの1つの位相レベルに量子化される。ホログラム280Aは、入力画像を表す位相限定フーリエホログラムである。他の実施形態では、ホログラム280Aは、受け取ったフーリエ変換済み複素データセットから導出された複素データ値(それぞれが振幅成分および位相成分を含む)の配列を含む完全複素ホログラムである。いくつかの実施形態では、第2の処理ブロック253は、各複素データ値を複数の許容複素変調レベルのうちの1つに制約してホログラム280Aを形成する。制約するステップは、各複素データ値を複素平面内の最も近い許容複素変調レベルに設定することを含むことができる。ホログラム280Aは、スペクトル領域またはフーリエ領域または周波数領域内の入力画像を表すと言うことができる。いくつかの実施形態では、アルゴリズムはこの時点で停止する。
【0053】
しかしながら、他の実施形態では、アルゴリズムは、
図2Aに点線矢印で表されているように続く。言い換えれば、
図2Aの点線矢印に続くステップは随意である(すなわち、すべての実施形態に必須ではない)。
【0054】
第3の処理ブロック256は、第2の処理ブロック253から修正済み複素データセットを受け取り、逆フーリエ変換を実行して逆フーリエ変換済み複素データセットを形成する。逆フーリエ変換済み複素データセットは、空間領域内の入力画像を表していると言うことができる。
【0055】
第4の処理ブロック259は、逆フーリエ変換済み複素データセットを受け取り、大きさ値211Aの分布および位相値213Aの分布を抽出する。随意に、第4の処理ブロック259は、大きさ値211Aの分布を評価する。具体的には、第4の処理ブロック259は、逆フーリエ変換済み複素データセットの大きさ値211Aの分布を、それ自体がもちろん大きさ値の分布である入力画像210と比較することができる。大きさ値211Aの分布と入力画像210との間の差が十分に小さい場合、第4の処理ブロック259は、ホログラム280Aが許容可能であると決定することができる。すなわち、大きさ値211Aの分布と入力画像210との差が十分に小さい場合、第4の処理ブロック259は、ホログラム280Aが入力画像210を十分正確に表していると判断することができる。いくつかの実施形態では、逆フーリエ変換済み複素データセットの位相値213Aの分布は、比較の目的のために無視される。大きさ値211Aの分布と入力画像210を比較するあらゆる方法が使用されてもよく、本開示は特定の方法に限定されないことが理解されよう。いくつかの実施形態では、平均二乗差が計算され、平均二乗差が閾値未満であれば、ホログラム280Aは許容可能と見なされる。第4の処理ブロック259が、ホログラム280Aが許容できないと決定した場合、アルゴリズムのさらなる反復が実行され得る。しかしながら、この比較ステップは必須ではなく、他の実施形態では、実行されるアルゴリズムの反復回数は、予め決定されるか、予め設定されるか、またはユーザ定義される。
【0056】
図2Bは、アルゴリズムの第2の反復およびアルゴリズムのさらなる反復を示す。前の反復の位相値213Aの分布は、アルゴリズムの上記処理ブロックを経由してフィードバックされる。大きさ値211Aの分布は、入力画像210の大きさ値の分布を優先して拒否される。第1の反復では、データ形成ステップ202Aは、入力画像210の大きさ値の分布をランダム位相分布230と組み合わせることにより第1の複素データセットを形成した。しかしながら、第2の反復およびその後の反復では、データ形成ステップ202Bは、(i)アルゴリズムの前の反復からの位相値213Aの分布を(ii)入力画像210の大きさ値の分布と組み合わせることにより複素データセットを形成することを含む。
【0057】
次いで、
図2Bのデータ形成ステップ202Bによって形成された複素データセットは、
図2Aを参照して記述されたものと同じ方法で処理されて、第2の反復ホログラム280Bを形成する。したがって、プロセスの説明はここでは繰り返さない。アルゴリズムは、第2の反復ホログラム280Bが計算されたときに停止することができる。しかしながら、アルゴリズムの任意の数のさらなる反復が実行され得る。第3の処理ブロック256は、第4の処理ブロック259が必要であるか、またはさらなる反復が必要である場合にのみ必要であることが理解されよう。出力ホログラム280Bは一般に反復するたびに良くなる。しかしながら、実際には、通常、重要な改善が認められないところに達するか、または、さらなる反復を実行することの正の便益を追加の処理時間の負の効果が上回る。したがって、アルゴリズムは、反復的でありかつ収束的であると言われる。
【0058】
図2Cは、第2の反復およびその後の反復の代替実施形態を示す。前の反復の位相値213Aの分布は、アルゴリズムの上記処理ブロックを経由してフィードバックされる。大きさ値211Aの分布は、大きさ値の代替分布を優先して拒否される。この代替実施形態では、大きさ値の代替分布は、前の反復の大きさ値211の分布から導出される。具体的には、処理ブロック258は、前の反復の大きさ値211の分布から入力画像210の大きさ値の分布を減算し、その差を利得係数αでスケール変更し、スケール変更済み差を入力画像210から減算する。これは、下記方程式で数学的に表され、下付き文字のテキストおよび数字は反復回数を示す、
R
n+1[x,y]=F’{exp(iΨ
n[u,v])}
Ψ
n[u,v]=∠F{η・exp(i∠R
n[x,y])}
η=T[x,y]-α(|R
n[x,y]|-T[x,y])
上式で、
F’は、逆フーリエ変換であり、
Fは、順方向フーリエ変換であり、
R[x,y]は、第3の処理ブロック256によって出力される複素データセットであり、
T[x,y]は入力またはターゲット画像であり、
∠は、位相成分であり、
Ψは、位相限定ホログラム280Bであり、
ηは、大きさ値211Bの新しい分布であり、
αは、利得係数である。
利得係数αは、固定または変数とすることができる。いくつかの実施形態では、利得係数αは、入ってくるターゲット画像データのサイズおよびレートに基づいて決定される。いくつかの実施形態では、利得係数αは、反復回数に依存する。いくつかの実施形態では、利得係数αは、単に反復回数の関数である。
【0059】
図2Cの実施形態は、他のあらゆる点で
図2Aおよび
図2Bの実施形態と同じである。位相限定ホログラムΨ(u,v)は、周波数領域またはフーリエ領域における位相分布を含むと言うことができる。
【0060】
いくつかの実施形態では、フーリエ変換は、空間光変調器を使用して実行される。具体的には、ホログラムデータは、光パワーを提供する第2のデータと組み合わされる。すなわち、空間光変調に書き込まれるデータは、物体を表すホログラムデータとレンズを表すレンズデータとを含む。空間光変調器に表示され、光で照らされると、レンズデータは物理レンズをエミュレートする、すなわち、レンズデータは対応する物理光学系と同じ方法で光を焦点に導く。したがって、レンズデータは、光パワーまたは集束力を提供する。これらの実施形態では、
図1の物理フーリエ変換レンズ120は省略され得る。レンズを表すデータを計算する方法は知られている。レンズを表すデータは、ソフトウェアレンズと呼ばれることがある。例えば、位相限定レンズは、このレンズの屈折率および空間的に異なる光路長のためにレンズの各点によって引き起こされる位相遅れを計算することによって形成され得る。例えば、凸レンズの中心での光路長は、レンズの縁での光路長よりも長い。振幅限定レンズは、フレネル・ゾーン・プレートによって形成され得る。コンピュータ生成ホログラフィの技術分野では、レンズを表すデータをホログラムと組み合わせて、物理フーリエレンズを必要とせずにホログラムのフーリエ変換を実行できるようにする方法も知られている。いくつかの実施形態では、レンズ効果データは、単純ベクトル加算などの単純加算によってホログラムと組み合わされる。いくつかの実施形態では、物理レンズは、フーリエ変換を実行するためにソフトウェアレンズと組み合わせて使用される。あるいは、他の実施形態では、フーリエ変換レンズは、ホログラフィック再構成が遠方場で行われるように、完全に省略される。他の実施形態では、ホログラムは、格子データ、すなわち、画像ステアリングなどの格子の機能を実行するようになされたデータと同じ方法で組み合わせることができる。やはり、そのようなデータを計算する方法はこの分野で知られている。例えば、位相限定格子が、ブレーズド回折格子の表面上の各点によって引き起こされる位相遅れをモデル化することによって形成され得る。ホログラフィック再構成の角度ステアリングを提供するために、振幅限定格子に振幅限定ホログラムが単純に重ね合わされ得る。レンズ効果および/またはステアリングを提供する第2のデータは、画像形成機能または画像形成パターンと呼ばれることがあるホログラムデータと区別するために、光処理機能または光処理パターンと呼ばれることがある。
【0061】
いくつかの実施形態では、フーリエ変換は、物理フーリエ変換レンズおよびソフトウェアレンズによって合同で実行される。すなわち、フーリエ変換に寄与する一部の光パワーはソフトウェアレンズによって提供され、フーリエ変換に寄与する光パワーの残りは物理光学系によって提供される。
【0062】
いくつかの実施形態では、画像データを受け取り、アルゴリズムを使用してホログラムをリアルタイムで計算するようになされたリアルタイムエンジンが提供される。いくつかの実施形態では、画像データは、一連の画像フレームを含むビデオである。他の実施形態では、ホログラムは事前に計算され、コンピュータメモリに保存され、SLM上に表示するために必要に応じて呼び出される。すなわち、いくつかの実施形態では、所定のホログラムのリポジトリが提供される。
【0063】
諸実施形態は、ほんの一例として、フーリエホログラフィおよびGerchberg-Saxton型アルゴリズムに関する。本開示は、同様の方法によって計算され得るフレネルホログラフィおよびフレネルホログラムに等しく適用可能である。本開示は、点群法に基づく技法などの他の技法によって計算されたホログラムにも適用可能である。
【0064】
光変調
コンピュータ生成ホログラムを含む回折パターンを表示するために空間光変調器が使用され得る。ホログラムが位相限定ホログラムである場合、位相を変調する空間光変調器が必要である。ホログラムが完全複素ホログラムである場合、位相および振幅を変調する空間光変調器が使用されてもよく、あるいは、位相を変調する第1の空間光変調器および振幅を変調する第2の空間光変調器が使用されてもよい。
【0065】
いくつかの実施形態では、空間光変調器の光変調要素(すなわち、画素)は、液晶を含むセルである。すなわち、いくつかの実施形態では、空間光変調器は、光学活性構成要素が液晶である液晶装置である。各液晶セルは、複数の光変調レベルを選択的に提供するように構成される。すなわち、各液晶セルは、複数の可能な光変調レベルから選択された1つの光変調レベルで動作するようにどの時点でも構成される。各液晶セルは、複数の光変調レベルとは異なる光変調レベルに動的に再構成可能である。いくつかの実施形態では、空間光変調器は、反射型液晶オンシリコン(LCOS)空間光変調器であるが、本開示はこの種の空間光変調器に限定されない。
【0066】
LCOS装置は、小開口(例えば、幅数センチメートル)に高密度の光変調要素すなわち画素の配列を備えることができる。画素は通常、数度の回折角をもたらす約10ミクロン以下であり、これは光学系を小型にできることを意味する。LCOS SLMの小開口を十分に照明するのは、他の液晶装置のより大きい開口の場合よりも容易である。LCOS装置は一般に反射性であり、これは、LCOS SLMの画素を駆動する回路網を反射面の下に埋め込むことができることを意味する。その結果、開口率が高くなる。言い換えると、画素は密集している、つまり、画素相互間のデッドスペースはほとんどない。これは、それにより再生フィールド内の光学ノイズが低減されるので有利である。LCOS SLMは、画素が光学的に平坦であるという利点があるシリコンバックプレーンを使用する。これは、位相変調装置にとって特に重要である。
【0067】
適切なLCOS SLMについて、ほんの一例として、
図3を参照して以下に説明する。LCOS装置は、単結晶シリコン基板302を使用して形成される。この装置は、基板の上面上に配置された、間隙301aで離間された正方形平面アルミニウム電極301の2次元配列を有する。電極301はそれぞれ、基板302に埋め込まれた回路網302aを経由してアドレス指定することができる。電極はそれぞれ、当該平面鏡を形成する。配向層303が電極の配列上に配置され、液晶層304が配向層303上に配置される。第2の配向層305が、例えばガラス製の平面透明層306上に配置される。例えばITO製の単一透明電極307が、透明層306と第2の配向層305との間に配置される。
【0068】
正方形電極301はそれぞれ、透明電極307の上を覆う領域および介在液晶材料とともに、しばしば画素と呼ばれる制御可能な位相変調要素308を画定する。有効画素面積、すなわちフィルファクタは、画素相互間のスペース301aを考慮に入れた、光学的に活性の全画素の割合である。透明電極307に関して各電極301に印加される電圧を制御することにより、当該位相変調要素の液晶材料の特性が変化し、それにより、この位相変調要素への入射光に可変遅延をもたらすことができる。効果は、波面に位相限定変調を与えることである、すなわち、振幅効果は発生しない。
【0069】
上述のLCOS SLMは、空間的に変調された光を反射して出力する。反射型LCOS SLMには、信号線、ゲート線、およびトランジスタが鏡面の下にあるという利点があり、その結果、高いフィルファクタ(通常は90%以上)および高い分解能が得られる。反射型LCOS空間光変調器を使用することのもう1つの利点は、液晶層の厚さが透過型装置を使用した場合に必要となる厚さの半分にできることである。これにより、液晶のスイッチング速度が大幅に向上する(ビデオ動画の投影の重要な利点)。しかしながら、本開示の教示は、透過型LCOS SLMを使用して等しく実施することができる。
【0070】
カーネルを用いたサブサンプリング
図4Aおよび
図4Bは、
図5Aおよび
図5Bに示すように「カーネル」を使用して一次画像から二次画像を導出するための技法を示す。カーネルは、移動する「サンプリングウィンドウ」または「仮想開口」と見なすことができる。カーネルは、サンプリングウィンドウ内にある画像の画素の群で動作して、画素を表す単一出力(サブサンプリングされた)画素値を導出する。したがって、カーネルは、高解像度の一次画像(例えば、ソース画像または中間画像)の画素を「アンダーサンプリング」または「サブサンプリング」して1つまたは複数の二次画像(すなわち、出力画像)を導出するために使用され、したがって各二次画像は一次画像よりも少ない画素を含む。
【0071】
図5Aは、4×4カーネル値(「カーネル画素」または「重み」とも呼ばれる)を含む汎用カーネルを示し、
図5Bは、4×4カーネル値を含むカーネル例を示す。各カーネル値は、サンプリングウィンドウ内の対応する位置にある一次画像の画素値の重み付け係数または重みを定義する。
図5Aに示されるように、カーネル値はW
x,yとして表される、ただし、xおよびyは、カーネルを形成する4×4配列内のカーネル値のそれぞれの座標である。
図5Bのカーネルの例では、サンプリングウィンドウの中央の画素値に高い重み(すなわち、カーネル値=3)が与えられ、サンプリングウィンドウの縁および隅の画素値に低い重み(すなわち、カーネル値=1)が与えられる。図示の実施形態では、各サンプリング位置で、カーネルは、(i)サンプリングウィンドウ内にある一次画像の画素の4×4配列の各画素値に、その画素値の対応するカーネル値または重みを掛けること、および、(ii)重み付き画素値の正規化された(すなわち、重み付けされていない)平均値(例えば、重み付き画素値の和をカーネル値の和(すなわち、総カーネル重み)で割ることによって計算された平均値)を決定して、一次画像の画素の4×4配列を表す単一出力値を導出すること、により演算する。図示の例では、総カーネル重み=24である。したがって、ステップ(ii)は、サンプリングウィンドウ内の画素の重み付き画素値を合計し、24で割ることによって実行され得る。
【0072】
図5Bは、カーネルの単純な例を示し、このカーネルは、一次画像の4×4画素配列の内側サンプリング済み画素(すなわち、サンプリングウィンドウの中央の画素)の画素値が一次画像の外側サンプリング済み画素の画素値よりも高い重みを有するようにカーネル重みを定義する。当業者なら理解するように、アプリケーション要件に応じて、カーネル重みの値の多くの変動値が可能である。加えて、サンプリングウィンドウまたは仮想開口に対応する任意のカーネルの形状およびサイズ(配置、アスペクト比、カーネル値/重みの数)が、アプリケーション要件に応じて選択され得る。例えば、カーネル重みは、最適なアンチエイリアス処理結果を達成するように選定され得る。
【0073】
技法の例によれば、4×4カーネルは、一次画像の一連の連続する(すなわち、隣り合いかつ重複しない)4×4画素配列をサブサンプリングするように、一次画像の上を一連のサンプリング位置(すなわち、一次画像の上のサンプリングウィンドウの位置または「サンプリングウィンドウ位置」)まで漸進的に動かされる。複数のサンプリング位置は、一次画像の画素の実質上すべてがサブサンプリングされて、一次画像全体のサブサンプリング済み画素値に対応する出力値を導出するように定義される。諸実施形態では、サンプリング位置は、一次画像上のx方向およびy方向に一定画素間隔または「ストライド」で間隔を置いて定義される。カーネルは、一次画像をx方向およびy方向に画素間隔またはストライドで漸進的に横切ると言うことができる。
【0074】
一次画像上のカーネルの2つの連続するサンプリング位置が
図4Aおよび
図4Bに示されている。特に、初期(または第1の)サンプリング位置または「開始位置」が
図4Aに示されている。サンプリング位置は、カーネルの左上隅に対応する一次画像の画素座標として定義され得る。
図4Aに示される例では、第1のサンプリング位置は、一次画像の画素座標(0,0)にある。カーネルは、ストライドに応じて、一次画像を横切って左から右に漸進的に動かされる。この技法例では、ストライドは、x方向の4画素およびy方向の4画素であり、したがって、各サンプリング位置に形成されるサンプリングウィンドウは連続していて、互いに重なり合うことはない。したがって、第2のサンプリング位置は、
図4Bに示されるように、x方向の4画素のストライド距離に対応する、一次画像の画素座標(0,4)にある。当業者なら理解するように、後続のサンプリング位置は、サンプリング位置が一次画像の最初の4行の最後の画素値に達するまで、画素座標(0,8)、(0,12)などにある。カーネルがラスタ走査パス内で移動されると、カーネルは、y方向の4画素のストライド距離に対応する画素座標(4,0)のサンプリング位置に戻る。次いで、カーネルは、一次画像の上をx方向の4画素およびy方向の4画素のストライドで横切り続け、それによって、一次画像のすべての画素がサブサンプリングされるまで、連続するサンプリングウィンドウを使用して一次画像の連続する4×4画素配列をサブサンプリングする。各サンプリング位置で決定された出力値は、サブサンプリング済み出力画像の画素値として提供される。したがって、出力二次画像は、画素数が減少した、一次画像のアンダーサンプリングまたはサブサンプリング済みバージョンである。
【0075】
当業者なら理解するように、上記の例では、一次画像の画素数は二次画像では16分の1に減少する、というのは、一次画像の16画素の4×4配列が二次画像の1(1つの)画素で表されるからである。したがって、一次画像の画素数は、ホログラフィックプロジェクタによって投影される画像(ホログラフィック再構成)の所望の解像度よりも高い解像度を有する。例えば、一次画像は、所望の解像度の4倍や8倍など、所望の解像度の最低2倍を有することができる。このようにして、二次画像から計算されるホログラムは、解像度が高解像度の一次画像に比べて低下している場合でも、所望の解像度でホログラフィック再構成を形成する。いくつかの実施形態では、ターゲット画像は、画像(ホログラフィック再構成)の所望の解像度を達成するために、一次画像を形成するように「オーバーサンプリング」または「アップスケール」される。
【0076】
図4Aおよび
図4Bに示される二次画像を導出するためにカーネルを使用して一次画像をサブサンプリングするためのサンプリングスキームは、一連のサンプリング位置、x方向および/またはy方向のストライド距離、ならびにカーネルのサイズおよび/または重みのうちの1つまたは複数を変えることによって変更され得る。したがって、同じ一次画像から複数の二次画像を決定することが可能である。複数の二次画像に対応するホログラムが計算され、一次画像に対応する画像フレーム(ターゲット画像)のサブフレームとして空間光変調器上に順番に表示され得る。
【0077】
例えば、
図5Bに示されるカーネルは、
図4Aおよび
図4Bを参照して上述したように、x方向の4画素およびy方向の4画素のストライドを有する一連のサンプリング位置を使用して第1の二次画像を導出するために使用され得る。同じカーネルは、x方向およびy方向の4画素の同じストライドを有するが、座標(1,1)など、初期(または第1の)サンプリング位置または「開始位置」が異なる一連のサンプリング位置を使用して第2の2次画像を導出するために使用され得る。他の例では、x方向および/またはy方向のストライドは変えることができる。
【0078】
他の例では、
図5Bに示されるカーネルは、
図4Aおよび
図4Bを参照して上述したように、x方向の4画素およびy方向の4画素のストライドを有する一連のサンプリング位置を使用して第1の二次画像を導出するために使用され得る。別のカーネル、例えば、異なるカーネルの値または重みを有する4×4カーネルが、同じ一連のサンプリング位置を使用して第2の二次画像を導出するために使用され得る。他の例では、カーネルのサイズ、ならびにカーネルの値または重みは変更され得る(例えば、重みが類似するまたは異なる5×5カーネル)。
【0079】
上記のサンプリングスキーム例の任意の適切な組合せが、同じ一次画像から複数の二次画像を導出するために使用され得る。当業者なら理解するように、同じ一次画像から導出される各二次画像の総画素数は異なることがある。特に、各二次画像の画素数は、使用される当該サブサンプリングスキームで使用されるサンプリング位置の数に対応する。したがって、より少ないサンプリング位置を有するスキームでは、画素がより少ない2次画像になる。いくつかの例では、同じ一次画像から決定された各二次画像は、同じ数の画素を有する。
【0080】
したがって、投影用の画像を表す複数の二次画像が、サンプリングスキーム(カーネル値の4×4配列を含むカーネル)を使用して一次画像をサブサンプリングすることによって生成され得る。各二次画像は、一次画像よりも少ない画素を含む。ホログラムが複数の二次画像のそれぞれに対して決定され、各ホログラムがディスプレイ装置上に順番に表示されて、再生面上に各二次画像に対応するホログラフィック再構成を形成する。諸実施形態では、二次画像に対応する複数のホログラムのそれぞれが、人間の目の積分時間内にディスプレイ装置上に順番に表示され、その結果、再生面上での二次画像のホログラフィック再構成は、ターゲット画像の単一高品質再構成として現れる。
【0081】
データストリーミング
上述したように、カーネルを使用して一次画像をサブサンプリングするためには、一次画像の画素の2次元配列に対応する画素データを保存し、少なくとも、特定のサンプリング位置(例えば、4×4画素配列データ)でのカーネル演算に必要な一次画像の画素データエントリ(すなわち、画素値)を対応する時点でバッファリングする必要がある。したがって、システムは、比較的高い解像度の一次画像の画素データを収容するために、大量のデータストレージおよび/または容量を必要とする。
【0082】
したがって、本開示は、二次画像を決定するために一連のサンプリング位置でカーネルを用いて一次画像のサブサンプリングを実行する新しいスキームを提案する。新しいスキームにより、ストレージおよび/またはバッファリング容量の要件を減らすことができる。いくつかの実装形態では、二次画像に対応するホログラムを決定するための処理速度が高められる。
【0083】
新しいスキームは、データストリーミングに基づいている。特に、このスキームは、一次画像の画素値の第1のデータストリームとカーネルのカーネル値の第2のデータストリームとを形成することを含む。データストリーミングは、順番に(すなわち、画像/カーネル画素の画素ごとに)行ごとに実行される。特に、一次画像の画素の第1の行の画素値が最初にストリーミングされ、続いて、一次画像の画素の第2の行の画素値などから一次画像の画素の最後の行の画素値までストリーミングされ、この段階で第1のデータストリームが終了する。さらに、カーネルの第1の行のカーネル値が最初にストリーミングされ、続いて、カーネルの第2の行のカーネル値などからカーネルの最後の行のカーネル値までストリーミングされ、次いで、データ・ストリーミング・シーケンスは、カーネルの第1の行のカーネル値をストリーミングし、続いて、カーネルの第2の行の画素値などをストリーミングすることによって反復的に繰り返される。第1のデータストリームの画素値の数は、第2のデータストリームのカーネル値の数に対応する。特に、第1のデータストリームの各画素値は、対応する重み付き画素値の決定を可能にするために、第2のデータストリームの対応するカーネル値と対になる。これは、第1のデータストリーム内の一次画像の画素の画素値を第2のデータストリーム内のカーネルの対応するカーネル値に同期させることによって実現される。当業者なら理解するように、図示の例では、カーネルはラスタ走査パス内を移動するので、カーネルは一次画像を左から右に(すなわち、x方向に)横切る。したがって、一次画像の画素の特定の行について、カーネル値の同じ行が対応する画素値に重みを付けるために使用され、カーネル値の行はサンプリング位置ごとに繰り返される。一次画像の画素の画素値とカーネルの対応するカーネル値または重みを行ごとに順次ストリーミングすることにより、処理は、従来技術のような画素の2次元配列の画素値の代わりに、画素の1次元配列に対応する画素値の単一データストリームに対して実行され得る。
図6は、下述のようにカーネル演算を実行するためのいわゆる「ベース・ライン・ストリーミング・フレーム・カーネル」(または単に「フレームカーネル」)に入力される、画素値の第1のデータストリームとカーネルの値または重みの第2のデータストリームとを形成するこのプロセスを概略的に示す。
【0084】
図11は、いくつかの実施形態による、カーネルを使用して一次画像をサブサンプリングする際に使用するデータストリーミングの方法1100を示す流れ図である。方法1100は、本明細書に記載されるように、二次画像を決定するためにサブサンプリングするための一次画像の画素の配列の画素データを含む一次画像に対応する入力画像を受け取る。方法1100はさらに、本明細書に記載されるように、カーネルの値または重みの配列を含むカーネルを受け取る。図示の例では、カーネルは、カーネル値のM行およびN列の配列を含み、したがって、M×N画素の配列のサンプリングウィンドウを形成する。さらに、カーネルの一連のサンプリング位置が定義される。図示の例では、上述した
図4Aおよび
図4Bの例のように、一連のサンプリング位置が一次画像のM×N画素の連続する配列をサブサンプリングするように、x方向のストライドはN画素であり、y方向のストライドはM画素である。これには、一次画像の各画素値が一度だけサブサンプリングされるという利点がある、つまり、後述するように、一次画像の画素データがラスタ走査順序でストリーミングされ得る。当業者なら理解するように、アプリケーション要件に従って一連のサンプリング位置を変えるために、x方向およびy方向のそれぞれのストライドを変化させることが可能である。例えば、ストライドは、x方向のN/2およびy方向のM/2とすることができる。
【0085】
図11の方法1100は、画素値の第1のデータストリームおよびカーネル値の第2のデータストリームを形成し、第1のデータストリームおよび第2のデータストリームは、第1のデータストリーム内の各画素値が適時に同期され、したがって第2のデータストリーム内の対応するカーネル値と対になるように同時に形成される。
【0086】
この方法は、ステップ1105で、諸実施形態に従ってカーネルを使用して一次画像をサブサンプリングする際に使用する一次画像およびカーネル情報を受け取るのに応答して開始する。
【0087】
ステップ1106は、画像の行カウンタを0(ゼロ)に設定し、ステップ1108は、画像の列カウンタを0(ゼロ)に設定する。ステップ1110は、初期サンプリング位置に対応する、画像の行カウンタおよび列カウンタによって示される行位置および列位置での一次画像の画素値(すなわち、座標(0,0)での画素値)を読み取る。ステップ1112は、画像列カウンタを1だけインクリメントする。ステップ1110で読み取られた画素値は、第1のデータストリームの第1の(次の)画素値として「A」で出力される。さらに、ステップ1156は、カーネルの行カウンタを0(ゼロ)に設定し、ステップ1158は、カーネルの列カウンタを0(ゼロ)に設定する。ステップ1160は、カーネルの行カウンタおよび列カウンタによって示される行位置および列位置でのカーネル値(すなわち、座標(0,0)でのカーネル値)を読み取り、ステップ1162は、カーネル列カウンタを1だけインクリメントする。ステップ1160で読み取られたカーネル値は、第2のデータストリームの第1の(次の)カーネル値として「A」で出力される。ステップ1106、1108および1110は、ステップ1156、1158および1160と同時に実行され、「A」での第1および第2のデータストリームへのデータ値の出力は同期される。特に、画素値および対応するカーネル値は、「A」で同時に(すなわち、同じクロックサイクルで)出力される。したがって、第1のデータストリーム内の画素値と第2のデータストリーム内の対応するカーネル値は、以下でさらに説明するように、カーネル処理のために対にされる。
【0088】
ステップ1120は、現在の反復について、ステップ1110で読み取られた画素値が、一次画像の現在の行の最後の画素値であったかどうかを決定する。この方法は一次画像を入力として受け取るので、画素の行数および列数で表した画像のサイズは既知である。したがって、ステップ1112で画像列カウンタに設定された値が画素の列数よりも大きい場合、反復で読み取られた画素値は画像行の最後の画素であり、次の画素は次の画像行から読み取られるものとする。ステップ1120が、ステップ1110で読み取られた画素値が現在の画像行の最後の画素値ではなかったと決定した場合、方法はステップ1110に戻り、現在の行の(すなわち、画像行カウンタおよび画像列カウンタで示される行位置および列位置にある)次の画素値を読み取る。次いで、この方法は、ステップ1120が、ステップ1110で読み取られた画素値が現在の行の最後の画素値であったと決定するまで、ステップ1110、1112および1120を経由するループで続く。ステップ1120が、画素値が現在の行の最後の画素値であったと決定すると、方法はステップ1130へ進む。さらに、決定の指示が「C」(例えば、「画像行の終わり」信号)で出力され得る。
【0089】
ステップ1130は、現在の画像行が一次画像の画素の最後の行であるかどうかを決定する。特に、画像行カウンタに設定された現在の値が一次画像の画素の行の総数と等しい場合、現在の画像行は画素の最後の行である。ステップ1130が、現在の画像行が一次画像の最後の行画素ではないと決定した場合、方法はステップ1140へ進み、画像行カウンタを1だけインクリメントする。次いで、この方法はステップ1108に戻り、画像列カウンタを0に(再)設定する。次いで、この方法は、ステップ1130が、現在の画像行が一次画像の画素の最後の行であると決定するまで、ステップ1110~1120で次の画像行の画素をストリーミングすることにより続く。ステップ1130が、現在の画像行が一次画像の最後の画素であると決定すると、方法はステップ1195で終了する。同時に、決定の指示が「E」(例えば、「画像の終わり」信号)で出力され得る。したがって、
図11の方法1100によって形成される第1のデータストリームは、ラスタ走査順序で画素ごとにかつ行ごとに読み取られた一次画像の画素の画素値のストリームを含む。
【0090】
ステップ1170は、現在の反復について、ステップ1160で読み取られたカーネル値が、カーネルの現在の行の最後のカーネル値であったかどうかを決定する。この方法はカーネルを入力として受け取るので、カーネルの値または重みの行数Mおよび列数Nで表したカーネルのサイズは既知である。したがって、ステップ1162でカーネル列カウンタに設定された値がカーネル値の列数Nよりも大きい場合、前のカーネル値は行の最後のカーネル値であり、次のカーネル値はカーネルの次の行から読み取られるものとする。ステップ1170が、ステップ1160で読み取られたカーネル値が現在のカーネル行の最後のカーネル値ではなかったと決定した場合、方法はステップ1160に戻り、現在の行の(すなわち、カーネル行カウンタおよびカーネル列カウンタで示される行位置および列位置にある)次のカーネル値を読み取る。次いで、この方法は、ステップ1170が、ステップ1160で読み取られたカーネル値が現在の行の最後のカーネル値であったと決定するまで、ステップ1160、1162および1170を経由するループで続く。ステップ1170が、カーネル値が現在の行の最後のカーネル値であった決定すると、方法はステップ1180へ進む。さらに、決定の指示が「B」(例えば、「カーネル行の終わり」信号)で出力され得る。
【0091】
ステップ1180は、現在の反復について、ステップ1110で読み取られた画素値が、一次画像の現在の行の最後の画素値であったかどうかを決定する。ステップ1180は、「画像行の終わり」信号がステップ1120から「C」で出力されるかどうかを決定することによって実行されてもよく、またはステップ1120に関する別個または共同の演算であってもよい。ステップ1180が、画素値が一次画像の現在の行の最後の画素値ではなかったと決定すると、方法はステップ1158に戻り、カーネル列カウンタを0に(再)設定する。当業者なら理解するように、これは、x方向のストライドによるカーネルの変位により次のサンプリング位置へ移動するのに対応し、この変位は、図示の例ではカーネルの列数Nに等しい。次いで、この方法は、ステップ1180が、(例えば、「画像行の終わり」信号を受け取ることにより)一次画像の画像行の終わりに達していると決定するまで、現在の行のカーネル値を順番に繰り返し読み取ることにより、ステップ1160から1180まで続く。ステップ1180が、ステップ1110で読み取られた画素値が一次画像の現在の行の最後の画素値であったと決定すると、方法はステップ1185へ進む。
【0092】
ステップ1185は、現在のカーネル行がカーネルのカーネル値の最後の行であるかどうかを決定する。特に、カーネル行カウンタに設定された現在の値がカーネル行の数Mと等しい場合、現在の行はカーネル値の最後の行である。ステップ1185が、現在のカーネル行がカーネル値の最後の行ではないと決定した場合、方法はステップ1190へ進み、カーネル行カウンタを1だけインクリメントする。次いで、この方法はステップ1158に戻り、カーネル列カウンタを0に(再)設定する。次いで、この方法は、ステップ1185が、現在のカーネル行がカーネル値の最後の行であると決定するまで、ステップ1160~1180で次のカーネル行のカーネル値を順番に繰り返しストリーミングすることにより続く。ステップ1185が、現在のカーネル行がカーネル値の最後の行であると決定すると、方法はステップ1156に戻り、カーネル行カウンタを0に(再)設定する。当業者なら理解するように、これは、y方向のストライドによるカーネルの変位により次のサンプリング位置へ移動するのに対応し、この変位は、図示の例ではカーネルの行数Mに等しい。同時に、決定の指示が「D」(例えば、「カーネルの終わり」信号)で出力され得る。したがって、
図11の方法1100によって形成される第2のデータストリームは、行単位で順番に読み取られる(かつ各サンプリング位置に対して繰り返される)カーネルの値または重みのストリームを含む。特に、第2のデータストリームのカーネル値は、第2のデータストリーム内の各位置/時点でのカーネル値が第1のデータストリーム内の画素の画素値に対応し、したがってその画素値と対になる/同期されるように提供される。
【0093】
当業者なら理解するように、一次画像のカーネルサブサンプリング用の同期された第1および第2のデータストリームを導出するために、
図11の方法に様々な修正を加えることができる。例えば、
図11の方法は、一次画像の画素値のストリームをラスタ走査順序で提供する、というのは、カーネル手順の例は、一次画像の画素の連続する配列をサンプリングするために、カーネル内の列数と同じx方向のストライド(およびカーネル内の行数と同じy方向のストライド)があるからである。しかしながら、他の例では、x方向のストライドは、x方向の一次画像の画素の重複する配列または分離された配列をサンプリングするために、それぞれカーネル内の列数より少なくてもよい、または多くてもよい。したがって、x方向のストライドがカーネル内の列数より少ない場合、後続の各サンプリングウィンドウは、前のサンプリングウィンドウと1つまたは複数の画素だけ重複する。この場合、重複する画素値は、第1のデータストリームを形成するために、一次画像の各行から読み取られる画素値のシーケンスで繰り返され得る。逆に、x方向のストライドがカーネル内の列数よりも多い場合、後続の各サンプリングウィンドウは、前のサンプリングウィンドウからx方向に1つまたは複数の画素だけ分離される。この場合、サンプリングウィンドウ相互間の空間の画素値は、第1のデータストリームを形成するために、一次画像の各行から読み取られる画素値のシーケンスから省略され得る。これらの例では、カーネル値の第2のデータストリームを形成するプロセスを修正して、対応する正しいカーネル値が当該移動するサンプリングウィンドウ内のそのカーネル値の位置に応じて画素値と同期されるようにするために、同様の修正が必要になり得る。同様に、他の例では、y方向のストライドは、y方向の一次画像の画素の重複する配列または分離された配列をサンプリングするために、それぞれカーネル内の行数より少なくてもよい、または多くてもよい。これらの例では、一次画像の画素の1つまたは複数の行の画素値は、第1のデータストリームで繰り返されるか、または第1のデータストリームから省略され、それに応じて、対応するカーネル値が第2のデータストリームで同期され得る。
【0094】
カーネル演算およびバッファリング
本明細書に記載されるように、二次画像を決定するために一次画像をサブサンプリングするプロセスが、一連のサンプリング位置でカーネル演算を用いて実行され得る。本開示によれば、カーネルベースのサブサンプリングプロセスは、ストレージおよび/またはバッファリング容量の要件を減らすために、データストリーミングを使用して実行される。
【0095】
図7は、一次画像の第1の行の画素値の第1のデータストリームに対して、第2のデータストリームの対応するカーネルの値または重みを使用して実行されるカーネルサブサンプリング手順の一例を示し、第1および第2のデータストリームは上述したように形成される。
図7はさらに、バッファに提供される累積値(いわゆる「部分的画素値」)の出力データストリームを示す。
図7は第1の反復と呼ばれることがある、というのは、
図7は、一次画像の画素の行に対して、カーネルの第1の行の対応するカーネルの値または重みを使用してカーネル演算を実行するからである。一次画像の画素値は行ごとに処理されるので、画像画素の各行の処理は反復と見なすことができる。
【0096】
図7に示される例では、カーネルはカーネル値の4×4配列であり、カーネルは、一次画像の画素の連続する4×4配列がサンプリングウィンドウ内に含まれるように、一連のサンプリング位置に反復的に移される。特に、x方向のストライドは4画素であり、y方向のストライドは4画素である。説明を簡単にするために、一次画像は、行に20個の画素(すなわち、20列の画素)を有する。当業者なら理解するように、実際には、一次画像の画素の数は有意に多い。
【0097】
図7に示されるように、第1のデータストリーム90は、データ入力位置19、18、17、16、15、14、13、12、11、10、9、8、7、6、5、4、3、2、1および0に、それぞれ一次画像の第1の行(行0)の画素の20個の画素値T、S、R、Q、P、O、N、M、L、K、J、I、H、G、F、E、D、C、BおよびAの順序付けられたシーケンスを含む。さらに、第2のデータストリーム92は、20個のカーネル値の順序付けられたシーケンスを含み、第2のデータストリーム内の各データ入力位置にあるカーネル値は、第1のデータストリーム内の同じデータ入力位置にある画素値に対応する。当業者なら理解するように、画像画素の第1の行の画素をサンプリングするために使用されるカーネル値は、カーネルの第1の行のカーネル値に対応する。
図5Aの汎用カーネルのように、各カーネル値は記号W
x,yで表される重みである、ただし、(x,y)は、カーネル値の4×4配列の座標またはカーネルの重みに対応する。
【0098】
基本カーネル手順94は、第1のデータストリーム90の各画素値と第2のデータストリーム92の同期された対応する重みW
x,yとを受け取り、対応する重み付き画素値を決定する。特に、重み付き画素値は、画素値と対応する重みの積である。基本カーネル手順94は、カーネルサンプリング位置ごとに重み付き画素値を順番に合算して、対応する(重み付き)部分的画素値を決定する。したがって、第1のサンプリング位置(カーネル位置0)に対応する、第1のデータストリーム内の画素の第1の行の最初の4つの画素値の重み付き画素値は、T
*W
0,0、S
*W
1,0、R
*W
2,0およびQ
*W
3,0である。第1のサンプリング位置での4つの重み付き画素値の和は値Iで表され、値Iは、出力バッファ96の第1の位置(バッファ位置0)に書き込まれる。
図7に示されるように、続いて、基本カーネル手順は、第2~第5のサンプリング位置(カーネル位置1~4)にそれぞれ対応する、第1のデータストリーム内の第1の行の画素の4つの画素値の各セットの重み付き画素値を順番に決定する。基本カーネル手順94はさらに、II、III、IVおよびVとして表される4つの重み付き画素値のそれぞれの和を決定し、II、III、IVおよびVは、それぞれ出力バッファの第2~第5の位置(バッファ位置1~4)に順番に書き込まれる。いくつかの実施形態では、基本カーネル手順94は、「積和演算」またはMAC手順を実装することができる。第1および第2のデータストリームから受け取った画素値とカーネル値の各対について、この手順は、画素値と重みを互いに乗算して重み付き画素値を決定し、この重み付き画素値を、同じカーネルサンプリング位置に対する以前に決定された重み付き画素値の和に加算することにより重み付き画素値を累積する。したがって、4つの重み付き画素値(カーネルの列数、したがって「ストライド」に対応する)に基づく累積和は、対応するカーネルサンプリング位置に対する部分的(サブサンプリングおよび重み付けされた)画素値である。これらの部分的画素値は、出力バッファ96に保存され、第3のデータストリームを形成し、第3のデータストリームは、基本カーネル手順94へのフィードバックとして提供される。
図8は、一次画像の画素の第1の行を処理することから出力され、各サンプリング位置について出力バッファ96に順次保存される第3のデータストリーム98の部分的画素値の、基本カーネル手順94へのフィードバックを概略的に示す。第3のデータストリーム98のフィードバックは、第1のデータストリーム90および第2のデータストリーム92と同時に提供され、その結果、部分的画素値は、第1のデータストリーム90内の一次画像の画素の次の行の画素値および第2のデータストリーム92内の対応するカーネル値と同期される。
【0099】
図9は、
図7のカーネルサブサンプリング手順の例の第2の反復を示す。
図9では、この手順は、第2のデータストリームのカーネルの第2の行の対応するカーネル値を使用して、一次画像の第2の行の画像画素値の第1のデータストリームに対して実行される。
図9はさらに、部分的画素値の第3のデータストリームの使用を示し、部分的画素値は、第1の反復で一次画像の第1の行の画素をサブサンプリングして出力され、出力バッファからのフィードバックとして提供されたものである。最後に、
図9は、出力バッファに順番に提供される更新済み部分的画素値の出力データストリームを示す。
【0100】
図9に示されるように、第1のデータストリーム90は、データ入力位置19、18、17、16、15、14、13、12、11、10、9、8、7、6、5、4、3、2、1および0に、それぞれ一次画像の第2の行(行1)の画素の20個の画素値T、Σ、P、Θ、Π、O、N、M、Λ、K、θ、I、H、Γ、Φ、E、Δ、Χ、BおよびAの順序付けられたシーケンスを含む。さらに、第2のデータストリーム92は、20個のカーネル値の順序付けられたシーケンスを含み、第2のデータストリーム内の各データ入力位置にあるカーネル値は、第1のデータストリーム内の同じデータ入力位置にある画素値に対応する。当業者なら理解するように、カーネル値はカーネルの次の(第2の)行に対応する。
【0101】
基本カーネル手順94は、第1のデータストリーム90の一次画像の画素の第2の行の各画素値と第2のデータストリーム92の同期された対応する重みW
x,yとを受け取り、対応する重み付き画素値を決定する。基本カーネル手順94は、カーネルサンプリング位置ごとに重み付き画素値を順番に合算して、対応する(重み付き)部分的画素値を決定する。したがって、第1のサンプリング位置(カーネル位置0)に対応する、第1のデータストリーム内の画素の第2の行の最初の4つの画素値の重み付き画素値は、T
*W
0,1、Σ
*W
1,1、P
*W
2,1およびΘ
*W
3,1である。第1のサンプリング位置にある4つの重み付き画素値の和は、同じサンプリング位置にある重み付き画素値の累積和に対応する第3のデータストリーム98の第1の部分的画素値に加算される。重み付き画素値の更新済み累積和は値Nで表され、値Nは、出力バッファ96の第1の位置(バッファ位置0)に書き込まれる。
図9に示されるように、続いて、基本カーネル手順は、同じ方法で第2~第5のサンプリング位置(カーネル位置1~4)のそれぞれに対して重み付き画素値の累積和を順番に決定し、これらの重み付き画素値の累積和は、それぞれ部分的画素値P、Q、R、Zとして出力バッファの第2~第5の位置(バッファ位置1~4)に書き込まれる。
【0102】
当業者なら理解するように、
図9に示される基本カーネル手順94は、一次画像の後続の各画像行の第1のデータストリームの画素値を使用して、カーネルの対応する行から最後のカーネル行までのカーネル値を使用して反復的に繰り返される。最後のカーネル行のカーネル値に対応する画素値がサンプリング位置に対して処理されると、サンプリングウィンドウ内の画素値はすべてサンプリングされ、バッファ96に出力された累積値は全(重み付きの和)画素値を表す。したがって、基本カーネル手順94が、この手順が最後のカーネル行を使用してサブサンプリングしていると決定すると、累積(重み付き)画素値の出力は、
図10を参照して後述するように修正される。
【0103】
図10は、2次画像の全または完全累積画素値の出力を概略的に示す。この手順は、最後のカーネル行のカーネル値を使用した各反復後にかつ/または最後の反復後に行われてもよい。特に、カーネルサンプリング位置にあるサンプリングウィンドウ内の画素の画素値がすべてサブサンプリングされた後、全累積(重み付き)画素値が決定される。特に、全累積画素値は、第2のデータストリーム92内のカーネルのカーネル値の最後の行を使用して第1のデータストリーム内の画像行の画素値を処理するときに、基本カーネル手順94によって出力される。前と同様に、累積された(重み付けされた)画素値は、出力バッファ96に順次提供されて、第3のデータストリーム98を形成する。しかしながら、累積画素値を基本カーネル手順94へのフィードバックとして提供する代わりに、第3のデータストリーム98は、オプションの除算ユニット126に供給される。オプションの除算ユニット126は、第3のデータストリーム98の累積された(重み付けされた)画素値のそれぞれを総カーネル重みで除算することにより、二次画像の最終のサブサンプリング済み画素値を決定して、上述したように正規化された画素値を決定することができる。除算ユニットからの出力ストリーム122は、二次画像用のデータストレージにストリーミングされてもよく、かつ/またはホログラム計算用のホログラムエンジンにリアルタイムで送られてもよい。さらに、第3のデータストリーム98を基本カーネル手順94にフィードバックする代わりに、画像行をサブサンプリングするためのカーネル位置の数と同じ数のヌルデータ値のシーケンス(すなわち、ゼロ(0)のシーケンス)を含むバックデータストリーム124が、基本カーネル手順94に提供され得る。バックデータストリーム124は、第1のデータストリーム90および第2のデータストリーム92と同時に提供され、したがって、それぞれのデータストリーム内の対応する位置の値は同期される。
図7には示されていないが、同様のバックデータストリーム124が、第1の画像行に対応する画素値を処理するために、基本カーネル手順94に提供され得る。
【0104】
図12は、いくつかの実施形態による、一次画像をサブサンプリングするためのデータストリーミングに基づくカーネル演算およびバッファリングの方法1200を示す流れ図である。方法1200は、上述したように、同期された画素値の第1データストリームおよびカーネル値の第2のデータストリームを受け取り、部分(または全)画素値の第3のデータストリームをフィードバック(または出力)のために出力バッファに出力する。方法1200は、上述したように、
図11のデータストリーミングの方法1100と組み合わせて実装され得る。特に、
図12の方法1200の特定のステップは、
図11の方法1100のステップから出力信号を受け取ることができる。したがって、
図11の方法のように、カーネルは、カーネル値のM行およびN列の配列を含み、したがって、一次画像のM×N画素の配列のサンプリングウィンドウを形成する。さらに、カーネルの一連のサンプリング位置が定義され、一次画像のM×N画素の連続する配列をサブサンプリングするために、x方向のストライドはN画素であり、y方向のストライドはM画素である。
【0105】
図12の方法では、カーネルを使用して一次画像のM×N画素の連続する配列をサブサンプリングして、解像度を下げた二次画像の画素値を生成する。特に、二次画像の単一画素値が、サンプリング位置でカーネルによって定義されたサンプリングウィンドウ内に含まれる一次画像のM×N画素の各配列に対して決定される。
【0106】
この方法は、ステップ1205で、第1および第2のデータストリームの第1の値、またはデータストリーミング手順の開始を指示する関連トリガを受け取るのに応答して開始する。いくつかの実施形態では、ステップ1205は、一次画像に関する情報、特に画像画素の行および列の数をさらに受け取ることができ、かつ/または、カーネルに関する情報、特にカーネル値の行および列の数が、後述するように画素値およびカーネル値とカーネルサンプリング位置とを追跡するために提供される。
【0107】
ステップ1210は、出力バッファの現在のストレージ場所を第1のカーネルサンプリング位置に設定する。出力バッファの第1のストレージ場所は、カーネルの第1のサンプリング位置と一致していると言うことができる。当業者なら理解するように、カーネルのサンプリング位置は、カーネルが一次画像の上を(例えば、x方向およびy方向のストライドを含むラスタ走査パス内を)移動するときのサンプリング位置の順序付けられたシーケンスに従って、1の増分での数字の昇順に(例えば、カーネル位置0からカーネル位置Xまで)定義され得る。当業者なら理解するように、図示の実施形態では、出力バッファ内の各ストレージ場所は、対応するサンプリング位置に関連する出力(部分)画素値の受取り専用である。
【0108】
ステップ1220は、同期された第1のデータストリームと第2のデータストリームの値の第1の対を受け取る。例えば、第1のデータストリームおよび第2のデータストリームは、
図11の方法1100の「A」での出力から受け取ることができる。したがって、ステップ1220は、第1のデータストリームから一次画像の第1の画素値を受け取り、第2のデータストリームからカーネルの対応する第1のカーネルの値または重みを受け取る。上述したように、画素値とカーネル値のそれぞれの対は、クロックカウンタによって同期され得る。
【0109】
ステップ1222は、ステップ1220で受け取った画素値およびカーネル値を乗算することにより、対応する重み付き画素値を決定する。次いで、ステップ1224は、ステップ1222で決定された重み付き画素値が、現在のカーネルサンプリング位置での画像行の最後の画素値に対応するかどうかを決定する。特に、ステップ1224は、第1のデータストリームおよび第2のデータストリームの値の処理済み対がカーネル行(または最後のカーネル列)の終わりに対応するかどうかを決定することができる。図示の例では、ステップ1224は、ステップ1224が
図11の方法1100の「B」から「カーネル行の終わり」信号を受け取った場合にステップ1222で決定された重み付き画素値が現在のカーネルサンプリング位置の値の最後の対に対応すると決定する。他の例では、カーネル列カウンタが使用されてもよく(例えば、ステップ1220の前にゼロに設定される)、その場合、ステップ1224は、カーネル列カウンタの値をカーネル列の数と直接比較することができる。当業者なら理解するように、図示の例では、カーネルが現在のサンプリング位置の最後の画素値で動作するとき、カーネル列カウンタはNである。ステップ1224が、1222で決定された重み付き画素値が現在のサンプリング位置の最後の画素値ではないと決定した場合、方法はステップ1220に戻り、第1のデータストリームの画素値と第2のデータストリームのカーネル値の次の対を受け取る。カーネル列カウンタを使用する例では、カーネルカウンタは、ステップ1220で値の次の対を読み取る前に1だけインクリメントされる。次いで、この方法は、ステップ1224が、以前に決定された重み付き画素値が現在のサンプリング位置の画素カーネル値の最後の対に対応すると決定するまで、ステップ1220~1224を含むループで続き、方法はステップ1230へ進む。
【0110】
ステップ1230は、現在のカーネル位置の重み付き画素値の和を決定する。いくつかの実施形態では、所与のカーネルサンプリング位置について、ステップ1224の逐次反復によって順次決定されるN個の重み付き画素値はそれぞれ、加算器を介してレジスタ(または他の一時データストレージ)に送られる。加算器は、受け取った重み付き画素値をレジスタ内の現在の値に加算し、その結果をレジスタに戻し、それによってレジスタに保持された値が更新される。したがって、これらの実施形態では、特定のカーネルサンプリング位置に対して決定されたN個の重み付き画素値がリアルタイムで合算され、ステップ1230は、重み付き画素値の和をレジスタに保存される最終値として決定する。他の実施形態では、特定のカーネルサンプリング位置の各重み付け画素値は、レジスタ(または他の一時データストレージ)に保存され、ステップ1230で合算され得る。
【0111】
ステップ1232はさらに、ステップ1230で決定された現在のカーネル位置の重み付き画素値の和を、フィードバックとして出力バッファから受け取った第3のデータストリームの累積(部分画素)値に加算する。図示の例では、累積/部分的画素値の第3のデータストリームは、後述するように「F」から受け取ることができる。上述したように、カーネルの第1の行のカーネル値に対応する行の画素値を処理するときに、ヌル部分的画素値のストリームがフィードバックとして提供され得る。したがって、ステップ1232で決定された値は、現在のカーネル位置の更新済み累積(部分画素)値に対応する。
【0112】
ステップ1240は、ステップ1222で決定された更新済み累積(部分画素)値を出力バッファの現在のストレージ場所に保存する。次いで、この方法はステップ1250で続く。
【0113】
ステップ1250は、前のステップ1220で受け取った第1のデータストリームの画素値が、一次画像の画像行内の最後の画素の画素値に対応するかどうかを決定する。図示の例では、ステップ1250は、このステップが
図11の方法1100の「C」から「画像行の終わり」信号を受け取った場合、前のステップ1220で受け取った画素値が、一次画像の画像行内の最後の画素であり、したがって一次画像の画像行の終わりにあると決定する。他の例では、方法1200は、一次画像の画素列の数に関する情報を受け取り、画像行の終わりを識別するために、ステップ1220で受け取った第1のデータストリームの画素値を追跡する画像列カウンタ(図示せず)を含むことができる。ステップ1250が、前のステップ1220で受け取った画素値が画像行内の最後の画素に対応しないと決定した場合、方法はステップ1252へ進み、出力バッファのストレージ場所を1だけインクリメントし、例えば、カーネルサンプリング位置を1だけインクリメントすることにより、新たなストレージ場所を次のカーネルサンプリング位置に設定する(ステップ1210を参照)。次いで、この方法はステップ1220に戻り、第1のデータストリームの画素値と第2のデータストリームのカーネル値の次の対を受け取る。この場合も、カーネル列カウンタを使用する例では、カーネル列カウンタは、ステップ1220で値の次の対を受け取る前に0にリセットされる。次いで、この方法は、ステップ1250が、前のステップ1220で受け取った画素値が画像行の終わりにあると決定するまで、ステップ1220~1252を含む内部ループで続く。ステップ1250が、最後に受け取った画素値が画像行の終わりにあると決定すると、方法はステップ1260へ進む。
【0114】
ステップ1260は、前のステップ1220で受け取った画素値の画像行が一次画像の最後の画像行に対応するかどうかを、したがって、第1のデータストリーム内の一次画像の最後の画素の画素値であるかどうかを決定する。図示の例では、ステップ1260は、このステップが
図11の方法1100の「E」から「画像の終わり」信号を受け取った場合、前のステップ1220で受け取った画素値が第1のデータストリームの最後の画素の画素値であると決定する。
【0115】
ステップ1260が、前のステップ1220で受け取った画素値が第1のデータストリーム内の最後の画素の画素値ではないと決定した場合、一次画像のサブサンプリングは完了せず、方法はステップ1270へ進む。一方、ステップ1260が、前のステップ1220で受け取った画素値が第1のデータストリーム内の最後の画素の画素値であると決定した場合、一次画像のサブサンプリングは完了し、方法はステップ1280へ進み、第3のデータストリームの累積値の最後の行を出力バッファから(サブサンプリングされた)二次画像の全(または完全)画素値として出力する。次いで、この方法はステップ1285で終了する。
【0116】
ステップ1270に戻ると、方法1200は、ステップ1220で受け取った第2のデータストリームのカーネル値または重みがカーネルの最後の行からのものである(すなわち、カーネルの最後のカーネル値である)かどうかを決定する、つまり、現在のサンプリング位置でのカーネルサンプリングが完了する。図示の例では、ステップ1270は、このステップが
図11の方法1100の「D」から「カーネルの終わり」信号を受け取った場合、前のステップ1220で受け取ったカーネル値がカーネルの最後のカーネル値であると決定する。他の例では、カーネル行カウンタがカーネル行を追跡するために使用され、ステップ1270は、カーネル行カウンタ内の現在の値をカーネル行の数Mと直接比較し、一致する場合、前のステップ1220で受け取ったカーネル値がカーネルの最後のカーネル値であると決定することができる。ステップ1270が、前のステップ1220で受け取ったカーネル値がカーネルの最後のカーネル値ではないと決定した場合、方法はステップ1272で続き、このステップは、出力バッファに保存された累積値の現在の行を、「F」でのフィードバックとしての部分的画素値の第3のデータストリームとして提供し、第3のデータストリームは、上述したようにステップ1232で受け取られる。次いで、この方法はステップ1220に戻り、第1のデータストリームの画素値と第2のデータストリームのカーネル値の次の対を受け取る。この場合も、カーネル列カウンタを使用する例では、カーネル列カウンタは、ステップ1220で値の次の対を受け取る前に0にリセットされる。次いで、この方法は、ステップ1220~1272を含む外部ループで続き、外部ループは、ステップ1270が、前のステップ1220で受け取ったカーネル値がカーネルの最後のカーネル値であると決定するまで、前の外部ループと同じサンプリング位置のセット(すなわち、サンプリング位置の行)のカーネルサブサンプリングを継続し、方法はステップ1274へ進む。
【0117】
ステップ1270が、前のステップ1220で受け取ったカーネル値がカーネルの最後のカーネル値であると決定すると、2つの結果が起こる。最初に、カーネルのサンプリングウィンドウは、y方向のストライド距離だけ次のサンプリング位置(すなわち、サンプリング位置の次の行)に移され、x方向の次の画像行の開始点に移される(第1のデータストリーム内の画素値はラスタ走査順序で一次画像から読み取られるため)。次に、サンプリング位置の行の各サンプリング位置でカーネル内に含まれるN個の画素値のサブサンプリングがカーネル演算によって処理され、したがって、出力バッファの対応する各ストレージ場所に出力される累積値は二次画像の全(または完全)画素値である。
【0118】
したがって、ステップ1274は、出力バッファに保存された累積値を、二次画像の全(または完全)画素値を含む第3のデータストリームとして、例えば
図10に示されるように除算器126に出力する。これは、出力バッファのストレージ場所をクリアするのに役立つことができる。次いで、方法1200はステップ1210に戻り、出力バッファ内の現在のストレージ場所を次のカーネルサンプリング位置に設定する。したがって、出力バッファ内の現在の第1のストレージ場所は、カーネルのサンプリング位置の次の行の第1のサンプリング位置と一致する。次いで、方法1200は、ステップ1260が最後の画像行が処理されたと決定するまで続き、(サブサンプリングされた)二次画像の累積された全(完全)画素値の最後の行がステップ1280で出力され、方法はステップ1285で終了する。
【0119】
当業者なら理解するように、
図11および
図12に示した流れ図は、単なる例に過ぎない。本開示を実施するときには多くの変形または修正が可能であり、企図される。例えば、上記ステップは、流れ図に示されているものとは異なる順序で実行されてもよい。
【0120】
インターレース
上述したように、複数の二次画像が、カーネルを使用して一次画像(ソース画像か中間画像のどちらか)をサブサンプリング(アンダーサンプリング)することによって生成され得る。各二次画像は、一次画像よりも少ない画素を含む。ホログラムが複数の二次画像のそれぞれに対して決定され、各ホログラムがディスプレイ装置上に順番に表示されて、再生面上に各二次画像に対応するホログラフィック再構成を形成する。
【0121】
したがって、随意に、ソース画像(すなわち中間画像)のワープバージョンをサブサンプリングすることによりワーピングを補償しながら、一次画像に対応する複数のホログラフィック再構成をインターレースするための技法が本明細書に開示される。
【0122】
いくつかの実施形態では、ホログラム計算およびインターレースの速度は、本開示によるデータストリーミング手法を用いて増加する。特に、二次画像の全または完全画素値は、二次画像のすべての画素値が決定される前にホログラム計算を開始するためにホログラムエンジンにリアルタイムでストリーミングされ得る。例えば、
図12の方法1200のステップ1274で出力された二次画像の各行の全または完全画素値は、二次画像の最後の行の全または完全画素値がステップ1280で出力される前に、ホログラム計算を開始するためにホログラムエンジンにリアルタイムでストリーミングされ得る。
【0123】
したがって、本明細書では、m行およびn列のカーネル値を有するカーネルを使用して一次画像をアンダーサンプリングすることにより二次画像を生成する方法が開示され、カーネルは、一次画像の各行に対して複数のカーネルサンプリング位置を有し、行の各カーネルサンプリング位置がx画素のストライド距離で隔てられ、この方法は、画素値の第1のデータストリームを形成することであって、第1のデータストリームが一次画像の画像画素値を行ごとに読み取ることによって形成されること、カーネル値の第2のデータストリームを形成すること、および、第1のデータストリームの画素値を第2のデータストリームのカーネル値と同期させて、各画素値が、対応するカーネルサンプリング位置に対するカーネルの当該カーネル値と対になるようにすること、を含む。
【0124】
いくつかの実施形態では、ホログラフィックプロジェクタおよび光学リレーシステムを備えるヘッドアップディスプレイなどのディスプレイ装置が提供される。光学リレーシステムは、各ホログラフィック再構成の虚像を形成するようになされる。いくつかの実施形態では、ターゲット画像は、ターゲット画像の第1の領域内の近接場画像コンテンツとターゲット画像の第2の領域内の遠方場画像コンテンツとを含む。ホログラフィックに再構成された近接場コンテンツの虚像は、観察面、例えばアイボックスからの第1の虚像距離で形成され、ホログラフィックに再構成された遠方場コンテンツの虚像は、観察面からの第2の虚像距離で形成され、第2の虚像距離は第1の虚像距離よりも大きい。いくつかの実施形態では、複数のホログラムのうちの1つのホログラムが、近接場でユーザに表示されるターゲット画像の画像コンテンツ(例えば、速度情報)に対応し、複数のホログラムのうちの別のホログラムが、遠方場内に投影されるターゲット画像の画像コンテンツ(例えば、ランドマークインジケータまたはナビゲーションインジケータ)に対応する。遠方場用の画像コンテンツは、近接場用の画像コンテンツよりも頻繁にリフレッシュされてもよく、その逆であってもよい。
【0125】
システム図
図13は、諸実施形態によるホログラフィックシステムを示す概略図である。空間光変調器(SLM)940は、コントローラ930から受け取ったホログラムを表示するようになされる。動作中、光源910は、SLM940上に表示されたホログラムを照明し、再生面925上の再生フィールドにホログラフィック再構成が形成される。コントローラ930は、画像ソース920から1つまたは複数の画像を受け取る。例えば、画像ソース920は、単一静止画像を取り込むようになされた静止カメラや動画のビデオシーケンスを取り込むようになされたビデオカメラなどの画像取込装置とすることができる。
【0126】
コントローラ930は、画像処理エンジン950、ホログラムエンジン960、データフレーム生成器980、およびディスプレイエンジン990を備える。画像処理エンジン950は、画像ソース920からターゲット画像を受け取る。画像処理エンジン950は、本明細書に記載されるように、ターゲット画像およびカーネルを受け取り、画素値およびカーネル値または重みの対応する同期データストリームを形成するようになされたデータ・ストリーミング・エンジン952を備える。画像処理エンジン950は、本明細書に記載されるように、データ・ストリーミング・エンジン952からの同期データストリームを使用して、ターゲット画像に基づいて一次画像から複数の二次画像を生成するようになされた二次画像生成器955を含む。画像処理エンジン950は、制御信号を受け取るか、そうでなければ、データ・ストリーミング・エンジン952によって使用されるための二次画像を生成するためのカーネルスキームを決定することができる。したがって、各二次画像は一次画像よりも少ない画素を含む。画像処理エンジン950は、ソース画像を一次画像として使用して複数の二次画像を生成することができる。ソース画像は、ターゲット画像のアップスケールバージョンとすることができる、または画像処理エンジンは、本明細書に記載されるようにアップスケーリングを実行することができる。あるいは、画像処理エンジン950は、ソース画像を処理して中間画像を決定し、中間画像を一次画像として使用することができる。画像処理エンジン950は、本明細書に記載されるように、一次画像をアンダーサンプリングすることにより複数の二次画像を生成することができる。画像処理エンジン950は、第1の二次画像および第2の二次画像を決定することができる。画像処理エンジン950は、複数の二次画像をホログラムエンジン960に渡す。いくつかの実装形態では、画像処理エンジン950は、本明細書に記載されるように、二次画像の画素値をホログラムエンジン960にリアルタイムでストリーミングすることができる。
【0127】
ホログラムエンジン960は、本明細書に記載されるように、各二次画像に対応するホログラムを決定するようになされる。ホログラムエンジン960は、複数のホログラムをデータフレーム生成器980に渡す。データフレーム生成器980は、本明細書に記載されるように、複数のホログラムを含むデータフレーム(例えば、HDMIフレーム)を生成するようになされる。特に、データフレーム生成器980は、複数のホログラムのそれぞれに対するホログラムデータと各ホログラムの開始を指示するポインタとを含むデータフレームを生成する。データフレーム生成器980は、データフレームをディスプレイエンジン990に渡す。次に、データフレーム生成器980およびディスプレイエンジン990は、データストリーミングによって動作することができる。ディスプレイエンジン990は、複数のホログラムをそれぞれ順番にSLM940上に表示するようになされる。ディスプレイエンジン990は、ホログラム抽出器992、タイリングエンジン970、およびソフトウェア光学系994を備える。ディスプレイエンジン990は、本明細書に記載されるように、ホログラム抽出器992を使用してデータフレームから各ホログラムを抽出し、タイリングエンジン970によって生成されたタイリングスキームに従ってホログラムをタイリングする。特に、タイリングエンジン970は、制御信号を受け取ってタイリングスキームを決定することができる、またはそうでなければ、ホログラムに基づいてタイリング用のタイリングスキームを決定することができる。ディスプレイエンジン990は、本明細書に記載されるように、再生面上の再生フィールドの位置を並進させるために、ソフトウェア光学系994を使用して位相ランプ機能(ソフトウェアレンズとも呼ばれるソフトウェア格子機能)を随意に追加することができる。したがって、各ホログラムについて、ディスプレイエンジン990は、本明細書に記載されるように、駆動信号をSLM940に出力して対応するタイリングスキームに従って複数のホログラムの各ホログラムを順番に表示するようになされる。
【0128】
コントローラ930は、二次画像生成器955が二次画像を生成する方法を動的に制御することができる。コントローラ930は、ホログラムのリフレッシュレートを動的に制御することができる。リフレッシュレートは、画像ソース920から画像処理エンジン950によって受け取られたシーケンス内の次のターゲット画像から、ホログラムがホログラムエンジンによって再計算される頻度と見なすことができる。本明細書に記載されるように、動的に制御可能な特徴およびパラメータは、制御信号で示される外部要因に基づいて決定され得る。コントローラ930は、かかる外部要因に関連する制御信号を受け取ることができる、またはかかる外部要因を決定し、それに応じてかかる制御信号を生成するためのモジュールを含むことができる。
【0129】
当業者なら理解するように、コントローラ930の上記の特徴は、ソフトウェア、ファームウェアまたはハードウェア、ならびにそれらの任意の組合せに実装され得る。
【0130】
したがって、m行およびn列のカーネル値を有するカーネルを使用して一次画像をアンダーサンプリングすることにより二次画像を生成するようになされた画像処理エンジンが提供され、カーネルは、一次画像の各行に対して複数のカーネルサンプリング位置を有し、行の各カーネルサンプリング位置がx画素のストライド距離で隔てられ、画像処理エンジンは、画素値の第1のデータストリームを形成し、第1のデータストリームが一次画像の画像画素値を行ごとに読み取ることによって形成され、カーネル値の第2のデータストリームを形成し、第1のデータストリームの画素値を第2のデータストリームのカーネル値と同期させて、各画素値が、対応するカーネルサンプリング位置のカーネルの当該カーネル値と対になるようにするようになされたデータ・ストリーミング・エンジンを備える。
【0131】
追加機能
実施形態は、ほんの一例として、電気的に作動するLCOS空間光変調器に言及している。本開示の教示は、例えば、任意の電気的に作動するSLM、光学的に作動するSLM、デジタルマイクロミラー装置、または微小電気機械装置などの、本開示に従ってコンピュータ生成ホログラムを表示することができる任意の空間光変調器に等しく実装され得る。
【0132】
いくつかの実施形態では、光源は、レーザダイオードなどのレーザである。いくつかの実施形態では、検出器は、フォトダイオードなどの光検出器である。いくつかの実施形態では、受光面は、ディフューザなどのディフューザ面またはスクリーンである。本開示のホログラフィック投影システムは、改良されたヘッドアップディスプレイ(HUD)またはヘッドマウントディスプレイを提供するために使用され得る。いくつかの実施形態では、HUDを提供するために車両内に設置されたホログラフィック投影システムを備える車両が提供される。車両は、自動車、トラック、バン、大型トラック、オートバイ、列車、飛行機、ボート、船などの自動車両とすることができる。
【0133】
諸例は、可視光でSLMを照明することを記述しているが、当業者なら、本明細書に開示されるように、光源およびSLMが例えば赤外線光または紫外線光を向けるために等しく使用され得ることを理解するであろう。例えば、当業者なら、ユーザに情報を提供する目的で、赤外線光および紫外線光を可視光に変換するための技法を認識しているであろう。例えば、本開示は、この目的のために蛍光体および/または量子ドット技術を使用することにまで及ぶ。データストリーミングのための技法は、この種のすべての用途に適用可能である。
【0134】
いくつかの実施形態では、ほんの一例として2次元ホログラフィック再構成を記述している。他の実施形態では、ホログラフィック再構成は、3次元ホログラフィック再構成である。すなわち、いくつかの実施形態では、各コンピュータ生成ホログラムが3次元ホログラフィック再構成を形成する。
【0135】
本明細書に記載されているデータストリーミングの方法およびプロセスは、処理速度を最適化するためにハードウェアに実装され得る。それにもかかわらず、当業者なら、データストリーミング技法の特定の態様がソフトウェアにも実装され得ることを理解するであろう。したがって、態様は、コンピュータ可読媒体上に具体化され得る。「コンピュータ可読媒体(computer-readable medium)」という用語は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、バッファメモリ、フラッシュメモリ、キャッシュメモリなど、データを一時的または永続的に保存するようになされた媒体を含む。「コンピュータ可読媒体」という用語はまた、機械で実行される命令を、この命令が、1つまたは複数のプロセッサによって実行されると、機械に本明細書に記載の方法論のいずれか1つまたは複数を全部または一部実行させるように、保存することができる任意の媒体または複数の媒体の組合せを含むと解釈されるものとする。
【0136】
「コンピュータ可読媒体」という用語は、クラウドベースのストレージシステムも包含する。「コンピュータ可読媒体」という用語は、ソリッドステート・メモリ・チップ、光ディスク、磁気ディスク、またはそれらの任意適切な組合せの形態例での1つまたは複数の有形の非一時的データリポジトリ(例えば、データ量)を含むが、これらに限定されるものではない。いくつかの例示的な実施形態では、実行のための命令は、キャリア媒体によって伝達され得る。そのようなキャリア媒体の例には、一時的媒体(例えば、命令を伝達する伝搬信号)が含まれる。
【0137】
添付の特許請求の範囲から逸脱することなく、様々な修正および変形がなされ得ることは当業者には明らかであろう。本開示は、添付の特許請求の範囲およびその均等物の範囲内のすべての修正および変形を包含する。