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