(57)【要約】      （修正有）【課題】回転の対象となっている画像に適用可能な高速デルタ行描画処理を実現する。【解決手段】描画処理装置は、角度データが１８０度回転を示しているときに、所定の中間コードを生成する中間コード生成部と、所定の描画処理を実行する画像描画部とを備える。所定の中間コードは、デルタデータが閾値以上のサイズを有している行ラインと最終の行ラインにおいては、デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが閾値よりも小さいサイズを有しているときには、デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持する。所定の描画処理は、所定の中間コード中のデコードされていない行ラインの画像データを、反転デルタデータを使用してデコードし、所定の中間コード中のデコードされた画像データを反対の方向に描画する。【選択図】図１
2020203431.tif 000002
【特許請求の範囲】
【請求項１】
ページ記述言語で記述されたＰＤＬデータを解析し、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデルタデータを含み、２次元的に配列された複数の画素を示す画像データをデルタ行符号化により符号化した画像データと、前記画像データの回転角度を表す角度データとを取得するＰＤＬ解析部と、
前記角度データが非回転を示しているときには第１の中間コードを生成し、前記角度データが１８０度回転を示しているときには第２の中間コードを生成する中間コード生成部と、
前記角度データが非回転を示しているときには第１の描画処理を実行し、前記角度データが１８０度回転を示しているときには第２の描画処理を実行する画像描画部と、
を備え、
前記第１の中間コードは、デルタデータが第１の閾値以上のサイズを有しているときには、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第１の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用することによってＮ番目の行ラインの画像データを保持し、
前記第２の中間コードは、デルタデータが第２の閾値以上のサイズを有している行ラインと最終の行ラインにおいては、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第２の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持し、
前記第１の描画処理は、前記第１の中間コード中の前記デコードされていない行ラインの画像データを、前記デルタデータを使用してデコードし、前記第１の中間コード中のデコードされた画像データを所定の方向に描画し、
前記第２の描画処理は、前記第２の中間コード中の前記デコードされていない行ラインの画像データを、前記反転デルタデータを使用してデコードし、前記第２の中間コード中のデコードされた画像データを前記所定の方向と反対の方向に描画する描画処理装置。
【請求項２】
請求項１記載の描画処理装置であって、
前記第１の描画処理及び前記第２の描画処理は、色変換処理を含んでいる描画処理装置。
【請求項３】
請求項２記載の描画処理装置であって、
前記第１の描画処理及び前記第２の描画処理は、スケーリング処理を含んでいる描画処理装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の描画処理装置であって、
前記第１の閾値は、前記第２の閾値と同一の値を有している描画処理装置。
【請求項５】
ページ記述言語で記述されたＰＤＬデータを解析し、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデルタデータを含み、２次元的に配列された複数の画素を示す画像データをデルタ行符号化により符号化した画像データと、前記画像データの回転角度を表す角度データとを取得するＰＤＬ解析工程と、
前記角度データが非回転を示しているときには第１の中間コードを生成し、前記角度データが１８０度回転を示しているときには第２の中間コードを生成する中間コード生成工程と、
前記角度データが非回転を示しているときには第１の描画処理を実行し、前記角度データが１８０度回転を示しているときには第２の描画処理を実行する画像描画工程と、
を備え、
前記第１の中間コードは、デルタデータが第１の閾値以上のサイズを有しているときには、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第１の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用することによってＮ番目の行ラインの画像データを保持し、
前記第２の中間コードは、デルタデータが第２の閾値以上のサイズを有している行ラインと最終の行ラインにおいては、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第２の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持し、
前記第１の描画処理は、前記第１の中間コード中の前記デコードされていない行ラインの画像データを、前記デルタデータを使用してデコードし、前記第１の中間コード中のデコードされた画像データを所定の方向に描画し、
前記第２の描画処理は、前記第２の中間コード中の前記デコードされていない行ラインの画像データを、前記反転デルタデータを使用してデコードし、前記第２の中間コード中のデコードされた画像データを前記所定の方向と反対の方向に描画する描画処理方法。
【請求項６】
ページ記述言語で記述されたＰＤＬデータを解析し、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデルタデータを含み、２次元的に配列された複数の画素を示す画像データをデルタ行符号化により符号化した画像データと、前記画像データの回転角度を表す角度データとを取得するＰＤＬ解析部、
前記角度データが非回転を示しているときには第１の中間コードを生成し、前記角度データが１８０度回転を示しているときには第２の中間コードを生成する中間コード生成部、及び
前記角度データが非回転を示しているときには第１の描画処理を実行し、前記角度データが１８０度回転を示しているときには第２の描画処理を実行する画像描画部として描画処理装置を機能させ、
前記第１の中間コードは、デルタデータが第１の閾値以上のサイズを有しているときには、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第１の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用することによってＮ番目の行ラインの画像データを保持し、
前記第２の中間コードは、デルタデータが第２の閾値以上のサイズを有している行ラインと最終の行ラインにおいては、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第２の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持し、
前記第１の描画処理は、前記第１の中間コード中の前記デコードされていない行ラインの画像データを、前記デルタデータを使用してデコードし、前記第１の中間コード中のデコードされた画像データを所定の方向に描画し、
前記第２の描画処理は、前記第２の中間コード中の前記デコードされていない行ラインの画像データを、前記反転デルタデータを使用してデコードし、前記第２の中間コード中のデコードされた画像データを前記所定の方向と反対の方向に描画する描画処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画処理装置、描画処理方法及び描画処理プログラムに関し、特に画像データの差分圧縮技術（デルタ圧縮技術とも呼ばれる。）の高速化技術に関する。
【背景技術】
【０００２】
画像形成装置（たとえばプリンター、多機能プリンター、又は複合機（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ））は、大きなメモリ領域を使用して高解像度で画像を処理する。メモリ領域は、各ページの印刷ジョブを複数のバンドに分割した後に中間コードに変換することによって節約される。中間コードは、メモリ領域に記憶される一方、記憶された中間コードをビットマップ画像にラスタライズすることによってページ毎に印刷を実行する。中間コードの生成方法として、たとえば特許文献１において、本願発明者は、非回転の画像に適用可能な非回転高速デルタ行（Ｆａｓｔ  Ｄｅｌｔａ  Ｒｏｗ）描画処理を提案している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９８００７６０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本願発明者は、さらに研究を進め、ページ記述言語で記述されている印刷ジョブに含まれている画像に適用可能な高速デルタ行（Ｆａｓｔ  Ｄｅｌｔａ  Ｒｏｗ）描画処理を創作した。
【０００５】
本発明は、このような状況に鑑みてなされたものであり、回転の対象となっている画像に適用可能な高速デルタ行描画処理を実現するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の描画処理装置は、ページ記述言語で記述されたＰＤＬデータを解析し、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデルタデータを含み、２次元的に配列された複数の画素を示す画像データをデルタ行符号化により符号化した画像データと、前記画像データの回転角度を表す角度データとを取得するＰＤＬ解析部と、前記角度データが非回転を示しているときには第１の中間コードを生成し、前記角度データが１８０度回転を示しているときには第２の中間コードを生成する中間コード生成部と、前記角度データが非回転を示しているときには第１の描画処理を実行し、前記角度データが１８０度回転を示しているときには第２の描画処理を実行する画像描画部とを備え、前記第１の中間コードは、デルタデータが第１の閾値以上のサイズを有しているときには、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第１の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用することによってＮ番目の行ラインの画像データを保持し、前記第２の中間コードは、デルタデータが第２の閾値以上のサイズを有している行ラインと最終の行ラインにおいては、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第２の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持し、前記第１の描画処理は、前記第１の中間コード中の前記デコードされていない行ラインの画像データを、前記デルタデータを使用してデコードし、前記第１の中間コード中のデコードされた画像データを所定の方向に描画し、前記第２の描画処理は、前記第２の中間コード中の前記デコードされていない行ラインの画像データを、前記反転デルタデータを使用してデコードし、前記第２の中間コード中のデコードされた画像データを前記所定の方向と反対の方向に描画する。
【０００７】
本発明の描画処理方法は、ページ記述言語で記述されたＰＤＬデータを解析し、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデルタデータを含み、２次元的に配列された複数の画素を示す画像データをデルタ行符号化により符号化した画像データと、前記画像データの回転角度を表す角度データとを取得するＰＤＬ解析工程と、前記角度データが非回転を示しているときには第１の中間コードを生成し、前記角度データが１８０度回転を示しているときには第２の中間コードを生成する中間コード生成工程と、前記角度データが非回転を示しているときには第１の描画処理を実行し、前記角度データが１８０度回転を示しているときには第２の描画処理を実行する画像描画工程とを備え、前記第１の中間コードは、デルタデータが第１の閾値以上のサイズを有しているときには、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第１の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用することによってＮ番目の行ラインの画像データを保持し、前記第２の中間コードは、デルタデータが第２の閾値以上のサイズを有している行ラインと最終の行ラインにおいては、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第２の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持し、前記第１の描画処理は、前記第１の中間コード中の前記デコードされていない行ラインの画像データを、前記デルタデータを使用してデコードし、前記第１の中間コード中のデコードされた画像データを所定の方向に描画し、前記第２の描画処理は、前記第２の中間コード中の前記デコードされていない行ラインの画像データを、前記反転デルタデータを使用してデコードし、前記第２の中間コード中のデコードされた画像データを前記所定の方向と反対の方向に描画する。
【０００８】
本発明は、描画処理装置を制御するための描画処理プログラムを提供する。前記描画処理プログラムは、ページ記述言語で記述されたＰＤＬデータを解析し、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデルタデータを含み、２次元的に配列された複数の画素を示す画像データをデルタ行符号化により符号化した画像データと、前記画像データの回転角度を表す角度データとを取得するＰＤＬ解析部、前記角度データが非回転を示しているときには第１の中間コードを生成し、前記角度データが１８０度回転を示しているときには第２の中間コードを生成する中間コード生成部、及び前記角度データが非回転を示しているときには第１の描画処理を実行し、前記角度データが１８０度回転を示しているときには第２の描画処理を実行する画像描画部として描画処理装置を機能させ、前記第１の中間コードは、デルタデータが第１の閾値以上のサイズを有しているときには、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第１の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用することによってＮ番目の行ラインの画像データを保持し、前記第２の中間コードは、デルタデータが第２の閾値以上のサイズを有している行ラインと最終の行ラインにおいては、前記デルタデータを用いてＮ番目の行ラインの画像データをデコードし、デルタデータが前記第２の閾値よりも小さいサイズを有しているときには、前記デルタデータを使用してＮ行目からＮ−１行目への差分を示す反転デルタデータを生成することによってＮ番目の行ラインの画像データを保持し、前記第１の描画処理は、前記第１の中間コード中の前記デコードされていない行ラインの画像データを、前記デルタデータを使用してデコードし、前記第１の中間コード中のデコードされた画像データを所定の方向に描画し、前記第２の描画処理は、前記第２の中間コード中の前記デコードされていない行ラインの画像データを、前記反転デルタデータを使用してデコードし、前記第２の中間コード中のデコードされた画像データを前記所定の方向と反対の方向に描画する。
【発明の効果】
【０００９】
本発明によれば、回転の対象となっている画像に適用可能な高速デルタ行描画処理を実現するための技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係る画像形成システム１０の機能構成を示すブロック図である。
【図２】比較例に係る典型的なデルタ行復号処理の内容を表す概略図である。
【図３】比較例に係る典型的な画像描画処理の内容を表す模式図である。
【図４】比較例に係る典型的な画像描画処理の内容を表す模式図である。
【図５】一実施形態に係るレンダリング処理の内容を示すフローチャートである。
【図６】一実施形態に係る非回転高速デルタ行描画処理を示すフローチャートである。
【図７】一実施形態に係る高速デルタ行描画処理の画像復号処理を示すフローチャートである。
【図８】一実施形態に係る高速デルタ行描画処理の画像復号処理を示すフローチャートである。
【図９】一実施形態に係る高速デルタ行画像復号処理を示すフローチャートである。
【図１０】一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。
【図１１】一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。
【図１２】一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。
【図１３】一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。
【図１４】一実施形態に係る復号画像の画像描画処理の内容を示すフローチャートである。
【図１５】一実施形態に係る画像描画処理の内容を表す概略図である。
【図１６】一実施形態に係る画像描画処理の内容を表す概略図である。
【図１７】一実施形態に係る画像描画処理の内容を表す概略図である。
【図１８】一実施形態に係る画像描画処理の内容を表す概略図である。
【図１９】一実施形態に係る１８０度回転高速デルタ行描画処理を示すフローチャートである。
【図２０】一実施形態に係る１８０度回転高速デルタ行描画処理のＩＦＤＲ復号処理を示すフローチャートである。
【図２１】一実施形態に係るＩＦＤＲ復号処理を示すフローチャートである。
【図２２】一実施形態に係るラインノード生成処理の内容を示すフローチャートである。
【図２３】一実施形態に係るＩＦＤＲ復号処理の内容を表す概略図である。
【図２４】一実施形態に係る反転デルタ生成処理の内容を表す概略図である。
【図２５】一実施形態に係るワークバッファ更新処理の内容を表す概略図である。
【図２６】一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。
【図２７】一実施形態に係るワークバッファ更新処理の内容を表す概略図である。
【図２８】一実施形態に係るワンライン生成処理の内容を表す概略図である。
【図２９】一実施形態に係るワークバッファ更新処理の内容を表す概略図である。
【図３０】一実施形態に係る最終ライン生成処理の内容を示すフローチャートである。
【図３１】一実施形態に係る最終ライン生成処理の内容を表す概略図である。
【図３２】一実施形態に係る１８０度回転の画像描画処理の内容を表す概略図である。
【発明を実施するための形態】
【００１１】
Ａ．実施形態：
以下、本発明を実施するための形態（以下、「実施形態」という）を、図面を参照して説明する。
【００１２】
図１は、本発明の一実施形態に係る画像形成システム１０の機能構成を示すブロック図である。画像形成システム１０は、画像形成装置１００とパーソナルコンピュータ２００とを備える。パーソナルコンピュータ２００は、ネットワーク（この例ではＬＡＮ）を介して画像形成装置１００と接続されている。
【００１３】
画像形成装置１００は、制御部１１０と、画像形成部１２０と、操作表示部１３０と、記憶部１４０と、通信インターフェース部１５０とを備える。パーソナルコンピュータ２００は、制御部２１０と、デルタ行符号化部２２０と、操作表示部２３０と、記憶部２４０と、通信インターフェース部２５０とを備える。
【００１４】
パーソナルコンピュータ２００のデルタ行符号化部２２０は、デルタ行符号化を用いてＲＧＢ画像データを符号化し、符号化画像データを生成する。ＲＧＢ画像データは、単に画像データとも呼ばれ、２次元的に配列された複数の画素を示すＲＧＢの各色のビットマップ（ピクセルマップとも呼ばれる。）データである。制御部２１０は、符号化画像データを使用してＰＤＬデータを生成し、ＰＤＬデータを格納する印刷ジョブを生成する。
【００１５】
通信インターフェース部１５０と通信インターフェース部２５０とは、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコルを用いて通信する。画像形成装置１００は、通信インターフェース部１５０と通信インターフェース部２５０とを介してパーソナルコンピュータ２００から印刷ジョブを受信する。
【００１６】
制御部１１０は、ＰＤＬ解析部１１１を有している。ＰＤＬ解析部１１１は、ＰＤＬ解析処理を実行し、ＰＤＬデータを含む印刷ジョブの受信に応じて、ページ記述言語で記述されたＰＤＬデータを解析する。これにより、制御部１０は、ＰＤＬデータに含まれるテキスト（文字）やイメージ、ベクターグラフィックス、ソフトマスクといったオブジェクトを抽出し、２５６階調のＲＧＢ画像データやフィルタ（制御データ）を生成することができる。この例では、オブジェクトは、符号化画像データを含んでいる。
【００１７】
画像形成部１２０は、デルタ行復号部１２１、画像描画部１２２、画像処理部１２３及び画像出力部１２４を有している。デルタ行復号部１２１は、逆デルタ行符号化によって符号化画像データを復号する。画像描画部１２２は、復号された画像データに対して画像描画処理を実行して画像のビットマップデータを生成する。画像処理部１２３は、印刷設定に従ってスキャンデータを処理する。画像出力部１２４は、復号された印刷データに基づいて印刷媒体に画像を印刷する。デルタ行復号部１２１は、中間コード生成部とも呼ばれる。
【００１８】
画像形成装置１００の操作表示部１３０は、ディスプレイ１３１と操作処理部１３２とを有している。パーソナルコンピュータ２００の操作表示部２３０は、ディスプレイ２３１と操作処理部２３２と有している。ディスプレイ１３１は、タッチパネルとして機能し、操作入力画面として各種メニューを表示する。操作処理部１３２，２３２は、タッチパネルとして機能するディスプレイ１３１や、図示しない各種ボタンやスイッチ等を介してユーザの操作入力を受け付ける。
【００１９】
制御部１１０，２１０は、ＲＡＭやＲＯＭ等の主記憶装置、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の制御装置を有している。制御部１１０，２１０は、各種Ｉ／Ｏ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、バス、その他のハードウェアなどのインターフェースに関する制御機能を備え、画像形成装置１００全体およびパーソナルコンピュータ２００全体を制御する。
【００２０】
記憶部１４０，２４０は、ハードディスクドライブやフラッシュメモリーなどの非一時的な記録媒体であり、制御プログラム（描画処理プログラムを含む。）や制御部１１０，２１０が実行する処理のデータなどをそれぞれ記憶する。
【００２１】
図２は、比較例に係る典型的なデルタ行復号処理の内容を表す概略図である。この比較例は、デルタ行復号処理の一例である。図２は、デルタ行符号化画像データＣＩと復号画像データＤＩとを示している。デルタ行符号化画像データＣＩは、パーソナルコンピュータ２００において、デルタ行符号化処理を用いて複数のオリジナルの行データから符号化された画像データである。オリジナルの行データは、デルタ行符号化処理前のオリジナルの画像データを意味している。復号画像データＤＩは、画像形成装置１００において、逆デルタ行符号化を用いてデルタ行符号化画像データＣＩから復号された画像データである。
【００２２】
デルタ行符号化画像データＣＩは、第１符号化行データＲ１、第２符号化行データＲ２、及び第３符号化行データＲ３を含んでいる。復号画像データＤＩは、第１復号行データＤ１、第２復号行データＤ２及び第３復号行データＤ３を含んでいる。画素内のアルファベットは、ピクセルの各色を意味している。同一のアルファベットは、同一色を表している。第１乃至第４列目の画素には、それぞれ「Ａ」、「Ｂ」、「Ｃ」及び「Ｄ」のアルファベットが含まれている。
【００２３】
第１の符号化行データＲ１は、オフセット数０（オフセット数は単にオフセットとも呼ばれる。）を有している。第１復号行データＤ１は、第１符号化行データＲ１をコピーするだけで生成される。第２符号化行データＲ２は、第１のオリジナル行データと第２のオリジナル行データとの差分を含んでいる。第２符号化行データＲ２は、オフセット数６の画像の一部を含んでいる。オフセット数は、ＲＧＢでは３色×２画素で算出される。画像の一部の３列目と４列目は、それぞれ「Ｋ」と「Ｌ」のアルファベットを有している。
【００２４】
オフセット数６は、１行目と２行目の行データの間において「Ａ」（１列目）と「Ｂ」（２列目）に差異がないことを意味している。オフセット数６は、第３列から始まる第１のオリジナル行データと第２のオリジナル行データとの間に差があることを意味している。
【００２５】
第３列においては、第１のオリジナル行データが「Ｃ」のアルファベットを有し、第２のオリジナル行データが「Ｋ」のアルファベットを有している。第４列においては、第１のオリジナル行データが「Ｄ」のアルファベットを有し、第２のオリジナル行データが「Ｌ」のアルファベットを有している。このように、第２のオリジナル行データは、２列（２画素）のデータのみを有している第２の符号化行データＲ２に符号化される。この符号化は、第１の画素、第２の画素、および第５の画素から第１４の画素を含む残りの列（画素）のデータを節約することができる。
【００２６】
デルタ行復号部１２１は、第２符号化行データＲ２を以下のようにして復号することができる。デルタ行復号部１２１は、第１の復号行データＤ１をコピーした後、第３及び第４の画素を「Ｃ」及び「Ｄ」から「Ｋ」及び「Ｌ」にそれぞれ更新（変更）する。この復号処理によって第２復号行データＤ２が生成される。
【００２７】
第３の符号化行データＲ３は、第１の部分画像Ｒ３１と第２の部分画像Ｒ３２とを含んでいる。第１の部分画像Ｒ３１は、ＲＧＢでは３色×４画素で計算される第１のオフセット数１２を有し、５列目及び６列目にそれぞれ「Ｍ」のアルファベットを有している。第２の画像部分Ｒ３２は、第１の部分画像Ｒ３１からＲＧＢについて３色×０画素で計算される第２オフセット数０を有し、第７列乃至第１０列にそれぞれ「Ｎ」のアルファベットを有している。
【００２８】
第１のオフセット数１２は、２行目の行データと３行目の行データの間において「Ａ」（１列目）、「Ｂ」（２列目）、「Ｋ」（３列目）及び「Ｌ」（４列目）に差異がないことを意味している。部分画像Ｒ３１は、５列目及び６列目にそれぞれ「Ｍ」のアルファベットを有している。第２のオフセット数０は、次の列、すなわち７列目から開始される第１のオリジナル行データと第２のオリジナル行データとの間に差があることを意味している。第２の部分画像Ｒ３２は、７列目乃至１０列目にそれぞれ「Ｎ」のアルファベットを有している。
【００２９】
デルタ行復号部１２１は、第３符号化行データＲ３を以下のようにして復号する。デルタ行復号部１２１は、第２復号行データＤ２をコピーし、５列目及び６列目をそれぞれ「Ｅ」及び「Ｆ」から「Ｍ」及び「Ｍ」に更新する。さらに、デルタ行復号部１２１は、７列目乃至１０列目をそれぞれ「Ｇ」、「Ｇ」、「Ｈ」及び「Ｈ」から「Ｎ」、「Ｎ」、「Ｎ」及び「Ｎ」に更新する。
【００３０】
図３は、比較例に係る典型的な画像描画処理の内容を表す模式図である。画像描画部１２２は、復号画像データＤＩに対して画像描画処理を実行し、画素値をＸ方向及びＹ方向に複製する画素複製処理によって画像のビットマップデータＲＤ（たとえばＲＤ１及びＲＤ２）を生成する。この例では、倍率は、Ｘ方向（行方向）及びＹ方向（列方向）に２である。このような処理は、スケーリング処理とも呼ばれる。
【００３１】
画像描画部１２２は、描画用ワンラインワークバッファＲＬＢを用い、第１復号行データＤ１の各画素値をＸ方向に複製して描画ラインデータＲＢ１を生成する。画像描画部１２２は、描画ラインデータＲＢ１の各画素をＹ方向に複製してページバッファＰＢに第１描画行データＲＤ１及び第２描画行データＲＤ２を生成する。
【００３２】
図４は、比較例に係る典型的な画像描画処理の内容を表す模式図である。画像描画部１２２は、描画用ワンラインワークバッファＲＬＢを用いて、第２復号行データＤ２の画素をＸ方向に複製して描画ラインデータＲＢ２を生成する。画像描画部１２２は、描画ラインデータＲＢ２の各画素をＹ方向に複製することによって、ページバッファＰＢに第３描画行データＲＤ１及び第４描画行データＲＤ２を生成する。
【００３３】
図５は、一実施形態に係るレンダリング処理の内容を示すフローチャートである。レンダリング処理は、パーソナルコンピュータ２００からの印刷ジョブの受信に応じて画像形成装置１００において起動される。印刷ジョブの受信は、通信インターフェース部２５０及び通信インターフェース部１５０を介して実行される。印刷ジョブには、ＰＤＬデータが含まれている。
【００３４】
ステップＳ１００では、画像形成装置１００が有する制御部１１０のＰＤＬ解析部１１１は、ＰＤＬ解析処理を実行し、ページ記述言語で記述されたＰＤＬデータを解析する。この例では、ＰＤＬ解析部１１１は、ＰＤＬデータから描画オブジェクトと、描画オブジェクトの描画方向、すなわち印刷媒体上における画像の向き（指定方向）を指定している方向指定データとを取得する。方向指定データは、角度データとも呼ばれ、たとえば非回転（０度）、時計方向９０度、反時計方向９０度及び１８０度の回転角度を指定している。この例では、描画オブジェクトには、符号化画像データが含まれている。
【００３５】
ステップＳ２００では、画像形成部１２０は、描画オブジェクトを解析し、受信した描画オブジェクトがＲＧＢやＣＭＹＫといった各画素の画素値を含んでいる画像オブジェクトであるか否かを判定する。受信した描画オブジェクトがテキストやベクターデータ等でなく画像オブジェクトであると判定された場合、画像形成部１２０は、処理をステップＳ４００に進める。画像形成部１２０は、受信した描画オブジェクトがテキストやベクトルデータ等の画像オブジェクト以外のオブジェクトであると判断した場合、処理をステップＳ３００に進める。ステップＳ３００では、画像形成部１２０は、通常の描画処理により描画オブジェクトを描画する。
【００３６】
ステップＳ４００では、画像描画部１２２は、画像オブジェクトを解析し、画像オブジェクトがデルタ行符号化により圧縮されている符号化画像データであるか否かを判定する。画像オブジェクトがデルタ行符号化により圧縮されていると判定された場合、画像形成部１２０は、処理をステップＳ５００に進める。画像オブジェクトがデルタ行符号化により圧縮されていない場合、画像形成部１２０は、画像形成部１２０は、通常の画像描画処理により画像オブジェクトを描画する（ステップＳ３００）。
【００３７】
ステップＳ５００では、画像描画部１２２は、方向指定データに基づいて、画像が描画ページの向きと同一の方向、すなわち非回転であるか否かを判断する。画像の向きが同じである場合、画像形成部１２０は、処理をステップＳ７００に進める。画像の向きが同じでない場合、画像形成部１２０は、処理をステップＳ６００に進める。
【００３８】
ステップＳ６００では、画像描画部１２２は、方向指定データに基づいて、画像の指定方向が１８０度回転、すなわち上下左右反転であるか否かを判断する。１８０度回転である場合、画像形成部１２０は、処理をステップＳ８００に進める。１８０度回転でない場合、画像形成部１２０は、通常の画像描画処理により画像オブジェクトを描画する（ステップＳ３００）。
【００３９】
図６は、一実施形態に係る非回転高速デルタ行（Ｆａｓｔ  Ｄｅｌｔａ  Ｒｏｗ）描画処理を示すフローチャートである。ステップＳ７００では、画像描画部１２２は、高速デルタ行描画処理（ＦＤＲ描画処理とも呼ばれる。）を実行する。非回転ＦＤＲ描画処理は、画像を復号して第１の中間コードを生成する画像復号処理（ステップＳ７１０）と、復号された画像である復号画像を描画（第１の描画処理とも呼ばれる。）する復号画像描画処理（ステップＳ７５０）とを含んでいる。
【００４０】
図７は、一実施形態に係る高速デルタ行描画処理の画像復号処理（ステップＳ７１０）を示すフローチャートである。ステップＳ７１１では、デルタ行復号部１２１は、デルタ制限サイズを決定する。デルタ制限サイズとは、画像形成装置１００のハードウェアリソースに基づいて効率的な処理を実現するために予め設定されている所定のデータサイズ（たとえばバイト数）である。
【００４１】
デルタ行復号部１２１は、記憶部１４０からデルタ制限レートである０．２５を読み出す。デルタ行復号部１２１は、入力画像データの１ラインのバッファサイズにデルタ制限レートである０．２５を乗算する。入力画像データの１ラインバッファサイズは、１ラインの画素数（この例では１４）、すなわち画像幅にＲＧＢの３色を乗じて算出される４２である。したがって、デルタ制限サイズは、１０．５（＝４２×０．２５）と計算される。このデルタ制限サイズは、第１の閾値とも呼ばれる。
【００４２】
図８は、一実施形態に係る高速デルタ行描画処理の画像復号処理を示すフローチャートである。ステップＳ７１２では、デルタ行復号部１２１は、ワークバッファＷＢを準備する。ワークバッファＷＢは、入力画像データの１ラインバッファサイズと同じサイズを有している。ステップＳ７１３では、デルタ行復号部１２１は、現ライン（すなわち処理対象のライン）の各デルタサイズの合計を０に初期化する。ステップＳ７１４では、デルタ行復号部１２１は、ＦＤＲ復号処理を実行する。
【００４３】
図９は、一実施形態に係る高速デルタ行画像復号処理を示すフローチャートである。ステップＳ７４１では、デルタ行復号部１２１は、現ラインにデルタデータ（単にデルタとも呼ばれる。）が残っているか否かを判定する。現ラインにデルタが残っている場合、デルタ行復号部１２１は、処理をステップＳ７４２に進める。現ラインにデルタが残存していない場合、デルタ行復号部１２１は、処理をステップＳ７１５（図７参照）に進める（リターン）。デルタデータは、Ｎ−１（Ｎは２以上の整数）行目からＮ行目への差分を示すデータである。
【００４４】
この例では、第１符号化行データＲ１の差分が存在するので、デルタ行復号部１２１は、処理をステップＳ７４２に進める。ステップＳ７４２では、デルタ行復号部１２１は、全体がデルタとなる最初の符号化行データＲ１をデルタとして取得する。全体がデルタとなるのは、先行する符号化行データが存在しないからである。
【００４５】
図１０は、一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。ステップＳ７４３では、デルタ行復号部１２１は、ワークバッファＷＢを第１符号化行データＲ１のデルタで更新し、１ラインバッファサイズであるデルタサイズ４２を現在のラインデルタサイズ合計に加算する。デルタサイズ４２は、ライン全体が更新されるため、１ラインのピクセル数１４、すなわち画像幅（すなわち画素数）にＲＧＢの３色を掛けて算出される。
【００４６】
ステップＳ７４４では、デルタ行復号部１２１は、現デルタサイズ合計（単に「ＤＳＳ」とも呼ばれる。）が、デルタ制限サイズ（単に「ＤＬＳ」とも呼ばれる。）以上であるか否かを判定する。デルタサイズ合計がデルタ制限サイズ以上である場合、デルタ行復号部１２１は、処理をステップＳ７４１に戻す。デルタサイズ合計がデルタ制限サイズより小さい場合、デルタ行復号部１２１は、処理をステップＳ７４５に進める。この例では、デルタサイズの合計は４２であり、デルタ制限サイズは１０．５である（すなわちＹＥＳとなる。）。したがって、デルタ行復号部１２１は、処理をステップＳ７４１に戻す。
【００４７】
ステップＳ７４１では、デルタ行復号部１２１は、このラインにデルタが残っているか否かを判定する。この行にデルタが残っている場合、デルタ行復号部１２１は、処理をステップＳ７４２に進める。このラインにデルタが残存していない場合、デルタ行復号部１２１は、処理をステップＳ７１５（図７参照）に進める。この例では、第１符号化行データＲ１にはデルタが残存していない。したがって、デルタ行復号部１２１は、処理をステップＳ７１５（図７参照）に進める。
【００４８】
ステップＳ７１５では、デルタ行復号部１２１は、デルタサイズ合計がデルタ制限サイズ以上であるか否かを判定する。この例では、デルタサイズの合計は４２であり、デルタ制限サイズは１０．５である（ＹＥＳを意味する）。したがって、デルタ行復号部１２１は、処理をステップＳ７１６に進める。
【００４９】
ステップＳ７１６では、デルタ行復号部１２１は、現ラインの全てのノードを解放する。ステップＳ７１７では、デルタ行復号部１２１は、第１符号化行データＲ１の現デルタに対するラインバッファを取得する。ラインバッファは、入力画像データの１ラインバッファサイズと同じサイズを有している。デルタ行復号部１２１は、ワークバッファＷＢをこのラインバッファにコピーする。このラインバッファは、ＦＤＲ符号化行データＦＲ１としてＦＤＲ圧縮画像ＦＣＩの一部を構成している。
【００５０】
ステップＳ７１８では、デルタ行復号部１２１は、他にライン（行）があるか否かを判定する。他にラインがある場合、デルタ行復号部１２１は、処理をステップＳ７１３に戻す。ラインが残っていない場合、デルタ行復号部１２１は、処理をステップＳ７５０（図６参照）に進める。この例では、他のラインが存在するので、デルタ行復号部１２１は、処理をステップＳ７１３に戻す。
【００５１】
ステップＳ７１３では、デルタ行復号部１２１は、現ラインのデルタサイズの合計を０に初期化する。ステップＳ７４１では、デルタ行復号部１２１は、現ラインにデルタが残っているか否かを判定する。この例では、第２符号化行データＲ２としてデルタが存在するので、デルタ行復号部１２１は、処理をステップＳ７４２に進める。ステップＳ７４２では、デルタ行復号部１２１は、第２符号化行データＲ２のデルタを取得する。
【００５２】
図１１は、一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。ステップＳ７４３では、デルタ行復号部１２１は、第２符号化行データＲ２のデルタでワークバッファＷＢを更新し、デルタサイズ合計に、２画素×ＲＧＢの３色で算出されるデルタサイズ６を加算する。
【００５３】
ステップＳ７４４では、デルタ行復号部１２１は、デルタサイズ合計がデルタ制限サイズ以上であるか否かを判定する。この例では、デルタサイズ合計の６は、デルタ制限サイズより小さいので、デルタ行復号部１２１は、処理をステップＳ７４５に進める。
【００５４】
ステップＳ７４５では、デルタ行復号部１２１は、現ラインの最初のデルタであるか否かを判定する。現ラインの最初デルタである場合、デルタ行復号部１２１は、処理をステップＳ７４７に進める。現ラインの最初のデルタではない場合、デルタ行復号部１２１は、処理をステップＳ７４６に進める。この例では、第２符号化行データＲ２は現ラインの最初のデルタなので、デルタ行復号部１２１は、処理をステップＳ７４７に進める。
【００５５】
ステップＳ７４７では、デルタ行復号部１２１は、ノードを取得し、第２符号化行データＲ２のデルタにラインバッファを割り当てる。ノードは、６のオフセット数を有している。ラインバッファは、デルタサイズ６と同じサイズを有している。デルタ行復号ユニット１２１は、ワークバッファＷＢをこのラインバッファにコピーする。このラインバッファは、ＦＤＲ符号化行データＦＲ２としてＦＤＲ圧縮画像ＦＣＩの一部を構成している。このように、デルタ行復号部１２１は、デルタデータを使用することによってＮ番目の行ラインの画像データを保持することができる。
【００５６】
デルタ行復号部１２１は、処理をステップＳ７４１に戻す。この例では、第２符号化行データＲ２にはデルタが残存していない。したがって、デルタ行復号部１２１は、処理をステップＳ７１５に進める。
【００５７】
ステップＳ７１５では、デルタ行復号部１２１は、デルタサイズ合計ＤＳＳが、デルタ制限サイズＤＬＳ以上であるか否かを判定する。この例では、デルタサイズ合計は６であり、デルタ制限サイズは１０．５なので（ＮＯを意味している。）、デルタ行復号部１２１は、処理をステップＳ７１８に進める。
【００５８】
ステップＳ７１８では、デルタ行復号部１２１は、他にラインが存在するか否かを判定する。この例では、３行目の符号化行データＲ３が存在するので、デルタ行復号部１２１は、処理をステップＳ７１３に戻す。
【００５９】
ステップＳ７１３では、デルタ行復号部１２１は、現ラインのデルタサイズの合計を０に初期化する。ステップＳ７４１において、デルタ行復号部１２１は、このラインにデルタが残存しているか否かを判定する。この例では、第３符号化行データＲ３には２つのデルタが残存するので、デルタ行復号部１２１は、処理をステップＳ７４２に進める。ステップＳ７４２では、デルタ行復号部１２１は、第３符号化行データＲ３の第１デルタＲ３１を取得する。
【００６０】
図１２は、一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。ステップＳ７４３では、デルタ行復号部１２１は、第３符号化行データＲ３の第１デルタＲ３１でワークバッファＷＢを更新し、２画素×ＲＧＢの３色の値である６のデルタサイズをデルタサイズの合計に加算する。
【００６１】
ステップＳ７４４では、デルタ行復号部１２１は、デルタサイズ合計がデルタ制限サイズ以上であるか否かを判定する。この例では、デルタサイズ合計６がデルタ制限サイズより小さいので、デルタ行復号部１２１は、処理をステップＳ７４５に進める。
【００６２】
ステップＳ７４５では、デルタ行復号部１２１は、デルタが現ラインの最初のデルタであるか否かを判定する。この例では、デルタが現ラインの最初のデルタなので、デルタ行復号部１２１は、処理をステップＳ７４７に進める。
【００６３】
ステップＳ７４７では、デルタ行復号部１２１は、デルタ用のノードを取得し、第３符号化行データＲ３の第１デルタＲ３１にラインバッファを割り当てる。ノードは、最初のオフセット数１２を有している。ラインバッファは、デルタサイズ６と同じサイズを有している。デルタ行復号部１２１は、ワークバッファＷＢをこのラインバッファにコピーする。このラインバッファは、ＦＤＲ符号化行データＦＲ３ｔとしてＦＤＲ圧縮画像ＦＣＩの一部を構成する。ＦＤＲ符号化行データＦＲ３ｔは、次の第２のデルタＲ３２のための暫定的なデータである。
【００６４】
デルタ行復号部１２１は、処理をステップＳ７４１に戻す。この例では、第３符号化行データＲ３には、第２デルタＲ３２が残存しているので、デルタ行復号部１２１は、処理をステップＳ７４２に進める。ステップＳ７４２では、デルタ行復号部１２１は、第３符号化行データＲ３の第２デルタＲ３２を取得する。
【００６５】
図１３は、一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。ステップＳ７４３では、デルタ行復号部１２１は、第３符号化行データＲ３の第２デルタＲ３２でワークバッファＷＢを更新し、４画素×ＲＧＢの３色で算出されたデルタサイズの１２をデルタサイズ合計（加算前は第１デルタＲ３１のデルタサイズ６）に加算する。これにより、デルタサイズの合計が１８になる。
【００６６】
ステップＳ７４４では、デルタ行復号部１２１は、デルタサイズ合計ＤＳＳがデルタ制限サイズＤＬＳの１０．５以上であるか否かを判定する。この例では、デルタサイズの合計は１８であり、デルタ制限サイズが１０．５なので（ＹＥＳを意味する）、デルタ行復号部１２１は、処理をステップＳ７４１に進める。
【００６７】
ステップＳ７４４では、仮にデルタサイズ合計がデルタ制限サイズより小さかった場合には（すなわちＮＯとなる。）、デルタ行復号部１２１は、処理をステップＳ７４５に進めることになる。この例では、現ラインの最初のデルタではないので、デルタ行復号部１２１は、処理をステップＳ７４６に進める。ステップＳ７４６では、このデルタのオフセットは０なので、処理をステップＳ７４８に進める。
【００６８】
ステップＳ７４８では、デルタ行復号ユニット１２１は既存のバッファを延長し、このデルタをこのラインバッファのこの延長部分にコピーする。デルタ行復号部１２１は、処理をステップＳ７４１に進める。
【００６９】
ステップＳ７４１では、デルタ行復号部１２１は、このラインにデルタが残存しているか否かを判定する。この例では、第３符号化行データＲ３にはデルタが残存していないので、デルタ行復号部１２１は、処理をステップＳ７１５（図７参照）に進める。
【００７０】
ステップＳ７１５では、デルタ行復号部１２１は、デルタサイズ合計が、デルタ制限サイズ以上であるか否かを判定する。この例では、デルタサイズの合計は１８であり、デルタ制限サイズが１０．５なので（ＹＥＳを意味する。）、デルタ行復号部１２１は、処理をステップＳ７１６に進める。
【００７１】
ステップＳ７１６では、デルタ行復号部１２１は、ワークバッファＷＢの全てのノードを解放する。ステップＳ７１７では、デルタ行復号部１２１は、ラインバッファを第３符号化行データＲ３全体に割り当てる。ラインバッファは、入力画像データの１ラインバッファサイズと同じサイズを有している。デルタ行復号部１２１は、ワークバッファＷＢをこのラインバッファにコピーし、ＦＤＲ符号化行データＦＲ３としてＦＤＲ圧縮画像ＦＣＩの一部を構成する。このように、デルタ行復号部１２１は、デルタデータを用いて行ラインの画像データをデコードして画像データを保持することができる。
【００７２】
ステップＳ７１８では、デルタ行復号部１２１は、他にラインがあるか否かを判定する。この例では、ラインが残存していないので、デルタ行復号部１２１は、処理をステップＳ７５０（図６参照）に進める。
【００７３】
図１４は、一実施形態に係る復号画像の画像描画処理（ステップＳ７５０）の内容を示すフローチャートである。図１５は、一実施形態に係る画像描画処理の内容を表す概略図である。ステップＳ７５１では、画像描画部１２２は、復号入力ワンラインバッファＤＬＢを割り当てる。復号入力ワンラインバッファＤＬＢは、ＦＤＲ符号化行データ用の入力画像データの１ラインバッファサイズと同じバッファサイズを有している。
【００７４】
ステップＳ７５２では、画像描画部１２２は、描画用ワンラインワークバッファＲＬＢを割り当てる。描画用ワンラインワークバッファＲＬＢは、オリジナルの行データのサイズとＸ方向（行方向）の倍率（この例では２）とに応じたバッファサイズを有している。すなわち、描画用ワンラインワークバッファＲＬＢは、オリジナルの行データのサイズの２倍のバッファサイズを有している。
【００７５】
ステップＳ７５３では、デルタ行復号部１２１は、現ラインにデルタが残存しているか否かを判定する。現ラインにデルタが残っている場合、デルタ行復号部１２１は、処理をステップＳ７５４に進める。現ラインにデルタが残存していない場合、デルタ行復号部１２１は、処理をステップＳ７５６に進める。この例では、デルタ行復号部１２１は、処理をステップＳ７５４に進める。
【００７６】
図１６は、一実施形態に係る画像描画処理の内容を表す概略図である。ＦＤＲ符号化行データＦＲ１は、ゼロのオフセット数を有している。ステップＳ７５４では、第１復号入力ラインデータＦＤ１は、更新の一種として、ＦＤＲ符号化行データＦＲ１を単純にコピーすることによって生成される。
【００７７】
ステップＳ７５５では、画像処理部１２３は、第１復号入力ラインデータＦＤ１の各色をＣＭＹ又はＣＭＹＫに色変換処理を実行し、次に、画像描画部１２２は、色変換データに対して描画処理を実行して、描画ワンラインワークバッファＲＬＢを使用するピクセル複製によって画像の１ラインビットマップデータＲＢ１を生成する。Ｘ方向（行方向）及びＹ方向（列方向）の倍率は２である。
【００７８】
ステップＳ７５３では、このラインにはデルタが残存していないので、デルタ行復号部１２１は、処理をステップＳ７５６に進める。ステップＳ７５６では、画像描画部１２２は、１ラインビットマップデータＲＢ１をコピーしてＹ方向に複製、すなわち繰り返してページバッファＰＢに描画処理済みローデータＲＤ１及びＲＤ２を生成する。
【００７９】
図１７は、一実施形態に係る画像描画処理の内容を表す概略図である。ステップＳ７５７では、２行目のＦＤＲ符号化行データＦＲ２がもう１行あるので、デルタ行復号部１２１は、処理をステップＳ７５３に戻す。
【００８０】
ステップＳ７５３では、デルタ行復号部１２１は、第２復号入力ラインデータＦＤ２のデルタが残存しているので、処理をステップＳ７５４に進める。ステップＳ７５４では、デルタ行復号部１２１は、３番目及び４番目の画素を「Ｃ」及び「Ｄ」から「Ｋ」及び「Ｌ」に更新して第２復号入力ラインデータＦＤ２を生成する。
【００８１】
ステップＳ７５５では、画像処理部１２３は、第２復号入力ラインデータＦＤ２の各色を変換し、次に、画像描画部１２２は、色変換データに対して描画処理を実行して、ワンラインワークバッファＲＬＢの描画処理を使用する画素複製によって画像の１ラインビットマップデータＲＢ２を生成する。
【００８２】
ステップＳ７５３では、このラインにはデルタが残存していないので、デルタ行復号部１２１は、処理をステップＳ７５６に進める。ステップＳ７５６では、画像描画部１２２は、１ラインビットマップデータＲＢ２をコピーしてＹ方向に複製、すなわち繰り返すことによって、ページバッファＰＢに対して描画処理が実行されたローデータＲＤ３及びＲＤ４を生成する。
【００８３】
図１８は、一実施形態に係る画像描画処理の内容を表す概略図である。ステップＳ７５７では、３行目のＦＤＲ符号化行データＦＲ３がもう１行あるので、デルタ行復号部１２１は、処理をステップＳ７５３に戻す。
【００８４】
ステップＳ７５３では、第２復号入力ラインデータＦＤ２にデルタが残存しているので、デルタ行復号部１２１は、処理をステップＳ７５４に進める。
【００８５】
ＦＤＲ符号化行データＦＲ３は、ゼロのオフセット数を有している。第３の復号入力ラインバッファＦＤ３は、ＦＤＲ符号化行データＦＲ３を単にコピーすることによって生成される。他の処理は、第１復号入力ラインデータＦＤ１に対する処理と同様である。このように、画像描画部１２２は、ページバッファＰＢに描画行データＲＤ５及びＲＤ６を生成する。
【００８６】
図１９は、一実施形態に係る１８０度回転高速デルタ行（ＩＮＶＥＲＴＥＤ  Ｆａｓｔ  Ｄｅｌｔａ  Ｒｏｗ：ＩＦＤＲ）描画処理を示すフローチャートである。ステップＳ８００では、画像描画部１２２は、１８０度回転高速デルタ行描画処理を実行する。１８０度回転ＦＤＲ描画処理は、１８０度回転される画像を復号して第２の中間コードを生成する１８０度回転画像復号処理（ステップＳ８１０）と、１８０度回転される復号画像を描画（第２の描画処理とも呼ばれる。）する１８０度回転復号画像描画処理（ステップＳ８５０）とを含んでいる。
【００８７】
図２０は、一実施形態に係る１８０度回転高速デルタ行描画処理のＩＦＤＲ復号処理（ステップＳ８１０）を示すフローチャートである。ステップＳ８１１では、デルタ行復号部１２１は、デルタ制限サイズを決定する。ステップＳ８１２では、デルタ行復号部１２１は、ワークバッファＷＢを準備する。ステップＳ８１３では、デルタ行復号部１２１は、現ラインの各デルタサイズの合計を０に初期化する。ステップＳ８１１乃至ステップＳ８１３の処理は、ステップＳ７１１乃至ステップＳ７１３（図７参照）の処理と同一である。
【００８８】
このデルタ制限サイズは、第２の閾値とも呼ばれる。本実施形態では、非回転と１８０度回転の高速デルタ行描画処理は、共通するデルタ制限レートである０．２５を使用している。したがって、第１の閾値及び第２の閾値は、同一の値を有している。本実施形態では、後述するように、非回転の復号処理と非回転の画像描画処理の処理方向を逆転させるだけで、画像の１８０度回転処理を実行することなく１８０度回転の画像描画処理実現させることができるので処理コストが非回転と１８０度回転でほとんど同一だからである。
【００８９】
図２１は、一実施形態に係るＩＦＤＲ復号処理（ステップＳ８１４）を示すフローチャートである。ステップＳ８４１では、デルタ行復号部１２１は、現ラインにデルタが残っているか否かを判定する。ステップＳ８４２では、デルタ行復号部１２１は、全体がデルタとなる最初の符号化行データである第１符号化行データＲ１のデルタを取得する。ステップＳ８４１及びステップＳ８４２の処理は、ステップＳ７４１及びステップＳ７４２（図９参照）の処理と同一である。
【００９０】
ステップＳ８４３では、デルタ行復号部１２１は、１ラインバッファサイズであるデルタサイズ４２を現在のラインデルタサイズ合計に加算する。ステップＳ８４４では、デルタ行復号部１２１は、現デルタサイズ合計（単に「ＤＳＳ」とも呼ばれる。）が、デルタ制限サイズ（単に「ＤＬＳ」とも呼ばれる。）以上であるか否かを判定する。デルタサイズ合計がデルタ制限サイズ以上である場合、デルタ行復号部１２１は、処理をステップＳ８４９に進める。デルタサイズ合計がデルタ制限サイズより小さい場合、デルタ行復号部１２１は、処理をステップＳ８４５に進める。
【００９１】
ステップＳ８４４は、デルタサイズ合計がデルタ制限サイズ以上である場合、デルタ行復号部１２１が処理をラインノード生成処理（ステップＳ８４９）に進める点で、処理をステップＳ７４１に戻すステップＳ７４４（図９参照）と相違している。この例では、デルタサイズの合計は４２であり、デルタ制限サイズは１０．５である（すなわちＹＥＳとなる。）。したがって、デルタ行復号部１２１は、処理をラインノード生成処理（ステップＳ８４９）に進める。
【００９２】
図２２は、一実施形態に係るラインノード生成処理（ステップＳ８４９）の内容を示すフローチャートである。ステップＳ８９１では、デルタ行復号部１２１は、処理対象のラインが画像中の最初のラインであるか否かを判断する。処理対象のラインが画像中の最初のラインである場合、デルタ行復号部１２１は、処理をステップＳ８９５に進める。処理対象のラインが画像中の最初のラインでない場合、デルタ行復号部１２１は、処理をステップＳ８９２に進める。この例では、処理対象のラインが画像中の最初のラインなので、デルタ行復号部１２１は、処理をステップＳ８９５に進める。
【００９３】
ステップＳ８９５では、デルタ行復号部１２１は、ワークバッファ更新処理を実行する。ワークバッファ更新処理では、デルタ行復号部１２１は、ワークバッファＷＢを第１符号化行データＲ１のデルタで更新し、処理をステップＳ８４１（図２１参照）に戻す。ステップＳ８４１では、デルタ行復号部１２１は、デルタが残存しないので処理をステップＳ８１８（図２０参照）に戻す。
【００９４】
図２３は、一実施形態に係るＩＦＤＲ復号処理の内容を表す概略図である。このように、デルタ行復号部１２１は、ワークバッファＷＢを第１符号化行データＲ１のデルタで更新した状態で、デルタ行復号部１２１は、ワークバッファＷＢをこのラインバッファにコピーすることなく、処理対象を次のラインに進める（ステップＳ８１８）。１８０度回転ＦＤＲ復号処理では、最初のラインは、最終ラインとなるので１ライン分の全ての画素データを有する必要はないからである。
【００９５】
ステップＳ８１３では、デルタ行復号部１２１は、現ラインのデルタサイズの合計を０に初期化する。ステップＳ８４１では、デルタ行復号部１２１は、現ラインにデルタが残っているか否かを判定する。この例では、第２符号化行データＲ２としてデルタが存在するので、デルタ行復号部１２１は、処理をステップＳ８４２に進める。ステップＳ８４２では、デルタ行復号部１２１は、第２符号化行データＲ２のデルタを取得する。
【００９６】
図２４は、一実施形態に係る反転デルタ生成処理の内容を表す概略図である。ステップＳ８４３では、デルタ行復号部１２１は、デルタサイズ加算処理を実行する。デルタサイズ加算処理では、デルタサイズ合計に、第２符号化行データＲ２のデルタの画素数である２画素×ＲＧＢの３色で算出されるデルタサイズ６をデルタサイズ合計（０）に加算する。
【００９７】
ステップＳ８４４では、デルタ行復号部１２１は、デルタサイズ合計がデルタ制限サイズ以上であるか否かを判定する。この例では、デルタサイズ合計の６は、デルタ制限サイズより小さいので、デルタ行復号部１２１は、処理をステップＳ８４５に進める。
【００９８】
ステップＳ８４５では、デルタ行復号部１２１は、現ラインの最初のデルタであるか否かを判定する。現ラインの最初デルタである場合、デルタ行復号部１２１は、処理をステップＳ８４７に進める。現ラインの最初のデルタではない場合、デルタ行復号部１２１は、処理をステップＳ８４６に進める。この例では、第２符号化行データＲ２は現ラインの最初のデルタなので、デルタ行復号部１２１は、処理をステップＳ８４７に進める。
【００９９】
ステップＳ８４７では、デルタ行復号部１２１は、ノードを取得し、第２符号化行データＲ２にラインバッファを割り当てる。ノードは、６のオフセット数を有している。ラインバッファは、デルタサイズ６と同じサイズを有している。デルタ行復号ユニット１２１は、反転デルタ生成処理として、第２符号化行データＲ２のデルタに対応する１８０度回転ＦＤＲ復号処理用のデルタを、このラインバッファにコピーする。このラインバッファは、ＦＤＲ符号化行データＦＲ２ｔａとしてＦＤＲ圧縮画像ＦＣＩの一部を構成している。
【０１００】
１８０度回転ＦＤＲ復号処理用のデルタは、第２符号化行データＲ２から第１符号化行データＲ１への差分（デルタ）である。１８０度回転ＦＤＲ復号処理用のデルタは、反転デルタデータ又は単に反転デルタとも呼ばれる。この例では、反転デルタは、第１符号化行データＲ１内の第２符号化行データＲ２に対応する画素位置のデータ、すなわち「Ｃ」（３列目）及び「Ｄ」（４列目）のデータである。１８０度回転ＦＤＲ復号処理は、１８０度回転された方向に反転デルタを使用して復号するからである。このように、デルタ行復号部１２１は、反転デルタデータを使用することによってＮ番目の行ラインの画像データを保持することができる。反転デルタデータは、Ｎ（Ｎは２以上の整数）行目からＮ−１行目への差分を示すデータである。
【０１０１】
図２５は、一実施形態に係るワークバッファ更新処理の内容を表す概略図である。ワークバッファ更新処理では、デルタ行復号部１２１は、第２符号化行データＲ２を使用してワークバッファＷＢを更新する。すなわち、デルタ行復号部１２１は、ワークバッファＷＢの第３及び第４の画素を「Ｃ」及び「Ｄ」から「Ｋ」及び「Ｌ」にそれぞれ更新（変更）する。
【０１０２】
デルタ行復号部１２１は、ワークバッファ更新処理の完了に応じて処理をステップＳ８４１に戻す。この例では、第２符号化行データＲ２にはデルタが残存していない。したがって、デルタ行復号部１２１は、処理をステップＳ８１８に進める（ステップＳ８４１）。
【０１０３】
ステップＳ８１８では、デルタ行復号部１２１は、他にラインが存在するか否かを判定する。この例では、３行目の符号化行データＲ３が存在するので、デルタ行復号部１２１は、処理をステップＳ８１３に戻す。
【０１０４】
ステップＳ８１３では、デルタ行復号部１２１は、現ラインのデルタサイズの合計を０に初期化する。ステップＳ８４１において、デルタ行復号部１２１は、このラインにデルタが残存しているか否かを判定する。この例では、第３符号化行データＲ３には２つのデルタが残存するので、デルタ行復号部１２１は、処理をステップＳ８４２に進める。ステップＳ８４２では、デルタ行復号部１２１は、第３符号化行データＲ３の第１デルタＲ３１を取得する。
【０１０５】
図２６は、一実施形態に係るＦＤＲ復号処理の内容を表す概略図である。ステップＳ８４３では、デルタ行復号部１２１は、デルタサイズ加算処理を実行する。デルタサイズ加算処理では、デルタサイズ合計に、第３符号化行データＲ３の第１デルタＲ３１の画素数である２画素×ＲＧＢの３色で算出されるデルタサイズ６をデルタサイズ合計（０）に加算する。
【０１０６】
ステップＳ８４４では、デルタ行復号部１２１は、デルタサイズ合計がデルタ制限サイズ以上であるか否かを判定する。この例では、デルタサイズ合計６がデルタ制限サイズより小さいので、デルタ行復号部１２１は、処理をステップＳ８４５に進める。
【０１０７】
ステップＳ８４５では、デルタ行復号部１２１は、デルタが現ラインの最初のデルタであるか否かを判定する。この例では、第１デルタＲ３１が現ラインの最初のデルタなので、デルタ行復号部１２１は、処理をステップＳ８４７に進める。
【０１０８】
ステップＳ８４７では、デルタ行復号部１２１は、デルタ用のノードを取得し、第３符号化行データＲ３の第１デルタＲ３１にラインバッファを割り当てる。ノードは、最初のオフセット数１２を有している。デルタ行復号ユニット１２１は、反転デルタ生成処理として、第３符号化行データＲ３の第１デルタＲ３１のデルタに対応する反転デルタを、このラインバッファにコピーする。このラインバッファは、ＦＤＲ符号化行データＦＲ２ｔａとしてＦＤＲ圧縮画像ＦＣＩの一部を構成している。ＦＤＲ符号化行データＦＲ２ｔａは、次の第２のデルタＲ３２のための暫定的なデータである。
【０１０９】
図２７は、一実施形態に係るワークバッファ更新処理の内容を表す概略図である。ワークバッファ更新処理では、デルタ行復号部１２１は、第１デルタＲ３１を使用してワークバッファＷＢを更新する。すなわち、デルタ行復号部１２１は、ワークバッファＷＢの第５及び第６の画素を「Ｅ」及び「Ｆ」から「Ｍ」及び「Ｍ」にそれぞれ更新（変更）する。
【０１１０】
デルタ行復号部１２１は、処理をステップＳ８４１に戻す。この例では、第３符号化行データＲ３には、第２デルタＲ３２が残存しているので、デルタ行復号部１２１は、処理をステップＳ８４２に進める。ステップＳ８４２では、デルタ行復号部１２１は、第３符号化行データＲ３の第２デルタＲ３２を取得する。
【０１１１】
ステップＳ８４３では、デルタ行復号部１２１は、デルタサイズ加算処理を実行する。デルタサイズ加算処理では、デルタサイズ合計に、第３符号化行データＲ３の第２デルタＲ３２の画素数である４画素×ＲＧＢの３色で算出されるデルタサイズ１２をデルタサイズ合計（６）に加算する。これにより、デルタサイズの合計が１８になる。
【０１１２】
ステップＳ８４４では、デルタ行復号部１２１は、デルタサイズ合計ＤＳＳがデルタ制限サイズＤＬＳの１０．５以上であるか否かを判定する。この例では、デルタサイズの合計は１８であり、デルタ制限サイズが１０．５なので（ＹＥＳを意味する）、デルタ行復号部１２１は、処理をステップＳ８４９（図２２参照）に進める。
【０１１３】
図２８は、一実施形態に係るワンライン生成処理の内容を表す概略図である。ステップＳ８９１では、デルタ行復号部１２１は、処理対象のラインが画像中の最初のラインであるか否かを判断する。この例では、処理対象のラインが画像中の最初のラインではないので、デルタ行復号部１２１は、処理をステップＳ８９２に進める。
【０１１４】
ステップＳ８９２では、デルタ行復号部１２１は、現ラインの全てのノードを解放する。ステップＳ８９３では、デルタ行復号部１２１は、ワンライン生成処理を実行する。ワンライン生成処理では、デルタ行復号部１２１は、現ラインの全てのデルタを使用して１ライン分のデータを復号する。ステップＳ８９４では、デルタ行復号部１２１は、１ライン分のデータをこのラインバッファにコピーする。このラインバッファは、ＦＤＲ符号化行データＦＲ１としてＦＤＲ圧縮画像ＦＣＩの一部を構成している。
【０１１５】
図２９は、一実施形態に係るワークバッファ更新処理の内容を表す概略図である。ステップＳ８９５では、デルタ行復号部１２１は、ワークバッファ更新処理を実行する。ワークバッファ更新処理では、デルタ行復号部１２１は、１ライン分のデータを第３符号化行データＲ３の第１デルタＲ３１と第２デルタＲ３２とでワークバッファＷＢを更新し、処理をステップＳ８４１（図２１参照）に戻す。このように、デルタ行復号部１２１は、デルタデータを用いて行ラインの画像データをデコードして画像データを保持することができる。
【０１１６】
図３０は、一実施形態に係る最終ライン生成処理（ステップＳ８２０）の内容を示すフローチャートである。図３１は、一実施形態に係る最終ライン生成処理の内容を表す概略図である。ステップＳ８２１では、デルタ行復号部１２１は、ワンラインバッファ準備処理を実行する。ワンラインバッファ準備処理では、デルタ行復号部１２１は、入力画像データの１ラインバッファサイズと同じサイズのラインバッファを準備する。
【０１１７】
ステップＳ８２２では、デルタ行復号部１２１は、ワークバッファコピー処理を実行する。ワークバッファコピー処理では、デルタ行復号部１２１は、ワークバッファＷＢをラインバッファにコピーする。ステップＳ８２３では、デルタ行復号部１２１は、このラインバッファを最終ラインのリストとして追加する。
【０１１８】
図３２は、一実施形態に係る１８０度回転の画像描画処理（ステップＳ８５０：図１９参照）の内容を表す概略図である。１８０度回転の画像描画処理は、ＦＤＲ符号化行データＦＲ１ａ，ＦＲ２ａ及びＦＲ３ａを逆の順序で選択し、すなわち、ＦＤＲ符号化行データＦＲ３ａ、ＦＤＲ符号化行データＦＲ２ａ、ＦＤＲ符号化行データＦＲ１ａの順序で選択して処理する点で非回転の画像描画処理と相違する。これにより、画像描画部１２２は、第１描画行データＲＤ１ａ乃至第２描画行データＲＤ６ａの順に生成することができる。
【０１１９】
１８０度回転の画像描画処理は、さらに、ＦＤＲ符号化行データＦＲ１ａ，ＦＲ２ａ及びＦＲ３ａのそれぞれの画素の走査を逆方向（反対方向）に実行する点で非回転の画像描画処理と相違する。これにより、画像描画部１２２は、非回転の画像描画処理と同じ処理量で１８０度回転の画像描画処理を実行することができる。
【０１２０】
このように、本実施形態に係る画像形成装置１００は、描画処理装置として機能し、非回転の復号処理と非回転の画像描画処理の処理方向を逆転（反対の方向とする）させるだけで、画像の１８０度回転処理を実行することなく１８０度回転の画像描画処理実現させることができる。
【０１２１】
本発明は、さらに他の中間コードを導入することによってデルタ行圧縮画像データを効率的に処理する。この新しい中間コードは、デルタ行圧縮画像データから技術的に部分的に復号、すなわち予備復号したものである。この部分復号処理は、非効率に圧縮符号化された行データを復号する。非効率に圧縮符号化された行データは、結果として低い圧縮率となっており、復号のための処理能力を消費する。したがって、一実施形態に係る画像形成装置１００によれば、ハードウェア資源を効率的に使用することができる。
【０１２２】
Ｂ．変形例：
本発明は、上記各実施形態だけでなく、以下のような変形例でも実施することができる。
【０１２３】
変形例１：上記実施形態では、デルタ制限として処理する比率を０．２５に設定したが、メモリ領域のサイズやＣＰＵの処理能力を含むハードウェア資源を考慮して、他の値としてもよい。
【０１２４】
変形例２：上記実施形態および変形例では、デルタ制限として処理する比率を予め設定していたが、画像処理用に使用可能なメモリ領域のサイズやＣＰＵの処理能力を含むハードウェア資源に基づいて比率を自動的または半自動的に変更してもよい。
【符号の説明】
【０１２５】
１００  画像形成装置
１１０，２１０  制御部
１２０  画像形成部
１２１  デルタ行復号部
１２２  画像描画部
１２３  画像処理部
１２４  画像出力部
１３０，２３０  操作表示部
１３１，２３１  ディスプレイ
１３２，２３２  操作処理部
１４０，２４０  記憶部
１５０，２５０  通信インターフェース部
２００  パーソナルコンピュータ
２２０  デルタ行符号化部
【図１】
2020203431.tif 000003
【図２】
2020203431.tif 000004
【図３】
2020203431.tif 000005
【図４】
2020203431.tif 000006
【図５】
2020203431.tif 000007
【図６】
2020203431.tif 000008
【図７】
2020203431.tif 000009
【図８】
2020203431.tif 000010
【図９】
2020203431.tif 000011
【図１０】
2020203431.tif 000012
【図１１】
2020203431.tif 000013
【図１２】
2020203431.tif 000014
【図１３】
2020203431.tif 000015
【図１４】
2020203431.tif 000016
【図１５】
2020203431.tif 000017
【図１６】
2020203431.tif 000018
【図１７】
2020203431.tif 000019
【図１８】
2020203431.tif 000020
【図１９】
2020203431.tif 000021
【図２０】
2020203431.tif 000022
【図２１】
2020203431.tif 000023
【図２２】
2020203431.tif 000024
【図２３】
2020203431.tif 000025
【図２４】
2020203431.tif 000026
【図２５】
2020203431.tif 000027
【図２６】
2020203431.tif 000028
【図２７】
2020203431.tif 000029
【図２８】
2020203431.tif 000030
【図２９】
2020203431.tif 000031
【図３０】
2020203431.tif 000032
【図３１】
2020203431.tif 000033
【図３２】
2020203431.tif 000034