JP4738773B2 - 画像処理装置及びその制御方法 - Google Patents

画像処理装置及びその制御方法 Download PDF

Info

Publication number
JP4738773B2
JP4738773B2 JP2004231433A JP2004231433A JP4738773B2 JP 4738773 B2 JP4738773 B2 JP 4738773B2 JP 2004231433 A JP2004231433 A JP 2004231433A JP 2004231433 A JP2004231433 A JP 2004231433A JP 4738773 B2 JP4738773 B2 JP 4738773B2
Authority
JP
Japan
Prior art keywords
data stream
filter
image processing
processing apparatus
filtering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004231433A
Other languages
English (en)
Other versions
JP2006048535A (ja
JP2006048535A5 (ja
Inventor
仁一 種田
紀之 中澤
俊久 奥津
正美 角田
嘉則 伊藤
英雄 淺原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP2004231433A priority Critical patent/JP4738773B2/ja
Application filed by Canon Inc filed Critical Canon Inc
Priority to EP05768567A priority patent/EP1776635A4/en
Priority to RU2007107809/09A priority patent/RU2336558C1/ru
Priority to KR1020077005338A priority patent/KR100876022B1/ko
Priority to PCT/JP2005/014373 priority patent/WO2006013953A1/en
Priority to US11/573,258 priority patent/US8171463B2/en
Priority to CN2005100877156A priority patent/CN1731350B/zh
Publication of JP2006048535A publication Critical patent/JP2006048535A/ja
Publication of JP2006048535A5 publication Critical patent/JP2006048535A5/ja
Application granted granted Critical
Publication of JP4738773B2 publication Critical patent/JP4738773B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1204Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/435Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1248Job translation or job parsing, e.g. page banding by printer language recognition, e.g. PDL, PCL, PDF
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00962Input arrangements for operating instructions or parameters, e.g. updating internal software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00962Input arrangements for operating instructions or parameters, e.g. updating internal software
    • H04N1/0097Storage of instructions or parameters, e.g. customised instructions or different parameters for different user IDs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Description

本発明は、画像処理装置及びその制御方法に関するものである。
従来、例えば複写機やMFP(マルチファンクションプリンタ)などの画像処理装置で画像処理を実行するソフトウェアは、オペレーティングシステム(OS)の上に静的かつ固定的な、いわゆるファームウェアとして構築されることが主流であった。このようなファームウェアは、内部的に複数のモジュールから構成されている場合でも、全体が単一のロードモジュールに静的にリンクされた状態で装置の不揮発性メモリに記憶され、システムの起動時にハードディスクなどの不揮発性メモリからRAMにロードされて実行されるか、又はそのファームウェアを記憶しているROMなどの不揮発性メモリ上で直接実行される。特に低価格の画像処理装置のように、組み込みシステムを構成するファームウェアは一般に、その経済性や安全性等のために、部分的なモジュールの動的なロードやリンクを行わないように構成されている。即ち、ダイナミックリンクを実現するために必要なシンボルテーブルを記憶するためのメモリ容量や、シンボルのアドレスへアクセスするための処理に関するオーバヘッドなどが、装置のコストパフォーマンスを悪化させる。また、サブモジュールの追加ロード及びリンクによって、そのサブモジュールをリンクする以前には十分に評価され達成されていたシステム全体の品質やセキュリティが脅かされる危険があるためである。
従来より、組み込みシステムのファームウェアのリアルタイムOS上に更にもう一層のソフトウェア動作環境を設け、この設けたソフトウェア動作環境において、ダイナミックローディングやダイナミックリンキングや動的なメモリ操作などのソフトウェアの動的な特性をサポートする画像処理装置が開発されている。追加によるソフトウェア動作環境は、インタプリタと一揃いのアプリケーションプログラミングインターフェース(API)群やフレームワーク群から構成され、その上で動作するソフトウェアのために一種のOS或はコンピューティングプラットフォームを提供する。インタプリタは、所定の命令セットに含まれる命令からなる一連の命令列を逐次的に読み出し解釈し実行する。この命令セットをCPUのための命令セットと同等の位置付けで捉える場合、インタプリタは特に仮想マシン(virtual machine)と呼ばれることもある。一揃いのAPI群及びフレームワーク群は、このソフトウェア動作環境の下層にある実際のリアルタイムOSが提供する資源やハードウェア資源を抽象化した各種の資源群に対するアクセスを、ソフトウェア動作環境上で動作するソフトウェアのために提供する。これら資源には、プロセッサによる命令実行コンテクストやメモリ、ファイルシステム、ネットワークインターフェースを含む各種入出力(I/O)などがある。特に命令実行コンテクストは、CPUとリアルタイムOSが提供するマルチタスク機構とは独立に、ソフトウェア動作環境が独自にインタプリタ上の命令実行コンテクストを管理できる。また、メモリの管理も同様にソフトウェア動作環境が独自のメモリ管理を提供できる。
このようなソフトウェア実行環境上で動作するソフトウェアは、インタプリタによって逐次的に読み込まれて解釈されて実行されるため、これらの処理の過程で命令列を監視しシステムに悪影響を与える動作を除外できる可能性がある。また、ソフトウェア実行環境上デ動作するソフトウェアからの各種資源に対するアクセスは、そのソフトウェア実行環境が提供するAPI群やフレームワーク群を経由して間接的に行われるため、このアクセスの過程で、システムに悪影響を与える動作を除外できる可能性がある。従って、ファームウェア内部にインタプリタ及びAPI群とフレームワーク群からなるソフトウェア実行環境の階層を設けるアプローチは、静的かつ固定的に構成されるべき低コスト組み込みシステムのファームウェアにおいて、ソフトウェアの動的な特性を部分的に導入するために非常に有効である(特許文献1、特許文献2)。
上記アプローチにおいて、ソフトウェア実行環境の階層を実現するためにインタプリタとしてJava(登録商標)仮想マシンを採用し、Java(登録商標)に関連するAPI群やフレームワーク群を採用することができ、本出願人は2003年に、画像処理装置のファームウェア内部にJava(登録商標)プラットフォームを内蔵した複合機を製品化している。
従来、ネットワークコンピュータを備えたアプリケーションダウンロード型プリンタを用い、コンピュータネットワークから、印刷すべきデータファイルと、そのデータファイルに対応したアプリケーションとをプリンタにダウンロードすることが行われている。そして、そのダウンロードしたアプリケーションを立ち上げて実行することにより、データファイルを開いてラスタイメージに変換し、それを印刷するネットワークコンピュータ内蔵型プリンタが知られている。またこの場合のアプリケーションとして、「Java(登録商標)アプレット」を用いることも開示されている。このアプリケーションは印刷データファイルとともにクライアントからプッシュされる場合も、プリンタがアプリケーションサーバなどからプルすることも開示されている(特許文献3)。
また特許文献4には、複数の周辺機器及び周辺機器を動作させるソフトウェアを搭載した複数の端末装置、及び少なくとも周辺装置を動作させるソフトウェアに関するデータベースを備えたサーバ装置を伝送路に接続させ、所定の通信プロトコルに基づいてネットワーク通信を行うネットワーク通信システムにおいて、周辺機器は、サーバ装置から周辺機器を動作させるソフトウェアの全部/一部、或はソフトウェアが使用するモジュールに対応する最新モジュール情報を要求・獲得するクライアント制御部と、獲得した最新モジュールを端末装置に配付するソフトウェア配信エージェントと、を備えたネットワーク通信システムが開示されている。この場合の周辺機器を操作するソフトウェアが使用するクライアント側モジュールとして、「Java(登録商標)アプレット」や「Java(登録商標)アプリケーション」が供給可能であることも開示されている。
一方、基幹系の業務システムでは、一度、正常に稼働し始めたシステム全体の安定性を維持したいという要望はとても強く、プリンタドライバやアプリケーションの変更やバージョンアップなどの変更が簡単に許されない場合がある。このような現実のプリンティング環境の制約の中で、プリンタのベンダは顧客側に対応を求めるのではなく、プリンタ側の対応によって各種の顧客要望に応えるべき使命がある。このためには、プリンタ/プリンタコントローラを構成するファームウェアを改造して各顧客に対応してリリースする方法がある。しかし、ファームウェアの改造による各顧客への対応は、装置の開発期間や開発費などが多くかかり、またファームウェアの更新にはフィールドエンジニアなどによる高度なメンテナンスの手間を要するため、各顧客の要望に速やかに応えるには、費用対効果の面でも課題を残している。
組み込みシステムのファームウェアに、例えばJava(登録商標)プラットフォームのようなソフトウェア動作環境を内蔵する複合機では、ソフトウェア動作環境上に、ファームウェアと独立した新たな装置組み込みアプリケーションを開発可能であり、APIによってJava(登録商標)アプリケーションから装置のプリント機能にアクセスできた。しかしながら、Java(登録商標)プラットフォームがファームウェア内の組み込みアプリケーション階層に位置付けられているため、同じ階層で、ネイティブの組み込みアプリケーションとして実現されているプリントデータの受信機能やプリントサーバ機能をJava(登録商標)アプリケーションのために流用できなかった。即ち、例えばネットワーク経由でプリントデータを受信するための各種プリントサービスプロトコルを実装したプリントサーバ機能をJava(登録商標)側にも再実装する必要があり、開発負荷や評価負荷並びに実行時のメモリ容量の点でも非効率であった。
一方、その他の組み込みシステムのファームウェア内にソフトウェア動作環境の階層を持たない場合には、組み込みシステム全体がダイナミックリンクやプラグイン可能な構成で、システム全体が動的な構成になってしまっていた。動的な特性が求められる部分が、受信したPDLデータストリームを解釈する前の前処理を柔軟かつ拡張可能に追加する機構だけであることを前提とした場合には、このような従来のアプローチは、システム全体を動的なソフトウェアとして構成するためのオーバヘッドに伴うコストアップや品質保証の難しさから低価格の小規模システムには向かなかった。
そこでプリンタが受信したPDLデータストリームの解釈前の前処理を行うフィルタ部を柔軟かつ拡張可能なソフトウェアとして実装し、安定性が求められるプリンタファームウェアのその他の部分の実装と明確に分離することによって、PDLプリンタのカスタマイズの生産性を向上する技術も提案されている(特許文献5参照)。
特開平11−282684号公報 特開2003−256216号公報 特開平11−53132号公報 特開平11−306107号公報 特願2004−093215号公報
特許文献5では、フィルタ処理を常に印刷要求データストリーム全体に対して行う必要があり、効率的な処理が実現できていない。即ち、画像処理装置が受信する印刷要求データストリームは、JL(Job Language)などの印刷装置の給排紙段の指定などのように、主に装置の制御に関する指示命令で構成される装置制御データストリーム部と、PDLなど描画に関する指示命令で構成される描画データストリーム部とで構成されている。そして、このフィルタ処理は常に、これら両方を含んだデータストリームに対して実行されてしまうため、処理全体が重くなり、スループットが落ちるなど、効率的な処理が行えない。また画像処理装置へのデータの一時保管処理のような、PDL以外の様々な処理要求データストリームへの対応や、画像処理装置で読み取った画像データを電子メールで送信するといった、様々なデータストリームへの対応も考慮されていなかった。
本発明は上記問題点に鑑みてなされたもので、本発明の特徴は、入力したデータストリームに対して、動的ロードやリンク可能なフィルタを適用することにより、データストリームに対する各種処理を容易に実装できるようにした画像処理装置及びその制御方法を提供することにある。
本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
ハードウェアを構成するプロセッサによって処理される第1命令群に基づいて構築されたネイティブ環境で、前記第1命令群とは独立に定義された第2命令群に基づいて構築されたプログラムを動的に実行するインタプリタ環境を備える画像処理装置であって、
前記ネイティブ環境で、前記画像処理装置に対する制御指示を行う装置制御指示データストリームと前記画像処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信手段と、
前記ネイティブ環境で、前記入力データストリームを前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成するデータ処理手段と、
前記インタプリタ環境で、前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ手段と、
前記ネイティブ環境で、前記フィルタ手段との間で前記中間データストリームの前記装置制御指示データストリームと描画データストリームとのそれぞれの取り出し、及び書き戻しを行うインターフェース手段と、
前記ネイティブ環境で、前記インターフェース手段を介して取り出した前記中間データストリームの前記装置制御指示データストリームと描画データストリームとをそれぞれ、対応する前記インタプリタ環境のフィルタ手段へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース手段を介して書き戻すフィルタ管理手段と、を有することを特徴とする。
本発明の一態様に係る画像処理装置の制御方法は以下のような工程を備える。即ち、
ハードウェアを構成するプロセッサによって処理される第1命令群に基づいて構築されたネイティブ環境で、前記第1命令群とは独立に定義された第2命令群に基づいて構築されたプログラムを動的に実行するインタプリタ環境を備える画像処理装置の制御方法であって、
前記ネイティブ環境で、前記画像処理装置に対する制御指示を行う装置制御指示データストリームと前記画像処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信工程と、
前記ネイティブ環境で、前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成するデータ処理工程と、
前記インタプリタ環境で、前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ工程と、
前記ネイティブ環境で、前記フィルタ工程との間で前記中間データストリームの前記装置制御指示データストリームと描画データストリームとのそれぞれの取り出し、及び書き戻しを行うインターフェース工程と、
前記ネイティブ環境で、前記インターフェース工程を介して取り出した前記中間データストリームの前記装置制御指示データストリームと描画データストリームとをそれぞれ、対応する前記インタプリタ環境のフィルタ工程へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース工程を介して書き戻すフィルタ管理工程と、を有することを特徴とする。
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。
図1は、本実施の形態に係る画像処理装置1000のハードウェア構成を説明するブロック図である。
この画像処理装置1000は、画像処理装置コントローラ(以下、コントローラ)1600を有し、異なる制御系を司る機器で構成されている。本実施の形態における画像処理装置1000は、具体的には印刷装置を想定している。
CPU1は、書き換え可能なフラッシュ(Flash)メモリ3に記憶された制御プログラムに基づいて制御動作を実行する。このCPU1はまた、所定のネットワーク通信プロトコルを用いて、システムバス4に接続されるネットワークコントローラ(LANC)5を介してローカルエリアネットワーク(LAN2000)に接続されたホストコンピュータ等の複数の外部装置(不図示)から送られる印刷データやプリンタ制御命令等の各種データの送受信要求を統括的に制御する。またROM9に記憶された制御プログラム等、或はディスクコントローラ(DKC)15を介して接続された外部メモリ10に記憶された制御プログラムやリソースデータ(資源情報)等に基づいて、システムバス4に接続される各種デバイスとのアクセスを統括的に制御している。これにより、受信した印刷データを基にラスタコントローラ12によって画像情報を生成して、その画像情報をマーキングエンジン(プリンタエンジン)16に出力する。
RAM2は、CPU1の主メモリ、ワークエリア等の一時記憶領域として用いられる。フラッシュメモリ3は書き換え可能な不揮発メモリで、ROM9とともに制御プログラムを記憶している。システムバス4は、このコントローラ1600を構成する機器間のデータのやりとりに使用される。
ネットワークコントローラ(LANC)5は、コントローラ1600をLAN2000に接続する。LED6は、このコントローラ1600の動作状態を示す表示部として用いられており、例えばネットワークコントローラ(LANC)5とローカルエリアネットワーク(LAN)2000との電気的な接続状態(LINK)やネットワーク通信モード(10Baseや100Base、全二重、半二重)等の各種動作状態をLED6の点滅パターンや色で示すことができる。外部メモリ10は、制御プログラムや各種データを保持し、DKC15を介してコントローラ1600に接続されている。一般的にはハードディスクドライブやUSBメモリなどが使用されている。ラスタコントローラ12は、受信した印刷データを基に、出力すべき画像情報を生成する。マーキングエンジン16は、ラスタコントローラ12から画像情報を受け取って印刷を行う。
操作パネル(操作部)18は、画像処理装置1000の動作モード等の設定や印刷データの取り消し等の操作を行なうためのボタンや、液晶パネルに重ね合わせて表示されたタッチパネル、及び画像処理装置1000の動作状態を示す液晶パネルやLED等の表示部を配している。画像読み取り部19は、操作パネル18、或はローカルエリアネットワーク2000を介して画像情報の読み取りを指示することにより、その読み取った(スキャン)画像情報を画像処理装置1000に入力する。
なお、この図1に示したマーキングエンジン16は、既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式(レーザビーム方式)やインクジェット方式、昇華(熱転写)方式等が挙げられる。
図2は、本実施の形態に係るコントローラ1600のソフトウェア構造を示す階層図である。図において、上方に位置している上位モジュールは、下方に位置している下位モジュールに依存していることを示す。また特に線によって接続したモジュール間には依存関係が存在することを示す。
ネイティブコード部201は、画像処理装置1000のファームウェアを構成する標準部分で、CPU1によって直接実行される。このネイティブコード部201は、ファームウェアとして、装置の開発時に単一のロードモジュールに静的にリンクされ、この画像処理装置1000の不揮発性メモリ3に格納されている。このファームウェアは画像処理装置1000の起動時に不揮発性メモリ3からRAM2にロードされ、画像処理装置1000の稼働中はCPU1がRAM2からコードを逐次的に読み出して、そのコードを解釈して処理を実行するが、その処理の実行時にダイナミックリンクは行わない。尚、このファームウェアは、ROM9のようにCPU1が直接読み出しアクセス可能な不揮発性メモリに格納され、RAM2に展開せずに直接CPU1がROM9からコードを逐次的に読み出し、それを解釈して実行するようにしてもよい。
データ送受信モジュール202は、クライアントからの処理要求データストリーム350(図3)を受信し、コントローラ1600で生成された送信用データストリーム358(図3)をクライアントに送信する。このデータ送受信モジュール202は、RTOS(リアルタイムOS)214を介してプロトコルスタック223に依存している。クライアントとの間でのデータの送受信は、物理的にはイーサネット(Ethernet)(登録商標)などのネットワークやUSB,IEEE1394などの各種インターフェースを介して行われるが、それぞれの接続形態に応じて処理要求を行うためのアプリケーションプロトコルが規定されている。また、このデータ送受信モジュール202は、アプリケーションプロトコルのサーバ機能を実装している。サービスのためのアプリケーションプロトコルには、例えばネットワークプロトコルだけでもLPRやSMB,PAP,NetWareなど各種の仕様が存在し、その実現のためには膨大な開発コストと品質評価コストを要する。データ送受信モジュール202は、これら複数のインターフェース毎に、それぞれ各種存在するサービスプロトコルからなるマルチプロトコルをサポートしている。データ送受信モジュール202は、データの送受信のために、画像処理装置1000のRAM2にジョブの待ち行列を構成し、いわゆるスプール機能を実装するように構成してもよい。この場合、データ送受信モジュール202は、他のジョブを実行している最中のようにジョブを直ちに実行できる場合にも、クライアントからのジョブ要求を受け付けて待ち行列に格納しクライアントを解放する。こうして待ち行列に格納されたジョブは、そのジョブが実行可能となった時にスケジューリングアルゴリズムに応じて逐次処理される。
組み込みアプリケーション203は、この画像処理装置1000の中心機能を提供するための組み込みアプリケーションであり、クライアントからの要求に呼応してサービスを提供している。クライアントがLAN2000を介したホスト上のアプリケーション及びドライバソフトの場合は、クライアントは処理要求データストリーム350(図3)を生成し、データ送受信モジュール202を介して組み込みアプリケーション203へ引き渡す。組み込みアプリケーション203は、この処理要求データストリーム350を装置制御指示データストリーム351(図3)と描画データストリーム352(図3)とに分割し、制御API204を介してジョブ制御モジュール205にそれぞれを引き渡す。或は、装置制御指示データストリーム351を解釈し、制御API204によってジョブ制御モジュール205に対して、クライアントから要求された処理を指示し、描画データストリーム352(図3)を引き渡す。
いまクライアントが画像処理装置1000の操作パネル18を介した指示であった場合は、組み込みアプリケーション203で、装置制御指示データストリーム351(図3)を生成し、制御API204を介してジョブ制御モジュール205に引き渡す。また或は、ジョブ制御モジュール205に対して制御API204によってクライアントから要求された指示を行う。この装置の制御に関する記述部は、一般的にはJL(Job Language)と呼称され、描画データの解釈や展開系の動作パラメータを指定する環境データや、プリントアウトに利用する転写紙の給紙の指定、両面プリントなどのプリントモードの指定、排紙トレイの指定、ソート(コレート)の指定、ステイプルや製本などのフィニッシングの指定などを含む。一方、描画データストリームはPDLで記述されており、主にページごとの描画が記述されている。
制御API204は、この画像処理装置1000が提供するサービスにアクセスするためのアプリケーションプログラミング・インターフェースである。この制御API204を構成する主要なインターフェースの一つは、プリントジョブを実行したり制御するためのインターフェースと、装置制御指示データストリーム351(図3)と描画データストリーム352(図3)のジョブ制御モジュール205への引き渡しのためのインターフェースである。
ジョブ制御モジュール205は、画像処理装置1000が提供する各種の画像処理ジョブを制御する。この画像処理ジョブの一例であるプリントジョブの処理を以下に示す。
ジョブ制御モジュール205は、制御API204を介した指示に従って装置の制御を行う。或は、制御API204を介してジョブ制御モジュール205へ入力された装置制御指示データストリーム351(図3)を解釈することで動作を行う。ジョブ制御モジュール205は、制御API204を介した装置の制御に関する指示、或は装置制御指示データストリーム351の記載内容に応じて、トランスレータ206、レンダラ207、ME制御モジュール208、画像処理モジュール209、データ管理モジュール210を制御する。プリントジョブの場合は、ジョブ制御モジュール205により、描画データストリーム352(図3)がトランスレータ206によりディスプレイリスト355(図3)に変換される。このディスプレイリスト355(図3)は、更にレンダラ207により中間画像データストリーム356(図3)に変換される。そして、この中間画像データストリーム356は、画像処理モジュール209により最終画像データストリーム357(図3)に変換され、この最終画像データストリーム357がME制御モジュール208に送られて印刷されるようにスケジュールされる。
更なる一例として、組み込みアプリケーション203により提供される、画像データの読み取りと送信の動作について説明する。操作パネル18から画像データを読み取って送信するように指示された場合、組み込みアプリケーション203は、制御API204を介してジョブ制御モジュール205に対して、画像データの読み取りと送信指示を行う。この送信指示は、組み込みアプリケーション203が制御API204を介して直接ジョブ制御モジュール205に指示するか、もしくは組み込みアプリケーション203が装置制御指示データストリーム351を生成し、制御API204を介してジョブ制御モジュール205に引き渡すことにより実行される。ジョブ制御モジュール205は、画像読み取り部19から画像データを入力してRAM2に保持して画像処理モジュール209に引き渡す。これにより生成されたスキャン画像データストリーム360(図3)を、組み込みアプリケーション203に引き渡すようにスケジューリングする。この組み込みアプリケーション203は、この引き渡されたスキャン画像データストリーム360を、操作パネル18から指示された形式に変換して送信用データストリーム359(図3)を生成し、データ送受信モジュール202を介して送信する。或は、操作パネル18から指示された送信先が、内蔵されている外部メモリ10である場合は、組み込みアプリケーション203は、制御API204を介してジョブ制御モジュール205に対して、画像データの読み取りと保存の指示を行う。この指示は、組み込みアプリケーション203が制御API204を介して直接ジョブ制御モジュール205に指示するか、或は組み込みアプリケーション203が装置制御指示データストリーム351を生成し、制御API204を介してジョブ制御モジュール205に引き渡すことで実行される。ジョブ制御モジュール205は、画像読み取り部19から画像データを入力してRAM2に保持して画像処理モジュール209に引き渡す。そして、この画像処理モジュール209で生成されたスキャン画像データストリーム360(図3)をデータ管理モジュール210を介して外部メモリ10へ格納するようにスケジューリングする。
トランスレータ206は、PDL等の描画データストリーム352を解釈して、レンダリング処理に適した印刷用の中間言語に変換する。このレンダリング処理に適した印刷用中間言語によるプリントデータの記述をディスプレイリスト355(図3)と呼ぶ。トランスレータ206は、各種のPDLの仕様毎に、それぞれ異なる固有の実装を持ち、どのトランスレータもそれぞれのPDLをレンダラ207に固有のディスプレイリスト355へ変換する。
レンダラ207は、ディスプレイリスト355を中間画像データストリーム356(図3)に展開する。このレンダラ207はRTOS214を介してレンダラドライバ225に依存している。
マーキングエンジン(ME)制御モジュール208は、画像処理装置1000において転写紙への画像形成を行うマーキングエンジン16を制御する。このME制御モジュール208は、RTOS214を介してMEドライバ226に依存している。
画像処理モジュール209は、この画像処理装置1000の中間画像データストリーム356などの画像データに対して、ハーフトーニング、トラッピング、濃淡補正、カラーモノクロ変換など様々な画像処理を行う。
データ管理モジュール210は、この画像処理装置1000の中間画像データストリーム356(図3)や、最終画像データストリーム357(図3)などのデータストリームを外部メモリ10へ保存管理する。尚、画像データストリーム以外のデータストリームを保存及び管理可能にしても良い。レイヤI/F211は、この画像処理装置1000内のデータストリームを、インタプリタ環境215との間でやりとりする。このレイヤI/F211は、データストリームに対するフィルタリング処理のレベル付けのために、大きく内部レイヤI/F213と外部レイヤI/F212とに分かれる。
外部レイヤI/F212は、データ送受信モジュール202及び組み込みアプリケーション203から、処理要求データストリーム350、装置制御指示データストリーム351、描画データストリーム352、送信用データストリーム358,359のインタプリタ環境215への引き渡しと、フィルタ221で処理された各データストリームをデータ送受信モジュール202、組み込みアプリケーション203、ジョブ制御モジュール205へ引き渡す。
内部レイヤI/F213は、ジョブ制御モジュール205が、トランスレータ206、レンダラ207、ME制御モジュール208、画像処理モジュール209、データ管理モジュール210、画像読み取り部19とやりとりすることで生成する、ディスプレイリスト355、中間画像データストリーム356、最終画像データストリーム357、スキャン画像データストリーム360のインタプリタ環境215への引き渡しと、フィルタ221で処理されたジョブをジョブ制御モジュール205への引き渡す。ここでジョブ制御モジュール205だけでなく、トランスレータ206、レンダラ207、ME制御モジュール208、画像処理モジュール209、データ管理モジュール210、画像読み取り部19とインタプリタ環境215の間でも前述のデータストリームのやりとりを行っても良いことはいうまでもない。
リアルタイムOS214は、画像処理装置1000のネイティブコードファームウェアの実行環境を提供するプラットフォームである。このリアルタイムOS214は、その上で動作するソフトウェアのために、ソフトウェア構築のために利用する基本的なサービスや、装置1000が持つハードウェア資源を抽象化したサービスを提供する。また、装置1000のハードウェアをソフトウェアから利用しやすいインターフェースに抽象化するためのデバイスドライバ構築のフレームワークも提供する。このRTOS(Real-Time OS)214が提供する機能には、CPU1による命令実行コンテクストを抽象化したタスク管理、複数の実行コンテクストを仮想的に同時に動作させる並行処理(concurrent processing)を実現するマルチタスク機構、タスク間でメッセージのやり取りをしたり、同期をとったりするためのタスク間通信(メッセージキューやセマフォなど)、各種のメモリ管理、タイマーやクロック、割り込み管理やDMAの制御などがある。尚、セマフォとは並行して動作しているプロセス間で同期を取ったり割り込み処理の制御を行なう機構を意味する。
インタプリタ環境215は、各種のインタプリタ環境、ここではJava(登録商標)プラットフォームのランタイム環境に基づき、それに画像処理装置1000に固有のAPI群とフレームワーク群を追加して構成されているソフトウェアプラットフォームである。このソフトウェアプラットフォームは、その上で動作するインタプリタ言語で記述されたプログラムに対して動的なソフトウェア動作環境を提供する。このインタプリタ環境は、ネイティブコードによって実装された部分(ネイティブコード部201に含まれる)と、そのインタプリタ言語で記述されたプログラムとして実装された部分(図2のインタプリタコード部220に含まれる)とを含む。
インタプリタ216は、所定の命令セットによって記述された命令列から逐次的に命令を読み出し、それを解釈して実行する。ここでインタプリタ216は、Java(登録商標)仮想マシンによって構成され、命令セットはJava(登録商標)のバイトコードである。
標準のAPIライブラリとフレームワーク群217は、RTOS214が提供する抽象化された各種コンピューティング資源を更にインタプリタ環境固有のモデルによって抽象化して、このRTOS214上で動作するプログラムのための実行環境を提供する。ここではJava(登録商標)プラットフォームを構成する標準的なクラスライブラリ群と、OSGiのフレームワークによって実現している。Java(登録商標)プラットフォームは、RTOS214相当の抽象化された機能を提供し、例えば仮想マシンによる命令実行コンテクストを抽象化したスレッド管理、複数の実行コンテクストを仮想的に同時に動作させて並行処理を実現するマルチスレッド機構、スレッド間でメッセージのやり取りをしたり、同期を取るためのスレッド間通信、高度に抽象化された各種のメモリ管理(コレクションなど)、タイマやクロック、例外管理、ファイルシステムやネットワークのアクセス、外部入出力装置とのインターフェースなどを提供している。OSGiフレームワークは、単一のJava(登録商標)仮想マシン上に複数のJava(登録商標)アプリケーション(サービス)を動作させる。またアプリケーションのライフサイクルの管理や、アプリケーション間の通信機能などを提供する。このOSGiフレームワーク上には、複数のシステムサービスがプリインストールされている。システムサービスには、インタプリタ環境に新たなアプリケーションを追加、更新、削除するためのサービス管理サービスや、アプレット(Applet)インターフェースに従って実装されたJava(登録商標)クラスを画像処理装置の操作パネルに表示して操作パネル18から操作可能に動作させるためのAppletビューアサービスや、Servletインターフェースに従って実装されたJava(登録商標)クラスをクライアントのブラウザから操作可能なWebアプリケーションとして動作させるためのHTTPサービスなどが用意されている。特にAppletインターフェースに従って実装されたJava(登録商標)アプリケーションは、AWTのAPIなどを経由して、間接的に操作パネルドライバ227とインターフェースすることができる。
尚、OSGiとはOpen Service Gateway Initiativeの略で、ここではOSGiの仕様に基いている事を意味する。
ジョブ制御ライブラリ218は、制御API204に依存して、インタプリタ環境上で動作するプログラムのために、画像処理ジョブの実行や制御を可能とするアプリケーションプログラミングインターフェースを提供する。
フィルタフレームワーク219は、組み込みアプリケーション203と通信して、ジョブの実行に際して、インタプリタ環境上に実装したフィルタプログラムからの画像処理装置1000の複数のデータストリームに対する介在を可能とする。
インタプリタコード部220は、インタプリタが解釈できるインタプリタ言語によって記述されたソフトウェアとして実装され、インタプリタ環境を構成するAPIライブラリ群やフレームワーク群の一部とインタプリタ環境上で動作するプログラムとを含む。ネイティブコード部201とインタプリタコード部220に跨って位置付けられるソフトウェアは、それぞれの空間の間をインターフェースするためのモジュールをインタプリタ環境が規定する固有のフレームワークとプログラミングモデルに従ってコーディングする必要がある。ここではJava(登録商標) Native Interface(JNI)に従って境界部分のプログラミングを行っている。
フィルタ221は、インタプリタ環境上に実装されたプログラムであり、フィルタフレームワーク219の枠組みに従って実装されているため、組み込みアプリケーション203が処理する処理要求データストリームに対する処理を行うことができる。プロトコルスタック223は、RTOS214のフレームワークに組み込まれ、より下層の外部インターフェースドライバ224が制御する外部インターフェース上にトランスポート層以下のプロトコルを実装する。例えば、ネットワークインターフェースの場合、TCP/IPやUDP/IPなどのプロトコルを実現し、組み込みアプリケーション203に対しては、RTOS214を介してバークレイソケットなどのアプリケーションプログラミングのためのインターフェースを提供する。また例えば、外部インターフェースがUSBの場合には1284.4などのプロトコルを実現する。
外部インターフェースドライバ224は、ネットワークインターフェースやIEEE1394、USB,RS232C、セントロニクスなどの各種インターフェースへの接続を提供するハードウェアを駆動する。例えばネットワークの場合、イーサネット(登録商標)などのネットワークに接続するためのネットワークインターフェースハードウェアを駆動して物理層のプロトコルを実現する。
レンダラドライバ225はレンダラ207を駆動する。レンダラ207は、図3のディスプレイリスト355を中間画像データストリーム356に展開するためのハードウェアである。レンダラ207はソフトウェアによって実現してもよいし、展開されるデータストリームは最終画像データストリーム357(図3)でもよい。マーキングエンジン(ME)ドライバ226は、転写紙への画像形成を行うマーキングエンジンを駆動する。操作パネルドライバ227は、この画像処理装置1000が備える操作パネル18の表示部への出力とキーやタッチパネルなどからの入力イベントを処理する。
図3は、本実施の形態に係るコントローラ1600のソフトウェアモジュール間の基本的なデータの流れとそれぞれのモジュールにおいて存在するデータストリームを示す図である。図2に示すモジュールと共通するモジュールには同一の符号をつけて説明を省略する。
データ送受信モジュール202は、クライアントから受信した、装置制御指示データストリーム351と描画データストリーム352からなる処理要求データストリーム350を、フィルタ221を介さない場合に、経路301を介して組み込みアプリケーション203に流す。この経路301は、例えばRTOS214が提供するメッセージキュー等のタスク間通信機能によって実現される。その他のデータの受け渡しも同様である。
ここでクライアントが、LAN2000を介したホスト上のアプリケーション及びドライバソフトの場合は、クライアントは処理要求データストリーム350を生成し、その処理要求データストリーム350を、データ送受信モジュール202を介して組み込みアプリケーション203へ引き渡す。組み込みアプリケーション203は、処理要求データストリーム350を装置制御指示データストリーム351と描画データストリーム352とに分割し、制御API204を介してジョブ制御モジュール205にそれぞれを引き渡す。或は、装置制御指示データストリーム351を解釈し、制御API204によってジョブ制御モジュール205に対して、クライアントから要求された処理を指示し、描画データストリーム352を引き渡す。
一方、クライアントが画像処理装置の操作パネル18を介した指示の場合は、組み込みアプリケーション203で装置制御指示データストリーム351を生成し、制御API204を介してジョブ制御モジュール205に引き渡す。或はジョブ制御モジュール205に対して制御API204によってクライアントから要求された指示を行う。装置の制御に関する記述部は、一般的にはJL(Job Language)と呼ばれ、ここには描画データの解釈及び展開に関する動作パラメータを指定する環境データや、プリントアウトに利用する転写紙の給紙の指定、両面プリントなどのプリントモードの指定、排紙トレイの指定、ソート(コレート)の指定、ステイプルや製本などのフィニッシングの指定などが含まれる。一方、描画データストリームはPDLによって記述されており、主にページごとの描画が記述されている。
ジョブ制御モジュール205は、制御API204を介した指示に従って装置1000の制御を行う。或は、制御API204を介してジョブ制御モジュール205へ入力された装置制御指示データストリーム351を解釈して動作を行う。ジョブ制御モジュール205は、制御API204を介した装置1000の制御に関する指示、或は装置制御指示データストリーム351の記載内容に応じて、390を介して、トランスレータ206、レンダラ207、ME制御モジュール208、画像処理モジュール209及びデータ管理モジュール210を制御する。プリントジョブの場合は、ジョブ制御モジュール205は、描画データストリーム352をトランスレータ206によりディスプレイリスト355に変換させ、ディスプレイリスト355をレンダラ207により中間画像データストリーム356に変換させ、中間画像データストリーム356を画像処理モジュール209により最終画像データストリーム357に変換し、最終画像データストリーム357がME制御モジュール208に流れて印刷するようにスケジュールする。
更なる一例として、組み込みアプリケーション203により提供される画像データの読み取りと送信の際の動作を示す。操作パネル18から画像データの読み取り及び送信指示が行われた場合、組み込みアプリケーション203は、制御API204を介してジョブ制御モジュール205に対して、画像データの読み取りと送信の指示を行う。この指示は組み込みアプリケーション203が制御API204を介して、直接ジョブ制御モジュール205に指示するか、或は組み込みアプリケーション203が装置制御指示データストリーム351を生成し、制御API204を介してジョブ制御モジュール205に引き渡すことで実行される。ジョブ制御モジュール205は、画像読み取り部19で読み取られた画像データを入力してRAM2上に保持して画像処理モジュール209に引き渡す。こうして画像処理モジュール209で生成されたスキャン画像データストリーム360を組み込みアプリケーション203へ引き渡すようにスケジューリングする。組み込みアプリケーション203は、その引き渡されたスキャン画像データストリーム360を操作パネル18から指示された形式に変換して送信用データストリーム359を生成する。そして、この送信用データストリーム359を、データ送受信モジュール202を介して送信用データストリーム359として送信する。或は、操作パネル18から指示された送信先が、内蔵されている外部メモリ10の場合は、組み込みアプリケーション203は、制御API204を介してジョブ制御モジュール205に対して、画像データの読み取りと保存指示を行う。この指示は、組み込みアプリケーション203が制御API204を介して直接ジョブ制御モジュール205に指示するか、或は組み込みアプリケーション203が装置制御指示データストリーム351を生成し、制御API204を介してジョブ制御モジュール205に引き渡すことで実行される。ジョブ制御モジュール205は、390を介して、画像読み取り部19から画像データを入力してRAM2上に保持し、画像処理モジュール209に引き渡す。こうして生成されたスキャン画像データストリーム360をデータ管理モジュール210を介して外部メモリ10へ格納するようにスケジューリングする。
以上の処理は全てネイティブコード部分201に実装されている。
図4は、本実施の形態に係るコントローラ1600のソフトウェアモジュール間の基本的なデータの流れと、フィルタ処理時のデータの流れを説明する図である。各モジュールにおけるデータストリームは図3と同様であり、前述の図面と共通する部分は同じ記号で示している。
データ送受信モジュール202は、データストリームに対してフィルタ処理を施す場合には、処理されたデータストリームを、経路306を介して外部レイヤ212に流す。この経路306は、例えばRTOS214が提供するメッセージキューなどのタスク間の通信機能によって引き渡されるが、その他のデータの受け渡しでも良い。外部レイヤI/F212は、レイヤI/F211の中でも特に、基本的には画像処理装置1000の外部からLAN2000等を介して受信するデータストリームである処理要求データストリーム350、この処理要求データストリーム350を画像処理装置1000内で分割した装置制御指示データストリーム351と描画データストリーム352、組み込みアプリケーションにおいて変換、生成される送信用データストリーム359、データ送受信モジュール202から最終的に送信処理が行われる送信用データストリーム358をインタプリタ環境215へ引き渡す。尚、これらのデータストリームは、データ管理モジュール210により外部メモリ10から取り出されたものでもよい。
外部レイヤI/F212は、その受け取ったデータストリームを経路307を介してフィルタフレームワーク219に流す。フィルタフレームワーク219のランタイムモジュールは、インタプリタ環境上215に実装されたフィルタプログラム群221を管理している。フィルタフレームワーク219は、そのデータストリームを、経路308を介してフィルタ221に流す。この経路308では、例えばインタプリタ環境215が提供するスレッド間の通信機能によって引き渡される。インタプリタ環境215内のデータのやりとりに関しても以下同様である。ここでフィルタ221が複数配置されている場合には、それぞれのフィルタ間にもデータストリームが流れ、これらはインタプリタ環境215が提供するスレッド間の通信機能によって引き渡される。
尚、ランタイムモジュールとはプログラムを実行する際に必要となるソフトウェアモジュールを意味する。
フィルタ221は、入力として受け取ったデータストリームに対して所定の処理を施して出力する。フィルタ221が出力したデータストリームは、経路309を介してフィルタフレームワーク219に流れる。フィルタフレームワーク219は、フィルタ221から受け取ったデータストリームを経路310を介して外部レイヤI/F212に引き渡す。これにより外部レイヤI/F212は、そのデータストリームを経路311を介して組み込みアプリケーション203に流す。また或は、外部レイヤI/F212が、経路370を介してデータ送受信モジュール202にデータストリームを流し、そのデータストリームを、前述のように経路301を介して組み込みアプリケーション203に流す構成をとってもよい。
制御パス312,372は、フィルタフレームワーク219の状態に応じて、データ送受信モジュール202から組み込みアプリケーション203に至るデータストリームを制御するためのパスである。フィルタフレームワーク219が管理するフィルタ221が有効な状態で配置されている場合は、前述の経路306,307が有効となり、フィルタ221による前処理が施される。一方、フィルタフレームワーク219が有効なフィルタ221を配置していない場合には、経路301が有効となり、データストリームは直接、データ送受信ストリーム202から組み込みアプリケーション203に流れる。この場合、フィルタフレームワーク219が介在することによるオーバヘッドが避けられるため、フィルタ221によるカスタマイズを全く行わない標準状態の画像処理装置1000のデータ処理性能を発揮できる。
組み込みアプリケーション203がデータストリームに対してフィルタ処理を施す場合には、データストリームは経路314を介して外部レイヤ212に流れる。この経路314は例えばRTOS214が提供するメッセージキューなどのタスク間通信機能によって引き渡されるが、その他のデータの受け渡しも同様である。外部レイヤ212は、前述したように、レイヤI/F211の中でも特に、基本的には画像処理装置1000の外部からLAN2000等を介して受信するデータストリームである処理要求データストリーム350、処理要求データストリーム350が画像処理装置1000内で分割された装置制御指示データストリーム351と描画データストリーム352、組み込みアプリケーションにおいて変換、生成される送信用データストリーム359、データ送受信モジュール202から最終的に送信処理が行われる送信用データストリーム358をインタプリタ環境215へ引き渡す。これらのデータストリームはデータ管理モジュール210により外部メモリ10から取り出されたものでもよい。外部レイヤ212は、受け取ったデータストリームを経路307を介してフィルタフレームワーク219に流す。フィルタフレームワーク219のランタイムモジュールは、インタプリタ環境215に実装されたフィルタ221を管理している。フィルタフレームワーク219は、受け取ったデータストリームを経路308を介してフィルタ221に流す。この経路308は、例えばインタプリタ環境215が提供するスレッド間通信機能によって実現される。インタプリタ環境215のデータのやりとりに関しても以下同様である。尚、ここでフィルタ221が複数配置されている場合には、それぞれのフィルタ間にもデータストリームが流れ、これらはインタプリタ環境215が提供するスレッド間通信機能によって引き渡される。
フィルタ221は、受け取ったデータストリームに対して所定の処理を施して出力する。フィルタ221が出力したデータストリームは、経路309よってフィルタフレームワーク219に流れる。フィルタフレームワーク219はフィルタ221から受け取ったデータストリームを経路310を介して外部レイヤ212に引き渡し、外部レイヤ212は、経路315を介して、そのデータストリームをジョブ制御モジュール205に流す。尚、ここで外部レイヤ212が、経路371を介して、そのデータストリームを組み込みアプリケーション203に流し、前述のように経路313を介してジョブ制御モジュール205に流す構成をとってもよい。
制御パス316,372は、フィルタフレームワーク219の状態に応じて組み込みアプリケーション203からジョブ制御モジュール204に至るデータストリームを制御するためのパスである。フィルタフレームワーク219が管理するフィルタ221が有効な状態で配置されている場合は、経路314,307が有効となりフィルタ221による前処理が施されるが、フィルタフレームワーク219が有効なフィルタ221を配置していない場合には、経路313が有効となり、データストリームは直接ジョブ制御モジュール205に流れる。この場合、フィルタフレームワーク219が介在することによりオーバヘッドを避けられるため、フィルタ221によるカスタマイズを全く行わない標準状態の画像処理装置1000でのデータ処理性能を発揮できる。
次に、ジョブ制御モジュール205が、データストリームに対してフィルタ処理を施す場合を説明する。この場合、データストリームは、経路318を介して、内部レイヤI/F213に流れる。経路318は、例えばRTOS214が提供するメッセージキューなどのタスク間の通信機能によって引き渡される。その他のデータの受け渡しも同様である。内部レイヤI/F213は、レイヤI/F211の中でも特に、トランスレータ206が描画データストリーム352を処理することで生成するディスプレイリスト355、レンダラ207がディスプレイリスト355を処理することで生成する中間画像データストリーム、画像処理モジュール209が中間画像データストリーム356を処理することで生成する最終画像データストリーム357、画像読み取り部19から読み込まれたスキャン画像データストリーム360など、画像処理装置1600で生成されるデータストリームをインタプリタ環境215へ引き渡す。これらのデータストリームは、データ管理モジュール210により外部メモリ10から取り出されたものでもよい。内部レイヤI/F213は、経路318を介して受け取ったデータストリームを、フィルタフレームワーク219に流す。フィルタフレームワーク219のランタイムモジュールはインタプリタ環境215に実装されたフィルタ221を管理している。このインタプリタコード部220におけるフィルタ処理は前述の処理と同じであるため、その説明を省略する。
フィルタフレームワーク219は、フィルタ221から受け取ったデータストリームを経路310を介して内部レイヤI/F213に引き渡す。内部レイヤI/F213は、そのデータストリームを経路319を介してジョブ制御モジュール205に流す。尚、内部レイヤI/F213が直接、トランスレータ206、レンダラ207、画像処理モジュール209、ME制御モジュール208、データ管理モジュール210へ引き渡す構成をとってもよい。
制御パス320,372は、フィルタフレームワーク219の状態に応じてデータストリームを制御するためのパスである。フィルタフレームワーク219が管理するフィルタ221が有効な状態で配置されている場合は、経路318,307が有効となり、フィルタ221による前処理が施される。一方、フィルタフレームワーク219が有効なフィルタ221を配置していない場合には経路317が有効となり、データストリームは直接ジョブ制御モジュール205がスケジューリングした次のモジュールに流れる。この場合、フィルタフレームワーク219が介在することによりオーバヘッドを避けられるため、フィルタ221によるカスタマイズを全く行わない標準状態の画像処理装置のデータ処理性能を発揮できる。
図5は、本実施の形態のインタプリタ環境220に構築されるフィルタフレームワーク219のクラスを説明する図である。
フィルタ管理(FilterManager)クラス401は、フィルタフレームワーク219のランタイム環境を実現するオブジェクトのクラスである。このフィルタ管理クラス401は一つのコネクタ(Connector)クラス405のオブジェクトをコンポジション(composition)として持つ。また複数(n個)のフィルタ(Filter)抽象クラス402のオブジェクトへの参照と、複数{(n−1)個}のパイプ(Pipe)クラス406のオブジェクトへの参照とからなる順序付けられたリストを持つ。またフィルタフレームワーク219のランタイムに、インストールされた複数のフィルタクラス402の具体クラスを管理するためのinstalledFilter属性410を備えている。
フィルタ抽象クラス402は、各種のフィルタクラスを抽象化する抽象クラスである。このフィルタ抽象クラス402は、フィルタ名称を示す「name」属性などを備える。また、入力(input)属性として、入力ストリーム(InputStream)抽象クラス403を継承したクラスのオブジェクトへの参照を有している。また出力(output)属性として、出力ストリーム(OutputStream)抽象クラス404を継承したクラスのオブジェクトへの参照を有している。フィルタ抽象クラス402の具体クラスは、Runnableインターフェース411を実装し「run」メソッドを有している。フィルタ管理クラス401のオブジェクトが、管理している各種のフィルタ抽象クラス402のインスタンスを生成してデータストリームのフィルタ処理のために配置する時、配置される各フィルタオブジェクトに対応してスレッドを生成し、並行して動作するスレッドの実行コンテクストでフィルタオブジェクトのrunメソッドを実行する(即ち、コンストラクタのパラメータにフィルタオブジェクトを渡してJava(登録商標).lang.Threadオブジェクトを生成し、startする)。このようにして個々のフィルタオブジェクトは自律的に動作する。
入力ストリーム抽象クラス403は、データストリームの入力元の抽象クラスで、呼び出しの度に、逐次的にデータを読み出すことができるreadメソッドを備える。
出力ストリーム抽象クラス404は、データストリームの出力先の抽象クラスで、呼び出しの度に、逐次的にデータを書き込むことのできるwriteメソッドを備える。
コネクタクラス405は、インタプリタ環境のオブジェクトとネイティブコードとの間でデータストリームを交換するための接点を表現したオブジェクトのクラスである。コネクタクラス405は、入力ストリーム抽象クラス403を継承した具体クラスであるConnectorInputStreamクラス412のオブジェクトをコンポジションとして持ち、そのreadメソッドによって、ネイティブコード201のデータ送受信モジュール202から流れたデータストリーム306を逐次的に読み出すことができる。また、コネクタクラス405は、出力ストリーム(OutputStream)抽象クラス404を継承したConnectorOutputStreamクラス413のオブジェクトもコンポジションとして持ち、そのwriteメソッドによって逐次的に書き込んだデータストリームは、ネイティブコード201のジョブ制御モジュール205へデータストリームとして流れる。
パイプ(Pipe)クラス405は、データストリームに対して複数のフィルタリング処理を施す際にフィルタクラス402の一連のオブジェクト間を連結するために用いるオブジェクトのクラスである。このパイプクラス405は、出力ストリーム抽象クラス404を継承したPipedOutputStreamクラス414と、入力ストリーム抽象クラス403を継承したPipedInputStreamクラス415のそれぞれのオブジェクトをコンポジションとして持つ。パイプオブジェクトのPipedOutputStreamオブジェクト414とPipedInputStreamオブジェクト415とは接続されていて、スレッド間通信を実現している。即ち、あるフィルタオブジェクトが、あるパイプオブジェクトが持つPipedOutputStreamオブジェクトへwriteメソッドによって逐次的に書き込んだデータストリームを、別のフィルタオブジェクトが、そのパイプオブジェクトが持つPipedInputStreamオブジェクトからreadメソッドによって逐次的に読み出すことができる。
図6は、インタプリタ環境215に構築されるフィルタフレームワーク219が管理するオブジェクトのインスタンス図で、図6(A)は、1つのフィルタが有効な状態のとき、フィルタフレームワーク219のランタイムが管理しているオブジェクト間の関係を示している。
コネクタ(Connector)オブジェクト501は、コネクタクラス405のオブジェクトである。フィルタオブジェクト502は、フィルタ抽象クラス402を具体化した具体クラスのオブジェクトである。フィルタオブジェクト502の入力属性には、コネクタオブジェクト501が持つConnectorInputSteamオブジェクトの参照が保持されている。また出力属性にも、コネクタオブジェクト501が有するConnectorOutputStreamオブジェクトの属性が保持されている。フィルタオブジェクト502は、「input」の指すConnectorInputStreamオブジェクトからreadしたデータストリームに対してフィルタ処理を施す。こうしてフィルタ処理を施したデータストリームを、「output」の指すConnectorOutputStreamオブジェクトへwriteする。
以上のようにして、プリントデータストリームのオブジェクト間での引き渡し(図の太い矢印)が実現される。
図6(B)は、2つのフィルタが有効な状態のとき、フィルタフレームワーク219のランタイムが管理しているオブジェクト間の関係を示している。
フィルタ1オブジェクト503は、フィルタ抽象クラス402を具体化した具体クラスのオブジェクトである。フィルタ1オブジェクト503の入力属性には、コネクタオブジェクト501が持つConnectorInputStreamオブジェクトの参照が保持されている。フィルタ1オブジェクト503は、inputの指すConnectorInputStreamオブジェクトからreadしたデータストリームに対してフィルタ処理を施す。フィルタ1オブジェクト503の出力属性には、パイプオブジェクト504が持つPipedOutputStreamオブジェクトの参照が保持されており、フィルタ1オブジェクト503はフィルタ処理を施したデータストリームをoutputの指すPipeedOutputStreamオブジェクトへwriteする。
パイプオブジェクト504は、パイプクラス405のオブジェクトである。このパイプオブジェクト504は、PipedOutputStreamオブジェクトとPipedInputStreamオブジェクトとを接続された状態で持つ。パイプオブジェク504が持つPipedOutputStreamオブジェクトのwriteメソッドの呼び出しによって引き渡されたデータストリームは、パイプオブジェクト504が持つPipeInputStreamオブジェクトのreadメソッドの呼び出しによってデータストリームとして読み出すことができる。
フィルタ2オブジェクト505は、フィルタ抽象クラス402を具体化した具体クラスのオブジェクトで、この入力属性にはパイプオブジェクト504が持つPipedInputStreamの参照が保持されており、inputの指すパイプオブジェクト504からreadしたデータストリームに対してフィルタ処理を施す。また、このフィルタ2オブジェクト505の出力属性にはコネクタオブジェクト501が持つConnectorOutputStreamの参照が保持されており、フィルタ処理を施したデータストリームをoutputの指すConnectorオブジェクト501が持つConnectorOutputStreamへwriteする。
以上のようにして、プリントデータストリームのオブジェクト間での引き渡し(図の太い矢印)が実現される。また、同様にして間にパイプオブジェクト504を挟みこみながら、より多くのフィルタオブジェクトをデータストリーム処理のために配置することもできる。
図7(A)〜(C)は、本実施の形態に係るフィルタフレームワーク219を操作するためのユーザインターフェース例を説明する図である。このフィルタフレームワークを操作するためのユーザインターフェースは、標準ライブラリとフレームワーク217(図1)に含まれるHTTPサービスによってウエブ(Web)アプリケーション(Servlet)として実装されており、クライアントで動作するWebブラウザから操作される。或は、Applet型サービスとして実装して、画像処理装置1000の操作パネル19から操作するように構成してもよい。
図7(A)は、この実施の形態の画像処理装置1000のフィルタフレームワーク219に新しいフィルタ221をインストールして追加するためのユーザインターフェースを示している。このフィルタインストール画面601は、ファイル名入力フィールド602、参照ボタン603及びインストールボタン604を備えている。
ユーザは、クライアントコンピュータのファイルシステムに予め格納されているインストールしたいフィルタクラス402のクラスファイルのファイルパスを、ファイル名入力フィールド602に入力する。
ユーザが、参照ボタン603をクリックすると、クライアントコンピュータのWebブラウザが提供するファイル選択ダイアログがオープンされて、クライアントコンピュータのファイルシステム内をブラウズして、インストールしたいフィルタクラス402のクラスファイルを選択できる。このファイル選択ダイアログによってユーザが選択したファイルのファイルパスは、自動的にファイル名入力フィールド602に入力される。
次にユーザが、インストールボタン604をクリックすると、クライアントコンピュータのWebブラウザによって、ファイル名入力フィールド602に入力されたファイルパスのクラスファイルが、この画像処理装置1000で待機している新規フィルタインストールのためのWebアプリケーションに送信される。こうしてクラスファイルを受信したWebアプリケーションは、この画像処理装置1000の不揮発性メモリ3に、その受信したクラスファイルを格納する。また、そのクラスファイルをインタプリタ環境215に動的にロードしてオブジェクトインスタンスを生成する。そして、その生成したフィルタオブジェクトを、フィルタフレームワークランタイムが管理する有効フィルタ列のリストの最下流に配置する(このとき、既に有効なフィルタオブジェクトがフィルタ列に存在すれば、新規のフィルタオブジェクトを連結するために新たなパイプオブジェクトを生成する)。
このようなユーザインターフェースをWebアプリケーションとして実装している場合には、フィルタの実装クラスの装置1000へのアップロードは、RFCによって定められたHTMLフォームに基づくファイルアップロードの仕様を利用している。従って、この場合、ファイル名入力フィールド602と参照ボタン603はクライアントコンピュータのWebブラウザによって表示されており、インストールボタン604はフォームのsubmitに対応している。
また、このユーザインターフェースをApplet型のサービスとして実装する場合には、この画面601は、画像処理装置1000の操作パネル18の表示部に表示される。ファイル名入力フィールド602で指定されるファイルは、画像処理装置1000がリムーバブル記憶メディアを備える場合は、そのリムーバブル記憶メディア中のファイルパスを指定しても良い。また或は、ネットワーク経由で画像処理装置からHTTPやFTP等のファイル転送プロトコルによって読み出しアクセス可能な共有ファイルを、URLなどによって指定してもよい。
図7(B)は、本実施の形態に係る画像処理装置1000のフィルタフレームワーク219にインストールされているフィルタを配置するためのユーザインターフェースを説明する図である。
このフィルタ配置画面605において、表606は、フィルタフレームワーク219のランタイムにインストールされているフィルタ群を一覧表示している。この表606の各行は、インストールされているフィルタのそれぞれに対応している。また、この表606の「選択」列にはチェックボックスが並んでおり、ここでチェックされた行のフィルタが後述する操作の対象として選択される。表606の「順序」列には、そのフィルタが無効状態にある場合には「無効」が表示される。また有効状態にある場合には、そのデータストリーム処理の上流から下流に向かって昇順に付された番号が表示される。そして表606の「名称」列には、そのフィルタオブジェクトのname属性に記述されたフィルタ名称が表示される。
607〜611は、選択されたフィルタに対する操作を指示するためのボタンであり、表606の選択列でチェックされた行のフィルタを対象とする操作を指示する。ユーザが、詳細表示ボタン607をクリックすると、表606で選択されたフィルタに関する詳細情報が表示される。この詳細情報としては、フィルタの名称やバージョン、説明、クラス名、インストール元のクラスファイル名(ファイルパスやURL)、インストールされた日時などがある。
上へボタン608がクリックされると、選択されたフィルタのフィルタ列内における順序をデータストリーム処理の上流方向に一段階だけアップする。一方、下へボタン609がクリックされると、選択されたフィルタのフィルタ列内における順序が、データストリーム処理の下流方向に一段階だけダウンさせる。有効/無効のトグルボタン610がクリックされると、選択されたフィルタが有効状態にある場合は無効状態に変更され、無効状態にある場合には有効状態に変更される。無効状態にされたフィルタオブジェクトは削除されるが、フィルタクラス402はインストールされた状態で残って、フィルタフレームワークランタイムの管理下に留まる。アンインストールボタン611がクリックされると、選択されたフィルタのクラスファイルを画像処理装置1000のインタプリタ環境から削除する。
図7(C)は、フィルタがデータストリームを対象としたものかを選択するユーザインターフェース例を示す図である。
フィルタインストール画面601やフィルタ配置画面605を表示する前段階で、この対象データストリームの選択画面612を表示してユーザに選択させることにより、ユーザがフィルタ処理に関するインストールや設定を望むデータストリームを決定できる。
リスト613は、画像処理装置1000内に存在するデータストリームをリスト形式で選択するためのユーザインターフェースである。フィールド614は、リスト613から選択されたデータストリームを表示する。決定ボタン615は、フィールド614で指定されているデータストリームに対するフィルタのインストールと、管理を行うように決定するためのボタンである。このボタン615が押下されると、該当するデータストリームのフィルタインストール画面601やフィルタ配置画面605が表示される。
フィルタの処理対象となるデータストリームを選択する他の方法としては、フィルタ抽象クラス402にフィルタ属性を設け、フィルタのインストールやフィルタの管理時にフィルタ属性を参照することにより、フィルタ対象データストリームを特定するようにしても良い。
図8は、本実施の形態に係るフィルタ処理の主要な手順を示すフローチャートである。
この手順は、具体的なフィルタクラスのrunメソッドとして実装されている。フィルタフレームワーク219は、有効なフィルタクラスのオブジェクトを生成し、その入力ストリームと出力ストリームをセットアップした後に、このオブジェクトのrunメソッドを実行するためにスレッド(Threadオブジェクト)を割り当てる。これにより、フィルタフレームワーク219が管理する各フィルタオブジェクトにおいて、この手順がそれぞれ自律的に並行処理で実行される。
まずステップS1で、必要な前処理を行う。この前処理には、フィルタ221が内部的に利用する属性の初期化や、パターンマッチングに使用するパターン記述に対する前処理、入力ストリームや出力ストリームをより使いやすくする機能を付加する(例えば入力ストリームを先読み可能にしたり、システムリソースを有効に利用するためにバッファリングを拡張したりする)ための修飾クラス(Java(登録商標).io.FilterInputStreamやJava(登録商標).io.FilterOutputStreamの具体クラス)によってストリームをラップする処理などが含まれる。次にステップS2で、入力属性にセットされている入力ストリームからパターンマッチング処理に必要な量のデータを読み出す。そしてステップS3で、入力したデータストリームから、このフィルタが操作するべきデータパターンの出現を発見するためにパターンマッチングを行う。このフィルタが操作するべきデータパターンは、固定のデータ列そのものでも良く、或は正規表現(regular expression)等の形式言語による記述でもよい。尚、パターン記述に合致するデータの出現をデータストリーム中から発見するための各種の実装は広く知られており、例えばgrep、sed、AWK、Perlなどが有名である。
パターンマッチングを効率良く行うためのアルゴリズムはよく研究されている。固定のパターン記述の場合には、まずパターン記述と部分データストリームのそれぞれのハッシュ関数を比較し、ハッシュ値が一致した場合のみ両者の完全一致を判定する方法や、Knuth-Morris-Prattの方法や、Boyer-Mooreの方法などが知られている。正規表現などによるパターン記述の場合も、有限オートマトンなどの形式言語理論を背景とする各種のアルゴリズムが知られている。比較的最近のJava(登録商標)プラットフォームでは、正規表現を扱うためのクラスライブラリが標準に備わってもいる(Java(登録商標).util.regex)。例えばデータストリームの上流のパターンに応じて状態が変化し、その変化した状態に従って下流のパターンの解釈を変えなければならない場合であって、正規表現などでは、却って記述が困難なほど複雑なパターンマッチングが必要とされる場合には、そのパターンの特徴そのものを評価するアルゴリズムをJava(登録商標)プログラムとして書き下してもよい。このようにして、どれほど複雑なパターンマッチングであっても素直に実装することができる。
次にステップS4で、パターンマッチングの結果を判定し、パターン記述に合致するデータをデータストリーム中に発見した場合はステップS5に進むが、そうでなければステップS6に進む。ステップS5では、パターン記述に合致したデータストリームの部分データ列に対してこのフィルタの目的に応じた操作を施し、その結果で置き換える。次にステップS6で、処理済の部分データ列(即ち、監視しているパターンが現れなかったデータ列、或は、監視しているパターンを含むデータ列に対してステップS5の処理を施したデータ列)を出力ストリームに書き込む。そしてステップS7で、入力ストリームが終了したかどうかを判定し、終端を迎えた場合は終了するが、そうでなければステップS2に戻って、上記の手順を繰り返す。
図9は、本実施の形態に係るフィルタ処理の手順の更なる一例を示すフローチャートである。
この手順は、具体的なフィルタクラスのrunメソッドとして実装されている。フィルタフレームワーク219は、有効なフィルタクラスのオブジェクトを生成し、その入力ストリームと出力ストリームをセットアップした後に、このオブジェクトのrunメソッドを実行するためにスレッド(Threadオブジェクト)を割り当てる。これにより、フィルタフレームワークが管理する各フィルタオブジェクトにおいて、この手順がそれぞれ自律的に並行処理で動作することになる。
まずステップS11で、必要な前処理を行う。この前処理には、フィルタが内部的に利用する属性の初期化や、パターンマッチングに使用するパターン記述に対する前処理、入力ストリームや出力ストリームを、より使いやすくする機能を付加する(例えば入力ストリームを先読み可能にしたりシステムリソースを有効に利用するバッファリングを拡張したりする)ための修飾クラス(Java(登録商標).io.FilterInputStreamやJava(登録商標).io.FilterOutputStreamの具体クラス)によってストリームをラップする処理などが含まれる。次にステップS12で、新たな部分データストリームを生成する。次にステップS13で、入力属性にセットされている入力ストリームから、予め定められた量のデータを読み出す。そしてステップS14で、その読み込まれたデータストリームに対して、ステップS12で生成された部分データ列を追加する。次にステップS15で、処理済の部分データ列を出力ストリームに書き込む。そしてステップS16で、入力ストリームに存在する残りデータを出力ストリームに書き込む。
図10は、本実施の形態に係る処理要求データストリームを説明する図である。
801は処理要求データストリームを示している。クライアントからの、この画像処理装置1000に対する処理の要求は、クライアントが処理要求データストリーム801を作成して画像処理装置1000に送信することにより行われ、要求された処理の実行は画像処理装置1000が、その処理要求データストリーム801を処理することで実行される。この処理要求データストリーム801は、大きく装置制御指示データストリーム802(図3の351に相当)と描画データストリーム803(図3の352に相当)に分けることができる。
装置制御指示データストリーム部802では、この画像処理装置1000への、描画以外の処理要求に関する指示が記述されている。具体的には、以下のような指示を行うことが一般的に知られており、画像処理装置1000が備える機能により規定されている。1行目の「ジョブ種類」の属性は、「印刷」、「セキュアプリント」、「画像取得」等の値を取り得、この画像処理装置1000が備える各種ジョブのタイプを表している。「画像取得」等のように描画指示を行わない処理要求の場合は、描画データストリーム803は一般的には、このような処理要求データストリーム801に含まれない。2行目の「部数」の属性は、印刷物のコピーを何セット生成するかを表している。3行目の「ページレイアウト」の属性は、「1ページ/枚」「2ページ/枚」「4ページ/枚」など1枚の用紙に複数ページを面付けするための指定や、「ポスター(2×2)」、「ポスター(3×3)」などのように、1ページを拡大して複数枚の用紙に分割して印刷する指定のようなページレイアウト指定を表している。4行目の「配置順」の属性は、「左上から右向き」、「左上から下向き」、「右上から左向き」、「右上から下向き」等の値を取り、ページレイアウト時の各面の配置指定を表す。5行目の「印刷方法」の属性は、「片面印刷」、「両面印刷」、「製本印刷」等の値を取り、これにより印刷方法を表す。6行目の「とじ方向」の属性は、「長辺とじ(左)」、「長辺とじ(右)」、「短辺とじ(上)」、「短辺とじ(下)」などの値をとり、フィニッシング処理において複数枚の用紙を綴じる方向を表す。7行目の「排紙方法」の属性は、「指定しない」、「ソート」、「ステイプル」、「パンチ穴」などの値をとり、フィニッシングの方法を表す。8行目の「給紙」属性は、「自動」、「手差しトレイ」、「カセット」、「デッキ」、或は「普通紙」、「厚紙」、「色紙」、「OHP」などの値をとり、画像形成の対象とする用紙(転写紙)の給紙指定を表す。9行目の「使用PDL」は、処理要求内容が描画指示である場合に使用され、描画データストリームに使用されるPDLの種別を表している。
描画データストリーム部803は、処理要求内容が描画指示である場合に使用され、描画データストリームは一般的にはPDLで構成される。
図11は、本実施の形態に係る描画データストリーム803に対するフィルタが行う処理を説明する図である。
互換化フィルタ901は、この描画データストリーム803のフィルタクラスのオブジェクトを示し、入力データストリームに現れる描画データストリーム803における互換性の問題を解決する処理を施して出力ストリームに書き込む。この描画データストリーム803における互換性の問題として、ここでは代表的なPDLの一つであるAdobeのPostScript仕様を、各社ベンダが実装した画像処理装置間におけるベンダごとの解釈の差異に基づく問題と、その解決の例を説明する。
あるベンダの画像処理装置は、PostScriptの「setpagedevice」で「/DeferredMediaSelection」が真のときカスタム用紙扱いとして用紙要求をパネルに表示し、偽の場合には、指定されたサイズから±5の範囲で定型用紙を検索し、定型にない場合はPostScriptのPolicyに従うものと解釈して実装されていた。また別のベンダの画像処理装置では、「/DeferredMediaSelection」が真の場合は、指定されたサイズそのもののサイズ(範囲なし)で定型用紙を検索し、定型にない場合はカスタム用紙扱いとし、一方、偽の場合には、±5の範囲で定型用紙を検索し、定型にない場合はPostScriptのPolicyに従うように実装されていた。ここで、更に別のベンダが供給する基幹系システムのためのインフラストラクチャ環境が、これらの内の後者の解釈に基づく挙動を前提として構築されたとすると、印刷要求に対して前者の画像処理装置では、カスタム用紙扱いとなってしまい、「用紙なし」が操作パネルに表示されて印刷されない。従って前者の画像処理装置のベンダは、この互換性の問題に対して、できるだけ低コストでかつ速やかに解決することが求められる。このような要求に対しては、印刷要求データストリームに現れるsetpagedeviceの「/DeferredMediaSelection」パラメータを真(true)から偽(false)に変換することで、少なくとも暫定的に応えることができる。互換化フィルタ901は、このような問題を解決するために働くフィルタオブジェクトであり、入力データストリームから「/DefereedMediaSelection」が真(true)で指定されたsetpagedeviceに対するパターンマッチングを行い、マッチした場合は、偽(false)に置き換えた力データストリームを出力する。
902はフィルタへの入力データストリームの一例である、PostScriptのプリントデータである。2行目にパターンに合致する部分データが出現する。903は、入力データストリーム901がフィルタによりフィルタ処理されて出力された出力データストリーム例を示し、フィルタ処理されたPostScriptのプリントデータで示されている。この出力データストリーム903では、2行目のデータの中で「true」という文字列が「false」へ変更されている。
図12は、本実施の形態に係る描画データストリームに対してフィルタが実行するフィルタ処理を説明する図である。
上記の例では、画像処理装置間の仕様の差異に基づく互換性の問題を解決するために、フィルタによるデータストリームのパターンマッチングと置換の技術を用いたが、同様の技術を、画像処理装置の実装の不具合(ファームウェアのバグなど)を緊急回避するために用いることもできる。例えば、ある画像処理装置のあるバージョンのリリースにおいて、LIPS(登録商標)言語の「イメージ領域確保命令(VDM)」に指定されるイメージの幅が8の倍数でなければ描画不正が発生するというバグがあったとする。
1001は障害回避フィルタを示し、例えば、LIPS(登録商標)データストリーム1002から障害を発現させるパターンを発見(VDMのイメージ幅が「225」であり8の倍数でない)し、その障害を顕在化させず同等の機能を達成するために、1003で示すようなデータストリームに変換する。ここでは、VDMのイメージ幅を8の倍数で、「225」より大きい値である「232」)に変換している。
図13は、本実施の形態に係る描画データストリームに対する最適化フィルタが行う処理を説明する図である。
最適化フィルタ1101は、描画データストリームに対する最適化フィルタクラスのオブジェクトを示し、入力ストリームを読み出してデータストリーム中に現れる冗長に記述されたPDLデータを発見し、それをより効率の良い同機能のデータに変換して出力ストリームに書き込む。画像処理装置のドライバが生成するPDLデータストリームは、クライアントのプリント要求システムやアプリケーション側の都合によって、どうしても繰り返しなどの冗長な処理がパターンを含む傾向にある。このような冗長な記述パターンを一種の「慣用表現」として認識し、それをより高効率の等価な表現に置き換える。
1102は、フィルタ1101に入力される入力データストリームの一例を示す。この入力ストリーム1102では、1103で示すように、横長の長方形を塗りつぶすために3つの正方形の塗りつぶしを繰り返すように記述されている。1104は、この最適化フィルタ1101からの出力データストリームの一例を示している。ここではフィルタ1101は、冗長な繰り返しパターンを検出し、それを等価な1つの横長の矩形の塗りつぶし1105に書き換えている。
図14は、本実施の形態に係る装置制御指示データストリームに対する機能追加フィルタが行う処理を説明する図である。
1201は、装置制御指示データストリーム351に対する機能拡張フィルタクラスのオブジェクト例を示している。機能拡張フィルタ1201は、入力データストリーム1202を読み出して、その入力データストリームに応じて新たな機能を付加するためのデータ変換やデータ追加などの処理を施して、出力データストリームに書き込む。この機能拡張の例として、顧客システムが専用のPDLドライバを抱えていて、そのドライバが新しい画像処理装置の両面印刷や各種フィニッシングなどの新しい能力に未対応のときに、そのドライバを変更することなく画像処理装置1000のフィルタの対応によって、装置1000の新機能を活かす場合で説明する。
機能拡張フィルタ1201は、そのフィルタが稼動している画像処理装置の新しい能力を活かすための装置制御指示設定をその属性として持つ。フィルタオブジェクトの属性値は、装置の不揮発性メモリにも保存され、装置の電源が落とされて再起動された場合であってもオブジェクトの状態は保存される。具体的には前述のように画像処理装置が備える機能により規定されている。
入力データストリーム1202は,印刷データストリームの機能拡張フィルタ1201に入力されるデータストリームであり、画像処理装置1000が受信した旧来のアプリケーションや、画像処理装置のドライバが生成する処理要求データストリームが画像処理装置内で分割された装置制御指示データストリーム351である。
出力データストリーム1203は、この装置制御指示データストリームの機能拡張フィルタ1201が逐次処理を行って出力するデータストリームを示す。入力データに存在した単純な処理要求データストリームに加えて、画像処理装置1000の新機能を使いこなすための各種のプリントジョブ記述データが挿入されている。プリントジョブ記述は入れ子構造を表現できるようになっており、ジョブ単位、複数の文書をまとめたフィニッシングなどの処理単位、個々の文書単位のそれぞれの階層において、機能拡張フィルタ1201の属性のような各種属性の指定が可能である。
この出力データストリーム1203において、1行目の「SetJob」は、ジョブ単位の設定の開始を表す。2行目の「ジョブ設定データ」は、この位置に各種のジョブ単位の設定データが存在することを示す。3行目の「BinderStart」は、複数文書をひとまとめにする単位の開始を表す。4行目の「SetBinder」は、複数文書をまとめた単位に対する設定の開始を表す。5行目の「文書束設定データ」は、この位置に複数文書をまとめた単位に対する設定データが存在することを示す。6行目の「DocumentStart」は文書の開始を表すデータである。7行目の「SetDocument」は、文書単位の設定の開始を表す。8行目の「文書設定データ」は、この位置に文書を単位とする設定データが存在することを示す。
図15は、機能拡張フィルタ1201を操作するためのユーザインターフェース例を示す図である。
フィルタ操作のためのユーザインターフェースは、標準ライブラリとフレームワーク217に含まれるHTTPサービスによって、Webアプリケーション(Servlet)として実装されており、クライアントで動作するWebブラウザから操作される。或は、Applet型サービスとして実装して、画像処理装置1000の持つ操作パネル18から操作するように構成してもよい。
1301は、機能拡張フィルタ1201の基本操作画面を示し、この画面を使用して、フィルタオブジェクト属性の確認や変更など操作できる。1302は、ジョブ種類の属性を操作するのに使用される。1302は、部数属性を設定するのに使用される。1303は、ページレイアウト属性を設定するのに使用される。1304は、配置順の属性を設定するのに使用される。1305は、印刷方法の属性を設定するのに使用される。1306は、とじ方向の属性を設定するのに使用される。1307は、排紙方法の属性を設定するのに使用される。1308は、給紙属性を設定するのに使用される。ヘルプボタン1309は、このフィルタの使い方、機能、属性の意味などの説明を表示するのに使用される。「標準に戻す」ボタン1310は、各種属性をデフォルト値に戻す場合に指示される。適用ボタン1311は、属性値の変更操作が適用され、新しい値を実際にフィルタオブジェクトの属性として設定するために使用される。1313はプレビューアイコンを示し、各種属性を画面上で確認するために、いくつかの重要な属性についてその値の状態に応じた模式図が表示される。
以上説明したように本実施の形態1によれば、以下のような効果がある。
(1)プリント要求受信サーバをファームウェアとして静的に実装し、その受信サーバで受信したデータストリームを、組み込みJava(登録商標)環境上に実装した動的ロードや動的リンク可能なフィルタソフトウェアに引き渡すインターフェースを設けた。これにより、安定部分と動的部分を明確に分離できるため、装置のファームウェア全体を動的で冗長なソフトウェアに置き換えるといった非効率な処理や、Java(登録商標)環境側に実装して二重に持ってしまうといった非効率も防止できる。これにより、コスト面でも、また開発の負荷の面でも合理性のあるフィルタフレームワークが実現できた。更に、納入済みの装置に対するフィルタの動的な追加や置き換えを容易にできるため、低いサポートコストでより迅速に顧客のニーズに対処できる。
(2)より洗練されたJava(登録商標)環境でフィルタを実装するため、通常、組み込みシステムでは困難な動的なメモリ管理が有効な高度なパターンマッチングアルゴリズムを容易に実装できる。また高度にモジュール化された再利用性の高いソフトウェアとして設計するため、オブジェクト指向パラダイムに基づくデザインパターンを容易に採用できる。その結果、生産性の高いフィルタ部の実装を実現できる。
(3)フィルタにより、パターンマッチングを用いて、入力データストリームから他の実装との互換性点で問題となるPDLデータを発見し、そのPDLデータを適正に変更することができる。これにより、互換性の問題や障害を低コストで解消できた。特に、顧客環境におかれたシステムや、アプリケーションや画像処理装置のドライバに影響を及ぼすことなく、画像処理装置側に閉じた対応だけで達成できる。また、フィルタを配置しない場合には、フィルタフレームワークが介在することによるオーバヘッドを回避できる構成であるため、フィルタを配置しない場合にも画像処理装置本来のデータ処理性能を維持できている。
(4)Java(登録商標)環境に柔軟に拡張可能なフィルタで、冗長な記述パターンを一種の「慣用表現」として認識し、それをより高効率の等価な表現に置き換えることができ、PDLの処理システムの主要部には全く影響を与えずに印刷処理のパフォーマンスを改善できる。画像処理装置側で閉じて最適化処理を行うので、顧客環境のシステムやアプリケーションや画像処理装置ドライバを改造する必要もない。またフィルタの生産性が高く、インストールなどのメンテナンスも容易であるため、各顧客の利用形態に即した最適化を行うことができる。
(5)Java(登録商標)環境に柔軟に拡張可能なフィルタに、新機能を活かすために必要なデータを追加することで、画像処理装置の新機能に対応していない顧客環境のシステムやアプリケーションや画像処理装置ドライバと組み合わせる場合であっても新しい機能を使いこなすことが可能となる。
(6)Java(登録商標)環境がファームウェアの更にもう一層のソフトウェアプラットフォームとして、そのファームウェアで動作するフィルタのために、追加機能の設定を操作するためのユーザインターフェースをフィルタに備えたことにより、顧客の利用形態に即して個別対応した機能拡張が提供できる可能性もある。
(7)フィルタ処理を、装置の制御に関する指示命令で構成される装置制御データストリーム部、PDLなど描画に関する指示命令で構成される描画データストリーム部のそれぞれに対して最適なフィルタ処理が可能となった。
[実施の形態2]
図16は、本発明の実施の形態2に係る送信用データストリーム1401を説明する図で、この実施の形態2に係るハードウェア構成及びソフトウェア構成は前述の図1〜図4と同じであるため、その説明を省略する。
クライアントからの処理要求に応じて、画像処理装置1000は、クライアントが指定した先へ画像データなどを送信する。その際、画像処理装置1000は、この送信用データストリーム1401を生成し、データ送受信モジュール202より送信する。送信用データストリーム1401は、送信用データストリームのジョブ種類を記載しているデータストリーム部1402と、画像データストリーム1403に大別できる。このデータストリーム部1402には、画像データそのもの以外の情報が記述されている。このデータストリーム部1402のフォーマットは、画像処理装置1000が備える機能により規定されている。このデータストリーム部1402は、データ送信処理を行う際に、ジョブ制御モジュール205、或は組み込みアプリケーション203により画像データに付加され、送信用データストリームとしてデータ送受信モジュール202から送信される。画像データストリーム部1403は、画像読み取り部19から入力されたスキャン画像データストリーム360(図3)が画像処理モジュール209で処理されることで生成される。尚、ここで送信用データストリーム1401、データストリーム部1402、画像データストリーム1403は前述のように、それぞれフィルタ処理が可能である。
以上説明した実施の形態2によれば、画像処理装置内に存在するスキャン画像データストリーム360、画像データストリーム、送信用データストリーム359のそれぞれに対して最適なフィルタ処理が可能となった。
[他の実施の形態]
上記以外の画像処理装置内に存在するデータストリームとしては、PDLが処理されることで生成されるディスプレイリスト355、画像処理装置において最終的に生成される最終画像データストリーム357、最終画像データストリーム357を生成するために生成される中間画像データストリーム356などがあり、それぞれ画像処理装置が備える機能により形式が規定されている。前述と同様の構成により、それぞれのデータストリームに対して最適なフィルタ処理を行うことができる。
印刷データストリーム中の制御データでなく、印刷対象の文字データ列中から特定の文字列パターンの出現を発見し、特定の文字列パターンに合致した場合に、その文字列に相当する制御データを生成して置換または挿入するような機能拡張フィルタを構成することもできる。この場合は例えば、顧客がワードプロセッサのようなアプリケーションを使用してテキストとして特定文字列を入力し、それを画像処理装置の通常のドライバ経由でプリントする際、画像処理装置側のフィルタにおいて、例えば特定文字列を、それに対応する画像(ロゴやマークや透かしなど)を描画するためのベクタ描画命令などの命令列に変換してもよい。
上記実施の形態では、ファームウェア内部のインタプリタ環境としてJava(登録商標)の仮想マシン環境を用いたが、本発明はこれに限定されるものではない。他のスクリプト言語などのインタプリタ環境をファームウェアに組み込んで構成した場合であっても、動的なフィルタ追加とファームウェア部分の分離など同様の効果が得られる。
また、オブジェクト指向など高効率の開発を可能とするインタプリタ環境は他にも多く存在し、これらを用いてもフィルタ生産性など同様の効果が得られる。特にパターンマッチングに基づくデータストリームの処理に関しては、sed,AWK,Perlなどの選択肢も適している。
[他の実施形態]
以上、本発明の実施の形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、または一つの機器からなる装置に適用しても良い。
なお本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが、その供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。その他のプログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明のクレームに含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件を満足するユーザに対してインターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
またコンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
本実施の形態に係る画像処理装置のハードウェア構成を説明するブロック図である。 本実施の形態に係るコントローラのソフトウェア構造を説明する階層図である。 本実施の形態に係るコントローラのソフトウェアモジュール間の基本的なデータの流れと、各モジュールにおいて存在するデータストリームを示す図である。 本実施の形態に係るコントローラのソフトウェアモジュール間の基本的なデータの流れと、フィルタ処理時のデータの流れを説明する図である。 本実施の形態のインタプリタ環境に構築されるフィルタフレームワークのクラスを説明する図である。 本実施の形態のインタプリタ環境に構築されるフィルタフレームワーク219が管理するオブジェクトのインスタンス図で、図6(A)は、1つのフィルタが有効な状態のとき、フィルタフレームワークのランタイムが管理しているオブジェクト間の関係を示し、図6(B)は、2つのフィルタが有効な状態のとき、フィルタフレームワークのランタイムが管理しているオブジェクト間の関係を示している。 本実施の形態に係るフィルタフレームワークを操作するためのユーザインターフェース例を説明する図である。 本実施の形態に係るフィルタ処理の主要な手順を示すフローチャートである。 本実施の形態に係るフィルタ処理の手順の更なる一例を示すフローチャートである。 本実施の形態に係る処理要求データストリームを説明する図である。 本実施の形態に係る描画データストリームに対するフィルタが行う処理を説明する図である。 本実施の形態に係る描画データストリームに対してフィルタが実行するフィルタ処理を説明する図である。 本実施の形態に係る描画データストリームに対する最適化フィルタが行う処理を説明する図である。 本実施の形態1に係る装置制御指示データストリームに対する機能追加フィルタが行う処理を説明する図である。 機能拡張フィルタを操作するためのユーザインターフェース例を示す図である。 本発明の実施の形態2に係る送信用データストリームを説明する図である。

Claims (30)

  1. ハードウェアを構成するプロセッサによって処理される第1命令群に基づいて構築されたネイティブ環境で、前記第1命令群とは独立に定義された第2命令群に基づいて構築されたプログラムを動的に実行するインタプリタ環境を備える画像処理装置であって、
    前記ネイティブ環境で、前記画像処理装置に対する制御指示を行う装置制御指示データストリームと前記画像処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信手段と、
    前記ネイティブ環境で、前記入力データストリームを前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成するデータ処理手段と、
    前記インタプリタ環境で、前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ手段と、
    前記ネイティブ環境で、前記フィルタ手段との間で前記中間データストリームの前記装置制御指示データストリームと描画データストリームとのそれぞれの取り出し、及び書き戻しを行うインターフェース手段と、
    前記ネイティブ環境で、前記インターフェース手段を介して取り出した前記中間データストリームの前記装置制御指示データストリームと描画データストリームとをそれぞれ、対応する前記インタプリタ環境のフィルタ手段へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース手段を介して書き戻すフィルタ管理手段と、
    を有することを特徴とする画像処理装置。
  2. 前記フィルタ手段により処理された中間データストリームを情報処理装置に送信する送信手段を更に有することを特徴とする請求項1に記載の画像処理装置。
  3. 前記クライアントは、ネットワークを介して接続された情報処理装置或は前記画像処理装置に内蔵されていることを特徴とする請求項1又は2に記載の画像処理装置。
  4. 前記フィルタ手段が有効な状態で配置されている場合、前記インターフェース手段を介して前記中間データストリームを前記フィルタ手段へ引き渡し、前記フィルタ手段が有効な状態で配置されていない場合、前記中間データストリームを次のモジュールへ引き渡す制御手段を更に有することを特徴とする請求項1に記載の画像処理装置。
  5. 前記フィルタ手段によるフィルタ処理は、前記中間データストリームに新たなデータストリームを追加する処理を含むことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
  6. 前記フィルタ手段によるフィルタ処理は、前記中間データストリームの特定データストリームを、他のデータストリームで置換する処理を含むことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
  7. 前記インタプリタ環境のユーザインターフェースを用いて、前記フィルタ手段における処理パラメータを操作する手段を更に有することを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
  8. 前記インタプリタ環境は、当該インタプリタ環境上で動作するプログラムのためのスレッド機構を提供し、前記フィルタ手段は前記スレッド機構による独立した実行コンテクストの下で自律的にフィルタ処理を実行することを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
  9. 前記インタプリタ環境は、Java(登録商標)プラットフォームに基づくことを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
  10. 画像処理装置であって、
    前記画像処理装置に対する制御指示を行う装置制御指示データストリームと前記画像処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信手段と、
    前記入力データストリームを前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成し前記入力データストリームにより指示された内容に従った処理を行うデータ処理手段と、
    前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ手段と、
    前記フィルタ手段との間で前記装置制御指示データストリームと描画データストリームとのそれぞれの取り出し、及び書き戻しを行うインターフェース手段と、
    前記フィルタ手段によるフィルタ機能を選択する第1選択手段と、
    前記フィルタ手段によるフィルタ処理の対象となる前記装置制御指示データストリームと描画データストリームを選択する第2選択手段と、
    前記第2選択手段により選択された前記装置制御指示データストリーム或いは描画データストリームを前記インターフェース手段を介して取り出し、前記第1選択手段により選択された対応する前記フィルタ手段へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース手段を介して書き戻すフィルタ管理手段と、
    を有することを特徴とする画像処理装置。
  11. 前記フィルタ手段により処理された中間データストリームを情報処理装置に送信する送信手段を更に有することを特徴とする請求項10に記載の画像処理装置。
  12. 前記クライアントは、ネットワークを介して接続された情報処理装置或は前記画像処理装置に含まれていることを特徴とする請求項10又は11に記載の画像処理装置。
  13. 前記フィルタ手段によるフィルタ処理は、前記中間データストリームに新たなデータストリームを追加する処理を含むことを特徴とする請求項10乃至12のいずれか1項に記載の画像処理装置。
  14. 前記フィルタ手段によるフィルタ処理は、前記中間データストリームの特定データストリームを、他のデータストリームで置換する処理を含むことを特徴とする請求項10乃至12のいずれか1項に記載の画像処理装置。
  15. ハードウェアを構成するプロセッサによって処理される第1命令群に基づいて構築されたネイティブ環境で、前記第1命令群とは独立に定義された第2命令群に基づいて構築されたプログラムを動的に実行するインタプリタ環境を備える画像処理装置の制御方法であって、
    前記ネイティブ環境で、前記画像処理装置に対する制御指示を行う装置制御指示データストリームと前記画像処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信工程と、
    前記ネイティブ環境で、前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成するデータ処理工程と、
    前記インタプリタ環境で、前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ工程と、
    前記ネイティブ環境で、前記フィルタ工程との間で前記中間データストリームの前記装置制御指示データストリームと描画データストリームとのそれぞれの取り出し、及び書き戻しを行うインターフェース工程と、
    前記ネイティブ環境で、前記インターフェース工程を介して取り出した前記中間データストリームの前記装置制御指示データストリームと描画データストリームとをそれぞれ、対応する前記インタプリタ環境のフィルタ工程へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース工程を介して書き戻すフィルタ管理工程と、
    を有することを特徴とする画像処理装置の制御方法。
  16. 前記フィルタ工程で処理された中間データストリームを情報処理装置に送信する送信工程を更に有することを特徴とする請求項15に記載の制御方法。
  17. 前記クライアントは、ネットワークを介して接続された情報処理装置或は前記画像処理装置に含まれていることを特徴とする請求項15又は16に記載の制御方法。
  18. 前記フィルタ工程が有効な状態で配置されている場合、前記インターフェース工程を介して前記中間データストリームを前記フィルタ工程へ引き渡し、前記フィルタ工程が有効な状態で配置されていない場合、前記中間データストリームを次のモジュールへ引き渡す制御工程を更に有することを特徴とする請求項15に記載の制御方法。
  19. 前記フィルタ工程におけるフィルタ処理は、前記中間データストリームに新たなデータストリームを追加する処理を含むことを特徴とする請求項15乃至18のいずれか1項に記載の制御方法。
  20. 前記フィルタ工程におけるフィルタ処理は、前記中間データストリームの特定データストリームを、他のデータストリームで置換する処理を含むことを特徴とする請求項15乃至18のいずれか1項に記載の制御方法。
  21. 前記インタプリタ環境のユーザインターフェースを用いて、前記フィルタ工程における処理パラメータを操作する工程を更に有することを特徴とする請求項15乃至20のいずれか1項に記載の制御方法。
  22. 前記インタプリタ環境は、当該インタプリタ環境上で動作するプログラムのためのスレッド機構を提供し、前記フィルタ工程では前記スレッド機構による独立した実行コンテクストの下で自律的にフィルタ処理を実行することを特徴とする請求項15乃至21のいずれか1項に記載の制御方法。
  23. 前記インタプリタ環境は、Java(登録商標)プラットフォームに基づくことを特徴とする請求項15乃至22のいずれか1項に記載の制御方法。
  24. 画像処理装置の制御方法であって、
    前記画像処理装置に対する制御指示を行う装置制御指示データストリームと前記画像処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信工程と、
    前記入力データストリームを前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成し前記入力データストリームにより指示された内容に従った処理を行うデータ処理工程と、
    前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ工程と、
    前記フィルタ工程との間で前記装置制御指示データストリームと描画データストリームとをそれぞれの取り出し、及び書き戻しを行うインターフェース工程と、
    前記フィルタ工程によるフィルタ機能を選択する第1選択工程と、
    前記フィルタ工程によるフィルタ処理の対象となる前記装置制御指示データストリームと描画データストリームを選択する第2選択工程と、
    前記第2選択工程で選択された前記装置制御指示データストリーム或いは描画データストリームを前記インターフェース工程を介して取り出し、前記第1選択工程で選択された対応する前記フィルタ工程へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース工程を介して書き戻すフィルタ管理工程と、
    を有することを特徴とする画像処理装置の制御方法。
  25. 前記フィルタ工程で処理された中間データストリームを情報処理装置に送信する送信工程を更に有することを特徴とする請求項24に記載の制御方法。
  26. 前記クライアントは、ネットワークを介して接続された情報処理方法或は前記画像処理装置に含まれていることを特徴とする請求項24又は25に記載の制御方法。
  27. 前記フィルタ工程でのフィルタ処理は、前記中間データストリームに新たなデータストリームを追加する処理を含むことを特徴とする請求項24乃至26のいずれか1項に記載の制御方法。
  28. 前記フィルタ工程でのフィルタ処理は、前記中間データストリームの特定データストリームを、他のデータストリームで置換する処理を含むことを特徴とする請求項24乃至27のいずれか1項に記載の制御方法。
  29. ハードウェアを構成するプロセッサによって処理される第1命令群に基づいて構築された第1プログラム環境で、前記第1命令群とは独立に定義された第2命令群に基づいて構築されたプログラムを動的に実行する第2プログラム環境を備えるデータ処理装置であって、
    前記第1プログラム環境で、前記データ処理装置に対する制御指示を行う装置制御指示データストリームと前記データ処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信手段と、
    前記第1プログラム環境で、前記入力データストリームを前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成するデータ処理手段と、
    前記第2プログラム環境で、前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ手段と、
    前記第1プログラム環境で、前記フィルタ手段との間で前記中間データストリームの前記装置制御指示データストリームと描画データストリームとのそれぞれの取り出し、及び書き戻しを行うインターフェース手段と、
    前記第1プログラム環境で、前記インターフェース手段を介して取り出した前記中間データストリームの前記装置制御指示データストリームと描画データストリームとをそれぞれ、対応する前記第2プログラム環境のフィルタ手段へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース手段を介して書き戻すフィルタ管理手段と、
    を有することを特徴とするデータ処理装置。
  30. データ処理装置であって、
    前記データ処理装置に対する制御指示を行う装置制御指示データストリームと前記データ処理装置へ描画指示を行う描画データストリームとを含む入力データストリームを受信するデータストリーム受信手段と、
    前記入力データストリームを前記装置制御指示データストリームと描画データストリームとに分割して中間データストリームを生成し前記入力データストリームにより指示された内容に従った処理を行うデータ処理手段と、
    前記中間データストリームをフィルタ処理してフィルタ処理済のデータストリームを生成するフィルタ手段と、
    前記フィルタ手段との間で前記装置制御指示データストリームと描画データストリームとをそれぞれの取り出し、及び書き戻しを行うインターフェース手段と、
    前記フィルタ手段によるフィルタ機能を選択する第1選択手段と、
    前記フィルタ手段によるフィルタ処理の対象となる前記装置制御指示データストリームと描画データストリームを選択する第2選択手段と、
    前記第2選択手段により選択された前記装置制御指示データストリーム或いは描画データストリームを前記インターフェース手段を介して取り出し、前記第1選択手段により選択された対応する前記フィルタ手段へ引き渡し、前記フィルタ処理済のデータストリームを前記インターフェース手段を介して書き戻すフィルタ管理手段と、
    を有することを特徴とするデータ処理装置。
JP2004231433A 2004-08-06 2004-08-06 画像処理装置及びその制御方法 Expired - Fee Related JP4738773B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2004231433A JP4738773B2 (ja) 2004-08-06 2004-08-06 画像処理装置及びその制御方法
RU2007107809/09A RU2336558C1 (ru) 2004-08-06 2005-07-29 Устройство для обработки изображения и способ управления для него
KR1020077005338A KR100876022B1 (ko) 2004-08-06 2005-07-29 화상 처리 장치 및 그 제어 방법
PCT/JP2005/014373 WO2006013953A1 (en) 2004-08-06 2005-07-29 Image processing apparatus and control method thereof
EP05768567A EP1776635A4 (en) 2004-08-06 2005-07-29 IMAGE PROCESSING DEVICE AND CONTROL PROCEDURE THEREFOR
US11/573,258 US8171463B2 (en) 2004-08-06 2005-07-29 Image processing apparatus and control method thereof
CN2005100877156A CN1731350B (zh) 2004-08-06 2005-08-05 图像处理设备及其控制方法以及数据处理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004231433A JP4738773B2 (ja) 2004-08-06 2004-08-06 画像処理装置及びその制御方法

Publications (3)

Publication Number Publication Date
JP2006048535A JP2006048535A (ja) 2006-02-16
JP2006048535A5 JP2006048535A5 (ja) 2007-09-20
JP4738773B2 true JP4738773B2 (ja) 2011-08-03

Family

ID=35787231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004231433A Expired - Fee Related JP4738773B2 (ja) 2004-08-06 2004-08-06 画像処理装置及びその制御方法

Country Status (7)

Country Link
US (1) US8171463B2 (ja)
EP (1) EP1776635A4 (ja)
JP (1) JP4738773B2 (ja)
KR (1) KR100876022B1 (ja)
CN (1) CN1731350B (ja)
RU (1) RU2336558C1 (ja)
WO (1) WO2006013953A1 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757229B2 (en) * 2005-08-09 2010-07-13 International Business Machines Corporation Reflective, XML-based framework for the construction of common application launchers
JP2007164526A (ja) * 2005-12-14 2007-06-28 Canon Inc 情報処理装置及び方法
US20080055667A1 (en) * 2006-09-05 2008-03-06 Hiroshi Baba Image processing apparatus, image processing method, and recording medium
JP2008065479A (ja) * 2006-09-05 2008-03-21 Ricoh Co Ltd 画像処理装置、画像処理方法、及び、画像処理プログラム
JP4814030B2 (ja) * 2006-09-12 2011-11-09 株式会社リコー 画像処理装置、画像処理方法、画像処理プログラム
JP2008250980A (ja) * 2007-03-07 2008-10-16 Ricoh Co Ltd 画像処理装置、画像処理方法及び画像処理プログラム
US8595623B2 (en) 2007-03-07 2013-11-26 Ricoh Company, Ltd. Image processing including process of outputting preview image using database storing synthesizing data corresponding to finish processing condition
JP2008287363A (ja) * 2007-05-15 2008-11-27 Ricoh Co Ltd 画像処理装置、画像処理方法及び画像処理プログラム
JP5132260B2 (ja) * 2007-10-31 2013-01-30 株式会社リコー 画像処理装置、画像処理方法、画像処理プログラム
JP2009110437A (ja) * 2007-10-31 2009-05-21 Ricoh Co Ltd 情報処理装置及び情報処理方法
US8788795B2 (en) 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8250396B2 (en) 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8880853B2 (en) 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8452947B2 (en) 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8640141B2 (en) 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8386822B2 (en) 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8041740B1 (en) * 2008-03-04 2011-10-18 Amdocs Software Systems Limited Database system, method, and computer program product for recording entity state and type information for use during subsequent processing of data
JP5408904B2 (ja) * 2008-05-23 2014-02-05 キヤノン株式会社 情報処理装置、プレビュー方法、及びプログラム
JP5047139B2 (ja) * 2008-11-27 2012-10-10 富士ゼロックス株式会社 画像処理装置及びプログラム
JP5294892B2 (ja) 2009-01-14 2013-09-18 キヤノン株式会社 画像形成装置、装置、制御方法、及びプログラム
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8230201B2 (en) 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8145723B2 (en) 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8082315B2 (en) 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
RU2447607C1 (ru) * 2009-10-19 2012-04-10 Кэнон Кабусики Кайся Устройство обработки изображения, способ регулировки и машиночитаемый носитель
US8769614B1 (en) * 2009-12-29 2014-07-01 Akamai Technologies, Inc. Security framework for HTTP streaming architecture
US9152437B2 (en) * 2010-10-28 2015-10-06 Hewlett-Packard Development Company, L.P. Dynamically installing image processing
US8719539B2 (en) * 2011-06-30 2014-05-06 Red Hat, Inc. Using heuristics for field types of a structure to categorize dynamic memory allocations
US8725978B2 (en) * 2011-06-30 2014-05-13 Red Hat, Inc. Using symbol information for categorization of dynamic memory allocations
CN102385515B (zh) * 2011-10-21 2014-03-26 广州市久邦数码科技有限公司 一种基于Android系统的GO图像动画引擎
CN102637406B (zh) * 2012-02-24 2015-04-08 江苏海宝软件股份有限公司 一种led显示设计系统及方法
KR101465422B1 (ko) * 2013-07-18 2014-12-10 성균관대학교산학협력단 가상화 환경에서의 오픈지엘 그래픽 처리 방법
DE102013224422A1 (de) * 2013-11-28 2015-05-28 Siemens Aktiengesellschaft Rechensystem und Verfahren für die Bildverarbeitung
JP2015176401A (ja) * 2014-03-17 2015-10-05 株式会社リコー 情報処理システム、情報処理方法、及びプログラム
CN106095921B (zh) * 2016-06-07 2019-04-09 四川大学 面向海量数据流的实时并行分类方法
JP6975009B2 (ja) * 2017-10-10 2021-12-01 キヤノン株式会社 画像処理装置及びその制御方法、並びにプログラム
JP7020927B2 (ja) * 2018-01-09 2022-02-16 キヤノン株式会社 画像形成装置およびその制御方法
CN110058913B (zh) * 2019-03-25 2022-05-20 中国航空无线电电子研究所 显示列表管理方法
EP3857500B1 (en) * 2019-07-01 2023-06-07 Digimarc Corporation Watermarking arrangements permitting vector graphics editing

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01153132A (ja) 1987-12-11 1989-06-15 Olympus Optical Co Ltd 内視鏡用挿入補助具
CA2068102C (en) 1991-08-29 1996-10-01 Steven V. Rosekrans Dialog filtering
DE69332895T2 (de) 1992-12-09 2004-02-05 Discovery Communications, Inc. Operationszentrale für Fernsehversorgungssystem
AU3060097A (en) * 1996-05-14 1997-12-05 Ricoh Corporation Java printer
JP3683387B2 (ja) * 1997-08-01 2005-08-17 シャープ株式会社 ネットワークコンピュータ内蔵プリンタおよびこれを備えたコンピュータネットワークシステム
JPH11143656A (ja) * 1997-11-04 1999-05-28 Canon Inc 印刷システムおよび印刷システムのデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JPH11259644A (ja) * 1998-03-09 1999-09-24 Fuji Xerox Co Ltd 画像形成装置および画像形成方法
JPH11282684A (ja) 1998-03-27 1999-10-15 Canon Inc 画像処理装置、画像処理装置の制御方法、および記憶媒体
JPH11306107A (ja) 1998-04-20 1999-11-05 Ricoh Co Ltd ネットワーク通信システムおよびネットワーク通信システムにおける周辺機器のソフトウェア更新・配布方法並びにその方法をコンピュータに実行させるプログラムを記録した機械読み取り可能な記録媒体
US6266150B1 (en) * 1998-08-24 2001-07-24 International Business Machines Corporation Virtual printer
US6683696B1 (en) 1998-10-27 2004-01-27 Hewlett-Packard Development Company, L.P. Filter based data imaging method for an image forming device
EP1039367A3 (en) * 1999-03-25 2002-02-06 Seiko Epson Corporation Printer controller, printer control method, and data storage medium carrying computer program means
US6341018B1 (en) * 1999-04-23 2002-01-22 Electronics For Imaging, Inc. Preprocessing method for a variable data print job system
JP2001243034A (ja) * 2000-02-29 2001-09-07 Fujitsu Ltd 処理装置
US20020186393A1 (en) * 2001-06-11 2002-12-12 Pochuev Denis A. Document printing using format-specific translation modules
RU2208917C2 (ru) 2001-09-20 2003-07-20 Волков Борис Иванович Система цифрового телевидения
JP2003219090A (ja) * 2002-01-22 2003-07-31 Canon Inc 画像配信装置及び画像配信方法
JP4227342B2 (ja) * 2002-02-27 2009-02-18 キヤノン株式会社 画像形成装置、画像形成方法、および記憶媒体
US20040001218A1 (en) * 2002-06-27 2004-01-01 Christiansen Robert Douglas System and method for customizing an imaging device
EP1385089A3 (en) * 2002-07-26 2007-01-24 Ricoh Company, Ltd. Image forming apparatus, information processing apparatus, program execution method and program producing method
JP4066747B2 (ja) 2002-08-29 2008-03-26 株式会社村田製作所 測定装置
US7136941B2 (en) * 2002-12-04 2006-11-14 Microsoft Corporation Print management architecture for computing devices having a set of filters functions wherein the functions are prevented from conflicting with one another
JP4164467B2 (ja) * 2004-03-26 2008-10-15 キヤノン株式会社 画像処理装置、画像処理制御方法、及びプログラム
US7755786B2 (en) * 2004-05-03 2010-07-13 Microsoft Corporation Systems and methods for support of various processing capabilities
US7616342B2 (en) * 2004-12-03 2009-11-10 Xerox Corporation Mechanism for allowing content-independent imaging date stream object usage

Also Published As

Publication number Publication date
CN1731350A (zh) 2006-02-08
CN1731350B (zh) 2010-05-12
US20070240124A1 (en) 2007-10-11
JP2006048535A (ja) 2006-02-16
RU2336558C1 (ru) 2008-10-20
EP1776635A1 (en) 2007-04-25
KR100876022B1 (ko) 2008-12-26
EP1776635A4 (en) 2009-05-27
RU2007107809A (ru) 2008-09-20
KR20070040413A (ko) 2007-04-16
WO2006013953A1 (en) 2006-02-09
US8171463B2 (en) 2012-05-01

Similar Documents

Publication Publication Date Title
JP4738773B2 (ja) 画像処理装置及びその制御方法
JP4164467B2 (ja) 画像処理装置、画像処理制御方法、及びプログラム
JP2007164526A (ja) 情報処理装置及び方法
JP4240690B2 (ja) 情報処理装置と情報処理方法、及び情報処理システム、並びに記録媒体
JP5857611B2 (ja) 情報処理装置、システム、プログラム
US7158248B2 (en) Control of software via bundling
JP6489880B2 (ja) 画像形成装置、画像形成装置の制御方法、およびプログラム
US20120281245A1 (en) Information processing apparatus, information processing method, and storage medium
US9122428B2 (en) Information processing apparatus allowing a user certain print setting operations in an environment where an image processing apparatus is undetermined
US20070091361A1 (en) Printer, print control method, and program for executing print control method
JP3774684B2 (ja) 情報処理装置および情報処理装置のプリンタ設定方法およびプログラムおよび記録媒体
JP2006268467A (ja) 画像処理装置
JP2006215720A (ja) 画像処理装置及びその制御方法
JP2019215752A (ja) 印刷システム、印刷装置と情報処理装置及びその制御方法、並びにプログラム
JP2006072526A (ja) 情報処理装置およびセットアッププログラム
JP2019135650A (ja) 画像形成装置、画像形成装置の制御方法、およびプログラム
JP2019128856A (ja) プリンタードライバーのカスタマイズツール
JP2007201796A (ja) 画像形成装置
JP2011108174A (ja) データ処理装置、方法及びプログラム
JP2010134607A (ja) 印刷システム
GB2396716A (en) Revising software in a multi-functional printer by loading a software bundle

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070730

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100910

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110425

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110427

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees