(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
<画像処理装置の全体構成>
図1は画像処理装置1の構成の一例を示す図である。画像処理装置1は、例えば、デジタルスチルカメラに搭載される。
【0016】
図1に示されるように、画像処理装置1は、CPU(Central Processing Unit)2と、DMA(Direct Memory Access)コントローラ3と、メモリ4と、撮像素子5と、画像処理回路6とを備える。画像処理装置1は、一種の回路構成であると言える。
【0017】
CPU2は、一種のプロセッサであって、一種の回路構成でもある。CPU2は、図示しないROM(Read Only Memory)等のメモリに記憶されているプログラムを実行する。CPU2がプログラムを実行することによって、CPU2には様々な機能が実現される。CPU2はDMAコントローラ3を制御することが可能である。
【0018】
なお、CPU2の代わりに、その機能の実現のためにプログラム(ソフトフェア)が不要な、例えば論理回路等を含むハードウェア回路が設けられてもよい。また、CPU2の機能の一部が、その機能の実現のためにプログラムが不要なハードウェア回路で実現されてもよい。
【0019】
DMAコントローラ3は、一種の回路構成であって、CPU2による制御によって、メモリ4に記憶されているデータを当該メモリ4から読み出すことが可能である。メモリ4は、例えばRAM(Random Access Memory)である。メモリ4では、例えば、1つのアドレスの記憶領域は、1バイトのデータを記憶する。DMAコントローラ3とメモリ4との間のデータバス幅はNバイトである。Nは、整数であって、N≧2である。本例では、例えばN=16である。
【0020】
DMAコントローラ3は、Nバイトのアライメント制約、本例では16バイトのアライメント制約を有する。DMAコントローラ3は、Nバイトのアライメント制約を有する処理回路であるとも言える。DMAコントローラ3は、メモリ4から16バイト単位(128ビット単位)でデータを読み出す。DMAコントローラ3は、メモリ4に対して、16の倍数のアドレスを指定することによって、指定したアドレスを先頭とする連続した16個のアドレスの記憶領域に記憶されている16バイトのデータを一度に読み出すことができる。なお、Nは16以外であってもよい。
【0021】
撮像素子5は、レンズ等を含む光学系(図示せず)を通じて入射する光を電気信号に変換して、被写体が写る画像を示す画像データ100を生成する。撮像素子5で生成された画像データ100は、メモリ4に記憶される。
【0022】
画像処理回路6は、DMAコントローラ3がメモリ4から読み出す画像データに対して画像処理を行う。DMAコントローラ3は、画像データ100の一部のデータあるいは画像データ100のすべてをメモリ4から読み出すことが可能である。
【0023】
CPU2は、メモリ4において、DMAコントローラ3が読み出す対象のデータが記憶されている記憶領域を特定するための特定情報300をDMAコントローラ3に出力する。DMAコントローラ3は、特定情報300に基づいて、メモリ4から、読み出し対象のデータを読み出して画像処理回路6に入力する。
【0024】
画像処理回路6で画像処理が行われた画像データは、出力デバイスに入力される。出力デバイスは、例えば、画像処理装置1が搭載されるデジタルスチルカメラが有するディスプレイ、あるいは当該デジタルスチルカメラの外部のディスプレイである。出力デバイスとしてのディスプレイは、入力された画像データに基づいて、当該画像データが示す画像を表示することが可能である。
【0025】
図2は、メモリ4が画像データ100を構成する複数の画素データPDを記憶する様子の一例を示す図である。本例では、
図3に示されるように、撮像素子5で生成される画像200において、例えば、左からx列目、上からy行目の画素を画素(x,y)と表す。0≦x≦X、0≦y≦Yであって、画像200の総画素数は((X+1)×(Y+1))個である。
【0026】
また、画素(x,y)の画素データPDを画素データPD(x,y)と表す。各画素データPDのデータ長はKバイトである。例えば、K=3であって、画素データPDのデータ長は24ビットである。画素データPD(x,y)の0ビット目から7ビット目の下位データPDLを下位データPDL(x,y)[7:0]と表す。画素データPD(x,y)の8ビット目から15ビット目の中位データPDMを中位データPDM(x,y)[15:8]と表す。画素データPD(x,y)の16ビット目から23ビット目の上位データPDUを上位データPDU(x,y)[23:16]と表す。そして、メモリ4において、下位データPDL(x,y)[7:0]を記憶する領域のアドレスをアドレスA(x,y)[7:0]で表し、中位データPDM(x,y)[15:8]を記憶する領域のアドレスをアドレスA(x,y)[15:8]で表し、上位データPDU(x,y)[23:16]を記憶する領域のアドレスをアドレスA(x,y)[23:16]で表す。
【0027】
図2に示されるように、メモリ4においては、画像データ100を構成する複数の画素データPDが、昇順に連続する複数のアドレスの記憶領域に対して、ラスタ順に記憶される。1つの画素データPDは、昇順に連続する3つのアドレスの記憶領域に記憶される。下位データPDLは、当該3つのアドレスのうちの最も小さいアドレスの記憶領域に記憶され、中位データPDMは、当該3つのアドレスのうちの2番目に小さいアドレスの記憶領域に記憶され、上位データPDUは、当該3つのアドレスのうちの最も大きいアドレスの記憶領域に記憶される。
【0028】
上述のように、DMAコントローラ3は、メモリ4に対して指定したアドレスを先頭とする連続した16個のアドレスの記憶領域に記憶されている16バイトのデータを一度に読み出すことができる。本例では、画素データPDは3バイトであることから、DMAコントローラ3が一度に読み出す16バイトのデータには、5つの画素データPDが含まれる。
【0029】
例えば、DMAコントローラ3が、アドレスA(0,0)[7:0]をメモリ4に対して指定したとすると、DMAコントローラ3は、5つの画素データPD(0,0),PD(1,0),PD(2,0),PD(3,0),PD(4,0)と、1バイトの下位データPDL(5,0)[7:0]とを一度に読み出す。また、DMAコントローラ3が、例えば、アドレスA(X,0)[15:8]をメモリ4に対して指定したとすると、DMAコントローラ3は、1バイトの中位データPDM(X,0)[15:8]と、1バイトの上位データPDU(X,0)[23:16]と、4つの画素データPD(0,1),PD(1,1),PD(2,1),PD(3,1)と、1バイトの下位データPDL(4,1)[7:0]と、1バイトの中位データPDM(4,1)[15:8]とを一度に読み出す。
【0030】
以後、データのアドレスあるいはデータに対応するアドレスと言えば、メモリ4において、当該データが記憶される領域のアドレスを意味する。また、あるアドレスのデータあるいはあるアドレスに対応するデータと言えば、当該あるアドレスの記憶領域に記憶されるデータを意味する。
【0031】
<画像処理回路の構成>
図4は画像処理回路6の構成の一例を示す図である。
図4に示されるように、画像処理回路6は、調整回路61、調整回路62、処理回路71及び処理回路72を備えている。
【0032】
DMAコントローラ3は、メモリ4からデータを読み出し、読み出したデータを調整回路61に入力する。調整回路61とDMAコントローラ3の間のデータバス幅は、Nバイト、本例では16バイトである。調整回路61は、DMAコントローラ3から入力される入力データに含まれる不要データを破棄して、当該入力データを処理回路71に出力する。調整回路61には、当該調整回路61が破棄すべきデータを特定するための特定情報610が処理回路72から入力される。調整回路61は、特定情報610に基づいて、DMAコントローラ3から入力される入力データに含まれる不要データを破棄する。調整回路61の動作は後で詳細に説明する。
【0033】
調整回路61と処理回路71の間のデータバス幅はMバイトである。Mは2以上の整数であって、例えばM=8である。処理回路71は、Mバイトのアライメント制約、本例では8バイトのアライメント制約を有する。調整回路61は、処理回路71に対して、8バイト単位(64ビット単位)でデータを入力する。処理回路71は、調整回路61から入力されるデータに含まれる複数の画素データPDのそれぞれをラスタ順に1画素ずつ順番に出力する。
【0034】
処理回路71と調整回路62の間のデータバス幅はLバイトである。例えばL=6である。調整回路62は、処理回路71から出力される画像データを、当該画像データに含まれる不要な画素データPDを破棄して処理回路72に入力する。調整回路62は、処理回路71から必要な画素データPDが出力される場合には、当該画素データPDを処理回路72に入力し、処理回路71から不要な画素データPDが出力される場合には、当該不要な画素データPDを破棄して処理回路72に入力しない。調整回路62には、当該調整回路62が破棄すべき画素データPDを特定するための特定情報620が処理回路72から入力される。調整回路62は、特定情報620に基づいて、処理回路71から出力される画像データに含まれる不要な画素データPDを破棄する。調整回路62の動作は後で詳細に説明する。
【0035】
処理回路72は、調整回路62から入力される画像データに対して各種画像処理を行って、出力デバイスに応じた画像データを生成する。処理回路72は、GDU(Graphic Display Unit)コアと呼ばれることがある。
【0036】
処理回路72は、例えば、調整回路62から入力される画像データに対してガンマ補正及び拡大処理等を行う。そして、処理回路72は、処理後の画像データが示す画像を例えば他の画像と合成して、表示用画像を生成する。処理回路72は、表示用画像を示す表示用画像データに対してガンマ補正及びフォーマット変換等を行って、出力デバイスに応じた表示用画像データを生成する。そして、処理回路72は、生成した表示用画像データを出力デバイスに出力する。また処理回路72は、同期信号を生成して出力デバイスに出力する。出力デバイスは、処理回路72から入力される表示用画像データ及び同期信号に基づいて、当該表示用画像データが示す画像を表示する。
【0037】
CPU2は、上述の特定情報610,620を生成して処理回路72に入力する。処理回路72は、入力された特定情報610,620を図示しないレジスタに記憶する。そして、処理回路72は、特定情報610,620を、調整回路61及び調整回路62にそれぞれ入力する。
【0038】
<DMAコントローラ及び画像処理回路の動作の詳細>
出力デバイスは、メモリ4内の画像データ100が示す画像200の全体を表示するだけではなく、当該画像200の一部を表示することもある。例えば、出力デバイスにおいて、画像200が拡大されて表示されたり、画像200がスクロール表示されたりする場合には、出力デバイスでは、画像200の一部が表示される。そのため、処理回路72では、画像200全体を示す画像データ(画像データ100)が必要な場合もあれば、画像200の一部を示す画像データが必要な場合がある。以後、処理回路72で必要な画像データを「必要画像データ」と呼ぶことがある。また、必要画像データが示す画像、つまり処理回路72で必要な画像を「必要画像」と呼ぶことがある。また画像200を「撮像画像200」と呼び、画像データ100を「撮像画像データ100」と呼ぶことがある。
【0039】
一方で、DMAコントローラ3は、そのアライメント制約により、必要画像データだけをメモリ4から読み出すことができない可能性がある。以下にこの点について説明する。
【0040】
図5は必要画像210の一例を示す図である。
図5では、必要画像210に右上がりの斜線を示している。
図5には、撮像画像200の左側に、撮像画像200のラインの番号を示している。本例では、画像を構成する複数のラインに対して、例えば、最も上のラインから順に1番から始まる連続する正の整数を割り当てている。
図5の例では、必要画像210は、撮像画像200の1番目から5番目までの各ラインの一部を含んでいる。
【0041】
DMAコントローラ3は、16バイトアライメント制約により、メモリ4に対して、128ビットの倍数のアドレスしか指定することができない。言い換えれば、DMAコントローラ3は、16バイト単位でしかデータをメモリ4から読み出すことができない。したがって、必要画像210の各ラインの最初の画素(最も左の画素)の画素データPDの下位データPDLが、128ビットの倍数ではないアドレスに記憶されている場合には、当該画素データPDとともに、各ラインの最初の画素よりも左側の画素の画素データPDの少なくとも一部が読み出されることになる。
【0042】
また、必要画像210の各ラインの最後の画素(最も右の画素)の画素データPDの上位データPDUが、128ビットの倍数ではないアドレスに記憶されている場合には、各ラインの最後の画素の画素データPDとともに、各ラインの最後の画素よりも右側の画素の画素データPDの少なくとも一部が読み出されることになる。
【0043】
このように、DMAコントローラ3は、撮像画像データ100における、処理回路72で必要な画像データだけを、メモリ4から読み出すことができない場合がある。その結果、出力デバイスでは、必要画像以外の画像が表示される可能性がある。
【0044】
そこで、画像処理装置1では、DMAコントローラ3が、そのアライメント制約を守るように、必要画像データを含むデータをメモリ4から読み出す。つまり、DMAコントローラ3には、16バイトの倍数のデータが入力される。そして、画像処理回路6の調整回路61及び調整回路62が、DMAコントローラ3から読み出されたデータに含まれる不要データを破棄することによって、必要画像データだけを処理回路72に入力する。これにより、アライメント制約を有する回路、つまりDMAコントローラ3を変更することなく、必要画像データを得ることができる。以下に、DMAコントローラ3及び画像処理回路6の動作を詳細に説明する。
【0045】
図6は、撮像画像200における、
図5の必要画像210を含む部分についての複数のラインのデータ400を、そのアドレスの順に並べた様子を示す図である。
図6では、必要画像210の各ラインのデータ410に右上がりの斜線が示されている。また
図6では、撮像画像200のラインのデータ400の左上に、当該ラインの番号が示されている。以後、画像のラインのデータを「ラインデータ」と呼ぶことがある。また、データ400を「撮像ラインデータ400」と呼び、データ410を「必要ラインデータ410」と呼ぶことがある。
【0046】
DMAコントローラ3及び画像処理回路6は、必要画像210のラインごとに処理を行う。DMAコントローラ3は、必要画像210の各ラインについて、アライメント制約を守るように、必要ラインデータ410を含むデータ420をメモリ4から読み出す。
図6では、データ420に右下がりの斜線が示されている。以後、データ420を「ライン対応読み出しデータ420」と呼ぶことがある。
【0047】
ライン対応読み出しデータ420に対応する複数のアドレスは連続している。また、DMAコントローラ3のアライメント制約により、ライン対応読み出しデータ420の先頭アドレス(最も小さいアドレス)は128ビットの倍数となっており、ライン対応読み出しデータ420に対応する複数のアドレスの数は128ビットの倍数となっている。そして、ライン対応読み出しデータ420のデータ長は、16バイトの倍数となっている。
【0048】
必要画像210の複数の必要ラインデータ410の間では、必要ラインデータ410を含むライン対応読み出しデータ420の先頭アドレスと、当該必要ラインデータ410の先頭アドレスとの差分が一定となっている。また、必要画像210の複数の必要ラインデータ410の間では、必要ラインデータ410を含むライン対応読み出しデータ420の末尾アドレスと、当該必要ラインデータ410の末尾アドレスとの差分が一定となっている。したがって、必要画像210の複数の必要ラインデータ410をそれぞれ含む複数のライン対応読み出しデータ420の間では、ライン対応読み出しデータ420に対応する複数のアドレスの数が一定となっている。言い換えれば、当該複数のライン対応読み出しデータ420の間ではデータ長が一定となっている。
【0049】
ライン対応読み出しデータ420が必要ラインデータ410よりも長い場合には、
図6に示されるように、ライン対応読み出しデータ420に、必要ラインデータ410以外のデータ、つまり不要データ450が含まれる。この不要データ450は、調整回路61及び調整回路62で破棄される。これにより、必要ラインデータ410だけが処理回路72に入力される。つまり、必要画像210を示す画像データだけが処理回路72に入力される。ライン対応読み出しデータ420の先頭アドレスが、必要ラインデータ410の先頭アドレスよりも小さければ、
図6に示されるように、ライン対応読み出しデータ420には、必要ラインデータ410の先頭アドレスよりも小さいアドレスの不要データ450が含まれる。また、ライン対応読み出しデータ420の末尾アドレスが、必要ラインデータ410の末尾アドレスよりも大きければ、
図6に示されるように、ライン対応読み出しデータ420には、必要ラインデータ410の末尾アドレスよりも大きいアドレスの不要データ450が含まれる。
【0050】
図6の例では、ライン対応読み出しデータ420は、撮像ラインデータ400に含まれている。つまり、撮像ラインデータ400の一部がライン対応読み出しデータ420となっている。したがって、必要画像210を構成する複数のラインのデータ410をそれぞれ含む複数のライン対応読み出しデータ420をそれぞれラインデータとする画像データ(以後、「仮想画像データ」と呼ぶ)は、
図7に示される画像220を概ね示すようになる。画像220は、撮像画像200の一部であって、必要画像210を含んでいる。
図7では、画像220に右下がりの斜線が示されている。
【0051】
ただし、必要ラインデータ410の先頭アドレスのデータは、必ず、画素データPDの下位データPDLであるものの、ライン対応読み出しデータ420の先頭アドレスのデータは、DMAコントローラ3のアライメント制約により、画素データPDの下位データPDLであるとは限られない。同様に、必要ラインデータ410の末尾アドレスのデータは、必ず、画素データPDの上位データPDUであるものの、ライン対応読み出しデータ420の末尾アドレスのデータは、画素データPDの上位データPDUであるとは限られない。よって、ライン対応読み出しデータ420には、ある画素データPDに関して、一部のデータは含まれるものの、残りのデータが含まれないことがある。したがって、ライン対応読み出しデータ420が撮像ラインデータ400に含まれている場合であっても、ライン対応読み出しデータ420は、ある画素データPDのすべてを含んでおらず、当該ある画素データPDの画素を正しく示すことができない場合がある。その結果、複数のライン対応読み出しデータ420から成る仮想画像データは、撮像画像200の一部の画像を正しくは示すことができない場合がある。以後、必要画像210を構成する複数のラインのデータ410をそれぞれ含む複数のライン対応読み出しデータ420をまとめて「必要画像対応読み出しデータ」と呼ぶことがある。
【0052】
図6の例では、一つのライン対応読み出しデータ420が一つの撮像ラインデータ400に含まれている。しかしながら、必要画像210のラインの長さあるいは撮像画像200における必要画像210の相対的な位置によっては、一つのライン対応読み出しデータ420が複数の撮像ラインデータ400に渡って存在する可能性がある。
【0053】
例えば、必要ラインデータ410の末尾アドレスが、当該必要ラインデータ410を含む撮像ラインデータ400の末尾アドレスに近い場合を考える。この場合、
図8に示されるように、必要ラインデータ410を含むライン対応読み出しデータ420の末尾アドレスが、次の撮像ラインデータ400の複数のアドレスに含まれることがある。つまり、撮像ラインデータ400に含まれる必要ラインデータ410を含むライン対応読み出しデータ420の一部が、その次の撮像ラインデータ400に含まれることがある。また、必要ラインデータ410の先頭アドレスが、当該必要ラインデータ410を含む撮像ラインデータ400の先頭アドレスに近い場合を考える。この場合、必要ラインデータ410を含むライン対応読み出しデータ420の先頭アドレスが、前の撮像ラインデータ400の複数のアドレスに含まれることがある。つまり、撮像ラインデータ400に含まれる必要ラインデータ410を含むライン対応読み出しデータ420の一部が、その前の撮像ラインデータ400に含まれることがある。
【0054】
また、必要画像210の1番目のラインのデータ410の先頭アドレスが、撮像画像データ100の先頭アドレスに近い場合を考える。この場合、1番目のラインのデータ410を含むライン対応読み出しデータ420には、撮像画像データ100の先頭アドレスよりも小さいアドレスのデータ(撮像画像データ100以外のデータ)が含まれることがある。また、必要画像210の最後のライン(最も番号が大きいライン)のデータ410の末尾アドレスが、撮像画像データ100の末尾アドレスに近い場合を考える。この場合、最後のラインのデータ410を含むライン対応読み出しデータ420には、撮像画像データ100の末尾アドレスよりも大きいアドレスのデータ(画像データ100以外のデータ)が含まれることがある。
【0055】
また、必要画像210のラインの長さが大きい場合には、必要画像210のあるラインのデータ410を含むライン対応読み出しデータ420には、当該あるラインよりも前のラインのデータ410の一部と、当該あるラインよりも後のラインのデータ410の一部とが含まれることがある。
図9はその様子の一例を示す図である。
図9では、説明の便宜上、中央の撮像ラインデータ400に含まれる必要ラインデータ410及びそれを含むライン対応読み出しデータ420だけに斜線を示している。
【0056】
図9に示されるように、必要画像210のあるラインのデータ410を含むライン対応読み出しデータ420には、当該あるラインよりも前のラインのデータ410の一部410aと、当該あるラインよりも後のラインのデータ410の一部410bとが含まれている。このような場合であっても、
図9に示されるように、ライン対応読み出しデータ420に含まれる、それに対応する必要ラインデータ410以外のデータのすべてが不要データ450になる。つまり、ライン対応読み出しデータ420において、それに対応する必要ラインデータ410以外の必要ラインデータ410の一部のデータが含まれている場合であっても、当該ライン対応読み出しデータ420においては、当該一部のデータは不要データとして扱われる。
【0057】
以上のように、アライメント制約を有するDMAコントローラ3は、必要画像210のラインごとに、当該ラインのデータ410を含むライン対応読み出しデータ420を読み出す。そして、画像処理回路6は、必要画像210のラインごとに、読み出されたライン対応読み出しデータ420に含まれる不要データ450を破棄する。これにより、アライメント制約によりDMAコントローラ3がメモリ4から不要データを読み出す場合であっても、DMAコントローラ3よりも後段の回路において、当該不要データを破棄して、必要なデータだけを得ることができる。以下に、DMAコントローラ3及び画像処理回路6の動作をさらに詳細に説明する。
【0058】
<DMAコントローラの動作の詳細>
図10はDMAコントローラ3の動作の一例を説明するための図である。
図10では、
図6と同様に、撮像画像200における、必要画像210を含む部分についての各ラインのデータ400を、そのアドレスの順に並べた様子が示されている。
図10の例では、
図6と同様に、撮像ラインデータ400の一部がライン対応読み出しデータ420となっている。
【0059】
DMAコントローラ3は、必要画像データを構成する複数の必要ラインデータ410をそれぞれ含む複数のライン対応読み出しデータ420を、矢印500が示すように、その先頭アドレスが小さいものから順にメモリ4から読み出す。言い換えれば、DMAコントローラ3は、必要画像対応読み出しデータを構成する複数のライン対応読み出しデータ420を、それが含む必要ラインデータ410に対応するラインが上側に位置するものから順にメモリ4から読み出す。さらに、DMAコントローラ3は、各ライン対応読み出しデータ420を、16バイト単位で、アドレスが小さいものから順に読み出す。DMAコントローラ3は、CPU2で生成される特定情報300に基づいて、複数のライン対応読み出しデータ420を上記のようにしてメモリ4から読み出す。DMAコントローラ3は、複数のライン対応読み出しデータ420を、メモリ4から読み出した順に調整回路61に入力する。
【0060】
メモリ4における、必要画像対応読み出しデータが記憶されている記憶領域を特定するための特定情報300には、
図10に示される、開始アドレスSTA、終了アドレスENA、連続転送サイズRPT及びジャンプサイズOFSが含まれている。開始アドレスSTAは、必要画像210の最も上のライン(最初のライン)のデータ410を含むライン対応読み出しデータ420の先頭アドレスである。終了アドレスENAは、必要画像210の最も下のライン(最後のライン)のデータ410を含むライン対応読み出しデータ420の末尾アドレスである。連続転送サイズRPTは、ライン対応読み出しデータ420のデータ長である。ジャンプサイズOFSは、必要画像210において連続する2つのラインのデータ410をそれぞれ含む2つのライン対応読み出しデータ420の先頭アドレスの差分を示す。ジャンプサイズOFSは、ライン対応読み出しデータ420の先頭アドレスから、その前に読み出すライン対応読み出しデータ420の先頭アドレスを差し引いた値である。ジャンプサイズOFSは、ライン対応読み出しデータ420の先頭アドレスから、その後に読み出すライン対応読み出しデータ420の先頭アドレスがどの程度離れているかを示している。DMAコントローラ3の16バイトアライメント制約により、開始アドレスSTA、終了アドレスENA、連続転送サイズRPT及びジャンプサイズOFSのそれぞれは、128ビットの倍数に設定される。
【0061】
CPU2は、メモリ4において、必要画像210が記憶されている領域を特定するための必要画像特定情報と、DMAコントローラ3のアライメント制約と、画素データPDのデータ長とに基づいて、開始アドレスSTA及び連続転送サイズRPTを決定する。そして、CPU2は、決定した開始アドレスSTA及び連続転送サイズRPTと、撮像ラインデータ400のデータ長と、必要画像特定情報とに基づいて、終了アドレスENA及びジャンプサイズOFSを決定する。ジャンプサイズOFSは、撮像ラインデータ400のデータ長と一致する。必要画像特定情報には、例えば、必要画像210の最も上のラインの最も左側の画素の画素データPDの下位データPDLが記憶されている領域のアドレス(必要画像210の最も上のラインのデータ410の先頭アドレス)と、必要ラインデータ410のデータ長と、必要画像210のライン数とが含まれている。必要画像210は、出力デバイスが表示する画像等に応じて変化する。CPU2は、必要画像210に応じて必要画像特定情報を生成する。必要画像特定情報は、必要画像210に関する情報であると言える。なお、開始アドレスSTA及び連続転送サイズRPTの決定方法については後で詳細に説明する。
【0062】
<画像処理回路の動作の詳細>
図11は画像処理回路6の動作を説明するための図である。
図11には、1つのライン対応読み出しデータ420が示されている。ライン対応読み出しデータ420には、それに含まれる必要ラインデータ410の先頭アドレスよりも小さいアドレスの左側不要データ450Lと、当該必要ラインデータ410の末尾アドレスよりも大きいアドレスの右側不要データ450Rとが含まれる。
【0063】
調整回路61は、ライン対応読み出しデータ420が入力されるたびに、ライン対応読み出しデータ420に含まれる左側不要データ450Lを破棄する。さらに、調整回路61は、ライン対応読み出しデータ420が入力されるたびに、ライン対応読み出しデータ420に含まれる右側不要データ450Rの一部のデータ450R1を破棄する。このデータ450R1を「第1右側不要データ450R1」と呼ぶ。また、右側不要データ450Rのうち、第1右側不要データ450R1以外のデータを「第2右側不要データ450R2」と呼ぶ。
【0064】
第2右側不要データ450R2の先頭アドレスは、右側不要データ450Rの先頭アドレスと一致する。第1右側不要データ450R1の末尾アドレスは、右側不要データ450Rの末尾アドレスと一致する。第2右側不要データ450R2の末尾アドレスの次のアドレスが、第1右側不要データ450R1の先頭アドレスとなる。調整回路61は、ライン対応読み出しデータ420が入力されるたびに、入力されるライン対応読み出しデータ420を、それに含まれる左側不要データ450L及び第1右側不要データ450R1を破棄した上で処理回路71に入力する。
【0065】
調整回路61は、処理回路72から入力される特定情報610に基づいて、左側不要データ450L及び第1右側不要データ450R1を特定する。特定情報610には、左側不要データ450Lのデータ長DL1(以後、「左側不要データ長DL1」と呼ぶ)と、第1右側不要データ450R1のデータ長DL2(以後、「第1右側不要データ長DL2」と呼ぶ)とが含まれている。調整回路61は、ライン対応読み出しデータ420において、その先頭アドレスのデータからアドレスが大きくなる方向に向かって左側不要データ長DL1分だけの部分を、左側不要データ450Lとして破棄する。また調整回路61は、ライン対応読み出しデータ420において、その末尾アドレスのデータからアドレスが小さくなる方向に向かって第1右側不要データ長DL2分だけの部分を、第1右側不要データ450R1として破棄する。
【0066】
以後、処理回路71に入力される、調整回路61において不要データが破棄されたライン対応読み出しデータ420を、「第1入力データ460」と呼ぶ。本例では、第1入力データ460は、左側不要データ450L及び第1右側不要データ450R1が破棄されたライン対応読み出しデータ420である。調整回路61は、ライン対応読み出しデータ420が入力されるたびに、入力されるライン対応読み出しデータ420に基づいて第1入力データ460を生成して処理回路71に入力する。ライン対応読み出しデータ420に基づいて生成される第1入力データ460は、当該ライン対応読み出しデータ420に含まれる必要ラインデータ410及び第2右側不要データ450R2で構成される。
【0067】
処理回路71は、第1入力データ460が入力されるたびに、入力される第1入力データ460に含まれる複数の画素データPDをアドレスが小さいものから順に1画素ずつ出力する。
【0068】
ここで、上述のように、処理回路71は、8バイトアライメント制約を有する。このため、処理回路71にラインごとに入力される第1入力データ460のデータ長は、8バイトの倍数である必要がある。さらに、処理回路71が、1画素ずつ画素データPDを出力するためには、第1入力データ460に、ある画素データPDの一部のデータだけが含まれるようなことがあってはならない。
【0069】
そこで、第1入力データ460に含まれる第2右側不要データ450R2のデータ長は、当該第1入力データ460のデータ長が8バイトの倍数となり、かつ当該第1入力データ460に画素データPDの一部のデータだけが含まれるようなことがないような値に設定される。これにより、処理回路71の8バイトアライメント制約を守ることができるととともに、処理回路71は1画素ごとに画素データPDを出力することができる。16バイトアライメント制約を有する処理回路であるDMAコントローラ3には、16バイトの倍数のデータ長を有するライン対応読み出しデータ420が入力されるのに対して、8バイトアライメント制約を有する処理回路71には、8バイトの倍数のデータ長を有する第1入力データ460が入力される。
【0070】
処理回路71は、第1入力データ460に対して、当該第1入力データ460を構成する複数の画素データPDを1画素ずつ順に出力する処理を行っている。したがって、処理回路71に入力される第1入力データ460は、入力形態及び出力形態が互いに異なるものの、データの内容としてはそのまま処理回路71から出力されると言える。つまり、処理回路71からは、第1入力データ460が出力されると言える。
【0071】
なお、必要ラインデータ410の末尾アドレスのデータは、画素データPDの上位データPDUとなり、当該必要ラインデータ410に続く第2右側不要データ450R2の先頭アドレスのデータは、画素データPDの下位データPDLとなる。そして、第2右側不要データ450R2の末尾アドレスのデータは、画素データPDの上位データPDUとなる。第2右側不要データ450R2のデータ長は、画素データPDのデータ長、つまり3バイトの倍数となっている。
【0072】
調整回路62は、処理回路71から第1入力データ460が入力されるたびに、入力される第1入力データ460を、それに含まれる第2右側不要データ450R2を破棄した上で処理回路72に入力する。調整回路62は、処理回路71から、第2右側不要データ450R2に含まれる不要な画素データPDが出力されると、当該不要な画素データPDを破棄する。一方で、調整回路62は、処理回路71から、必要ラインデータ410に含まれる必要な画素データPDが出力されると、当該必要な画素データPDを処理回路72に入力する。これにより、処理回路72には、必要ラインデータ410のみが入力される。よって、処理回路72は、必要画像データのみを受け取ることができる。上述のように、処理回路71は、入力される複数の画素データPDをアドレスが小さいものから順に1画素ずつ出力することから、調整回路62は、必要画像データを構成する複数の画素データPDを、ラスタ順に1画素ずつ処理回路72に出力する。
【0073】
調整回路62は、処理回路72から入力される特定情報620に基づいて、第2右側不要データ450R2を特定する。特定情報620には、第2右側不要データ450R2を構成する複数の画素データPDの数PDN(以後、「不要画素データ数PDN」と呼ぶ)が含まれている。調整回路62は、処理回路71から出力される第1入力データ460を構成する複数の画素データPDにおいて、アドレスが最も大きい画素データPDからアドレスが小さくなる方向に向かって不要画素データ数PDN分の画素データPDを、第2右側不要データ450R2として破棄する。
【0074】
<開始アドレス等の決定方法>
次に、CPU2が、特定情報300に含まれる開始アドレスSTA及び連続転送サイズRPTと、特定情報610に含まれる左側不要データ長DL1及び第1右側不要データ長DL2と、特定情報620に含まれる不要画素データ数PDNとを決定する方法について説明する。以後、開始アドレスSTA、連続転送サイズRPT、左側不要データ長DL1、第1右側不要データ長DL2及び不要画素データ数PDNをまとめて「対象情報」と呼ぶことがある。
【0075】
CPU2は、必要画像特定情報と、DMAコントローラ3及び処理回路71のアライメント制約と、画素データPDのデータ長とに基づいて、対象情報を決定する。以下に登場する式中の各値(ただし、不要画素データ数PDNを除く)の単位は特に断らない限り「バイト」である。
【0076】
CPU2は、まず第1入力データ460のデータ長DL3(
図11参照)を以下の式(1)で求める。
【0078】
式(1)中のDL4(
図11参照)は、必要画像特定情報に含まれる、必要ラインデータ410のデータ長を示している。また式(1)中のM_Kは、処理回路71のMバイトのアライメント制約のMと、画素データPDのデータ長であるKバイトのKとの最小公倍数を示している。そして、式(1)中の[a]は、aの小数点以下を切り捨てた値(整数)を返す関数である。以下の式中の[a]も同様である。式(1)では、必要ラインデータ410のデータ長DL4以上であり、かつMの倍数であり、かつKの倍数である値のうちの最小の値が、第1入力データ460のデータ長DL3となっている。
【0079】
次にCPU2は、不要画素データ数PDN(
図11参照)を以下の式(2)で求める。
【0081】
またCPU2は、開始アドレスSTA(
図10参照)を以下の式(3)で求める。
【0083】
式(3)中のADRは、必要画像210の最も上のラインのデータ410の先頭アドレスを示している。先頭アドレスADRは必要画像特定情報に含まれる。式(3)では、必要画像210の最も上のラインのデータ410の先頭アドレスADR以下であり、かつNの倍数である値のうちの最大の値が、開始アドレスSTAとなっている。
【0084】
次にCPU2は、左側不要データ長DL1(
図11)を以下の式(4)で求める。
【0086】
次にCPU2は、連続転送サイズRPT(
図10,11参照)を以下の式(5)で求める。
【0088】
式(5)では、左側不要データ長DL1と第1入力データ460のデータ長DL3を足し合わせた値以上であり、かつNの倍数である値のうちの最小の値が、連続転送サイズRPTとなっている。
【0089】
そしてCPU2は、第1右側不要データ長DL2(
図11参照)を以下の式(6)で求める。
【0091】
例えば、N=16、M=8、K=3、ADR=123であるとする。そして、必要ラインデータ410が100個の画素データPDで構成され、DL4=300であるとする。この場合、DL3=312、PDN=4、STA=112、DL1=11、RPT=336、DL2=13となる。
【0092】
以上のようにして、CPU2は、対象情報を決定すると、開始アドレスSTA及び連続転送サイズRPTを含む特定情報300をDMAコントローラ3に入力する。またCPU2は、左側不要データ長DL1及び第1右側不要データ長DL2を含む特定情報610と、不要画素データ数PDNを含む特定情報620とを処理回路72に入力する。処理回路72は、入力される特定情報610,620を調整回路61及び調整回路62にそれぞれ入力する。CPU2は、必要画像210に応じて、開始アドレスSTA、連続転送サイズRPT、左側不要データ長DL1、第1右側不要データ長DL2及び不要画素データ数PDNを決定する。CPU2は、DMAコントローラ3のNバイトのアライメント制約と、処理回路71のMバイトのアライメント制約と、必要画像特定情報とに基づいて、ライン対応読み出しデータ420と、調整回路61及び調整回路62が破棄するデータとを決定する決定回路として機能すると言える。
【0093】
なお、開始アドレスSTA、連続転送サイズRPT、左側不要データ長DL1、第1右側不要データ長DL2及び不要画素データ数PDNの少なくとも一つは、処理回路72で決定されてもよい。これらの情報のすべてが処理回路72で決定される場合には、処理回路72が、ライン対応読み出しデータ420と、調整回路61及び調整回路62が破棄するデータとを決定する決定回路として機能する。また、これらの情報のうちの一部だけが処理回路72で決定される場合には、CPU2及び処理回路72が、ライン対応読み出しデータ420と、調整回路61及び調整回路62が破棄するデータとを決定する決定回路として機能する。
【0094】
また、処理回路71が行う処理は上記以外の処理であってもよいし、処理回路72が行う処理は上記以外の処理であってもよい。
【0095】
また、処理回路71と調整回路61との間のデータバス幅が1バイトであってもよい。つまり、処理回路71は、アライメント制約を有していなくてもよい。この場合には、調整回路61は、画像処理装置1で扱われる最小のデータ単位である1バイトの単位で、処理回路71にデータが入力をすることができる、そのため、第1入力データ460のデータ長DL3についての上記のような制約がなくなる。よって、調整回路61は、DMAコントローラ3からのライン対応読み出しデータ420を、それに含まれる不要データをすべて破棄した上で、出力することができる。その結果、調整回路62が不要となる。
【0096】
また上記の例では、撮像画像200において連続する複数のラインのそれぞれの一部を含む画像が必要画像210とされていたが(
図7参照)、必要画像210はこの限りではない。例えば、撮像画像200において連続する複数のラインのそれぞれのすべてを含む画像が必要画像210とされてもよい。また、撮像画像200において1ライン飛ばしの複数のラインのそれぞれの少なくとも一部を含む画像が必要画像210とされてもよい。また、撮像画像200において2ライン飛ばしの複数のラインのそれぞれの少なくとも一部を含む画像が必要画像210とされてもよい。
【0097】
また上記の例では、DMAコントローラ3のアライメント制約のバイト数Nと、処理回路71のアライメント制約のバイト数Mとの関係がN>Mであったが、N=Mであってもよいし、N<Mであってもよい。また、NとMとLとの関係は上記の例には限られない。
【0098】
また上記の例では、画像処理装置1には、アライメント制約を有する1つの処理回路(処理回路71)が設けられていたが、アライメント制約を有する複数の処理回路が設けられてもよい。この場合には、アライメント制約を有する複数の処理回路のそれぞれの前段に調整回路が設けられる。各調整回路は、入力されるデータを、後段の処理回路のアライメント制約を満たすように、それに含まれる不要データを破棄して後段の処理回路に入力する。例えば、処理回路72がアライメント制約を有する場合には、調整回路62は、入力されるデータを、処理回路72のアライメント制約を満たすように、それに含まれる不要データを破棄して処理回路72に入力する。
【0099】
また、DMAコントローラ3の代わりに、DMAコントローラ以外の、アライメント制約を有する処理回路が設けられてもよい。
【0100】
以上のように、画像処理装置1では、調整回路61が、必要画像210の1ラインごとに、ライン対応読み出しデータ420に含まれる不要データを破棄して、当該不要データが破棄されたライン対応読み出しデータ420である第1入力データ460を処理回路71に入力する。したがって、処理回路71の前段に位置する、アライメント制約を有するDMAコントローラ3が不要データを出力する場合に、DMAコントローラ3と処理回路71の間に位置する調整回路61で当該不要データを破棄することができる。よって、必要画像データを処理する処理回路71に不要データが入力されることを防止することができる。
【0101】
さらに、DMAコントローラ3がメモリ4から読み出したライン対応読み出しデータ420から不要データが破棄されることから、DMAコントローラ3を変更することなく、後段の処理回路に不要データが入力されることを防止することができる。よって、画像処理装置1が搭載されるシステム全体での効率を考慮して、DMAコントローラ3のアライメント制約を決定することができる。その結果、システム全体の効率を向上することができる。また、CPU2とは別の調整回路61がライン対応読み出しデータ420から不要データを破棄することから、CPU2の負荷の増加を抑制することができる。また、メモリ4から必要画像データだけを読み出すためにDMAコントローラ3を変更してそのアライメント制約を無くす場合よりも、画像処理回路6に対して調整回路61及び調整回路62を追加する場合の方が、画像処理装置1の開発工数を低減することができる。また、メモリ4から読み出されるライン対応読み出しデータ420を変更することによって、DMAコントローラ3のアラインメント制約の変更にも容易に対応することができる。
【0102】
また、画像処理装置1では、調整回路62が、1ラインごとに、第1入力データ460を、それに含まれる不要データを破棄して処理回路72に入力する。したがって、処理回路72の前段に位置する、アライメント制約を有する処理回路71が不要データを出力する場合に、処理回路71と処理回路72の間に位置する調整回路62が当該不要データを破棄することができる。よって、アライメント制約を有する処理回路71を変更することなく、必要画像データを処理する処理回路72に不要データが入力されることを防止することができる。
【0103】
また、画像処理装置1には、DMAコントローラ3が読み出すライン対応読み出しデータ420と、調整回路61及び調整回路62が破棄するデータとを決定する決定回路(例えばCPU2)が設けられている。したがって、必要画像210が変更される場合であっても、必要画像210に応じた、ライン対応読み出しデータ420及びそれに含まれる不要データを決定回路で自動的に決定することができる。よって、必要画像210の変更にも容易に対応することができる。
【0104】
また、調整回路61は、Mバイトのアライメント制約を有する処理回路71に入力される第1入力データ460のデータ長が、当該Mバイトの倍数となるように、ライン対応読み出しデータ420に含まれる不要データを破棄する。したがって、ライン対応読み出しデータ420に含まれる不要データを破棄することができるとともに、処理回路71のアライメント制約を満たしたデータを当該処理回路71に入力することができる。
【0105】
なお上記の例では、調整回路62は、必要画像210を示す必要画像データを構成する複数の画素データPDを、
図12に示されるようなラスタ順に1画素ずつ出力している。しかしながら、調整回路62が、当該複数の画素データPDを、
図13に示されるような逆ラスタ順に1画素ずつ出力できるように画像処理装置1を動作させてもよい。これにより、出力デバイスは、必要画像210の鏡像を表示することができる。以下にこの場合の画像処理装置1の動作について説明する。
【0106】
DMAコントローラ3は、上記と同様に、複数のライン対応読み出しデータ420を、その先頭アドレスが小さいもの順に読み出す。一方で、DMAコントローラ3は、各ライン対応読み出しデータ420については、
図14の矢印510が示すように、16バイト単位でアドレスが大きいものから順に読み出す。
図14には、必要画像210の最も上のラインのデータ410を含むライン対応読み出しデータ420が示されている。
【0107】
また、調整回路61は、ライン対応読み出しデータ420から、右側不要データ451Rと、左側不要データ451Lに含まれる第1左側不要データ451L1とを破棄する。そして、調整回路62は、第1入力データ460から、左側不要データ451Lに含まれる第2左側不要データ451L2を破棄する。
【0108】
第1左側不要データ451L1の先頭アドレスは、左側不要データ451Lの先頭アドレスと一致する。第2左側不要データ451L2の末尾アドレスは、左側不要データ451Lの末尾アドレスと一致する。第1左側不要データ451L1の末尾アドレスの次のアドレスが、第2左側不要データ451L2の先頭アドレスとなる。右側不要データ451Rの末尾アドレスは、ライン対応読み出しデータ420の末尾アドレスと一致する。
【0109】
処理回路71は、入力される第1入力データ460を構成する複数の画素データPDをアドレスが大きいものから順に1画素ずつ出力する。調整回路62は、第1入力データ460から第2左側不要データ451L2を破棄し、それによって得られる必要ラインデータ410を構成する複数の画素データPDをアドレスが大きいものから順に1画素ずつ出力する。これにより、調整回路62は、必要画像データを構成する複数の画素データPDを、逆ラスタ順に1画素ずつ出力する。
【0110】
図14に示される第1入力データ460のデータ長DL3は、上記の式(1)を用いて求めることができる。第2左側不要データ451L2を構成する不要な複数の画素データPDの数PDN1は、上記の不要画素データ数PDNと同様にして求めることができる(式(2)参照)。CPU2は、右側不要データ451Rのデータ長DL5(以後、「右側不要データ長DL5」と呼ぶ)を求めるために、必要画像210の最も上のラインのデータ410を含むライン対応読み出しデータ420の末尾アドレスである開始アドレスSTA1(
図14参照)を以下の式(7)で求める。
【0112】
式(7)中のADR1は、必要画像210の最も上のラインのデータ410の末尾アドレス(
図14参照)を示す。
【0113】
CPU2は、式(7)で求めた開始アドレスSTA1を用いて右側不要データ長DL5を以下の式(8)で求める。
【0115】
次にCPU2は、本例での連続転送サイズRPT1を以下の式(9)で求める。
【0117】
そして、CPU2は、第1左側不要データ451L1のデータ長DL6を以下の式(10)で求める。
【0119】
CPU2は、必要画像データを構成する複数の画素データPDが、処理回路72に対してラスタ順に入力される第1動作モードで画像処理装置1が動作するか、当該複数の画素データPDが、処理回路72に対して逆ラスタ順に入力される第2動作モードで画像処理装置1が動作するか決定する。そして、CPU2は、DMAコントローラ3及び画像処理回路6が、決定した動作モードに応じた処理を行うように、DMAコントローラ3及び画像処理回路6を制御する。これにより、出力デバイスは、必要画像210をそのまま表示したり、必要画像210の鏡像を表示したりすることができる。
【0120】
なお上記の例では、画像処理装置1は、デジタルスチルカメラに搭載されていたが、それ以外の装置に搭載されてもよい。例えば、画像処理装置1は、OA(Office Automation)機器(コピー機、インテリジェント複合機、プロジェクターなど)に搭載されてもよい。また画像処理装置1は、エンタテイメント機器(パチンコ機等の遊技機、ゲームセンター等に設けられるゲーム機、個人ユースのゲーム機など)に搭載されてもよい。また画像処理装置1は、医療用機器(医療用モニターなど)に搭載されてもよい。また画像処理装置1は、教育用途の電子機器(タブレット、電子黒板など)に搭載されてもよい。
【0121】
以上のように、画像処理装置1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。