JPEG XRにおけるストリームの形式には、空間モード及び周波数モードの二種類のモードがある。空間モードにおいては、一画像内の各マクロブロックに関するデータが順に配列されることによって、一画像のストリームが構成されている。周波数モードにおいては、一画像内の全マクロブロックに関する直流成分のデータのストリームと、一画像内の全マクロブロックに関する低周波成分のデータのストリームと、一画像内の全マクロブロックに関する高周波成分の上位データ(NORMAL DATA)のストリームと、一画像内の全マクロブロックに関する高周波成分の下位データ(FLEXBITS)のストリームとが順に配列されることによって、一画像のストリームが構成されている。
JPEG XRのエンコードはマクロブロック単位で実行されるため、空間モードのストリームは、ハードウェアを用いて容易に生成することが可能である。しかし、周波数モードのストリームをハードウェアを用いて生成する場合には、まず、画像に対する一回目の処理によって、当該画像内の全マクロブロックに関する直流成分のデータのストリームを生成し、次に、同一画像に対する二回目の処理によって、当該画像内の全マクロブロックに関する低周波成分のデータのストリームを生成し、次に、同一画像に対する三回目の処理によって、当該画像内の全マクロブロックに関する高周波成分の上位データのストリームを生成し、次に、同一画像に対する四回目の処理によって、当該画像内の全マクロブロックに関する高周波成分の下位データのストリームを生成する必要がある。このように、同一画像に対して四回の処理を繰り返す必要があるため、処理の所要時間が長くなるという問題がある。
本発明はかかる問題を解決するために成されたものであり、JPEGXRにおける周波数モードのストリームをハードウェアを用いて生成するにあたり、処理の所要時間を短縮することが可能な画像処理装置を得ることを目的とするものである。
本発明の第1の態様に係る画像処理装置は、変換処理部と、符号化処理部と、記憶部と、を備え、前記変換処理部は、画像内の所定の画素ブロックに関する複数の画素データに対して所定の変換処理を行うことにより、直流成分の周波数データ、低周波成分の周波数データ、及び高周波成分の周波数データを生成し、前記符号化処理部は、画像内の複数の画素ブロックの各々に関する直流成分の周波数データに対して所定の符号化処理を順次行うことにより、当該画像に関する複数の直流成分の周波数データを含む直流ストリームを生成する直流処理部と、画像内の複数の画素ブロックの各々に関する低周波成分の周波数データに対して所定の符号化処理を順次行うことにより、当該画像に関する複数の低周波成分の周波数データを含む低周波ストリームを生成する低周波処理部と、画像内の複数の画素ブロックの各々に関する高周波成分の周波数データに対して所定の符号化処理を順次行うことにより、当該画像に関する複数の高周波成分の周波数データのうち所定位置より上位側の桁範囲に属する複数の上位データを含む上位高周波ストリームと、当該画像に関する複数の高周波成分の周波数データのうち前記所定位置より下位側の桁範囲に属する複数の下位データを含む下位高周波ストリームとを生成する高周波処理部と、前記直流ストリーム、前記低周波ストリーム、前記上位高周波ストリーム、及び前記下位高周波ストリームを前記記憶部に向けて出力する複数の出力ポートを含む出力部と、を有することを特徴とするものである。
第1の態様に係る画像処理装置によれば、出力部は、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを記憶部に向けて出力する複数の出力ポートを含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうちの複数のストリームを、複数の出力ポートから記憶部に向けて並列に出力することができる。その結果、JPEGXRにおける周波数モードのストリームをハードウェアを用いて生成するにあたり、同一画像に対して四回の処理を繰り返す必要がないため、処理の所要時間を短縮することが可能となる。
本発明の第2の態様に係る画像処理装置は、第1の態様に係る画像処理装置において特に、前記出力部は、前記直流ストリームを出力する第1の出力ポートと、前記低周波ストリームを出力する第2の出力ポートと、前記上位高周波ストリームを出力する第3の出力ポートと、前記下位高周波ストリームを出力する第4の出力ポートと、を含むことを特徴とするものである。
第2の態様に係る画像処理装置によれば、出力部は、直流ストリームを出力する第1の出力ポートと、低周波ストリームを出力する第2の出力ポートと、上位高周波ストリームを出力する第3の出力ポートと、下位高周波ストリームを出力する第4の出力ポートと、を含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを、それぞれ第1の出力ポート、第2の出力ポート、第3の出力ポート、及び第4の出力ポートから記憶部に向けて並列に出力することができる。その結果、JPEGXRにおける周波数モードのストリームをハードウェアを用いて生成するにあたり、同一画像に対して一回の処理を行えばよいため、処理の所要時間をさらに短縮することが可能となる。
本発明の第3の態様に係る画像処理装置は、第1又は第2の態様に係る画像処理装置において特に、復号処理部をさらに備え、前記復号処理部は、前記直流ストリーム、前記低周波ストリーム、前記上位高周波ストリーム、及び前記下位高周波ストリームを前記記憶部から入力する複数の入力ポートを含む入力部を有することを特徴とするものである。
第3の態様に係る画像処理装置によれば、入力部は、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを記憶部から入力する複数の入力ポートを含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうちの複数のストリームを、記憶部から複数の入力ポートに並列に入力することができる。その結果、JPEGXRにおける周波数モードのストリームを記憶部から読み出して復号処理部に入力するにあたり、同一マクロブロックに対して四回の読み出し処理を繰り返す必要がないため、処理の所要時間を短縮することが可能となる。また、周波数モードにおいては、各マクロブロックに関して、直流成分の周波数データ、低周波成分の周波数データ、高周波成分の周波数データのうちの上位データ、及び高周波成分の周波数データのうちの下位データが、記憶部内において離れた領域に格納されている。しかしながら、第3の態様に係る画像処理装置によれば、同一マクロブロックに対応するこれら複数の周波数データを、データが必要になる度にそれぞれの格納領域から読み出して復号処理部に入力することができる。そのため、復号処理部は、各マクロブロックに関する復号処理を支障なく実行することが可能となる。
本発明の第4の態様に係る画像処理装置は、第3の態様に係る画像処理装置において特に、前記入力部は、前記直流ストリームを入力する第1の入力ポートと、前記低周波ストリームを入力する第2の入力ポートと、前記上位高周波ストリームを入力する第3の入力ポートと、前記下位高周波ストリームを入力する第4の入力ポートと、を含むことを特徴とするものである。
第4の態様に係る画像処理装置によれば、入力部は、直流ストリームを入力する第1の入力ポートと、低周波ストリームを入力する第2の入力ポートと、上位高周波ストリームを入力する第3の入力ポートと、下位高周波ストリームを入力する第4の入力ポートと、を含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを、記憶部からそれぞれ第1の入力ポート、第2の入力ポート、第3の入力ポート、及び第4の入力ポートに並列に入力することができる。その結果、JPEGXRにおける周波数モードのストリームを記憶部から読み出して復号処理部に入力するにあたり、同一マクロブロックに対して一回の読み出し処理を行えばよいため、処理の所要時間をさらに短縮することが可能となる。
本発明の第5の態様に係る画像処理装置は、第3又は第4の態様に係る画像処理装置において特に、前記復号処理部は、画像の縮小率を設定する設定部と、前記設定部によって設定された縮小率に基づいて、前記直流ストリーム、前記低周波ストリーム、前記上位高周波ストリーム、及び前記下位高周波ストリームのうち、前記記憶部から前記復号処理部に入力する少なくとも一つのストリームを選択する選択部と、をさらに有することを特徴とするものである。
第5の態様に係る画像処理装置によれば、選択部は、設定部によって設定された縮小率に基づいて、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうち、記憶部から復号処理部に入力する少なくとも一つのストリームを選択する。例えば、縮小率が1/16に設定された場合には直流ストリームのみを選択し、縮小率が1/4に設定された場合には直流ストリーム及び低周波ストリームを選択する。これにより、縮小画像を簡易に作成することが可能となる。また、縮小画像の作成に用いない不要なストリームを記憶部から復号処理部に入力しないことにより、不要なストリームに対して無駄な復号処理が実行されることを予め回避することが可能となる。
本発明の第6の態様に係る画像処理装置は、第1〜第5のいずれか一つの態様に係る画像処理装置において特に、前記符号化処理部は、前記複数の下位データの各々をその最下位桁から順に削除することによって削減される画像の符号量を、削除される桁数別に保持する保持部をさらに有することを特徴とするものである。
第6の態様に係る画像処理装置によれば、保持部は、複数の下位データの各々をその最下位桁から順に削除することによって削減される画像の符号量を、削除される桁数別に保持する。従って、保持部が保持している情報を用いることにより、画像の符号量を目標符号量以下に抑えるための簡易な符号量制御を行うことが可能となる。
本発明の第7の態様に係る画像処理装置は、第6の態様に係る画像処理装置において特に、符号量制御部をさらに備え、前記出力部は、前記複数の上位データの各々の値がゼロであるか否かを示す情報と、前記複数の下位データの各々のビット長に関する情報とを含む情報データを、前記符号量制御部に向けて出力する第5の出力ポートを含み、前記符号量制御部は、前記保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために前記複数の下位データの各々から削除すべき桁数を設定する設定部と、前記情報データと、前記設定部によって設定された削除すべき桁数とに基づいて、前記記憶部に記憶されている前記下位高周波ストリームに対して再符号化処理を行う再符号化処理部と、を有することを特徴とするものである。
第7の態様に係る画像処理装置によれば、複数の上位データの各々の値がゼロであるか否かを示す情報と、複数の下位データの各々のビット長に関する情報とを含む情報データが、符号化部から符号量制御部に入力される。また、設定部は、保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために複数の下位データの各々から削除すべき桁数を設定する。そして、再符号化処理部は、情報データと、設定部によって設定された削除すべき桁数とに基づいて、記憶部に記憶されている下位高周波ストリームに対して再符号化処理を行う。このように、各下位データの一部(又は全部)が削除されるように下位高周波ストリームの再符号化処理を行い、再符号化処理後の下位高周波ストリームに対して復号処理を行うことにより、デコーダから出力される復号画像の符号量を目標符号量以下に抑えることが可能となる。
本発明の第8の態様に係る画像処理装置は、第6の態様に係る画像処理装置において特に、符号量制御部をさらに備え、前記出力部は、前記複数の上位データの各々の値がゼロであるか否かを示す情報と、前記複数の下位データの各々のビット長に関する情報とを含む情報データを、前記符号量制御部に向けて出力する第5の出力ポートを含み、前記符号量制御部は、前記保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために前記複数の下位データの各々から削除すべき桁数を設定する設定部と、前記情報データと、前記設定部によって設定された削除すべき桁数とに基づいて、前記記憶部から復号処理部への前記下位高周波ストリームの入力を制御する入力制御部と、を有することを特徴とするものである。
第8の態様に係る画像処理装置によれば、複数の上位データの各々の値がゼロであるか否かを示す情報と、複数の下位データの各々のビット長に関する情報とを含む情報データが、符号化部から符号量制御部に入力される。また、設定部は、保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために複数の下位データの各々から削除すべき桁数を設定する。そして、入力制御部は、情報データと、設定部によって設定された削除すべき桁数とに基づいて、記憶部から復号処理部への下位高周波ストリームの入力を制御する。各下位データの一部(又は全部)が記憶部から復号処理部に入力されないよう入力制御部によって制御することにより、実質的に各下位データの一部(又は全部)が削除された下位高周波ストリームを、復号処理部に入力することができる。そして、当該下位高周波ストリームに対して復号処理を行うことにより、デコーダから出力される復号画像の符号量を目標符号量以下に抑えることが可能となる。
本発明の第9の態様に係る画像処理装置は、復号処理部と、記憶部と、を備え、前記記憶部には、画像内の複数の画素ブロックの各々に関する直流成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の直流成分の周波数データを含む直流ストリームと、画像内の複数の画素ブロックの各々に関する低周波成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の低周波成分の周波数データを含む低周波ストリームと、画像内の複数の画素ブロックの各々に関する高周波成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の高周波成分の周波数データのうち所定位置より上位側の桁範囲に属する複数の上位データを含む上位高周波ストリームと、当該画像に関する複数の高周波成分の周波数データのうち前記所定位置より下位側の桁範囲に属する複数の下位データを含む下位高周波ストリームと、が記憶されており、前記復号処理部は、画像の縮小率を設定する設定部と、前記設定部によって設定された縮小率に基づいて、前記直流ストリーム、前記低周波ストリーム、前記上位高周波ストリーム、及び前記下位高周波ストリームのうち、前記記憶部から前記復号処理部に入力する少なくとも一つのストリームを選択する選択部と、を有することを特徴とするものである。
第9の態様に係る画像処理装置によれば、選択部は、設定部によって設定された縮小率に基づいて、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうち、記憶部から復号処理部に入力する少なくとも一つのストリームを選択する。例えば、縮小率が1/16に設定された場合には直流ストリームのみを選択し、縮小率が1/4に設定された場合には直流ストリーム及び低周波ストリームを選択する。これにより、縮小画像を簡易に作成することが可能となる。また、縮小画像の作成に用いない不要なストリームを記憶部から復号処理部に入力しないことにより、不要なストリームに対して無駄な復号処理が実行されることを予め回避することが可能となる。
本発明の第10の態様に係る画像処理装置は、復号処理部と、記憶部と、符号量制御部と、保持部と、を備え、前記記憶部には、画像内の複数の画素ブロックの各々に関する直流成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の直流成分の周波数データを含む直流ストリームと、画像内の複数の画素ブロックの各々に関する低周波成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の低周波成分の周波数データを含む低周波ストリームと、画像内の複数の画素ブロックの各々に関する高周波成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の高周波成分の周波数データのうち所定位置より上位側の桁範囲に属する複数の上位データを含む上位高周波ストリームと、当該画像に関する複数の高周波成分の周波数データのうち前記所定位置より下位側の桁範囲に属する複数の下位データを含む下位高周波ストリームと、が記憶されており、前記保持部は、前記複数の下位データの各々をその最下位桁から順に削除することによって削減される画像の符号量を、削除される桁数別に保持し、前記符号量制御部は、前記保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために前記複数の下位データの各々から削除すべき桁数を設定する設定部と、前記複数の上位データの各々の値がゼロであるか否かを示す情報と、前記複数の下位データの各々のビット長に関する情報と、前記設定部によって設定された削除すべき桁数とに基づいて、前記記憶部に記憶されている前記下位高周波ストリームに対して再符号化処理を行う再符号化処理部と、を有することを特徴とするものである。
第10の態様に係る画像処理装置によれば、保持部は、複数の下位データの各々をその最下位桁から順に削除することによって削減される画像の符号量を、削除される桁数別に保持する。また、設定部は、保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために複数の下位データの各々から削除すべき桁数を設定する。そして、再符号化処理部は、複数の上位データの各々の値がゼロであるか否かを示す情報と、複数の下位データの各々のビット長に関する情報と、設定部によって設定された削除すべき桁数とに基づいて、記憶部に記憶されている下位高周波ストリームに対して再符号化処理を行う。このように、各下位データの一部(又は全部)が削除されるように下位高周波ストリームの再符号化処理を行い、再符号化処理後の下位高周波ストリームに対して復号処理を行うことにより、デコーダから出力される復号画像の符号量を目標符号量以下に抑えることが可能となる。
本発明の第11の態様に係る画像処理装置は、復号処理部と、記憶部と、符号量制御部と、保持部と、を備え、前記記憶部には、画像内の複数の画素ブロックの各々に関する直流成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の直流成分の周波数データを含む直流ストリームと、画像内の複数の画素ブロックの各々に関する低周波成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の低周波成分の周波数データを含む低周波ストリームと、画像内の複数の画素ブロックの各々に関する高周波成分の周波数データに対して所定の符号化処理を順次行うことによって得られた、当該画像に関する複数の高周波成分の周波数データのうち所定位置より上位側の桁範囲に属する複数の上位データを含む上位高周波ストリームと、当該画像に関する複数の高周波成分の周波数データのうち前記所定位置より下位側の桁範囲に属する複数の下位データを含む下位高周波ストリームと、が記憶されており、前記保持部は、前記複数の下位データの各々をその最下位桁から順に削除することによって削減される画像の符号量を、削除される桁数別に保持し、前記符号量制御部は、前記保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために前記複数の下位データの各々から削除すべき桁数を設定する設定部と、前記複数の上位データの各々の値がゼロであるか否かを示す情報と、前記複数の下位データの各々のビット長に関する情報と、前記設定部によって設定された削除すべき桁数とに基づいて、前記記憶部から前記復号処理部への前記下位高周波ストリームの入力を制御する入力制御部と、を有することを特徴とするものである。
第11の態様に係る画像処理装置によれば、保持部は、複数の下位データの各々をその最下位桁から順に削除することによって削減される画像の符号量を、削除される桁数別に保持する。また、設定部は、保持部を参照することによって、画像の符号量を目標符号量以下に抑えるために複数の下位データの各々から削除すべき桁数を設定する。そして、入力制御部は、複数の上位データの各々の値がゼロであるか否かを示す情報と、複数の下位データの各々のビット長に関する情報と、設定部によって設定された削除すべき桁数とに基づいて、記憶部から復号処理部への下位高周波ストリームの入力を制御する。各下位データの一部(又は全部)が記憶部から復号処理部に入力されないよう入力制御部によって制御することにより、実質的に各下位データの一部(又は全部)が削除された下位高周波ストリームを、復号処理部に入力することができる。そして、当該下位高周波ストリームに対して復号処理を行うことにより、デコーダから出力される復号画像の符号量を目標符号量以下に抑えることが可能となる。
本発明によれば、JPEGXRにおける周波数モードのストリームをハードウェアを用いて生成するにあたり、処理の所要時間を短縮することが可能な画像処理装置を得ることが可能となる。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
図1は、本発明の実施の形態に係る画像処理装置1の全体構成を示すブロック図である。画像処理装置1は、エンコーダ2、デコーダ3、記憶部4、及び符号量制御部5を備えて構成されている。エンコーダ2は、色変換部11、周波数変換部12、量子化部13、予測部14、及び符号化部15を有して構成されている。デコーダ3は、復号部21、逆予測部22、逆量子化部23、周波数逆変換部24、及び色逆変換部35を有して構成されている。
色変換部11には、例えば、CCD又はCMOSイメージセンサ等の撮像素子から、RGB色空間の画素データが入力される。色変換部11は、RGB色空間の画素データを、例えばYUV色空間の画素データに変換して出力する。
周波数変換部12には、色変換部11から画素データが入力される。周波数変換部12は、画素データに対して所定の周波数変換処理(HD Photo Core Transform:PCT)を実行することにより、周波数データを生成して出力する。
図2は、周波数変換部12の具体的な構成を示すブロック図である。図2に示すように、JPEGXRにおけるエンコーダ2は、第1階層の周波数変換部12Aと、第2階層の周波数変換部12Bとを備えている。
周波数変換部12Aは、色変換部11から入力された画素データS1に対して周波数変換処理(PCT)を実行することにより、高周波(HP)成分の周波数データS1HPと、第1階層における直流成分のデータS1Lとを生成して出力する。データS1Lは、周波数変換部12Bに入力される。周波数変換部12Bは、データS1Lに対して周波数変換処理(PCT)を実行することにより、低周波(LP)成分の周波数データS1LPと、直流(DC)成分の周波数データS1DCとを生成して出力する。
このようにJPEGXRにおいては、第1階層の周波数変換部12Aから高周波成分の周波数データS1HPが出力され、第2階層の周波数変換部12Bから低周波成分の周波数データS1LPと直流成分の周波数データS1DCとが出力される。縦16画素×横16画素の一つのマクロブロックに関して、240個の周波数データS1HPと、15個の周波数データS1LPと、1個の周波数データS1DCとが出力される。
図1を参照して、量子化部13には、周波数変換部12から周波数データS1HP,S1LP,S1DCが入力される。量子化部13は、設定されている量子化係数を用いて、周波数データS1HP,S1LP,S1DCに対して所定の量子化処理を実行する。
予測部14には、量子化部13から量子化処理後の周波数データS1HP,S1LP,S1DCが入力される。予測部14は、周波数データS1HP,S1LP,S1DCに対して所定の予測処理を実行する。
符号化部15には、予測部14から予測処理後の周波数データS1HP,S1LP,S1DCが入力される。符号化部15は、周波数データS1HP,S1LP,S1DCに対して所定の符号化処理を実行する。
図3は、符号化部15の具体的な構成を示すブロック図である。符号化部15は、DC処理部31、LP処理部32、HP処理部33、出力部34、及び保持部35を備えている。出力部34は、DMA(Direct Memory Access)方式によって記憶部4にアクセス可能な複数の出力ポート41〜44と、符号量制御部5に接続された出力ポート45とを有している。
DC処理部31は、予測部14から入力された周波数データS1DCに対してエントロピー符号化処理を実行することにより、周波数データS2DCを生成して出力する。周波数データS2DCは、出力ポート41から記憶部4に向けて出力される。DC処理部31には、画像内の複数のマクロブロックの各々に関する周波数データS1DCが順次入力され、DC処理部31は、各マクロブロックに関する周波数データS2DCを順次出力する。これにより、DC処理部31からは、当該画像内の全マクロブロックに関する周波数データS2DCが配列されたデータストリーム(以下「直流ストリーム」と称す)が出力される。そして、直流ストリームは、出力ポート41から記憶部4に向けて出力される。
LP処理部32は、予測部14から入力された周波数データS1LPに対してエントロピー符号化処理を実行することにより、周波数データS2LPを生成して出力する。周波数データS2LPは、出力ポート42から記憶部4に向けて出力される。LP処理部32には、画像内の複数のマクロブロックの各々に関する周波数データS1LPが順次入力され、LP処理部32は、各マクロブロックに関する周波数データS2LPを順次出力する。これにより、LP処理部32からは、当該画像内の全マクロブロックに関する周波数データS2LPが配列されたデータストリーム(以下「低周波ストリーム」と称す)が出力される。そして、低周波ストリームは、出力ポート42から記憶部4に向けて出力される。
図4は、HP処理部33の具体的な構成を示すブロック図である。また、図5は、周波数データS1HPを示す図である。HP処理部33は、処理部51,52,53を備えている。
処理部51は、予測部14から入力された周波数データS1HPの絶対値部を、所定位置Mより上位側の桁範囲内の上位データS1HPU(NORMAL DATA)と、所定位置Mより下位側の桁範囲内の下位データS1HPL(FLEXBITS)とに分割して出力する。JPEGXRにおいては、所定位置Mはマクロブロック単位で適応的に可変である。
処理部52は、処理部51から入力された上位データS1HPUに対してエントロピー符号化処理を実行することにより、上位データS2HPUを生成して出力する。上位データS2HPUは、出力ポート43から記憶部4に向けて出力される。処理部52には、画像内の複数のマクロブロックの各々に関する上位データS1HPUが順次入力され、処理部52は、各マクロブロックに関する上位データS2HPUを順次出力する。これにより、処理部52からは、当該画像内の全マクロブロックに関する上位データS2HPUが配列されたデータストリーム(以下「上位高周波ストリーム」と称す)が出力される。そして、上位高周波ストリームは、出力ポート43から記憶部4に向けて出力される。
処理部53は、処理部51から入力された下位データS1HPLを、エントロピー符号化処理を実行することなく、下位データS2HPLとして出力する。下位データS2HPLは、出力ポート44から記憶部4に向けて出力される。処理部53には、画像内の複数のマクロブロックの各々に関する下位データS1HPLが順次入力され、処理部53は、各マクロブロックに関する下位データS2HPLを順次出力する。これにより、処理部53からは、当該画像内の全マクロブロックに関する下位データS2HPLが配列されたデータストリーム(以下「下位高周波ストリーム」と称す)が出力される。そして、下位高周波ストリームは、出力ポート44から記憶部4に向けて出力される。
また、処理部51は、周波数データS1HPの符号(正又は負)を表す符号データを抽出する。上位データS1HPUの値がゼロでない場合は、符号データは、処理部52によって上位データS1HPUがエントロピー符号化される際に、併せて符号化される。また、上位データS1HPUの値がゼロであり、かつ、下位データS1HPLの値がゼロでない場合は、符号データは、SIGN BITとして下位データS2HPLに付加される。なお、上位データS1HPUの値及び下位データS1HPLの値がいずれもゼロである場合は、符号データは存在しないため、下位データS2HPLにSIGN BITは付加されない。
上記の通り、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームは、出力ポート41,42,43,44から記憶部4に向けてそれぞれ出力される。図6は、記憶部4が有する記憶領域の一部を示す図である。出力ポート41,42,43,44からそれぞれ出力された直流ストリーム(周波数データS2DC)、低周波ストリーム(周波数データS2LP)、上位高周波ストリーム(上位データS2HPU)、及び下位高周波ストリーム(下位データS2HPL)は、記憶部4の領域AR1,AR2,AR3,AR4内にそれぞれ格納される。一画像分のデータの格納が完了した後、領域AR1,AR2,AR3,AR4間の隙間を詰めるように再配置が行われ、これにより、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームは、一つの画像ファイルとして記憶部4の連続する領域R5,AR6,AR7,AR8内にそれぞれ格納される。これにより、周波数モードのストリームが作成される。
ここで、JPEG XRにおいては、FLEXBITSをその最下位ビットから順に削除するためのTRIM FLEXBITSなるパラメータを設定することが可能である。TRIM FLEXBITSの値は、「0」〜「15」の範囲内で、画像単位で任意に設定することができる。例えば、ある画像に関してTRIM FLEXBITSを「3」に設定した場合には、その画像内の全てのFLEXBITSの下位3ビットが削除される。
図3を参照して、保持部35は、TRIM FLEXBITSを「1」〜「15」の各値に設定した場合にそれぞれ削減される画像の符号量を示す情報を、データテーブルとして保持している。図7は、保持部35が保持しているデータテーブル60の一例を示す図である。TRIM FLEXBITSの設定値(削除ビット数)と、各設定値に対応する削減符号量とが、削除ビット数の値別に記述されている。
削減符号量は、図4に示した処理部51によって求めることが可能である。図8は、複数の周波数データS1HP(データD0〜D5)の一例を示す図である。図8の(A)には、FLEXBITSのビット長が3ビットに設定されている場合の周波数データS1HPの例を示している。図中の「FG」は、各データD0〜D5のNORMAL DATAの値がゼロであるか否かを表すフラグの値を示している。NORMAL DATAの値がゼロでない場合にはフラグ「FG」の値は「1」となり、NORMAL DATAの値がゼロである場合にはフラグ「FG」の値は「0」となる。図中の「FB」は、各データD0〜D5の下位データS1HPLを示している。図中の「SB」は、各データD0〜D5の下位データS1HPLに付加されているSIGN BITを示している。
データD0,D1に関しては、NORMAL DATAの値がゼロでないため、下位データS1HPLの値に拘わらず、下位データS1HPLにSIGN BITは付加されない。データD2に関しては、NORMAL DATAの値がゼロであり、かつ下位データS1HPLの値もゼロであるため、下位データS1HPLにSIGN BITは付加されない。データD3〜D5に関しては、NORMAL DATAの値がゼロであり、かつ下位データS1HPLの値がゼロでないため、下位データS1HPLに「0」(正)又は「1」(負)のSIGN BITが付加される。
図8の(B)には、図8の(A)に示した周波数データS1HPに対して、TRIM FLEXBITSを「1」に設定した場合の例を示している。データD0に関しては、「000」なる下位データS1HPLの最下位ビット「0」が削除されることにより、符号量は1ビット削減される。データD1,D2についても同様に、符号量はそれぞれ1ビット削減される。データD3に関しては、「001」なる下位データS1HPLの最下位ビット「1」が削除されるとともに、最下位ビットの削除によって下位データS1HPLの値がゼロとなってSIGN BITが不要となったため、SIGN BITも削除される。その結果、符号量は2ビット削減される。データD4に関しては、「010」なる下位データS1HPLの最下位ビット「0」が削除される。最下位ビットを削除しても下位データS1HPLの値はゼロにならないため、SIGN BITは削除されない。その結果、符号量は1ビット削減される。データD5についても同様に、符号量は1ビット削減される。処理部51は、各周波数データS1HPに関する削減符号量をカウンタを用いてカウントすることにより、TRIM FLEXBITSを「1」に設定した場合の一画像分の合計の削減符号量を求める。また、TRIM FLEXBITSを「2」〜「15」の各値に設定した場合の削減符号量についても、上記と同様の手法により処理部51によって求めることができる。図3,4を参照して、TRIM FLEXBITSを「1」〜「15」の各値に設定した場合の削減符号量に関する情報は、データS4として処理部51から保持部35に入力され、保持部35は、データS4に基づいて、図7に示したデータテーブル60を作成する。
図9は、復号部21の具体的な構成を示すブロック図である。復号部21は、設定部70、選択部71、入力部72、DC処理部73、LP処理部74、及びHP処理部75を備えている。入力部72は、DMA方式によって記憶部4にアクセス可能な複数の入力ポート81〜84を有している。
設定部70は、デコード画像の縮小率を設定することが可能である。記憶部4に格納されている画像のサイズに対して、デコード画像のサイズを、1/1(つまり等倍率)、1/4(面積比で1/16)、又は1/16(面積比で1/256)に設定することができる。設定された縮小率は、データS6として設定部70から選択部71に入力される。
設定部70によって等倍率に設定された場合は、選択部71は、入力ポート81〜84の全てを選択する。この場合、記憶部4から入力ポート81に周波数データS2DCが入力され、記憶部4から入力ポート82に周波数データS2LPが入力され、記憶部4から入力ポート83に上位データS2HPUが入力され、記憶部4から入力ポート84に下位データS2HPLが入力される。周波数モードにおいては、各マクロブロックに関する周波数データS2DC、周波数データS2LP、上位データS2HPU、及び下位データS2HPLは、記憶部4内の離れた領域AR5,AR6,AR7,AR8にそれぞれ格納されている。同一マクロブロックに対応するこれらの周波数データは、復号処理を行うためにデータが必要になる度にそれぞれの格納領域AR5〜AR8から読み出されて、入力ポート81〜84に入力される。
DC処理部73は、入力ポート81から入力された周波数データS2DCに対してエントロピー復号処理を実行することにより、周波数データS5DCを生成して出力する。また、LP処理部74は、入力ポート82から入力された周波数データS2LPに対してエントロピー復号処理を実行することにより、周波数データS5LPを生成して出力する。また、HP処理部75は、入力ポート83から入力された上位データS2HPUに対してエントロピー復号処理を実行した後、入力ポート84から入力された下位データS2HPLを結合することにより、周波数データS5HPを生成して出力する。周波数データS5DC,S5LP,S5HPは、復号部21から出力された後、後段の逆予測部22、逆量子化部23、周波数逆変換部24、及び色逆変換部25によってそれぞれ処理されることにより、等倍率のデコード画像がデコーダ3から出力される。
設定部70によって1/4の縮小率に設定された場合は、選択部71は、入力ポート81,82を選択する。この場合、記憶部4から入力ポート81に周波数データS2DCが入力され、記憶部4から入力ポート82に周波数データS2LPが入力される。一方、上位データS2HPU及び下位データS2HPLは、記憶部4から復号部21に入力されない。
DC処理部73は、入力ポート81から入力された周波数データS2DCに対してエントロピー復号処理を実行することにより、周波数データS5DCを生成して出力する。また、LP処理部74は、入力ポート82から入力された周波数データS2LPに対してエントロピー復号処理を実行することにより、周波数データS5LPを生成して出力する。周波数データS5DC,S5LPは、復号部21から出力された後、後段の逆予測部22、逆量子化部23、周波数逆変換部24、及び色逆変換部25によってそれぞれ処理されることにより、1/4に縮小されたデコード画像がデコーダ3から出力される。
なお、周波数変換部12による周波数変換処理(PCT)においては、縦4画素×横4画素のブロックの画素データの平均値を求める際にアダマール変換が適用される。アダマール変換では、16個の画素データの合計値を「16」ではなく「4」で除算することによって平均値を求めているため、アダマール変換で求めた平均値は実際の値の4倍となっている。周波数変換部12においては、低周波成分の周波数データS1LPは1回の周波数変換処理(PCT)によって求められるため、周波数データS1LPの値は実際の値の4倍となっている。また、直流成分の周波数データS1DCは2回の周波数変換処理(PCT)によって求められるため、周波数データS1DCの値は実際の値の16倍となっている。そこで、デコーダ3内の任意の箇所において、周波数データS5LPの値を「4」で除算し、周波数データS5DCの値を「16」で除算することにより、アダマール変換に起因する実際の値との誤差を補正することができる。
また、周波数逆変換部24においてオーバーラップフィルタを使用する場合には、1個の周波数データS5DC及び15個の周波数データS5LPを各ブロック内でコピーすることによって、一つのマクロブロックに関する256個のデータに拡張する。これにより、オーバーラップフィルタ処理を直ちに開始することが可能となる。
設定部70によって1/16の縮小率に設定された場合は、選択部71は、入力ポート81のみを選択する。この場合、記憶部4から入力ポート81に周波数データS2DCが入力される。一方、周波数データS2LP、上位データS2HPU、及び下位データS2HPLは、記憶部4から復号部21に入力されない。
DC処理部73は、入力ポート81から入力された周波数データS2DCに対してエントロピー復号処理を実行することにより、周波数データS5DCを生成して出力する。周波数データS5DCは、復号部21から出力された後、後段の逆予測部22、逆量子化部23、周波数逆変換部24、及び色逆変換部25によってそれぞれ処理されることにより、1/16に縮小されたデコード画像がデコーダ3から出力される。なお、上記と同様に、デコーダ3内の任意の箇所において、周波数データS5DCの値を「16」で除算することにより、アダマール変換に起因する実際の値との誤差を補正することができる。また、周波数逆変換部24においてオーバーラップフィルタを使用する場合には、1個の周波数データS5DCをマクロブロック内でコピーすることによって、一つのマクロブロックに関する256個のデータに拡張する。これにより、オーバーラップフィルタ処理を直ちに開始することが可能となる。
なお、以上の説明ではデコード画像の縮小率を1/4又は1/16に設定する例について述べたが、画像の画素数を任意に変換することが可能なリサイズ処理部を、例えば周波数逆変換部24と色逆変換部25との間に配置することにより、所望の縮小率のデコード画像をデコーダ3から出力することができる。
さて次に、画像処理装置1を用いた簡易的な符号量制御について説明する。図3を参照して、HP処理部33は、各上位データS2HPUの値がゼロであるか否かを示す情報(図8の(A)に示したフラグ「FG」に相当する)と、各マクロブロックのFLEXBITSのビット長に関する情報とを含む情報データS3を生成して出力する。情報データS3は、HP処理部33から出力ポート45に入力され、出力ポート45から符号量制御部5に向けて出力される。
図10は、符号量制御部5の具体的な構成を示すブロック図である。符号量制御部5は、設定部91と再符号化処理部92とを備えている。設定部91には、画像の目標符号量を示すデータS8が入力される。また、設定部91には、図7に示したデータテーブル60を表すデータS7が入力される。
設定部91は、記憶部4に記憶されている画像の符号量と、データS8で与えられる目標符号量とを比較する。そして、画像の符号量が目標符号量を超えている場合には、データテーブル60を参照することにより、FLEXBITS(下位データS2HPL)の全てを削除することで画像の符号量を目標符号量以下に抑えることが可能であるか否かを判定する。目標符号量以下に抑えることが可能である場合には、設定部91は、データテーブル60を参照することにより、目標符号量以下に抑えることが可能な範囲内での削除ビット数の最小値を求める。そして、その削除ビット数の最小値をTRIM FLEXBITSとして設定する。例えば、目標符号量以下に抑えることが可能な削除ビット数の範囲が「3ビット以上」である場合は、TRIM FLEXBITSの値を「3」に設定する。TRIM FLEXBITSの設定情報は、データS9として設定部91から再符号化処理部92に入力される。
再符号化処理部92は、記憶部4から下位データS2HPLを読み出し、情報データS3に基づいて下位データS2HPL間の境界及びSIGN BITの位置を特定しながら、下位データS2HPLをデコードする。その後、データS9で与えられるTRIM FLEXBITSを適用しつつ下位データS2HPLに対して再符号化処理を実行することにより、符号量が削減された新たな下位データS10HPLを生成して出力する。記憶部4に格納されている下位データS2HPLは、新たな下位データS10HPLによって書き換えられる。
なお、以上の説明において、設定部91が画像の符号量と目標符号量とを比較した結果、画像の符号量が目標符号量以下である場合には、上記の処理を実行する必要はない。また、FLEXBITSの全てを削除しても画像の符号量を目標符号量以下に抑えることができない場合には、量子化係数を現在の設定値より大きな値に変更した後に、全ての周波数データに対して再エンコードを行う必要がある。後述する図11に示す変形例についても同様である。
図11は、符号量制御部5の他の構成を示すブロック図である。符号量制御部5は、設定部91と入力制御部93とを備えている。設定部91には、図10と同様のデータS7,S8が入力される。
上記と同様に、設定部91は、記憶部4に記憶されている画像の符号量と、データS8で与えられる目標符号量とを比較する。そして、画像の符号量が目標符号量を超えている場合には、データテーブル60を参照することにより、FLEXBITSの全てを削除することで画像の符号量を目標符号量以下に抑えることが可能であるか否かを判定する。目標符号量以下に抑えることが可能である場合には、設定部91は、データテーブル60を参照することにより、目標符号量以下に抑えることが可能な範囲内での削除ビット数の最小値を求める。そして、その削除ビット数の最小値をTRIM FLEXBITSとして設定する。TRIM FLEXBITSの設定情報は、データS9として設定部91から入力制御部93に入力される。
入力制御部93は、情報データS3と、データS9で与えられるTRIM FLEXBITSとに基づいて、記憶部4から復号部21への下位データS2HPLの入力を制御するための制御データS11を生成して出力する。例えば、図8の(A)に示したデータD0〜D5が下位データD2HPLとして記憶部4に記憶されており、TRIM FLEXBITSの値が「1」に設定された場合において、データD0〜D5を復号部21へ入力する際には、各データD0〜D5の最下位ビットと、データD3に付加されているSIGN BITとに関しては、復号部21への入力を省略する。これにより、符号量が削減された下位高周波ストリームが、記憶部4から復号部21に入力される。
このように本実施の形態に係る画像処理装置1によれば、出力部34は、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを記憶部4に向けて出力する複数の出力ポート41〜44を含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうちの複数のストリームを、複数の出力ポート41〜44から記憶部4に向けて並列に出力することができる。その結果、JPEGXRにおける周波数モードのストリームをハードウェアを用いて生成するにあたり、同一画像に対して四回の処理を繰り返す必要がないため、処理の所要時間を短縮することが可能となる。
また、出力部34は、直流ストリームを出力する第1の出力ポート41と、低周波ストリームを出力する第2の出力ポート42と、上位高周波ストリームを出力する第3の出力ポート43と、下位高周波ストリームを出力する第4の出力ポート44と、を含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを、それぞれ第1の出力ポート41、第2の出力ポート42、第3の出力ポート43、及び第4の出力ポート44から記憶部4に向けて並列に出力することができる。その結果、JPEGXRにおける周波数モードのストリームをハードウェアを用いて生成するにあたり、同一画像に対して一回の処理を行えばよいため、処理の所要時間をさらに短縮することが可能となる。
また、入力部72は、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを記憶部4から入力する複数の入力ポート81〜84を含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうちの複数のストリームを、記憶部4から複数の入力ポート81〜84に並列に入力することができる。その結果、JPEGXRにおける周波数モードのストリームを記憶部から読み出して復号部21に入力するにあたり、同一マクロブロックに対して四回の読み出し処理を繰り返す必要がないため、処理の所要時間を短縮することが可能となる。また、周波数モードにおいては、各マクロブロックに関して、周波数データS2DC、周波数データS2LP、上位データS2HPU、及び下位データS2HPLが、記憶部4内において離れた領域AR5,AR6,AR7,AR8にそれぞれ格納されている。しかしながら、本実施の形態に係る画像処理装置1によれば、同一マクロブロックに対応するこれら複数の周波数データを、データが必要になる度にそれぞれの格納領域から読み出して復号部21に入力することができる。そのため、復号部21は、各マクロブロックに関する復号処理を支障なく実行することが可能となる。
また、入力部72は、直流ストリームを入力する第1の入力ポート81と、低周波ストリームを入力する第2の入力ポート82と、上位高周波ストリームを入力する第3の入力ポート83と、下位高周波ストリームを入力する第4の入力ポート84と、を含む。従って、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームを、記憶部4からそれぞれ第1の入力ポート81、第2の入力ポート82、第3の入力ポート83、及び第4の入力ポート84に並列に入力することができる。その結果、JPEGXRにおける周波数モードのストリームを記憶部4から読み出して復号部21に入力するにあたり、同一マクロブロックに対して一回の読み出し処理を行えばよいため、処理の所要時間をさらに短縮することが可能となる。
また、選択部71は、設定部70によって設定された縮小率に基づいて、直流ストリーム、低周波ストリーム、上位高周波ストリーム、及び下位高周波ストリームのうち、記憶部4から復号部21に入力する少なくとも一つのストリームを選択する。例えば、縮小率が1/16に設定された場合には直流ストリームのみを選択し、縮小率が1/4に設定された場合には直流ストリーム及び低周波ストリームを選択する。これにより、縮小画像を簡易に作成することが可能となる。また、縮小画像の作成に用いない不要なストリームを記憶部4から復号部21に入力しないことにより、不要なストリームに対して無駄な復号処理が実行されることを予め回避することが可能となる。
また、保持部35は、各下位データS2HPLをその最下位ビットから順に削除することによって削減される画像の符号量を、削除されるビット数別に記述したデータテーブル60を保持する。従って、保持部35が保持しているデータテーブル60を用いることにより、画像の符号量を目標符号量以下に抑えるための簡易な符号量制御を行うことが可能となる。
また、図10に示したように、符号量制御部5には、各上位データS2HPUの値がゼロであるか否かを示す情報と、各下位データS2HPLのビット長に関する情報とを含む情報データS3が、符号化部15から入力される。また、設定部91は、保持部35が保持しているデータテーブル60を参照することによって、画像の符号量を目標符号量以下に抑えるために各下位データS2HPLから削除すべきビット数(TRIM FLEXBITS)を設定する。そして、再符号化処理部92は、情報データS3と、設定部91によって設定されたTRIM FLEXBITSとに基づいて、記憶部4に記憶されている下位高周波ストリームに対して再符号化処理を行う。このように、各下位データS2HPLの一部(又は全部)が削除されるように下位高周波ストリームの再符号化処理を行い、再符号化処理後の下位高周波ストリームに対して復号処理を行うことにより、デコーダ3から出力されるデコード画像の符号量を目標符号量以下に抑えることが可能となる。
また、図11に示したように、符号量制御部5には、各上位データS2HPUの値がゼロであるか否かを示す情報と、各下位データS2HPLのビット長に関する情報とを含む情報データS3が、符号化部15から入力される。また、設定部91は、保持部35が保持しているデータテーブル60を参照することによって、画像の符号量を目標符号量以下に抑えるために各下位データS2HPLから削除すべきビット数(TRIM FLEXBITS)を設定する。そして、入力制御部93は、情報データS3と、設定部によって設定されたTRIM FLEXBITSとに基づいて、記憶部か4ら復号部21への下位高周波ストリームの入力を制御する。各下位データS2HPLの一部(又は全部)が記憶部4から復号部21に入力されないよう入力制御部93によって制御することにより、実質的に各下位データS2HPLの一部(又は全部)が削除された下位高周波ストリームを、復号部21に入力することができる。そして、当該下位高周波ストリームに対して復号処理を行うことにより、デコーダ3から出力されるデコード画像の符号量を目標符号量以下に抑えることが可能となる。