JP2020195038A - 画像処理装置、画像処理方法、およびプログラム - Google Patents
画像処理装置、画像処理方法、およびプログラム Download PDFInfo
- Publication number
- JP2020195038A JP2020195038A JP2019098734A JP2019098734A JP2020195038A JP 2020195038 A JP2020195038 A JP 2020195038A JP 2019098734 A JP2019098734 A JP 2019098734A JP 2019098734 A JP2019098734 A JP 2019098734A JP 2020195038 A JP2020195038 A JP 2020195038A
- Authority
- JP
- Japan
- Prior art keywords
- image data
- memory
- pixels
- image
- image processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】走査方式の変換とメモリアクセスに使用するメモリのメモリ容量を低減する画像処理装置を提供する。【解決手段】画像処理装置において、圧縮部は、画像処理が行われる第一の画像データ及び当該第一の画像データを圧縮処理した第二の画像データを保持する圧縮部共有バッファ1031と、圧縮部共有バッファ1031から第一の画像データを取得し、前記画像処理のときと異なる走査方式で圧縮処理を実行して第二の画像データを生成する圧縮処理部1032と、圧縮部共有バッファ1031への第一及び第二の画像データの書き込み及び読み出しを制御する圧縮制御部1033とを有する。圧縮制御部1033は、第一の画像データを所定のタイミングで圧縮部共有バッファ1031から読み出して圧縮処理部1032に出力することで、圧縮部共有バッファ1031にて第一及び第二の画像データが上書きされないよう制御する。【選択図】図2
Description
本発明は、画像処理装置、画像処理方法、およびプログラムに関し、特に、メモリ帯域平準化時のメモリ容量削減手法に関する。
テレビやプロジェクタなどの画像処理装置において、入力映像の高解像度化が進んでおり、例えば、4K2K(水平4,096×垂直2,160など)や8K4K(水平7,680×垂直4,320など)といった、高解像度規格に対応した機器がある。これに伴い、入力映像のフレームメモリへの格納に要するメモリ帯域は、4K2KではFull−HD(水平1,920×垂直1,080)の約4倍、8K4Kでは約16倍に増大している。また、高フレームレート表示や超解像処理などの複数フレームを参照する画像処理、画像処理で扱う画素のビット数の増加により、必要となるメモリ帯域はますます増大している。
フレームメモリに画像を格納する際に画像を圧縮し、フレームメモリから圧縮画像を読み出しする際に伸長することで転送量を削減するメモリ帯域削減手法がある。特許文献1には、入力画像をブロック単位に分割し圧縮した圧縮データをフレームメモリに格納し、フレームメモリから圧縮データを読出し伸長してブロック単位の画像データを復元している。そして、復元したブロック単位の画像データに対し、画像処理を実施する技術が記載されている。
特許文献1の技術では、画像処理時に画像データを1画素ずつ処理するのに対して、圧縮処理時に画像データを複数画素×複数画素で構成されるブロック単位で処理している。画像処理時と圧縮処理時とで走査方式が異なり、圧縮処理時に、画像処理時の走査方式から圧縮処理時の走査方式への変換を実施している。また、特許文献1の技術では、圧縮処理時と同様、伸長処理時に圧縮処理時の走査方式から画像処理時の走査方式への変換を実施している。使用するメモリのメモリ容量の低減に対する要望が高まっているが、特許文献1の技術では、このような要望に応えられない可能性があった。すなわち、特許文献1の技術では、走査方式変換用のメモリと、圧縮処理後の画像データをフレームメモリに格納する際のメモリアクセスを平準化するためのメモリとを個別に有する構成となっている。そのため、特許文献1の技術では、使用するメモリのメモリ容量の低減を十分に果たせない可能性があった。上述の課題は、圧縮処理時のみならず、伸長処理時にも同様に起きる。
本発明は、走査方式の変換とメモリアクセスに使用するメモリのメモリ容量を低減することを目的とする。
本発明の一態様に係る画像処理装置は、画像処理が行われる第一の画像データ及び当該第一の画像データを圧縮処理した第二の画像データを保持する第一のメモリと、前記第一のメモリから前記第一の画像データを取得し、前記画像処理のときと異なる走査方式で圧縮処理を実行して第二の画像データを生成する生成手段と、前記第一のメモリへの前記第一及び第二の画像データの書き込み及び読み出しを制御する制御手段と、を有し、前記制御手段は、前記第一の画像データを所定のタイミングで前記第一のメモリから読み出して前記生成手段に出力することで、前記第一のメモリにて前記第一及び第二の画像データが上書きされないよう制御することを特徴とする。
本発明によれば、走査方式の変換とメモリアクセスに使用するメモリのメモリ容量を低減することができる。
本発明の説明に先立ち、ブロックスキャンで圧縮処理を実施する際の、画像入力時から画像圧縮時への方式変換と圧縮処理について説明する。
一例として、幅Winの画像をラスタースキャンで画像処理し、幅Bw×高さBh(Bw、Bhは自然数)のブロックスキャンで圧縮処理を実施する際の、方式変換と圧縮処理を説明する。圧縮部が十分なスループットを持ち、圧縮に必要な画素群を1サイクルで入力する構成の場合、方式変換バッファはWin×(Bh−1)分のラインの画素を蓄積した後、BhラインのBw×1画素分の画素が入力された時点で圧縮部にブロック画像を出力する。また、以後BhラインのBwサイクル毎に圧縮処理を実行する。よって、方式変換バッファは[Win×(Bh−1)+Bw×1]画素を蓄積できる必要がある。このバッファ構成の場合、Bhの定数倍期間に圧縮処理が集中実行され、圧縮結果をメモリに転送する。その結果、メモリアクセスはN×Bh(Nは自然数)ラインが入力されている期間に集中し、それ以外の期間ではメモリアクセスが発行されないため、転送時のピーク帯域が高いという課題がある。この課題を回避する為に、一般に以下の2つの手法が考えられる。
第一の手法として、特許文献1に示される通り、圧縮部とメモリ転送部間にバッファを配し、転送を分散させるよう転送タイミングを制御する手法が挙げられる。上記バッファに圧縮部から集中出力される圧縮結果を蓄積し、平均的にメモリへの転送を発行させる。これにより、Bhの定数倍期間のメモリアクセスの集中を排し、ピーク帯域を下げることが可能となる。一方で、メモリアクセスを平均化するためのバッファが増加する課題がある。
第二の手法として、圧縮処理を平均的に実施する手法が挙げられる。この手法では、Win×Bh期間内で平均的に圧縮処理を実施するよう、走査変換バッファから圧縮部への出力を分散実施する。これにより、圧縮部から平均的に圧縮結果が出力され、メモリアクセスの集中を排すことが可能となる。一方で、スループットを保つためには方式変換に要するバッファをダブルバッファ構成にして書込み側と読出し側とを切り替える構成とする必要があり、特許文献1の手法と比較してバッファ容量がさらに増大する課題がある。
以下、本発明を実施するための形態について図面を用いて説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらに限定する趣旨のものではない。また、実施形態で説明されている構成要素の組み合わせのすべてが、課題を解決するための手段に必須のものとは限らず、種々の変形及び変更が可能である。
<実施形態>
●映像処理回路の構成
以下、本実施形態に係る画像処理装置を構成する映像処理回路の構成に関して説明する。図1は、本実施形態の映像処理回路10の概略構成例を示すブロック図である。映像処理回路(画像処理装置)10は、入力部101、画像処理部102A、102B、圧縮部103A、103B、伸長部104A、104B、バス105、メモリ106、出力部108を有する。圧縮部103A、103Bは、バス105へデータを出力可能にバス105と接続されている。伸長部104A、104Bは、バス105からデータを入力可能にバス105と接続されている。メモリ106は、データを入出力可能にバス105と接続されている。映像処理回路10に入力された映像信号は、まず入力部101に入力される。
●映像処理回路の構成
以下、本実施形態に係る画像処理装置を構成する映像処理回路の構成に関して説明する。図1は、本実施形態の映像処理回路10の概略構成例を示すブロック図である。映像処理回路(画像処理装置)10は、入力部101、画像処理部102A、102B、圧縮部103A、103B、伸長部104A、104B、バス105、メモリ106、出力部108を有する。圧縮部103A、103Bは、バス105へデータを出力可能にバス105と接続されている。伸長部104A、104Bは、バス105からデータを入力可能にバス105と接続されている。メモリ106は、データを入出力可能にバス105と接続されている。映像処理回路10に入力された映像信号は、まず入力部101に入力される。
入力部101は、例えば映像再生装置や撮像装置などの映像処理回路10の外部の機器から入力された映像信号を受け付ける映像インターフェイスである。映像インターフェイスは、例えば、DVIやHDMI(登録商標)、D−subなどである。DVIは、Digital Visual Interfaceの略である。HDMIは、High−Definition Multimedia Interfaceの略である。D−subは、D−subminiatureの略である。入力部101は、映像信号から抽出した画像信号が示す画像を画像処理部102Aに出力する。入力部101は、映像信号から抽出した同期信号を同期制御部107へ出力する。また、入力部101は、インターネットなどのネットワークを介して送信されるMPEG(Moving Picture Experts Group)などの圧縮データを受けてデコードし、映像を構成する複数フレームの画像を出力する構成としてもよい。もしくは、入力部101は、DVDなどの記録メディアの映像を読出し、映像を構成する複数フレームの画像を出力する構成としてもよい。ここでは、入力部101の出力走査方式をラスタースキャンとして説明する。
画像処理部102A、102Bは、入力部101から入力された画像に対し、メモリ106を用いる所定の画像処理を実施する。画像処理としては、例えば、IP(Interlace−Progressive)変換や解像度変換、フレームレート変換、幾何変形処理、オーバードライブなどの処理が挙げられる。
画像処理部102A、102Bは、メモリ106に格納する画像を圧縮部103に出力する。また、画像処理部102A、102Bは、メモリ106から読出した画像を伸長部104から受取り、画像処理を実施した後、画像処理後の画像を出力部108に出力する。
映像処理装置10では、複数種のメモリ106を使用する画像処理部を搭載することが多いため、図1には、画像処理部102Aと102Bの2つの画像処理を搭載した例を図示している。例えば、入力映像がFull−HD 60i(iはインターレースを示す)であり、出力映像がFull−HD 120p(pはプログレッシブを示す)である映像処理装置を構成するとする。このような映像が映像処理装置10に対して入出力する場合、画像処理部102Aで、インターレース信号をプログレッシブ信号に変換するIP変換処理を実施し、画像処理部102Bでフレームレートを変換する処理を実施する。このような処理を映像処理装置10で実施する場合、同期制御部107は、画像処理部102Aに60Hzの垂直同期信号を提供し、画像処理部102Bには120Hzの垂直同期信号を提供する。画像処理部102A、102Bはそれぞれ、同期信号に従いメモリ106から圧縮データの読出しを実行する。
画像処理部102Aは、入力された画像に対してメモリ106を用いた前述の画像処理を実施し、処理結果を画像処理部102Bへ出力する。画像処理部102Bは、画像処理部102Aから入力された画像処理部102Aの処理結果に対してメモリ106を用いた前述の画像処理を実施し、処理結果を出力部108に出力する。
画像処理部102A、102Bは、実施する処理によっては複数フレームの画像を参照する画像処理を実施することがある。例えば、画像処理部102がフレームレート変換を実施する場合、フレームFn、Fn+1の2枚を参照し、中間のFn+0.5を生成する。この中間のFn+0.5を生成する場合、伸長部104A、104Bをそれぞれ対応する画像処理部102A、102Bとバス105の間にて複数接続し、複数フレームの画像を読出す構成とし、画像処理を実施するよう構成することも可能である。
圧縮部103A、103Bは、画像処理部102A、102Bから入力される画像データに対し、所定の方式にて圧縮処理を実施し、バス105を介して圧縮結果をメモリ106に格納する。圧縮部103A、103Bの圧縮方式は、上述した入力部101の出力走査方式と異なる。例えば、圧縮部103への画像データの入力がラスタースキャンである場合、圧縮部103A、103Bは、例えばJPEG(Joint Photographic Experts Group)等のブロック圧縮方式を用いることが可能である。圧縮方式に関しては、可逆圧縮、非可逆圧縮の何れの手法を用いてもよい。また、可変長圧縮、固定長圧縮の何れの手法を用いてもよい。
メモリ106は、画像処理部102A、102Bで使用する圧縮画像を一時保持するフレームメモリである。メモリ106として、例えばDRAM(Dynamic Random Access Memory)などの各種メモリを用いることができる。
伸長部104A、104Bは、メモリ106内の圧縮画像を読出し、圧縮部103で用いた圧縮手法の逆変換処理を実施し、画像処理部102A、102Bの処理時の走査に変換し画像処理部102A、102Bへ出力する。メモリ106からの読出し処理は、同期制御部107の同期信号に従い生成される画像処理部102A、102Bの読出し要求に応じて実施される。
同期制御部107は、入力信号(入力された映像信号)の同期信号を取得し、画像処理部102A、102Bの読出し処理タイミングを制御する同期信号を生成し、生成した同期信号を画像処理部102A、102Bに出力する。同期制御部107は、画像処理部102A、102Bが処理するフレームレートに従い、同期信号を生成し、画像処理部102A、102Bの動作タイミングを制御する。入力映像と出力映像がフレームロックの関係にある場合、同期制御部107は、入力信号を基準に同期信号を生成する。フレームロック動作を実施しない場合、同期制御部107は、出力部108の出力映像に含まれる出力同期信号を基準に同期信号を生成することもできる。
出力部108は、画像処理部102A、102Bから出力された処理結果である複数フレームの画像で構成される映像を所定のフォーマットに変換し、フォーマット変換後の映像を映像処理装置10の外部へ出力する。例えば、映像処理装置10が液晶テレビである場合、出力部108が液晶パネルを駆動する信号に変換した後、映像を表示する。もしくは、出力部108は、映像処理装置10がDVDプレイヤー等の再生装置の場合、HDMI等の映像インターフェイスから映像を出力する構成とすることもできる。
●圧縮部の構成と動作
次に、上述した圧縮部103A、103Bに対応する圧縮部103の構成と動作に関して説明する。図2は、圧縮部103の構成例を示すブロック図である。圧縮部103は、圧縮部共有バッファ1031、圧縮処理部1032、圧縮制御部1033を有する。圧縮部共有バッファ1031と圧縮処理部1032は、画像(データ)を互いに入出力可能に接続している。圧縮制御部1033は、圧縮部共有バッファ1031に制御信号を送出可能に圧縮部共有バッファ1031と接続している。
次に、上述した圧縮部103A、103Bに対応する圧縮部103の構成と動作に関して説明する。図2は、圧縮部103の構成例を示すブロック図である。圧縮部103は、圧縮部共有バッファ1031、圧縮処理部1032、圧縮制御部1033を有する。圧縮部共有バッファ1031と圧縮処理部1032は、画像(データ)を互いに入出力可能に接続している。圧縮制御部1033は、圧縮部共有バッファ1031に制御信号を送出可能に圧縮部共有バッファ1031と接続している。
圧縮部共有バッファ1031は、SRAMなどのメモリによって構成され、圧縮部103内のデータを一時的に保管するための場所として使用される。圧縮部共有バッファ1031は、以下の2つの目的で使用される。1つの目的は、画像処理部102の出力画像を圧縮処理部1032の走査方式に変換するためのバッファとして使用することである。すなわち、圧縮部共有バッファ1031は、画像処理部102A、102Bによる画像処理のときと異なる走査方式に変換するためのバッファとして使用される。
もう1つは、圧縮処理部1032の圧縮処理による圧縮結果である圧縮データをメモリ106に転送する際、圧縮データを一時的に保管するバッファとして使用する。圧縮部共有バッファ1031は、詳細につき後述する通り、同一アドレスのバッファが上記2つの異なる用途で共有する形で使用される。圧縮部共有バッファ1031では、1画素のデータが1つのアドレス空間に格納される。なお、圧縮部共有バッファ1031の1つのアドレス空間に格納されるデータは、1画素のデータに限定されず、2画素のデータなどの所定数の画素のデータとしてもよい。圧縮データにおける1つの圧縮ブロックのデータは、複数のアドレス空間に分割して格納される。圧縮部共有バッファ1031は、幅方向にて後述の画素群の横の画素数と同じ画素数以上の画素のデータを可能であり、高さ方向にて後述の画素群の縦の画素数と同じ画素数の画素のデータを書き込み可能である領域を有する。圧縮部共有バッファ1031は、メモリ空間と一時バッファを備える。圧縮部共有バッファ1031のメモリ空間は、幅MW×高さ(Bh−1)(MWはバッファの幅を示す。Bhは後述する圧縮ブロックの高さを示す。)の画素のデータを格納可能な領域を有する。また、圧縮部共有バッファ1031の一時バッファは、(Bw−1)画素(Bwは後述する圧縮ブロックの幅を示す。)のデータを格納可能な領域を有する。すなわち、圧縮部共有バッファ1031は、画素群の画素数と同じ画素数の画素のデータを書き込み可能な一時バッファを有する。圧縮部共有バッファ1031は、高さ方向にて一時バッファと合わせて、前記画素群の縦方向の画素数と同じ画素数の画素のデータを書き込み可能であり、幅方向にて前記画素群の横方向の画素数以上の画素数の画素のデータを書き込み可能なメモリ空間を有する。
圧縮処理部1032は、圧縮部共有バッファ1031で圧縮処理部1032の走査方式に変換した画像データを受け、所定の処理時間で圧縮処理を実施した後、圧縮部共有バッファ1031へ圧縮データを出力する。本実施形態では、圧縮処理は、横Bw画素×縦Bh画素の矩形単位で実施する処理として説明する。また、圧縮処理は、固定長圧縮、かつ固定レイテンシで処理するとし、入力された画像データのデータ量が1/N(N>0)となる圧縮データを圧縮処理開始からTenc時間後に出力するとして説明する。すなわち、Tencは、入力された画像データに対し圧縮処理を実施して、画像データのデータ量が1/Nとなる圧縮データの生成に要する時間(圧縮処理時間)を示している。
圧縮制御部1033は、以下に示す制御Aから制御Dの制御を実施する。制御Aでは、圧縮部共有バッファ1031へ画像処理部102の出力結果を書き込む入力書込み制御を実施する。制御Bでは、圧縮部共有バッファ1031に書き込まれた画像を圧縮処理部1032の走査方式に変換するよう読み出し圧縮処理部1032へ出力する圧縮読出し制御を実施する。制御Cでは、圧縮処理部1032による圧縮結果を圧縮部共有バッファ1031へ出力して圧縮部共有バッファ1031に書き込む圧縮書込み制御を実施する。制御Dでは、圧縮部共有バッファ1031からメモリ106へ圧縮処理部1032による圧縮結果を転送するための圧縮部共有バッファ1031内の、圧縮処理部1032による圧縮結果を読み出す読出し制御(以下、メモリ転送制御ともいう)を実施する。
圧縮制御部1033は、同期制御部107が作成し、画像処理部102を介して入力される同期信号に従い圧縮部103に入力される画像の画素(以下、入力画素ともいう)の位置(座標)を計測するカウンタ(不図示)を内部に備える。圧縮制御部1033は、カウンタで計測したカウント値に基づき入力画素の座標を特定する。制御Aから制御Dの処理は、カウント値に基づき特定された入力画素の座標を示す座標情報を基準に実施される。以下、制御Aから制御Dの詳細を説明する。
制御Aでは、同期信号を基にした、カウンタで計測したカウント値に基づき特定された入力画素の座標を示す入力画素の座標情報に応じ、圧縮部共有バッファ1031へ格納するアドレスが導出される。ここで、圧縮部共有バッファ1031が取り扱う最大画像幅をMW、入力された画像データの画素の座標を(X,Y)とし、1つのアドレス空間に1画素のデータを保管するとする。圧縮部共有バッファ1031のメモリ空間に1画素のデータを保管する場合、すなわち、1画素のデータのY座標がY%Bh≠(Bh−1)である場合、圧縮制御部1033は、次の処理を実行する。すなわち、圧縮制御部1033は、[(Y%Bh)×MW+X]を用いて圧縮部共有バッファ1031の書込みアドレスを導出する(%は剰余算)。また、圧縮部共有バッファ1031の一時バッファに1画素のデータを保管する場合、すなわち、1画素のデータのY座標およびX座標がY%Bh=(Bh−1)かつX%Bw≠(Bw−1)である場合、圧縮制御部1033は、次の処理を実行する。すなわち、圧縮制御部1033は、圧縮部共有バッファ1031の一時バッファに画像データの画素を格納する。
制御Bは、入力画素の座標(X,Y)が次の3つの条件の何れかに該当する場合、圧縮部共有バッファ1031の所定位置の矩形領域の画像データを読出し、読出した矩形領域の画像データを圧縮処理部1032へ出力する制御である。所定位置の矩形領域の画像データは、幅Bw×高さBh画素であって、始点(起点)が座標(X−Bw+1,Y−Bh+1)であり、終点が座標(X,Y)となる矩形領域の画像データである。読出し条件1は、入力画素の座標(X,Y)がX%Bw=(Bw−1)かつY%Bh=(Bh−1)である。読出し条件2は、入力画素の座標(X,Y)がX%Bw=(Bw−1)かつY=(Hin−1)(Hinは入力画像の垂直解像度)である。読出し条件3は、入力画素の座標(X,Y)がX=(Win−1)(Winは入力画像の水平解像度)かつY=(Hin−1)である。すなわち、Y=圧縮ブロックの高さBhの定数倍、又は入力画像データの最終ラインの画像データが入力された際、X=圧縮ブロックの幅Bwの定数倍、又は最終画素が入力された時点で、次の処理を実施する。入力画素に対応する位置の、圧縮部共有バッファ1031内の画像データを矩形で読出し、読み出した矩形の画像データを圧縮処理部1032へ出力する。
制御Cは、圧縮処理部1032から出力される圧縮データの圧縮部共有バッファ1031への書込みを行う制御である。圧縮処理部1032は、圧縮部共有バッファ1031で圧縮処理部1032の走査方式に変換した画像データの入力からTenc時間後に、圧縮処理部1032による入力画像データの圧縮結果(圧縮データ)を出力する。矩形の画像データの圧縮処理部1032への入力は制御Bで実施されるため、制御Bにより圧縮処理部1032へ画像データを出力した時点からTenc時間後、制御Cは圧縮部共有バッファ1031への圧縮データの書込みアドレスを出力する。圧縮データは、圧縮部共有バッファ1031のアドレス(Bh−2)×MWからアドレス[(Bh−2)×MW+Bw−1]までの範囲に分割されて圧縮部共有バッファ1031に書込まれる。すなわち、圧縮制御部1033は、圧縮部共有バッファ1031から読み出して圧縮処理部1032へ入力画像を出力してから圧縮画像の生成に要する時間経過後に、圧縮処理部1032で生成した圧縮画像を圧縮部共有バッファ1031へ書き込む。
制御Dでは、圧縮制御部1033の指示により、制御Cの処理で圧縮部共有バッファ1031に書き込まれた圧縮データを読み出し、読み出した圧縮データをメモリ106へ転送する制御が行われる。制御Dでは、メモリ帯域のピークを作らないようにするため、1ラインの入力期間にWin/Bh画素幅の圧縮データのみをメモリ106に転送するよう、圧縮部共有バッファ1031からの圧縮データの読出し制御が実施される。また、制御Dでは、制御Aの書込み処理によってメモリ106への転送前のデータが上書きされないよう、動作(転送処理)が制御される。以上が圧縮制御部1033の基本動作である。
次に、圧縮部103が実施する圧縮処理の動作の詳細について、図3、4を用いて説明する。図3(a)〜(g)は、圧縮部共有バッファ1031の状態例を示す図である。図4(h)〜(n)は、圧縮部共有バッファ1031の状態例を示す図である。図4(h)には、図3(g)に示される状態に続く状態が示される。本実施形態では、説明の簡単化のため、圧縮ブロックの幅Bw=4とし、圧縮ブロックの高さBh=4とし、圧縮処理に要する時間Tenc=8として図示している。また、入力画像の幅Win=バッファ幅BW(すなわち、バッファで扱える最大画像幅)=4096とし、圧縮率N=4として説明する。図3および図4では、圧縮部共有バッファ1031のアドレスと使用状況を示し、凡例に示す通り、白:空き、斜線:非圧縮画像(圧縮前の入力画像)あり、黒:圧縮データありの状態を示すものとする。また、図3(a)〜(g)および図4(h)、(i)、(n)にて、圧縮部共有バッファ1031の4行目の領域は、一時バッファを示すものとする。
非圧縮画像は、1画素を1アドレス領域に格納するよう動作する。圧縮データは、1圧縮ブロック単位でBw×Bh×1/Nサイズのデータとして出力される。よって、図4では、1ブロックあたり4画素分の領域(4アドレス領域)を用いて圧縮データを格納する。
図3(a)は、圧縮処理を開始する前であって、非圧縮画像が入力される前の圧縮部共有バッファ1031の状態を示す図である。圧縮部共有バッファ1031に非圧縮画像が入力される前にあっては、圧縮部共有バッファ1031内の全ての領域(アドレス空間)が空き状態である。
図3(b)は、圧縮部共有バッファ1031に非圧縮画像が5画素分入力された状態を示す図である。圧縮部共有バッファ1031に非圧縮画像が5画素分入力されると、圧縮部共有バッファ1031は、圧縮制御部1033の制御Aで指定したアドレスに従い、指定アドレスに入力画素が格納された状態となる。すなわち、画像の1画素目(0,0)から5画素目(4,0)までが圧縮部共有バッファ1031に入力され、圧縮部共有バッファ1031内のアドレス0からアドレス4までの領域に入力画像の各画素が順番に格納された状態となる。
図3(c)は、圧縮部共有バッファ1031に非圧縮画像が圧縮ブロック高(Bh−1)ライン分入力された状態を示す図である。圧縮制御部1033の制御Aで画像の5画素分の入力が繰り返され、圧縮ブロック高(Bh−1)ライン分の画像が入力されると、圧縮制御部1033の制御Aで指定したアドレスに従い、指定アドレスに入力画素が格納された状態となる。すなわち、(0,0)から(Win−1,Bh−2)の画素が圧縮部共有バッファ1031に入力された状態となる。本実施形態では、上述の通り、入力画像の幅Win=4096であり、圧縮ブロックの高さBh=4であるため、(0,0)から(4095,2)の画素が入力された状態となる。
図3(d)から図3(g)および図4(h)から図4(j)は、非圧縮画像における、Y=(Bh−1)ラインの画像が入力される際の圧縮部共有バッファ1031の動作を説明する図である。圧縮処理部1032は、Bw画素×Bh画素のブロック単位で圧縮処理を実行する。すなわち、圧縮処理部1032は、画像処理が行われる入力画像を縦および横の少なくとも何れかが複数画素の画素群で構成されるブロック単位で圧縮処理を実行して圧縮画像を生成する。そのため、画素(Bw−1,Bh−1)が圧縮部共有バッファ1031に入力されるまで入力画素を圧縮処理部1032に出力できない。よって、図3(d)に示すように、(0,Bh−1)から(Bw−2,Bh−1)の画素を圧縮部共有バッファ1031内の一時バッファに蓄積することになる。
次のサイクルで、非圧縮画像の画素(Bw−1,Bh−1)が入力されると、圧縮処理に要する矩形領域の画素(Bw画素×Bh画素のブロック)が入力された状態となり当該矩形領域の画素を圧縮処理部1032へ出力可能となる。従って、圧縮部共有バッファ1031は、圧縮制御部1033の制御Bに従い、圧縮部共有バッファ1031内の座標(0,0)から(Bh−1、Bw−1)の矩形領域の画素を圧縮処理部1032へ出力する。その結果、図3(e)に示すように、圧縮処理部1032へ出力する前に画素が格納されていた圧縮部共有バッファ1031における矩形領域が空き状態となる。
図3(f)は、圧縮部共有バッファ1031に座標(2×Bw−2,Bh−1)の画素が入力されたときの圧縮部共有バッファ1031の状態を示す図である。圧縮部共有バッファ1031は、X座標がBw以降であって座標(Bw,0)から座標(Win−1,Bh−2)の画素がメモリに格納され、座標(Bw,Bh−1)から座標(2×Bw−2,Bh−1)の画素が一時バッファに格納された状態となる。
図3(g)は、図3(f)の状態に続く次のサイクルで、非圧縮画像の画素(2×Bw−1,Bh−1)を一時バッファに格納し、矩形領域の画素を圧縮処理部1032へ出力した、圧縮部共有バッファ1031の状態を示す図である。非圧縮画像の画素が入力されて圧縮部共有バッファ1031に所定の矩形状に格納されると、圧縮部共有バッファ1031は、圧縮制御部1033の制御Bに従い、2つ目の圧縮ブロックとして矩形領域の画素を圧縮処理部1032へ出力する。矩形領域の画素は、座標(Bw,0)から座標(2×Bw−1,Bh−1)で囲まれる領域である。その結果、図3(g)に示すように、圧縮処理部1032へ出力する前に画素が格納されていた圧縮部共有バッファ1031における矩形領域が空き状態となる。
図4(h)は、座標(Bw−1+Tenc,Bh−1)の画素が入力された時刻の圧縮部共有バッファ1031の状態を示す図である。この時刻では、図3(e)にて圧縮処理部1032に出力されたブロック画像(矩形領域の画素)の圧縮データが、圧縮処理に要する時間Tenc後に圧縮処理部1032から出力されて、圧縮部共有バッファ1031に入力される。圧縮部共有バッファ1031は、圧縮制御部1033の制御Cに従い、次の処理を実行する。圧縮部共有バッファ1031は、圧縮部共有バッファ1031の最終ラインの領域の先頭であるアドレス[(Bh−2)×BW]からアドレス[(Bh−2)×BW+Bw−1]の領域に、入力されたブロック画像(矩形領域の画素)の圧縮データを格納する。本実施形態では、4画素×4画素を1/4に圧縮するため、圧縮後のデータサイズは4画素分のデータサイズと一致することになる。よって、図4(h)に示すように、圧縮部共有バッファ1031は、1番目の圧縮ブロックの圧縮データをアドレス[(Bh−2)×BW]からアドレス[(Bh−2)×BW+3]の領域に4等分して格納する。
また、制御Cの圧縮書込み制御による処理と並行して、制御Aの入力書込み制御による処理、制御Bの圧縮読出し制御による処理も実施される。
以後同様に、圧縮部共有バッファ1031内に圧縮処理部1032の圧縮処理に要する入力画像が蓄積された時点で、次の処理を実施する。すなわち、矩形領域の画素の圧縮処理部1032への出力、圧縮データの圧縮部共有バッファ1031の最終ラインの領域への書込みを繰り返すことになる。
図4(i)は、制御Cによる処理で矩形領域(0,0)から(Win/Bh−1,Bh−1)の圧縮データを圧縮部共有バッファ1031に蓄積した状態を示す図である。圧縮制御部1033は、制御Cの処理でX=Win/Bhの圧縮結果を圧縮部共有バッファ1031の最終ラインに書込んだ後、制御Dの処理で圧縮部共有バッファ1031内の圧縮結果を読出し、メモリ106への転送を開始する。前述の通り、制御Dは、Y=(Bh−1)ラインの入力期間中に座標(0,0)から座標(Win/Bh−1,Bh−1)の圧縮データを転送すると、転送を一時停止する。
メモリ106への転送は、DRAMのペナルティによる転送効率の低下を防ぐため、適切な転送長にて連続発行するよう制御してもよい。
図4(j)は、座標(0,0)から座標(Win−1,Bh−1)の圧縮処理が完了し、制御Cによる圧縮書込み処理が完了したときの圧縮部共有バッファ1031の状態を示す図である。圧縮部共有バッファ1031は、座標(Win/Bh,0)から座標(Win−1,Bh−1)の圧縮データが残る状態となる。
図4(k)は、非圧縮画像における、次のラインY=Bhの画像の入力が開始され、座標(0,Bh)の画素が入力されたときの圧縮部共有バッファ1031の状態を示す図である。圧縮部共有バッファ1031は、圧縮制御部1033の制御Aに従い、圧縮部共有バッファ1031に入力された画素を圧縮部共有バッファ1031のアドレス0に格納する。その後、同様に入力画素の格納を繰り返すことになる。
座標(Win/Bh,Bh)の画素が圧縮部共有バッファ1031に入力されると、圧縮制御部1033は制御Dを動作させ、次の処理を実行する。すなわち、圧縮制御部1033は、圧縮部共有バッファ1031内の座標(Win/Bh,0)から座標(2×Win/Bh−1,Bh−1)の圧縮データをメモリ106に転送する。
図4(l)は、圧縮部共有バッファ1031に座標(Win−1,Bh)の画素が入力された状態を示す図である。圧縮部共有バッファ1031は、アドレス0からアドレス(BW−1)までの領域に入力画像の座標(0,Bh)から座標(Win−1,Bh)までの画素が格納された状態となる。また、圧縮部共有バッファ1031は、アドレス[(Bh−2)×BW+2×Win/Bh]からアドレス[(Bh−1)×BW−1]までの領域に、座標(2×Win/Bh,0)から座標(Win−1,Bh−1)までの圧縮データが残る状態となる。
非圧縮画像の次のラインY=(Bh+1)の画像入力時の処理に関しても、図4(k)、(l)と同様、圧縮部共有バッファ1031は入力画像の画素が圧縮部共有バッファのアドレスBWからアドレス(2×BW−1)の領域に書き込まれた状態となる。また、圧縮部共有バッファ1031は、座標(2×Win/Bh,0)から座標(3×Win/Bh−1,Bh−1)の圧縮データが読み出され、読み出された圧縮データがメモリ106に転送された状態となる。
図4(m)は、座標(Win−1,Bh+1)の画素が入力されたときの圧縮部共有バッファ1031の状態を示す図である。
非圧縮画像の次のラインY=(2Bh−2)(本実施形態例ではY=Bh+2となる)の画像入力時の処理に関しても、図4(k)、(l)と同様、制御Aにより、圧縮部共有バッファ1031は、所定のアドレスに入力画像の画素が書き込まれた状態となる。すなわち、圧縮部共有バッファ1031は、アドレス[(Bh−2)×BW]からアドレス[(Bh−1)×BW−1]に入力画像の画素が書き込まれた状態となる。また、制御Dにより、圧縮部共有バッファ1031は、座標((Bh−1)×Win/Bh,0)から座標(Win−1,Bh−1)の圧縮データが読み出され、読み出された圧縮デーがメモリ106に転送された状態となる。非圧縮画像のラインY=(2Bh−2)の画像入力時の処理において、制御Dおよび制御Aによって、一部重複するアドレスのデータの読み出し処理と書き込み処理が実施される。制御Dは、制御Aが圧縮部共有バッファ1031に書き込むデータで上書きされないよう、圧縮部共有バッファ1031への入力画像の書込みより前に圧縮部共有バッファ1031内の圧縮データをメモリ106に出力する。
上記処理の結果、圧縮部共有バッファ1031への座標(Win−1,2×Bh−2)の画素の入力が完了すると、図4(n)に示す通り、2Bh−2ラインの画像が圧縮部共有バッファ1031に格納された状態となる。これは、図3(c)に示す圧縮部共有バッファ1031の使用状況と同じ状態である。すなわち、以後、前述の処理を繰り返すことにより、入力画像全体を圧縮し、メモリ106に格納することが可能である。
上記処理では、圧縮ブロック高Bhの圧縮ブロックの転送期間内に、入力画像の圧縮結果を1ライン当たりWin/Bh画素幅ずつ均等にメモリ106に転送される。これにより、ピーク帯域が平準化される。また、転送期間を分散させるためのバッファを走査変換バッファと共有した圧縮部共有バッファ1031に設け好適に制御することで、バッファの増加が抑えられる。
●伸長部の構成と動作
次に、上述した伸長部104A、104Bに対応する伸長部104の構成と動作について説明する。図5は、伸長部104の構成例を示すブロック図である。伸長部104は、伸長部共有バッファ1041、伸長処理部1042、伸長制御部1043を有する。伸長部共有バッファ1041と伸長処理部1042は、画像(データ)を互いに入出力可能に接続している。伸長制御部1043は、伸長部共有バッファ1041に制御信号を送出可能に伸長部共有バッファ1041と接続している。
次に、上述した伸長部104A、104Bに対応する伸長部104の構成と動作について説明する。図5は、伸長部104の構成例を示すブロック図である。伸長部104は、伸長部共有バッファ1041、伸長処理部1042、伸長制御部1043を有する。伸長部共有バッファ1041と伸長処理部1042は、画像(データ)を互いに入出力可能に接続している。伸長制御部1043は、伸長部共有バッファ1041に制御信号を送出可能に伸長部共有バッファ1041と接続している。
伸長部共有バッファ1041は、SRAMなどのメモリによって構成され、伸長部104内のデータを一時的に保管するための場所として使用される。伸長部共有バッファ1041は、以下の2つの目的で使用される。1つの目的は、メモリ106から読出した圧縮データを伸長処理部1042に出力するまで一時的に保管するバッファとして使用することである。すなわち、伸長部共有バッファ1041は、画像処理部102A、102Bによる画像処理のときと異なる走査方式に変換するためのバッファとして使用される。もう1つの目的は、伸長処理部1042で伸長した出力画像を画像処理部102の走査方式に変換するためのバッファとして使用することである。伸長部共有バッファ1041は、詳細につき後述する通り、同一アドレスのバッファが上記2つの異なる用途で共有する形で使用される。伸長部共有バッファ1041では、伸長後の画像の1画素のデータが1つのアドレス空間に格納される。すなわち、伸長部共有バッファ1041では、1画素のデータが1つのアドレス空間に格納される。なお、伸長部共有バッファ1041の1つのアドレス空間に格納されるデータは、1画素のデータに限定されず、2画素のデータなどの所定数の画素のデータとしてもよい。圧縮データにおける1つの圧縮ブロックのデータは、複数のアドレス空間に分割して格納される。伸長部共有バッファ1041は、幅方向にて後述の画素群の横の画素数と同じ画素数以上の画素のデータを可能であり、高さ方向にて後述の画素群の縦の画素数と同じ画素数の画素のデータを書き込み可能である領域を有する。伸長部共有バッファ1041は、メモリ空間と一時バッファとを備える。伸長部共有バッファ1041のメモリ空間は、幅BW×高さ(Bh−1)(BWはバッファの幅を示す。Bhは圧縮ブロックの高さを示す。)の画素を格納可能な領域を有する。また、伸長部共有バッファ1041の一時バッファは、(Bw−1)画素(Bwは圧縮ブロックの幅を示す。)のデータを格納可能な領域を有する。すなわち、伸長部共有バッファ1041は、画素群の画素数と同じ画素数の画素のデータを書き込み可能な一時バッファを有する。伸長部共有バッファ1041は、高さ方向にて一時バッファと合わせて、前記画素群の縦方向の画素数と同じ画素数の画素のデータを書き込み可能であり、幅方向にて前記画素群の横方向の画素数以上の画素数の画素のデータを書き込み可能なメモリ空間を有する。
伸長処理部1042は、伸長部共有バッファ1041に格納された圧縮データを受け、所定の処理時間で伸長処理を実施した後、伸長部共有バッファ1041へ伸長した出力画像を出力する。伸長処理部1042は、圧縮処理部1032で実施する圧縮処理の逆変換を実施するため、伸長処理後の出力画像は、幅Bw×高さBh画素の矩形単位で出力される。すなわち、本実施形態では、伸長処理は、幅Bw×高さBh画素の矩形単位の画像データに伸長する処理として説明する。また、伸長に要する時間をTdecと定義する。すなわち、Tdecは、入力された圧縮データに対し伸長処理を実施して、圧縮データのデータ量がN(N>0)倍となる画像データの生成に要する時間(伸長時間)を示している。
伸長制御部1043は、以下に示す制御Eから制御Hの制御を実施する。制御Eでは、メモリ106から伸長部共有バッファ1041へ圧縮データを転送するための、メモリから圧縮データを読み出し、伸長部共有バッファ1041へ書込む書込み制御(以下、メモリ転送制御ともいう)を実施する。制御Fでは、伸長部共有バッファ1041内の圧縮データを読出し伸長処理部1042へ出力する圧縮読出し制御を実施する。制御Gでは、伸長処理部1042による伸長結果(矩形の出力画像)を伸長部共有バッファ1041へ出力して伸長部共有バッファ1041に伸長書込み制御を実施する。制御Hでは、伸長部共有バッファ1041に書き込まれた出力画像を画像処理部102の走査方式に変換するよう読み出し画像処理部102へ出力する出力読出し制御を実施する。
伸長制御部1043は、同期制御部107が生成し、画像処理部102を介して入力される同期信号に従い伸長部104に入力される画像の画素(以下、入力画素ともいう)の位置(座標)を計測するカウンタ(不図示)を内部に備える。伸長制御部1043は、カウンタで計測したカウント値に基づき入力画素の座標を特定する。制御Eから制御Hの処理は、上記座標情報を基準に実施される。以下、制御Eから制御Hの詳細を説明する。
制御Eは、伸長制御部1043の指示により、同期信号を基にしたカウンタの値を基に、メモリ106から圧縮データを読み出し、読み出した圧縮データを伸長部共有バッファ1041へ転送する制御が行われる。読出しに際し、読出し時のメモリアクセスを分散させる目的で、同期信号の1ライン期間に読出すデータ量はWin/Bh画素幅分の圧縮データとする。制御Eでは、読出した圧縮データを伸長部共有バッファ1041に格納するためのアドレス情報が出力される。書込みアドレスは、0からWin×Bh/Nの範囲に圧縮データを分割し格納する。圧縮データのサイズは前述の通りBw×Bh/N画素分であるため、本実施形態では1圧縮データを4画素分の領域に分割して格納する。
制御Fでは、伸長部共有バッファ1041から圧縮データを読出し、読出した圧縮データを伸長処理部1042へ出力する処理が実施される。制御Fは、制御Eによりアドレス(Bh−1)×Win/BhからアドレスWinの画素の圧縮データの伸長部共有バッファ1041への読出しを開始すると、圧縮データの伸長部共有バッファ1041から伸長処理部1042への読出し処理を開始する。制御Fでは、1圧縮ブロックの読出しがBwサイクル毎に実施され、Bwサイクル毎の1圧縮ブロックの読出しによって、1ライン期間に伸長部共有バッファ1041内の全ての圧縮データの読出しが実施される。
制御Gは、伸長処理部1042から出力される矩形の出力画像を伸長部共有バッファ1041へ格納する(書込みを行う)制御である。出力される矩形の出力画像の0ライン目の画素のうち、原点画素は伸長部104から出力され、残りの画素は伸長部共有バッファ1041内の一時バッファに格納される。1ライン目以降の画素は、後述の通り、伸長部共有バッファ1041内のメモリ空間に格納するようアドレスを発行する。制御Gは、制御Eによる処理で伸長部共有バッファ1041に書込んだ圧縮データが制御Fによる処理で読出されるまで当該アドレスのデータを上書きしないよう制御する。
制御Hは、制御Gによる処理で伸長部共有バッファ1041に書き込まれた画素を読み出し、読み出したデータを伸長部104から画像処理部102へ出力する制御である。出力する際、制御Gによって伸長した出力画像の書込み処理を実施している期間は、伸長部104内の、伸長部共有バッファ1041の一時バッファに格納された画素を1サイクルに1画素ずつ、ラスタースキャンで出力するよう制御する。制御Gによる書込み処理が実施されない期間は、伸長部共有バッファ1041のメモリ空間に格納された出力画像をアドレス0から有効領域を連続読出しすることで、ラスタースキャンの画像として出力する。以上が伸長制御部1043の基本動作である。
次に、伸長部104が実施する伸長処理の動作の詳細について、図6、図7および図8を用いて説明する。図6(a)〜(g)は、伸長部共有バッファ1041の状態例を示す図である。図7(h)〜(n)は、伸長部共有バッファ1041の状態例を示す図である。図7(h)には、図6(g)に示される状態に続く状態が示される。図8(o)〜(s)は、図7(n)に示される状態に続く状態であって、伸長部共有バッファ1041の状態例を示す図である。図8(o)には、図7(n)に示される状態に続く状態が示される。本実施形態では、伸長処理に要する時間Tdec=8として図示しており、それ以外のパラメータは、圧縮部103と同等でありその説明を省略する。図6〜図8では、伸長部共有バッファ1041のアドレスと使用状況を示し、凡例に示すとおり、白:空き、斜線:非圧縮画像(圧縮前の入力画像)あり、黒:圧縮データありの状態を示すものとする。また、図6(a)〜(g)および図7(h)〜(m)にて、伸長部共有バッファ1041の1行目の領域は、一時バッファを示すものとする。
図6(a)は、伸長処理を開始する前であって、圧縮データが入力される前の伸長部共有バッファ1041の状態を示す図である。伸長部共有バッファ1041に圧縮データが入力される前にあっては、伸長部共有バッファ1041内の全ての領域(アドレス空間)が空き状態である。
図6(b)は、圧縮データが1つの圧縮ブロック分(4つのアドレス分)入力された伸長部共有バッファ1041の状態を示す図である。メモリ106から読出し伸長部共有バッファ1041に圧縮データが1つの圧縮ブロック分(4つのアドレス分)入力されると、伸長部共有バッファ1041は、次の状態となる。伸長部共有バッファ1041は、伸長制御部1043の制御Eで指定されたアドレスに従い、指定アドレスに圧縮データが格納された状態となる。すなわち、圧縮データの最初の1つの圧縮ブロック分(4つのアドレス領域分)が伸長部共有バッファ1041に転送(入力)される。これにより、伸長部共有バッファ1041は、最初のデータを伸長部共有バッファ1041内のアドレス0からアドレス3までの領域に4分割して格納した状態となる。同様にして、1ライン期間にWin/Bh幅分の圧縮データを伸長部共有バッファ1041内のメモリ空間に格納する。この1ライン期間の圧縮データの格納処理時にあっては、Win/Bh幅分の圧縮データを伸長部共有バッファ1041内のメモリ空間に格納する毎に、メモリ106から伸長部共有バッファ1041への圧縮データの読出し処理が一旦停止される。圧縮データの読出し処理の停止期間にあっては、伸長部共有バッファ1041は、後述の図6(f)、図6(g)に示す圧縮データの圧縮読出し制御、後述の図7(h)〜図7(k)に示す出力画像の画素の出力読出し制御が行われる。これにより、伸長部共有バッファ1041の処理負荷が平滑化される。
図6(c)は、1ライン期間にWin/Bh幅分の圧縮データを伸長部共有バッファ1041のメモリ空間に格納した状態を示す図である。以上の処理の結果、1ライン期間後の伸長部共有バッファ1041は、図6(c)に示すように、メモリ106から読出された、矩形領域(0,0)から(Win/Bh−1,Bh−1)の画素の圧縮データが格納された状態となる。
伸長制御部1043は、2ライン目の入力を同期信号から受け取ると、制御Eによる処理を実施する。すなわち、伸長制御部1043は、メモリ106から(Win/Bh×−1)から2×Win/Bhの画素の範囲の圧縮データを読出し、伸長部共有バッファ1041のアドレスWin/Bhからアドレス2×Win/Bhに格納する。図6(d)は、2ライン期間にWin/Bh幅分の圧縮データをメモリ空間に格納した伸長部共有バッファ1041の状態を示す図である。2ライン期間の処理が完了した結果、伸長部共有バッファ1041は、図6(d)に示すような状態となる。すなわち、伸長部共有バッファ1041は、矩形領域(0,0)から(2×Win/Bh−1,Bh−1)の画素の圧縮データがメモリ106から伸長部共有バッファ1041のメモリ空間に読出された状態となる。
伸長制御部1043は、(Bh−1)(本実施形態例ではBh−1=3)ライン目の入力を同期信号から受け取ると、制御Eによる処理を実施する。すなわち、伸長制御部1043は、メモリ106から[(Bh−2)×Win/Bh−1]から(Bh−1)/Bh×Winの画素の範囲の圧縮データを読出し、伸長部共有バッファ1041のアドレス2×Win/Bhから3×Win/Bhに格納する。
図6(e)は、(Bh−1)ライン期間にWin/Bh幅分の圧縮データを伸長部共有バッファ1041のメモリ空間に格納した状態を示す図である。(Bh−1)ライン期間の処理が完了した結果、伸長部共有バッファ1041は、図6(e)に示すように、メモリ106から読出された、矩形領域(0,0)から((Bh−1)×Win/Bh−1,Bh−1)の画素の圧縮データが格納された状態となる。
伸長制御部1043は、Bhライン目の入力を同期信号から受け取ると、制御Eによる処理を実施する。伸長制御部1043は、メモリ106から[(Bh−1)×Win/Bh−1]から(Win−1)の画素の範囲の圧縮データを読出し、伸長部共有バッファ1041のアドレス(Bh−1)×Win/Bhからアドレス(Win−1)に格納する処理を開始する。また、伸長制御部1043は、伸長処理部1042の伸長処理を開始するため、制御Fによる処理を実施する。すなわち、伸長制御部1043は、伸長部共有バッファ1041内の矩形領域(0,0)から(Bw−1,Bh−1)の画素の圧縮データを読出し、読出した圧縮データを伸長処理部1042へ出力する。
図6(f)は、(0,0)から(Bw−1,Bh−1)の画素の圧縮データを伸長部共有バッファ1041から伸長処理部1042へ読出した状態を示す図である。制御Fによる読出し処理の結果、伸長部共有バッファ1041は、図6(f)に示すように、アドレス0からアドレス(Bw×Bh/N−1)が空き領域となる。すなわち、伸長部共有バッファ1041は、アドレス0からアドレス3が空き領域となる。
同様にして、伸長制御部1043は、図6(f)に示す状態からBwサイクル後、矩形領域(Bw,0)から(2×Bw−1,Bh−1)の画素の圧縮データを読出し、読出した画素の圧縮データを伸長処理部1042へ出力する制御Fを実施する。図6(g)は、図6(f)に示す状態からBwサイクル後、矩形領域(Bw,0)から(2×Bw−1,Bh−1)の画素の圧縮データを読出した伸長部共有バッファ1041の状態を示す図である。その結果、伸長部共有バッファ1041は、図6(g)に示すように、アドレス0からアドレス(2Bw×Bh/N−1)が空き領域となる。すなわち、伸長部共有バッファ1041は、アドレス0からアドレス7が空き領域となる。
図6(f)に示す、所定のサイズのデータが伸長部共有バッファ1041に格納された状態からTdecサイクル後、伸長処理部1042は、伸長部共有バッファ1041から受け取った圧縮データのデコード処理(伸長処理)が完了する。すなわち、伸長処理部1042は、図6(f)に示す、矩形領域(0,0)から(Bw−1,Bh−1)の画素の圧縮データのデコード処理がTdecサイクルで完了する。そして、伸長処理部1042は、図6(f)に示す、矩形領域(0,0)から(Bw−1,Bh−1)の画素の圧縮データをデコード処理して生成したブロック画像(以下、矩形画像ともいう)を伸長部共有バッファ1041に出力する。ここでは、Tdec=8、Bw=4であるため、3つ目の圧縮ブロックの読出し時に(図7(h)参照)、1つ目の圧縮ブロックの伸長結果であるブロック画像が出力される。すなわち、伸長制御部1043は、伸長部共有バッファ1041から読み出して伸長処理部1042へ圧縮画像を出力してから出力画像の生成に要する時間経過後に、伸長処理部1042で生成した出力画像を伸長部共有バッファ1041へ書き込む。
伸長制御部1043は、制御Gの処理により伸長結果の矩形画像のうち、左上に位置する画素を伸長部104より出力する。また、最上位ラインの残りの画素を、伸長部共有バッファ1041の一時バッファに格納し、2ライン目以降を図7(h)に示すアドレスに従い伸長部共有バッファ1041のメモリ空間に格納する。例えば、本実施形態においては、座標(0,0)から座標(3,3)のデコード結果は以下の通り処理される。座標(0,0)の画素は伸長部104より画像処理部102A,102Bへ出力される。座標(1,0)から座標(3,0)の画素は、伸長部共有バッファ1041の一時バッファに格納される。座標(0,1)から座標(3,1)の画素は、伸長部共有バッファ1041のメモリ空間におけるアドレス0からアドレス3に格納される。座標(0,2)から座標(3,2)の画素は、伸長部共有バッファ1041のメモリ空間におけるアドレス4096からアドレス4099に格納される。座標(0,3)から座標(3,3)の画素は、伸長部共有バッファ1041のメモリ空間におけるアドレス8192からアドレス8195に格納される。
図7(h)は、図6(f)に示す状態からTdecサイクル後の状態であって、3つ目の圧縮ブロックを読出し、1つ目の圧縮ブロックの伸長結果の書込み、1つの画素の出力を行った伸長部共有バッファ1041の状態を示す図である。以上の結果、伸長部共有バッファ1041は、図7(h)に示すように、画素の圧縮データと伸長した出力画像が混在する状態となる。
図7(i)は、図7(h)の状態から1サイクル後の伸長部共有バッファ1041の状態を示す図である。図7(j)は、図7(i)の状態から1サイクル後の伸長部共有バッファ1041の状態を示す図である。図7(k)は、図7(j)の状態から1サイクル後の伸長部共有バッファ1041の状態を示す図である。
図7(h)の状態から(Bw−1)サイクル期間は、図7(i)から図7(k)に示すように、伸長制御部1043の制御Dによる処理に従い、伸長部共有バッファ1041の一時バッファ内の画像を1サイクルに1画素ずつ順番に出力する。すなわち、伸長部共有バッファ1041は、1サイクルに1画素ずつ座標(1,0)の画素、座標(2,0)・・・(Bw−1,0)の順に出力する。これにより、伸長部104の出力はラスタースキャンで出力されることになる。
図7(l)は、図7(k)の状態から1サイクル後の伸長部共有バッファ1041の状態を示す図である。伸長処理部1042から2つ目の圧縮データのデコード結果が出力され、図7(h)と同様、左上の画素(一時バッファの1番目のアドレスの画素)の出力、並びに伸長部共有バッファ1041への書込み処理が、伸長制御部1043の制御Gに従い実施される。
上記伸長制御部1043の制御Fから制御Hによる処理を実施し、伸長部共有バッファ1041から圧縮データの読出し、出力画像の書込み、出力画像の出力を実施する。なお、圧縮データが伸長処理部1042へ読み出されることにより、伸長処理部1042は、読み出された圧縮データに対して伸長処理を実施する。図7(m)は、矩形領域((Bh−1)×Win/Bh−1,0)から(Win−1,Bh−1)の画素の圧縮データが格納された伸長部共有バッファ1041の状態を示す図である。また、前述の制御Eの処理によって読出された矩形領域((Bh−1)×Win/Bh−1,0)から(Win−1,Bh−1)の画素の圧縮データは、図7(m)に示すように、伸長部共有バッファ1041に格納される。この圧縮データを用いて制御Fから制御Gの処理によって伸長処理が実施され、制御Hによる処理によって伸長後の1ライン目の出力画像が伸長部104から伸長部104に対応する画像処理部102A,102Bへ出力される。
図7(n)は、出力画像における1ライン目の画素の出力が完了したときの伸長部共有バッファ1041の状態を示す図である。座標(0,0)から座標(Win−1,0)の出力画像の伸長部104からの出力が完了し、伸長部共有バッファ1041のメモリ空間に座標(0,1)から座標(Win,Bh−1)の画素の出力画像が格納された状態となる。
続いて、伸長制御部1043は、次のラインの同期信号を受け取ると、制御Hによる処理を実施する。すなわち、伸長制御部1043は、2ライン目の画像データの出力処理を実施する。図8(o)は、伸長部共有バッファ1041のアドレス0からアドレス(Win−1)までの画素を読出し、読出した画素を書込み、座標(0,1)の画素を出力した、伸長部共有バッファ1041の状態を示す図である。制御Hによる処理により、図8(o)に示すように、伸長部共有バッファ1041のアドレス0からアドレス(Win−1)までの画素を読出し、伸長部104より座標(0,1)から(Win−1,1)の画素の出力を開始する。伸長制御部1043の制御Hによる出力処理がWin/Bh画素を超えると、伸長制御部1043は制御Eの処理を開始し、メモリ106内の次の圧縮画像の伸長部共有バッファ1041への読出しが実施される。制御Eの処理では、図8(p)に示すように、メモリ106内の(0,Bh)から(Bw−1,2×Bh−1)の画素の圧縮データの伸長部共有バッファ1041への読出しを実施する。そして、読み出した圧縮データを伸長部共有バッファ1041のアドレス0からアドレス(Win/Bh−1)に格納する。伸長制御部1043は、映像処理装置10への入力画像の水平方向の画素数を圧縮部共有バッファ1031の高さ方向の画素数で除算して得た数の画素を超えて画像処理部へ出力したタイミングで、次の処理を実行する。すなわち、伸長制御部1043による転送指示によって圧縮画像をメモリ106から読み出して圧縮部共有バッファ1031に出力する。
2ライン目の画像の出力完了後、伸長部共有バッファ1041は、図8(q)に示すように、(0,2)から(Win−1,Bh−1)の伸長した出力画像の画素の出力読出し制御が行われる。伸長部共有バッファ1041は、(0,Bh)から(Win/Bh−1,2×Bh−1)の圧縮データが格納された状態となる。
3ライン目の画像出力時も、2ライン目の画像出力と同様に処理が実施される。3ライン目の画像の出力完了後、伸長部共有バッファ1041は、図8(r)に示すように、(0,Bh−1)から(Win−1,Bh−1)の伸長した出力画像の出力読出し制御が行われる。伸長部共有バッファ1041は、(0,Bh)から(2×Win/Bh−1,2×Bh−1)の圧縮データが格納された状態となる。
Bhライン目の画像出力時も、2、3ライン目の画像出力と同様に処理が実施される。図8(s)は、Bhライン目の出力が完了した時刻における伸長部共有バッファ1041の状態を示す図である。伸長部共有バッファ1041は、座標(0,Bh)から((Bh−1)×Win/Bh−1,Bh−1)の圧縮データが格納された状態となる。これは、図6(g)における伸長部共有バッファ1041の使用状況と同じであるため、以後は同様の処理を画像の最後まで繰り返し実施することによって、伸長した画像をラスタースキャンで出力することが可能となる。
本実施形態においては、圧縮伸張処理を固定長圧縮であり、4画素×4画素を圧縮した圧縮データが非圧縮画像4画素と同等の場合を説明した。ここで、圧縮率N=3であり、圧縮ブロックの幅と圧縮結果のデータサイズが一致しない場合、圧縮部共有バッファ1031、伸長部共有バッファ1041の圧縮データが格納される領域のデータ幅を拡張して対応する。非圧縮画像の1画素のデータサイズをDとすると、非圧縮画像のみが格納される領域の1アドレスのデータサイズはDとし、圧縮画像も格納される領域はBh×D/Nとすることで、上述の実施形態と同様に対応することが可能である。
また、圧縮処理に可変長圧縮を用いる場合、圧縮率Nを最低圧縮率で導出することにより、同様に対応できる。圧縮データを分割する際には幅Bwのアドレス内に前詰めして格納することで、対応できる。
従来の手法においては、圧縮前に走査変換を実施するためのバッファと、圧縮後にメモリに圧縮データを転送する前のバッファを個別に設ける構成となっている。また、伸長部においても、メモリから読出した圧縮データを保持するバッファと、出力画像の走査変換を行うバッファとを別個に設ける構成となっている。これに対し、本実施形態によれば、転送前、転送後の圧縮画像を保持するバッファを走査変換バッファと共有して削減するため、回路規模を削減することが可能となる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
10 映像処理装置
102A、102B 画像処理部
103 圧縮部
1031 圧縮部共有バッファ
1032 圧縮処理部
1033 圧縮制御部
102A、102B 画像処理部
103 圧縮部
1031 圧縮部共有バッファ
1032 圧縮処理部
1033 圧縮制御部
Claims (25)
- 画像処理が行われる第一の画像データ及び当該第一の画像データを圧縮処理した第二の画像データを保持する第一のメモリと、
前記第一のメモリから前記第一の画像データを取得し、前記画像処理のときと異なる走査方式で圧縮処理を実行して第二の画像データを生成する生成手段と、
前記第一のメモリへの前記第一及び第二の画像データの書き込み及び読み出しを制御する制御手段と、
を有し、
前記制御手段は、前記第一の画像データを所定のタイミングで前記第一のメモリから読み出して前記生成手段に出力することで、前記第一のメモリにて前記第一及び第二の画像データが上書きされないよう制御する
ことを特徴とする画像処理装置。 - 前記第二の画像データは、前記第一の画像データを縦および横の少なくとも何れかが複数画素の画素群で構成されるブロック単位で圧縮処理を実行して生成したデータであり、
前記第一のメモリは、幅方向にて前記画素群の横の画素数と同じ画素数以上の画素のデータを書き込み可能であり、高さ方向にて前記画素群の縦の画素数と同じ画素数の画素のデータを書き込み可能である領域を有し、
前記制御手段は、前記画素群の横および縦の画素数と同じ画素数の画素のデータが前記第一のメモリの領域に書き込まれたタイミングで、前記第一のメモリから前記第一の画像データを前記ブロック単位で読み出して前記生成手段へ出力する
ことを特徴とする請求項1に記載の画像処理装置。 - 前記制御手段は、前記第一の画像データを所定数の画素のデータずつ前記第一のメモリの1つの領域に順番に書き込む
ことを特徴とする請求項2に記載の画像処理装置。 - 前記第一のメモリは、
前記画素群の横の画素数と同じ画素数の画素のデータを書き込み可能な一時バッファと、
高さ方向にて、前記一時バッファと合わせて、前記画素群の縦の画素数と同じ画素数の画素のデータを書き込み可能であり、
幅方向にて、前記画素群の横の画素数以上の画素数の画素のデータを書き込み可能であるメモリ空間とを有し、
前記制御手段は、前記一時バッファに、前記画素群の横の画素数と同じ画素数の画素のデータを書き込まれたタイミングで、前記第一のメモリから前記第一の画像データを前記ブロック単位で読み出して前記生成手段へ出力する
ことを特徴とする請求項3に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリに書き込まれた前記第一の画像データの画素の座標を(X,Y)とし、前記Yが前記画素群の縦の画素数の定数倍である、又は前記第一の画像データの最終ラインであり、かつ、前記Xが前記画素群の横の画素数の定数倍である、又は前記第一の画像データの最終画素であるときに、前記第一のメモリに書き込まれた前記第一の画像データの画素の座標(X,Y)を終点とした、前記画素群の横および縦の画素数と同じ画素数の画素のデータを前記第一のメモリから読み出して前記生成手段へ出力する
ことを特徴とする請求項4に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリから読み出して前記生成手段へ前記第一の画像データを出力してから前記第二の画像データの生成に要する時間経過後に、前記生成手段で生成した前記第二の画像データを前記第一のメモリへ書き込む
ことを特徴とする請求項2から5の何れか一項に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリにおける、前記画素群の横の画素数と同じ画素数の画素のデータが書き込まれる領域と同じ大きさの領域に分割して前記第二の画像データを書きこむ、ことを特徴とする請求項6に記載の画像処理装置。
- 前記制御手段は、前記第二の画像データを前記第一のメモリの最終ラインへ書き込む
ことを特徴とする請求項6または7に記載の画像処理装置。 - 前記第二の画像データを保持する第二のメモリと、
前記制御手段の指示により、前記第一のメモリから読み出した前記第二の画像データを前記第二のメモリに書き込むことで、前記第二の画像データを転送する転送手段と、を備え、
前記制御手段は、前記転送手段によって前記第二の画像データを所定のタイミングで前記第一のメモリから読み出して前記第二のメモリに出力する
ことを特徴とする請求項1から8の何れか一項に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリの1ラインへの前記第二の画像データの書込み期間中に、前記転送手段によって前記第二の画像データを前記第一のメモリから読み出して前記第二のメモリに出力する
ことを特徴とする請求項9に記載の画像処理装置。 - 画像処理のときと異なる走査方式で処理された第一の画像データ及び当該第一の画像データを伸長処理して、前記画像処理が行われる第二の画像データを保持する第一のメモリと、
前記第一のメモリから前記第一の画像データを取得し、伸長処理を実行して前記第二の画像データを生成する生成手段と、
前記第一のメモリへの前記第一及び第二の画像データの書き込み及び読み出しを制御する制御手段と、
を有し、
前記制御手段は、前記第一の画像データを所定のタイミングで前記第一のメモリから読み出して前記生成手段に出力することで、前記第一のメモリにて前記第一及び第二の画像データが上書きされないよう制御する
ことを特徴とする画像処理装置。 - 前記第二の画像データは、前記第一の画像データに対し伸長処理を実行して生成した、縦および横の少なくとも何れかが複数画素の画素群で構成されるブロック単位のデータであり、
前記第一のメモリは、幅方向にて前記画素群の横の画素数と同じ画素数以上の画素のデータを書き込み可能であり、高さ方向にて前記画素群の縦の画素数と同じ画素数の画素のデータを書き込み可能である領域を有し、
前記制御手段は、前記画像処理装置へ入力された入力画像データの幅の画素数と同じ画素数のデータが書き込まれたタイミングで、前記第一のメモリから前記第一の画像データを読み出して前記生成手段へ出力する
ことを特徴とする請求項11に記載の画像処理装置。 - 前記制御手段は、前記画素群に対応する大きさの前記第一の画像データを前記第一のメモリから読み出して前記生成手段へ出力する
ことを特徴とする請求項12に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリから読み出して前記生成手段へ前記第一の画像データを出力してから前記第二の画像データの生成に要する時間経過後に、前記生成手段で生成した前記第二の画像データを前記第一のメモリへ書き込む
ことを特徴とする請求項12または13に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリにおける、前記画素群の横および縦の画素数と同じ画素数の画素のデータが書き込まれる領域と同じ大きさの領域に前記第二の画像データを書きこむ、ことを特徴とする請求項14に記載の画像処理装置。
- 前記第二の画像データに対して前記画像処理を行う画像処理手段を有し、
前記制御手段は、前記第二の画像データを所定数の画素のデータずつ前記第一のメモリから読み出して前記画像処理手段へ出力する
ことを特徴とする請求項12から15の何れか一項に記載の画像処理装置。 - 前記第一のメモリは、
前記画素群の横の画素数と同じ画素数の画素のデータを書き込み可能な一時バッファと、
高さ方向にて、前記一時バッファと合わせて、前記画素群の縦の画素数と同じ画素数の画素のデータを書き込み可能であり、
幅方向にて、前記画素群の横の画素数以上の画素数の画素のデータを書き込み可能であるメモリ空間とを有し、
前記制御手段は、前記一時バッファに、前記画素群の横の画素数と同じ画素数の画素のデータを書き込まれたタイミングで、前記第一のメモリから前記第二の画像データの画素のデータを読み出して前記画像処理手段へ出力する
ことを特徴とする請求項16に記載の画像処理装置。 - 前記第一の画像データを保持する第二のメモリと、
前記制御手段の指示により、前記第二のメモリから読み出した前記第一の画像データを前記第一のメモリに書き込むことで、前記第一の画像データを転送する転送手段と、を備え、
前記制御手段は、前記転送手段によって前記第一の画像データを所定のタイミングで前記第二のメモリから読み出して前記第一のメモリに出力する
ことを特徴とする請求項17に記載の画像処理装置。 - 前記制御手段は、前記画像処理装置への入力画像データの水平方向の画素数を前記第一のメモリの高さ方向の画素数で除算して得た数の画素を超えて前記画像処理手段へ出力したタイミングで、前記転送手段によって前記第一の画像データを前記第二のメモリから読み出して前記第一のメモリに出力する
ことを特徴とする請求項18に記載の画像処理装置。 - 前記制御手段は、前記第一のメモリの1ラインの領域への前記第一の画像データの書込み期間中に、前記第一のメモリから前記第一の画像データを読み出して前記生成手段に出力する
ことを特徴とする請求項18または19に記載の画像処理装置。 - 前記制御手段は、前記第一の画像データを前記第一のメモリの上位ラインへ書き込む
ことを特徴とする請求項18から20の何れか一項に記載の画像処理装置。 - 画像処理が行われる第一の画像データ及び当該第一の画像データを圧縮処理した第二の画像データを第一のメモリに保持する保持ステップと、
前記第一のメモリから前記第一の画像データを取得し、前記画像処理のときと異なる走査方式で圧縮処理を実行して第二の画像データを生成する生成ステップと、
前記第一のメモリへの前記第一及び第二の画像データの書き込み及び読み出しを制御する制御ステップと、
を有し、
前記制御ステップでは、前記第一の画像データを所定のタイミングで前記第一のメモリから読み出すことで、前記第一のメモリにて前記第一及び第二の画像データが上書きされないよう制御する
ことを特徴とする画像処理方法。 - 画像処理のときと異なる走査方式で扱われる第一の画像データ及び当該第一の画像データを伸長処理して、前記画像処理が行われる第二の画像データを第一のメモリに保持する保持ステップと、
前記第一のメモリから前記第一の画像データを取得し、伸長処理を実行して前記第二の画像データを生成する生成ステップと、
前記第一のメモリへの前記第一及び第二の画像データの書き込み及び読み出しを制御する制御ステップと、
を有し、
前記制御ステップでは、前記第一の画像データを所定のタイミングで前記第一のメモリから読み出すことで、前記第一のメモリにて前記第一及び第二の画像データが上書きされないよう制御する
ことを特徴とする画像処理方法。 - コンピュータを、請求項1から10の何れか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
- コンピュータを、請求項11から21の何れか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019098734A JP2020195038A (ja) | 2019-05-27 | 2019-05-27 | 画像処理装置、画像処理方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019098734A JP2020195038A (ja) | 2019-05-27 | 2019-05-27 | 画像処理装置、画像処理方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020195038A true JP2020195038A (ja) | 2020-12-03 |
Family
ID=73546613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019098734A Pending JP2020195038A (ja) | 2019-05-27 | 2019-05-27 | 画像処理装置、画像処理方法、およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020195038A (ja) |
-
2019
- 2019-05-27 JP JP2019098734A patent/JP2020195038A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10026146B2 (en) | Image processing device including a progress notifier which outputs a progress signal | |
KR100201981B1 (ko) | 메모리제어장치 및 그것을 사용한 화상디코더 | |
JP4971442B2 (ja) | ピクセルデータ変換のための画像処理装置及び方法 | |
JP2010081182A (ja) | 画像処理装置 | |
US8269786B2 (en) | Method for reading and writing image data in memory | |
JP3322613B2 (ja) | 映像信号変換器 | |
JP5585885B2 (ja) | 画像処理装置及び画像処理方法 | |
JP5072419B2 (ja) | 画像表示装置 | |
US20050062860A1 (en) | Frame memory device and method | |
JP2020195038A (ja) | 画像処理装置、画像処理方法、およびプログラム | |
JP3508630B2 (ja) | デジタル画像入出力を備えるフレームバッファ装置および画像表示装置 | |
JP4723427B2 (ja) | 画像処理回路および画像処理システムならびに画像処理方法 | |
JP3569961B2 (ja) | ディジタル映像信号復号装置 | |
JP2003304481A (ja) | 画像処理装置と画像処理方法 | |
US20100254618A1 (en) | Method for Accessing Image Data and Related Apparatus | |
JP2011164190A (ja) | 画像処理装置および画像表示装置 | |
JP2008219848A (ja) | 画像ファイルの復号表示回路及び画像表示方法 | |
TW201543432A (zh) | 源極驅動器、驅動電路及顯示裝置 | |
JP2006109190A (ja) | 画像データ処理装置 | |
KR0130452B1 (ko) | 영상복호장치 | |
JP5891907B2 (ja) | 符号化装置および符号化方法、ならびに、復号装置および復号方法 | |
JPH1023403A (ja) | 符号化画像データの復号および表示装置 | |
JP5359785B2 (ja) | 画像処理装置 | |
JP2001186524A (ja) | ビデオ信号復号装置 | |
JP2011097371A (ja) | 画像処理装置 |