JP2018164226A - 画像処理装置 - Google Patents

画像処理装置 Download PDF

Info

Publication number
JP2018164226A
JP2018164226A JP2017061383A JP2017061383A JP2018164226A JP 2018164226 A JP2018164226 A JP 2018164226A JP 2017061383 A JP2017061383 A JP 2017061383A JP 2017061383 A JP2017061383 A JP 2017061383A JP 2018164226 A JP2018164226 A JP 2018164226A
Authority
JP
Japan
Prior art keywords
data
block
pixel
quantization
unit
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.)
Withdrawn
Application number
JP2017061383A
Other languages
English (en)
Inventor
昊 王
Hao Wang
昊 王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MegaChips Corp
Original Assignee
MegaChips Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MegaChips Corp filed Critical MegaChips Corp
Priority to JP2017061383A priority Critical patent/JP2018164226A/ja
Publication of JP2018164226A publication Critical patent/JP2018164226A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

【課題】ブロック数を多くしても圧縮後の符号量を削減することができ、かつ、ブロックの間で量子化レベルが異なっていても予測誤差データを算出することができる画像処理装置を提供する。【解決手段】ブロックの量子化レベルを判定し、量子化レベルを用いた乱数ディザリングにより画像データを量子化し、1ラインの先頭画素の量子化データを出力する。次の画素の量子化データから現在の画素の量子化データを減算し、2番目以降の画素の予測誤差データを出力する。現在の量子化レベルを用いたビットのシフト演算により現在のブロックの最後の画素の量子化データを逆量子化し、遅延し、次のブロックの量子化レベルを用いたビットのシフト演算により遅延データを量子化して、次のブロックの先頭画素の量子化データから減算し、次のブロックの先頭画素の予測誤差データを出力する。【選択図】 図2

Description

本発明は、1ラインを複数のブロックに分割し、複数のブロックの各々に含まれる複数の画素の各々の画像データを量子化して圧縮し、さらに、量子化された画像データを逆量子化して伸張する画像処理装置に関する。
画像データの圧縮処理として、圧縮後の符号量を削減するために、画像データの各画素の下位ビットを削る量子化およびその逆量子化の処理は一般的に使われる手法である。また、量子化レベル(量子化の度合い)を設定するにより、圧縮伸張後の画像の画質の劣化の程度と符号量とのバランスをコントロールする技術も提案されている。例えば、特許文献1および2には、目標とする圧縮後の符号量に応じて、量子化レベルを設定することが記載されている。
しかし、量子化レベルを大きく設定すると、圧縮伸張後の画像に階段状の模様が発生し、画質の劣化が目立つようになる。その対策の1つとして、乱数ディザリングにより画像データを量子化することが行われている。
図9は、従来の画像圧縮部の構成を表す一例のブロック図である。図9に示す画像圧縮部100は、量子化処理部102と、遅延部104と、減算部106と、出力部108とを備えている。
画像圧縮部100において、例えば、1ラインの先頭画素の画像データを量子化する場合、まず、量子化処理部102において、乱数ディザリングにより、先頭画素の画像データが量子化されて先頭画素の量子化データが生成される。
先頭画素の量子化データは、出力部108から先頭画素の圧縮データとして出力され、メモリ110に格納される。また、先頭画素の量子化データは、遅延部104において遅延され、先頭画素の遅延データが出力される。
続いて、2番目の画素の画像データを量子化する場合、減算部106において、2番目の画素の量子化データから先頭画素の遅延データが減算される。つまり、2番目の画素の量子化データと先頭画素の量子化データとの差分が算出され、2番目の画素の予測誤差データが出力される。2番目の画素の予測誤差データは、出力部108から2番目の画素の圧縮データとして出力され、メモリ110に格納される。
3番目以降の画素の画像データを量子化する場合の動作は、2番目の画素の画像データを量子化する場合の動作と同様であり、これ以後の動作は、1ラインの最後の画素の画像データの量子化が終了するまで上記の動作の繰り返しとなる。
例えば、1ライン単位で画像データを圧縮するライン圧縮方式の場合、図10に示すように、1ラインの先頭画素(ハッチ部分)のみの量子化データおよび2番目以降の画素(その他の部分)の予測誤差データがメモリ110に格納される。従って、ライン方式圧縮の場合、圧縮後の符号量を削減することができるという利点があるが、1ライン内では同じ量子化レベルが使用されるため、画質をコントロールしづらいという問題がある。
これに対し、1ラインを複数のブロックに分割し、ブロック単位で画像データを圧縮するブロック圧縮方式の場合、図11Aに示すように、各々のブロックの先頭画素のみの量子化データおよび2番目以降の画素の予測誤差データがメモリ110に格納される。従って、ブロック圧縮方式の場合、ブロック内では同じ量子化レベルが使用されるが、ブロック毎に量子化レベルを変えて画質を可変とすることができる。
しかし、ブロック圧縮方式の場合、ブロック毎に先頭画素の量子化データがそのままメモリ110に格納されるため、ブロック数が多くなるに従って、圧縮後の符号量が次第に多くなる。図11Aは、1ブロックの画素数が32画素の場合であり、図11Bは、1ブロックの画素数が4画素の場合である。このように、1ラインに含まれるブロック数が増えると、ブロックの先頭画素数が増えるため、圧縮後の符号量が多くなる。
また、ブロック圧縮方式の場合、隣接する2つのブロックの間で量子化レベルが異なる場合、減算部106において、隣接する2つのブロックの量子化データを減算することができず、予測誤差データを算出することができないという問題がある。
特開2006−174331号公報 特開2008−252726号公報
本発明の目的は、ブロック圧縮方式におけるブロック数を多くしても圧縮後の符号量を削減することができ、かつ、隣接する2つのブロックの間で量子化レベルが異なっていても予測誤差データを算出することができる画像処理装置を提供することにある。
上記目的を達成するために、本発明は、1ラインを複数のブロックに分割し、前記複数のブロックの各々に含まれる複数の画素の各々の画像データを量子化して圧縮する画像圧縮部を備え、
前記画像圧縮部は、
前記各々のブロックの複数の画素の画像データに基づいて、前記各々のブロックの量子化レベルを判定して判定結果を出力する量子化レベル判定部と、
前記各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の画像データを量子化して第1の量子化データを出力する第1の量子化処理部と、
前記各々のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の逆量子化データを出力する第1の逆量子化処理部と、
前記各々のブロックの各々の画素の第1の選択データを遅延して第1の遅延データを出力する第1の遅延部と、
前記各々のブロックの次のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の遅延データを量子化して第2の量子化データを出力する第2の量子化処理部と、
前記各々のブロックの各々の画素の第1の量子化データから第2の選択データを減算して予測誤差データを出力する減算部と、
前記1ラインの先頭画素の第1の量子化データおよび前記1ラインの2番目以降の画素の予測誤差データを圧縮データとして出力する第1の出力部と、
前記各々のブロックの最後の画素の第1の逆量子化データおよび第2の量子化データをそれぞれ前記第1および第2の選択データとして出力し、前記各々のブロックの最後の画素以外の画素の第1の量子化データおよび第1の遅延データをそれぞれ前記第1および第2の選択データとして出力するように制御する第1の制御部とを備える画像処理装置を提供する。
さらに、前記圧縮データを格納するメモリと、
前記メモリから読み出された前記各々のブロックの各々の画素の圧縮データを逆量子化して伸張する画像伸張部とを備え、
前記画像伸張部は、
前記各々のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の加算データを逆量子化して第2の逆量子化データを出力する第2の逆量子化処理部と、
前記各々のブロックの各々の画素の第3の選択データを遅延して第2の遅延データを出力する第2の遅延部と、
前記次のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第2の遅延データを量子化して第3の量子化データを出力する第3の量子化処理部と、
前記メモリから読み出された前記各々のブロックの各々の画素の圧縮データおよび前記各々のブロックの各々の画素の第4の選択データを加算して前記加算データを出力する加算部と、
前記メモリから読み出された前記1ラインの先頭画素の圧縮データおよび前記1ラインの2番目以降の画素の加算データを第4の量子化データとして出力する第2の出力部と、
前記各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の第4の量子化データを逆量子化して伸張データを出力する第3の逆量子化処理部と、
前記各々のブロックの最後の画素の第2の逆量子化データおよび第3の量子化データそれぞれ前記第3および第4の選択データとして出力し、前記各々のブロックの最後の画素以外の画素の加算データおよび第2の遅延データをそれぞれ前記第3および第4の選択データとして出力するように制御する第2の制御部とを備えることが好ましい。
また、前記量子化レベル判定部は、前記各々のブロックについて、隣接する2つの画素のRGB毎の画素データの差分の絶対値と閾値とを比較し、前記各々のブロックが、全ての前記隣接する2つの画素のRGB毎の画素データの差分の絶対値が前記閾値よりも小さい平坦領域なのか、前記全ての隣接する2つの画素のRGB毎の画素データの差分の絶対値が前記閾値以上である非平坦領域なのかを判定することにより、前記各々のブロックの量子化レベルを判定することが好ましい。
また、前記第1の量子化処理部は、
前記平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の画像データを量子化して第1の平坦領域量子化データを出力する第1の平坦領域量子化部と、
前記非平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の画像データを量子化して第1の非平坦領域量子化データを出力する第1の非平坦領域量子化部と、
前記第1の量子化データとして、前記各々のブロックが前記平坦領域である場合に前記第1の平坦領域量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第1の非平坦領域量子化データを出力する第1の切替部とを備え、
前記第1の逆量子化処理部は、
前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の平坦領域逆量子化データを出力する第1の平坦領域逆量子化部と、
前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の非平坦領域逆量子化データを出力する第1の非平坦領域逆量子化部と、
前記第1の逆量子化データとして、前記各々のブロックが前記平坦領域である場合に前記第1の平坦領域逆量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第1の非平坦領域逆量子化データを出力する第2の切替部とを備え、
前記第2の量子化処理部は、
前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の遅延データを量子化して第2の平坦領域量子化データを出力する第2の平坦領域量子化部と、
前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の遅延データを量子化して第2の非平坦領域量子化データを出力する第2の非平坦領域量子化部と、
前記第2の量子化データとして、前記各々のブロックの最後の画素以外の画素の画像データを出力する場合、前記各々のブロックが前記平坦領域である場合に前記第2の平坦領域量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第2の非平坦領域量子化データを出力し、前記各々のブロックの最後の画素の画像データを出力する場合、前記次のブロックが前記平坦領域である場合に前記第2の平坦領域量子化データを出力し、前記次のブロックが前記非平坦領域である場合に前記第2の非平坦領域量子化データを出力する第3の切替部とを備えることが好ましい。
また、前記第2の逆量子化処理部は、
前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第2の平坦領域逆量子化データを出力する第2の平坦領域逆量子化部と、
前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第2の非平坦領域逆量子化データを出力する第2の非平坦領域逆量子化部と、
前記第2の逆量子化データとして、前記各々のブロックが前記平坦領域である場合に前記第2の平坦領域逆量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第2の非平坦領域逆量子化データを出力する第4の切替部とを備え、
前記第3の量子化処理部は、
前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第2の遅延データを量子化して第3の平坦領域量子化データを出力する第3の平坦領域量子化部と、
前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第2の遅延データを量子化して第3の非平坦領域量子化データを出力する第3の非平坦領域量子化部と、
前記第3の量子化データとして、前記各々のブロックの最後の画素以外の画素の画像データを出力する場合、前記各々のブロックが前記平坦領域である場合に前記第3の平坦領域量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第3の非平坦領域量子化データを出力し、前記各々のブロックの最後の画素の画像データを出力する場合、前記次のブロックが前記平坦領域である場合に前記第3の平坦領域量子化データを出力し、前記次のブロックが前記非平坦領域である場合に前記第3の非平坦領域量子化データを出力する第5の切替部とを備え、
前記第3の逆量子化処理部は、
前記平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の第3の量子化データを逆量子化して第3の平坦領域逆量子化データを出力する第3の平坦領域逆量子化部と、
前記非平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の第3の量子化データを逆量子化して第3の非平坦領域逆量子化データを出力する第3の非平坦領域逆量子化部と、
前記伸張データとして、前記各々のブロックが前記平坦領域である場合に前記第3の平坦領域逆量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第3の非平坦領域逆量子化データを出力する第6の切替部とを備えることが好ましい。
また、前記第1の制御部は、
前記各々のブロックの画素の番号をカウントしてカウント値を出力するカウンタと、
前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第1の逆量子化データを前記第1の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記第1の量子化データを前記第1の選択データとして出力する第7の切替部と、
前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第2の量子化データを前記第2の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記第1の遅延データを前記第2の選択データとして出力する第8の切替部とを備えることが好ましい。
また、前記第2の制御部は、
前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第2の逆量子化データを前記第3の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記加算データを前記第3の選択データとして出力する第9の切替部と、
前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第3の量子化データを前記第4の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記第2の遅延データを前記第4の選択データとして出力する第10の切替部とを備えることが好ましい。
本発明では、現在のブロックの最後の画素の第1の量子化データが、一旦、現在のブロックの量子化レベルに基づいて逆量子化され、次のブロックの量子化レベルに基づいて再度量子化し直される。
これにより、画像圧縮部では、隣接する2つのブロックの量子化レベルが異なる場合であっても、隣接する2つのブロックの間で予測誤差データを算出することができる。また、1ラインの先頭画素のみの第1の量子化データおよび2番目以降の画素の予測誤差データをメモリに格納するため、1ラインに含まれるブロック数を多くしても圧縮後の符号量を削減することができる。
また、本発明では、ビットのシフト演算により逆量子化および量子化をし直すため、ハードウェアを簡素化し、かつ、所望の時間内に逆量子化および量子化をし直すことができる。また、乱数ディザリングにより量子化された第1の量子化データを使用して逆量子化および量子化をし直すため、ビットのシフト演算により逆量子化および量子化をし直したとしても圧縮伸張後の画像の画質を向上させることができる。
本発明の画像処理装置の概略的な構成を表す一実施形態のブロック図である。 図1に示す画像圧縮部の構成を表す一実施形態のブロック図である。 図1に示す画像伸張部の構成を表す一実施形態のブロック図である。 図2に示す画像圧縮部のより具体的な構成を表す一実施形態のブロック図である。 非平坦領域であると判定されるブロックの構成を表す一実施形態の概念図である。 平坦領域であると判定されるブロックの構成を表す一実施形態の概念図である。 図3に示す画像伸張部のより具体的な構成を表す一実施形態のブロック図である。 図4に示す画像圧縮部の動作と、図6に示す画像伸張部の動作を表す一実施形態のタイミングチャートである。 図4に示す画像処理部において、1ブロックの画素数が4画素の場合にブロック圧縮方式でメモリに格納されるデータを表す一実施形態の概念図である。 従来の画像圧縮部の構成を表す一例のブロック図である。 ライン圧縮方式でメモリに格納されるデータを表す一例の概念図である。 図9に示す画像処理部において、1ブロックの画素数が32画素の場合にブロック圧縮方式でメモリに格納されるデータを表す一例の概念図である。 図9に示す画像処理部において、1ブロックの画素数が4画素の場合にブロック圧縮方式でメモリに格納されるデータを表す一例の概念図である。
以下に、添付の図面に示す好適実施形態に基づいて、本発明の画像処理装置を詳細に説明する。
図1は、本発明の画像処理装置の概略的な構成を表す一実施形態のブロック図である。図1に示す画像処理装置10は、1ラインを複数のブロックに分割し、複数のブロックの各々に含まれる複数の画素の各々の画像データを量子化して圧縮し、さらに、逆量子化して伸張するものである。画像処理装置10は、画像圧縮部(エンコーダ)12と、メモリ14と、画像伸張部(デコーダ)16とを備えている。
図2は、図1に示す画像圧縮部の構成を表す一実施形態のブロック図である。図2に示す画像圧縮部12は、各々のブロックに含まれる各々の画素の画像データを量子化して圧縮するものであり、量子化レベル判定部18と、第1の量子化処理部20と、第1の逆量子化処理部22と、第1の遅延部24と、第2の量子化処理部26と、減算部28と、第1の出力部30と、第1の制御部32Aおよび32Bとを備えている。
画像圧縮部12において、量子化レベル判定部18には、画像データが外部から入力される。量子化レベル判定部18は、各々のブロックの複数の画素の画像データに基づいて、各々のブロックの量子化レベル(量子化係数)を判定して判定結果を出力する。
続いて、第1の量子化処理部20には、画像データが外部から入力され、量子化レベルの判定結果が量子化レベル判定部18から入力される。第1の量子化処理部20は、各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、各々のブロックの各々の画素の画像データを量子化して第1の量子化データを出力する。
続いて、第1の逆量子化処理部22には、第1の量子化データが第1の量子化処理部20から入力され、量子化レベルの判定結果が量子化レベル判定部18から入力される。第1の逆量子化処理部22は、各々のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の逆量子化データを出力する。
続いて、第1の制御部32Aには、第1の量子化データが第1の量子化処理部20から入力され、第1の逆量子化データが第1の逆量子化処理部22から入力される。第1の制御部32Aは、各々のブロックの最後の画素の画像データを制御する場合に、各々のブロックの最後の画素の第1の逆量子化データを第1の選択データとして出力し、各々のブロックの最後の画素以外の画素の画像データを制御する場合に、各々のブロックの最後の画素以外の画素の第1の量子化データを第1の選択データとして出力するように制御する。
続いて、第1の遅延部24には、第1の選択データが第1の制御部32Aから入力される。第1の遅延部24は、各々のブロックの各々の画素の第1の選択データを、1画素分の時間だけ、遅延して第1の遅延データを出力する。
続いて、第2の量子化処理部26には、第1の遅延データが第1の遅延部24から入力され、量子化レベルの判定結果が量子化レベル判定部18から入力される。第2の量子化処理部26は、各々のブロックの最後の画素以外の画素の画像データを量子化する場合、現在のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、現在のブロックの各々の画素の第1の遅延データを量子化して第2の量子化データを出力する。各々のブロックの最後の画素の画像データを量子化する場合、現在のブロックの次のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、現在のブロックの最後の画素の第1の遅延データを量子化して第2の量子化データを出力する。
続いて、第1の制御部32Bには、第1の遅延データが第1の遅延部24から入力され、第2の量子化データが第2の量子化処理部26から入力される。第1の制御部32Bは、各々のブロックの最後の画素の画像データを制御する場合に、各々のブロックの最後の画素の第2の量子化データを第2の選択データとして出力し、各々のブロックの最後の画素以外の画素の画像データを制御する場合に、各々のブロックの最後の画素以外の画素の第1の遅延データを第2の選択データとして出力するように制御する。
続いて、減算部28には、第1の量子化データが第1の量子化処理部20から入力され、1画素前の第2の選択データが第1の制御部32Bから入力される。減算部28は、各々のブロックの各々の画素の第1の量子化データから、1画素前の第2の選択データを減算して予測誤差データを出力する。
続いて、第1の出力部30には、第1の量子化データが第1の量子化処理部20から入力され、予測誤差データが減算部28から入力される。第1の出力部30は、1ラインの先頭画素の画像データを出力する場合に1ラインの先頭画素の第1の量子化データを圧縮データとして出力し、1ラインの2番目以降の画素の画像データを出力する場合に1ラインの2番目以降の画素の予測誤差データを圧縮データとして出力する。
続いて、メモリ14には、圧縮データが第1の出力部30から入力される。圧縮データはメモリ14に格納(保存)される。
図3は、図1に示す画像伸張部の構成を表す一実施形態のブロック図である。図3に示す画像伸張部16は、メモリ14から読み出された各々のブロックの各々の画素の圧縮データを逆量子化して伸張するものであり、第2の逆量子化処理部34と、第2の遅延部36と、第3の量子化処理部38と、加算部40と、第2の出力部42と、第3の逆量子化処理部44と、第2の制御部46Aおよび46Bとを備えている。
画像伸張部16において、第2の逆量子化処理部34には、加算部40から加算データが入力され、量子化レベルの判定結果が量子化レベル判定部18から入力される。第2の逆量子化処理部34は、各々のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、各々のブロックの各々の画素の加算データを逆量子化して第2の逆量子化データを出力する。
続いて、第2の制御部46Aには、加算データが加算部40から入力され、第2の逆量子化データが第2の逆量子化処理部34から入力される。第2の制御部46Aは、各々のブロックの最後の画素の圧縮データを制御する場合に各々のブロックの最後の画素の第2の逆量子化データを第3の選択データとして出力し、各々のブロックの最後の画素以外の画素の圧縮データを制御する場合に各々のブロックの最後の画素以外の画素の加算データを第3の選択データとして出力するように制御する。
続いて、第2の遅延部36には、第3の選択データが第2の制御部46Aから入力される。第2の遅延部36は、各々のブロックの各々の画素の第3の選択データを、1画素分の時間だけ、遅延して第2の遅延データを出力する。
続いて、第3の量子化処理部38には、第2の遅延データが第2の遅延部36から入力され、量子化レベルの判定結果が量子化レベル判定部18から入力される。第3の量子化処理部38は、各々のブロックの最後の画素以外の画素の画像データを量子化する場合、
現在のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、現在のブロックの各々の画素の第2の遅延データを量子化して第3の量子化データを出力する。各々のブロックの最後の画素の画像データを量子化する場合、現在のブロックの次のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、現在のブロックの最後の画素の第2の遅延データを量子化して第3の量子化データを出力する。
続いて、第2の制御部46Bには、第2の遅延データが第2の遅延部36から入力され、第3の量子化データが第3の量子化処理部38から入力される。第2の制御部46Bは、各々のブロックの最後の画素の圧縮データを制御する場合に各々のブロックの最後の画素の第3の量子化データを第4の選択データとして出力し、各々のブロックの最後の画素以外の画素の圧縮データを制御する場合に各々のブロックの最後の画素以外の画素の第2の遅延データを第4の選択データとして出力するように制御する。
続いて、加算部40には、メモリ14から読み出された圧縮データが入力され、1画素前の第4の選択データが第2の制御部46Bから入力される。加算部40は、メモリ14から読み出された各々のブロックの各々の画素の圧縮データと各々のブロックの各々の画素の、1画素前の第4の選択データを加算して加算データを出力する。
続いて、第2の出力部42には、メモリ14から読み出された圧縮データが入力され、加算データが加算部40から入力される。第2の出力部42は、1ラインの先頭画素の圧縮データを出力する場合にメモリ14から読み出された1ラインの先頭画素の圧縮データを第4の量子化データとして出力し、1ラインの2番目以降の画素の圧縮データを出力する場合に、1ラインの2番目以降の画素の加算データを第4の量子化データとして出力する。
続いて、第3の逆量子化処理部44には、第4の量子化データが第2の出力部42から入力され、量子化レベルの判定結果が量子化レベル判定部18から入力される。第3の逆量子化処理部44は、各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、各々のブロックの各々の画素の第4の量子化データを逆量子化して伸張データを出力する。
次に、乱数ディザリングによる量子化および逆量子化について説明する。
ディザリングは、量子化誤差による視覚的な画像の劣化を抑えるための技術である。ディザリングによる量子化では、画像データの量子化の際に、画像データの下位ビット成分を切り捨てて単純に丸めるだけではなく、例えば、画像データにおいて、視覚的な誤差が小さくなるように、下位ビット成分の切り捨てまたは切り上げが制御される。ディザリングの1つに乱数ディザリングがある。
乱数ディザリングによる量子化データおよび逆量子化データの演算式は、例えば、式(1)に示す通りである。
量子化データ:Quant = Floor ((In + Rand(Q)) / Q)
逆量子化データ:DeQuant = Quant * Q - Rand(Q) … 式(1)
ここで、Floorは、小数点以下の数値を切り捨てる関数、Inは入力画像データ、Qは量子化レベル、Rand(Q)は、量子化レベルQに基づいて生成される擬似乱数である。
乱数ディザリングによる量子化では、量子化レベルQに基づいて、0〜量子化レベルQ−1の範囲の擬似乱数Rand(Q)が生成され、入力画像データInおよび擬似乱数Rand(Q)を加算して加算データが生成され、量子化レベルQに基づいて、加算データを量子化することにより量子化データQuantが生成される。また、乱数ディザリングによる逆量子化では、量子化データQuantおよび量子化レベルQを掛け、擬似乱数Rand(Q)を減算して逆量子化することにより逆量子化データDeQuantが生成される。
例えば、量子化レベルQ=4の場合、擬似乱数Rand(Q)の可能な範囲は、[2, 3, 4, 5]となる。入力画像データIn=22、量子化の際の擬似乱数Rand(Q)=3、逆量子化の際の擬似乱数Rand(Q)=2の場合、量子化データおよび逆量子化データは、下記式(2)の通りとなる。
量子化データ:Quant = Floor ((22 + 3) / 4) = 6
逆量子化データ:DeQuant = 6 * 4 - 2 = 22 … 式(2)
乱数ディザリングによる量子化および逆量子化の場合、量子化データQuantは入力画像データInの近傍の値に確率的に決まり、空間的または時間的に見ると、その平均値は保存される。乱数ディザリングによる量子化および逆量子化では、擬似乱数Rand(Q)の処理が複雑であり、ハードウェアの規模が大きいというデメリットはあるが、量子化および逆量子化後の画像の見た目の劣化を減らすことができるというメリットがある。
次に、ビットのシフト演算による量子化および逆量子化について説明する。
ビットのシフト演算による量子化では、量子化レベルQに基づいて、画像データの全てのビットを下位ビット側にシフトすることにより、画像データの下位ビット成分が切り捨てられて丸められる。
ビットのシフト演算による量子化データおよび逆量子化データの演算式は、例えば、式(3)に示す通りである。
量子化データ:Quant = Floor ((In + Q/2) / Q)
逆量子化データ:DeQuant = Quant * Q … 式(3)
ビットのシフト演算による量子化では、入力画像データInおよび量子化レベルQ/2を加算して加算データが生成され、量子化レベルQに基づいて、加算データを量子化することにより量子化データQuantが生成される。また、ビットのシフト演算による逆量子化では、量子化データQuantおよび量子化レベルQを掛けて逆量子化することにより逆量子化データDeQuantが生成される。
同様に、量子化レベルQ=4、入力画像データIn=22の場合、量子化データおよび逆量子化データは、下記式(4)の通りとなる。
量子化データ:Quant = Floor ((22 + 2) / 4) = 6
逆量子化データ:DeQuant = 6 * 4 = 24 … 式(4)
ビットのシフト演算による量子化では、量子化レベルQが大きくなると、量子化および逆量子化後の画像の階調が階段状に変化し、画質の劣化が乱数ディザリングによる量子化の場合よりも大きいというデメリットはあるが、擬似乱数を発生させる必要がなく、しかもビットのシフト演算だけで画像データの下位ビット成分を切り捨てる処理を実現できるため、ハードウェアの規模が小さいというメリットがある。
次に、画像処理装置10について、1ラインを4画素からなる複数のブロックに分割し、ブロック単位で画像データを順次圧縮伸張する場合の具体例を挙げて説明する。
図4は、図2に示す画像圧縮部のより具体的な構成を表す一実施形態のブロック図である。図4に示す画像圧縮部12は、前述のように、量子化レベル判定部18と、第1の量子化処理部20と、第1の逆量子化処理部22と、第1の遅延部24と、第2の量子化処理部26と、減算部28と、第1の出力部30と、第1の制御部32Aおよび32Bとを備えている。
画像圧縮部12において、量子化レベル判定部18は、各々のブロックが、平坦領域なのか非平坦領域なのかを判定することにより、各々のブロックの量子化レベルを判定する。つまり、平坦領域なのか非平坦領域なのかに応じてブロックの量子化レベルを決定する。
各々のブロックが平坦領域なのか非平坦領域なのかを判定する平坦判定は、例えば、各々のブロックについて、隣接する2つの画素のRGB(赤緑青)毎の画素データの差分の絶対値と閾値とを比較し、全ての隣接する2つの画素のRGB毎の画素データの差分の絶対値が閾値よりも小さい場合に平坦領域であると判定し、全ての隣接する2つの画素のRGB毎の画素データの差分の絶対値が閾値以上である場合に非平坦領域であると判定する。
各々のブロックにp1、p2、p3、p4の4画素が含まれる場合、例えば、平坦判定の判定式は下記式(5)となり、その演算結果が0の場合に非平坦領域であると判定され、演算結果が1の場合に平坦領域であると判定される。
(|p2[R] - p1[R]|) < (V << shift) &&
(|p3[R] - p2[R]|) < (V << shift) &&
(|p4[R] - p3[R]|) < (V << shift) &&
(|p2[G] - p1[G]|) < (V << shift) &&
(|p3[G] - p2[G]|) < (V << shift) &&
(|p4[G] - p3[G]|) < (V << shift) &&
(|p2[B] - p1[B]|) < (V << shift) &&
(|p3[B] - p2[B]|) < (V << shift) &&
(|p4[B] - p3[B]|) < (V << shift) … 式(5)
ここで、Vは、外部から設定される前述の閾値、shiftは、量子化レベルの初期設定値である。また、<<はビットのシフト演算、&&は論理積(AND)を意味する。
一例として、V=3、shift=1であり、図5Aに示すブロックに含まれる4画素の画像データが下記式(6)の場合について説明する。
p1[R, G, B] = (93, 38, 95)
p2[R, G, B] = (108, 5, 218)
p3[R, G, B] = (178, 98, 247)
p4[R, G, B] = (255, 229, 255) … 式(6)
この場合、閾値(V << shift)の演算結果は、下記式(7)となり、
(V << shift) = (3 << 1) = 6 … 式(7)
隣接する2つの画素のRGB毎の差分の絶対値の演算結果は、下記式(8)となる。
(|p2[R] - p1[R]|) < (V << shift) = (|108 - 93|) < 6 = 0
(|p3[R] - p2[R]|) < (V << shift) = (|178 - 108|) < 6 = 0
(|p4[R] - p3[R]|) < (V << shift) = (|255 - 178|) < 6 = 0
(|p2[G] - p1[G]|) < (V << shift) = (|5 - 38|) < 6 = 0
(|p3[G] - p2[G]|) < (V << shift) = (|98 - 5|) < 6 = 0
(|p4[G] - p3[G]|) < (V << shift) = (|229 - 98|) < 6 = 0
(|p2[B] - p1[B]|) < (V << shift) = (|218 - 95|) < 6 = 0
(|p3[B] - p2[B]|) < (V << shift) = (|247 - 218|) < 6 = 0
(|p4[B] - p3[B]|) < (V << shift) = (|255 - 247|) < 6 = 0 … 式(8)
従って、全ての隣接する2つの画素のRGB毎の差分の絶対値の論理積の演算結果は0となり、図5Aに示すブロックは非平坦領域であると判定される。
他の一例として、図5Bに示すブロックに含まれる4画素の画像データが下記式(9)の場合について説明する。
p1[R, G, B] = (102, 79, 73)
p2[R, G, B] = (101, 78, 72)
p3[R, G, B] = (100, 77, 69)
p4[R, G, B] = (100, 75, 71) … 式(9)
この場合、隣接する2つの画素のRGB毎の差分の絶対値の演算結果は、下記式(10)となる。
(|p2[R] - p1[R]|) < (V << shift) = (|101 - 102|) < 6 = 1
(|p3[R] - p2[R]|) < (V << shift) = (|100 - 101|) < 6 = 1
(|p4[R] - p3[R]|) < (V << shift) = (|100 - 100|) < 6 = 1
(|p2[G] - p1[G]|) < (V << shift) = (|78 - 79|) < 6 = 1
(|p3[G] - p2[G]|) < (V << shift) = (|77 - 78|) < 6 = 1
(|p4[G] - p3[G]|) < (V << shift) = (|75 - 77|) < 6 = 1
(|p2[B] - p1[B]|) < (V << shift) = (|72 - 73|) < 6 = 1
(|p3[B] - p2[B]|) < (V << shift) = (|69 - 72|) < 6 = 1
(|p4[B] - p3[B]|) < (V << shift) = (|71 - 69|) < 6 = 1 … 式(10)
従って、全ての隣接する2つの画素のRGB毎の差分の絶対値の論理積は1となり、図5Bに示すブロックは平坦領域であると判定される。
なお、平坦判定は、平坦および非平坦の2段階に限らず、多段階に平坦度を判定してもよい。また、量子化レベル判定部18は、平坦判定に限らず、各々のブロックの複数の画素の画像データに基づいて、各々のブロックの量子化レベルを判定することができる。
続いて、第1の量子化処理部20は、第1の平坦領域量子化部52と、第1の非平坦領域量子化部54と、第1の切替部56とを備えている。
第1の量子化処理部20において、第1の平坦領域量子化部52は、平坦領域用の量子化レベルQ’を用いた乱数ディザリングにより、各々のブロックの各々の画素の画像データを量子化して第1の平坦領域量子化データを出力する。
続いて、第1の非平坦領域量子化部54は、非平坦領域用の量子化レベルQを用いた乱数ディザリングにより、各々のブロックの各々の画素の画像データを量子化して第1の非平坦領域量子化データを出力する。
続いて、第1の切替部56は、第1の量子化データとして、各々のブロックが平坦領域である場合に第1の平坦領域量子化データを出力し、各々のブロックが非平坦領域である場合に第1の非平坦領域量子化データを出力する。
続いて、第1の逆量子化処理部22は、第1の平坦領域逆量子化部58と、第1の非平坦領域逆量子化部60と、第2の切替部62とを備えている。
第1の逆量子化処理部22において、第1の平坦領域逆量子化部58は、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の平坦領域逆量子化データを出力する。
続いて、第1の非平坦領域逆量子化部60は、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の非平坦領域逆量子化データを出力する。
続いて、第2の切替部62は、第1の逆量子化データとして、各々のブロックが平坦領域である場合に第1の平坦領域逆量子化データを出力し、各々のブロックが非平坦領域である場合に第1の非平坦領域逆量子化データを出力する。
続いて、第1の制御部32Aは、カウンタ70と、第7の切替部72とを備えている。
第1の制御部32Aにおいて、カウンタ70は、各々のブロックの最後の画素、本実施形態の場合には4番目の画素の処理タイミングを検出するために設けられたものであり、各々のブロックの画素の番号をカウントしてカウント値を出力する。
続いて、第7の切替部72は、カウント値が、各々のブロックの最後の画素の番号である場合に第1の逆量子化データを第1の選択データとして出力し、カウント値が、各々のブロックの最後の画素の番号ではない場合に第1の量子化データを第1の選択データとして出力する。
続いて、第1の遅延部24には、第1の選択データが第1の制御部32Aの第7の切替部72から入力される。第1の遅延部24は、各々のブロックの各々の画素の第1の選択データを、1画素分の時間だけ、遅延して第1の遅延データを出力する。
続いて、第2の量子化処理部26は、第2の平坦領域量子化部64と、第2の非平坦領域量子化部66と、第3の切替部68とを備えている。
第2の量子化処理部26において、第2の平坦領域量子化部64は、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、各々のブロックの各々の画素の第1の遅延データを量子化して第2の平坦領域量子化データを出力する。
続いて、第2の非平坦領域量子化部66は、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、各々のブロックの各々の画素の第1の遅延データを量子化して第2の非平坦領域量子化データを出力する。
続いて、第3の切替部68は、第2の量子化データとして、各々のブロックの最後の画素以外の画素の画像データを出力する場合、現在のブロックが平坦領域である場合に第2の平坦領域量子化データを出力し、現在のブロックが非平坦領域である場合に第2の非平坦領域量子化データを出力する。各々のブロックの最後の画素の画像データを出力する場合、次のブロックが平坦領域である場合に第2の平坦領域量子化データを出力し、次のブロックが非平坦領域である場合に第2の非平坦領域量子化データを出力する。
続いて、第1の制御部32Bは、第8の切替部74を備えている。
第1の制御部32Bの第8の切替部74は、カウント値が、各々のブロックの最後の画素の番号である場合に第2の量子化データを第2の選択データとして出力し、カウント値が、各々のブロックの最後の画素の番号ではない場合に第1の遅延データを第2の選択データとして出力する。
図6は、図3に示す画像伸張部のより具体的な構成を表す一実施形態のブロック図である。図6に示す画像伸張部16は、前述のように、第2の逆量子化処理部34と、第2の遅延部36と、第3の量子化処理部38と、加算部40と、第2の出力部42と、第3の逆量子化処理部44と、第2の制御部46Aおよび46Bとを備えている。
画像伸張部16において、第2の逆量子化処理部34は、第2の平坦領域逆量子化部76と、第2の非平坦領域逆量子化部78と、第4の切替部80とを備えている。
第2の逆量子化処理部34において、第2の平坦領域逆量子化部76は、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、各々のブロックの各々の画素の加算データを逆量子化して第2の平坦領域逆量子化データを出力する。
続いて、第2の非平坦領域逆量子化部78は、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、各々のブロックの各々の画素の加算データを逆量子化して第2の非平坦領域逆量子化データを出力する。
続いて、第4の切替部80は、第2の逆量子化データとして、各々のブロックが平坦領域である場合に第2の平坦領域逆量子化データを出力し、各々のブロックが非平坦領域である場合に第2の非平坦領域逆量子化データを出力する。
続いて、第2の制御部46Aは、第9の切替部94を備えている。
第2の制御部46Aの第9の切替部94は、カウント値が、各々のブロックの最後の画素の番号である場合に第2の逆量子化データを第3の選択データとして出力し、カウント値が、各々のブロックの最後の画素の番号ではない場合に加算データを第3の選択データとして出力する。
続いて、第2の遅延部36には、第3の選択データが第2の制御部46Aの第9の切替部94から入力される。第2の遅延部36は、各々のブロックの各々の画素の第3の選択データを、1画素分の時間だけ、遅延して第2の遅延データを出力する。
続いて、第3の量子化処理部38は、第3の平坦領域量子化部82と、第3の非平坦領域量子化部84と、第5の切替部86とを備えている。
第3の量子化処理部38において、第3の平坦領域量子化部82は、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、各々のブロックの各々の画素の第2の遅延データを量子化して第3の平坦領域量子化データを出力する。
続いて、第3の非平坦領域量子化部84は、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、各々のブロックの各々の画素の第2の遅延データを量子化して第3の非平坦領域量子化データを出力する。
続いて、第5の切替部86は、第3の量子化データとして、各々のブロックの最後の画素以外の画素の画像データを出力する場合、現在のブロックが平坦領域である場合に第3の平坦領域量子化データを出力し、現在のブロックが非平坦領域である場合に第3の非平坦領域量子化データを出力する。各々のブロックの最後の画素の画像データを出力する場合、次のブロックが平坦領域である場合に第3の平坦領域量子化データを出力し、次のブロックが非平坦領域である場合に第3の非平坦領域量子化データを出力する。
続いて、第2の制御部46Bは、第10の切替部96を備えている。
第2の制御部46Bの第10の切替部96は、カウント値が、各々のブロックの最後の画素の番号である場合に第3の量子化データを第4の選択データとして出力し、カウント値が、各々のブロックの最後の画素の番号ではない場合に第2の遅延データを第4の選択データとして出力する。
続いて、第3の逆量子化処理部44は、第3の平坦領域逆量子化部88と、第3の非平坦領域逆量子化部90と、第6の切替部92とを備えている。
第3の逆量子化処理部44において、第3の平坦領域逆量子化部88は、平坦領域用の量子化レベルQ’を用いた乱数ディザリングにより、各々のブロックの各々の画素の第4の量子化データを逆量子化して第3の平坦領域逆量子化データを出力する。
続いて、第3の非平坦領域逆量子化部90は、非平坦領域用の量子化レベルQを用いた乱数ディザリングにより、各々のブロックの各々の画素の第4の量子化データを逆量子化して第3の非平坦領域逆量子化データを出力する。
続いて、第6の切替部92は、伸張データとして、各々のブロックが平坦領域である場合に第3の平坦領域逆量子化データを出力し、各々のブロックが非平坦領域である場合に第3の非平坦領域逆量子化データを出力する。
なお、量子化レベル判定部18を画像圧縮部12だけに設けて、画像伸張部16においても、その判定結果の出力を使用してもよいし、その逆でもよいし、あるいは、画像圧縮部12および画像伸張部16の両方に設けてもよい。カウンタ70も同様である。
次に、画像処理装置10の動作を説明する。
画像データを圧縮する場合、1ラインの各々のブロックに含まれる複数の画素の画像データが量子化レベル判定部18に順次入力される。また、1ラインに含まれる各々の画素の画像データが第1の量子化処理部20に順次入力される。つまり、量子化レベル判定部18には画像データがブロック単位で順次入力され、第1の量子化処理部20には、画像データが画素単位で順次入力される。
画像圧縮部12では、まず、量子化レベル判定部18において、各々のブロックの量子化レベルが判定され、各々のブロックの量子化レベルの判定結果が出力される。
また、各々のブロックの量子化レベルの判定結果が出力された後、第1の量子化処理部20において、各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、1ラインの各々のブロックの各々の画素の画像データが量子化され、各々のブロックの各々の画素の第1の量子化データが出力される。
つまり、第1の平坦領域量子化部52において、平坦領域用の量子化レベルQ’を用いた乱数ディザリングにより、各々のブロックの各々の画素の画像データが量子化され、第1の平坦領域量子化データが出力される。また、第1の非平坦領域量子化部54において、非平坦領域用の量子化レベルQを用いた乱数ディザリングにより、各々のブロックの各々の画素の画像データが量子化され、第1の非平坦領域量子化データが出力される。
続いて、第1の切替部56から、各々のブロックの各々の画素の第1の量子化データとして、各々のブロックが平坦領域である場合に第1の平坦領域量子化データが出力され、各々のブロックが非平坦領域である場合に第1の非平坦領域量子化データが出力される。
1ラインの先頭ブロックの先頭画素の画像データ、つまり、1ラインの先頭画素の画像データを量子化する場合、先頭ブロックの先頭画素の第1の量子化データが、第1の出力部30から先頭ブロックの先頭画素の圧縮データとして出力され、メモリ14に格納される。第1の出力部30は、ラインのデータイネーブル信号等により、ラインの先頭画素を識別する。メモリ14に格納される圧縮データは、RGBの画像データの場合、RGBの第1の量子化データとなり、YUV(Y:輝度およびUV:色差)の画像データの場合、YUVの第1の量子化データとなる。画像データが他の色空間の画像データの場合も同様である。
また、先頭ブロックの先頭画素の第1の量子化データは、図4において破線で示すように、カウンタ70のカウント値=1に応じて、第1の制御部32Aの第7の切替部72から先頭ブロックの先頭画素の第1の選択データとして出力される。続いて、先頭ブロックの先頭画素の第1の選択データは、第1の遅延部24から先頭ブロックの先頭画素の第1の遅延データとして出力され、先頭ブロックの先頭画素の第1の遅延データは、図4において破線で示すように、カウンタ70のカウント値=1に応じて、第1の制御部32Bの第8の切替部74から先頭ブロックの先頭画素の第2の選択データとして出力される。
続いて、先頭ブロックの2番目の画素の画像データを量子化する場合、減算部28において、先頭ブロックの2番目の画素の第1の量子化データから先頭ブロックの先頭画素の第2の選択データが減算され、つまり、先頭ブロックの2番目の画素の第1の量子化データと先頭画素の第1の量子化データとの差分が算出され、先頭ブロックの2番目の画素の予測誤差データが出力される。差分の算出は、RGB色空間の第1の量子化データに限らず、色空間を変換して、例えば、YUV色空間等の第1の量子化データで行ってもよい。
続いて、先頭ブロックの2番目の画素の予測誤差データは、第1の出力部30から圧縮データとして出力され、メモリ14に格納される。
先頭ブロックの2番目の画素の画像データを量子化する場合の第1の制御部32Aおよび32Bならびに第1の遅延部24の動作は、先頭ブロックの先頭画素の画像データを量子化する場合の動作と同様である(破線の経路)。
続いて、先頭ブロックの3番目の画素の画像データを量子化する場合の動作は、先頭ブロックの2番目の画素の画像データを量子化する場合の動作と同様である。
続いて、先頭ブロックの4番目の画素の画像データを量子化する場合の減算部28、第1の出力部30およびメモリ14の動作は、先頭ブロックの2番目の画素の画像データを量子化する場合の動作と同様である。
先頭ブロックの4番目の画素の第1の量子化データは、第1の逆量子化処理部22において、先頭ブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により逆量子化され、先頭ブロックの4番目の画素の第1の逆量子化データが出力される。
つまり、第1の平坦領域逆量子化部58において、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、先頭ブロックの4番目の画素の第1の量子化データが逆量子化され、第1の平坦領域逆量子化データが出力される。また、第1の非平坦領域逆量子化部60において、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、先頭ブロックの4番目の画素の第1の量子化データが逆量子化され、第1の非平坦領域逆量子化データが出力される。
続いて、第2の切替部62から、先頭ブロックの4番目の画素の第1の逆量子化データとして、先頭ブロックが平坦領域である場合に第1の平坦領域逆量子化データが出力され、先頭ブロックが非平坦領域である場合に第1の非平坦領域逆量子化データが出力される。
続いて、先頭ブロックの4番目の画素の第1の逆量子化データは、カウンタ70のカウント値=4に応じて、第1の制御部32Aの第7の切替部72から先頭ブロックの4番目の画素の第1の選択データとして出力され、先頭ブロックの4番目の画素の第1の選択データは、第1の遅延部24から先頭ブロックの4番目の画素の第1の遅延データとして出力される。
続いて、先頭ブロックの4番目の画素の第1の遅延データは、第2の量子化処理部26において、2番目のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により量子化され、先頭ブロックの4番目の画素の第2の量子化データが出力される。
つまり、第2の平坦領域量子化部64において、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、先頭ブロックの4番目の画素の第1の遅延データが量子化され、第2の平坦領域量子化データが出力される。また、第2の非平坦領域量子化部66において、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、先頭ブロックの4番目の画素の第1の遅延データが量子化され、第2の非平坦領域量子化データが出力される。
続いて、第3の切替部68から、先頭ブロックの4番目の画素の第2の量子化データとして、2番目のブロックが平坦領域である場合に第2の平坦領域量子化データが出力され、2番目のブロックが非平坦領域である場合に第2の非平坦領域量子化データが出力される。
続いて、先頭ブロックの4番目の画素の第2の量子化データは、カウンタ70のカウント値=4に応じて、第1の制御部32Bの第8の切替部74から先頭ブロックの4番目の画素の第2の選択データとして出力される。
続いて、1ラインの2番目のブロックの先頭画素の画像データを量子化する場合、減算部28において、2番目のブロックの先頭画素の第1の量子化データから先頭ブロックの4番目の画素の第2の選択データが減算され、つまり、2番目のブロックの先頭画素の第1の量子化データと先頭ブロックの4番目の画素の第1の量子化データを先頭のブロックの量子化レベルを用いたビットのシフト演算で逆量子化し、2番目のブロックの量子化レベルを用いたビットのシフト演算で量子化した第2の選択データとの差分が算出され、2番目のブロックの先頭画素の予測誤差データが出力される。
続いて、2番目のブロックの先頭画素の予測誤差データは、第1の出力部30から圧縮データとして出力され、メモリ14に格納される。
2番目のブロックの先頭画素の第1の量子化データを量子化する場合の第1の制御部32Aおよび32Bならびに第1の遅延部24の動作は、先頭ブロックの先頭画素の画像データを量子化する場合の動作と同様である(破線の経路)。
これ以後の動作は、1ラインの最後の画素の画像データの量子化が終了するまで上記の動作の繰り返しとなる。
一方、圧縮データを伸張する場合、メモリ14から読み出された圧縮データが加算部40および第2の出力部42に順次入力される。
画像伸張部16では、先頭ブロックの先頭画素の圧縮データ、つまり、1ラインの先頭画素の圧縮データを逆量子化する場合、メモリ14から読み出された先頭ブロックの先頭画素の圧縮データが、第2の出力部42から先頭ブロックの先頭画素の第4の量子化データとして出力される。第2の出力部42は、ラインのデータイネーブル信号等により、ラインの先頭画素を識別する。
続いて、第3の逆量子化処理部44において、先頭ブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、先頭ブロックの先頭画素の第4の量子化データが逆量子化され、先頭ブロックの先頭画素の伸張データが出力される。
つまり、第3の平坦領域逆量子化部88において、平坦領域用の量子化レベルQ’を用いた乱数ディザリングにより、先頭ブロックの先頭画素の第3の量子化データが逆量子化され、第3の平坦領域逆量子化データが出力される。また、第3の非平坦領域逆量子化部90において、非平坦領域用の量子化レベルQを用いた乱数ディザリングにより、先頭ブロックの先頭画素の第3の量子化データが逆量子化され、第3の非平坦領域逆量子化データが出力される。
続いて、第6の切替部92から、先頭ブロックの先頭画素の伸張データとして、先頭ブロックが平坦領域である場合に第3の平坦領域逆量子化データが出力され、先頭ブロックが非平坦領域である場合に第3の非平坦領域逆量子化データが出力される。
また、先頭ブロックの先頭画素の圧縮データは、加算部40から先頭ブロックの先頭画素の加算データとして出力される。
続いて、先頭ブロックの先頭画素の加算データは、図6において破線で示すように、カウンタ70のカウント値=1に応じて、第2の制御部46Aから先頭ブロックの先頭画素の第3の選択データとして出力される。続いて、先頭ブロックの先頭画素の第3の選択データは、第2の遅延部36から先頭ブロックの先頭画素の第2の遅延データとして出力され、先頭ブロックの先頭画素の第2の遅延データは、図6において破線で示すように、カウンタ70のカウント値=1に応じて、第2の制御部46Bから先頭ブロックの先頭画素の第4の選択データとして出力される。
続いて、先頭ブロックの2番目の画素の圧縮データを逆量子化する場合、メモリ14から読み出された先頭ブロックの2番目の画素の圧縮データおよび先頭ブロックの先頭画素の第4の選択データが加算され、つまり、先頭ブロックの先頭画素の圧縮データおよび2番目の画素の圧縮データが加算され、先頭ブロックの2番目の画素の加算データが出力される。
続いて、先頭ブロックの2番目の画素の加算データは、第2の出力部42から先頭ブロックの2番目の画素の第4の量子化データとして出力され、第3の逆量子化処理部44から先頭ブロックの2番目の画素の伸張データが出力される。
また、先頭ブロックの2番目の画素の圧縮データを逆量子化する場合の第2の制御部46Aおよび46Bならびに第2の遅延部36の動作は、先頭ブロックの先頭画素の圧縮データを逆量子化する場合の動作と同様である(破線の経路)。
続いて、先頭ブロックの3番目の画素の圧縮データを逆量子化する場合の動作は、先頭ブロックの2番目の画素の圧縮データを逆量子化する場合の動作と同様である。
続いて、先頭ブロックの4番目の画素の圧縮データを逆量子化する場合の加算部40、第2の出力部42および第3の逆量子化処理部44の動作は、先頭ブロックの2番目の画素の圧縮データを逆量子化する場合の動作と同様である。
先頭ブロックの4番目の画素の加算データは、第2の逆量子化処理部34において、先頭ブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により逆量子化され、先頭ブロックの4番目の画素の第2の逆量子化データが出力される。
つまり、第2の平坦領域逆量子化部76において、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、先頭ブロックの4番目の画素の加算データが逆量子化され、第2の平坦領域逆量子化データが出力される。また、第2の非平坦領域逆量子化部78において、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、先頭ブロックの4番目の画素の加算データが逆量子化され、第2の非平坦領域逆量子化データが出力される。
続いて、第4の切替部80から、先頭ブロックの4番目の画素の第2の逆量子化データとして、先頭ブロックが平坦領域である場合に第2の平坦領域逆量子化データが出力され、先頭ブロックが非平坦領域である場合に第2の非平坦領域逆量子化データが出力される。
続いて、先頭ブロックの4番目の画素の第2の逆量子化データは、カウンタ70のカウント値=4に応じて、第2の制御部46Aの第9の切替部94から先頭ブロックの4番目の画素の第3の選択データとして出力され、先頭ブロックの4番目の画素の第3の選択データは、第2の遅延部36から先頭ブロックの4番目の画素の第2の遅延データとして出力される。
続いて、先頭ブロックの4番目の画素の第2の遅延データは、第3の量子化処理部38において、2番目のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により量子化され、先頭ブロックの4番目の画素の第3の量子化データが出力される。
つまり、第3の平坦領域量子化部82において、平坦領域用の量子化レベルQ’を用いたビットのシフト演算により、先頭ブロックの4番目の画素の第2の遅延データが量子化され、第3の平坦領域量子化データが出力される。また、第3の非平坦領域量子化部84において、非平坦領域用の量子化レベルQを用いたビットのシフト演算により、先頭ブロックの4番目の画素の第2の遅延データが量子化され、第3の非平坦領域量子化データが出力される。
続いて、第5の切替部86から、先頭ブロックの4番目の画素の第3の量子化データとして、2番目のブロックが平坦領域である場合に第3の平坦領域量子化データが出力され、2番目のブロックが非平坦領域である場合に第3の非平坦領域量子化データが出力される。
続いて、先頭ブロックの4番目の画素の第3の量子化データは、カウンタ70のカウント値=4に応じて、第2の制御部46Bの第10の切替部96から先頭ブロックの4番目の画素の第4の選択データとして出力される。
続いて、2番目のブロックの先頭画素の圧縮データを逆量子化する場合、メモリ14から読み出された2番目のブロックの先頭画素の圧縮データおよび先頭ブロックの4番目の画素の第4の選択データが加算され、つまり、2番目のブロックの先頭画素の圧縮データおよび先頭ブロックの4番目の画素の圧縮データが加算され、2番目のブロックの先頭画素の加算データが出力される。
続いて、2番目のブロックの先頭画素の加算データを逆量子化する場合の第2の出力部42、第3の逆量子化処理部44、第2の制御部46Aおよび46Bならびに第2の遅延部36の動作は、先頭ブロックの2番目の画素の加算データを逆量子化する場合の動作と同様である。
これ以後の動作は、1ラインの最後の画素の画像データの量子化が終了するまで上記の動作の繰り返しとなる。また、2番目以降のラインの画像データについても同様にして圧縮伸張が行われ、1画面の画像データについて圧縮伸張が行われる。
次に、画像圧縮部12の動作タイミングについて説明する。尚、本説明では、1ラインを4画素からなる複数のブロックに分割し、ブロック単位で画像データを順次圧縮伸張する場合の具体例を挙げて説明する。
図7は、図4に示す画像圧縮部の動作と、図6に示す画像伸張部の動作を表す一実施形態のタイミングチャートである。図7のタイミングチャートは、図4の画像圧縮部12において、1ラインの先頭画素から画像データ1、2、3、…が順次入力され、1ラインの先頭画素の第1の量子化データおよび2番目以降の画素の予測誤差データ、つまり、圧縮データが出力されるまでの動作と、図6に示す画像伸張部16において、圧縮データが伸張され、伸張データが出力されるまでの動作を表したものである。クロック信号CLKは、1画素の画像データを処理するタイミングを制御する信号である。
画像データ1、2、3…は、図7のタイミングチャートに示すように、クロック信号CLKの立上がりのタイミングに同期して順次画像圧縮部12に入力される。なお、これ以後は、主に画像データ1〜4について説明を続けるが、画像データ5以降についても同様である。
画像圧縮部12では、画像データ1〜4、つまり、先頭ブロックの4画素分の画像データが入力された後、量子化レベル判定部18から先頭ブロックの量子化レベルの判定結果が出力される。本実施形態の場合、先頭ブロックの量子化レベルの判定結果としてAが出力され、画像データ5〜8、つまり、2番目のブロックの量子化レベルの判定結果としてBが出力される。
続いて、量子化レベル判定部18から先頭ブロックの量子化レベルの判定結果Aが出力された後、第1の量子化処理部20から、先頭ブロックの量子化レベルの判定結果Aに基づいて、画像データ1〜4に対応する第1の量子化データ1Q1A〜4Q1Aが順次出力される。
続いて、第1の量子化処理部20から第1の量子化データ1Q1Aが出力された後、第1の出力部30から、1ラインの先頭画素に対応する圧縮データを出力する場合、第1の量子化データ1Q1Aが圧縮データとして出力され、メモリ14に格納される。
続いて、第1の量子化処理部20から第1の量子化データ1Q1A〜4Q1Aが順次出力された後、第1の逆量子化処理部22から、先頭ブロックの量子化レベルの判定結果Aに基づいて、第1の量子化データ1Q1A〜4Q1Aに対応する第1の逆量子化データ1IQ1A〜4IQ1Aが順次出力される。
続いて、第1の逆量子化処理部22から第1の逆量子化データ1IQ1A〜4IQ1Aが順次出力された後、第1の制御部32Aの第7の切替部72から、カウンタ70のカウント値=1〜3の場合、第1の量子化データ1Q1A〜3Q1Aが第1の選択データとして順次出力される。一方、カウント値=4の場合、第1の逆量子化データ4IQ1Aが第1の選択データとして出力される。
続いて、第1の制御部32Aの第7の切替部72から第1の選択データ1Q1A〜3Q1Aおよび4IQ1Aが順次出力された後、第1の遅延部24から、第1の選択データ1Q1A〜3Q1Aおよび4IQ1Aが1画素分(クロック信号CLKの1クロック分)の時間だけ遅延された第1の遅延データ1Q1A〜3Q1Aおよび4IQ1Aが順次出力される。
続いて、第1の遅延部24から第1の遅延データ1Q1A〜3Q1Aおよび4IQ1Aが順次出力された後、第2の量子化処理部26から、カウント値=1〜3の場合、先頭ブロックの量子化レベルの判定結果Aに基づいて、第2の量子化データ1Q2A〜3Q2Aが順次出力され、カウント値=4の場合、2番目のブロックの量子化レベルの判定結果Bに基づいて、第2の量子化データ4Q2Bが出力される。
続いて、第2の量子化処理部26から第2の量子化データ1Q2A〜3Q2Aおよび4Q2Bが順次出力された後、第1の制御部32Bの第8の切替部74から、カウンタ70のカウント値=1〜3の場合、第1の遅延データ1Q1A〜3Q1Aが第2の選択データとして順次出力される。一方、カウント値=4の場合、第2の量子化データ4Q2Bが第2の選択データとして出力される。
続いて、第1の制御部32Bの第8の切替部74から第2の選択データ1Q1A〜3Q1Aおよび4Q2Bが順次出力された後、減算部28から、第1の量子化データ2Q1A〜4Q1Aおよび5Q1Bと第2の選択データ1Q1A〜3Q1Aおよび4Q2Bとの差分データ2Q1A−1Q1A、3Q1A−2Q1A、4Q1A−3Q1Aおよび5Q1B−4Q2Bが予測誤差データ2−1PEA、3−2PEA、4−3PEAおよび5−4PEBとして順次出力される。
続いて、減算部28から予測誤差データ2−1PEA、3−2PEA、4−3PEAおよび5−4PEBが順次出力された後、1ラインの2番目以降の画素に対応する圧縮データを出力する場合、予測誤差データ2−1PEA、3−2PEA、4−3PEAおよび5−4PEBが圧縮データとして順次出力され、メモリ14に格納される。
画像圧縮部12では、第1の逆量子化処理部22および第2の量子化処理部26において、乱数ディザリングではなく、ビットのシフト演算により逆量子化および量子化が行われるため、図7のタイミングチャートに示すように、第1の量子化データおよび第1の遅延データが出力されてから、クロック信号CLKの1サイクル以内で処理を完了することができる。
次に、画像伸張部16の動作タイミングについて説明する。
図7のタイミングチャートに示すように、メモリ14から読み出された圧縮データ1Q1A、2−1PEA、3−2PEA、4−3PEAおよび5−4PEB、…は、クロック信号CLKの立上がりのタイミングに同期して順次画像伸張部16に入力される。
画像伸張部16では、メモリ14から圧縮データ1Q1Aが読み出された後、第2の出力部42から、1ラインの先頭画素に対応する第4の量子化データを出力し、圧縮データ1Q1Aが第4の量子化データとして出力される。
続いて、第2の出力部42から第4の量子化データ1Q1Aが出力された後、第3の逆量子化処理部44から、先頭ブロックの量子化レベルの判定結果Aに基づいて、第4の量子化データ1Q1Aに対応する伸張データとして画像データ1が出力される。
また、メモリ14から圧縮データ1Q1Aが読み出された後、加算部40から、圧縮データ1Q1Aが加算データとして出力される。
続いて、メモリ14から圧縮データ2−1PEA、3−2PEA、4−3PEAおよび5−4PEBが読み出された後、圧縮データ2−1PEA、3−2PEA、4−3PEAおよび5−4PEB、つまり、差分データ2Q1A−1Q1A、3Q1A−2Q1A、4Q1A−3Q1Aおよび5Q1B−4Q2Bと、後述する第4の選択データ1Q1A〜3Q1Aおよび4Q2Bとの加算データ2Q1A〜4Q1Aおよび5Q1Bが順次出力される。
続いて、加算部40から加算データ1Q1A〜4Q1Aが順次出力された後、第2の逆量子化処理部34から、先頭ブロックの量子化レベルの判定結果Aに基づいて、加算データ1Q1A〜4Q1Aに対応する第2の逆量子化データ1IQ1A〜4IQ1Aが順次出力される。
続いて、第2の逆量子化処理部34から第2の逆量子化データ1IQ1A〜4IQ1Aが順次出力された後、第2の制御部46Aの第9の切替部94から、カウンタ70のカウント値=1〜3の場合、加算データ1Q1A〜3Q1Aが第3の選択データとして順次出力される。一方、カウント値=4の場合、第2の逆量子化データ4IQ1Aが第3の選択データとして出力される。
続いて、第2の制御部46Aの第9の切替部94から第3の選択データ1Q1A〜3Q1Aおよび4IQ1Aが順次出力された後、第2の遅延部36から、第3の選択データ1Q1A〜3Q1Aおよび4IQ1Aが1画素分の時間だけ遅延された第2の遅延データ1Q1A〜3Q1Aおよび4IQ1Aが順次出力される。
続いて、第2の遅延部36から第2の遅延データ1Q1A〜3Q1Aおよび4IQ1Aが順次出力された後、第3の量子化処理部38から、カウント値=1〜3の場合、先頭ブロックの量子化レベルの判定結果Aに基づいて、第3の量子化データ1Q2A〜3Q2Aが順次出力され、カウント値=4の場合、2番目のブロックの量子化レベルの判定結果Bに基づいて、第3の量子化データ4Q2Bが出力される。
続いて、第3の量子化処理部38から第3の量子化データ1Q2A〜3Q2Aおよび4Q2Bが順次出力された後、第2の制御部46Bの第10の切替部96から、カウンタ70のカウント値=1〜3の場合、第2の遅延データ1Q1A〜3Q1Aが第4の選択データとして順次出力される。一方、カウント値=4の場合、第3の量子化データ4Q2Bが第4の選択データとして出力される。
続いて、第2の制御部46Bの第10の切替部96から第4の選択データ1Q1A〜3Q1Aおよび4Q2Bが順次出力された後、前述の加算部40に順次入力される。
続いて、加算部40から、加算データ2Q1A〜4Q1Aおよび5Q1Bが順次出力された後、1ラインの2番目以降の画素に対応する第4の量子化データを出力する場合、加算データ2Q1A〜4Q1Aおよび5Q1Bが第4の量子化データとして順次出力される。
続いて、第2の出力部42から第4の量子化データ2Q1A〜4Q1Aおよび5Q1Bが出力された後、第3の逆量子化処理部44から、先頭ブロックの量子化レベルの判定結果Aに基づいて、第4の量子化データ2Q1A〜4Q1Aおよび5Q1Bに対応する伸張データとして画像データ2、3、4、…が順次出力される。
画像伸張部16においても、第2の逆量子化処理部34および第3の量子化処理部38において、乱数ディザリングではなく、ビットのシフト演算により逆量子化および量子化が行われるため、図7のタイミングチャートに示すように、加算データおよび第2の遅延データが出力されてから、クロック信号CLKの1サイクル以内で処理を完了することができる。
以上のように、画像圧縮部12では、現在の画素が現在のブロックの最後の画素ではなくかつ先頭ブロックの先頭画素でない場合、第1の遅延部24において、現在の画素の第1の量子化データが遅延された第1の遅延データが予測誤差データの算出に使用される。
一方、平坦領域のブロックと非平坦領域のブロックとの間では量子化レベルが異なるため、そのままでは隣接する2つのブロックの間で予測誤差データを算出することができない。これに対し、画像圧縮部12では、現在のブロックの最後の画素の第1の量子化データが、一旦、現在のブロックの量子化レベルに基づいて逆量子化され、次のブロックの量子化レベルに基づいて再度量子化し直された第2の量子化データが予測誤差データの算出に使用される。
例えば、現在のブロックが非平坦領域、次のブロックが平坦領域であると判定され、非平坦領域のブロックの量子化レベルが2、平坦領域のブロックの量子化レベルが1の場合を考える。
この場合、現在のブロックの画像データRGB=888(RGB各8ビット)は、第1の量子化処理部20において、非平坦領域のブロックの量子化レベル2に基づいて第1の量子化データRGB=666に量子化される。続いて、第1の量子化データRGB=666は、第1の逆量子化処理部22において、第1の逆量子化データRGB=888に逆量子化され、第1の逆量子化データRGB=888は、再度、第2の量子化処理部26において、平坦領域のブロックの量子化レベル1に基づいて第2の量子化データRGB=777に量子化される。
これにより、画像圧縮部12では、隣接する2つのブロックの量子化レベルが異なる場合であっても、隣接する2つのブロックの間で予測誤差データを算出することができる。また、従来例の図11Bに対応する本実施形態の図8に示すように、1ラインの先頭画素のみの第1の量子化データおよび2番目以降の画素の予測誤差データをメモリ14に格納するため、1ラインに含まれるブロック数を多くしても圧縮後の符号量を削減することができる。
また、現在のブロックの最後の画素の第1の量子化データの逆量子化および量子化をし直す場合、圧縮伸張後の画像の画質を向上させるために、乱数ディザリングにより逆量子化および量子化を行うことが考えられる。しかし、乱数ディザリングにより逆量子化および量子化をし直す場合、ハードウェアが複雑となり、かつ、処理時間も長くなるため、所望の処理時間内に逆量子化および量子化をし直すことが難しい場合がある。
これに対し、画像圧縮部12では、ビットのシフト演算により逆量子化および量子化をし直すため、ハードウェアを簡素化し、かつ、所望の時間内に逆量子化および量子化をし直すことができる。また、乱数ディザリングにより量子化された第1の量子化データを使用して逆量子化および量子化をし直すため、ビットのシフト演算により逆量子化および量子化をし直したとしても圧縮伸張後の画像の画質を向上させることができる。
なお、例えば、ブロックに含まれる4画素のRGB色空間の圧縮データをYUV色空間の圧縮データに変換し、水平方向の2画素の圧縮データの色差Uの平均値を算出したものを圧縮後の色差Uとしてもよい。また、水平方向の2画素の圧縮データの色差Vについても同様である。さらに、垂直方向の2画素の圧縮データの色差UおよびVについても同様にして圧縮してもよい。
また、1ブロックの画素数が4画素の場合に限らず、1ブロックを任意の画素数としてブロック単位で圧縮伸張を行うことができる。
また、画像圧縮部12は、さらに、第1の出力部30から出力される圧縮データを符号化して符号化データを出力する符号化部を備え、符号化データをメモリ14に格納する構成としてもよい。この場合、画像伸張部16は、さらに、メモリ14から読み出された符号化データを復号化して復号化データを出力する復号化部を備え、復号化データを加算部40および第2の出力部42に入力する構成とする。
以上、本発明について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
10 画像処理装置
12 画像圧縮部
14 メモリ
16 画像伸張部
18 量子化レベル判定部
20 第1の量子化処理部
22 第1の逆量子化処理部
24 第1の遅延部
26 第2の量子化処理部
28 減算部
30 第1の出力部
32A、32B 第1の制御部
34 第2の逆量子化処理部
36 第2の遅延部
38 第3の量子化処理部
40 加算部
42 第2の出力部
44 第3の逆量子化処理部
46A、46B 第2の制御部
52 第1の平坦領域量子化部
54 第1の非平坦領域量子化部
56 第1の切替部
58 第1の平坦領域逆量子化部
60 第1の非平坦領域逆量子化部
62 第2の切替部
64 第2の平坦領域量子化部
66 第2の非平坦領域量子化部
68 第3の切替部
70 カウンタ
72 第7の切替部
74 第8の切替部
76 第2の平坦領域逆量子化部
78 第2の非平坦領域逆量子化部
80 第4の切替部
82 第3の平坦領域量子化部
84 第3の非平坦領域量子化部
86 第5の切替部
88 第3の平坦領域逆量子化部
90 第3の非平坦領域逆量子化部
92 第6の切替部
94 第9の切替部
96 第10の切替部
100 画像圧縮部
102 量子化処理部
104 遅延部
106 減算部
108 出力部
110 メモリ

Claims (7)

  1. 1ラインを複数のブロックに分割し、前記複数のブロックの各々に含まれる複数の画素の各々の画像データを量子化して圧縮する画像圧縮部を備え、
    前記画像圧縮部は、
    前記各々のブロックの複数の画素の画像データに基づいて、前記各々のブロックの量子化レベルを判定して判定結果を出力する量子化レベル判定部と、
    前記各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の画像データを量子化して第1の量子化データを出力する第1の量子化処理部と、
    前記各々のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の逆量子化データを出力する第1の逆量子化処理部と、
    前記各々のブロックの各々の画素の第1の選択データを遅延して第1の遅延データを出力する第1の遅延部と、
    前記各々のブロックの次のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の遅延データを量子化して第2の量子化データを出力する第2の量子化処理部と、
    前記各々のブロックの各々の画素の第1の量子化データから第2の選択データを減算して予測誤差データを出力する減算部と、
    前記1ラインの先頭画素の第1の量子化データおよび前記1ラインの2番目以降の画素の予測誤差データを圧縮データとして出力する第1の出力部と、
    前記各々のブロックの最後の画素の第1の逆量子化データおよび第2の量子化データをそれぞれ前記第1および第2の選択データとして出力し、前記各々のブロックの最後の画素以外の画素の第1の量子化データおよび第1の遅延データをそれぞれ前記第1および第2の選択データとして出力するように制御する第1の制御部とを備える画像処理装置。
  2. さらに、前記圧縮データを格納するメモリと、
    前記メモリから読み出された前記各々のブロックの各々の画素の圧縮データを逆量子化して伸張する画像伸張部とを備え、
    前記画像伸張部は、
    前記各々のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の加算データを逆量子化して第2の逆量子化データを出力する第2の逆量子化処理部と、
    前記各々のブロックの各々の画素の第3の選択データを遅延して第2の遅延データを出力する第2の遅延部と、
    前記次のブロックの判定結果に対応する量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第2の遅延データを量子化して第3の量子化データを出力する第3の量子化処理部と、
    前記メモリから読み出された前記各々のブロックの各々の画素の圧縮データおよび前記各々のブロックの各々の画素の第4の選択データを加算して前記加算データを出力する加算部と、
    前記メモリから読み出された前記1ラインの先頭画素の圧縮データおよび前記1ラインの2番目以降の画素の加算データを第4の量子化データとして出力する第2の出力部と、
    前記各々のブロックの判定結果に対応する量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の第4の量子化データを逆量子化して伸張データを出力する第3の逆量子化処理部と、
    前記各々のブロックの最後の画素の第2の逆量子化データおよび第3の量子化データそれぞれ前記第3および第4の選択データとして出力し、前記各々のブロックの最後の画素以外の画素の加算データおよび第2の遅延データをそれぞれ前記第3および第4の選択データとして出力するように制御する第2の制御部とを備える請求項1に記載の画像処理装置。
  3. 前記量子化レベル判定部は、前記各々のブロックについて、隣接する2つの画素のRGB毎の画素データの差分の絶対値と閾値とを比較し、前記各々のブロックが、全ての前記隣接する2つの画素のRGB毎の画素データの差分の絶対値が前記閾値よりも小さい平坦領域なのか、前記全ての隣接する2つの画素のRGB毎の画素データの差分の絶対値が前記閾値以上である非平坦領域なのかを判定することにより、前記各々のブロックの量子化レベルを判定する請求項2に記載の画像処理装置。
  4. 前記第1の量子化処理部は、
    前記平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の画像データを量子化して第1の平坦領域量子化データを出力する第1の平坦領域量子化部と、
    前記非平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の画像データを量子化して第1の非平坦領域量子化データを出力する第1の非平坦領域量子化部と、
    前記第1の量子化データとして、前記各々のブロックが前記平坦領域である場合に前記第1の平坦領域量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第1の非平坦領域量子化データを出力する第1の切替部とを備え、
    前記第1の逆量子化処理部は、
    前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の平坦領域逆量子化データを出力する第1の平坦領域逆量子化部と、
    前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第1の非平坦領域逆量子化データを出力する第1の非平坦領域逆量子化部と、
    前記第1の逆量子化データとして、前記各々のブロックが前記平坦領域である場合に前記第1の平坦領域逆量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第1の非平坦領域逆量子化データを出力する第2の切替部とを備え、
    前記第2の量子化処理部は、
    前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の遅延データを量子化して第2の平坦領域量子化データを出力する第2の平坦領域量子化部と、
    前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の遅延データを量子化して第2の非平坦領域量子化データを出力する第2の非平坦領域量子化部と、
    前記第2の量子化データとして、前記各々のブロックの最後の画素以外の画素の画像データを出力する場合、前記各々のブロックが前記平坦領域である場合に前記第2の平坦領域量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第2の非平坦領域量子化データを出力し、前記各々のブロックの最後の画素の画像データを出力する場合、前記次のブロックが前記平坦領域である場合に前記第2の平坦領域量子化データを出力し、前記次のブロックが前記非平坦領域である場合に前記第2の非平坦領域量子化データを出力する第3の切替部とを備える請求項3に記載の画像処理装置。
  5. 前記第2の逆量子化処理部は、
    前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第2の平坦領域逆量子化データを出力する第2の平坦領域逆量子化部と、
    前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第1の量子化データを逆量子化して第2の非平坦領域逆量子化データを出力する第2の非平坦領域逆量子化部と、
    前記第2の逆量子化データとして、前記各々のブロックが前記平坦領域である場合に前記第2の平坦領域逆量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第2の非平坦領域逆量子化データを出力する第4の切替部とを備え、
    前記第3の量子化処理部は、
    前記平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第2の遅延データを量子化して第3の平坦領域量子化データを出力する第3の平坦領域量子化部と、
    前記非平坦領域用の量子化レベルを用いたビットのシフト演算により、前記各々のブロックの各々の画素の第2の遅延データを量子化して第3の非平坦領域量子化データを出力する第3の非平坦領域量子化部と、
    前記第3の量子化データとして、前記各々のブロックの最後の画素以外の画素の画像データを出力する場合、前記各々のブロックが前記平坦領域である場合に前記第3の平坦領域量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第3の非平坦領域量子化データを出力し、前記各々のブロックの最後の画素の画像データを出力する場合、前記次のブロックが前記平坦領域である場合に前記第3の平坦領域量子化データを出力し、前記次のブロックが前記非平坦領域である場合に前記第3の非平坦領域量子化データを出力する第5の切替部とを備え、
    前記第3の逆量子化処理部は、
    前記平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の第3の量子化データを逆量子化して第3の平坦領域逆量子化データを出力する第3の平坦領域逆量子化部と、
    前記非平坦領域用の量子化レベルを用いた乱数ディザリングにより、前記各々のブロックの各々の画素の第3の量子化データを逆量子化して第3の非平坦領域逆量子化データを出力する第3の非平坦領域逆量子化部と、
    前記伸張データとして、前記各々のブロックが前記平坦領域である場合に前記第3の平坦領域逆量子化データを出力し、前記各々のブロックが前記非平坦領域である場合に前記第3の非平坦領域逆量子化データを出力する第6の切替部とを備える請求項4に記載の画像処理装置。
  6. 前記第1の制御部は、
    前記各々のブロックの画素の番号をカウントしてカウント値を出力するカウンタと、
    前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第1の逆量子化データを前記第1の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記第1の量子化データを前記第1の選択データとして出力する第7の切替部と、
    前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第2の量子化データを前記第2の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記第1の遅延データを前記第2の選択データとして出力する第8の切替部とを備える請求項5に記載の画像処理装置。
  7. 前記第2の制御部は、
    前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第2の逆量子化データを前記第3の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記加算データを前記第3の選択データとして出力する第9の切替部と、
    前記カウント値が、前記各々のブロックの最後の画素の番号である場合に前記第3の量子化データを前記第4の選択データとして出力し、前記カウント値が、前記各々のブロックの最後の画素の番号ではない場合に前記第2の遅延データを前記第4の選択データとして出力する第10の切替部とを備える請求項6に記載の画像処理装置。
JP2017061383A 2017-03-27 2017-03-27 画像処理装置 Withdrawn JP2018164226A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017061383A JP2018164226A (ja) 2017-03-27 2017-03-27 画像処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017061383A JP2018164226A (ja) 2017-03-27 2017-03-27 画像処理装置

Publications (1)

Publication Number Publication Date
JP2018164226A true JP2018164226A (ja) 2018-10-18

Family

ID=63861107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017061383A Withdrawn JP2018164226A (ja) 2017-03-27 2017-03-27 画像処理装置

Country Status (1)

Country Link
JP (1) JP2018164226A (ja)

Similar Documents

Publication Publication Date Title
JP4612716B2 (ja) 画像符号化装置、画像符号化方法、画像符復号化システム
US10075721B2 (en) Method and apparatus for encoding video signal and method and apparatus for decoding video signal
KR101547434B1 (ko) 비트 예산에 기초한 이미지 데이터의 선택적 무손실-손실 압축
US7403183B2 (en) Image data processing method, and image data processing circuit
JP5502336B2 (ja) 映像信号符号化装置及び、映像信号符号化方法
US7995848B2 (en) Method and apparatus for encoding and decoding image data
US20100296745A1 (en) Pixel Block Processing
JP5073004B2 (ja) 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US8929672B2 (en) Method of compressing image data
JP6681383B2 (ja) エンコーダ、デコーダ、および方法
US10417951B2 (en) Image processing apparatus
CN105144231A (zh) 选择图像动态范围转换算子的方法和设备
JP2014078860A (ja) 圧縮器、駆動装置、表示装置および圧縮方法
JP2016213527A (ja) 画像符号化装置、画像処理装置、画像符号化方法
WO2011121716A1 (ja) 動画像符号化方法、復号化方法、符号化装置および復号化装置
EP3952310A1 (en) Dpcm codec with higher reconstruction quality on important gray levels
JP2007074337A (ja) 符号化装置及び符号化方法
US8422807B2 (en) Encoder and image conversion apparatus
JP2018164226A (ja) 画像処理装置
JP2018082299A (ja) 映像符号化装置、映像復号装置、及びプログラム
KR20100013142A (ko) 프레임 메모리 압축방법
JP4241517B2 (ja) 画像符号化装置及び画像復号装置
KR20150028716A (ko) 영상 부호화 장치 및 영상 부호화 방법
JP2009071472A (ja) 画像符号化方法、画像復号化方法、画像符号化装置、画像復号化装置、及び半導体集積回路
JP2005151312A (ja) 画像符号化、復号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191121

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20191121

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20200123