(57)【要約】【課題】  中間データ生成時に、第１のビットマップイメージ作成処理を第２のビットマップイメージ作成処理に切り替える場合でも、必要なビットマップメモリを遅延なくワークメモリから取得する。【解決手段】    印刷データから生成される中間データを中間データメモリに格納して処理する画像処理装置において、第１のビットマップを作成する処理を開始した後、ワークメモリのサイズがブロックサイズを超えていると判断した場合、第１のビットマップを作成する処理を第２のビットマップを作成する処理に切り替える場合、第１のビットマップを作成する処理を開始した際に、あらかじめワークメモリからビットマップメモリを使用して、ビットマップを作成する処理を遅延なく開始する構成を特徴とする。【選択図】  図６
2018020536.tif 000002
【特許請求の範囲】
【請求項１】
印刷データから生成される中間データを中間データメモリに格納して処理する画像処理装置であって、
ページ単位の中間データから生成される１バンド分の閉領域データを生成する生成手段と、
前記生成手段が生成した１バンド分の閉領域データを前記中間データメモリに確保されるワークメモリに格納し、
該格納された１バンド分の閉領域データからブロック単位のビットマップイメージを作成する第１の作成手段と、
ページ単位の中間データから生成される１バンド分の閉領域データから１バンド分のビットマップイメージを前記中間データメモリに確保されるワークメモリに展開し、該ワークメモリに展開した１バンド分のビットマップイメージからブロック単位のビットマップイメージを作成する第２の作成手段と、
前記中間データメモリから確保するワークメモリのサイズがブロック変換に使用するブロックサイズを超えているかどうかを判断する判断手段と、
前記判断手段が前記ワークメモリのサイズが前記ブロックサイズを超えていると判断した場合、前記第１の作成手段がビットマップを作成する処理を前記第２の作成手段がビットマップを作成する処理に切り替える制御手段と、
前記第１の作成手段がビットマップを作成する処理を開始する場合、前記ワークメモリに前記第２の作成手段で使用するビットマップメモリをあらかじめ確保するメモリ管理手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記制御手段が前記第１の作成手段がビットマップを作成する処理を前記第２の作成手段がビットマップを作成する処理に切り替えた場合、前記第２の作成手段は、前記メモリ管理手段が確保しているビットマップメモリを使用して１バンド分のビットマップイメージからブロック単位のビットマップイメージを作成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記メモリ管理手段は、前記第１の作成手段がビットマップを作成する処理を開始する場合、前記ワークメモリに前記第２の作成手段で使用するビットマップメモリを各ページ毎に確保することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記メモリ管理手段は、前記第１の作成手段がビットマップを作成する処理を開始する場合、前記ワークメモリに前記第２の作成手段で使用する各ページで共通に使用するビットマップメモリを１つ確保することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記第１の作成手段は、前記ワークメモリに格納された１バンド分の閉領域データから、ブロック単位のビットマップイメージに相当する閉領域データを取得し、該取得された閉領域データから該ブロック単位のビットマップイメージを生成することを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
印刷データから生成される中間データを中間データメモリに格納して処理する画像処理装置の制御方法であって、
ページ単位の中間データから生成される１バンド分の閉領域データを生成する生成工程と、
前記生成工程で生成した１バンド分の閉領域データを前記中間データメモリに確保されるワークメモリに格納し、該格納された１バンド分の閉領域データからブロック単位のビットマップイメージを作成する第１の作成工程と、
ページ単位の中間データから生成される１バンド分の閉領域データから１バンド分のビットマップイメージを前記中間データメモリに確保されるワークメモリに展開し、該ワークメモリに展開した１バンド分のビットマップイメージからブロック単位のビットマップイメージを作成する第２の作成工程と、
前記中間データメモリから確保するワークメモリのサイズがブロック変換に使用するブロックサイズを超えているかどうかを判断する判断工程と、
前記判断工程で前記ワークメモリのサイズが前記ブロックサイズを超えていると判断した場合、前記第１の作成工程がビットマップを作成する処理を前記第２の作成工程がビットマップを作成する処理に切り替える制御工程と、
前記第１の作成工程がビットマップを作成する処理を開始する場合、前記ワークメモリに前記第２の作成工程がビットマップを作成する処理で使用するビットマップメモリをあらかじめ確保するメモリ管理工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項７】
請求項６項に記載の画像処理装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
従来、画像データを処理する画像処理装置において、画像描画処理時、画像データをブロックごとの画像データに変換し、以降の画像処理をブロック単位で並列に行うことで、高速に印刷を行う技術がある。画像データをブロックごとの画像データに変換する処理をブロック順変換処理と呼ぶ。
ブロック順変換処理は、ページライン順に所定のブロック高さ分のデータをワークメモリに入力し、ブロック順に出力する処理である。
特許文献1では、ワークメモリに入力されたラスタライズ前のベクタ形式のデータをブロック分割する方法と、ワークメモリに入りきらない場合にラスタライズ後の画像データをバッファしてブロック分割する方法に切り替える技術を開示している。
図１５の（Ａ）にベクタ形式のブロック順変換900と図１５の（Ｂ）にラスタ形式のブロック順変換910の一例を示す。図１５の（Ａ）のベクタ形式のブロック順変換900は、ベクタデータをブロック901，902毎に分割するため、通常のデータではワークメモリは小さい。しかし、データによっては多くのワークメモリを必要とするため、図１５の（Ｂ）に示すラスタ形式のブロック順変換910に切り替え、バンドメモリ912を確保し、ラスタ化した画像データを分割してブロック毎に出力する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2014−753号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献1のブロック順変換処理を用いた場合、画像データをバッファするメモリを取得する必要がある。このとき、中間データ生成用のメモリや画像データをスプールするためのメモリが空いていない場合は、メモリが解放されるまで待つ必要があり、処理終了までの時間がかかってしまうことになる。
図１６に示す印刷処理フロー1000を用いて具体的に説明する。画像データスプール1011内は既に展開処理1002で展開済みの複数ページの画像データで空きメモリが少ない状態である。そして、中間データスプール（1010）内にも中間データ生成1001で生成済みの複数ページの中間データで空きメモリが少ない状態である。この状態で展開処理1002においてビットマップメモリが必要になっても空きメモリが足りずメモリを取得できないため、メモリが足りず、印刷処理が終了するまで展開処理1002は待つことになる。
【０００５】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、中間データ生成時に、第１のビットマップイメージ作成処理を第２のビットマップイメージ作成処理に切り替える場合でも、必要なビットマップメモリを遅延なくワークメモリから取得できる。
【課題を解決するための手段】
【０００６】
上記目的を達成する本発明の画像処理装置は以下に示す構成を備える。
印刷データから生成される中間データを中間データメモリに格納して処理する画像処理装置であって、ページ単位の中間データから生成される１バンド分の閉領域データを生成する生成手段と、前記生成手段が生成した１バンド分の閉領域データを前記中間データメモリに確保されるワークメモリに格納し、該格納された１バンド分の閉領域データからブロック単位のビットマップイメージを作成する第１の作成手段と、ページ単位の中間データから生成される１バンド分の閉領域データから１バンド分のビットマップイメージを前記中間データメモリに確保されるワークメモリに展開し、該ワークメモリに展開した１バンド分のビットマップイメージからブロック単位のビットマップイメージを作成する第２の作成手段と、前記中間データメモリから確保するワークメモリのサイズがブロック変換に使用するブロックサイズを超えているかどうかを判断する判断手段と、前記判断手段が前記ワークメモリのサイズが前記ブロックサイズを超えていると判断した場合、前記第１の作成手段がビットマップを作成する処理を前記第２の作成手段によるビットマップを作成する処理に切り替える制御手段と、前記第１の作成手段がビットマップを作成する処理を開始する場合、前記ワークメモリに前記第２の作成手段で使用するビットマップメモリをあらかじめ確保するメモリ管理手段と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、中間データ生成時に、第１のビットマップイメージ作成処理を第２のビットマップイメージ作成処理に切り替える場合でも、必要なビットマップメモリを遅延なくワークメモリから取得できる。
【図面の簡単な説明】
【０００８】
【図１】データ処理システムの構成を示す図である。
【図２】画像形成装置のハードウェア構成を示すブロック図である。
【図３】画像形成装置のソフトウェア構成を示す図である。
【図４】画像処理装置の制御方法を示すフローチャートである。
【図５】画像処理装置の制御方法を示すフローチャートである。
【図６】画像処理装置の制御方法を示すフローチャートである。
【図７】画像処理装置の制御方法を示すフローチャートである。
【図８】画像処理装置の制御方法を示すフローチャートである。
【図９】ビットマップメモリ管理情報を示す図である。
【図１０】メモリ上に確保されるビットマップメモリ、中間データを示す図である。
【図１１】画像処理装置の制御方法を示すフローチャートである。
【図１２】画像処理装置の制御方法を示すフローチャートである。
【図１３】メモリ上に確保されるビットマップメモリ、中間データを示す図である。
【図１４】閉領域データの一例を示す図である。
【図１５】画像処理装置におけるブロック描画処理を説明する図である。
【図１６】画像処理装置におけるブロック描画処理を説明する図である。
【発明を実施するための形態】
【０００９】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第1実施形態〕
【００１０】
＜システム構成＞
図１は、本発明の実施形態を示す画像処理装置を含むデータ処理システムの構成を示す図である。本システムでは、画像形成装置101、画像処理装置102がネットワーク103で接続する構成とする。
【００１１】
図１において、ユーザは、画像処理装置102のアプリケーションを使って印刷実行すると、ドライバにより印刷データを生成し、ネットワーク103を介して印刷データを画像形成装置101に送信する。画像形成装置101は、印刷データに基づき印刷を行う。
【００１２】
＜画像形成装置のハードウェア構成＞
図２は、図１に示した画像形成装置101のハードウェア構成を示すブロック図である。
図２において、画像形成装置101は、ＲＯＭ401、ＲＡＭ402、ＣＰＵ403、ＨＤＤ404、ネットワークＩ/Ｆ405、エンジンＩ/Ｆ406、プリンタエンジン407、パネル408、ＲＩＰ409から構成される。
【００１３】
ＲＯＭ401は、不揮発性メモリであり、画像形成装置101の各処理部のプログラムが格納される。ＲＡＭ402は、揮発性メモリであり、電源投入時にＲＯＭ401に格納された各処理部のプログラムが展開される。また、各処理部で高速に読み書きされる情報を格納する一次的な記憶領域になる。ＣＰＵ403は、ＲＡＭ402に展開された各処理部のプログラムを実行する演算プロセッサである。ＨＤＤ404は、大量の情報を格納可能な記憶装置であり、画像処理装置102から送信された印刷データ、各処理部からの出力データである中間データ、画像データを格納する二次的な記憶領域になる。
ネットワークＩ/Ｆ405は、ネットワーク103を介して、画像処理装置102と通信を行う。エンジンＩ/Ｆ406は、各処理部の最終出力データである画像データをビデオデータに変換し、プリンタエンジン407に出力する。プリンタエンジン407は、不図示の印刷プロセスでビデオデータをもとに用紙に印刷する。パネル408は、ユーザからの設定や指示を受け付けるためのユーザインターフェース（ＵＩ）や、処理状況やエラー等のメッセージを表示する。409は、印刷データをもとに生成された中間データから画像データに展開するＲＩＰ（ラスタイメージプロセッサ）である。ＣＰＵ403で実行されるソフトウェア処理、ＲＩＰ409の画像データ展開、エンジンＩ/Ｆ406からのビデオデータ出力は同時に実行することが可能である。
【００１４】
＜画像形成装置のソフトウェア構成＞
図３は、図１に示した画像形成装置101のソフトウェア構成を示す図である。
図３において、201はネットワーク処理部で、ネットワーク103を介して送信された印刷データを受信し、データ管理部202に渡す。202はデータ管理部で、ネットワーク処理部201により受信した印刷データをデータスプール210に格納する。解析処理部203は、データスプール210に格納された印刷データを解析し、中間データ生成部204に中間データの生成を依頼する。中間データ生成部204は、解析処理部203で解析された各コマンドに対し、展開処理部205で処理可能な中間データに変換する。中間データ生成部204は、印刷実行の場合、中間データを生成し、中間データメモリとして構成される中間データスプール211に格納する。
205は展開処理部で、中間データスプール211に格納された中間データを画像データに展開し、画像データを画像データスプール212に格納する。206は印刷処理部で、画像データスプール212に格納された画像データをプリンタエンジン407で印刷する。207はメモリ管理部で、中間データ生成部204で作成された中間データを格納する中間データスプール211を管理する。メモリ管理部207は、中間データ生成部204の要求に従い、中間データスプール211の領域を確保したり、展開処理部205で処理が終了した中間データの格納領域を展開処理部205の指示に従い解放したりする。
【００１５】
210はデータスプールで、ネットワーク処理部201により受信した印刷データを格納する。211は、解析処理部202によって生成された中間データを格納する中間データスプールである。212は画像データスプールで、展開処理部204によって展開された画像データを格納する。データスプール210、中間データ211、画像データスプール212は、データを記憶するためのＲＡＭ402やＨＤＤ404に領域が確保される。
【００１６】
＜印刷処理フロー＞
図４は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、図１に示した画像形成装置101の印刷データの印刷処理例である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。
ネットワーク103を介して印刷デビットマップータをネットワークＩ/Ｆ405から受信すると、解析処理部203はデータスプール210に格納された印刷データをデータ管理部202に要求し、印刷データ内のコマンドを解析する（S1001）。解析処理部203が解析した結果、ページ開始コマンドであると判断した場合（S1002）、メモリ管理部207は、ビットマップメモリの取得要求を行い、ビットマップメモリを確保する（S1003）。
次に、メモリ管理部207は、確保したビットマップメモリのアドレスを中間データに設定する（S1020）。
S1002で、ＮＯと判断された場合、印刷データ内のコマンドが描画コマンドであると解析処理部203が判断した場合（S1004）、中間データ生成部204において、中間データを生成し、メモリ管理部207から確保した中間データスプール211に中間データを格納する（S1005）。
【００１７】
そして、解析処理部203がページ終了のコマンドを検知するまで（S1006）、データ解析処理（S1001）、中間データ生成処理（S1005）を繰り返し実行する。
そして、解析処理部203がページ終了のコマンドを検知すると（S1006）、中間データスプール211に格納された中間データに従って展開処理部205で展開処理を行い、ブロック画像データを画像データスプール212に格納する（S1007）。次に、展開処理部205は、メモリ管理部207にビットマップメモリの解放を依頼する（S1008）。次に、印刷処理部206において画像データスプール212に格納されたブロック画像データに対し所定の画像処理を行い、エンジンＩ/Ｆ406を介してプリンタエンジン407に出力し、印刷を実行する（S1009）。
そして、解析処理部203においてジョブ終了コマンドを検知するまで（S1010）、全ページのデータ解析処理（S1001）から印刷処理（S1009）まで繰り返し実行する。
【００１８】
＜中間データ生成処理フロー＞
図５は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、図４に示したS1005の中間データ生成処理フローの詳細手順である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。
中間データ生成部204は、解析処理部203がページ単位の印刷データから解析した描画オブジェクトからエッジを抽出し（S1101）、エッジと描画オブジェクトを中間データスプール211内に格納する（S1102）。次に、中間データ生成部204は、展開処理で必要なワークメモリのサイズを見積り（S1103）、中間データ生成部204は、中間データスプール211からメモリを取得する（S1104）。また、中間データ生成部204は、S1101で抽出したエッジと描画オブジェクトを格納するメモリを中間データスプール211から取得し（S1105）、中間データ生成部204は、中間データスプール211内に格納して（S1106）、本処理を終了する。
【００１９】
＜展開処理フロー＞
図６は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、図４に示したS1007の展開処理フローの詳細手順である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。また、本実施形態では、第１の作成処理を開始して、所定の閾値(BlockSize)よりも中間データスプール211に確保できるワークメモリサイズ(WorkSize)が大きいと判断した場合は、第１の変換処理であるベクタ方式のブロック変換処理を実行するが、所定の閾値(BlockSize)よりも中間データスプール211に確保できるワークメモリサイズ(WorkSize)が小さいと判断した場合は、第２の作成処理であるライン方式のブロック変換処理を実行するように制御する。
なお、本実施形態において、第１の作成処理とは、展開処理部205がワークメモリに格納された１バンド分の閉領域データから、ブロック単位のビットマップイメージに相当する閉領域データを取得し、該取得された閉領域データから該ブロック単位のビットマップイメージを生成する処理をいう。以下、第１の作成処理と、第２の作成処理について詳述する。
展開処理においては、展開処理部205がバンド毎に全バンドの処理を行い（S1201〜S1220）、展開処理内でさらにブロック毎に分割してバンド内の全ブロックの画像を出力する（S1205〜S1209、S1212〜S1214）。バンド毎の処理において、S1201でバンド数に応じて、最初にバンドの閉領域データの生成を行う（S1202）。具体的には、展開処理部205がページ単位の中間データから生成される１バンド分の閉領域データを生成する。
【００２０】
ここで、図１４を参照してベクタデータである閉領域データの一例を説明する。例えば、ページ内にオブジェクト1・オブジェクト2・オブジェクト3が重なり合うページ１（透過無し）・ページ2（透過有り）を例に説明する。本実施形態において、ベクタデータは、閉領域と呼ばれるオブジェクトの輪郭で区切られた領域を示す情報から構成される。ライン上の閉領域は、区間でもあるから、１バンド分の閉領域データは１バンドを構成するスキャンライン分の区間データとも言える。
【００２１】
そこで、ライン1上の閉領域情報は、閉領域621〜627のように輪郭で区切られた7つの領域から構成される。同様に、ライン2上の閉領域情報も、閉領域631〜637のように輪郭で区切られた7つの領域から構成される。
ベクタデータを構成する各閉領域データは、ライン１，２上の閉領域621〜627、閉領域631〜637の閉領域幅（長さ情報）と閉領域内に含まれるオブジェクトの数を示すオブジェクト個数と、オブジェクト個数が示す閉領域内のオブジェクト情報とで構成される（図１４の閉領域データ1400、1401の一例を参照）。ここで、ライン１の閉領域データ641は、ライン1のベクタデータであり、ライン2の閉領域データ642は、ライン2のベクタデータである。なお、１ライン分の閉領域データのサイズは、その１ライン中に含まれる閉領域の数と、各閉領域に含まれる（寄与する）オブジェクトの数に依存する。
【００２２】
図６の説明に戻り、S1201でバンド数分の処理が開始され、S1202では、展開処理部205が所定のバンド高の閉領域データ（ベクタデータ）の生成処理を行う。続いて、展開処理部205が生成した閉領域データをもとにブロック変換で使用するメモリサイズを算出する（S1203）。
次に、展開処理部205は、S1203で算出したブロック変換のメモリサイズ(BlockSize)が中間データスプール211内に確保された一定のワークメモリサイズ(WorkSize)以下であるかどうかを判断する（S1204）。
ここで、展開処理部205がWorkSize≧BlockSize（ブロックサイズ）であると判断した場合、展開処理部205がベクタ方式のブロック変換（第１の変換処理）を行う（S1206）。
次に、展開処理部205がS1208でブロック変換されたベクタデータをラスタ化し（S1207）、展開処理部205がブロック画像を印刷処理部206に出力する（S1208）。これが、バンド内のブロック数分処理され（S1209）、さらに、バンド数分処理が完了したら（S1220）、展開処理を終了する。
一方、S1204でBlockSizeがWorkSizeより大きいと展開処理部205が判断した場合、展開処理部205が中間データを格納する中間データスプール211内に第１の作成処理を開始する際に、あらかじめワークメモリ上に確保されたビットマップメモリのアドレスを取得する（S1210）。そして、展開処理部205は、ライン方式のブロック変換を実行するため、取得したアドレスを先頭とするビットマップメモリ（中間データスプール211に確保される）にバンドのベクタデータをラスタ化したバンド画像データを展開して格納する（S1211）。次に、バンド内のブロック数分、格納されたバンド画像データをブロックごとに印刷処理部206に出力して（S1212〜S1214）、S1220へ進む。
【００２３】
＜ビットマップメモリ取得フロー＞
図７は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、図４に示したS1003のビットマップメモリ取得フローの詳細手順である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。
【００２４】
まず、中間データスプール211上に確保されるビットマップメモリを管理するビットマップメモリ管理情報の一例について図９を参照して説明する。
図９において、ビットマップメモリ管理情報700は、先頭テーブルＩＤ701、最後尾テーブルＩＤ702、複数のビットマップメモリ管理テーブル707から構成される。先頭テーブルＩＤ701は、メモリ取得中に、中間データスプール211上に最初に取得されたビットマップメモリの情報が登録されているビットマップメモリ管理テーブルのＩＤが設定される。最後尾テーブルＩＤ702は、メモリ取得中で最後に取得されたビットマップメモリの情報が登録されているビットマップメモリ管理テーブルのＩＤが設定される。ビットマップメモリ管理テーブル707は、それぞれビットマップメモリのアドレス704、サイズ705、ページＩＤ706が含まれる。
【００２５】
まず、メモリ管理部207は、ビットマップメモリ取得要求がくると、図９に示すビットマップメモリ管理情報700の最後尾テーブルＩＤ702＋1とテーブル数を比較する（S1301）。ここで、テーブル数とは、ビットマップメモリ管理テーブル707のテーブル数である。
S1301の比較した結果、テーブル数の方が大きいとメモリ管理部207が判断した場合、さらに先頭テーブルＩＤ701と最後尾テーブルＩＤ702＋1とを比較（S1302）し、異なると判断した場合は、メモリ管理部207は、パラメータTableIDに最後尾テーブルＩＤ702＋1を代入する（S1303）。一方、テーブル数以上で、先頭テーブルＩＤ701が1以外（S1304）であるとメモリ管理部207が判断した場合、パラメータTableIDに１を代入する（S1305）。
次に、メモリ管理部207は、ビットマップメモリ管理情報700の最後尾テーブルＩＤ702にパラメータTableIDの値を設定する（S1306）。さらに、メモリ管理部207は、展開処理で出力されるバンドのビットマップメモリサイズを以下の式１により算出する（S1307）。
ビットマップメモリサイズ（BMSize）＝バンド（ブロック画像)の高さ×バンドの幅×channel数（式1）
【００２６】
S1308で、メモリ管理部207は、式1に基づいて算出したBMSize分の空きメモリが中間データスプール211から確保できるか否かを判定（S1308）し、空きメモリを確保できるとメモリ管理部207が判断した場合、中間データスプール211から空きメモリを取得する（S1309）。
次に、メモリ管理部207は、取得した空きメモリの先頭アドレスをパラメータTableIDが示す値番目のビットマップメモリ管理テーブルのアドレス704に設定する（S1310）。次に、メモリ管理部207は、ビットマップメモリを使用するページＩＤ706を設定して（S1311）、本処理を終了する。
【００２７】
＜ビットマップメモリ解放フロー＞
図８は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、図４に示したS1008のビットマップメモリ解放フローの詳細手順である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。
メモリ管理部207は、ビットマップメモリ解放要求がくると、先頭テーブルＩＤ701が示す値番目のビットマップメモリ管理テーブルのアドレス704を参照し、ビットマップメモリを解放する（S1401）。ビットマップメモリ解放が終了すると、メモリ管理部207は、先頭テーブルＩＤ701が示す値番目のテーブルのアドレス704、サイズ705、ページＩＤ706を0に変更し、初期状態に戻す（S1402）。
次に、メモリ管理部207は、先頭テーブルＩＤ701と最後尾テーブルＩＤ702を比較し（S1403）、異なるとメモリ管理部207が判断した場合は、さらに先頭テーブルＩＤ701とテーブル数を比較する（S1404）。ここで、先頭テーブルＩＤ701とテーブル数が異なる（＝最後のテーブル以外）とメモリ管理部207が判断した場合、メモリ管理部207は先頭テーブルＩＤ701に１を足して（S1405）、本処理を終了する。
一方、先頭テーブルＩＤ701とテーブル数が同じ（＝最後のテーブル）であるとメモリ管理部207が判断した場合、先頭テーブルＩＤ701に１を設定して（S1406）、本処理を終了する。
【００２８】
図１０は、ビットマップメモリ管理情報800,810,820と、実際のメモリ、すなわち中間データスプール221上に確保されたビットマップメモリ860〜863、中間データ850〜852を示している。
図１０の(A)において、3ページ目の中間データ852の生成後の状態（ビットマップメモリ管理情報800、中間データスプールメモリ801で、図１０の(B)に示す4ページ目の中間データ853の生成開始後、メモリ管理部207にビットマップメモリ取得要求（図４のS1003）が来るとする。この場合、メモリ管理部207は、中間データスプール211の中間データスプールメモリ811上に4ページ目のビットマップメモリ863と中間データ853を確保（中間データスプールメモリ211（図１０の(B)参照）し、ビットマップメモリ管理情報800の最後部テーブルＩＤ831の3をビットマップメモリ管理情報810の最後部テーブルＩＤ831に示すように4に変更する。
また、4番目のビットマップメモリ管理テーブル845に取得したビットマップメモリのアドレス840、サイズ841、ページＩＤ842を設定する（ビットマップメモリ管理情報810（図１０の(B)参照））。
次に、1ページ目の展開処理（S1007）が終了し、メモリ管理部207にビットマップメモリ解放要求が来るとする（S1008）。
この場合、メモリ管理部207は、図１０の(C)に示すように中間データスプール211の中間データスプールメモリ821上の1ページ目のビットマップイメージを格納するビットマップメモリ860と中間データ850を解放し、ビットマップメモリ管理情報820の先頭テーブルＩＤ830を1から2に変更する。
その際、さらに、メモリ管理部207は、図１０の(A)に示す1番目のビットマップメモリ管理テーブル845に取得したビットマップメモリのアドレス840、サイズ841、ページＩＤ842を0に初期化する（ビットマップメモリ管理情報820(図１０の(C)）。
本実施形態によれば、第１のブロック順変換処理を第２のブロック順変換処理に切り替える際、展開処理時に使用するビットマップメモリ（中間データスプール211上に確保されるワークメモリ）を各ページの中間データを生成する時にあらかじめ確保しておくことで、展開処理時のメモリ空き待ちが発生しないブロック順変換処理を実現することできる。
【００２９】
〔第２実施形態〕
第１実施形態では、中間データ生成時にページ毎にビットマップメモリを確保する場合について説明した。以下、第２実施形態では、第１のタイル変換処理を実行する際に、第２のタイル変換処理に備えてあらかじめ各ページで共通に使用するビットマップメモリを取得し、当該ビットマップメモリの解放情報を管理することにより、最初に確保したビットマップメモリをページ間で共有する例を説明する。
【００３０】
＜ビットマップメモリ取得フロー＞
図１１は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、図４に示したS1003のビットマップメモリ取得フローの詳細手順である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。
メモリ管理部207は、ビットマップメモリ取得の要求がくると、展開処理で出力されるバンドのビットマップメモリサイズを（上述した式1）により算出する（S1501）。
次に、メモリ管理部207は、既に確保されているビットマップメモリがあるかを調べるため、先頭テーブルＩＤ1311が示す値番目のビットマップメモリ管理テーブル1301（図１３）を参照し（S1502、S1503）、アドレス1313が0以外でサイズ1314がBMSize以上かを判定する（S1504）。ここで、アドレス1313が0以外でサイズ1314がBMSize以上であるとメモリ管理部207が判断した場合は、メモリ管理部207は、先頭テーブルＩＤ1311が示す値番目のページＩＤ1315を更新する（S1505）。
【００３１】
一方、S1504の判定で該当しないとメモリ管理部207が判断した場合は、図１３の(A)に示すビットマップメモリ管理情報1300の最後尾テーブルＩＤ1310＋1とテーブル数を比較する（S1510）。この比較した結果、テーブル数の方が大きいとメモリ管理部207が判断した場合、さらに先頭テーブルＩＤ1311と最後尾テーブルＩＤ1310＋１を比較する（S1511）。ここで、メモリ管理部207が先頭テーブルＩＤ1311と最後尾テーブルＩＤ1312＋１とが異なると判断した場合は、メモリ管理部207は、パラメータTableIDに最後尾テーブルＩＤ1312＋1を代入する（S1512）。
一方、テーブル数以上で、先頭テーブルＩＤ1311が１以外（S1513）であるとメモリ管理部207が判断した場合、パラメータTableIDに１を代入する（S1514）。そして、メモリ管理部207は、ビットマップメモリ管理情報1310の最後尾テーブルＩＤ1312にパラメータTableIDが示す値を設定する（S1515）。
次に、メモリ管理部207は、S1501で算出したBMSize分の空きメモリが中間データスプール211の中間データスプールメモリに確保できるか否かを判定し（S1516）、空きメモリを確保できるとメモリ管理部207が判断した場合、中間データスプール211の中間データスプールメモリからBMSize分の空きメモリを取得する（S1517）。
次に、メモリ管理部207は、取得したBMSize分の空きメモリの先頭アドレスをパラメータTableIDが示す値番目のビットマップメモリ管理テーブル1301の先頭アドレス1313に設定する（S1518）。また、メモリ管理部207は、ビットマップメモリ1314を使用するページＩＤ1315を設定して（S1505）、本処理を終了する。
【００３２】
＜ビットマップメモリ解放フロー＞
図１２は、本実施形態を示す画像処理装置の制御方法を示すフローチャートである。本例は、S1008のビットマップメモリ解放フローの詳細手順である。なお、各ステップは、ＣＰＵ403が記憶された制御プログラムを実行することで実現される。なお、以下の説明では、ＣＰＵ403が実行する図３に示したモジュールを主体として説明する。
メモリ管理部207は、ビットマップメモリ解放要求がくると、先頭テーブルＩＤ1311が示す値番目のビットマップメモリ管理情報を参照し（S1601）、ページＩＤ1315と解放ページＩＤを比較する（S1602）。ここで、ページＩＤ1315と解放ページＩＤが同じであるとメモリ管理部207が判断した場合は、先頭テーブルＩＤ1311の１番目のビットマップ管理情報1310のアドレス1313を参照し、ビットマップメモリ1314を解放する（S1603）。
そして、ビットマップメモリ1314の解放が終了すると、メモリ管理部207は、先頭テーブルＩＤ1311が示す値番目のテーブルのアドレス1313、サイズ1314、ページＩＤ1315を0に変更し、初期状態に戻す（S1604）。
【００３３】
次に、メモリ管理部207は、先頭テーブルＩＤ1311と最後尾テーブルＩＤ1312を比較し（S1605）、異なるとメモリ管理部207が判断した場合は、さらに先頭テーブルＩＤ1311が示す値とテーブル数を比較する（S1606）。ここで、先頭テーブルＩＤ1311とテーブル数が異なる（＝最後のテーブル以外）とメモリ管理部207が判断した場合、先頭テーブルＩＤ1311のページＩＤ1315に１を足して（S1607）、本処理を終了する。
一方、先頭テーブルＩＤ1311が示す値とテーブル数が同じ（＝最後のテーブル）であるとメモリ管理部207が判断した場合、先頭テーブルＩＤ1311のページＩＤ1315に１を設定して（S1608）、処理を終了する。
【００３４】
一方、S1602でページＩＤ1315と解放ページＩＤが異なるとメモリ管理部207が判断した場合、メモリ管理部207は、最後尾テーブルＩＤ1312で特定される最後部ＩＤが示す値番目のビットマップメモリ管理情報910を参照し（S1610）、解放ページＩＤと同じページＩＤ1315のビットマップメモリ管理テーブル1301が見つかるまで（S1614）、S1610〜S1614を繰り返し実行する。
そして、解放ページＩＤと同じページＩＤ1315のビットマップメモリ管理テーブル1301が見つかったとメモリ管理部207が判断した場合（S1614）、該当のビットマップメモリ管理テーブル1301のアドレス1313を参照し、ビットマップメモリ1314を解放する（S1615）。
このようにしてビットマップメモリ解放が終了すると、メモリ管理部207は、先頭テーブルＩＤ1311のアドレス1313、サイズ1314、ページＩＤ1315を０に変更し、初期状態に戻す（S1616）。
次に、最後尾テーブルＩＤ1312が示す値とテーブル数を比較し（S1617）、異なるとメモリ管理部207が判断した場合は、さらに最後尾テーブルＩＤ1312のページＩＤ1315が示す値が１であるかを判定する（S1618）。最後尾テーブルＩＤ1312のページＩＤ1315が示す値が１ではない（＝先頭のテーブル以外）とメモリ管理部207が判断した場合、最後尾テーブルＩＤ1312のページＩＤ1315から１を引いて（S1619）、本処理を終了する。
一方、最後尾テーブルＩＤ1312のページＩＤ1315が示す値が１である（＝先頭のテーブル）とメモリ管理部207が判断した場合、最後尾テーブルＩＤ1312にテーブル数を設定して（S1620）、本処理を終了する。
【００３５】
図１３は、ビットマップメモリ管理情報1300、1310と、実際の中間データスプール211上に確保されたビットマップメモリ1314、中間データ1316,1317,1319を示している。
図１３において、３ページ目の中間データ生成後の状態（ビットマップメモリ管理情報800、810）で、１ページ目の中間データ生成後の状態に対応するビットマップメモリ管理情報1300、1310で、2，3，4ページ目の中間データ1317,1318,1319の生成開始後、メモリ管理部207にビットマップメモリ取得要求（S1003）が来るとする。この場合、中間データスプール211上には4ページ目の中間データ1319だけが確保され、メモリ管理部207がビットマップメモリ管理テーブル1301のページＩＤ1315を１→４に更新するだけで、１ページ目に確保されたビットマップメモリ1314をそのまま使えるようになる。
【００３６】
このように、第１の変換処理から第２の変換処理に切り替わる際、第２の変換処理に伴う展開処理時に使用するビットマップメモリを中間データ生成時にあらかじめ確保し、かつ前ページでビットマップメモリが既に確保されているかどうかを判定する。これにより、ビットマップメモリの使用サイズを抑えることができるようになる。
【００３７】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えばＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００３８】
101  画像形成装置
102  画像処理装置
103  ネットワーク
207  メモリ管理部
211  中間データスプール
【図１】
2018020536.tif 000003
【図２】
2018020536.tif 000004
【図３】
2018020536.tif 000005
【図４】
2018020536.tif 000006
【図５】
2018020536.tif 000007
【図６】
2018020536.tif 000008
【図７】
2018020536.tif 000009
【図８】
2018020536.tif 000010
【図９】
2018020536.tif 000011
【図１０】
2018020536.tif 000012
【図１１】
2018020536.tif 000013
【図１２】
2018020536.tif 000014
【図１３】
2018020536.tif 000015
【図１４】
2018020536.tif 000016
【図１５】
2018020536.tif 000017
【図１６】
2018020536.tif 000018