(57)【要約】【課題】  記憶領域の使用効率を向上させることができる装置や方法を提供する。【解決手段】  この装置は、複数の画像データを結合する処理を行う情報処理装置であり、複数の画像データを第１の画像データから順に取得する取得手段６０と、取得された第１の画像データの画像情報、または該第１の画像データと次に取得された第２の画像データの画像情報を用いて、複数の画像データを結合して記憶するための記憶領域のサイズを予測する予測手段６１と、予測されたサイズの記憶領域を記憶装置内に確保する確保手段６２と、確保された記憶領域に複数の画像データを結合して記憶させる結合手段６３とを含む。【選択図】  図４
2017054490.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像データを結合する処理を行う情報処理装置であって、
前記複数の画像データを第１の画像データから順に取得する取得手段と、
前記取得手段により取得された前記第１の画像データの画像情報、または該第１の画像データと次に取得された第２の画像データの画像情報を用いて、前記複数の画像データを結合して記憶するための記憶領域のサイズを予測する予測手段と、
前記予測手段により予測されたサイズの記憶領域を記憶装置内に確保する確保手段と、
前記確保手段により確保された前記記憶領域に前記複数の画像データを結合して記憶させる結合手段とを含む、情報処理装置。
【請求項２】
前記画像情報は、画像の短辺と長辺を表す縦横の長さの情報を含み、
前記予測手段は、写真または用紙の短辺と長辺の比である縦横比に基づき、前記縦横の長さの情報を用いて前記記憶領域のサイズを予測する、請求項１に記載の情報処理装置。
【請求項３】
前記用紙の縦横比は、使用する用紙の種類に応じて設定される、請求項２に記載の情報処理装置。
【請求項４】
前記画像情報は、画像の種類を識別するための画像識別情報をさらに含み、
前記予測手段は、前記画像識別情報に応じて、前記縦横比を決定し、決定した該縦横比に基づき、前記記憶領域のサイズを予測する、請求項２または３に記載の情報処理装置。
【請求項５】
前記取得手段により取得された前記画像データの画像情報と、確保された前記記憶領域に記憶された画像データの画像情報とを参照し、前記取得手段により取得された前記画像データを前記記憶領域に記憶された画像データに結合するか否かを判断する判断手段を含む、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記情報処理装置は、前記確保手段により確保された前記記憶領域を、次の複数の画像データを結合する処理に使用する、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記記憶領域に記憶された、結合された画像データを用いて画像形成装置に画像形成処理を実行させるための命令を生成する処理手段と、前記処理手段により生成された前記命令を前記画像形成装置に送信する送信手段とをさらに含む、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
複数の画像データを結合する処理をコンピュータに実行させるためのプログラムであって、
前記複数の画像データを第１の画像データから順に取得するステップと、
取得された前記第１の画像データの画像情報、または該第１の画像データと次に取得された第２の画像データの画像情報を用いて、前記複数の画像データを結合して記憶するための記憶領域のサイズを予測するステップと、
予測されたサイズの記憶領域を記憶装置内に確保するステップと、
確保された前記記憶領域に前記複数の画像データを結合して記憶させるステップとを実行させる、プログラム。
【請求項９】
前記画像情報は、画像の短辺と長辺を表す縦横の長さの情報を含み、
前記予測するステップでは、写真または用紙の短辺と長辺の比である縦横比に基づき、前記縦横の長さの情報を用いて前記記憶領域のサイズを予測する、請求項８に記載のプログラム。
【請求項１０】
前記用紙の縦横比は、使用する用紙の種類に応じて設定される、請求項９に記載のプログラム。
【請求項１１】
前記画像情報は、画像の種類を識別するための画像識別情報をさらに含み、
前記予測するステップでは、前記画像識別情報に応じて、前記縦横比を決定し、決定した該縦横比に基づき、前記記憶領域のサイズを予測する、請求項９または１０に記載のプログラム。
【請求項１２】
取得された前記画像データの画像情報と、確保された前記記憶領域に記憶された画像データの画像情報とを参照し、取得された前記画像データを前記記憶領域に記憶された画像データに結合するか否かを判断するステップをさらに実行させる、請求項８〜１１のいずれか１項に記載のプログラム。
【請求項１３】
前記記憶領域に記憶された、結合された画像データを用いて印刷装置に印刷を実行させるための命令を生成するステップと、生成された前記命令を前記印刷装置に送信するステップとをさらに実行させる、請求項８〜１２のいずれか１項に記載のプログラム。
【請求項１４】
請求項７に記載の情報処理装置と、受信した命令に従って画像形成処理を行う画像形成装置とを含む、画像処理システム。
【請求項１５】
複数の画像データを結合する画像処理方法であって、
前記複数の画像データを第１の画像データから順に取得するステップと、
取得された前記第１の画像データの画像情報、または該第１の画像データと次に取得された第２の画像データの画像情報を用いて、前記複数の画像データを結合して記憶するための記憶領域のサイズを予測するステップと、
予測されたサイズの記憶領域を記憶装置内に確保するステップと、
確保された前記記憶領域に前記複数の画像データを結合して記憶させるステップとを含む、画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像データを結合する処理を行う情報処理装置、その処理をコンピュータに実行させるためのプログラム、画像処理方法および該情報処理装置を含む画像処理システムに関する。
【背景技術】
【０００２】
アプリケーションやOSが、データサイズが大きい画像データを複数に分割した場合、画像データを行（列）単位で比較し、重なりがあるかを判断し、分割前の画像データに再構築する技術が知られている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記の技術では、分割前の画像データの画像サイズが分からないため、分割された画像を結合していく際に確保した記憶領域（メモリ）が不足した場合、別の領域を確保し直さなければならない。これでは、メモリの二重取りが発生し、メモリの使用効率が低いという問題があった。
【０００４】
そこで、画像データを結合していく際のメモリの二重取りの発生を防止し、メモリの使用効率を向上させることができる装置や方法等の提供が望まれている。
【課題を解決するための手段】
【０００５】
本発明は、上記課題に鑑みなされたものであり、複数の画像データを結合する処理を行う情報処理装置であって、複数の画像データを第１の画像データから順に取得する取得手段と、取得された第１の画像データの画像情報、または該第１の画像データと次に取得された第２の画像データの画像情報を用いて、複数の画像データを結合して記憶するための記憶領域のサイズを予測する予測手段と、予測されたサイズの記憶領域を記憶装置内に確保する確保手段と、確保された記憶領域に複数の画像データを結合して記憶させる結合手段とを含む、情報処理装置が提供される。
【発明の効果】
【０００６】
本発明によれば、記憶領域（メモリ）の使用効率を向上させることができる。
【図面の簡単な説明】
【０００７】
【図１】本実施形態の画像処理システムの構成例を示した図。
【図２】画像処理システムが備える情報処理装置のハードウェア構成を示した図。
【図３】情報処理装置のソフトウェア構成を示した図。
【図４】情報処理装置の機能ブロック図。
【図５】画像データを分割し、結合して印刷出力するまでの全体の処理の概略を説明する図。
【図６】分割された画像データを結合する処理の概要を説明する図。
【図７】情報処理装置において実施される処理の流れを示したフローチャート。
【図８】分割された画像データを結合する処理の処理例を示した図。
【図９】分割された画像データを結合する処理の具体例を示した図。
【発明を実施するための形態】
【０００８】
図１は、本実施形態の画像処理システムの構成例を示した図である。画像処理システムは、画像データを作成し、その画像データに対する画像形成の指示を受けて描画処理を行い、画像形成処理を実行させるための命令（コマンド）を生成し、そのコマンドに従って画像形成処理を行うシステムである。このため、画像処理システムは、画像データの作成、描画処理、コマンドの生成を行う情報処理装置と、コマンドに従って画像形成処理を行う画像形成装置とを含んで構成される。
【０００９】
図１では、情報処理装置は、PC１０とされ、画像形成装置は、印刷装置１１とされている。印刷装置１１は、プリンタであってもよいし、印刷機能以外にスキャナ機能やファックス送受信機能等を備えるMFP(Multi-Function Peripheral)であってもよい。プリンタは、電子写真方式のプリンタであってもよいし、インクジェット方式のプリンタであってもよい。以下、情報処理装置をPC１０とし、画像形成装置を印刷装置１１として説明するが、情報処理装置は、PC１０以外のタブレット端末、ワークステーション、スマートフォン等であってもよい。画像形成装置は、コピー機やファックス装置等であってもよい。
【００１０】
PC１０と印刷装置１１とは、直接ケーブルにより接続されていてもよいが、図１に示すようにネットワーク１２を介して接続されていてもよい。ネットワーク１２は、LAN(Local Area Network)であってもよいし、WAN(Wide Area Network)であってもよいし、インターネットであってもよい。また、ネットワーク１２は、有線ネットワークであってもよいし、無線LAN等の無線ネットワークであってもよい。ネットワーク１２は、１つのネットワークに限られるものではなく、ルータやプロキシサーバ等の中継装置を使用して接続された２以上のネットワークから構成されていてもよい。２以上のネットワークから構成され、それが有線ネットワークと無線ネットワークとを含んで構成される場合、有線ネットワークにはアクセスポイントを介して接続することができる。
【００１１】
PC１０は、ユーザからの情報の入力により画像データを作成し、ユーザからの印刷指示を受けて、記憶装置内の記憶領域（メモリ）を確保し、確保したメモリを使用して描画処理を行う。そして、PC１０は、描画処理されたデータを変換して印刷コマンドを生成し、その印刷コマンドを印刷装置１１に、ネットワーク１２を介して送信する。印刷装置１１は、受信した印刷コマンドを解釈し、その内容に従って、用紙等の印刷媒体に対して印刷を実行する。
【００１２】
PC１０は、上記の処理を実行するために、図２に示すハードウェアを備える。PC１０は、そのハードウェアとして、CPU２０と、ROM２１と、RAM２２と、HDD２３と、通信I/F２４と、入出力I/F２５と、入力装置２６と、表示装置２７とを備える。CPU２０、ROM２１、RAM２２、HDD２３、通信I/F２４、入出力I/F２５は、互いに情報等のやりとりを行うためにバス２８に接続される。
【００１３】
CPU２０は、PC１０全体の制御を行う演算処理装置で、後述するアプリケーション、OS、プリンタドライバ等を実行する。ROM２１は、PC１０を起動させるためのブートプログラムやファームウェア等を記憶する不揮発性の記憶装置である。RAM２２は、CPU２０に対して作業領域を提供し、上記のメモリとして使用される揮発性の記憶装置である。HDD２３は、アプリケーション、OS、プリンタドライバ、各種のデータ等を記憶する不揮発性の記憶装置である。HDD２３も、上記のメモリとして利用することができる。なお、アプリケーション等を記憶する記憶装置は、HDD２３に限られるものではなく、SSD(Solid State Drive)等の他の記憶装置を利用することもできる。
【００１４】
通信I/F２４は、PC１０をネットワーク１２に接続し、ネットワーク１２を介した通信を可能にする。入出力I/F２５は、入力装置２６から入力された情報を、バス２８を介してCPU２０等に提供し、表示すべき情報を表示装置２７に出力する制御を行う。入力装置２６は、キーボードやマウス等とされ、ユーザが入力した情報を受け付ける。表示装置２７は、CRT(Cathode Ray Tube)、液晶ディスプレイ、有機ELディスプレイ等とされ、作成した画像データの内容、印刷設定画面、エラー画面等の表示すべき情報を表示する。
【００１５】
印刷装置１１については詳述しないが、ハードウェアとして、CPU、ROM、RAM、HDD等を含むコントローラと、印刷を実行するプリンタエンジンと、ネットワーク１２に接続するための通信I/Fとを含んで構成される。プリンタエンジンは、電子写真方式であれば、露光装置、感光体ドラム、現像装置、転写装置、定着装置等を備え、インクジェット方式であれば、インクタンク、ポンプ、吐出ヘッド等を備えることができる。
【００１６】
PC１０に実装される上記の処理を実現するためのソフトウェアについて、図３を参照して説明する。PC１０は、ソフトウェアとして、アプリケーション３０、OS３１、プリンタドライバ３２を備える。アプリケーション３０は、画像データを作成し、ユーザからの印刷指示を受けてOS３１に対して印刷処理を要求する。OS３１は、アプリケーション３０やプリンタドライバ３２が共通して利用する基本的な機能を提供する。このため、アプリケーション３０やプリンタドライバ３２は、OS３１による制御の下で実行される。
【００１７】
プリンタドライバ３２は、メモリの確保、画像の結合、描画処理、印刷コマンドの生成、印刷コマンドの送信等を行う。このため、プリンタドライバ３２は、描画処理モジュール４０、UIモジュール４１、イメージ結合モジュール４２、メモリ取得モジュール４３、イメージ識別モジュール４４を含んで構成される。
【００１８】
描画処理モジュール４０は、OS３１から画像データを印刷データとして取得し、その印刷データを描画処理し、描画処理されたデータを変換し、印刷装置１１が解釈可能な印刷コマンドを生成するモジュールである。UIモジュール４１は、アプリケーション３０やOS３１に対して印刷装置１１が備える機能のリストを通知し、UIを提供してユーザとのやりとりを実現するためのモジュールである。
【００１９】
アプリケーション３０やOS３１は、サイズが大きい画像の画像データを扱う場合、メモリの制約等から画像データを複数に分割することがある。このように複数に分割された画像データは、描画処理モジュール４０が受け取り、イメージ結合モジュール４２を介してイメージ識別モジュール４４に渡される。イメージ識別モジュール４４は、複数に分割された画像データを１つずつ受け取り、画像データを解析し、その画像データを結合すべきか否か判断する。
【００２０】
イメージ結合モジュール４２は、イメージ識別モジュール４４が結合すべきと判断した画像データを結合するため、結合した画像を保存するためのメモリの取得を、メモリ取得モジュール４３に対して指示する。メモリ取得モジュール４３は、イメージ結合モジュール４２の指示に従って、メモリ３３の所定サイズの領域を確保し、その領域を取得する。そして、メモリ取得モジュール４３は、取得した領域をイメージ結合モジュール４２に通知する。イメージ結合モジュール４２は、メモリ取得モジュール４３が取得したメモリ３３の所定サイズの領域を使用し、結合すべきと判断された画像データを結合する処理を行う。
【００２１】
描画処理モジュール４０は、画像データを描画処理し、描画処理したデータをイメージ結合モジュール４２に渡し、結合処理を実行させることができる。描画処理モジュール４０は、イメージ結合モジュール４２が結合したデータを受け取り、そのデータを変換して印刷コマンドを生成し、通信ポート３４を介して印刷装置１１へ送信する。通信ポート３４は、図２に示す通信I/F２４により提供されるUSBポートやLANポート等である。なお、通信ポート３４は、印刷装置１１が備える通信ポート５０と接続される。
【００２２】
このプリンタドライバ３２により実現される機能の機能ブロックを図４に示す。プリンタドライバ３２は、PC１０に実装され、PC１０により実行されて上記の機能が実現されるため、PC１０がこれらの機能を備えるものとみることができる。PC１０は、その機能を実現するための機能手段として、取得手段６０、予測手段６１、確保手段６２、結合手段６３を少なくとも含む。PC１０は、そのほか、判断手段６４、処理手段６５、送信手段６６を備えることができる。
【００２３】
取得手段６０は、図３に示すプリンタドライバ３２の描画処理モジュール４０により実現され、OS３１から印刷データを取得する。印刷データは、画像データのほか、テキストデータ等を含んでいてもよい。取得手段６０は、取得した印刷データを判断手段６４に渡す。判断手段６４は、イメージ識別モジュール４４により実現され、印刷データが画像データかどうかを判断し、画像データである場合、その画像データが結合する最初の画像データかどうかを判断する。最初の画像データかどうかは、メモリに既に保存されている画像データと連続性を有する（繋がりがある）画像データかどうかにより判断することができる。したがって、メモリに記憶されている画像データがない場合は、最初の画像データであり、また、メモリに記憶されている画像データがあったとしても、その記憶されている画像データと連続性を有しない画像データは、最初の画像データである。
【００２４】
予測手段６１は、イメージ識別モジュール４４により実現され、最初の画像データの画像情報、または最初の画像データと次に取得された画像データの画像情報を用いて、複数の画像データを結合して保存するためのメモリサイズを予測する。画像情報は、具体的には画像の短辺と長辺を表す縦横の長さの情報、すなわちその長さの比（縦横比）、画像の種類を識別するための画像識別情報等である。これらの情報を用いてメモリサイズを計算することにより、取得すべきメモリサイズを予測することができる。なお、メモリサイズの計算方法については後述する。
【００２５】
予測手段６１は、予測したメモリサイズを確保手段６２に通知する。確保手段６２は、メモリ取得モジュール４３により実現され、通知されたメモリサイズのメモリを記憶装置内に確保する。記憶装置は、RAMやHDD等である。結合手段６３は、イメージ結合モジュール４２により実現され、確保されたメモリを使用し、そのメモリ上に画像データをコピーして結合する。画像データの結合は、例えば画像を構成する画素の座標を用いて行うことができる。結合手段６３は、結合する画像データがなくなるまで結合処理を行い、全て結合したところで、処理手段６５に対して結合した画像データの処理を依頼する。
【００２６】
処理手段６５は、描画処理モジュール４０により実現され、結合手段６３からの処理の依頼を受け、結合した画像データを変換し、印刷装置１１が解釈可能な印刷コマンドを生成する。そして、処理手段６５は、その印刷コマンドの送信を送信手段６６に依頼する。送信手段６６は、描画処理モジュール４０および通信ポート３４により実現され、処理手段６５からの依頼を受け、印刷装置１１にその印刷コマンドを送信する。
【００２７】
ここで、図５を参照して、画像データを分割し、結合して印刷出力するまでの全体の処理の概略を説明する。ユーザは、PC１０上でアプリケーション３０を起動させ、図５に示すような画像データ７０を表示させ、印刷を指示する。画像データ７０は、写真データ等で、スキャナ装置で読み取ったデータであってもよいし、デジタルカメラで撮像したデータであってもよい。また、アプリケーション３０を使用して一部を加工したものであってもよい。デジタルカメラで撮像した写真データは、縦横の画素（ピクセル）が４０００を超えるものもあり、その場合、データサイズは数MBにもなる。すると、ユーザがアプリケーション３０に対して印刷を要求した場合、アプリケーション３０が画像データ７０を複数に分割し、分割した複数の画像データを送信して印刷を指示することがある。
【００２８】
図５に示す例では、アプリケーション３０において画像データ７０が３つに分割されている。なお、この分割処理は、ユーザに意識させず、内部処理として実施される。３つに分割された各画像データ７０ａ、７０ｂ、７０ｃは、印刷処理のためにOS３１に渡される。OS３１は、アプリケーション３０が１つの画像を３つに分割して出力していることは知らないので、各画像データ７０ａ、７０ｂ、７０ｃを独立した画像データとして印刷処理を行う。したがって、OS３１からは、画像データ７０ａ、７０ｂ、７０ｃは、それぞれが関連のないデータである。
【００２９】
OS３１は、印刷処理のために、画像データ７０ａ、７０ｂ、７０ｃをプリンタドライバ３２に渡す。図５（ａ）に示す一般のプリンタドライバであれば、各画像データ７０ａ、７０ｂ、７０ｃを、別個に描画処理を行い、印刷コマンドに変換して、印刷装置１１に送信する。印刷装置１１は、印刷コマンドを取得した順番で用紙上に印刷して出力する。
【００３０】
これに対し、図３に示すプリンタドライバ３２を使用した場合、図５（ｂ）に示すように、画像データにおける画像の幅（横）や高さ（縦）のサイズ（長さ）、変倍率、画像フォーマット（画像形式）、描画先の座標等から、画像データの連続姓を解析する。すなわち、繋がりがある画像であるかを判断する。ここで、連続性があると判断した場合、プリンタドライバ３２においてメモリを確保し、画像データ７０ａ、７０ｂ、７０ｃの結合処理を行う。画像データの結合処理が終了すると、印刷コマンドを生成し、印刷装置１１にその印刷コマンドを送信する。印刷装置１１は、印刷コマンドに従って用紙上に印刷して出力する。
【００３１】
図６を参照して、図５（ｂ）に示した画像データの結合処理の概要を説明する。取得手段６０は、アプリケーション３０が複数に分割した画像データを、１つずつOS３１から印刷データとして取得する。図６に示す例では、分割した画像データの１つを、イメージ１として取得している。判断手段６４は、以前に画像データをメモリに保存したかどうかを確認する。保存しておらず、最初の画像データである場合は、イメージ１をメモリに保存し、処理をOS３１に戻す。このように、アプリケーション３０から送出される画像データに対してプリンタドライバ３２が処理を行うためには、画像データを一度メモリに書き込む必要がある。
【００３２】
処理をOS３１に戻すと、OS３１から次の印刷データを取得する。ここでは、次の印刷データも分割した画像データの１つであり、イメージ２として取得している。既にメモリにはイメージ１が保存されているので、判断手段６４は、既に保存されているイメージ１と今回取得したイメージ２との連続性を解析する。連続性は、画像のサイズ、画像形式、描画先の座標等を参照し、繋がりがあるかどうかにより、その有無を判断することができる。連続性があると判断すると、予測手段６１に通知し、予測手段６１が保存用のメモリサイズを予測する。このメモリサイズは、通常はプリンタドライバ３２内で設定した固定値のみであるが、ここでは画像のサイズ等から予測して算出される。
【００３３】
予測手段６１は、予測したメモリサイズを確保手段６２に通知し、確保手段６２がそのサイズのメモリを確保する。確保手段６２は、メモリ確保の際、メモリにおける連続したメモリ領域を確保する。詳細には、確保手段６２は、イメージ１を書き込んだメモリ領域に連続し、そのメモリ領域を含む領域のサイズが上記の予測したメモリサイズになるように、メモリ領域を確保する。確保手段６２は、メモリを取得した旨を結合手段６３に通知し、結合手段６３は、それを受けて、確保されたメモリ（連続したメモリ領域）上にイメージ１とイメージ２をコピーし、イメージ１とイメージ２を結合する。これにより、イメージ１とイメージ２は、メモリ上に結合して保存される。なお、イメージ１は、既に書き込まれているので、読み出してコピーする必要はなく、イメージ２のみをコピーし、結合してもよい。
【００３４】
結合手段６３は、結合処理が終了した後、判断手段６４に終了した旨を通知し、判断手段６４が、処理をOS３１に戻す。処理をOS３１に戻すと、OS３１から次の印刷データを取得する。ここでは、次の印刷データも分割した画像データの１つであり、イメージ３として取得している。判断手段６４は、上記と同様にして連続性を解析し、連続性があると判断した場合、上記で既にメモリを確保しているので、結合手段６３に対してイメージ３の結合処理を依頼する。結合手段６３は、確保手段６２により確保されたメモリにイメージ１、イメージ２に続くようにイメージ３をコピーし、結合する。そして、同様にしてOS３１に処理を戻す。
【００３５】
OS３１から取得した印刷データが画像データでない場合や、画像データであってもイメージ１〜３と連続性がない場合は、処理手段６５がメモリに保存された、結合された画像データを取得する。処理手段６５は、その結合された画像データを変換して印刷コマンドを生成し、送信手段６６に送信を依頼する。送信手段６６は、その依頼を受けて、印刷装置１１に印刷コマンドを送信して印刷を実行させる。送信手段６６は、印刷コマンドを送信すると、送信した旨を確保手段６２に通知し、確保手段６２は、その通知を受けて、取得したメモリを開放する。
【００３６】
仮に、アプリケーション３０により分割されていると考えられる画像データが最初に送出されてきた際に画像サイズを予測して連続したメモリ領域を確保しないものとすると、現在確保している領域の次の領域に他のアプリケーション等からのデータの書き込みがあった場合、連続する画像データがアプリケーション３０から送出されてきても、上記の確保している領域に連続する次の領域にメモリ領域を確保することはできない。すると、他の領域に既に書き込まれている画像データと送出されてきた連続する画像データとを保存可能な充分なメモリ領域を新たに確保し、既に書き込まれているデータをその新たに確保した領域にコピーした上で、その新たに確保した領域へデータを書き込む必要があり、余分な処理が発生する。これに対し、上記のように画像サイズを予測して連続したメモリ領域を確保することで、このような余分な処理の発生をなくすことができる。
【００３７】
図７に示すフローチャートを参照して、PC１０が実行する処理の流れを詳細に説明する。ユーザからアプリケーション３０に対して印刷が指示されたことを受けて、ステップ７００からこの処理を開始する。ユーザは、起動するアプリケーション３０上で印刷開始ボタンを押下する等して、印刷を指示する。アプリケーション３０は、その印刷指示を受けて、OS３１に対して印刷処理を要求する。その際、アプリケーション３０は、大きい画像を扱う場合、画像を複数に分割することがある。OS３１は、アプリケーション３０から印刷要求を受け、印刷処理を開始する。
【００３８】
ステップ７０１では、取得手段６０が、OS３１から印刷データを取得する。ステップ７０２では、判断手段６４が、印刷データが写真等の画像データであるかどうかを判断する。画像データかどうかは、例えばデータのサイズやフォーマット等から判断することができる。取得した印刷データが画像データであった場合、ステップ７０３へ進み、以前に画像データをメモリに保存しているかどうかを判断する。保存していない場合、ステップ７０４へ進み、その画像データをメモリに保存し、処理をOS３１に戻す。ステップ７０３でメモリに保存している場合、ステップ７０５へ進み、その保存された画像データと今回OS３１から取得された画像データの連続性を解析する。
【００３９】
ここでは、メモリ取得の効率化のため、画像データに連続性があると確定してから結合用のメモリを取得するようにしているが、最初の画像データを取得したときに、その画像データのみで結合後のデータサイズを予測してもよい。
【００４０】
ステップ７０６では、連続性を解析した結果に基づき、これら２つの画像データが結合可能かどうかを判断する。連続性があり、結合可能である場合、ステップ７０７へ進み、画像の種類の１つである自然画像かどうかを判断する。すなわち、画像データがデジタルカメラ等で撮像された自然画像か、別の種類の図形等から作成された人工画像かを判断する。なお、写真である場合、さらに風景画（ランドスケープ）か人物画（ポートレート）かの判断も行う。自然画像である場合、ステップ７０８へ進み、人工画像である場合、ステップ７０９へ進む。
【００４１】
ステップ７０８では、画像が自然画像である場合、写真である可能性が高いため、予測手段６１が、短辺：長辺が２：３や３：４といった写真データの縦横比に決定し、その縦横比に基づき、保存に必要なメモリサイズを予測する。結合した元の画像は、その縦横比になると予測できるからである。必要なサイズは、取得する画像データにおける画像のサイズや画像形式、上記の風景画か人物画かにより予測する。
【００４２】
予測手段６１は、例えば、風景画であればランドスケープ（横長の画像）で、縦：横を２：３または３：４の比率の画像と判断し、人物画であればポートレート（縦長の画像）で、縦：横を３：２または４：３の比率の画像と判断することができる。この判断により縦横比を決定すると、現在取得している画像サイズが同じとき、人物画は、風景画に比較して確保すべきメモリ領域が大きくなる。
【００４３】
人物画と判断しても、その画像がどの程度縦長の画像であるかは分からない。そこで、上記のうちの最も大きいメモリ領域を確保することとなる縦：横が３：２の比率の画像と推測する等、自然画像の場合に固定の縦横比でメモリ領域の確保を行ってもよい。このように、メモリが足りなくなることを想定し、ポートレートと想定し、最も大きいメモリサイズを予測することが望ましい。しかしながら、上記のランドスケープかポートレートかの判断でランドスケープと判断された場合は、ランドスケープ画像としてメモリサイズを予測することができる。
【００４４】
写真データとしては、デジタルカメラで撮像されたもののほか、ファックス装置で受信したものや、スキャナ装置で読み込まれたものも存在する。ファックス装置で受信したデータやスキャナ装置で読み込まれたデータの場合、上記の写真データの縦横比ではなく、汎用の用紙サイズの縦横比で見積もることもできる。用紙の縦横比は、用紙の種類、すなわちA版、B版、Letter等によって異なるため、その用紙を使用する国等によって適宜変更することができる。なお、スキャナ装置で読み込まれたデータか否かは、画像解析において画像データにおける画像に余白が存在するか否か等により判断することができる。
【００４５】
ステップ７０９では、画像が人工画像である場合、画像の縦横比が任意に設定される可能性が高いため、プリンタドライバ３２が規定したメモリサイズ（固定サイズ）を取得用のメモリサイズとして予測することができる。ステップ７１０では、確保手段６２が、ステップ７０８またはステップ７０９で予測されたメモリサイズのメモリ、すなわちメモリにおける連続したメモリ領域を確保する。そして、ステップ７１１で、結合手段６３が、保存した画像データとOS３１から取得した画像データとを、取得したメモリにコピーし、これら画像データを結合する。
【００４６】
画像データの結合が終了すると、今回取得した画像データに関する処理は終了し、ステップ７０１へ戻り、OS３１からの次の印刷データを待つ。次の印刷データを取得し、取得した印刷データが画像データである場合、ステップ７０２以降の処理を繰り返す。
【００４７】
ステップ７０６で２つの画像データを結合することができないと判断された場合、ステップ７１２へ進み、処理手段６５が、メモリに保存されている画像データを変換して印刷コマンドを生成する。メモリに保存されている画像データは、独立した画像データと考えられるからである。そして、ステップ７１３で、送信手段６６が、その印刷コマンドを印刷装置１１に送信する。ステップ７１４では、確保手段６２が、保存されている画像に対して取得したメモリを開放し、ステップ７１５において、判断手段６４が、今回取得した画像データを開放したメモリに保存する。すなわち、メモリを再利用する。メモリに保存したところで、ステップ７０１へ戻り、OS３１からの印刷データを待つ。
【００４８】
ステップ７０２で取得した印刷データが画像データではない場合、例えばテキストデータ等の場合、ステップ７１６へ進み、メモリに保存されている画像データが存在するかを判断する。保存されている場合は、ステップ７１７へ進み、処理手段６５が、保存されている画像データを変換して印刷コマンドを生成する。そして、ステップ７１８で、送信手段６６が、その印刷コマンドを印刷装置１１に送信する。ステップ７１９では、確保手段６２が、保存されている画像データに対して取得したメモリを開放する。
【００４９】
ステップ７１６において保存されている画像データが存在しない場合や、ステップ７１９でメモリを開放した後、ステップ７２０で、処理手段６５が、今回取得した画像データではない印刷データを変換して印刷コマンドを生成する。そして、ステップ７２１で、送信手段６６が、その印刷コマンドを印刷装置１１に送信する。
【００５０】
ステップ７２２では、判断手段６４が、印刷データの最終ページの印刷コマンドを送信したかを判断する。最終ページか否かは、これまでに送信した印刷コマンドの数と、印刷要求により与えられる全ページ数とが一致するかどうかに判断することができる。最終ページではないと判断した場合、ステップ７０１へ戻り、取得手段６０が、OS３１から次の印刷データを取得する。最終ページと判断した場合、ステップ７２３へ進み、処理手段６５が、排紙先を指定する排紙コマンドを生成し、送信手段６６が、その排紙コマンドを印刷装置１１に送信する。排紙コマンドを送信したところで、ステップ７２４へ進み、この処理を終了する。
【００５１】
図８を参照して、複数に分割された画像データを結合する処理について詳細に説明する。アプリケーション３０は、画像データを３つに分割し、プリンタドライバ３２は、OS３１から分割された各画像データとしてイメージ１〜イメージ３を順に取得するものとする。プリンタドライバ３２は、イメージ１とイメージ２を取得したとき、最終的に画像がどの程度の大きさになるかを予測する。
【００５２】
ここでは、画像データを写真データとし、図８（ａ）に示すように、高さが最も高くなるように縦横比を２：３で予測し、保存するメモリを確保する。確保できたら、イメージ１とイメージ２をメモリにコピーし、それらを結合する。そして、残りのイメージ３をメモリにコピーし、さらに結合する。図８（ａ）では、メモリに余りが生じているが、プリンタドライバ３２に規定されているメモリサイズより小さいので、メモリの使用効率を向上させることができる。
【００５３】
上記の写真データが画像判別によりランドスケープと判断した場合、図８（ｂ）に示すように、ランドスケープ用の縦横比３：２でメモリサイズを予測し、保存するメモリを確保することができる。この場合も同様に、メモリを確保できたら、イメージ１とイメージ２をメモリにコピーし、それらを結合する。そして、残りのイメージ３をメモリにコピーし、さらに結合する。イメージはイメージ３までであるので、確保したメモリサイズと結合した画像データのサイズが同一であり、理想的である。イメージ４がある場合、確保したメモリサイズではイメージ４を結合することができないので、別途そのサイズより大きいメモリを確保し、そこにイメージ１〜イメージ３をコピーし、それに続けてイメージ４をコピーして結合する。イメージ５以降がある場合も同様にして、結合できればそのメモリにコピーして結合し、結合できなければ別途メモリを確保する。
【００５４】
イメージ１〜イメージ３は、逆順で結合されるような場合でも、図８（ｃ）に示すように、メモリの逆から順にコピーして結合していくので、処理上の不都合は発生しない。
【００５５】
イメージ１〜イメージ３の幅は上記と同じ幅であるが、高さが高いイメージである場合、イメージ１とイメージ２の結合により、縦横比３：２に対し、高さがそれ以上になることがある。その場合は、ランドスケープであっても、ポートレートと判断し、図８（ｄ）に示すように、縦横比２：３でメモリサイズを予測し、そのサイズのメモリを確保することができる。メモリを確保できたら、イメージ１とイメージ２をコピーして結合し、イメージ３をさらにコピーして結合する。
【００５６】
図８に示した例では、縦方向の画像の結合処理に関して記載したが、縦長の画像の横方向の結合でも、左から右へ、もしくは右から左へ、上記と同様の方法により結合処理を行うことができる。
【００５７】
これまでは、画像データの結合処理を概念的に説明してきたが、図９を参照し、数値を使用して具体的に説明する。アプリケーション３０は、画像データを複数に分割し、OS３１に処理を指示する。取得手段６０は、OS３１から印刷データを取得する。ここでは、印刷データが画像データで、イメージ１として取得している。この取得したイメージ１は、画像の幅が3000pixel、高さが500pixel、画像形式が24bit/pixelであるものとする。画像形式が24bit/pixelであるので、フルカラー画像であり、各画素は、３バイトのデータを持っている。したがって、このイメージ１のデータサイズは、3000×500×3=4500000バイトである。また、イメージ１は、印刷装置１１では座標(0,0)から幅3000pixel、高さ500pixelで描画されるように規定されている。
【００５８】
取得手段６０は、続いてOS３１から次の印刷データを取得する。ここでは、印刷データが画像データで、イメージ２として取得している。このイメージ２も、イメージ１と同様、画像の幅が3000pixel、高さが500pixel、画像形式が24bit/pixelであるものとする。したがって、イメージ２も、フルカラー画像で、データサイズが4500000バイトである。ただし、イメージ２は、印刷装置１１で座標(0,500)から幅3000pixel、高さ500pixelで描画されるように規定されている。
【００５９】
判断手段６４は、これらの情報からイメージ１とイメージ２が連続性を有するかどうかを判断する。これら２つの画像データは、画像の幅が同じで、描画先で縦方向に連続して描画され、画像形式が同じ24bit/pixelであることから、連続性があると判断する。次に、イメージ１およびイメージ２を調査し、どのような画像であるかを判断する。例えば、イメージ１およびイメージ２が画像の大半を青色で占められ、人工的なべた塗り領域がないとする。これらの情報を画像識別情報とし、この画像識別情報から自然画像で、風景画であると判断することができる。このため、写真の方向は、縦横比が３：２のランドスケープと推測することができる。
【００６０】
したがって、画像中に人物が存在し、人工的なべた塗り領域がない場合は、自然画像で、人物画であると判断することができる。人物が存在するか否かは、これまでに知られた顔認識等の技術を使用して判断することができる。
【００６１】
予測手段６１は、これらの結果から、最終的な写真がどのようなサイズの画像になるかを予測する。この例では、写真画像としては最も縦横比が小さい３：２で予測し、縦方向に結合され、その幅が3000pixelであることから、その高さは、3000/3×2=2000pixelと算出される。したがって、必要なメモリは、3000×2000×3=18000000バイトということになる。このように予測したサイズのメモリ、すなわち18000000バイト分のメモリを確保する。
【００６２】
この確保したメモリにイメージ１とイメージ２を続けてコピーし、これらを結合する。これらのコピーにより、メモリは、18000000バイトのうち、3000×1000×3=9000000バイト分が埋められる。これにイメージ３、イメージ４という結合可能な同じサイズのデータが取得されれば、この取得したメモリに順次コピーし、結合していく。このようにして、イメージ１〜イメージ４を結合すると、最終的に18000000バイトのデータとなる。
【００６３】
画像データがランドスケープの写真サイズのデータであれば、上記のようにメモリに余りがないため、メモリは最も良い効率で使用されたことになる。メモリ上で結合されたデータは変換されて印刷コマンドが生成され、その印刷コマンドが印刷装置１１へ送信される。
【００６４】
以上に説明してきたように、アプリケーション３０で複数に分割された画像データを取得する場合に、取得した画像データの１つあるいは２つから、元の画像データの画像のサイズを予測する。これにより、画像の結合が必要な場合に、処理用に取得するメモリを最小限の量で済ますことができる。また、必要なメモリ量を予測して取得するので、画像データを取得する毎にメモリを拡張するという従来の方式に比較して、メモリの再取得も発生しにくくなり、プリンタドライバ３２の処理でメモリを無駄に消費することもなくなる。
【００６５】
これまで本発明を、情報処理装置、プログラム、画像処理方法および画像処理システムとして上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではない。本発明は、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。したがって、本発明は、上記のプログラムが記録された記録媒体、そのプログラムを、ネットワークを介して提供する外部機器等も提供することができるものである。
【符号の説明】
【００６６】
１０…PC、１１…印刷装置、１２…ネットワーク、２０…CPU、２１…ROM、２２…RAM、２３…HDD、２４…通信I/F、２５…入出力I/F、２６…入力装置、２７…表示装置、２８…バス、３０…アプリケーション、３１…OS、３２…プリンタドライバ、３３…メモリ、３４…通信ポート、４０…描画処理モジュール、４１…UIモジュール、４２…イメージ結合モジュール、４３…メモリ取得モジュール、４４…イメージ識別モジュール、５０…通信ポート、６０…取得手段、６１…予測手段、６２…確保手段、６３…結合手段、６４…判断手段、６５…処理手段、６６…送信手段、７０、７０ａ、７０ｂ、７０ｃ…画像データ、
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】特開２００３−３０８１８９号公報
【図１】
2017054490.tif 000003
【図２】
2017054490.tif 000004
【図３】
2017054490.tif 000005
【図４】
2017054490.tif 000006
【図５】
2017054490.tif 000007
【図６】
2017054490.tif 000008
【図７】
2017054490.tif 000009
【図８】
2017054490.tif 000010
【図９】
2017054490.tif 000011