JP4686048B2 - Pixel arithmetic unit - Google Patents
Pixel arithmetic unit Download PDFInfo
- Publication number
- JP4686048B2 JP4686048B2 JP2001125119A JP2001125119A JP4686048B2 JP 4686048 B2 JP4686048 B2 JP 4686048B2 JP 2001125119 A JP2001125119 A JP 2001125119A JP 2001125119 A JP2001125119 A JP 2001125119A JP 4686048 B2 JP4686048 B2 JP 4686048B2
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- unit
- data
- processing
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Processing (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、画像をリサイズするためのフィルタリング回路を含む画素演算装置に関する。
【0002】
【従来の技術】
近年、デジタル映像機器の技術進歩が著しく、動画の圧縮処理/伸張処理、リサイズ等を扱ういわゆるメディアプロセッサが実用化されている。
画像のリサイズには、FIR(finite impulse response)フィルタがよく用いられる。
【0003】
図1は、従来技術におけるFIRフィルタ処理を行う回路例を示すブロック図である。同図はタップ数7、係数が対称なFIRフィルタである。
同図において、データ入力端子1001より時系列的に入力されたデータは、遅延器1002、1003、1004、1005、1006、1007とこの順に順次転送される。フィルタ係数が対称である場合、つまりデータ入力端子の入力及び各遅延器の出力(タップと呼ばれる)に対応する係数が、中央のタップ(遅延機1004の出力)に対して対称である場合、各タップのデータにフィルタ係数を乗算するのではなく、同じ係数のタップのデータ同士の加算を行ってから係数を乗算する。
【0004】
例えば、データ入力部1001の入力データと遅延器1007の出力データは、加算器1008で加算され、さらに乗算器1008にて加算結果と係数h0とが乗算される。遅延器1002の出力と遅延器1006の出力は、加算器1009で加算され、さらに、乗算器1009にて加算結果と係数h1とが乗算される。
乗算器1011〜乗算器1014の各出力データは、加算器1015により加算される。加算器1015の出力データはフィルタ処理結果としてデータ出力端子1016から時系列的に出力される。係数h0〜h3は画像の縮小率に応じて定められる。例えば縮小率が1/2であれば、時系列の出力データを1/2に間引くことにより縮小画像が得られる。
【0005】
また、フィルタ係数が対称に選ばれるのは、直線位相(位相特性が周波数に対して直線になること)が得られることにより画像の視覚上好ましいからである。
【0006】
【発明が解決しようとする課題】
しかしながら、上記従来の方法では、画像データに対してフィルタリング処理を行う場合、回路の構成上、画像を構成する画素データを端から順に入力していくので、1クロックで入力できる画素データは1つであるため、処理速度を高めるには動作周波数を高める必要がある。高い動作周波数での動作は、コスト及び消費電力大きくなるという問題がある。
【0007】
また、従来の方法ではタップ数毎に回路が異なるため自由度がなく、タップ数毎別に回路を設けると莫大なコストがかかってしまう。
本発明の第1の目的は、タップ数を可変にすることができ、周波数を上げずに処理を高速化するフィルタリング処理を行う画素演算装置を提供することにある。
【0008】
本発明の第2の目的は、さらにフィルタリング処理だけでなくMC(動き補償)処理にも利用可能で、回路規模の小型化を図った画素演算装置を提供することにある。
第3の目的は、さらにフィルタリング処理だけでなくME(動き予測)処理にも利用可能であり、回路規模の小型化を図った画素演算装置を提供することにある。
【0009】
第4の目的は、さらにフィルタリング処理だけでなく、デジタル映像機器におけるOSD(On Screen Display)処理にも利用であり、回路規模の小型化を図った画素演算装置を提供することにある。
【0010】
【課題を解決するための手段】
上記第1の目的を達成する画素演算装置は、フィルタ処理を行う画素演算装置であって、N個の画素処理手段と、N個の画素データ及びフィルタ係数を供給する供給手段と、N個の画素処理手段を並列に動作させる制御手段とを備える。
各画素処理手段は、供給手段に供給された画素データとフィルタ係数とを用いて演算した後、各画素処理手段に対して隣接する画素処理手段から画素データを取得し、取得した画素データを用いて演算して演算結果を累積する。前記制御手段は、隣接する画素処理手段からの画素データの取得と、取得した画素データを用いた演算及び累積とをタップ数に応じた回数繰り返すようN個の画素処理手段を制御する。
【0011】
ここで、前記N個の画素処理手段は、N個の画素データを右シフトする第1シフタと、N個の画素データを左シフトする第2シフタを形成する。各画素処理手段は、隣接する2つの画素処理手段からシフトアウトされる2つの画素データを用いて演算する。
上記第2の目的を達成する画素演算装置は、画素データとして差分画像の画素データと参照フレームの画素データとを供給手段から供給する。
【0012】
【発明の実施の形態】
本発明の画素演算ユニットは、主に(a)画像の拡大/縮小に用いられるフィルタ処理、(b)動き補償(Moving Compensation、以下ME)処理、(c)OSD(On Screen Display)処理、(d)動き予測(Moving Estimation、以下ME)処理などを選択的に実行するように構成される。(a)フィルタ処理については、画素演算ユニットは、でタップ数を固定することなく可変とし、水平方向又は垂直方向に連続する複数の画素(例えば16画素)を並列に処理する。さらに、垂直方向のフィルタ処理は、圧縮動画データの伸長処理と同期して行う。
【0013】
以下、本発明の実施の形態における画素演算ユニットについて次の順に説明する。
1 メディアプロセッサの構成
1.1 画素演算ユニットの構成
1.2 画素並列処理部の構成
2.1 フィルタ処理
2.2 MC(動き補償)処理
2.3 OSD(オンスクリーンディスプレイ)処理
2.4 ME(動き予測)処理
3.1 垂直フィルタ処理(その1)
3.1.1 1/2縮小
3.1.2 1/4縮小
3.2 垂直フィルタ処理(その2)
3.2.1 1/2縮小
3.2.2 1/4縮小
4 変形例
<1 メディアプロセッサの構成>
本実施形態における画素演算ユニットがメディア処理(圧縮音声動画データの伸長処理、音声動画データの圧縮処理など)を行うメディアプロセッサに内臓されている場合について以下説明する。メディアプロセッサは、例えばデジタルTV放送を受信するセットトップボックス、テレビ受像機、DVD録画再生装置などに実装される。
【0014】
図2は、画素演算ユニットを備えるメディアプロセッサの構成を示すブロック図である。同図においてメディアプロセッサ200は、デュアルポートメモリ100、ストリームユニット201、入出力バッファ(以下I/Oバッファと略す)202、セットアッププロセッサ203、ビットストリームFIFO204、可変長符号復号部(VLD)205、可変長符号復号部205、変換エンジン(Transfer Engine、以下TE)206、画素演算ユニットA(以下POUA)207、画素演算ユニットB(以下POUB)208、POUC209、オーディオユニット210、IOP211、入出力プロセッサ(以下IOP)211、ビデオバッファメモリ212、ビデオユニット213、ホストユニット214、RE215、フィルタ部216を備える。
【0015】
デュアルポートメモリ100は、外部メモリ220に対する入出力ポート(以下外部ポート)と、メディアプロセッサ200内部に対する入出力(以下内部ポートと呼ぶ)と、キャッシュメモリとを備え、メディアプロセッサ200内の各構成要素のうち外部メモリ220にデータを読み書きする構成要素(以下マスターデバイス)からのアクセス要求を内部ポートから受け付け、受け付けたアクセス要求に従って外部メモリ220をアクセスする。その際、デュアルポートメモリ100は、内部のキャッシュメモリに外部メモリ220のデータの一部をキャッシングする。また、外部メモリ220はSDRAMやRDRAMなどのメモリであり、圧縮動画データ、圧縮音声データ、復号後の音声データ、復号後の動画データなどを一時的に記憶する。
【0016】
ストリームユニット201は、外部からストリームデータ(いわゆるMPEGストリーム)を入力し、入力されたストリームデータをビデオエレメンタリーストリーム、オーディオエレメンタリーストリームに分離し、それぞれをI/Oバッファ202に書き込む。
I/Oバッファ202は、ビデオエレメンタリーストリーム、オーディオエレメンタリーストリーム、オーディオデータ(伸長されたオーディオデータ)を一時的に保持するバッファメモリである。ビデオエレメンタリーストリーム、オーディオエレメンタリーストリームはそれぞれストリームユニット201からI/Oバッファ202に格納され、さらにIOP211の制御によってデュアルポートメモリ100を介して外部メモリ220に格納される。オーディオデータは、IOP211の制御によって外部メモリ220からデュアルポートメモリ100を介してI/Oバッファ202に格納される。
【0017】
セットアッププロセッサ203は、オーディオエレメンタリーストリームのデコード(伸長)と、ビデオエレメンタリーストリームのマクロブロックのヘッダ解析とを行う。オーディオエレメンタリーストリーム及びビデオエレメンタリーストリームは、IOP211の制御によって、外部メモリ220からデュアルポートメモリ100を介してビットストリームFIFO204に転送される。セットアッププロセッサ203はビットストリームFIFO204からオーディオエレメンタリーストリームを読み出してデコードし、デコード後のオーディオデータをセットアップメモリ217に格納する。セットアップメモリ217内のオーディオデータは、IOP211によってデュアルポートメモリ100を介して外部メモリ220に転送される。また、セットアッププロセッサ203は、ビットストリームFIFO204からビデオエレメンタリーストリームを読み出してマクロブロックヘッダを解析し、解析結果をVLD205に通知する。
【0018】
ビットストリームFIFO204は、ビデオエレメンタリーストリームを可変長符号復号部205に、オーディオエレメンタリーストリームをセットアッププロセッサ203に供給するためのFIFOメモリである。ビデオエレメンタリーストリーム及びオーディオエレメンタリーストリームは、IOP211の制御によって外部メモリ220からデュアルポートメモリ100を介してビットストリームFIFO204に転送される。
【0019】
VLD205は、ビットストリームFIFO204から供給されるビデオエレメンタリーストリームに含まれる可変長符号を復号する。この復号結果はマクロブロック単位のDCT係数群である。
TE206は、VLD205の復号結果に対してマクロブロック単位にIQ(逆量子化)処理及びIDCT(逆DCT)処理を行う。これらの処理結果はマクロブロックである。1マクロブロックは、4つの輝度ブロック(Y1〜Y4)と2つの色差ブロック(Cb、Cr)からなる。1ブロックは8×8画素である。但し、Pピクチャ、Bピクチャについては1ブロックは8×8個の差分値としてTE206から出力され。TE206は復号結果をデュアルポートメモリ100を介して外部メモリ220に格納する。
【0020】
POUA207は、主に(a)フィルタ処理、(b)MC処理、(c)OSD処理、(d)動き予測(Moving Estimation)処理などを選択的に実行する。
(a)のフィルタ処理では、POUA207は外部メモリ220に格納されたビデオデータ(フレームデータ)に含まれる16個の画素データを並列にフィルタリングし、フィルタリング後の16個の画素を間引く又は補間することにより縮小、拡大する。縮小語の後のデータはPOUC209の制御によってデュアルポートメモリ100を介して外部メモリ220に格納される。
【0021】
(b)のMC処理では、POUA207は、TE206によって外部メモリ220に格納されたPピクチャ及びBピクチャについてのIQ及びIDCT処理結果(つまり画素データの差分値)と、参照フレーム中の画素データとを16並列に加算する。16組の差分値と画素データは、セットアッププロセッサ203におけるマクロブロックヘッダ解析によって検出された動きベクトルに従って、POUC209によってPOUA207に入力される。
【0022】
(c)OSD処理では、POUA207は、外部メモリ220等に格納されたOSD画像(静止画)をデュアルポートメモリ100を介して入力し、外部メモリ220内の表示用フレームデータに上書きする。ここでOSD画像とは、ユーザのリモコン操作などに応じて表示されるメニュー画像や、時刻表示、チャネル番号表示などをいう。
【0023】
(d)のME処理とは、未圧縮のフレームデータ内の符号化対象のマクロブロックに対して、参照フレーム中の相関性の高い矩形領域を探索し、符号化対象のマクロブロックから相関性の最も高い矩形領域を指す動きベクトルを求める処理である。POUA207は、符号化対象のマクロブロックの画素と、探索領域内の矩形領域の画素との差分を16個並列で算出する。
【0024】
POUB208は、POUA207と同一構成であり、上記(a)〜(d)の処理を動的に分担する。
POUC209は、POUA207及びPOUB208に対する画素データ群の供給と、処理結果の外部メモリ220への転送とを制御する。
オーディオユニット210は、I/Oバッファ202に格納されたオーディオデータを出力する。
【0025】
IOP211は、メディアプロセッサ200内のデータ入出力(データ転送)を制御する。データ転送には次の種類がある。第1は、I/Oバッファ202に格納されたストリームデータをデュアルポートメモリ100を介して外部メモリ220内のストリームバッファ領域に転送することである。第2は、外部メモリ220に格納されたビデオエレメンタリーストリーム及びオーディオエレメンタリーストリームをデュアルポートメモリ100を介してビットストリームFIFO204に転送することである。第3は、外部メモリ220に格納されたオーディオデータをデュアルポートメモリ100を介してI/Oバッファ202に転送することである。
【0026】
ビデオユニット213は、外部メモリ220のビデオデータ(画像フレーム)から2,3ライン分の画素データを読み出して、ビデオバッファメモリ212に格納し、その2,3ライン分の画素データを映像信号に変換して外部に接続されたテレビ受像器等のディスプレィ装置に出力する。
ホストユニット(HOST)214は、外部のホストマイコンからの指示を受け取り、指示に応じてMPEGデコード、MPEGエンコード、OSD処理、縮小・拡大処理など開始・終了を制御する。
【0027】
レンダリングエンジン(RE)215は、マスターデバイスであり、コンピュ−タ・グラフィックスにおけるレンダリング処理を行う。外部に専用LSI218とが接続されている場合に間でデータ入出力を行う。
フィルタ216は、静止画データの拡大縮小処理を行う。外部に専用LSI218とが接続されている場合に間でデータ入出力を行う。
【0028】
上記ではメディアプロセッサが、ストリームユニット201からストリームデータを入力してデコード(伸長)する場合を中心に説明したが、圧縮されていないビデオデータ及びオーディオデータをエンコード(圧縮)する場合は、逆の流れとなる。その際、POUA207(又はPOUB208)はME処理を、TE206はDCT処理及びQ(量子化)処理を、VLD205は可変長符号化を、行う。
<1.1 画素演算ユニットの構成>
図3は、画素演算ユニットの構成を示すブロック図である。
【0029】
POUA207とPOUB208は同じ構成であるため、ここではPOUA207を説明する。
同図のようにPOUA207は、画素並列処理部21、入力バッファ群22出力バッファ群23、命令メモリ24、命令デコーダ25、指示回路26、DDA回路27を備える。
【0030】
画素並列処理部21は、画素転送部17、16個の画素処理部1〜画素処理部16、画素転送部18を備え、入力バッファ群22から入力される複数の画素を対象に上記(a)フィルタ処理、(b)MC処理、(c)OSD処理、(d)ME)処理を行い、出力バッファ群23に出力する。(a)〜(d)の各処理は、マクロブロック単位すなわち16画素を16回(16ライン分)繰り返すことにより終了する。各処理の起動は、POUC209により制御される。また、画素転送部17は、フィルタ処理において16個の画素のさらに左側(又は上側)の複数画素(ここでは8画素)を保持し、クロック毎に右シフトする。画素転送部18は、フィルタ処理において16個の画素のさらに右側(又は下側)の複数画素(ここでは8画素)を保持し、クロック毎に左シフトアウトする。
【0031】
入力バッファ群22は、POUC209の制御により、デュアルポートメモリ100から転送される処理対象となる複数の画素を保持し、さらにフィルタ処理ではフィルタ係数も保持する。
出力バッファ群23は、画素並列処理部21による処理結果(16画素に対応する16の処理結果)の並びを任意に変更して一時的に保持する。フィルタ処理では画素の並びを変更して保持することにより画素の間引き(縮小時)又は補間(拡大時)とを行う。
【0032】
命令メモリ24は、フィルタ処理用のマイクロプログラム(フィルタμP)、MC処理用のマイクロプログラム(MCμP)、OSD処理用のマイクロプログラム(OSDμP)、ME処理用のマイクロプログラム(MEμP)を記憶している。これ以外にも命令メモリ24は、マクロブロックのフォーマット変換用のマイクロプログラム、画素の数値表現を変換するためのマイクロプログラムなどを記憶している。ここで、マクロブロックのフォーマットとは、MPEG規格に定められている「4:2:0」、「4:2:2」、「4:4:4」などのY、Cb、Crブロックの画素のサンプリングレートの比率をいう。画素の数値表現には画素のとりうる値として0〜255で表現される場合(一般的なMPEGデータ等)と−128〜127で表現される場合(DVカメラ等)がある。
【0033】
命令デコーダ25は、命令メモリ24からマイクロプログラム中のマイクロコードを逐次読み出して解読し、解読結果に従ってPOUA207内の各部を制御する。
指示回路26は、POUC209から命令メモリ24のどのマイクロプログラムを起動すべきかの指示(開始アドレス等)を受付けて、指示されたマイクロプログラムを起動する。
【0034】
DDA回路27は、フィルタ処理において、入力バッファ群22に保持されたフィルタ係数群の選択制御を行う。
<1.2 画素並列処理部の構成>
図4、図5は、画素並列処理部の左半分、右半分の詳細な構成を示すブロック図である。
【0035】
図4において画素転送部17は、8個の入力ポートA1701〜H1708、画素データ保持し1クロック時間遅延する8個の遅延器A1701〜遅延器H1709、入力ポートの画素データと左の遅延器出力の内一方を選択する7個の選択部A1717〜G1723から構成され、入力バッファ群22から並列入力される8画素を8つの遅延器に保持し、8つの遅延器に保持した画素をクロック同期して右シフトする右シフタとして機能する。
【0036】
図5において画素転送部18は画素転送部17と比べシフトする方向が左である点で異なり、これ以外は同様の構成なので説明を省略する。
図4、図5における16個の画素処理部1〜画素処理部16は、いずれも同一構成であるので、画素処理部2を代表として説明する。
画素処理部2は、入力ポートA201〜入力ポートC203と、選択部A204、B205、遅延器A206〜D209、加算器A120、乗算器A211、加算器B212、出力ポートD213とから構成される。
【0037】
選択部A204は、入力ポートA201から入力される画素データと左隣の画素転送部17から出力される画素データとのうち一方を選択する。
選択部A204と遅延器A206は、右隣の画素処理部3から入力される画素データを左隣の画素処理部1にシフト出力する機能も果たす。
選択部B205は、入力ポートB202から入力される画素データと右隣外部メモリ220からシフト出力される画素データとのうち一方を選択する。
【0038】
選択部B205と遅延器B207は、左隣の画素処理部1から入力される画素データを右隣の画素処理部3にシフト出力する機能も果たす。
遅延器A206、遅延器B207はそれぞれ選択部A204、選択部B205に選択された画素データを保持する。
遅延器B207は、入力ポートC203からの画素データを保持する
加算器A120は遅延器A206と遅延器B207から出力される画素データを加算する。
【0039】
乗算器A211は、加算器A120の加算結果と遅延器C208からの画素データとを乗算する。この乗算器A211はフィルタ処理では画素データとフィルタ係数との乗算に利用される。
加算器B212は、乗算器A211の乗算結果を遅延器D209のデータとを加算する。
【0040】
遅延器D109は、加算器B212の加算結果を累積する。
画素処理部2は、これらの構成要素を選択的に組み合わせて動作させることにより上記(a)フィルタ処理、(b)MC処理、(c)OSD処理、(d)ME処理を実行する。これらの構成要素を選択的に組み合わせる動作は、命令メモリ24及び命令デコーダ25によるマイクロプログラム制御によってなされる。
【0041】
図6(a)は、入力バッファ群22の詳細な構成を示すブロック図である。
同図のように入力バッファ群22は、画素転送部17に画素データを供給する8個のラッチ221と、画素処理部1〜16に画素データを供給する16個のラッチ部222と、画素転送部18に画素データを供給する8個のラッチ223とから構成される。これらは、POUC209の制御により外部メモリ220からデュアルポートメモリ100を介して画素データ群が転送される。
【0042】
各ラッチ部222は、画素処理部の入力ポートA、Bに画素データを供給する2個のラッチと、画素処理部の入力ポートCに画素データ又はフィルタ係数を供給する選択部224からなる。
図6(b)は、選択部224の詳細な構成を示すブロック図である。
同図のように選択部224は、8つのラッチ224a〜224hと、8つのラッチからデータの何れか1つを選択するセレクタ224iとからなる。
【0043】
ラッチ224a〜224hは、フィルタ処理においてフィルタ係数a0〜a7(又はa0/2、a1〜a7)を保持する。これらフィルタ係数は、POUC209により外部メモリ220からデュアルポートメモリ100を介してラッチ224a〜224hに転送される。
セレクタ224iは、DDA回路27の制御によってクロックに同期してラッチ224aから224hに順次選択される。このようにフィルタ係数の画素処理部への供給は、マイクロコードにより直接制御されるのではなく、DDA回路27によりハードウェアにより制御されるので高速化される。
【0044】
図7は、出力バッファ群23の構成を示すブロック図である。
同図のように出力バッファ群23は、16個のセレクタ24a〜24pと、16個のラッチ23a〜23pとからなる。
セレクタ24a〜24pは、いずれも画素処理部1〜16の16個の処理結果が入力され、そのうち1つを選択する。この選択制御は命令デコーダ25によってなされる。
【0045】
ラッチ23a〜23pはそれぞれセレクタ24a〜24pの選択結果を保持する。
例えば、フィルタ処理の結果を1/2に縮小する場合には、16個の画素に対する画素処理部1〜16の16個の処理結果のうち、画素処理部1、3、5、・・・15の処理結果を8個のセレクタ24a〜24hが選択してラッチ23a〜23hに格納され、さらに、次の16個の画素に対する画素処理部1〜16の16個の処理結果のうち、画素処理部2、4、6、・・・16の処理結果を8個のセレクタ24i〜24pが選択してラッチ23i〜23pに格納される。このようにして画素が間引かれ、1/2縮小された16個の画素データが出力バッファ群23に保持され、さらにPOUC209の制御によりデュアルポートメモリ100を介して外部メモリ220に転送される。
<2.1 フィルタ処理>
画素演算ユニットにおけるフィルタ処理の詳細について説明する。
【0046】
POUC209はフィルタ処理の対象となるマクロブロックを特定し、POUA207又はPOUB208に対して32個の画素データ及びフィルタ係数a0/2,a1〜a7を初期値として入力バッファ群22に転送し、さらに指示回路26にタップ数の通知とともにフィルタ処理の開始を指示する。
図8は、画素演算ユニット(POUA207)にてフィルタ処理を行う場合の画素データの初期入力値を示す図である。同図において入力ポート欄は図4、図5に示した各入力ポートを意味する。入力画素欄は、入力バッファ群22から各入力ポートに供給される画素データを意味する。出力ポート欄は図4、図5に示した出力ポートD(加算器B出力)を、出力画素欄はその出力値を意味する。
【0047】
入力ポートに画素データを供給する入力バッファ群22には、図9に示すように水平方向に連続する32個の画素データX1〜X32が、POUC209によって転送されて保持されている。ここでのフィルタ処理の対象はX9〜X24の16個の画素データである。図8のように画素処理部1〜16の入力ポートA及びBには画素データX9〜X24が、入力ポートCには入力バッファ群22にて選択されたフィルタ係数a0/2が初期値として供給される。
【0048】
さらに、入力バッファ群22から初期入力値が画素並列処理部21に供給された後、フィルタ処理として所望するタップ数に応じた数のクロック入力によりフィルタ処理がなされる。
図10は、16個の画素処理部のうち画素処理部1を代表として、その演算過程を示す説明図である。同図では、入力クロック数毎に、画素処理部1内の遅延器A〜Dの保持内容と、加算器Bの出力値とを記している。また、図11は、画素処理部1のクロック入力毎の出力ポートD(加算器B出力)の出力値を示す図である
画素処理部1は最初のクロック入力(CLK1)によって初期入力値として遅延器A及びBは画素データX9を、遅延器Dはフィルタ係数a0/2を保持し、遅延器Dは0クリアされる。このとき選択部A及びBは何れも入力ポートを選択している。その結果加算器Aは(X9+X9)を、乗算器Aは(X9+X9)*a0/2を、加算器Bは(X9*a0/2+0(つまりa0*X9)を出力する(図11参照)。
【0049】
2回目のクロック入力(CLK2)以降では、選択部A及びBは入力ポートA、Bではなく隣接する画素処理部又は画素転送部からのシフト出力を選択する。
2回目のクロック入力(CLK2)によって、遅延器A〜Dには、画素データX10、X8、フィルタ係数a1、a0*X9を保持する。その結果、加算器Bはa0*X9+a1(X10+X8)を出力する(図11参照)。このように2回目は、フィルタ係数a1(遅延器C)と、両隣からシフト出力される画素データの和(加算器A)とを乗算器Aにて乗算している。加算器Bは、この乗算結果と遅延器Dの累積値とを加算している。
【0050】
3回目のクロック入力(CLK3)では、画素処理部1は2回目のクロック入力と同様に動作をすることにより、加算器Bからa0*X9+a1(X10+x8)+a2(X11+X7)を出力する。
4回目〜9回目のクロック入力(CLK4〜CLK9)でも同様に動作をすることにより、加算器Bは図11に示す出力値をそれぞれ出力することになる。
【0051】
このようにして、画素処理部1のファイルタ処理結果(出力データ)は9クロックの場合、
a0・X9+a1(X10+X8)+a2(X11+X7)+a3(X12+X6)
+a4(X13+X5)+a5(X14+X4)+a6(X15+X3)+a7(X16+X2)+a8(X17+X1)
となる。
【0052】
図10、図11ではCLK9までの処理過程を示しているが、入力クロック数はPOUC209から通知されたタップ数に応じて命令デコーダ25の制御によって打ち切られる。すなわち、各画素処理部は、タップ数3の場合はCLK2でフィルタ処理を終了し、タップ数5の場合はCLK3で終了し、タップ数7の場合はCLK4でフィルタ処理を終了する。別言すると、タップ数(2n−1)のフィルタ処理ではn回のクロック入力で終了する。
【0053】
命令デコーダ25は16画素の並列処理を16ライン分繰り返し、これにより4ブロックのフィルタ処理を終える。その際、16個のフィルタ処理結果は、出力バッファ群23において間引き処理または補間処理されることによって縮小又は拡大される。出力バッファ群23の縮小又は拡大後の画素群は16個保持される毎にPOUC209の制御によってデュアルポートメモリ100を介して外部メモリ220に転送される。また、命令デコーダ25は、16ライン目終了時にPOUC209に終了した旨を通知する。POUC209は、次のマクロブロックについて上記と同様にPOUA207を初期入力値とフィルタ係数の供給及びフィルタ処理の開始を指示する。
【0054】
なお、画素処理部2のファイルタ処理結果は9クロックの場合次式となる。
a0・X10+a1(X11+X9)+a2(X12+X8)+a3(X13+X7)
+a4(X14+X6)+a5(X15+X5)+a6(X16+X4)+a7(X17+X3)+a8(X18+X2)
画素処理部3のファイルタ処理結果は9クロックの場合次式となる。
a0・X11+a1(X12+X10)+a2(X13+X9)+a3(X14+X8)
+a4(X15+X7)+a5(X16+X6)+a6(X17+X5)+a7(X18+X4)+a8(X19+X3)
画素処理部4〜16のファイルタ処理結果も画素位置が異なるのみで同様なので省略する。
【0055】
このように画素並列処理部21は、16個の入力画素に対して並列にフィルタ処理を実行し、しかも入力クロック数の制御によってタップ数を任意にすることができる。
なお、図8では、画素処理部1の入力ポートA、B、Cの入力画素が(X9、X9、a0/2)としているが、(X9、0、a0)又は(0、X9、a0)としてもよい。画素処理部2〜16も対象画素が異なるだけで同様にしてもよい。
<2.2 MC(動き補償)処理>
復号対象フレームがPピクチャである場合のMC処理の詳細について説明する。
【0056】
POUC209は指示回路26にMC処理の開始を指示するとともに、MC処理の対象となる復号処理中のフレーム内のマクロブロック(差分値)と、参照フレームにおける動きベクトルが指す矩形領域を特定し、POUA207又はPOUB208に対して16個の差分値D1〜D16及び矩形領域内の16個の画素データP1〜P16を入力バッファ群22に設定する。
【0057】
図12は、画素演算ユニットにてMC処理(Pピクチャ)を行う場合の入出力画素データを示す図である。同図において入力ポート欄は、図4及び図5に示した画素転送部17、画素処理部1〜16、画素転送部18の入力ポートを意味する。入力画素欄は、入力ポートに入力される画素データを意味する。MC処理では画素転送部17及び18は使用されないので、入力画素は何であってもよい(don't care)。出力ポート欄は図4、図5に示した出力ポートD(加算器B出力)を、出力画素欄はその出力値を意味する。
【0058】
図13はMC処理における画素処理部1〜16への入力画素の説明図である。同図に示すようにD1〜D16は復号対象フレームのマクロブロック(MB)中の16個の差分値である。P1〜P16は参照フレームにおいて動きベクトルが指す矩形領域中の16個の画素データである。
MC処理では、画素処理部1〜16内の選択部A、Bはそれぞれ常に入力ポートA、Bを選択する。これにより、入力ポートAからの画素データ、入力ポートBからの差分値は、選択部A、Bを介して遅延器A、Bに入力され保持され、さらに加算器Aにて加算される。この加算結果は乗算器にて1倍され、加算器Bにて0を加えられて出力ポートDから出力される。つまり入力ポートAからの画素データと入力ポートBからの差分値と単純に加算され出力ポートDから出力される。
【0059】
さらに16個の加算結果は出力バッファ群23に格納され、POUC209によりデュアルポートメモリ100を介して外部メモリ220内の復号対象フレームに書き戻される。
以上の処理を復号対象フレームの16画素単位に繰り返すことによりMC処理がなされる。なお、各画素処理部では単純加算しているだけであり1クロック毎に16画素の加算結果を得ることができる。
【0060】
次に復号対象フレームがBピクチャの場合のMC処理を説明する。
図14は、画素演算ユニットにてMC処理(Bピクチャ)を行う場合の入出力画素データを示す図である。同図において入力ポート欄、入力画素欄、出力ポート欄、出力画素欄は、図12と同様である。ただし、入力画素欄は第1クロック(CLK1)と第2クロック(CLK2)と2回に分けて入力される点が図12と異なっている。
【0061】
P1〜P16と、B1〜B16は異なる2つの参照フレームにおいてそれぞれ動きベクトルが指す矩形領域中の16個の画素データである。
MC処理では、画素処理部1〜16内の選択部A、Bはそれぞれ常に入力ポートA、Bを選択する。第1クロック(CLK1)において入力ポートA、Bから選択部A、Bを介して遅延器A、BにP1、B1が保持され、同時に入力ポートCから定数1/2遅延器Cに保持される。これにより乗算器Aから(P1+B1)/2が得られる。第2クロック(CLK2)において、乗算結果(P1+B1)/2が遅延器Dに保持され、同時に入力ポートA、B、Cからの(1,0,D1)が遅延器A、B、Cに保持されるので、乗算器AからのD1と遅延器Dからの(P1+B1)/2とが加算器Bにより加算される。その結果出力ポートから(P1+B1)/2+D1が出力される。
【0062】
さらに16個の加算結果は出力バッファ群23に格納され、POUC209によりデュアルポートメモリ100を介して外部メモリ220内の復号対象フレームに書き戻される。
以上の処理を復号対象フレームの16画素単位に繰り返すことによりBピクチャに対するMC処理がなされる。
<2.3 OSD(オンスクリーンディスプレイ)処理>
POUC209は指示回路26にOSD処理の開始を指示するとともに、外部メモリ220に保持されたOSD画像から順次16個の画素データX1〜X16を読み出して入力バッファ群22に設定する。
【0063】
図15は、画素演算ユニットにてOSD(オンスクリーンディスプレイ)処理を行う場合の入出力画素データを示す図である。
同図において画素転送部17、18は使用されない。画素処理部1〜16の入力ポートAには入力バッファ群22から画素データX1〜X16が、入力ポートBにはそれぞれ0が、入力ポートCにはそれぞれ1が入力される。図16にOSD画像中の16個の画素が順次入力バッファ群22に書き込まれる様子を示す。
【0064】
画素処理部1〜16内の各選択部A、Bは、OSD処理では入力ポートを常に選択する。例えば、画素処理部1では、入力ポートAの画素データX1、入力ポートBの”0”は、それぞれ遅延器A、Bに保持され、さらに加算器Aにより加算される(X1+0=X1)。加算結果は乗算器Aにて入力ポートCから入力された”1”と乗算され加算器Bにて”0”が加算される。その結果、入力ポートAの画素データX1はそのまま加算器Bから出力されることになる。同様に画素処理部2〜画素処理部16からの入力ポートAの画素データX2〜X16がそのまま加算器Bから出力される。
【0065】
加算器Bから出力された画素データX1〜X16は出力バッファ群23に格納され、さらにPOUC209によってデュアルポートメモリ100を介して外部メモリ220内の表示用フレームデータに上書きされる。
上記処理を図16に示したように、OSD画像全体に繰り返すことにより、外部メモリ220内のOSD画像を表示用フレームデータに上書きコピーすることになる。これは、OSD処理のうち最も単純な処理であり、POUA207又はPOUB208は単にOSD画像を16画素単位に中継しているだけである。
【0066】
なお、OSD処理の他の形態として、(1)OSD画像と表示用フレームデータとをブレンドしてもよい。ブレンド率が0.5の場合には、入力バッファ群22から画素処理部1〜画素処理部16の各入力ポートAにOSD画像の画素データ、各入力ポートBに表示用フレームデータの画素データを供給すればよい。
また、ブレンド率がα:(1−α)の場合は、入力バッファ群22から第1クロックにおいて各画素処理部の入力ポートA、B、Cに(OSD画像の画素データ、0、α)を、第2クロックにおいて(0、表示用フレームデータの画素データ、1−α)を供給すればよい。
【0067】
また、OSD画像を縮小表示する場合には、入力バッファ群22からOSD画像に上記フィルタ処理を施し、出力バッファ群23から表示用フレームデータ内の縮小表示すべき位置に上書きコピーすればよい。
さらに、OSD画像をフィルタ処理によって縮小した後上記ブレンドをするようにしてもよい。
<2.4 ME(動き予測)処理>
図17は、画素演算ユニットにてME(動き予測)処理を行う場合の入出力画素データを示す図である。同図の入力画素欄においてX1〜X16は符号化対象のフレーム中のマクロブロックの16画素であり、R1〜R16は参照フレーム中の16×16画素の矩形領域中の16画素である。図18はこれらの画素の関係を示す説明図である。同図の参照フレーム中動きベクトル(MV)探索範囲は、符号化対象のマクロブロックと同じ位置の周辺(例えば水平及び垂直方向に+16画素〜−16画素)の動きベクトルを探索する対象となる範囲である。このMV探索範囲には、16画素×16画素の矩形領域が、画素単位の探索であれば16×16通りの位置に存在し、ハーフペル(1/2画素)単位の探索であれば32×32通りの位置に存在する。図13ではMV探索範囲内の左上の矩形領域のみを図示している。
【0068】
ME処理は、MV探索範囲内の個々の矩形領域と、符合化対象のマクロブロックとの間で、各画素同士の差分の総和を求め、さらに総和が最小の矩形領域(つまり相関性の最も高い矩形領域)と符号化対象マクロブロックとの相対的な位置の変位を動きベクトルと決定する。符号化対象ブロックは相関性の最も高い矩形領域と差分がとられる。
【0069】
入力バッファ群22には、POUC209の制御によって、符号化対象の画素データX1〜X16と、一の矩形領域の画素データR1〜R16とが転送される。この矩形領域内の画素データR1〜R16はクロック毎に矩形領域内の1ライン分が転送される。従って一の矩形領域について16ライン分のR1〜R16が転送される。
図17によれば、図4に示した例えば画素処理部1は、第1クロックで入力ポートAの画素データX1と、入力ポートBの画素データR1との減算及び絶対値化が加算器Aにてなされ、乗算器Aを素通りする(1倍される)。加算器Bは乗算器出力と遅延器Dの保持データとの加算値が出力される。第1クロックでは加算器Bは1ライン目の|X1-R1|を出力することになる。
【0070】
第2クロックでは、遅延器に1ライン目の|X1-R1|が保持されるので、加算器Bは、乗算器Aからの2ライン目の|X1-R1|と遅延器Dに保持された1ライン目の|X1-R1|とを加算する。
第3クロックでは、遅延器に1及び2ライン目の|X1-R1|が累積されるので、加算器Bは、乗算器Aからの3ライン目の|X1-R1|と遅延器Dに保持された1ライン目の|X1-R1|とを加算する。
【0071】
同様の繰り返しにより第16クロックでは、加算器Bは、1〜16ラインまでの|X1-R1|の累積値(Σ|X1-R1|)を出力する。
画素処理部2〜16についても各々累積値(Σ|X1-R1|)〜(Σ|X16-R16|)がを出力する。
これら16個の累積値は第17クロックにおいて出力バッファ群23に保持され、POUC209によって取り出され、16個の累積値の合計が算出された後外部メモリ220内のワークエリアに保存される。
【0072】
以上により一矩形領域と符号化対象マクロブロックとの画素データの差分の総和の計算が終了する。
この後さらに、MV探索範囲内の他の矩形領域についても同様にして差分の総和が算出される。MV探索範囲内の全て矩形領域(あるいは必要な矩形領域)について差分の総和が算出されると、そのうち最小の値をもつ矩形領域が最も相関性の高い矩形領域と判断され、動きベクトルが生成される。
【0073】
なお、上記ME処理では画素処理部からの16個の累積値の合計を別途行っているが、16個の累積値の合計を画素処理部1〜16において算出するようにしてもよい。この場合、一の矩形領域についての16個の累積値は出力バッファ群23からそのまま外部メモリ220のワークエリアに保存しておき、このワークエリアに16個以上の矩形領域について累積値群が保存されたときに、画素処理部1〜16のそれぞれが1つの矩形領域を分担して16個の累積値を順次累積することにより差分の総和を求めるようにすればよい。
【0074】
また、上記ME処理では画素単位で差分の算出を行っているが、ハーフペル単位で行うようにしてもよい。その場合、ハーフラインと実ラインのうち、実ラインに対しては上記のように1クロックで|X1-R1|を算出し、ハーフラインに対しては、例えば2クロックのうち1クロックでハーフペルの画素値((R1+R1')/2)を算出し、次の1クロックで差分|X1-(R1+R1')/2|を算出するようにしてもよい。あるいは、5クロックのうち4クロックでハーフペルの画素値((R1+R1'+R2+R2')/4)を算出し、次の1クロックで差分を算出するようにしてもよい。
<3.1 垂直フィルタ処理(その1)>
図19は、図2に示したメディアプロセッサにおいて垂直フィルタ処理する場合のデータの流れを示した、メディアプロセッサの模式的なブロック図である。
【0075】
同図において、デコーダ部301は、図2中のビデオエレメンタリーストリームをデコード(伸長する)VLD205、TE206及びPOUA207(MC処理)に相当し、ビデオエレメンタリーストリームをデコード(伸長)する。
フレームメモリ302は、外部メモリ220に相当し、デコード結果のビデオデータ(フレームデータ)を保持する
垂直フィルタ303は、POUB208に相当し、垂直方向のフィルタ処理により垂直方向の縮小を行うする。
、バッファメモリ304は、外部メモリ220に相当し、縮小されたビデオデータ(表示用のフレームデータ)を保持する。
【0076】
画像出力部305は、ビデオバッファメモリ212、ビデオユニット213に相当し、表示フレームデータを映像信号に変換して出力する。
なお、POUA207はMC処理を、POUB208は垂直フィルタ処理を分担する。また、水平フィルタ処理による水平方向の縮小は、フレームメモリ302のデコードフレームデータに対してPOUA207、POUB208の一方が行うものとする。
<3.1.1 1/2縮小>
図20は、図19において1/2縮小処理を行う場合のフレームメモリ302、バッファメモリ304のデータ供給状態の時間変化を示す図である。
【0077】
図20において、グラフ701〜703の縦軸は、それぞれフィールドの垂直同期信号の周期Vを単位とする時間を示す。同図では5周期分を記してあり、グラフ70〜703では時間軸が一致している。グラフ701の横軸は、フレームメモリ302データ量を示す。グラフ7702の横軸は、バッファメモリ304のデータ量を示す。グラフ703は画像出力部305において出力中のフレーム(フィールド)を示す。
【0078】
グラフ701中の実線704はデコーダ部301からフレームメモリ302へのフレームデータの供給量を示している。破線705はフレームメモリ302から垂直フィルタ部303へのフレームデータの供給量を示している。
グラフ702中の破線706は垂直フィルタ部303からバッファメモリ304への1stフィールド縮小画像の供給量を示している。一点鎖線707は垂直フィルタ部303からバッファメモリ304への2ndフィールド縮小画像の供給量を示している。
【0079】
またグラフ702中の実線708はバッファメモリ304から画像出力部305への1stフィールド縮小画像データの供給状態を示している。1/2縮小の場合、縮小画像の表示位置はフレームの上半分の位置から下半分の位置までとりうるため、同図の実線709は表示位置に応じてタイミングが異なっている。同様に、実線709はバッファメモリ304から画像出力部305への2ndフィールド縮小画像データの供給状態を示している。
【0080】
グラフ701で示すように、デコーダ部301からフレームメモリ302へのnフレームのフレームデータの供給はn-1フレームの2ndフィールドのフレームメモリ302から垂直フィルタ部303への供給開始直後に開始し、フレームメモリ302から垂直フィルタ部303へのnフレームのフレームデータの供給はnフレームの1stフィールドのフレームメモリ302から垂直フィルタ部303への供給完了直前までに終了するように制御を行う。
【0081】
グラフ702で示すように、垂直フィルタ部303からバッファメモリ304へのnフレームの1stフィールドのフレームデータの供給はn-1フレームの2ndフィールド表示中に、nフレームの2ndフィールドのフレームデータの供給はnフレームの1stフィールド表示中にそれぞれ完了するように制御を行う。
このように装置を制御する事により、デコーダ部301からフレームメモリ302間は、2Vの期間に1フレームのフレームデータを転送する能力があれば十分である。フレームメモリ302から垂直フィルタ部303間は、1Vの期間に1/2フレームのフレームデータを転送する能力があれば十分である。デコーダ部301は2Vの期間に1フレームのフレームデータを生成する演算能力、垂直フィルタ部303は1Vの期間に1/2フレームのフレームデータをフィルタ処理する演算能力があれば十分である。垂直フィルタ部303からバッファメモリ304間は、1Vの期間に1/4フレームのフレームデータを転送する能力があれば十分である。バッファメモリ304から画像出力部305間は、1Vの期間に1/4フレームのフレームデータを転送する能力があれば十分である。フレームメモリ302は、フレームデータ1フレームを保持し、バッファメモリ304は、フレームデータ1/2フレームを保持する容量があれば十分である。
【0082】
次に、図20と対比するため、図21にバッファメモリ304を備えていない場合のデータ供給状態の時間変化を示す。
縮小処理を行わない場合、フレームメモリ302へのnフレームのデジタル画像データの供給は実線506で示すように、破線507で示すn-1フレームの2ndフィールドの垂直フィルタ部303への供給が始まった時から開始し、破線508で示すnフレームの1stフィールドの垂直フィルタ部303への供給が完了する前に終了する。そのため、図5のグラフ上で示す2Vの期間の間に1フレームのデジタル画像データを一定の速度で供給する。
【0083】
また、nフレームの1stフィールドのフレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は破線508で示すように、実線511が示すフレームメモリ302へのnフレームのデジタル画像データの供給が終了する直後に完了し、続いて2ndフィールドの処理を開始する。そのため、フレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は、図21のグラフ上で示す1Vの期間の間に1フィールドのデジタル画像データを一定の速度で供給される。
【0084】
ところが、1/2縮小処理を行う場合、フレームメモリ302へのnフレームのデジタル画像データの供給開始が可能となるタイミングは、n-1フレームの2ndフィールドの表示位置によって異なってくる。n-1フレームの2ndフィールドの表示位置によって、フレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は破線509から510の間のどこかで行われ、フレームメモリ302へのnフレームのデジタル画像データの供給開始が可能となるタイミングが時間的に最も遅れるのは、破線510で示す表示位置の場合である。この場合、1/2縮小画像は画像出力部501の下半分に出力される。また、フレームメモリ302へのnフレームのデジタル画像データの供給は、破線511で示すnフレームの1stフィールドの垂直フィルタ部303への供給が完了する前にに終了していなければならない。そのため、図21のグラフ上で示す1Vの期間の間に1フレームのデジタル画像データを一定の速度で供給する必要があり、縮小を行わない場合に比べ2倍の供給能力が必要となる。
【0085】
また、nフレームの1stフィールドのフレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は破線511で示すように、実線512が示すフレームメモリ302へのnフレームのデジタル画像データの供給が終了する直後に完了し、続いて2ndフィールドの処理を開始する。そのため、図5のグラフ上で示す1/2Vの期間の間に1フィールドのデジタル画像データを一定の速度で供給する必要があり、縮小を行わない場合に比べ2倍の供給能力が必要となる。垂直フィルタ部303も、供給されるデジタル画像データに見合った性能が要求されるため、縮小を行わない場合に比べ2倍の演算能力が必要となる。
【0086】
また、図23は、図20と対比するため、バッファメモリ304を備えていない場合であって1/4縮小処理を行う場合のデータ供給状態の時間変化を示す。
1/4縮小処理を行う場合のグラフを図23に示す。上記と同様の理由より、フレームメモリ302へのデジタル画像データの供給能力、フレームメモリ302から垂直フィルタ部303への供給能力、垂直フィルタ部の演算能力はそれぞれ縮小処理を行わない場合の4倍が必要となる。このように、バッファメモリ304を備えない場合は、縮小率が上がると必要なピーク性能も大きくなってしまう。
<3.1.2 1/4縮小>
図22は、図19示したメディアプロセッサにて1/4縮小を行う場合の各部のデータ供給状態とその時間変化を示す図である。
【0087】
図22において、グラフの横軸、縦軸は図20と同様である。
グラフ上の実線804はデコーダ部301からフレームメモリ302へのフレームデータの供給状態を示している。グラフ上の破線805はフレームメモリ302から垂直フィルタ部303へのフレームデータの供給状態を示している。グラフ上の破線806は垂直フィルタ部303からバッファメモリ304への1stフィールド縮小画像データの供給状態を示している。グラフ上の破線807は垂直フィルタ部303からバッファメモリ304への2ndフィールド縮小画像データの供給状態を示している。グラフ上の実線808はバッファメモリ304から画像出力部305への1stフィールド縮小画像データの供給状態を示している。グラフ上の実線809はバッファメモリ304から画像出力部305への2ndフィールド縮小画像データの供給状態を示している。
【0088】
同図に示すように、デコーダ部301からフレームメモリ302間は、2Vの期間に1フレームのフレームデータを転送する能力があれば十分である。フレームメモリ302から垂直フィルタ部303間は、1Vの期間に1/2フレームのフレームデータ転送する能力があれば十分である。デコーダ部301は2Vの期間に1フレームのフレームデータを生成する演算能力があれば十分である。垂直フィルタ部303は1Vの期間に1/2フレームのフレームデータをフィルタ処理する演算能力、垂直フィルタ部303からバッファメモリ304間は、1Vの期間に1/8フレームのフレームデータ転送能力、バッファメモリ304から画像出力部305間は、1Vの期間に1/8フレームのフレームデータ転送能力があれば十分である。フレームデータ1フレームを保持できるフレームメモリ302、フレームデータ1/4フレームを保持できるバッファメモリ304がそれぞれ必要となる。
【0089】
これらの各必要性能は最短でも1Vの期間での平均の能力であり、縮小率が大きくなっても短い期間に大きなピーク性能を要求される事がない。また、最も処理性能を必要とされるのが縮小なしの場合である。この場合、デコーダ部301からフレームメモリ302間は、2Vの期間に1フレームのフレームデータ転送能力で足りる。フレームメモリ302から垂直フィルタ部303間は、1Vの期間に1/2フレームのフレームデータ転送能力で足りる。デコーダ部301は2Vの期間に1フレームのフレームデータを生成する演算能力で足りる。垂直フィルタ部303は1Vの期間に1/2フレームのフレームデータをフィルタ処理する演算能力で足りる。垂直フィルタ部303からバッファメモリ304間は、1Vの期間に1/2フレームのフレームデータ転送能力で足りる。バッファメモリ304から画像出力部305間は、1Vの期間に1/2フレームのフレームデータ転送能力で足りる。フレームメモリ302はフレームデータ1フレームを保持でき、バッファメモリ304は、フレームデータ1フレームを保持できればよい。この能力であらゆる垂直縮小処理を行う事ができる。これらにより回路規模を削減し、動作クロックを引き下げる事が出来る。
<3.2 垂直フィルタ処理(その2)>
図24は、メディアプロセッサにおいて垂直フィルタ処理を行う場合のデータの流れを示した模式的なブロック図である。
【0090】
同図は、デコード部401、バッファメモリ402、垂直フィルタ部403、バッファメモリ404、映像出力部405、制御部406からなる。同図は、図19と比べて、デコード部401、垂直フィルタ部403、バッファメモリ404、映像出力部405は、同名の構成要素と同様である。従って同じ点は説明を省略し、異なる点を中心に説明する。
【0091】
バッファメモリ402は、1フレーム分の記憶容量より少ない容量でよい点でフレームメモリ302とは異なる。
垂直フィルタ部403は、垂直方向の64ライン(処理前のフレーム中の4マクロブロックライン)のフィルタ処理を終える毎に制御部406にその旨(フィルタ状態)を通知する点で垂直フィルタ部303と異なる。なお、通知の単位はマクロブロックライン2〜3単位としてもよい。
【0092】
デコード部401は、64ライン単位のデコードを終える毎に制御部406にその旨(デコード状態)を通知する点でデコード部301と異なる。なお、通知の単位は16ライン単位でもよい。
制御部406は、図2中のIOP211に相当し、デコード部401と垂直フィルタ部403の動作状態を、それぞれからの通知に基づいて監視し、垂直フィルタ処理がデコード処理を越さないように、かつデコード処理が垂直フィルタ処理を追い越さないようにデコード部401及び垂直フィルタ部403を制御する。つまり、制御部406の次の2つを制御する。1つは、フィルタ処理の対象となるマクロブロックラインの画素データ群をデコード部401がバッファメモリ402に書き込んでいないのに、垂直フィルタ部403が前のフレーム(又はフィールド)のマクロブロックラインの画素データ群を対象にフィルタ処理を行うことを防止することである。もう1つは、垂直フィルタ部403が垂直フィルタ処理の対象だが未処理のマクロブロックラインに対して、デコード部401が次のフレームの画素データ群を上書きしてしまうことを防止することである。
【0093】
図25は、制御部406における制御内容を示す説明図である。
同図の横軸は時間であり、制御部406、VSYNC(垂直同期信号)、デコード部401、垂直フィルタ部403、映像出力部405の各動作を記してある。
同図のように デコード部401は64ラインのデコードを終える毎にその旨を制御部406に通知し、垂直フィルタ部403は64ラインのフィルタしょりを終える毎にその旨を制御部406に通知する。制御部406は、これらの通知を下に、デコードが完了したライン番号Ndと、フィルタ処理が完了したライン番号Nfとを保持及び更新し、Nd(現フレーム)>Nf(現フレーム)、Nd(次のフレーム)<Nf(現フレーム)を満たすよう、デコード部401、垂直フィルタ部403を制御する。具体的には、制御部406は、NdとNfが接近した場合(その差がしきい値以下になった場合)にはデコード部401、垂直フィルタ部403の一方を一時的に停止させる。なお、Nd、Nfはマクロブロックラインの番号であってもよい。
【0094】
また、NdとNfが接近した場合には、制御部406の制御によって、デコード部401、垂直フィルタ部403の一方は制御部406により一時的に停止されるが、NdとNfが接近したか否かの判定及びデコード部401又は垂直フィルタ部403を一時的に停止させる制御は、制御部406以外が担当するように構成してもよい。
【0095】
たとえば、垂直フィルタ部403がデコード部401に上記フィルタ状態の通知を行うようにし、デコード部401は、フィルタ状態の通知と内部のデコード状態とに従って、NdとNfとが接近したか否かを判定し、判定結果に応じてデコード動作を一時的に停止し又は垂直フィルタ部403を一時的に停止させる構成としてもよい。
【0096】
あるいは、逆に、デコード部401が垂直フィルタ部403に上記デコード状態の通知を行うようにし、垂直フィルタ部403は、デコード状態の通知と内部のフィルタ状態とに従って、NdとNfとが接近したか否かを判定し、判定結果に応じてフィルタ処理を一時的に停止し又はデコード部401を一時的に停止させる構成としてもよい。
<3.2.1 1/2縮小>
図26は図24において1/2縮小処理を行う場合の各部の供給データ量を示す図である。
【0097】
グラフ901の横軸はバッファメモリ402上のフレームデータ量を示し、縦軸は時間を示している。グラフ902の横軸はバッファメモリ404上のフレームデータ量を示し、縦軸は時間を示している。グラフ903は画像出力部405の状態を時系列上に並べたものであり、時間軸はグラフ901、902の縦軸と合っている。
【0098】
グラフ上の実線904はデコーダ部401からバッファメモリ402へのフレームデータの供給状態を示している。グラフ上の破線905はバッファメモリ402から垂直フィルタ部403へのフレームデータの供給状態を示している。グラフ上の破線906は垂直フィルタ部403からバッファメモリ404への1stフィールド縮小画像データの供給状態を示している。グラフ上の破線907は垂直フィルタ部403からバッファメモリ404への2ndフィールド縮小画像データの供給状態を示している。グラフ上の実線908はバッファメモリ404から画像出力部405への1stフィールド縮小画像データの供給状態を示している。グラフ上の実線909はバッファメモリ404から画像出力部405への2ndフィールド縮小画像データの供給状態を示している。
【0099】
グラフ901で示すように、デコーダ部401からバッファメモリ402へのnフレームのフレームデータの供給が開始された直後に、バッファメモリ402から垂直フィルタ部403へのnフレームのフレームデータの供給を開始し、デコーダ部401からバッファメモリ402へのnフレームのフレームデータの供給が終了する直後にバッファメモリ402から垂直フィルタ部403へのnフレームのフレームデータの供給が終了するように制御を行う。グラフ902で示すように、垂直フィルタ部403からバッファメモリ404へのnフレームのフレームデータの供給はn-1フレーム表示中に完了するように制御を行う。
【0100】
このように装置を制御する事により、デコーダ部401からバッファメモリ402間は、2Vの期間に1フレームのフレームデータ転送能力、バッファメモリ402から垂直フィルタ部403間は、2Vの期間に1フレームのフレームデータ転送能力、デコーダ部401は2Vの期間に1フレームのフレームデータを生成する演算能力、垂直フィルタ部403は2Vの期間に1フレームのフレームデータをフィルタ処理する演算能力、垂直フィルタ部403からバッファメモリ404間は、2Vの期間に1/2フレームのフレームデータ転送能力、バッファメモリ404から画像出力部405間は、1Vの期間に1/4フレームのフレームデータ転送能力、数ライン分のフレームデータを保持できるバッファメモリ402、フレームデータ1フレームを保持できるバッファメモリ404がそれぞれ必要となる。
<3.2.2 1/4縮小>
図27は図24において1/4縮小を行った場合の各部のデータ供給量を示す図である。
【0101】
グラフ1001の横軸はバッファメモリ402上のフレームデータ量を示し、縦軸は時間を示している。グラフ1002の横軸はバッファメモリ404上のフレームデータ量を示し、縦軸は時間を示している。グラフ1003は画像出力部405の状態を時系列上に並べたものであり、時間軸はグラフ1001、1002の縦軸と合っている。
【0102】
グラフ上の実線1004はデコーダ部401からバッファメモリ402へのフレームデータの供給状態を示している。グラフ上の破線1005はバッファメモリ402から垂直フィルタ部403へのフレームデータの供給状態を示している。グラフ上の破線1006は垂直フィルタ部403からバッファメモリ404への1stフィールド縮小画像データの供給状態を示している。グラフ上の破線1007は垂直フィルタ部403からバッファメモリ404への2ndフィールド縮小画像データの供給状態を示している。グラフ上の実線1008はバッファメモリ404から画像出力部405への1stフィールド縮小画像データの供給状態を示している。グラフ上の実線1009はバッファメモリ404から画像出力部405への2ndフィールド縮小画像データの供給状態を示している。
【0103】
このように装置を制御する事により、デコーダ部401からバッファメモリ402間は、2Vの期間に1フレームのフレームデータ転送能力で足り、バッファメモリ402から垂直フィルタ部403間は、2Vの期間に1フレームのフレームデータ転送能力で足り、デコーダ部401は2Vの期間に1フレームのフレームデータを生成する演算能力で足り、垂直フィルタ部403は2Vの期間に1フレームのフレームデータをフィルタ処理する演算能力で足り、垂直フィルタ部403からバッファメモリ404間は、2Vの期間に1/4フレームのフレームデータ転送能力で足り、バッファメモリ404から画像出力部405間は、1Vの期間に1/8フレームのフレームデータ転送能力で足りる。バッファメモリ402は、数ライン分のフレームデータを保持でき、バッファメモリ404はフレームデータ1/2フレームを保持できれば足りる。
【0104】
これらの各必要性能は最短でも1Vの期間での平均の能力であり、縮小率が短い期間で大きなピーク性能を要求される事がない。
また、最も処理性能を必要とされるが縮小なしの場合であり、その場合に要求されるのがデコーダ部401からバッファメモリ402間は、2Vの期間に1フレームのフレームデータ転送能力、バッファメモリ402から垂直フィルタ部403間は、2Vの期間に1フレームのフレームデータ転送能力、デコーダ部401は2Vの期間に1フレームのフレームデータを生成する演算能力、垂直フィルタ部403は2Vの期間に1フレームのフレームデータをフィルタ処理する演算能力、垂直フィルタ部403からバッファメモリ404間は、2Vの期間に1フレームのフレームデータ転送能力、バッファメモリ404から画像出力部405間は、1Vの期間に1/2フレームのフレームデータ転送能力、数ライン分のフレームデータを保持できるバッファメモリ402、フレームデータ2フレームを保持できるバッファメモリ404であり、この能力であらゆる垂直縮小処理を行う事ができる。これらにより回路規模を削減し、動作クロックを引き下げる事が出来る。
<4.変形例>
図28、29は、画素並列処理部の左半分、右半分の第1の変形例を示す図である。これらの図は、図3、4に対して同じ構成要素には同じ符号を付しているので説明を省略し、異なる点を中心に説明する。
【0105】
図28、29は、図3、4の画素処理部1〜16の代わりに画素処理部1a〜16aを、画素転送部17、18の代わりに画素転送部17a、18bを備える。画素処理部1a〜16aはいずれも同じ構成なので、画素処理部1aを代表して説明する。
画素処理部1aは、画素処理部1における選択部A104、選択部B105の代わりに選択部A104a、選択部B105aを備える。
【0106】
選択部A104aは、選択部A104と比べると2入力から3入力になっている点が異なる。つまり、選択部A104aは、2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)から画素データ入力が増えている。
選択部B105aは、同様に2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)の画素データ入力が増えている。
【0107】
また、画素転送部17aは、選択部B1703〜選択部G1708の代わりに選択部B1703a〜選択部G1708aを備える。選択部B1703a〜選択部G1708aは、それぞれ2入力ではなく3入力になっている。増えている入力は、2つ左の遅延器からの画素データ入力である。
また、画素転送部18aは、選択部B1803〜選択部G1808の代わりに選択部B1803a〜選択部G1808aを備える。選択部B1803a〜選択部G1808aは、それぞれ2入力ではなく3入力になっている。増えている入力は、2つ右の遅延器からの画素データ入力である。
【0108】
この構成によれば、処理対象の画素と、その画素から左右に2つ隣の画素を順に用いたフィルタ処理を行うことができる。
例えば、画素処理部1aでは次式などを演算することができる。
a0・X9+a1(X11+X7)+a2(X13+X5)+a3(X15+X3)
図30、31は、画素並列処理部の左半分、右半分の第2の変形例を示す図である。
【0109】
図30、31は、図3、4の画素処理部1と画素処理部16との代わりに画素処理部1bと画素処理部16bとを備える。
画素処理部1bは、画素処理部1における選択部B105の代わりに選択部b105bを備える。選択部B105bは、遅延器B107からのフィードバック入力を有している点で選択部B105と異なっている。
【0110】
画素処理部16bは、画素処理部16における選択部A1604の代わりに選択部A1604bを備える。選択部A1604bは、遅延器A1606からのフィードバック入力を有している点で選択部A1605と異なっている。
この構成によれば、画素処理部1bは例えば次の演算を行う。
a3*X6+a2*X7+a1*X8+a0*X9+a1*X10+a2*X11+a3*X12
このとき画素処理部2の出力は、次のようになる。
【0111】
a3*X20+a2*X21+a1*X22+a0*X23+a1*X24+a2*X24+a3*X24
このとき、画素処理部16bの出力は次のようになる。
a3*X21+a2*X22+a1*X23+a0*X24+a1*X24+a2*X24+a3*X24
このように、図30、31では、左端の画素処理部1bにデータ列の左端の画素データが転送されてきた場合に、選択部B105bは画素処理部1b内の遅延器Bからのフィードバック入力を選択する。右端の画素処理部16bにデータ列の右端の画素データが転送されてきた場合、選択部A1604bは、遅延器A1606からのフィードバック入力を選択する。
【0112】
図32、33は、画素並列処理部の左半分、右半分の第2の変形例を示す図である。
図32、33は、図3、4の画素処理部1〜16の代わりに画素処理部1c〜16c、画素転送部17、18の代わりに画素転送部17c、18cを備える。画素処理部1c〜16cはいずれも同じ構成なので、画素処理部1aを代表して説明する。
【0113】
画素処理部1cは、画素処理部1における選択部A104、選択部B105の代わりに選択部A104c、選択部B105cを備える。
選択部A104cは、選択部A104と比べると2入力から3入力になっている点が異なる。つまり、選択部A104cは、2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)の画素データ入力が増えている。
【0114】
選択部B105cは、2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)の画素データ入力と、遅延器B107からのフィードバック入力とが増えている。
画素転送部17c、18cは、図28、図29に示した画素転送部17a、18aと同様に2入力ではなく3入力になっている。
【0115】
この構成によれば、画素処理部1cは例えば次の演算を行う。
a3*X9+a2*X9+a1*X9+a0*X9+a1*X11+a2*X13+a3*X15
このとき画素処理部2cの出力は、次のようになる。
a3*X10+a2*X10+a1*X10+a0*X10+a1*X12+a2*X14+a3*X16
このとき画素処理部15cの出力は、次のようになる。
a3*X17+a2*X19+a1*X21+a0*X23+a1*X23+a2*X23+a3*X23
このとき画素処理部16cの出力は、次のようになる。
a3*X18+a2*X20+a1*X22+a0*X24+a1*X24+a2*X24+a3*X24
図34は、POUA207の変形例を示す図である。
【0116】
同図のPOUA207は、図2と比べてアップサンプリング回路22aとダウンサンプリング回路23aとが追加されている。図2と同じ点は説明を省略し、異なる点を中心に説明する。
アップサンプリング回路22aは、入力バッファ群22から入力される画素データ群を垂直方向に拡大する。例えば、入力バッファ群22から入力される画素データ群を垂直方向に2倍にするよう画素データを補間するため、入力バッファ群22からの画素データ群の入力1回に対して、同じ画素データ群を2回画素並列処理部21に出力する。
【0117】
ダウンサンプリング回路23aは、画素並列処理部21から入力される画素データ群を垂直方向に縮小する。例えば、画素並列処理部21から入力される画素データ群を垂直方向に1/2倍にするよう画素データを間引く。つまり、画素並列処理部21からの画素データ群の入力2回に対して、1回分を破棄し1回分を出力する。
【0118】
この構成によれば、画素並列処理部21の入力側で垂直方向に2倍、出力側で垂直方向に1/2倍するので、外部メモリ220における1フレームあたりのデータ量を垂直方向に1/2にすることができ、その結果、POUC209によるPOUA207へのデータ転送量を1/2にすることができる。これにより、デュアルポートメモリ100の内部ポートへのアクセスが集中する場合にバスネックを解消することができる。
【0119】
また、本発明の画素演算装置は画像のをリサイズ等を行うのフィルタリング処理を複数画素に対して並列に行うので、動画の圧縮処理/伸張処理、リサイズ等を扱うメディアプロセッサなどのデジタル映像機器に利用される。
【0120】
【発明の効果】
本発明の画素演算装置は、フィルタ処理を行う画素演算装置であって、N個の画素処理手段と、N個の画素データ及びフィルタ係数を供給する供給手段と、N個の画素処理手段を並列に動作させる制御手段とを備える。
各画素処理手段は、供給手段に供給された画素データとフィルタ係数とを用いて演算した後、各画素処理手段に対して隣接する画素処理手段から画素データを取得し、取得した画素データを用いて演算して演算結果を累積する。前記制御手段は、隣接する画素処理手段からの画素データの取得と、取得した画素データを用いた演算及び累積とをタップ数に応じた回数繰り返すようN個の画素処理手段を制御する。
【0121】
ここで、前記N個の画素処理手段は、N個の画素データを右シフトする第1シフタと、N個の画素データを左シフトする第2シフタを形成する。各画素処理手段は、隣接する2つの画素処理手段からシフトアウトされる2つの画素データを用いて演算する。
この構成によれば、タップ数を可変にすることができ、周波数をあげずに処理を高速化するフィルタリング処理を行うことができるという効果がある。
【0122】
また、本発明の画素演算装置は、画素データとして差分画像の画素データと参照フレームの画素データとを供給手段から供給する。
この構成によれば、フィルタリング処理だけでなくMC(動き補償)処理にも利用可能で、フィルタ装置とMC回路とを独立に設ける必要がないので、回路規模の小型化を図ることができるという効果がある。
【図面の簡単な説明】
【図1】従来技術におけるFIRフィルタ処理を行う回路例を示すブロック図である。
【図2】画素演算ユニットを備えるメディアプロセッサの構成を示すブロック図である。
【図3】画素演算ユニット(POUA、POUB)の構成を示すブロック図である。
【図4】画素並列処理部の左半分の構成を示すブロック図である。
【図5】画素並列処理部の右半分の構成を示すブロック図である。
【図6】(a)は、入力バッファ群22の詳細な構成を示すブロック図である。
(b)は、入力バッファ群22内の選択部の詳細な構成を示すブロック図である。
【図7】出力バッファ群23の構成を示すブロック図である。
【図8】画素演算ユニットにてフィルタ処理を行う場合の画素データの初期入力値を示す図である。
【図9】画素処理部1に対する画素データの初期入力値を示す説明図である。
【図10】画素処理部1でのフィルタ処理における演算過程を示す図である。
【図11】画素処理部1でのフィルタ処理の演算内容を示す説明図である。
【図12】画素演算ユニットにてMC(動き補償)処理(Pピクチャ)を行う場合の入出力画素データを示す図である。
【図13】MC処理における復号対象フレームと参照フレームとを示す説明図である。
【図14】画素演算ユニットにてMC処理(Bピクチャ)を行う場合の入出力画素データを示す図である。
【図15】画素演算ユニットにてOSD(オンスクリーンディスプレイ)処理を行う場合の入出力画素データを示す図である。
【図16】画素演算ユニットにおけるOSD(オンスクリーンディスプレイ)処理の説明図である。
【図17】画素演算ユニットにてME(動き予測)処理を行う場合の入出力画素データを示す図である。
【図18】画素演算ユニットにてME(動き予測)の説明図である。
【図19】メディアプロセッサにおいて垂直フィルタ処理を行う場合のデータの流れを示した模式的なブロック図である。
【図20】垂直1/2縮小を行う場合の説明図である。
【図21】従来技術において垂直1/2縮小を行う場合の説明図である。
【図22】垂直1/4縮小を行う場合の説明図である。
【図23】従来技術において垂直1/4縮小を行う場合の説明図である。
【図24】メディアプロセッサにおいて垂直フィルタ処理を行う場合のデータの流れを示した模式的な別のブロック図である。
【図25】デコード処理と垂直フィルタ処理とのタイミングを示す説明図である。
【図26】垂直1/2縮小を行う場合の説明図である。
【図27】垂直1/4縮小を行う場合の説明図である。
【図28】画素並列処理部の左半分の第1の変形例を示す図である。
【図29】画素並列処理部の右半分の第1の変形例を示す図である。
【図30】画素並列処理部の左半分の第2の変形例を示す図である。
【図31】画素並列処理部の右半分の第2の変形例を示す図である。
【図32】画素並列処理部の左半分の第3の変形例を示す図である。
【図33】画素並列処理部の右半分の第3の変形例を示す図である。
【図34】画素処理ユニットの変形例を示す図である。
【符号の説明】
1 画素処理部
1〜16 画素処理部
17 画素転送部
18 画素転送部
21 画素並列処理部
22 入力バッファ群
22a アップサンプリング回路
23 出力バッファ群
23a ダウンサンプリング回路
23a〜23h ラッチ
23a〜23p ラッチ
23i〜23p ラッチ
24 命令メモリ
24a〜24h セレクタ
24a〜24p セレクタ
24i〜24p セレクタ
25 命令デコーダ
26 指示回路
27 DDA回路
100 デュアルポートメモリ
104 選択部A
104a 選択部A
104c 選択部A
105 選択部B
105a 選択部B
105b 選択部B
105c 選択部B
107 遅延器B
109 遅延器D
120 加算器A
200 メディアプロセッサ
201 ストリームユニット
201 入力ポートA
202 I/Oバッファ
202 入力ポートB
203 セットアッププロセッサ
203 入力ポートC
204 ビットストリームFIFO
205 可変長符号復号部
206 TE
207 POUA
208 POUB
209 POUC
210 オーディオユニット
211 IOP
212 ビデオバッファメモリ
213 ビデオユニット
214 ホストユニット
215 RE
216 フィルタ部
217 セットアップメモリ
218 専用LSI
220 外部メモリ
401 デコーダ部
402 バッファメモリ
403 垂直フィルタ部
404 バッファメモリ
405 映像出力部
406 制御部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a pixel arithmetic device including a filtering circuit for resizing an image.
[0002]
[Prior art]
In recent years, technological progress of digital video equipment has been remarkable, and so-called media processors that handle video compression / expansion processing, resizing, and the like have been put into practical use.
For image resizing, an FIR (Finite Impulse Response) filter is often used.
[0003]
FIG. 1 is a block diagram showing an example of a circuit that performs FIR filter processing in the prior art. This figure shows an FIR filter with 7 taps and symmetrical coefficients.
In the figure, data input in time series from the
[0004]
For example, the input data of the
Output data of the
[0005]
Also, the filter coefficients are selected symmetrically because the visual phase of the image is preferable because a linear phase (the phase characteristic becomes a straight line with respect to the frequency) is obtained.
[0006]
[Problems to be solved by the invention]
However, in the above conventional method, when filtering processing is performed on image data, pixel data constituting an image is sequentially input from the end due to the circuit configuration, so that one pixel data can be input in one clock. Therefore, it is necessary to increase the operating frequency in order to increase the processing speed. There is a problem that operation at a high operating frequency increases cost and power consumption.
[0007]
In addition, since the circuit differs depending on the number of taps in the conventional method, there is no degree of freedom. If a circuit is provided for each number of taps, enormous costs are required.
A first object of the present invention is to provide a pixel calculation device that can perform a filtering process that can change the number of taps and increase the processing speed without increasing the frequency.
[0008]
A second object of the present invention is to provide a pixel arithmetic device that can be used not only for filtering processing but also for MC (motion compensation) processing, and which has a reduced circuit scale.
A third object is to provide a pixel arithmetic device that can be used not only for filtering processing but also for ME (motion prediction) processing, and which has a reduced circuit scale.
[0009]
A fourth object is to provide a pixel arithmetic device that is not only used for filtering processing but also used for OSD (On Screen Display) processing in digital video equipment and has a reduced circuit scale.
[0010]
[Means for Solving the Problems]
A pixel arithmetic device that achieves the first object is a pixel arithmetic device that performs filter processing, and includes N pixel processing means, N pixel data and a supply means for supplying filter coefficients, and N pieces of pixel arithmetic means. Control means for operating the pixel processing means in parallel.
Each pixel processing means calculates using the pixel data supplied to the supplying means and the filter coefficient, then acquires pixel data from the pixel processing means adjacent to each pixel processing means, and uses the acquired pixel data And accumulate the calculation results. The control means controls the N pixel processing means so as to repeat the acquisition of the pixel data from the adjacent pixel processing means and the calculation and accumulation using the acquired pixel data for the number of taps.
[0011]
Here, the N pixel processing units form a first shifter that shifts N pixel data to the right and a second shifter that shifts N pixel data to the left. Each pixel processing means performs an operation using two pixel data shifted out from two adjacent pixel processing means.
The pixel calculation device that achieves the second object supplies pixel data of a difference image and pixel data of a reference frame as pixel data from a supply unit.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
The pixel arithmetic unit of the present invention mainly includes (a) filter processing used for enlargement / reduction of an image, (b) motion compensation (hereinafter referred to as ME) processing, (c) OSD (On Screen Display) processing, ( d) It is configured to selectively execute a motion estimation (hereinafter referred to as ME) process. (A) Regarding the filter processing, the pixel operation unit makes the number of taps variable without fixing, and processes a plurality of pixels (for example, 16 pixels) that are continuous in the horizontal direction or the vertical direction in parallel. Further, the filtering process in the vertical direction is performed in synchronization with the decompression process of the compressed moving image data.
[0013]
Hereinafter, the pixel operation unit in the embodiment of the present invention will be described in the following order.
1 Media processor configuration
1.1 Configuration of pixel operation unit
1.2 Configuration of pixel parallel processing unit
2.1 Filter processing
2.2 MC (motion compensation) processing
2.3 OSD (On Screen Display) processing
2.4 ME (motion prediction) processing
3.1 Vertical filter processing (1)
3.1.1 1/2 reduction
3.1.2 1/4 reduction
3.2 Vertical filter processing (part 2)
3.2.1 1/2 reduction
3.2.2 1/4 reduction
4 Modifications
<1 Media processor configuration>
A case will be described below where the pixel arithmetic unit in the present embodiment is incorporated in a media processor that performs media processing (compression audio video data decompression processing, audio video data compression processing, etc.). The media processor is mounted on, for example, a set top box that receives digital TV broadcasts, a television receiver, a DVD recording / playback apparatus, and the like.
[0014]
FIG. 2 is a block diagram illustrating a configuration of a media processor including a pixel operation unit. In the figure, a
[0015]
The
[0016]
The
The I /
[0017]
The
[0018]
The
[0019]
The
The
[0020]
The
In the filtering process (a), the
[0021]
In the MC processing of (b), the
[0022]
(C) In OSD processing, the
[0023]
The ME process of (d) is a search for a highly correlated rectangular area in a reference frame for a macroblock to be encoded in uncompressed frame data, and a correlation is detected from the macroblock to be encoded. This is a process for obtaining a motion vector indicating the highest rectangular area. The
[0024]
The
The
The
[0025]
The
[0026]
The
A host unit (HOST) 214 receives an instruction from an external host microcomputer, and controls start / end of MPEG decoding, MPEG encoding, OSD processing, reduction / enlargement processing, and the like according to the instruction.
[0027]
A rendering engine (RE) 215 is a master device and performs rendering processing in computer graphics. Data input / output is performed when the
The
[0028]
In the above description, the case where the media processor inputs stream data from the
<1.1 Pixel Arithmetic Unit Configuration>
FIG. 3 is a block diagram illustrating a configuration of the pixel calculation unit.
[0029]
Since the
As shown in the figure, the
[0030]
The pixel
[0031]
The
The
[0032]
The
[0033]
The
The
[0034]
The
<1.2 Configuration of Pixel Parallel Processing Unit>
4 and 5 are block diagrams showing detailed configurations of the left half and the right half of the pixel parallel processing unit.
[0035]
In FIG. 4, a
[0036]
In FIG. 5, the
Since the 16
The
[0037]
The selection unit A204 selects one of the pixel data input from the input port A201 and the pixel data output from the
The selection unit A204 and the delay unit A206 also function to shift pixel data input from the right adjacent
The selection unit B205 selects one of the pixel data input from the input port B202 and the pixel data shifted out from the right adjacent
[0038]
The selection unit B205 and the delay unit B207 also perform a function of shifting and outputting the pixel data input from the left adjacent
The delay unit A206 and the delay unit B207 hold the selected pixel data in the selection unit A204 and the selection unit B205, respectively.
The delay device B207 holds the pixel data from the input port C203.
The adder A120 adds the pixel data output from the delay device A206 and the delay device B207.
[0039]
Multiplier A211 multiplies the addition result of adder A120 and the pixel data from delayer C208. The multiplier A211 is used for multiplication of pixel data and a filter coefficient in the filter processing.
The adder B212 adds the multiplication result of the multiplier A211 to the data of the delay unit D209.
[0040]
The delay unit D109 accumulates the addition result of the adder B212.
The
[0041]
FIG. 6A is a block diagram showing a detailed configuration of the
As shown in the figure, the
[0042]
Each
FIG. 6B is a block diagram illustrating a detailed configuration of the
As shown in the figure, the
[0043]
The
The
[0044]
FIG. 7 is a block diagram showing the configuration of the
As shown in the figure, the
Each of the selectors 24a to 24p receives 16 processing results of the
[0045]
The
For example, when the filter processing result is reduced to ½, the
<2.1 Filter processing>
Details of the filter processing in the pixel operation unit will be described.
[0046]
The
FIG. 8 is a diagram illustrating initial input values of pixel data when the pixel processing unit (POUA 207) performs filter processing. In the figure, the input port column means each input port shown in FIGS. The input pixel column means pixel data supplied from the
[0047]
In the
[0048]
Further, after the initial input value is supplied from the
FIG. 10 is an explanatory diagram showing a calculation process of the
In the
[0049]
After the second clock input (CLK2), the selection units A and B select the shift output from the adjacent pixel processing unit or pixel transfer unit instead of the input ports A and B.
The pixel data X10 and X8 and the filter coefficients a1 and a0 * X9 are held in the delay devices A to D by the second clock input (CLK2). As a result, the adder B outputs a0 * X9 + a1 (X10 + X8) (see FIG. 11). In this way, the second time, the multiplier A multiplies the filter coefficient a1 (delay device C) and the sum of pixel data shifted out from both sides (adder A). The adder B adds the multiplication result and the accumulated value of the delay unit D.
[0050]
At the third clock input (CLK3), the
By performing the same operation at the fourth to ninth clock inputs (CLK4 to CLK9), the adder B outputs the output values shown in FIG.
[0051]
In this way, when the filer processing result (output data) of the
a0 ・ X9 + a1 (X10 + X8) + a2 (X11 + X7) + a3 (X12 + X6)
+ a4 (X13 + X5) + a5 (X14 + X4) + a6 (X15 + X3) + a7 (X16 + X2) + a8 (X17 + X1)
It becomes.
[0052]
10 and 11 show the processing steps up to CLK9, but the number of input clocks is terminated by the control of the
[0053]
The
[0054]
Note that the filter processing result of the
a0 ・ X10 + a1 (X11 + X9) + a2 (X12 + X8) + a3 (X13 + X7)
+ a4 (X14 + X6) + a5 (X15 + X5) + a6 (X16 + X4) + a7 (X17 + X3) + a8 (X18 + X2)
The filter processing result of the
a0 ・ X11 + a1 (X12 + X10) + a2 (X13 + X9) + a3 (X14 + X8)
+ a4 (X15 + X7) + a5 (X16 + X6) + a6 (X17 + X5) + a7 (X18 + X4) + a8 (X19 + X3)
The filter processing results of the
[0055]
As described above, the pixel
In FIG. 8, the input pixels of the input ports A, B, and C of the
<2.2 MC (Motion Compensation) Processing>
Details of MC processing when the decoding target frame is a P picture will be described.
[0056]
The
[0057]
FIG. 12 is a diagram showing input / output pixel data when MC processing (P picture) is performed in the pixel calculation unit. In the figure, the input port column means the input ports of the
[0058]
FIG. 13 is an explanatory diagram of input pixels to the
In the MC processing, the selection units A and B in the
[0059]
Further, the 16 addition results are stored in the
MC processing is performed by repeating the above processing in units of 16 pixels of the decoding target frame. Each pixel processing unit simply performs addition, and an addition result of 16 pixels can be obtained for each clock.
[0060]
Next, MC processing when the decoding target frame is a B picture will be described.
FIG. 14 is a diagram showing input / output pixel data when MC processing (B picture) is performed in the pixel calculation unit. In the figure, the input port column, input pixel column, output port column, and output pixel column are the same as in FIG. However, the input pixel column is different from FIG. 12 in that the first clock (CLK1) and the second clock (CLK2) are input in two steps.
[0061]
P1 to P16 and B1 to B16 are 16 pieces of pixel data in a rectangular area indicated by a motion vector in two different reference frames.
In the MC processing, the selection units A and B in the
[0062]
Further, the 16 addition results are stored in the
MC processing for the B picture is performed by repeating the above processing in units of 16 pixels of the decoding target frame.
<2.3 OSD (On Screen Display) Processing>
The
[0063]
FIG. 15 is a diagram showing input / output pixel data when OSD (on-screen display) processing is performed in the pixel arithmetic unit.
In the figure, the
[0064]
The selection units A and B in the
[0065]
The pixel data X1 to X16 output from the adder B are stored in the
As shown in FIG. 16, the above processing is repeated for the entire OSD image, whereby the OSD image in the
[0066]
As another form of OSD processing, (1) OSD images and display frame data may be blended. When the blend rate is 0.5, the pixel data of the OSD image is input from the
When the blend ratio is α: (1−α), (OSD image pixel data, 0, α) is input from the
[0067]
Further, when the OSD image is displayed in a reduced size, the above-described filtering process may be applied to the OSD image from the
Furthermore, the OSD image may be reduced by filtering and then blended.
<2.4 ME (Motion Prediction) Processing>
FIG. 17 is a diagram illustrating input / output pixel data when ME (motion prediction) processing is performed in the pixel arithmetic unit. In the input pixel column of the figure, X1 to X16 are 16 pixels of the macroblock in the encoding target frame, and R1 to R16 are 16 pixels in a 16 × 16 pixel rectangular area in the reference frame. FIG. 18 is an explanatory diagram showing the relationship between these pixels. The reference frame motion vector (MV) search range in FIG. 6 is a range to be searched for motion vectors around the same position as the encoding target macroblock (for example, +16 pixels to −16 pixels in the horizontal and vertical directions). It is. In this MV search range, a 16 × 16 rectangular area is present at 16 × 16 positions for pixel-by-pixel search, and 32 × 32 for half-pel (1 / 2-pixel) search. Located in the street position. FIG. 13 shows only the upper left rectangular area in the MV search range.
[0068]
In the ME processing, the sum of differences between pixels is obtained between each rectangular area in the MV search range and the macroblock to be encoded, and the rectangular area with the smallest sum (that is, the highest correlation). The displacement of the relative position between the rectangular area) and the encoding target macroblock is determined as a motion vector. The encoding target block is compared with the rectangular region having the highest correlation.
[0069]
Under the control of the
According to FIG. 17, for example, the
[0070]
In the second clock, the first line | X1-R1 | is held in the delay unit. Therefore, the adder B is held in the second line | X1-R1 | from the multiplier A and the delay unit D. Add | X1-R1 | on the first line.
In the third clock, the first and second lines | X1-R1 | are accumulated in the delay unit, so that the adder B holds the third line | X1-R1 | from the multiplier A and the delay unit D. Then, | X1-R1 | in the first line is added.
[0071]
In the 16th clock, the adder B outputs the cumulative value (Σ | X1-R1 |) of | X1-R1 |
Accumulated values (Σ | X1-R1 |) to (Σ | X16-R16 |) are also output for the
These 16 accumulated values are held in the
[0072]
This completes the calculation of the sum of the differences between the pixel data of one rectangular area and the encoding target macroblock.
Thereafter, the sum of differences is calculated in the same manner for other rectangular areas in the MV search range. When the sum of differences is calculated for all rectangular areas (or necessary rectangular areas) within the MV search range, the rectangular area having the smallest value is determined as the rectangular area having the highest correlation, and a motion vector is generated. The
[0073]
In the ME process, the total of 16 accumulated values from the pixel processing unit is separately performed, but the total of 16 accumulated values may be calculated in the
[0074]
In the ME process, the difference is calculated in units of pixels, but may be calculated in units of half pels. In that case, of the half line and the real line, | X1-R1 | is calculated for one line as described above for the real line, and for half lines, for example, one half of the two clocks is half-pel. The pixel value ((R1 + R1 ′) / 2) may be calculated, and the difference | X1− (R1 + R1 ′) / 2 | may be calculated in the next one clock. Alternatively, half-pel pixel values ((R1 + R1 ′ + R2 + R2 ′) / 4) may be calculated in 4 clocks out of 5 clocks, and the difference may be calculated in the next 1 clock.
<3.1 Vertical Filter Processing (Part 1)>
FIG. 19 is a schematic block diagram of the media processor showing the flow of data when performing vertical filter processing in the media processor shown in FIG.
[0075]
In the figure, a
The
The
The
[0076]
The
The
<3.1.1 1/2 reduction>
FIG. 20 is a diagram showing temporal changes in the data supply states of the
[0077]
In FIG. 20, the vertical axes of the
[0078]
A
A
[0079]
A
[0080]
As shown by the
[0081]
As shown by the
By controlling the apparatus in this manner, it is sufficient that the
[0082]
Next, for comparison with FIG. 20, FIG. 21 shows a time change in the data supply state when the
When the reduction process is not performed, the supply of digital image data of n frames to the
[0083]
Also, the supply of digital image data from the
[0084]
However, when the 1/2 reduction process is performed, the timing at which the supply of n frames of digital image data to the
[0085]
In addition, the supply of digital image data from the
[0086]
For comparison with FIG. 20, FIG. 23 shows a time change in the data supply state when the 1/4 reduction process is performed when the
FIG. 23 shows a graph when the 1/4 reduction processing is performed. For the same reason as described above, the supply capability of digital image data to the
<3.1.2 1/4 reduction>
FIG. 22 is a diagram showing a data supply state of each unit and its change over time when 1/4 reduction is performed by the media processor shown in FIG.
[0087]
In FIG. 22, the horizontal and vertical axes of the graph are the same as those in FIG.
A
[0088]
As shown in the figure, between the
[0089]
Each of these required performances is an average ability in a period of 1 V at the shortest, and even if the reduction ratio increases, a large peak performance is not required in a short period. The processing performance is most required when there is no reduction. In this case, the frame data transfer capability of 1 frame is sufficient between the
<3.2 Vertical Filter Processing (Part 2)>
FIG. 24 is a schematic block diagram showing the flow of data when vertical filtering is performed in the media processor.
[0090]
The figure includes a
[0091]
The
The
[0092]
The
The
[0093]
FIG. 25 is an explanatory diagram showing the control contents in the
The horizontal axis in the figure is time, and shows the operations of the
As shown in the figure, the
[0094]
Also, when Nd and Nf approach, one of the
[0095]
For example, the
[0096]
Or, conversely, the
<3.2.1 1/2 reduction>
FIG. 26 is a diagram showing the supply data amount of each part when the 1/2 reduction process is performed in FIG.
[0097]
The horizontal axis of the
[0098]
A
[0099]
As shown in the
[0100]
By controlling the apparatus in this manner, the frame data transfer capability between the
<3.2.2 1/4 reduction>
FIG. 27 is a diagram showing the data supply amount of each part when 1/4 reduction is performed in FIG.
[0101]
The horizontal axis of the
[0102]
A
[0103]
By controlling the apparatus in this manner, a frame data transfer capability of 1 frame is sufficient between the
[0104]
Each of these required performances is an average ability in a period of 1V at the shortest, and a large peak performance is not required in a period where the reduction rate is short.
In the case where the processing performance is required most but no reduction is required, the frame data transfer capability of one frame and the buffer memory are required between the
<4. Modification>
28 and 29 are diagrams illustrating a first modification of the left half and the right half of the pixel parallel processing unit. In these drawings, the same constituent elements as those in FIGS. 3 and 4 are denoted by the same reference numerals, and the description thereof will be omitted.
[0105]
28 and 29 include pixel processing units 1 a to 16 a instead of the
The pixel processing unit 1a includes a selection unit A104a and a selection unit B105a instead of the selection unit A104 and the selection unit B105 in the
[0106]
The selection unit A104a is different from the selection unit A104 in that the number of input is changed from two to three. That is, the selection unit A 104a has more pixel data inputs than the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units).
Similarly, in the selection unit B105a, the pixel data input of the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units) is increased.
[0107]
The
The
[0108]
According to this configuration, it is possible to perform a filter process that uses a pixel to be processed and two pixels adjacent to the left and right of the pixel in order.
For example, the pixel processing unit 1a can calculate the following equation.
a0 ・ X9 + a1 (X11 + X7) + a2 (X13 + X5) + a3 (X15 + X3)
30 and 31 are diagrams illustrating a second modification of the left half and the right half of the pixel parallel processing unit.
[0109]
30 and 31 include a pixel processing unit 1b and a
The pixel processing unit 1b includes a selection unit b105b instead of the selection unit B105 in the
[0110]
The
According to this configuration, the pixel processing unit 1b performs, for example, the following calculation.
a3 * X6 + a2 * X7 + a1 * X8 + a0 * X9 + a1 * X10 + a2 * X11 + a3 * X12
At this time, the output of the
[0111]
a3 * X20 + a2 * X21 + a1 * X22 + a0 * X23 + a1 * X24 + a2 * X24 + a3 * X24
At this time, the output of the
a3 * X21 + a2 * X22 + a1 * X23 + a0 * X24 + a1 * X24 + a2 * X24 + a3 * X24
As described above, in FIGS. 30 and 31, when the leftmost pixel data of the data string is transferred to the leftmost pixel processing unit 1b, the selection unit B105b receives the feedback input from the delay unit B in the pixel processing unit 1b. select. When the rightmost pixel data of the data string is transferred to the rightmost
[0112]
32 and 33 are diagrams illustrating a second modification of the left half and the right half of the pixel parallel processing unit.
32 and 33 include pixel processing units 1c to 16c instead of the
[0113]
The pixel processing unit 1c includes a selection unit A104c and a selection unit B105c instead of the selection unit A104 and the selection unit B105 in the
The selection unit A104c is different from the selection unit A104 in that the number of input is changed from two to three. That is, in the selection unit A104c, the pixel data input of the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units) is increased.
[0114]
In the selection unit B105c, the pixel data input of the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units) and the feedback input from the delay unit B107 are increased.
Similarly to the
[0115]
According to this configuration, the pixel processing unit 1c performs, for example, the following calculation.
a3 * X9 + a2 * X9 + a1 * X9 + a0 * X9 + a1 * X11 + a2 * X13 + a3 * X15
At this time, the output of the
a3 * X10 + a2 * X10 + a1 * X10 + a0 * X10 + a1 * X12 + a2 * X14 + a3 * X16
At this time, the output of the
a3 * X17 + a2 * X19 + a1 * X21 + a0 * X23 + a1 * X23 + a2 * X23 + a3 * X23
At this time, the output of the
a3 * X18 + a2 * X20 + a1 * X22 + a0 * X24 + a1 * X24 + a2 * X24 + a3 * X24
FIG. 34 is a diagram showing a modification of the
[0116]
The
The
[0117]
The
[0118]
According to this configuration, the pixel
[0119]
In addition, since the pixel arithmetic device of the present invention performs the filtering process for resizing an image on a plurality of pixels in parallel, it can be applied to digital video equipment such as a media processor for handling moving picture compression / expansion processing, resizing, etc. Used.
[0120]
【The invention's effect】
A pixel arithmetic device according to the present invention is a pixel arithmetic device that performs filter processing, and includes N pixel processing means, supply means for supplying N pixel data and filter coefficients, and N pixel processing means in parallel. And control means for operating the device.
Each pixel processing means calculates using the pixel data supplied to the supplying means and the filter coefficient, then acquires pixel data from the pixel processing means adjacent to each pixel processing means, and uses the acquired pixel data And accumulate the calculation results. The control means controls the N pixel processing means so as to repeat the acquisition of the pixel data from the adjacent pixel processing means and the calculation and accumulation using the acquired pixel data for the number of taps.
[0121]
Here, the N pixel processing units form a first shifter that shifts N pixel data to the right and a second shifter that shifts N pixel data to the left. Each pixel processing means performs an operation using two pixel data shifted out from two adjacent pixel processing means.
According to this configuration, it is possible to make the number of taps variable, and it is possible to perform a filtering process that speeds up the process without increasing the frequency.
[0122]
In addition, the pixel arithmetic device of the present invention supplies pixel data of a difference image and pixel data of a reference frame as pixel data from a supply unit.
According to this configuration, it can be used not only for the filtering process but also for the MC (motion compensation) process, and it is not necessary to provide the filter device and the MC circuit independently, so that the circuit scale can be reduced. There is.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an example of a circuit that performs FIR filter processing in the prior art.
FIG. 2 is a block diagram illustrating a configuration of a media processor including a pixel operation unit.
FIG. 3 is a block diagram showing a configuration of a pixel operation unit (POUA, POUB).
FIG. 4 is a block diagram illustrating a configuration of a left half of a pixel parallel processing unit.
FIG. 5 is a block diagram showing a configuration of a right half of a pixel parallel processing unit.
6A is a block diagram illustrating a detailed configuration of an
FIG. 2B is a block diagram illustrating a detailed configuration of the selection unit in the
7 is a block diagram showing a configuration of an
FIG. 8 is a diagram illustrating initial input values of pixel data when filter processing is performed in the pixel arithmetic unit.
9 is an explanatory diagram showing initial input values of pixel data to the
10 is a diagram illustrating a calculation process in filter processing in the
FIG. 11 is an explanatory diagram showing calculation contents of filter processing in the
FIG. 12 is a diagram showing input / output pixel data when MC (motion compensation) processing (P picture) is performed in the pixel operation unit.
FIG. 13 is an explanatory diagram showing a decoding target frame and a reference frame in MC processing.
FIG. 14 is a diagram showing input / output pixel data when MC processing (B picture) is performed in the pixel operation unit.
FIG. 15 is a diagram showing input / output pixel data when OSD (on-screen display) processing is performed in the pixel calculation unit.
FIG. 16 is an explanatory diagram of OSD (on-screen display) processing in the pixel calculation unit.
FIG. 17 is a diagram illustrating input / output pixel data when ME (motion prediction) processing is performed in the pixel calculation unit.
FIG. 18 is an explanatory diagram of ME (motion prediction) in the pixel calculation unit.
FIG. 19 is a schematic block diagram illustrating a data flow when performing vertical filter processing in a media processor.
FIG. 20 is an explanatory diagram when performing vertical ½ reduction.
FIG. 21 is an explanatory diagram when performing vertical ½ reduction in the prior art.
FIG. 22 is an explanatory diagram when vertical ¼ reduction is performed.
FIG. 23 is an explanatory diagram when vertical ¼ reduction is performed in the prior art.
FIG. 24 is another schematic block diagram showing the flow of data when vertical filtering is performed in the media processor.
FIG. 25 is an explanatory diagram showing timings of decoding processing and vertical filter processing;
FIG. 26 is an explanatory diagram when vertical ½ reduction is performed.
FIG. 27 is an explanatory diagram when vertical ¼ reduction is performed.
FIG. 28 is a diagram illustrating a first modification of the left half of the pixel parallel processing unit.
FIG. 29 is a diagram illustrating a first modification of the right half of the pixel parallel processing unit.
FIG. 30 is a diagram illustrating a second modification of the left half of the pixel parallel processing unit.
FIG. 31 is a diagram illustrating a second modification of the right half of the pixel parallel processing unit.
FIG. 32 is a diagram illustrating a third modification of the left half of the pixel parallel processing unit.
FIG. 33 is a diagram illustrating a third modification of the right half of the pixel parallel processing unit.
FIG. 34 is a diagram showing a modification of the pixel processing unit.
[Explanation of symbols]
1 Pixel processing unit
1 to 16 pixel processing unit
17 Pixel transfer unit
18 pixel transfer section
21 Pixel parallel processing unit
22 Input buffers
22a Upsampling circuit
23 Output buffer group
23a Downsampling circuit
23a-23h Latch
23a-23p latch
23i-23p latch
24 Instruction memory
24a-24h selector
24a-24p selector
24i-24p selector
25 Instruction decoder
26 Indicator circuit
27 DDA circuit
100 dual port memory
104 Selection part A
104a Selection part A
104c Selection part A
105 Selector B
105a Selection part B
105b Selection part B
105c Selection part B
107 Delayer B
109 Delay D
120 Adder A
200 Media processor
201 Stream unit
201 Input port A
202 I / O buffer
202 Input port B
203 Setup processor
203 Input port C
204 bitstream FIFO
205 Variable length code decoding unit
206 TE
207 POUA
208 POUB
209 POUC
210 Audio unit
211 IOP
212 Video buffer memory
213 video unit
214 Host unit
215 RE
216 Filter section
217 Setup memory
218 Dedicated LSI
220 External memory
401 Decoder unit
402 Buffer memory
403 Vertical filter section
404 Buffer memory
405 Video output unit
406 control unit
Claims (2)
N個の画素処理手段と、
N個の画素データ及びフィルタ係数を供給する供給手段と、
N個の画素処理手段を並列に動作させる制御手段とを備え、
前記N個の画素処理手段は、クロック入力毎にN個の画素データを右シフトする第1シフタと、クロック入力毎にN個の画素データを左シフトする第2シフタを形成し、
前記第1シフタは、前記供給手段に供給された画素データを右シフトした後、前クロック入力において左隣の画素処理手段から右シフトされた画素データを右シフトし、
前記第2シフタは、前記供給手段に供給された画素データを左シフトした後、前クロック入力において右隣の画素処理手段から左シフトされた画素データを左シフトし、
各画素処理手段は、供給手段に供給された画素データとフィルタ係数とを用いて演算した後、各画素処理手段に対して隣接する2つの画素処理手段からクロック入力毎にシフトされる2つの画素データをクロック入力毎に取得し、取得した画素データを用いてクロック入力毎に演算し、演算結果をクロック入力毎に累積することを特徴とする画素演算装置。A pixel arithmetic device that performs filter processing,
N pixel processing means;
Supply means for supplying N pixel data and filter coefficients;
Control means for operating N pixel processing means in parallel,
The N pixel processing means form a first shifter that shifts N pixel data to the right for each clock input, and a second shifter that shifts N pixel data to the left for each clock input,
The first shifter shifts the pixel data supplied to the supply unit to the right, and then right-shifts the pixel data shifted right from the pixel processing unit adjacent to the left in the previous clock input,
The second shifter shifts the pixel data supplied to the supply means to the left, and then shifts the pixel data left-shifted from the right pixel processing means at the previous clock input to the left,
Each pixel processing means calculates using the pixel data supplied to the supply means and the filter coefficient, and then shifts two pixels that are shifted for each clock input from two pixel processing means adjacent to each pixel processing means. acquires data for each clock input, calculated for each clock input using the acquired pixel data, the operation result pixel calculation apparatus characterized by accumulating every clock input.
前記画素処理手段は、隣接する画素処理手段からの画素データの取得と、取得した画素データを用いた演算及び累積とを、指定されたタップ数に応じたクロック入力回数繰り返すことを特徴とする請求項1記載の画素処理装置。 The pixel processing means repeats acquisition of pixel data from adjacent pixel processing means, and calculation and accumulation using the acquired pixel data, the number of clock inputs corresponding to a specified number of taps. Item 2. A pixel processing apparatus according to Item 1.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001125119A JP4686048B2 (en) | 2000-04-21 | 2001-04-23 | Pixel arithmetic unit |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000-120753 | 2000-04-21 | ||
JP2000120754 | 2000-04-21 | ||
JP2000-120754 | 2000-04-21 | ||
JP2000120753 | 2000-04-21 | ||
JP2001125119A JP4686048B2 (en) | 2000-04-21 | 2001-04-23 | Pixel arithmetic unit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002008025A JP2002008025A (en) | 2002-01-11 |
JP4686048B2 true JP4686048B2 (en) | 2011-05-18 |
Family
ID=27343160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001125119A Expired - Fee Related JP4686048B2 (en) | 2000-04-21 | 2001-04-23 | Pixel arithmetic unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4686048B2 (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7956930B2 (en) | 2006-01-06 | 2011-06-07 | Microsoft Corporation | Resampling and picture resizing operations for multi-resolution video coding and decoding |
JP4042065B1 (en) * | 2006-03-10 | 2008-02-06 | 健治 吉田 | Input processing system for information processing device |
KR100771879B1 (en) * | 2006-08-17 | 2007-11-01 | 삼성전자주식회사 | Method of deblocking filtering decreasing inner memory storage and a video processing device using the method |
JP5522893B2 (en) * | 2007-10-02 | 2014-06-18 | キヤノン株式会社 | Image processing apparatus, image processing method, and program |
JPWO2010001562A1 (en) | 2008-07-02 | 2011-12-15 | ルネサスエレクトロニクス株式会社 | Filter processing apparatus and semiconductor device |
JP4978936B2 (en) * | 2008-08-27 | 2012-07-18 | 京セラドキュメントソリューションズ株式会社 | Two-dimensional spatial filter device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06292178A (en) * | 1993-03-31 | 1994-10-18 | Sony Corp | Adaptive video signal arithmetic processor |
JPH10134176A (en) * | 1996-10-29 | 1998-05-22 | Sony Corp | Method and device for image signal processing |
JPH10134175A (en) * | 1996-10-29 | 1998-05-22 | Sony Corp | Processor and method for image processing |
JP2000020705A (en) * | 1998-06-30 | 2000-01-21 | Sharp Corp | Parallel image processing processor |
-
2001
- 2001-04-23 JP JP2001125119A patent/JP4686048B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06292178A (en) * | 1993-03-31 | 1994-10-18 | Sony Corp | Adaptive video signal arithmetic processor |
JPH10134176A (en) * | 1996-10-29 | 1998-05-22 | Sony Corp | Method and device for image signal processing |
JPH10134175A (en) * | 1996-10-29 | 1998-05-22 | Sony Corp | Processor and method for image processing |
JP2000020705A (en) * | 1998-06-30 | 2000-01-21 | Sharp Corp | Parallel image processing processor |
Also Published As
Publication number | Publication date |
---|---|
JP2002008025A (en) | 2002-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7692688B2 (en) | Method for correcting distortion of captured image, device for correcting distortion of captured image, and imaging device | |
US6411333B1 (en) | Format conversion using patch-based filtering | |
US8111331B2 (en) | Image resizer and resizing method | |
JP4655957B2 (en) | Captured image distortion correction method, captured image distortion correction apparatus, imaging method, and imaging apparatus | |
US8072511B2 (en) | Noise reduction processing apparatus, noise reduction processing method, and image sensing apparatus | |
JPH06326996A (en) | Method and equipment for decoding compressed video data | |
JP5788198B2 (en) | Architecture for video processing, high-speed still image processing, and high-quality still image processing | |
JPH09214972A (en) | Decoder circuit, mpeg video stream decoding method and computer | |
EP1169855A1 (en) | Efficient image scaling for scan rate conversion | |
JP6190386B2 (en) | Video ringer ringing reduction | |
US8260075B2 (en) | Two-dimensional filter arithmetic device and method | |
JP4686048B2 (en) | Pixel arithmetic unit | |
US8014618B2 (en) | High-speed motion compensation apparatus and method | |
US6829302B2 (en) | Pixel calculating device | |
KR100794098B1 (en) | Pixel calculating device | |
KR100287866B1 (en) | Vertical image format conversion device and digital receiving system using same | |
Li et al. | A general-purpose FPGA-based reconfigurable platform for video and image processing | |
JP2011059911A (en) | Image processing apparatus | |
TWI424371B (en) | Video processing device and processing method thereof | |
JP4424097B2 (en) | Electronic zoom device | |
JP2000059663A (en) | Image pickup device | |
KR19990051709A (en) | NTS video video resolution conversion system | |
JP2004140879A (en) | Digital camera and image processing method in digital camera | |
JPH0937215A (en) | Compression interpolation circuit and video equipment with aspect conversion function | |
JP2004336584A (en) | Device and method for video output |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071219 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100817 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100824 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101019 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101019 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110118 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110214 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140218 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4686048 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |