(57)【要約】【課題】処理の効率化を図ることができる画像処理装置、画像処理方法、及び画像処理プログラムを提供する。【解決手段】画像処理装置は、多値の画像データをバンドライン単位で読み込む画像読み込み部と、前記画像データの１ライン分の各プレーンの画素値を記憶するラインメモリへの前記画素値の書き込みと前記ラインメモリからの符号化対象画素の前記画素値の読み込みを制御する第１ラインメモリ制御部と、前記第１ラインメモリ制御部による前記画素値の読み込み順に従って、各プレーンに対応する前記符号化対象画素の前記画素値をライン単位で符号化する符号化処理部と、前記符号化処理部により符号化された符号データを書き込む符号書き込み部と、を備える。【選択図】図７
2014150381.tif 000002
【特許請求の範囲】
【請求項１】
多値の画像データをバンド単位で読み込む画像読み込み部と、
前記画像データの１ライン分の各プレーンの画素値を記憶するラインメモリへの前記画素値の書き込みと前記ラインメモリからの符号化対象画素の前記画素値の読み込みを制御する第１ラインメモリ制御部と、
前記第１ラインメモリ制御部による前記画素値の読み込み順に従って、各プレーンに対応する前記符号化対象画素の前記画素値をライン単位で符号化する符号化処理部と、
前記符号化処理部により符号化された符号データを書き込む符号書き込み部と、を備えることを特徴とする画像処理装置。
【請求項２】
前記符号化処理部は、
所定の符号化フォーマットに従って、符号のランレングス値を符号化した符号化ランレングス値と前記符号化対象画素の予測誤差値を符号化した符号化予測誤差値とを連結し、前記符号化ランレングス値と前記符号化予測誤差値とを１組の単位として符号列を生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１ラインメモリ制御部により読み込まれた複数の前記画素値に基づき、前記符号化対象画素の予測値を算出する予測処理部と、
前記予測処理部により算出された前記予測値と前記符号化対象画素の前記画素値とに基づき、前記予測誤差値を算出する予測誤差処理部と、をさらに備えることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記ラインメモリは、
前記符号化対象画素の前記画素値を記憶する第１ラインメモリと、
前記第１ラインメモリに記憶する前記画素値に対して、前記バンド単位の読み込み順で１ライン前に相当する符号化済み画素の前記画素値を記憶する第２ラインメモリと、を備え、
前記予測処理部は、
前記第１ラインメモリから読み込まれた前記符号化対象画素に相当する注目画素の前記画素値と、前記第１ラインメモリ及び前記第２ラインメモリそれぞれから読み込まれた前記注目画素に隣接する複数の周辺画素の前記画素値と、に基づき、前記予測値を算出することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記予測誤差処理部は、
前記予測値と前記注目画素の前記画素値との差分から、前記予測誤差値を算出することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記予測誤差処理部により算出された前記予測誤差値に基づき、前記ランレングス値を生成するランレングス生成処理部を、さらに備えることを特徴とする請求項３に記載の画像処理装置。
【請求項７】
前記ランレングス生成処理部は、
前記予測誤差値が０の場合、前記ランレングス値を生成することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
多値の前記符号データをメモリに読み込む符号読み込み部と、
前記符号データの各プレーンの符号を記憶するラインメモリへの前記符号の書き込みと前記ラインメモリからの復号対象画素の前記符号の読み込みを制御する第２ラインメモリ制御部と、
前記第２ラインメモリ制御部による前記符号の読み込み順に従って、前記符号データを解析し、前記符号のランレングス値と前記復号対象画素の予測誤差値を算出する符号フォーマット解析部と、
前記符号フォーマット解析部で算出された前記予測誤差値と前記復号対象画素の予測値とに基づき、前記復号対象画素の前記画素値を生成することで、前記符号を復号する第２予測誤差処理部と、
前記符号フォーマット解析部で算出された前記ランレングス値に示される数の前記復号対象画素の前記画素値を予測し、予測値を前記復号対象画素の前記画素値とすることで、前記符号を復号するランレングス処理部と、
前記第２予測誤差処理部又は前記ランレングス処理部により復号され得た画像データを前記メモリに書き込む画像書き込み部と、をさらに備えることを特徴とする請求項１に記載の画像処理装置。
【請求項９】
多値の画像データをバンド単位で読み込む画像読み込み工程と、
前記画像データの１ライン分の各プレーンの画素値を記憶するラインメモリへの前記画素値の書き込みと前記ラインメモリからの符号化対象画素の前記画素値の読み込みを制御する第１ラインメモリ制御工程と、
前記第１ラインメモリ制御工程による前記画素値の読み込み順に従って、各プレーンに対応する前記符号化対象画素の前記画素値をライン単位で符号化する符号化処理工程と、
前記符号化処理部により符号化された符号データを書き込む符号書き込み部工程と、を含むことを特徴とする画像処理方法。
【請求項１０】
コンピュータを、
多値の画像データをバンド単位で読み込む画像読み込み部と、
前記画像データの１ライン分の各プレーンの画素値を記憶するラインメモリへの前記画素値の書き込みと前記ラインメモリからの符号化対象画素の前記画素値の読み込みを制御する第１ラインメモリ制御部と、
前記第１ラインメモリ制御部による前記画素値の読み込み順に従って、各プレーンに対応する前記符号化対象画素の前記画素値をライン単位で符号化する符号化処理部と、
前記符号化処理部により符号化された符号データを書き込む符号書き込み部と、して機能させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
従来から、プリンタなどでは、入力された画像データを一時的にメモリに記憶し、記憶した画像データを所定のタイミングで読み込んで、印刷を行う技術が知られている。この場合、画像データをそのままメモリに記憶しようとすると、大容量のメモリが必要となり、製品コストが嵩む。そのため、入力された画像データを圧縮符号化し、メモリに記憶する方式が採用されている。例えば特許文献１には、ＡＲＧＢ／ＡＫのカラー画像とモノクロ画像を同じ圧縮方式により圧縮し、その中で、ＡＲＧＢのカラー画像の圧縮を並列処理する方式が開示されている。
【０００３】
圧縮符号化には、予測符号化が用いられている。予測符号化は、画像において、隣接する画素同士の相関が高いという性質を利用し、符号化済みの画素の画素値から符号化対象画素の画素値を予測し、予測値と注目画素の実際の画素値との差分を符号化する。
【０００４】
予測符号化には、平面予測と呼ばれる予測方式が用いられている。平面予測は、符号化対象画素の３つの周辺画素の画素値に基づき、注目画素の画素値を予測する。平面予測は、例えば多値画像を圧縮する方式の１つであるＪＰＥＧ（Joint  Photographic  Experts  Group）の可逆符号化モードにおいて用いられている。ＪＰＥＧの可逆符号化モードでは、平面予測により注目画素に対する予測値と実際の画素値との差分を求め、求めた差分をハフマン符号化や算術符号化などのエントロピー符号化を用いて符号化している。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の方式では、画像圧縮を実現するハードウェアやソフトウェアの実装ロジックが複雑となり、処理効率の低下につながる。
【０００６】
例えばＪＰＥＧの可逆符号化モードでは、７つの予測式を用いて予測誤差の統計を作成し、最もよい予測式を１つ選択し、予測符号化方式で圧縮する。このとき、従来の方式では、７つの予測式を用いて予測誤差の統計を作成するため、２パス方式となり、多値画像を２回処理する。そのため、ハードウェアにより実現する場合には、ゲート規模の増加や処理速度の低下などを招くおそれがある。また、ソフトウェアにより実現する場合には、処理の煩雑化や処理速度の低下を招くおそれがある。
【０００７】
本発明は、上記問題点に鑑みてなされたものであって、処理の効率化を図ることができる画像処理装置、画像処理方法、及び画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明に係る画像処理装置は、多値の画像データをバンド単位で読み込む画像読み込み部と、前記画像データの１ライン分の各プレーンの画素値を記憶するラインメモリへの前記画素値の書き込みと前記ラインメモリからの符号化対象画素の前記画素値の読み込みを制御する第１ラインメモリ制御部と、前記第１ラインメモリ制御部による前記画素値の読み込み順に従って、各プレーンに対応する前記符号化対象画素の前記画素値をライン単位で符号化する符号化処理部と、前記符号化処理部により符号化された符号データを書き込む符号書き込み部と、を備える。
【発明の効果】
【０００９】
本発明では、処理の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態に係る画像処理システムの構成例を示す図である。
【図２】図２は、第１の実施形態に係る画像処理装置の構成例を示す図である。
【図３】図３は、第１の実施形態に係るメモリの構成例を示す図である。
【図４】図４は、第１の実施形態に係るバンドデータ記憶領域の構成例を示す図である。
【図５】図５は、第１の実施形態に係る印刷時の処理手順例を示すフローチャートである。
【図６】図６は、第１の実施形態に係る画像処理機能の構成例を示す図である。
【図７】図７は、第１の実施形態に係る符号化部の機能構成例を示す図である。
【図８】図８は、第１の実施形態に係るバンドデータの読み込み順を説明する図である。
【図９】図９は、第１の実施形態に係る平面予測で用いる画素を説明する図である。
【図１０】図１０は、第１の実施形態に係る予測誤差値の符号のフォーマット例を示す図である。
【図１１】図１１は、第１の実施形態に係るランレングス値の符号のフォーマット例を示す図である。
【図１２】図１２は、第１の実施形態に係る符号データの構成例を示す図である。
【図１３】図１３は、第１の実施形態に係る符号化の基本処理手順例を示すフローチャートである。
【図１４】図１４は、第１の実施形態に係る符号化の処理手順例を示すフローチャートである。
【図１５】図１５は、第１の実施形態に係る符号化処理の具体例を示す図である。
【図１６】図１６は、第１の実施形態に係る復号部の機能構成例を示す図である。
【図１７−１】図１７−１は、第１の実施形態に係る復号の処理手順例（その１）を示すフローチャートである。
【図１７−２】図１７−２は、第１の実施形態に係る復号の処理手順例（その２）を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、添付図面を参照して、画像処理装置、画像処理方法、及び画像処理プログラムの実施形態を詳細に説明する。
【００１２】
［第１の実施形態］
＜システム構成＞
図１は、本実施形態に係る画像処理システム１０００の構成例を示す図である。図１には、プリンタなどの一般的な印刷システムの構成例が示されている。
【００１３】
図１に示すように、本実施形態に係る画像処理システム１０００は、コントローラ１１０、操作パネル１２０、及びプリンタエンジン１３０などを備え、それぞれが相互にバスＢで接続されている。
【００１４】
プリンタエンジン１３０は、画像形成を行う各駆動部を備え、所定の画像形成方式に従って、入力画像を印刷する印刷装置である。操作パネル１２０は、表示装置と入力装置などを備え、機器情報などを利用者に提供したり、動作設定や動作指示などの利用者操作を受け付けたりする入出力装置である。コントローラ１１０は、ＣＰＵ（Central  Processing  Unit）９０、メモリ８０、画像処理装置１００、及び外部記憶装置７０などを備え、画像処理システム１０００を制御する制御装置である。コントローラ１１０では、各搭載部品が相互にバスＢで接続されている。
【００１５】
ＣＰＵ９０は、装置全体の制御や搭載機能を実現する演算装置である。メモリ８０は、プログラムやデータを所定の記憶領域に記憶する装置である。メモリ８０には、揮発性の半導体メモリであるＲＡＭ（Random  Access  Memory）や不揮発性の半導体メモリであるＲＯＭ（Read  Only  Memory）などがある。ＣＰＵ９０は、例えばＲＯＭに記憶されたプログラムやデータをＲＡＭ上に読み込み、処理を実行することで、装置全体の制御や搭載機能を実現する。
【００１６】
外部記憶装置７０は、ＨＤＤ（Hard  Disk  Drive）やメモリカード（Memory  Card）などの不揮発性の記憶装置である。なお、外部記憶装置７０には、例えばフレキシブルディスク（ＦＤ）、ＣＤ（Compact  Disk）、及びＤＶＤ（Digital  Versatile  Disk）などの記録媒体も含まれる。
【００１７】
画像処理装置１００は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）などの画像処理回路を備え、入力画像に所定の画像処理を行い、処理後の画像を出力する。画像処理には、本実施形態に係る画像圧縮処理も含まれる。
【００１８】
以上のように、本実施形態に係る画像処理システム１０００は、上記構成により、入力画像の圧縮保存、復号、印刷などの各種処理を実行することができる。
【００１９】
《装置構成》
図２は、本実施形態に係る画像処理装置１００の構成例を示す図である。図２に示すように、本実施形態に係る画像処理装置１００は、ＣＰＵ  ＩＦ（Interface）１１、通信制御装置１２、符号化装置１３、メモリＡＲＢ（Arbiter）１４、及びメモリ制御装置１５などを備える。また、画像処理装置１００は、復号装置１６、色変換処理装置１７、階調処理装置１８、及びエンジン制御装置１９などを備える。
【００２０】
ＣＰＵ  ＩＦ１１は、ＣＰＵ９０と画像処理装置１００との間でデータ送受信を行うためのインタフェースである。ＣＰＵ９０は、ＣＰＵ  ＩＦ１１を介して、メモリＡＲＢ１４と接続されている。
【００２１】
通信制御装置１２は、例えばＰＣ（Personal  Computer）などの外部機器と画像処理装置１００との間で行うデータ通信を制御する。外部機器は、通信制御装置１２を介して、メモリＡＲＢ１４と接続されている。画像処理装置１００は、通信制御装置１２を介して、ＰＣから、ＰＤＬ（Page  Description  Language）データなどの送信データを受信することで、画像処理の対象データの入力を受け付ける。なお、通信制御装置１２で制御するデータ通信は、有線又は無線を問わない。また、データ通信は、ＬＡＮ（Local  Area  Network）やインターネットなどのネットワーク通信であってもよい。また、データ通信は、ＵＳＢ（Universal  Serial  Bus）やＩＥＥＥ（Institute  of  Electrical  and  Electronics  Engineers）１３９４などのシリアル通信であってもよい。
【００２２】
メモリＡＲＢ１４は、ＣＰＵ９０、通信制御装置１２、符号化装置１３、メモリ制御装置１５、及び復号装置１６などの各装置からメモリ８０に対するアクセスを調停する。
【００２３】
メモリ制御装置１５は、メモリ８０に対するアクセスを制御する。メモリ８０は、メモリ制御装置１５を介して、メモリＡＲＢ１４に接続されている。メモリ８０には、プログラムやデータが記憶される。本実施形態では、例えば外部機器から受信したＰＤＬデータ、ＣＰＵ９０がＰＤＬデータを解析し生成した描画コマンド、バンドデータ、符号化装置１３がバンドデータを符号化したページの圧縮データ（符号化したバンドデータ）などが記憶される。
【００２４】
符号化装置１３は、メモリ８０に記憶されるバンドデータを符号化する。符号化装置１３は、メモリＡＲＢ１４とメモリ制御装置１５を介して、メモリ８０に対し、符号化するバンドデータの読み込みや、符号化したバンドデータ（以下「符号データ」という）の書き込みなどを行う。
【００２５】
復号装置１６は、メモリ８０に記憶される符号データを復号する。復号装置１６は、プリンタエンジン１３０の動作と同期し、メモリＡＲＢ１４とメモリ制御装置１５を介して、メモリ８０から、符号データを読み込み、復号する。
【００２６】
色変換処理装置１７は、復号されたバンドデータ（以下「復号データ」という）に対して、色変換処理を行う。階調処理装置１８は、色変換処理後のデータに対して、階調処理を行う。
【００２７】
エンジン制御装置１９は、プリンタエンジン１３０の動作を制御する。エンジン制御装置１９は、階調処理後のデータを所定の画像形成方式に従って印刷するプリンタエンジン１３０の動作を制御する。このとき階調処理後のデータは、エンジン制御装置１９を介して、プリンタエンジン１３０に転送される。
【００２８】
（メモリ構成）
図３は、本実施形態に係るメモリ８０の構成例を示す図である。図３に示すように、本実施形態に係るメモリ８０は、プログラム記憶領域Ｒ１、ＰＤＬデータ記憶領域Ｒ２、バンドデータ記憶領域Ｒ３、及びページ符号記憶領域Ｒ４などの各記憶領域で構成される。
【００２９】
プログラム記憶領域Ｒ１は、ＣＰＵ９０で実行されるプログラムが記憶される。ＰＤＬデータ記憶領域Ｒ２は、外部機器から受信したＰＤＬデータが記憶される。バンドデータ記憶領域Ｒ３は、バンドデータが記憶される。ページ符号記憶領域Ｒ４は、バンドデータが符号化された符号データが記憶される。ページ符号記憶領域Ｒ４は、複数ページ分の符号データが記憶される。その他Ｒ５は、上記以外のデータが記憶される。
【００３０】
図４は、本実施形態に係るバンドデータ記憶領域Ｒ３の構成例を示す図である。本実施形態に係るバンドデータ記憶領域Ｒ３は、Ａ（属性），Ｒ，Ｇ，Ｂの各プレーンで構成され、各プレーンの画素に対して、それぞれ８ビットが割り当てられる。すなわち、バンドデータは、各プレーンの画素がそれぞれ８ビットのビット深度を有する３２ビットの多値プレーン画像データ（多値画像）である。なお、Ａプレーンは、画素の属性として描画オブジェクトを関連付けるために作られる画素属性プレーンに相当する。その作成理由は、文字、グラフィック、イメージなどの描画オブジェクトを表す描画データが画素データを描画するときに消失してしまうと、出力用の画像データに各描画オブジェクトの特性を反映できなくなるためである。
【００３１】
《処理》
図５は、本実施形態に係る印刷時の処理手順例を示すフローチャートである。図５に示すように、本実施形態に係る画像処理システム１０００は、印刷時に次のような処理を行う。
【００３２】
画像処理装置１００は、通信制御装置１２により、外部機器からＰＤＬデータを受信し、メモリＡＲＢ１４を介して、メモリ８０のＰＤＬデータ記憶領域Ｒ２に記憶する（ステップＳ１）。
【００３３】
ＣＰＵ９０は、ＣＰＵ  ＩＦ１１とメモリＡＲＢ１４を介して、メモリ８０のＰＤＬデータ記憶領域Ｒ２からＰＤＬデータを読み込み、ＰＤＬを解析し（ステップＳ２）、解析結果に基づきバンド画像を描画する（ステップＳ３）。ＣＰＵ９０は、描画したバンド画像のバンドデータを、ＣＰＵ  ＩＦ１１とメモリＡＲＢ１４を介して、メモリ８０のバンドデータ記憶領域Ｒ３に書き込み、記憶する（ステップＳ４）。このときのバンドデータは、上述したように、各画素が８ビットのビット深度を有する３２ビットの多値プレーン画像データである。
【００３４】
画像処理装置１００は、符号化装置１３により、メモリＡＲＢ１４を介して、メモリ８０のバンドデータ記憶領域Ｒ３からバンドデータを読み込み、符号化する（ステップＳ５）。符号化装置１３は、符号データを、メモリＡＲＢ１４を介して、メモリ８０のページ符号記憶領域Ｒ４に書き込み、記憶する（ステップＳ６）。
【００３５】
画像処理装置１００は、復号装置１６により、メモリＡＲＢ１４を介して、メモリ８０のページ符号記憶領域Ｒ４から符号データを読み込み、復号する（ステップＳ７）。復号装置１６は、復号データを色変換処理装置１７に転送する。色変換処理装置１７は、復号装置１６から転送された復号データに対して、色変換処理を行う（ステップＳ８）。色変換処理装置１７は、色変換処理後のデータを階調処理装置１８に転送する。階調処理装置１８は、色変換処理装置１７から転送された色変換処理後のデータに対して、階調処理を行う（ステップＳ９）。階調処理装置１８は、階調処理後のデータをエンジン制御装置１９に転送する。エンジン制御装置１９は、階調処理装置１８から転送された階調処理後のデータをプリンタエンジン１３０に転送し、プリンタエンジン１３０の各駆動部を制御することで、データを印刷する（ステップＳ１０）。
【００３６】
以上のように、本実施形態に係る画像処理システム１０００では、上記構成と上記処理により、画像圧縮を行う画像処理機能を用いた印刷サービスを提供することができる。
【００３７】
＜画像処理機能＞
本実施形態に係る画像処理機能について説明する。本実施形態に係る画像処理装置１００は、多値の画像データをバンド単位で読み込み、読み込んだ各プレーンの画素値をラインメモリ（記憶領域）に書き込む。このとき画像処理装置１００は、符号化対象として読み込んだ１ライン分の各プレーンの画素値を、ラインメモリの符号化ラインに相当する第１ラインメモリに書き込む。また画像処理装置１００は、バンド単位の読み込み順で１つ前の１ライン分の各プレーンの画素値を、ラインメモリの参照ラインに相当する第２ラインメモリに書き込む。次に画像処理装置１００は、平面予測処理に用いる符号化対象画素の画素値を第１ラインメモリから読み込む。また画像処理装置１００は、平面予測処理に用いる符号化対象画素の周辺に隣接する周辺画素（符号化済みの画素）の画素値を第２ラインメモリから読み込む。画像処理装置１００は、読み込んだ符号化対象画素と周辺画素の各画素値に基づき、各プレーンの平面予測値を算出する。次に画像処理装置１００は、算出した平面予測値と符号化対象画素の画素値とに基づき、予測誤差値を算出する。次に画像処理装置１００は、算出した予測誤差値に基づき、符号のランレングス値を生成する。次に画像処理装置１００は、算出した予測誤差値とランレングス値とに基づき、ハフマン符号化により符号データを生成し、ＦＩＦＯ（First  In  First  Out）のデータ構造に従って、各プレーンの符号データを記憶する。画像処理装置１００は、各プレーンの符号化が１ライン分終了すると、第１ラインメモリの画素値を第２ラインメモリに書き込み、バンド単位の読み込み順に従って、各プレーンの符号化処理を実行する。本実施形態に係る画像処理装置１００は、このような画像処理機能を有している。
【００３８】
従来の方式では、画像圧縮をハードウェアにより実現する場合、ゲート規模の増加や処理速度の低下などを招くおそれがあった。また、ソフトウェアにより実現する場合には、処理の煩雑化や処理速度の低下を招くおそれがあった。
【００３９】
そこで、本実施形態に係る画像処理機能では、バンドラインの読み込み順に従って、全プレーンの符号化をライン単位で処理し、ＦＩＦＯのデータ構造に従って、各プレーンの符号データを、符号化対象画素の読み込み順（符号化順）に記憶する仕組みとした。
【００４０】
これにより、本実施形態に係る画像処理機能では、符号化処理や符号管理の単純化を実現し、ゲート規模の増加、処理の煩雑化、処理速度の低下などを防ぐことができ、処理の効率化が図れる。また、製品コストを抑制できる。
【００４１】
以下に、本実施形態に係る画像処理機能の構成とその動作について説明する。
【００４２】
図６は、本実施形態に係る画像処理機能の構成例を示す図である。図６に示すように、本実施形態に係る画像処理機能は、符号化部３０、復号部６０などを有している。符号化部３０は、画像処理装置１００が備える符号化装置１３により実現される機能（以下「符号化機能」という）である。また、復号部６０は、画像処理装置１００が備える復号装置１６により実現される機能（以下「復号機能」という）である。
【００４３】
符号化部３０は、図５の処理手順で説明したように、ＣＰＵ９０がメモリ８０のバンドデータ記憶領域Ｒ３に書き込んだバンドデータを読み込み、符号化する。復号部６０は、符号化部３０がメモリ８０のページ符号記憶領域Ｒ４に書き込んだ符号データを読み込んで復号し、復号データを色変換処理装置１７に転送する。
【００４４】
《符号化機能》
図７は、本実施形態に係る符号化部３０の機能構成例を示す図である。図７に示すように、本実施形態に係る符号化部３０は、画像読み込み部３１、ラインメモリ制御部（第１ラインメモリ制御部）３２、及び予測処理部３３などを有している。また、符号化部３０は、予測誤差処理部（第１予測誤差処理部）３４、ランレングス生成処理部３５、符号化処理部３６、及び符号書き込み部３７などを有している。
【００４５】
画像読み込み部３１は、メモリ８０のバンドデータ記憶領域Ｒ３から、各プレーンのバンドデータを読み込む。
【００４６】
図８は、本実施形態に係るバンドデータの読み込み順を説明する図である。図８に示すように、画像読み込み部３１は、各プレーンのバンドデータを、読み込んだライン（スキャンライン）ごとに順次、画素単位でバンドデータ記憶領域Ｒ３から読み込む。
【００４７】
図７の説明に戻る。ラインメモリ制御部３２は、画像読み込み部３１により画素単位で読み込まれた各プレーンのバンドデータを、ラインメモリＬに書き込む。ラインメモリＬは、少なくとも２ライン分の各プレーンのバンドデータを記憶できる。ラインメモリ制御部３２は、符号化対象として読み込んだ１ライン分の各プレーンの画素値を、ラインメモリの第１ラインメモリ（以下「符号化ライン」という）Ｌ１に書き込む。ラインメモリ制御部３２は、バンドラインの読み込み順で１つ前（１ライン前）の１ライン分の各プレーンの画素値を、ラインメモリの第２ラインメモリ（以下「参照ライン」という）Ｌ２に書き込む。また、ラインメモリ制御部３２は、１ライン分の全プレーンの画素データが符号化されると、符号化ラインＬ１の画素データを、参照ラインＬ２に書き込む。
【００４８】
予測処理部３３は、ラインメモリ制御部３２から受け取った画素（ａ）、画素（ｂ）、及び画素（ｃ）の各画素値を用いて、（式１）に示される平面予測演算により平面予測値を求め、符号化対象画素の画素値を予測する。
平面予測値＝画素（ａ）の画素値＋画素（ｂ）の画素値−画素（ｃ）の画素値  ・・・  （式１）
【００４９】
ラインメモリ制御部３２は、ラインメモリＬから、符号化対象画素に相当する注目画素の画素値と、注目画素に対する３つの周辺画素の各画素値とを読み込み、予測処理部３３に渡す。ここでラインメモリＬから読み込まれる周辺画素は、注目画素に近接する符号化済みの画素である。
【００５０】
図９は、本実施形態に係る平面予測で用いる画素を説明する図である。ラインメモリ制御部３２は、図９に示すような注目画素と注目画素に隣接する３つの周辺画素とを読み込む。注目画素は、符号化ラインＬ１に属する符号化前の画素である。一方、周辺画素は、符号化対象画素の読み込み順（符号化順）で注目画素の１つ前に位置する符号化済みの画素（ａ）と、バンドラインの読み込み順で符号化ラインＬ１の１つ前に相当する参照ラインＬ２に属する符号化済みの画素（ｂ）、画素（ｃ）である。画素（ｂ）は、参照ラインＬ２において注目画素の直上に位置する符号化済みの画素である。また、画素（ｃ）は、画素の読み込み順で画素（ｂ）の１つ前に位置する符号化済みの画素である。
【００５１】
図７の説明に戻る。予測処理部３３は、注目画素が画素の読み込み順で先頭画素である場合、又は、符号化ラインＬ１がバンドラインの読み込み順で先頭のラインである場合、平面予測値を‘０’とする。予測処理部３３は、求めた平面予測値と注目画素の画素値とを、予測誤差処理部３４に渡す。
【００５２】
予測誤差処理部３４は、予測処理部３３から受け取った平面予測値と注目画素の画素値との差分から、予測誤差値を求める。予測誤差処理部３４は、求めた予測誤差値と注目画素の画素値とを、ランレングス生成処理部３５に渡す。
【００５３】
ランレングス生成処理部３５は、予測誤差処理部３４から受け取った予測誤差値に基づき、符号のランレングス値を生成する。ランレングス生成処理部３５は、予測誤差値が‘０’である場合、ランレングス値を１加算する。一方、ランレングス生成処理部３５は、予測誤差値が‘０’ではない場合、注目画素の画素値と予測誤差値と求めたランレングス値とを符号化処理部３６に渡し、その後、ランレングス値を‘０’に初期化（リセット）する。
【００５４】
符号化処理部３６は、ランレングス生成処理部３５から受け取った予測誤差値とランレングス値とに基づき、所定の符号化方式（例えば「ハフマン符号化方式」）により符号データを生成する符号化処理を行う。符号化処理部３６は、予測誤差値とランレングス値とで構成される符号データを、所定の符号フォーマットに従って生成する。本実施形態に係る符号化処理部３６は、予測誤差値とランレングス値とをそれぞれ符号化する。符号化処理部３６は、符号化したランレングス値（以下「符号化ランレングス値」という）の後ろに、符号化した予測誤差値（以下「符号化予測誤差値」という）を連結し、符号化ランレングス値と符号化予測誤差値とを１組の単位として、符号列を生成する。符号化処理部３６は、次のような符号化フォーマットに従って、予測誤差値とランレングス値とをそれぞれ符号化する。
【００５５】
（符号フォーマット）
図１０は、本実施形態に係る予測誤差値の符号のフォーマット例を示す図である。本実施形態では、予測誤差値は、値が大きいほど頻度が低くなるものとしてハフマン符号化される。符号化処理部３６は、予測誤差値を、段階的に設定された予測誤差範囲に対してグループ分けし、グループごとに異なる符号長が割り当てられるように符号化を行う。グループの識別は、生成されたハフマン符号の先頭から、グループ数に応じたビット数分の符号を用いて行う。本実施形態では、予測誤差値を８つのグループに分類し、３ビットをグループの識別に用いている。また、本実施形態では、グループの識別に用いるビットに相当するグループ識別ビットと、グループ識別ビットに付加するビットに相当する付加ビットとにより、予測誤差値ごとにユニークなハフマン符号を構成する。
【００５６】
本実施形態では、予測誤差値に対して、例えば次のように予測誤差範囲を設定し、予測誤差値をグループ＃０〜グループ＃７の８グループに分類する。
グループ＃０：予測誤差値＝−１，予測誤差値＝１
グループ＃１：予測誤差値＝−３，予測誤差値＝−２，予測誤差値＝２，予測誤差値＝３
グループ＃２：−７≦予測誤差値≦−４，４≦予測誤差値≦７
グループ＃３：−１５≦予測誤差値≦−８，８≦予測誤差値≦１５
グループ＃４：−３１≦予測誤差値≦−１６，１６≦予測誤差値≦３１
グループ＃５：−６３≦予測誤差値≦−３２，３２≦予測誤差値≦６３
グループ＃６：−１２７≦予測誤差値≦−６４，６４≦予測誤差値≦１２７
グループ＃７：予測誤差値≦−１２８，１２８≦予測誤差値
【００５７】
また、本実施形態では、各グループのグループ識別ビットと付加ビットのビット長とを、例えば次のように設定する。
グループ＃０：グループ識別ビット＝「０００」，付加ビット長＝１ビット
グループ＃１：グループ識別ビット＝「００１」，付加ビット長＝２ビット
グループ＃２：グループ識別ビット＝「０１０」，付加ビット長＝３ビット
グループ＃３：グループ識別ビット＝「０１１」，付加ビット長＝４ビット
グループ＃４：グループ識別ビット＝「１００」，付加ビット長＝５ビット
グループ＃５：グループ識別ビット＝「１０１」，付加ビット長＝６ビット
グループ＃６：グループ識別ビット＝「１１０」，付加ビット長＝７ビット
グループ＃７：グループ識別ビット＝「１１１」，付加ビット長＝８ビット
【００５８】
なお、グループ＃７の予測誤差値が−１２７より小さい、又は、１２７より大きい場合には、ハフマン符号を用いず、注目画素の画素値をそのまま付加ビットとして用いる。つまり、符号化処理部３６は、予測誤差値が符号で表現可能な範囲外の値である場合、注目画素の画素値そのものを符号として用いる。これは、予測誤差値が−２５５より小さい、又は、２５５よりも大きくなった場合に、符号長が８ビットよりも大きくなり圧縮率が低下してしまうことを防ぐ（圧縮率の低下を抑制する）ためである。
【００５９】
図１１は、本実施形態に係るランレングス値の符号のフォーマット例を示す図である。本実施形態では、ランレングス値は、値が小さいほど短い符号長が割り当てられる。符号化処理部３６は、値が小さいほど短い符号長を割り当てるように、ランレングス値をハフマン符号化する。ランレングス値が１の場合には、１ビットの符号長を割り当て、符号「０」に符号化する。ランレングス値が２の場合には、２ビットの符号長を割り当て、符号「１０」に符号化する。ランレングス値が３、４の場合には、４ビットの符号長を割り当て、符号「１１００」、「１１０１」に符号化する。
【００６０】
また、図中の下段に示すように、ランレングス値が５以上の場合には、４ビットの符号長を有する符号「１１１１」の後ろに所定符号長の数値部を連結した形式に符号化する。数値部は、例えば先頭に１ビットのヘッダを含む４ビットの符号長を有する３つのフレームで構成される。数値部は、ランレングス値を示す符号が３ビットごとのＦ０、Ｆ１、Ｆ２の領域に区切られ、Ｆ２の領域が上位ビット、Ｆ０の領域が下位ビットに対応する。より具体的には、ヘッダを除く３ビットの各フレーム内を、ＭＳＢ（Most  Significant  Bit）側が上位ビット、ＬＳＢ（Least  Significant  Bit）側が下位ビットとなるようにする。図中の例では、フレームが最大３個に制限され、ランレングス値が５１７まで表現できる。ランレングス値が５の場合は、フレームを省略することができる。なお、ヘッダは、あるフレームに次のフレームが続くか否かを示すビットである。例えば、ヘッダの値が「０」の場合には、次のフレームがあることを示し、ヘッダの値が「１」の場合には、そのフレームで終了することを示す。
【００６１】
図７の説明に戻る。符号化処理部３６は、上記符号化を、符号化ラインＬ１に属する各プレーンの画素に対して行う。なお、本実施形態では、本実施形態では、１２８画素の画素データを記憶できる（所定の画素列を記憶できる）符号化ラインＬ１を用いて、ライン単位（所定の画素領域単位）で符号化を行う。つまり、本実施形態では、１ライン分のバンドデータを１２８画素ごとに分割し、分割した所定の画素領域に対して、各プレーンの符号化処理を行う。また、符号化処理部３６は、全プレーンの符号化をバンドライン数の数だけ行う。つまり、符号化処理部３６は、バンドラインの読み込み順に従って、全プレーンの符号化をライン単位で処理する。
【００６２】
（符号生成）
図１２は、本実施形態に係る符号データの構成例を示す図である。図１２に示すように、符号化処理部３６は、生成した各プレーンに対応する可変長の符号の先頭に、例えば８ビットのラインヘッダを付加した符号データを生成する。ラインヘッダは、符号化したバンドラインを示す値である。符号化処理部３６は、符号化ラインＬ１の所定の画素列に対して、各プレーンＡ，Ｒ，Ｇ，Ｂの符号データ（Ａライン符号、Ｒライン符号、Ｇライン符号、及びＢライン符号）を、符号化対象画素の読み込み順（符号化順）に生成する。なお、符号化処理部３６は、各プレーンＡ，Ｒ，Ｇ，Ｂの符号データを、プレーンごとに逐次処理し生成してもよいし、並列処理し生成してもよい。また、符号化処理部３６は、各プレーンＡ，Ｒ，Ｇ，Ｂの各符号データを１組の単位とする符号データ群（符号化データ群０，・・・，符号化データ群Ｎ）を、バンドラインの読み込み順に、バンドライン数（Ｎ＋１）に対応する数だけ生成する。符号化処理部３６は、生成した各プレーンの符号データを符号書き込み部３７に渡す。
【００６３】
図７の説明に戻る。符号書き込み部３７は、符号データをメモリ８０のページ符号記憶領域Ｒ４に書き込み、記憶する。符号書き込み部３７は、ＦＩＦＯのデータ構造に従って、各プレーンの符号データを記憶する。各プレーンの符号データをＦＩＦＯのデータ構造に従って記憶するのは、プレーンごとの符号データを記憶順に連結することで、符号化ラインＬ１に書き込まれたバンドラインの１ライン分に対応する各プレーンの符号データを生成可能とするためである。よって、符号化を行う所定の画素領域の大きさ（画素列の長さ）は、各プレーンの符号データを記憶するＦＩＦＯのデータ構造のサイズに応じて適切に決定する。
【００６４】
このような本実施形態に係る符号化機能は、画像処理装置１００において、上記各機能部を連携動作させて符号化処理を実行することで実現する。
【００６５】
以下に、本実施形態に係る符号化時の処理（各機能部の連携動作）について、フローチャートを用いて説明する。
【００６６】
（基本処理）
図１３は、本実施形態に係る符号化の基本処理手順例を示すフローチャートである。図１３に示すように、本実施形態に係る画像処理装置１００は、画像読み込み部３１により、メモリ８０のバンドデータ記憶領域Ｒ３から、各プレーンのバンドデータを読み込む（ステップＳ１０１）。次に画像処理装置１００は、ラインメモリ制御部３２により、画像読み込み部３１により画素単位で読み込まれた各プレーンのバンドデータを、ラインメモリＬに書き込む（ステップＳ１０２）。次に画像処理装置１００は、１ライン分の書き込みが終了したか否かを判定する（ステップＳ１０３）。
【００６７】
その結果、画像処理装置１００は、書き込みが終了していないと判定した場合（ステップＳ１０３：ＮＯ）、１ライン分の書き込みが終了するまで、ステップＳ１０１、Ｓ１０２の処理を繰り替えし実行する。
【００６８】
一方、画像処理装置１００は、書き込みが終了したと判定した場合（ステップＳ１０３：ＹＥＳ）、符号化処理部３６により、各プレーンの符号化をライン単位で行うライン符号生成処理を実行する（ステップＳ１０４）。これにより、画像処理装置１００は、各プレーンの符号データをライン単位で生成する。次に画像処理装置１００は、生成された各プレーンの符号データを、符号書き込み部３７により、メモリ８０のページ符号記憶領域Ｒ４に書き込み、符号化対象画素の読み込み順（符号化順）に記憶する。次に画像処理装置１００は、全ライン（読み込んだ全てのバンドデータ）に対して処理が終了（符号化が完了）したか否かを判定する（ステップＳ１０５）。
【００６９】
その結果、画像処理装置１００は、全ラインに対して処理が終了していないと判定した場合（ステップＳ１０５：ＮＯ）、全ラインの処理が終了するまで、ステップＳ１０１〜Ｓ１０４の処理を繰り替えし実行する。
【００７０】
一方、画像処理装置１００は、全ラインに対して処理が終了したと判定した場合（ステップＳ１０５：ＹＥＳ）、処理を終了する。
【００７１】
（ライン単位の符号化処理）
図１４は、本実施形態に係る符号化の処理手順例を示すフローチャートである。図１４には、ＡＲＧＢ画像に対する上記ライン符号生成処理の詳細な処理手順例が示されている。図１４に示すように、本実施形態に係る画像処理装置１００は、プレーン数をカウントするプレーンカウンタ（ｉ）を‘０’に初期化する（ステップＳ２０１）。次に画像処理装置１００は、符号化するバンドラインを示すラインヘッダを、メモリ８０のページ符号記憶領域Ｒ４に書き込む（ステップＳ２０２）。次に画像処理装置１００は、ラインメモリＬ上の画素をカウントする画素カウンタ（ｊ）を‘０’に初期化する（ステップＳ２０３）。
【００７２】
画像処理装置１００は、ラインメモリ制御部３２が、符号化ラインＬ１から、画素カウンタ（ｊ）で特定される画素データを読み込み、プレーンカウンタ（ｉ）バイト目の画素を、符号化対象画素に相当する注目画素とする（ステップＳ２０４）。これにより、画像処理装置１００は、注目画素の画素値を読み込む。次に画像処理装置１００は、ラインメモリ制御部３２が、符号化ラインＬ１と参照ラインＬ２から、画素カウンタ（ｊ）で特定される注目画素に対する周辺画素（隣接する３つの符号化済みの画素）の各画素値を読み込む。具体的には、符号化ラインＬ１から周辺画素（ａ）、参照ラインＬ２から周辺画素（ｂ）、周辺画素（ｃ）の各画素値を読み込む（ステップＳ２０５）。
【００７３】
画像処理装置１００は、予測処理部３３が、ラインメモリ制御部３２により読み込まれた周辺画素（ａ）、周辺画素（ｂ）、及び周辺画素（ｃ）を用いて、所定の平面予測演算により平面予測値を求め（ステップＳ２０６）、符号化対象画素の画素値を予測する。次に画像処理装置１００は、予測誤差処理部３４が、予測処理部３３により算出された平面予測値と注目画素の画素値との差分から、予測誤差値を求める（ステップＳ２０７）。
【００７４】
画像処理装置１００は、予測誤差処理部３４により算出された予測誤差値が‘０’でないか（符号化対象画素の予測が不一致か）否か、又は、予測誤差値を求めた注目画素がラインの終端に位置する画素か否かを判定する（ステップＳ２０８）。
【００７５】
その結果、画像処理装置１００は、予測誤差値が‘０’である（符号化対象画素の予測が一致した）、又は、注目画素がラインの終端に位置する画素でないと判定した場合（ステップＳ２０８：ＮＯ）、次の処理を実行する。画像処理装置１００は、ランレングス生成処理部３５が、ランレングス値を１加算する（ステップＳ２０９）。次に画像処理装置１００は、画素カウンタ（ｊ）を１加算し（ステップＳ２１０）、ステップＳ２０４の処理へ移行する。
【００７６】
一方、画像処理装置１００は、予測誤差値が‘０’でない、又は、注目画素がラインの途中に位置する画素であると判定した場合（ステップＳ２０８：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、符号化処理部３６が、予測誤差値とランレングス値とに基づき符号データを生成する（ステップＳ２１１）。具体的には、予測誤差値とランレングス生成処理部３５により生成されたランレングス値それぞれを、ハフマン符号化方式により符号化する。このとき符号化処理部３６は、符号化ランレングス値の後ろに、符号化予測誤差値を連結し、符号化ランレングス値と符号化予測誤差値とを１組の単位として、符号列を生成する。
【００７７】
画像処理装置１００は、符号書き込み部３７が、符号化処理部３６により生成された符号データを、メモリ８０のページ符号記憶領域Ｒ４に書き込む（ステップＳ２１２）。次に画像処理装置１００は、ランレングス生成処理部３５が、ランレングス値を‘０’に初期化する（ステップＳ２１３）。
【００７８】
画像処理装置１００は、符号化ラインの１ライン分の画素データに対して処理が終了（符号化が完了）したか否かを判定する（ステップＳ２１４）。
【００７９】
その結果、画像処理装置１００は、１ライン分の画素データに対して処理が終了していないと判定した場合（ステップＳ２１４：ＮＯ）、次の処理を実行する。画像処理装置１００は、画素カウンタ（ｊ）を１加算し（ステップＳ２１５）、ステップＳ２０４の処理へ移行する。
【００８０】
一方、画像処理装置１００は、１ライン分の画素データに対して処理が終了したと判定した場合（ステップＳ２１４：ＹＥＳ）、プレーンカウンタ（ｉ）が‘３’か否か（ＡＲＧＢ画像の全プレーン数と一致するか否か）を判定する（ステップＳ２１６）。これにより、画像処理装置１００は、符号化ラインＬ１の画素データにおいて、ＡＲＧＢ画像の全プレーンの符号化処理が完了したか否かを判定する。
【００８１】
その結果、画像処理装置１００は、プレーンカウンタ（ｉ）が‘３’でないと判定（全プレーンの符号化処理未完了と判定）した場合（ステップＳ２１６：ＮＯ）、次の処理を実行する。画像処理装置１００は、プレーンカウンタ（ｉ）を１加算し（ステップＳ２１７）、ステップＳ２０２の処理へ移行する。
【００８２】
一方、画像処理装置１００は、プレーンカウンタ（ｉ）が‘３’であると判定（全プレーンの符号化処理完了と判定）した場合（ステップＳ２１６：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、ラインメモリ制御部３２が、符号化ラインＬ１の画素データを、参照ラインＬ２にコピーし（ステップＳ２１８）、リターン値を返す。
【００８３】
（具体的な処理例）
図１５は、本実施形態に係る符号化処理の具体例を示す図である。図１５には、ＡＲＧＢ画像の１６画素に対して、図１４に示した符号化処理が実行された場合の具体例が示されている。なお、図１５に示す具体例では、符号化ラインＬ１と参照ラインＬ２の右から左に符号化処理が実行されるものとする。
【００８４】
例えばＡプレーンの場合、まず、符号化ラインＬ１における０番目の画素が、符号化対象画素に相当する注目画素となる。このときの注目画素の画素値は‘０’である。これに対して、符号化処理を実行すると、平面予測値（＝０＋０−０）が‘０’となり、予測誤差値（＝０−０）も‘０’となる。よって、上記ステップＳ２０８の判定結果に基づき、符号化されず、ランレングス値と画素カウンタ（ｊ）が１加算される。この結果は、０〜５番目の画素まで続く。
【００８５】
次に、画素値が‘６４’の６番目の画素に対して、符号化処理を実行すると、平面予測値（＝０＋０−０）が‘０’となり、予測誤差値（＝０−６４）が‘−６４’となる。よって、上記ステップＳ２０８の判定結果に基づき、０〜５番目までの間に加算されたランレングス値‘６’と予測誤差値‘−６４’とが符号化される。このときランレングス値‘６’からは、図１１に示した符号フォーマットに従って、先頭「１１１１」に数値部「１１１０」が連結された８ビットの符号「１１１１１１１０」が生成される。また、予測誤差値‘−６４’からは、グループ＃６のグループ識別ビット「１１０」に７ビットの付加ビットが連結された１０ビットの符号「１１０＊＊＊＊＊＊＊」が生成され、ランレングス値と画素カウンタ（ｊ）が１加算される。
【００８６】
次に、画素値が‘６４’の７番目の画素に対して、符号化処理を実行すると、平面予測値（＝６４＋６４−０）が‘１２８’となり、予測誤差値（＝１２８−６４）が‘６４’となる。よって、上記ステップＳ２０８の判定結果に基づき、６番目で加算されたランレングス値‘１’と予測誤差値‘６４’とが符号化される。このときランレングス値‘１’からは、図１１に示した符号フォーマットに従って、１ビットの符号「０」が生成される。また、予測誤差値‘６４’からは、グループ＃６のグループ識別ビット「１１０」に７ビットの付加ビットが連結された１０ビットの符号「１１０＊＊＊＊＊＊＊」が生成され、ランレングス値と画素カウンタ（ｊ）が１加算される。
【００８７】
次に、画素値が‘６４’の８番目の画素に対して、符号化処理を実行すると、平面予測値（＝６４＋６４−６４）が‘６４’となり、予測誤差値（＝６４−６４）が‘０’となる。よって、上記ステップＳ２０８の判定結果に基づき、符号化されず、ランレングス値と画素カウンタ（ｊ）が１加算される。この結果は、９番目の画素まで続く。
【００８８】
次に、画素値が‘０’の１０番目の画素に対して、符号化処理を実行すると、平面予測値（＝６４＋６４−６４）が‘６４’となり、予測誤差値（＝６４−０）が‘６４’となる。よって、上記ステップＳ２０８の判定結果に基づき、７〜９番目までの間に加算されたランレングス値‘３’と予測誤差値‘６４’とが符号化される。このときランレングス値‘３’からは、図１１に示した符号フォーマットに従って、４ビットの符号「１１００」が生成される。また、予測誤差値‘６４’からは、グループ＃６のグループ識別ビット「１１０」に７ビットの付加ビットが連結された１０ビットの符号「１１０＊＊＊＊＊＊＊」が生成され、ランレングス値と画素カウンタ（ｊ）が１加算される。
【００８９】
次に、画素値が‘０’の１１番目の画素に対して、符号化処理を実行すると、平面予測値（＝０＋０−６４）が‘−６４’となり、予測誤差値（＝−６４−０）が‘−６４’となる。よって、上記ステップＳ２０８の判定結果に基づき、１０番目で加算されたランレングス値‘１’と予測誤差値‘−６４’とが符号化される。このときランレングス値‘１’からは、図１１に示した符号フォーマットに従って、１ビットの符号「０」が生成される。また、予測誤差値‘−６４’からは、グループ＃６のグループ識別ビット「１１０」に７ビットの付加ビットが連結された１０ビットの符号「１１０＊＊＊＊＊＊＊」が生成され、ランレングス値と画素カウンタ（ｊ）が１加算される。
【００９０】
次に、画素値が‘０’の１２番目の画素に対して、符号化処理を実行すると、平面予測値（＝０＋０−０）が‘０’となり、予測誤差値（＝０−０）が‘０’となる。よって、上記ステップＳ２０８の判定結果に基づき、符号化されず、ランレングス値と画素カウンタ（ｊ）が１加算される。この結果は、１２〜１５番目の画素まで続く。
【００９１】
このように、符号化ラインＬ１の１６画素に対して、順次、符号化処理を実行すると、次の５つの符号が生成される。具体的には、０〜５番目までの画素群に対する符号、６番目の画素に対する符号、７〜９番目の画素に対する符号、１０番目の画素に対する符号、１１〜１５番目の画素群に対する符号である。
【００９２】
以上のようにして生成された符号は、符号化対象画素の読み込み順（符号化順）に、プレーンごとのＦＩＦＯのデータ構造に従って記憶される。よって、本実施形態では、各プレーンの符号を記憶順に連結することで、符号化ラインＬ１に書き込まれたバンドラインの１ライン分に対応する各プレーンの符号データを生成できる。
【００９３】
このように、本実施形態に係る符号化機能は、各プレーンの符号化を、画像の読み込み順にライン単位で処理し、ＦＩＦＯのデータ構造に従って、各プレーンの生成符号を記憶することで、符号化処理の単純化や符号管理の簡略化を実現することができる。本実施形態に係る符号化機能は、プレーンごとに符号を分割して管理するのではなく、各プレーンの符号を、ライン単位で統合して１つの符号にする。これにより、符号管理が簡単になり、符合を転送するＤＭＡ（Direct  Memory  Access）装置が１つで済み、ゲート規模も小さくできる。
【００９４】
また、本実施形態では、各プレーンの符号データにプレーンを識別する情報が入っていない。なぜなら、各プレーンの符号データは、ＦＩＦＯのデータ構造に従って、プレーンごとに記憶することから、プレーンを識別する情報を含む必要がない。これにより、本実施形態に係る符号化機能は、符号データのデータ量を軽減することもできる（圧縮データをより小さくすることができる）。
【００９５】
《復号機能》
図１６は、本実施形態に係る復号部６０の機能構成例を示す図である。図１６に示すように、本実施形態に係る復号部６０は、符号読み込み部６１、符号フォーマット解析部６２、及び予測誤差処理部（第２予測誤差処理部）６３などを有している。また、復号部６０は、ランレングス処理部６４、ラインメモリ制御部（第２ラインメモリ制御部）６５、及び画像書き込み部６６などを有している。
【００９６】
符号読み込み部６１は、メモリ８０のページ符号記憶領域Ｒ４から、各プレーンの符号データを読み込む。
【００９７】
符号フォーマット解析部６２は、符号読み込み部６１に対して、符号データの読み込みを要求し、読み込んだ符号データを、符号化時に用いた所定の符号化方式に従って解析し、符号化ランレングス値と符号化予測誤差値とを取り出す。符号フォーマット解析部６２は、符号化ランレングス値と符号化予測誤差値とに基づき、ランレングス値（注目画素と平面予測値との差分が「０」の長さ）と予測誤差値それぞれを求める。
【００９８】
符号フォーマット解析部６２は、読み込んだ符号データの先頭の１ビットが「０」である場合、当該ビットがランレングス値‘１’を示す、符号長が１ビットの符号であると判定する。一方、先頭の１ビットが「１」であって、次の１ビットが「０」である場合には、先頭ビットと２ビット目とがランレングス値‘２’を示す、符号長が２ビットの符号であると判定する。また、先頭の１ビットが「１」であって、次の１ビットが「１」である場合には、さらに次の２ビットを用いてランレングス値を求める。先頭から４ビット目までが全て「１」である場合には、さらに数値部が続くため、ヘッダの１ビットが「１」であるフレームを最終フレームとして、ランレングス値を求める。
【００９９】
読み込んだ符号データは、符号化ランレングス値に符号化予測誤差値が連結されるデータ構造となっている。そのため、符号フォーマット解析部６２は、符号化予測誤差値の先頭の３ビットでグループを判定し、グループに対応する付加ビットの符号長に基づき、付加ビットを解析し、予測誤差値を求める。なお、符号フォーマット解析部６２は、判定したグループがグループ＃７の場合、付加ビットを解析し、復号対象画素の画素値を求める。
【０１００】
また、符号フォーマット解析部６２は、符号化予測誤差値に続けて、次の符号化ランレングス値と符号化予測誤差値との組が連結されていることから、同様にランレングス値と予測誤差値とを順次求める。符号フォーマット解析部６２は、求めたランレングス値をランレングス処理部６４に渡す。また、符号フォーマット解析部６２は、求めた予測誤差値又は復号対象画素の画素値を予測誤差処理部６３に渡す。
【０１０１】
予測誤差処理部６３は、画素値生成処理部６３１と予測処理部６３２などを有している。画素値生成処理部６３１は、符号フォーマット解析部６２で求められた予測誤差値と、予測処理部６３２で予測された平面予測値とを加算し、復号対象画素の画素値を生成することで復号する。なお、画素値生成処理部６３１は、符号フォーマット解析部６２から画素値を受け取った場合、画素値の生成を行わない（復号しない）。予測処理部６３２は、ラインメモリ制御部６５から受け取った画素（ａ）、画素（ｂ）、及び画素（ｃ）の各画素値を用いて、所定の平面予測演算（上記（式１））を参照）により平面予測値を求め、復号対象画素の画素値を予測することで復号する。予測処理部６３２は、ラインメモリ制御部６５から、復号対象画素に相当する注目画素の３つの復号済みの周辺画素（図９を参照）の各画素値を用いて、復号対象画素の画素値を予測する。予測誤差処理部６３は、生成した復号対象画素の画素値をラインメモリ制御部６５に渡す。
【０１０２】
ランレングス処理部６４は、ランレングス処理制御部６４１と予測処理部６４２などを有している。ランレングス処理制御部６４１は、予測処理部６４２が、符号フォーマット解析部６２で求められたランレングス値に示される数だけ、復号対象画素の画素値を予測するように制御する。なお、ランレングス処理制御部６４１は、ランレングス値が１より大きい値の場合、予測処理部６４２による復号対象画素の画素値の予測を制御する。予測処理部６４２は、ラインメモリ制御部６５から受け取った画素（ａ）、画素（ｂ）、及び画素（ｃ）の各画素値を用いて、予測処理部６３２と同様に、復号対象画素の画素値を予測し、予測値を復号対象画素の画素値とすることで復号する。ランレングス処理部６４は、予測した復号対象画素の画素値をラインメモリ制御部６５に渡す。
【０１０３】
ラインメモリ制御部６５は、ラインメモリＬに対するデータの読み書きを制御する。ラインメモリＬは、復号を行っている第３ラインメモリ（以下「復号ライン」という）Ｌ３と、復号が終了している第４ラインメモリ（以下「参照ライン」という）Ｌ４との、少なくとも２ライン分の画素データを記憶できる。ラインメモリ制御部６５は、ラインメモリＬから、復号対象画素に相当する注目画素の３つの周辺画素の各画素値を読み込み、予測誤差処理部６３とランレングス処理部６４それぞれに渡す。また、ラインメモリ制御部６５は、予測誤差処理部６３とランレングス処理部６４で復号された画素データを、画像書き込み部６６に渡す。
【０１０４】
画像書き込み部６６は、復号された画素データをメモリ８０に書き込み、復号装置１６から出力する。復号装置１６から出力された画素データは、色変換処理装置１７へと転送される。
【０１０５】
このような本実施形態に係る復号機能は、画像処理装置１００において、上記各機能部を連携動作させて復号処理を実行することで実現する。
【０１０６】
以下に、本実施形態に係る復号時の処理（各機能部の連携動作）について、フローチャートを用いて説明する。
【０１０７】
（ライン単位の符号処理）
図１７−１、図１７−２は、本実施形態に係る復号の処理手順例（その１、２）を示すフローチャートである。図１７には、ＡＲＧＢ画像の符号データ（圧縮データ）に対するライン復号処理の詳細な処理手順例が示されている。図１７−１に示すように、本実施形態に係る画像処理装置１００は、プレーン数をカウントするプレーンカウンタ（ｉ）を‘０’に初期化する（ステップＳ３０１）。次に画像処理装置１００は、ラインメモリＬ上の画素をカウントする画素カウンタ（ｊ）を‘０’に初期化する（ステップＳ３０２）。次に画像処理装置１００は、符号フォーマット解析部６２が、符号読み込み部６１に対して、符号の読み出しを要求する（ステップＳ３０３）。
【０１０８】
画像処理装置１００は、符号フォーマット解析部６２が、読み込んだ符号データを、符号化時に用いた所定の符号化方式に従って解析し、解析結果に基づき、符号がヘッダか否かを判定する（ステップＳ３０４）。
【０１０９】
その結果、画像処理装置１００は、符号がヘッダでないと判定した場合（ステップＳ３０４：ＮＯ）、次の処理を実行する。画像処理装置１００は、ステップＳ３０５〜Ｓ３１２までの処理をスキップし、ステップＳ３１３の処理に移行する。
【０１１０】
一方、画像処理装置１００は、符号がヘッダと判定した場合（ステップＳ３０４：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、プレーンカウンタ（ｉ）が‘３’か否か（ＡＲＧＢ画像の全プレーン数と一致するか否か）を判定する（ステップＳ３０５）。これにより、画像処理装置１００は、復号ラインＬ３の符号データにおいて、ＡＲＧＢ画像の全プレーンの復号処理が完了したか否かを判定する。
【０１１１】
その結果、画像処理装置１００は、プレーンカウンタ（ｉ）が‘３’でないと判定（全プレーンの復号処理未完了と判定）した場合（ステップＳ３０５：ＮＯ）、次の処理を実行する。画像処理装置１００は、プレーンカウンタ（ｉ）を１加算し（ステップＳ３０６）、ステップＳ３０７〜Ｓ３１０までの処理をスキップし、ステップＳ３１１の処理に移行する。
【０１１２】
一方、画像処理装置１００は、プレーンカウンタ（ｉ）が‘３’であると判定（全プレーンの復号処理完了と判定）した場合（ステップＳ３０５：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、画像書き込み部６６が、予測誤差処理部６３とランレングス処理部６４により生成された後にラインメモリ制御部６５により復号ラインＬ３に書き込まれた全画素データ（復号データ）を色変換処理装置１７に出力する（ステップＳ３０７）。次に画像処理装置１００は、ラインメモリ制御部６５が、復号ラインＬ３の画素データを、参照ラインＬ４にコピーし（ステップＳ３０８）、プレーンカウンタ（ｉ）を‘０’に初期化する（ステップＳ３０９）。
【０１１３】
画像処理装置１００は、全ライン（符号化された全てのバンドデータ）に対して処理が終了（復号が完了）したか否かを判定する（ステップＳ３１０）。
【０１１４】
その結果、画像処理装置１００は、全ラインに対して処理が終了したと判定した場合（ステップＳ３１０：ＹＥＳ）、処理を終了する。
【０１１５】
一方、画像処理装置１００は、全ラインに対して処理が終了していないと判定した場合（ステップＳ３１０：ＮＯ）、次の処理を実行する。画像処理装置１００は、全ラインの処理が終了するまで、ステップＳ３１１の処理に移行し、ステップＳ３０３〜Ｓ３２６の処理を繰り替えし実行する。
【０１１６】
画像処理装置１００は、画素カウンタ（ｊ）を‘０’に初期化し（ステップＳ３１１）、符号フォーマット解析部６２が、符号読み込み部６１に対して、符号の読み出しを要求する（ステップＳ３１２）。次に画像処理装置１００は、符号フォーマット解析部６２が、読み込んだ符号データを、符号化時に用いた所定の符号化方式に従って解析し、取り出した符号化ランレングス値に基づき、ランレングス値を求める（ステップＳ３１３）。このとき符号フォーマット解析部６２は、符号化ランレングス値のビット列から、注目画素と平面予測値との差分が「０」の長さのランレングス値を求める。
【０１１７】
画像処理装置１００は、符号フォーマット解析部６２が、符号読み込み部６１に対して、符号の読み出しを要求する（ステップＳ３１４）。
【０１１８】
画像処理装置１００は、符号フォーマット解析部６２が、読み込んだ符号データを、符号化時に用いた所定の符号化方式に従って解析し、解析結果に基づき、符号のグループがグループ＃７か否かを判定する（ステップＳ３１５）。
【０１１９】
その結果、画像処理装置１００は、符号のグループがグループ＃７と判定した場合（ステップＳ３１５：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、符号フォーマット解析部６２が、付加ビットを解析し、復号対象画素の画素値を求め（ステップＳ３１６）、ステップＳ３１７〜Ｓ３２０までの処理をスキップし、ステップＳ３２１の処理に移行する。
【０１２０】
一方、画像処理装置１００は、符号のグループがグループ＃７でないと判定した場合（ステップＳ３１５：ＮＯ）、次の処理を実行する。画像処理装置１００は、符号フォーマット解析部６２が、読み込んだ符号データを、符号化時に用いた所定の符号化方式に従って解析し、取り出した符号化予測誤差値に基づき、予測誤差値を求める（ステップＳ３１７）。このとき符号フォーマット解析部６２は、符号化予測誤差値の先頭の３ビットから判定したグループに対応する付加ビットの符号長に基づき、付加ビットを解析し、予測誤差値を求める。
【０１２１】
画像処理装置１００は、ラインメモリ制御部６５が、復号ラインＬ３と参照ラインＬ４から、画素カウンタ（ｊ）で特定される注目画素に対する周辺画素（隣接する３つの復号済みの画素）の各画素値を読み込む。具体的には、復号ラインＬ３から周辺画素（ａ）、参照ラインＬ４から周辺画素（ｂ）、周辺画素（ｃ）の各画素値を読み込む（ステップＳ３１８）。
【０１２２】
画像処理装置１００は、予測誤差処理部６３の予測処理部６３２が、ラインメモリ制御部６５により読み込まれた周辺画素（ａ）、周辺画素（ｂ）、及び周辺画素（ｃ）を用いて、所定の平面予測演算により平面予測値を求める（ステップＳ３１９）。これにより、画像処理装置１００は、復号対象画素の画素値を予測する。次に画像処理装置１００は、画素値生成処理部６３１が、符号フォーマット解析部６２により算出された予測誤差値と平面予測値との加算から、復号対象画素に相当する注目画素の画素値を求める（ステップＳ３２０）。
【０１２３】
画像処理装置１００は、符号フォーマット解析部６２が、求めたランレングス値が‘１’か否かを判定する（ステップＳ３２１）。
【０１２４】
その結果、画像処理装置１００は、求めたランレングス値が‘１’と判定した場合（ステップＳ３２１：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、ステップＳ３２２，Ｓ３２３の処理をスキップし、ステップＳ３２４の処理に移行する。
【０１２５】
一方、画像処理装置１００は、求めたランレングス値が‘１’でないと判定した場合（ステップＳ３２１：ＮＯ）、次の処理を実行する。画像処理装置１００は、ラインメモリ制御部６５が、復号ラインＬ３と参照ラインＬ４から、画素カウンタ（ｊ）で特定される注目画素に対する周辺画素（隣接する３つの復号済みの画素）の各画素値を読み込む。具体的には、復号ラインＬ３から周辺画素（ａ）、参照ラインＬ４から周辺画素（ｂ）、周辺画素（ｃ）の各画素値を読み込む（ステップＳ３２２）。
【０１２６】
画像処理装置１００は、ランレングス処理部６４の予測処理部６４２が、ラインメモリ制御部６５により読み込まれた周辺画素（ａ）、周辺画素（ｂ）、及び周辺画素（ｃ）を用いて、所定の平面予測演算により平面予測値を求める（ステップＳ３２３）。これにより、画像処理装置１００は、復号対象画素の画素値を予測し、予測値を復号対象画素の画素値とする。
【０１２７】
画像処理装置１００は、ラインメモリ制御部６５が、復号ラインＬ３のプレーンカウンタ（ｉ）バイト目に、復号対象画素の画素値を書き込む（ステップＳ３２４）。次に画像処理装置１００は、画素カウンタ（ｊ）を１加算する（ステップＳ３２５）。
【０１２８】
画像処理装置１００は、ランレングス処理部６４のランレングス処理制御部６４１が、求めたランレングス値に基づき、ランレングス分の（符号化した全ての画素に対して）処理が終了したか否かを判定する（ステップＳ３２６）。
【０１２９】
その結果、画像処理装置１００は、ランレングス分の処理が終了したと判定した場合（ステップＳ３２６：ＹＥＳ）、次の処理を実行する。画像処理装置１００は、ステップＳ３０３の処理に戻り、全ラインに対して、全プレーンの処理が終了するまで、ライン復号処理を継続する。
【０１３０】
一方、画像処理装置１００は、ランレングス分の処理が終了していないと判定した場合（ステップＳ３２６：ＮＯ）、次の処理を実行する。画像処理装置１００は、ステップＳ３２１の処理に戻り、ステップＳ３２２〜Ｓ３２６までの処理を、条件が満たされるまで繰り返し実行する。
【０１３１】
このように、本実施形態に係る復号機能は、各プレーンの識別コードがなくても復号処理が行える。なぜなら、本実施形態では、画像の読み込み順にライン単位で符号化処理され生成された各プレーンの符号が、ＦＩＦＯのデータ構造に従って（符号化の開始画素順かつプレーン順の規則に従って）記憶されているからである。
【０１３２】
＜まとめ＞
以上のように、本実施形態に係る画像処理装置１００によれば、画像読み込み部３１が、多値の画像データをバンド単位で読み込み、ラインメモリ制御部３２が、読み込まれた各プレーンの画素値をラインメモリＬに書き込む。このときラインメモリ制御部３２は、符号化対象として読み込まれた１ライン分の各プレーンの画素値を符号化ラインＬ１に書き込む。またラインメモリ制御部３２は、バンド単位の読み込み順で１つ前の１ライン分の各プレーンの画素値を参照ラインＬ２に書き込む。次にラインメモリ制御部３２は、平面予測処理に用いる符号化対象画素の画素値を符号化ラインＬ１から読み込む。またラインメモリ制御部３２は、平面予測処理に用いる符号化対象画素の周辺に隣接する周辺画素（符号化済みの画素）の画素値を参照ラインＬ２から読み込む。予測処理部３３は、読み込まれた符号化対象画素と周辺画素の各画素値に基づき、各プレーンの平面予測値を算出する。次に予測誤差処理部３４は、算出された平面予測値と符号化対象画素の画素値とに基づき、予測誤差値を算出する。次にランレングス生成処理部３５は、算出された予測誤差値に基づき、符号のランレングス値を生成する。次に符号化処理部３６は、算出された予測誤差値とランレングス値とに基づき、ハフマン符号化により符号データを生成する。次に符号書き込み部３７は、ＦＩＦＯのデータ構造に従って、各プレーンの符号データを記憶する。その後、ラインメモリ制御部３２は、各プレーンの符号化が１ライン分終了すると、符号化ラインＬ１の画素値を参照ラインＬ２に書き込む。これにより、本実施形態に係る画像処理装置１００は、バンド単位の読み込み順に従って、各プレーンの符号化処理が実行される。
【０１３３】
本実施形態に係る画像処理装置１００は、各プレーンの符号化を、画像の読み込み順にライン単位で処理し、ＦＩＦＯのデータ構造に従って、各プレーンの生成符号を、符号化対象画素の読み込み順（符号化順）に記憶する。これによって、本実施形態に係る画像処理装置１００は、符号化処理の単純化や符号管理の簡略化を実現可能な環境を提供する。その結果、本実施形態に係る画像処理装置１００は、ゲート規模の増加、処理の煩雑化、処理速度の低下などを防ぐことができ、処理の効率化を図ることができる。また、製品コストを抑制できる。
【０１３４】
なお、上記実施形態に係る画像処理機能の実現方法は、ソフトウェアによる実現方法又はハードウェアによる実現方法を問わない。本実施形態に係る画像処理機能は、例えばハードウェアにより実現する場合、各機能部を回路などで実装し、各回路を連携駆動させることで実現できる。また、本実施形態に係る画像処理機能は、例えばソフトウェアにより実現する場合、各機能部をプログラム（以下「画像処理プログラム」という）などで実装し、各プログラムを連携動作させることで実現できる。
【０１３５】
上記画像処理プログラムは、実行環境であるコントローラ１１０（コンピュータ）が読み取り可能な外部記憶装置７０に、インストール可能な形式又は実行可能な形式のファイルで記録され提供される。画像処理プログラムは、画像処理機能が有する各機能部を含むモジュール構成となっており、ＣＰＵ９０が外部記憶装置７０からプログラムを読み込み実行することで、メモリ８０上に各機能部が生成される。なお、画像処理プログラムの提供方法は、この限りでない。例えば画像処理プログラムを、インターネットなどに接続された機器に格納し、通信制御装置１２を介して、ネットワーク経由でダウンロードする方法であってもよい。また、画像処理プログラムは、ＲＯＭなどの記憶装置に予め組み込んで提供する方法であってもよい。
【０１３６】
また、上記本実施形態では、符号化機能と復号機能とを含む画像処理機能を有する画像処理装置１００について説明を行ったが、この限りでない。例えば画像処理装置１００は、符号化機能又は復号機能のいずれか一方を含む画像処理機能を有する装置であってもよい。つまり、画像処理装置１００は、符号化装置１３又は復号装置１６であってもよい。この場合、画像処理装置１００は、例えばバスＢを介して、他の装置とデータ送受信を行うことで機能する。
【０１３７】
また、上記実施形態では、予測符号化の方式として、平面予測を用いる例を示したが、この限りでない。例えば垂直予測、水平予測、平均値予測などの符号化済みの画素値を用いた各種方式を用いてもよい。
【０１３８】
最後に、本発明の実施形態を説明したが、上記実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。上記新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３９】
１３    符号化装置
１６    復号装置
３０    符号化部
３１    画像読み込み部
３２    ラインメモリ制御部
３３    予測処理部
３４    予測誤差処理部
３５    ランレングス生成処理部
３６    符号化処理部
３７    符号書き込み部
６０    復号部
６１    符号読み込み部
６２    符号フォーマット解析部
６３    予測誤差処理部
６４    ランレングス処理部
６５    ラインメモリ制御部
６６    画像書き込み部
１００  画像処理装置
１０００  画像処理システム
【先行技術文献】
【特許文献】
【０１４０】
【特許文献１】特開２０１１−４４８６９号公報
【図１】
2014150381.tif 000003
【図２】
2014150381.tif 000004
【図３】
2014150381.tif 000005
【図４】
2014150381.tif 000006
【図５】
2014150381.tif 000007
【図６】
2014150381.tif 000008
【図７】
2014150381.tif 000009
【図８】
2014150381.tif 000010
【図９】
2014150381.tif 000011
【図１０】
2014150381.tif 000012
【図１１】
2014150381.tif 000013
【図１２】
2014150381.tif 000014
【図１３】
2014150381.tif 000015
【図１４】
2014150381.tif 000016
【図１５】
2014150381.tif 000017
【図１６】
2014150381.tif 000018
【図１７−１】
2014150381.tif 000019
【図１７−２】
2014150381.tif 000020