説明

画像処理装置および画像処理方法

【課題】低優先度ジョブと高優先度ジョブとの並列動作処理を簡易に実現する画像処理装置を提供する。
【解決手段】複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換手段と、生成されたパケットデータに含まれる識別子により特定の画像処理手段が識別された場合に特定の画像処理手段にパケットデータを送信する送信手段と、切換手段によって特定の画像処理手段が実行する画像処理が切り換えられている場合に、送信手段により送信されたパケットデータに含まれる識別子を変更し、変更された識別子を含むパケットデータを他の画像処理手段に転送する転送手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像データを処理する画像処理装置と画像処理方法に関する。
【背景技術】
【0002】
従来、MFP等の画像処理装置で省メモリや複数機能の並列動作を効率的に実現するため、ページ画像をブロック分割し、画像圧縮された各ブロック画像データにヘッダ情報を付加したパケットデータを処理する画像処理装置が提案されている(特許文献1)。さらに、この画像処理装置におけるCPUのデータ管理/転送制御の負荷を軽減するために、特許文献2に記載されるようなPacketTable、ChainTableと、これらをハンドリング可能なDMAを備えた画像処理装置が提案されている。
【0003】
これらの従来技術を組み合わせることにより、CPUにかける負荷を抑え、かつ、複数機能の並列動作や、パケットデータを並列画像処理することで画像処理の高速化を可能とするようなシステムが広く用いられている。このようなシステムでは、各ブロック画像データに対して行う複数の画像処理に応じて、各画像処理部がチップ等で構成される。これらチップには、例えば、プリンタ出力の直前に行われる処理を実行するチップや、スキャナ入力の直後に行われる処理を実行するチップなどが含まれる。
【0004】
各チップは、並列処理や回路規模を考慮して適切に内部回路を構成する。例えば、ある特定の処理を行う機能は、それぞれのチップに並列に構成される。また、複数のチップのうち一部のチップの内部構成をソフトウェアのスケジューリング機能によって切り換える。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−008002号公報
【特許文献2】特開2002−281293号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、投入されたジョブには、プリンタやスキャナを使用するような優先度の高いジョブとその他の優先度の比較的低いジョブとが存在する。低優先度ジョブを複数のチップで実行している最中に、一部のチップを高優先度ジョブのために切換えを行って処理を行う場合には、CPUからのスケジューリングのソフトウェア処理が必要になる。
【0007】
このようなチップの切換えを行う場合、CPUから切換えを行うチップへの画像の転送を中断することが必要である。また、その中断時の情報(設定パラメータや動作進捗状況)を取得し、保持する必要がある。また、低優先度ジョブの再開時に、パラメータの再設定やデータ転送の再開などの再開処理を行う必要がある。そのような必要性のために、スケジューリングに要するソフトウェアの負荷が大きくなってしまうという問題点があった。
【0008】
そこで、上記の点に鑑み、本発明は、複数の画像処理手段に含まれる特定の画像処理手段が実行する機能が切り換えられている場合に、パケットデータに含まれる画像処理を実行する画像処理手段を識別するための識別子を適切に変更し、適切な画像処理手段へパケットデータを転送する画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するため、本発明に係る画像処理装置は、画像データを入力する入力手段と、前記入力手段により入力された画像データを画像処理するための複数の画像処理手段と、前記画像データの一部と前記画像処理手段を識別するための識別子を含む複数のパケットデータを生成する生成手段と、前記複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換手段と、前記生成手段により生成されたパケットデータに含まれる前記識別子により前記特定の画像処理手段が識別された場合に、前記特定の画像処理手段にパケットデータを送信する送信手段と、前記切換手段により前記特定の画像処理手段が実行する画像処理が切り換えられている場合に、前記送信手段により送信された前記パケットデータに含まれる前記識別子を変更し、変更された識別子を含むパケットデータを前記複数の画像処理手段に含まれる他の画像処理手段に転送する転送手段とを備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、複数の画像処理手段に含まれる特定の画像処理手段が実行する機能が切り換えられている場合に、パケットデータに含まれる画像処理を実行する画像処理手段を識別するための識別子を適切に変更し、適切な画像処理手段へパケットデータを転送する画像処理装置を提供することができる。
【図面の簡単な説明】
【0011】
【図1】本発明に係る第1の実施例における画像処理装置の内部構成を示す図である。
【図2】パケットデータのフォーマット例を示す図である。
【図3】ChainTabel、PacketTableの構成例を示す図である。
【図4】パケットデータの画像処理の手順を示すフローチャートである。
【図5】画像処理部に転送されたパケットデータを処理する手順を示すフローチャートである。
【図6】FuncL、FuncP、FuncSの機能を持つ画像処理部の構成例を示す図である。
【図7】本実施例における画像処理部の構成例を示す図である。
【図8】本実施例における他の画像処理部の構成例を示す図である。
【図9】画像処理部におけるパケット入出力インタフェースの構成例を示す図である。
【図10】パケット入出力インタフェースの処理の手順を示す図である。
【図11】Func切換え処理の手順を示す図である。
【図12】CommandがFunction切り替えについてのCommandでない場合のデータ群を示す図である。
【図13】各画像処理部でのパケット処理の概要を示す図である。
【図14】第2の実施例において、再構成可能回路を用いた画像処理部の構成例を示す図である。
【図15】ChipIDの変更について、第1の実施例と第3の実施例を比較する図である。
【図16】パケット入出力インタフェースによる効果を説明する図である。
【発明を実施するための形態】
【0012】
以下に、本発明を実施するための形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。また、初めに本実施例に必要となる構成ブロックについて説明し、次に、処理の詳細について説明する。
【0013】
[第1の実施例]
図1は、本発明に係る実施例における画像処理装置の内部構成を示す図である。ROM101は、CPU103のブートプログラムを格納する不揮発メモリデバイスである。RAM102は、プログラムや画像データを格納する揮発メモリデバイスである。CPU103は、後述のDMAや画像処理部等を制御するプログラムを実行する。複数の画像処理部104〜106は、パケットデータに含まれるブロック画像に対して各種画像処理をおこなう。例えば、プリンタ108に接続される画像処理部104では、プリンタ出力の直前におこなうのが好適な画像処理や、パケットデータをラスタデータに変換する機能、画像圧縮された画像を展開する展開器などが含まれる。以下、そのような機能をFuncPとする。また、入力手段として機能するスキャナ109に接続される画像処理部105では、スキャナ入力の直後におこなうのが好適な画像処理や、ラスタデータをパケットデータに変換する機能、生画像を画像圧縮する圧縮器などが含まれる。以下、そのような機能をFuncSとする。また、デバイスが接続されない画像処理部106では、RAM102から転送されてきたパケットデータを処理し、再び、RAM102に格納して以降の処理を継続するために、圧縮器、展開器、パケット/ラスタ変換機能、回転器等が含まれる。以下、そのような機能をFuncLとする。これらの画像処理部104〜106はリングバス上に接続されており、パケットデータのヘッダに含まれる画像処理情報に従って、いずれかの画像処理部で画像処理される。画像処理部104〜106の具体的な構成例は、後述する。
【0014】
OutputDMA110〜112は、パケットデータをRAM102の所定のアドレスから読み出し、リングバス上に接続された画像処理部104〜106の入力口である画像処理部104に入力する。また、InputDMA113〜115は、リングバス上に接続された画像処理部104〜106の出力口である画像処理部106から出力されてきたパケットデータを、RAM102の所定のアドレスに書き込む。これらのDMAは、プリンタ108へ画像データを出力するためには、OutputDMA110〜112のみを使用し、スキャナ109から画像データを入力するためには、InputDMA113〜115のみを使用する。また、RAM102からデータを読み出して、画像処理部104〜106で処理し、処理したパケットデータを再びRAM102へ書き戻すような処理をおこなう場合は、OutputDMA110〜112とInputDMA113〜115の両方を使用する。これらのOutputDMA、InputDMAは、一般的に用いられるChainTable、PacketTableにしたがって、パケットデータを転送するPacketDMAである。LAN116は、システム外部から、画像データを受信したり、Send用データを送信するためのNetwork I/Fである。HDD117は、画像データをスプールするための記憶装置である。
【0015】
図2、図3に、本実施例における画像処理装置のCPU103により生成されるパケットデータのフォーマット例と、ChainTabel、PacketTableの構成例を示す。以下に、パケットヘッダ201に含まれる情報について説明を行なう。パケットのタイプは、パケットヘッダ201内のPcktType204で区別され、Data、Command、Interrrupt等が設定できる。ChipID205は、パケットを送信するターゲットとなる画像処理部104〜106を識別するためのID(識別子)を示す。PageID207は、パケットの属するページ番号を示しており、JobID208はパケットの属するジョブ番号を示している。パケットの番号はY方向のパケット座標209とX方向のパケット座標210の組み合わせで、YnXnと表される。データパケットは、画像データが圧縮されている場合と非圧縮の場合がある。圧縮されている場合と非圧縮の場合との区別は、CompressFlag217で示される。なお、データパケットに付加される画像データは、ページ単位でスキャナ109等から入力されたページ単位の画像データを、所定の画素数(例えば、32画素×32画素)の矩形領域に分割したものである。従って、ページ単位の画像データの一部を含む複数のパケットデータが生成されることとなる。
【0016】
ProcessInstruction211は、8組のUnitID219とMode220の組み合わせから構成され、これは各画像処理部内での画像処理の順番と処理内容を表している。例えば、図6の画像処理部であるFuncL610において、伸張器601、回転処理部602、2値化処理部603、色空間変換部604、圧縮器606までの各ユニットのUnitIDを、それぞれ1〜5と設定する(丸囲み数値)。そして、入力するパケットデータを、伸張器601→色空間変換部604→回転処理部602→圧縮器606というデータパスで画像圧縮する場合を考える。この時、ProcessInstruction211のUnitID219には、順番に、1、4、2、5という数値を入れてパケットデータを転送する必要がある。Mode220には、UnitIDが示す画像処理部固有の動作モードを設定する。各処理Unitは、処理後、ProcessInstructionを左に8Bit分シフトする。1つのパケットは、8つのUnitにより連続して処理されることができる。
【0017】
PacketByteLength212は、パケットのトータルバイト数を示す。ImageDataByteLengh213は画像データのバイト数、ZdataByteLength214は画像付加情報のバイト数を表す。ImageDataOffset215、ZdataOffset216は、それぞれのデータのパケット先頭からのoffsetを表している。
【0018】
次に、PacketTable300に含まれる情報について説明を行なう。各Packetは、PacketTable300によって管理される。PacketTable300の構成要素は、PacketAddressPointer301、RepeatFlag302、DivideFlag303、PacketLength304、ChainTableNumber305である。PacketAddressPointer301とPacketLength304は、それぞれTableの値に0を5bit付加すると(以下の式)、各Packetの先頭Address、ByteLengthとなる。
【0019】
PacketAddressPointer(27bit)+5b00000 = Packet先頭Address ・・・(式1)
PacketLength(11bit)+5b00000 = PacketのByteLength ・・・(式2)
PacketTable300とChainTable310は、分割されないものとする。PacketTable300は、常に走査方向(X方向)に並んでおり、Yn/Xn=000/000、000/001、000/002,....という順で並んでいる。このPacketTable300のEntryは、1つのパケットを一意に示す。また、Yn/Xmaxの次のEntryは、Y(n+1)/X0となる。パケットがひとつ前のパケットとまったく同じDataである場合、そのパケットはRAM102上には書かない。そして、PacketTableのEntryに1つめのEntryと同じPacketAddressPointer301とPacketLength304を格納する。すると、1つのPacketDataを2つのTableEntryが指すような形になる。そして、2つめのTableEntryのRepeatFlag302をSetすることで、パケット格納に必要なRAM102の容量を削減できる。パケットが複数のメモリブロック(以下、ChainBlock)に分断された場合は、DivideFlag303をSetし、そのパケットの先頭部分が入っているChainBlockのChainTableNumber305をSetする。ChainTable310のEntryは、ChainBlockAddress311とChainBlockLength312とからなっている。Tableの最後のEntryには、ChainBlockAddress311、ChainBlockLength312について共に0を格納しておく。
【0020】
パケットヘッダの中で、ChipID205は、パケットを送信するターゲットとなる画像処理部104〜106のIDを示す。また、PageID207は、当該パケットが属するページのページ番号を示しており、JobID208は、当該パケットが属するジョブのジョブ番号を示している。OutputDMA110〜112は、パケットデータのこれらのIDを適宜変更し、ターゲットとなる画像処理部にパケットデータを転送することで、所望の画像処理を実現する。即ち、画像処理部104〜106がそれぞれ1〜4というChipIDが割り当てられている場合、プリンタ108にデータ転送する時には、パケットデータのヘッダのChipIDに1を付加して転送するように、OutputDMAを設定して実行する。すると、OutputDMAは、処理するパケット群を示す図3に記載のChainTabel、PacketTableにしたがって、パケットデータをRAM102から読み出す。そして、画像処理部104へ転送し、その内部で画像処理をおこない、プリンタ108で印刷出力を行うように動作する。
【0021】
本実施例におけるパケットデータの画像処理フローに関して、図4に基づきながら、CPU103におけるソフト処理に注目して、より詳細に説明する。まず、以下では、RAM102上に格納されているパケットデータを、FuncLにて画像処理する際のCPU103による処理フロー(図4の(a)に示すF400)に関して説明する。なお、以下、例えばF400とは、フローチャートを示す参照符号であり、例えばS411とは、フローチャートにおけるステップを示す参照符号である。
【0022】
最初に、CPU103は、RAM102のどのアドレスに、FuncL画像処理後のパケットデータを格納するかを示す受信側ChainTableを作成する(S410)。次に、画像処理部に送信するパケットデータの格納場所を示す送信側ChainTableおよび送信側PacketTableを作成する(S411)。そして、S411で作成したTableの位置に格納されている送信パケットデータに、所望のPageID207、JobID208を設定する(S412)。続いて、画像処理をおこなう画像処理部がもつChipIDをChipID205に設定し、その画像処理部の内部画像処理パスを指定するためにProcessInstruction211を決定し、パケットヘッダ201に設定する(S413)。
【0023】
これらPageID207、JobID208、ChipID205、ProcessInstruction211は、画像処理するパケット全てに対して設定する。設定の方法は、CPU103によってパケットヘッダを書き換える方法や、OutputDMA110〜112への設定によって、画像処理部に転送する前にハードウェアで書き換える方法などがある。そして、FuncLのように、パケットデータの送受信が必要なデータパスの画像処理を行う場合には、転送側であるOutputDMA110〜112のいずれかと、受信側であるInputDMAのいずれかの設定をおこなう(S914)。最後に、それぞれのDMAの処理をスタートさせることで、パケットに対する画像処理をスタートする(S415、S416)。
【0024】
以上のCPU103処理フローは、FuncL画像処理の実行を前提に記載したが、FuncS画像処理時は、入力パケットデータはスキャナ109から画像処理部を介してRAM102に送られる。そのため、送信側のTable作成やOutputDMA設定等は必要ない(F401の場合)。また、FuncP画像処理時には、出力パケットデータは、画像処理部を介してプリンタ108から出力されるので、受信側のTable作成やInputDMA設定等は必要ない(F402の場合)。
【0025】
図5に、画像処理部に転送されたパケットデータの処理フローF500を示す。パケットデータへの画像処理自体は、各画像処理部の機能によって異なるため、ここでは、各画像処理部が共通でもつパケット入出力I/F420(421、520、604、720等も同じ)の処理に注目して説明する。パケット入出力I/Fは、パケットデータを受信すると(S501)、パケットヘッダのChipIDが自身に割り振られたChipIDと同一かどうかを検査する(S502)。パケットヘッダのChipIDが自身に割り振られたChipIDと異なる場合、自身の画像処理部で処理すべきパケットデータではないと判断して、次の画像処理部にパケットデータを転送する(S505)。一方、パケットヘッダのChipIDが自身に割り振られたChipIDと同一である場合、ProcessInstructionにしたがって、内部の画像処理パスを通し、画像処理を実行する(S503)。そして、FuncL等の画像処理部で、RAM102にパケットデータを返す必要がある場合には、パケットデータをパケット入出力I/Fに戻す。そして、そこでChipIDを「0」(システムのRAM102への書き戻しを表す)に変更し(S504)、次の画像処理部に転送する(S505)。
【0026】
本画像処理装置においては、CPU103自身は画像データの画像処理をおこなう必要がなく、所望の画像処理部104〜106の画像処理設定と、DMA110〜115によるパケットデータの転送設定のみをおこなえば良い。そのため、CPUのデータ管理およびデータ転送制御に必要な負荷は非常に軽減される。また、Copy機能やSend機能などの各ジョブの画像処理が、複数の画像処理部104〜106と複数のDMA110〜115によって並列に動作させることが可能である。
【0027】
画像処理部104〜106において、FuncLの機能をもつ画像処理回路を複数使用することで、FuncL機能の高速化を図ることができる。また、画像データの高速処理を図りつつ、回路規模の肥大化を抑えるために、以下のような方法をとる。
【0028】
例えば、第1の方法として、システムの例において、各画像処理部104〜106をリコンフィギュアラブル・プロセッサによって構成し、実装されているFuncP、FuncS、FuncLを切り替えて使用する。これによって、画像処理部を削減し、全体回路規模を削減できる。また、第2の方法として、FuncLに搭載される圧縮器、伸張器、ラスタ/パケット変換機能を、FuncPやFuncSと共用し、差分の画像処理部は、データパスを切り替えて使用する。これによって、全体の回路規模を削減できる。
【0029】
第2の方法の例として、図6の(a)に示すようなFuncL、FuncPの機能を持つ画像処理部610、620があった場合、パケット入出力I/Fと、伸張器が両Functionに対して共通である。そして、それ以外の部分(以下、FuncL’608、FuncP’623とする)に関しては、FuncL、FuncPに固有のデータ処理部分となる。そこで、図7の画像処理部であるFuncLP700のように、FuncLとFuncPに共通部分のみ共有化する。そして、それ以外の部分は、スイッチ701にてデータパスを切り替えるような構成を採り、2つの機能を時分割で排他的に使用することで、共通化部分の回路規模を削減することができる。
【0030】
また、同様に、図6の(b)に示すようなFuncL、FuncSの機能を持つ画像処理部610、630があった場合、圧縮器606が両Functionに対して共通である。そして、それ以外の部分(以下、FuncL’608、FuncS’633とする)に関しては、FuncL、FuncSに固有のデータ処理部分となる。そこで、図8のFuncLS800のように、FuncLとFuncSに共通部分のみ共有化する。そして、それ以外の部分は、スイッチ801にてデータパスを切り替えるような構成を採り、2つの機能を時分割で排他的に使用することで、共通化部分の回路規模を削減することができる。
【0031】
図1に示す画像処理部104は、図7のFuncLP700のような構成をもつ画像処理部であり、ChipID=1が割り当てられている。画像処理部105は、図8のFuncLS800のような構成をもつ画像処理部であり、ChipID=2 が割り当てられている。画像処理部106は、図6の(a)のFuncL610のような構成をもつ画像処理部であり、ChipID=3が割り当てられている。
【0032】
図7のFuncLP700の詳細についてさらに説明する。FuncLP700は、図6の(a)のFuncL610とFuncP620の両方の画像処理機能を時分割で処理できる画像処理部である。図6の(a)のFuncL610は、先に述べた図5の処理フローで、入力したパケットデータを伸張し、画像処理した後に再び圧縮して、後段の画像処理部に転送する処理をおこなう。一方、FuncP620は、入力されたパケットデータを、伸張器601で伸張し、パケット・ラスタ変換器621でラスタ展開した後に、プリンタ出力前画像処理部622で画像処理し、プリンタ108に画像を出力する。FuncLP700は、FuncL610とFuncP620がそれぞれ独自にもつ部分FuncL’608、FuncP’623は、スイッチ701で切り替えられるようになっている。そして、FuncL610とFuncP620が共通で持つパケット入出力I/F607と伸張器601を共通化することで、回路規模を削減している。
【0033】
次に、図8のFuncLS800の詳細についてさらに説明する。FuncLS800は、図6の(b)のFuncL610とFuncS630の両方の画像処理機能を時分割で処理できる画像処理部である。図6の(b)のFuncS630は、スキャナから入力されたラスタデータを、スキャナ入力後画像処理部631で画像処理し、ラスタ・パケット変換器632でパケット化した後に、圧縮器606で圧縮し、後段の画像処理部に画像を出力する。FuncLS800は、FuncL610とFuncS630がそれぞれ独自にもつ部分FuncL’608、FuncS’633は、スイッチ801で切り替えられるようになっている。そして、FuncL610とFuncS630が共通で持つパケット入出力I/F607と圧縮器606を共通化することで、回路規模を削減している。
【0034】
図9に、本実施例におけるパケット入出力I/F607の内部構成を示す。パケット入出力I/F607における処理の流れを、図10、図11のフローチャートF1000を元に説明する。まず、パケット入出力I/Fは、入力I/F901で外部からパケットデータを受信する(S1001)。次に、受信したパケットデータをヘッダ判定部902に転送し、パケットヘッダのChipID205が、自身の画像処理部に割り当てられているChipIDと同一かどうかを判定する(S1002)。同一でない場合、ヘッダ変換部905、出力I/F906を経由し、そのまま次の画像処理部へパケットデータを出力する(S1011)。同一である場合、ヘッダ判定部902は、パケットヘッダのPcktType204が、Data(0x001)かCommand(0x010)かを判定する(S1003)。
【0035】
パケットヘッダのPcktType204がCommandの場合、ヘッダ判定部902はパケットをパケット解釈部903に転送する。パケット解釈部903では、パケットデータのImageData部202が、図12のようなデータフォーマットをもつCommand用パケットのデータを解釈し、CommandがFunction切り替えのCommandかどうかを判定する(S1005)。CommandがFunction切り替えについてのCommandでない場合、図12に示すデータ群1200は画像処理部内のいずれかのモジュールのレジスタアドレスと設定値の組み合わせであり、その設定を各モジュールにおこなう(S1009)。一方、CommandがFunction切り替えのCommandの場合、パケット解釈部903は機能切り替え部904にその旨を通知する。
【0036】
機能切り替え部904では、図11に示すようなフローで、画像処理部の機能切り替えをおこなう。まず、入力I/F901経由でBusy信号を発行し、新規パケットデータの受信を停止する(S1101)。次に、パケット入出力I/Fに入出力したパケット数カウント値から、画像処理部内部で処理しているイメージパケットデータがあるか否かを判定する(S1102)。画像処理部内部で処理しているイメージパケットデータがあった場合、その処理が完了し、出力されるまで待機する。画像処理部内部で処理していたイメージパケットデータがすべて後段へ出力されると、機能切り替え部904は、パケットデータがFuncL’側からFuncP’、FuncS’側へ転送されるようにスイッチ701もしくは801を切り替える(S1103)。そして、ヘッダ判定部902でおこなわれる後述のS1004において所定のJobIDを受け取った場合に行われるChipIDのインクリメント処理を有効にする(S1104)。以上の処理をおこなった後、入力I/F901経由で発行していたBusy信号を解除し、新規のパケットデータを受け付ける(S1105)。
【0037】
S1003の判定において、PcktTypeがCommandであった場合は、S1008もしくはS1009の処理後、ヘッダ変換部905において、元のパケットデータのChipIDを0に変更し、後段の画像処理部に出力する(S1010)。こうすることで、後段の画像処理部でパケットデータを受信させないようにすることができる。
【0038】
S1003の判定に戻り、パケットヘッダのPcktType204がDataの場合、ヘッダ判定部902はさらに、パケットヘッダのJobID208が後段への転送対象かどうかを判定する。判定は2通り行い、まず、Func切り替え処理S1008で、ステップS1104において判定処理が有効とされたかどうかを判定する。そして、有効である場合には、JobID208の数値の大きさが予め決められた数値より小さい場合は、FuncLで処理すべきパケットデータであると判定し、画像処理部内部にパケットデータを転送せず、ヘッダ変換部905に転送する。ヘッダ変換部905では、本パケットが後段のFuncLの画像処理部で処理されるべきパケットであると判断し、パケットヘッダのChipID205をインクリメントする(S1006)。その後、後段の画像処理部が受信して処理できるようにして出力する(S1011)。一方、JobID208の数値の大きさが予め決められた数値以上である場合は、FuncP’又はFuncS’で処理すべきパケットデータであると判定する。その場合に、内部の後段モジュールへパケットデータを転送して画像処理を行う(S1007)。その後、S1010において、元のパケットデータのChipIDを0に変更し、後段の画像処理部に出力する。
【0039】
なお、ここでは、S1004の判定において、ある閾値に対する大小で、ジョブの優先度を判断し、パケットデータを振り分けたが、JobID208を用いた判定は別の方法を用いても良い。例えば、JobID208のいずれかのビットに、パケット処理すべきFunc種別を割り当て、当該パケットがFuncLで処理されるべきパケットなのか、FuncPやFuncSで処理されるべきなのかを判定する方法でも良い。又は、ステップS1008におけるFunc切り替え処理の直前に処理したイメージパケットデータのJobID208を保持しておき、S1004で判定するパケットデータがFuncLで処理されるべきかFuncPやFuncSで処理されるべきかを判定しても良い。
【0040】
上記の方法の重要な点は、画像処理部での処理を低優先度ジョブ用のFuncL’機能から高優先度ジョブ用のFuncP’、FuncS’に切り替えた際に、FuncL’機能で処理されることを前提に送信されてきたパケットデータを検出することである。そして、その検出したパケットデータを後段のFuncL’機能をもつ画像処理部に転送して代替処理させるべくChipID205を変更することである。なお、本実施例において、優先度が高いFuncP’やFuncS’の機能についての画像処理を第1の画像処理とする。また、FuncP’やFuncS’に比べて、優先度が低いFuncL’の機能についての画像処理を第2の画像処理とする。また、第1の画像処理を行うためのパケットデータを第1のパケットデータとし、第2の画像処理を行うためのパケットデータを第2のパケットデータとする。
【0041】
図13にFunc切り替え前と切り替え後の、各画像処理部でのパケット処理の概要を表す。図10のフローチャートによれば、イメージデータパケットの処理は大きく分けて以下の3パターンがある。1つは、ヘッダのChipIDが自身のChipIDと異なり、そのまま後段に転送するフローである(処理1)。フローチャートF1000においては、S1001→S1002→S1011の系である。1つは、Func切り替え前に低優先度ジョブのJobID208をもつイメージデータパケットを受信するか、Func切り替え後に高優先度ジョブのJobID208をもつイメージデータパケットを受信し画像処理部内部で画像処理するフローである(処理2)。フローチャートF1000においては、S1001→S1002→S1003→S1004→S1007→S1010→S1011の系である。1つは、Func切り替え後に、低優先度ジョブのJobIDをもつイメージデータパケットを受信した場合に、パケットヘッダのChipIDをインクリメントして後段の画像処理部に出力するフローである(処理3)。フローチャートF1000においては、S1001→S1002→S1003→S1004→S1006→S1011の系である。
【0042】
図13に示す処理で転送されるイメージパケットデータに対して、各画像処理部104〜106に割り振られているChipID、ヘッダのJobID208及びChipID205に応じて、各画像処理部で上記の処理1〜3のいずれかの処理が行われる。まず、各画像処理部が全てFuncLで動作しているパターン1の場合、ChipID=1、JobID=10がヘッダに付加されているイメージデータパケット1301は、画像処理部104でFuncL処理が行われ、ヘッダのChipID205が0に書き換えられる(処理2)。以降の画像処理部105、106では、そのまま後段に転送される(処理1)。ChipID=2, JobID=10がヘッダに付加されているイメージデータパケット1302は、画像処理部104で処理1がおこなわれ、次段の画像処理部105で処理2がおこなわれ、画像処理部106では、処理1がおこなわれる。ChipID=3、JobID=10がヘッダに付加されているイメージデータパケット1303は、画像処理部104、105で処理1が行われ、画像処理部106で処理3が行われる。
【0043】
次に、ChipID=1とJobID=10がヘッダに付加されているイメージデータパケット1311に、FuncP、FuncSに機能が切り替わった(パターン2)画像処理部104、805で、ChipID205をインクリメントする処理3が行われる。そして、画像処理部106でFuncLの画像処理を行う処理2が行われる。その結果、元々、画像処理部104(特定の画像処理手段)で処理する予定であったイメージデータパケットを画像処理部106(他の画像処理手段)で処理できるようになる。また、ChipID=2, JobID=10がヘッダに付加されているイメージデータパケット1312に、画像処理部104で処理1が行われ、FuncSに機能が切り替わった画像処理部105で、ChipID205をインクリメントする処理3が行われる。そして、画像処理部106でFuncLの画像処理を行う処理2が行われる。その結果、元々画像処理部105で処理する予定であったイメージデータパケットを画像処理部106で処理できるようになる。また、ChipID=3, JobID=10がヘッダに付加されているイメージデータパケット1313に、Func切り替え前(パターン1)のイメージデータパケット1303と同様の処理が各画像処理部で行われる。
【0044】
一方、ChipID=1, JobID=20がヘッダに付加されている高優先度ジョブのイメージデータパケット1314に、画像処理部104でFuncPの処理2が行われる。そして画像処理部105、106では、処理1がおこなわれる。また、スキャナ109からFuncSに切り替わった画像処理部105に入力されるイメージデータパケット1315は、ラスタ・パケット変換器632でパケット化される。さらに、イメージデータパケット1315は、ChipID=0、JobID=FuncSへの設定値をヘッダに付加され、後段の画像処理部106に出力される。画像処理部106では、処理1が行われる。
【0045】
さらに、本発明による効果を図16を参照して説明する。図9に示すパケット入出力I/Fがない場合には、CPU103が、図16の(a)のF1600に示すように画像処理部のリソース管理を行う必要がある。まず、これまでFuncLの機能として動作していた画像処理部104〜106へのパケットデータ送信を停止する(S1601)。次に、高優先度ジョブで使用するために、画像処理部104のFuncLPを、FuncLの機能からFuncPの機能となるように切り替えをおこなう(S1602)。そして、同様に、画像処理部105のFuncLSを、FuncLの機能からFuncSの機能となるように切り替えをおこなう(S1603)。次に、これらの切り替えをおこなった画像処理部104、105を使用する高優先度ジョブの動作を開始する(S1604)。図示しないが、高優先度ジョブにおいては、スキャナ109からの画像の入力、FuncSによる画像処理、FuncPによる画像処理、プリンタ108への画像の出力といった処理がおこなわれる。一方、3つのFuncL機能を有する画像処理部104〜106へのパケットデータを停止していた低優先度ジョブについて、使用可能な画像処理部は、画像処理部106のみである。従って、パケットヘッダのChipIDは、全て画像処理部106を表す「3」に変更される(S1605)。そして、FuncLへのパケットデータ送信が再開される(S1606)。
【0046】
しかしながら、図9に示すパケット入出力I/Fが構成されると、図16の(b)のF1601に示すように、ソフトウェア処理において、S1601の画像処理部へのパケットデータ送信の停止や、S1605のChipIDの変更を行う必要がない。即ち、CPUによるリソース管理で必要となるのは、各画像処理部において、高優先度ジョブに応じた機能の切換えと、高優先度ジョブの動作の開始のみである。従って、スケジューリングに関わるソフトウェアの負担が低減される。
【0047】
以上に示した処理フローでわかる通り、本発明の趣意を実現したパケット入出力I/Fを搭載することで、低優先度ジョブのイメージデータパケットのDMA転送を止めることなく、後段の画像処理部への自動転送が可能となる。そのため、低優先度ジョブのDMA転送処理に関わるソフトウェア処理の負荷を減少させることができる。
【0048】
[第2の実施例]
第1の実施例においては、画像処理部104、105は、内部の画像処理パスのスイッチを切替えることで、2つの画像処理を切替えるような構成であったが、本発明はこのような構成に限られるものではない。即ち、再構成可能回路(リコンフィギュアラブルプロセッサ等)のようなデバイスを使用し、時分割で使用する画像処理回路を両持ちすることなく、内部回路を書換えて使用するような構成を採っても良い。
【0049】
図14に、内部のロジックを動的に切替えることができる再構成可能回路1401をもつ画像処理部1400を示す。本実施例においては、画像処理部104〜106は、図14に示すような画像処理部1400として構成されている。
【0050】
画像処理部1400は、再構成可能回路1401と、パケット入出力I/F607から構成され、パケット入出力I/Fは、図9に示すものと同様の構成をもつ。そして、第1の実施例で示した画像処理部700、800とは以下の点が異なる。
【0051】
再構成可能回路1401は、画像処理部1400全体が、図6の(a)のFuncL610、FuncP620、もしくは図6の(b)のFuncS630のいずれかとなるように、内部の回路構成を書換えることができるリコンフィグレーション可能な回路である。即ち、図11のフローに示されるFunc切替え処理の中で、機能切替え部904がスイッチ701、801に出していた切替え指示を、再構成可能回路切替え部1402に出すように実装される(点線1404)。そして、再構成可能回路切替え部1402は、切替え指示を受信すると、あらかじめメモリ1403に格納してあるコンフィグレーション情報に基づいて、再構成可能回路1401を、画像処理部1400がFuncS、FuncP、FuncLのいずれかになるように書換える(点線1405)。以上の点が第1の実施例と異なる点である。
【0052】
このような画像処理部の構成を採ることにより、画像処理部1400は、画像処理部700、800のように、切替える回路を2重持ちすることなく、回路構成することができるため、回路規模をより削減することができる。
【0053】
[第3の実施例]
第1、第2の実施例においては、画像処理部が、高優先度の画像処理回路に切り替わっている際に、低優先度処理するパケットを受信すると、ChipIDをインクリメントして、後段の低優先度用の画像処理部が受信して処理できるようにしていた(S1006)。しかし、本発明の後段画像処理部への転送方法は、この方法に限られるものではない。
【0054】
例えば、各画像処理部の切替え状態をソフトウェアが把握しているならば、高優先度のジョブ投入によって、画像処理部104〜106をどのような画像処理部に切替えるべきかをソフトウェアは判断することができる。即ち、FuncLを画像処理部104〜806で並列処理している際、高優先度ジョブの投入によって、画像処理部104、805をFuncP、FuncSに切替える必要がある場合、低優先度ジョブは画像処理部106に転送すれば良いことも把握できる。この時、FuncP、FuncSに切り替えた後の画像処理部104、105が、低優先度処理するパケットデータについてChipIDをインクリメントする処理ではなく画像処理部106を表すChipID=3に書換えれば、各画像処理部での判断のオーバヘッドが少なくなる。つまり、画像処理部104〜106全体でのスループットが高くなる。
【0055】
画像処理部104、105で、低優先度処理するパケットデータのChipIDを3に書換えるために、画像処理部104、105の機能切替え指示の前、もしくは同時に、ChipIDを書換える指示を与える。画像処理部104、105は、パケット解釈部903で、書換えるChipIDの番号を認識すると、その情報をヘッダ変換部905に転送し、その情報を保持する(図9の1点鎖線)。すると、機能切替え後に低優先度パケットを画像処理部104、105が受信すると、上記保持したChipID情報に従って、ヘッダ変換部905でChipIDを3に書換えて後段に転送する。画像処理部106は、転送されてきたChipID=3が付加された低優先度パケットを処理する。
【0056】
図15に、イメージデータパケット1311、1501それぞれが、第1の実施例と第3の実施例において、機能切替え後にChipID=1、JOBID=10の、画像処理部104に低優先度処理するパケットを転送した時のChipIDの変遷を示す。第1の実施例の場合、機能がFuncPに切替わった画像処理部104では、ChipIDは1からインクリメントされて2となり、後段に転送される。そのため、機能がFuncSに切替わった画像処理部105でもChipIDインクリメント処理が発生する。第3の実施例の場合、機能がFuncPに切替わった画像処理部104では、ChipIDは1から3に書換えられるようになる。そのため、画像処理部105ではそのまま後段に転送され、画像処理部106で処理される。その結果、画像処理部105における判断処理やChipID変換処理等のオーバヘッドが減り、スループットを向上することができる。この効果は、画像処理部をより多く連結した場合に、大きくなる。

【特許請求の範囲】
【請求項1】
画像データを入力する入力手段と、
前記入力手段により入力された画像データを画像処理するための複数の画像処理手段と、
前記画像データの一部と前記画像処理手段を識別するための識別子を含む複数のパケットデータを生成する生成手段と、
前記複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換手段と、
前記生成手段により生成されたパケットデータに含まれる前記識別子により前記特定の画像処理手段が識別された場合に、前記特定の画像処理手段にパケットデータを送信する送信手段と、
前記切換手段により前記特定の画像処理手段が実行する画像処理が切り換えられている場合に、前記送信手段により送信された前記パケットデータに含まれる前記識別子を変更し、変更された識別子を含むパケットデータを前記複数の画像処理手段に含まれる他の画像処理手段に転送する転送手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記切換手段は、前記特定の画像処理手段が実行する画像処理を、優先度の低い第2の画像処理から優先度が高い第1の画像処理に切り換えることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記第1または第2の画像処理を行うための第1または第2のパケットデータを格納する格納手段をさらに備え、
前記送信手段は、前記格納手段から前記第1または第2のパケットデータを読み出し、前記識別子により識別された前記画像処理手段に、前記第1または第2のパケットデータを送信することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記特定の画像処理手段が前記第1の画像処理を行っている際に、前記他の画像処理手段が前記第2の画像処理を並列して行うことを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記特定の画像処理手段は、リコンフィグレーション可能な回路で構成されたことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
入力された画像データを画像処理するための複数の画像処理手段を備える画像処理装置における画像処理方法であって、
前記画像処理装置の入力手段が、画像データを入力する入力工程と、
前記画像処理装置の生成手段が、前記画像データの一部と前記画像処理手段を識別するための識別子を含む複数のパケットデータを生成する生成工程と、
前記画像処理装置の切換手段が、前記複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換工程と、
前記画像処理装置の送信手段が、前記生成工程において生成されたパケットデータに含まれる前記識別子により前記特定の画像処理手段が識別された場合に、前記特定の画像処理手段にパケットデータを送信する送信工程と、
前記画像処理装置の転送手段が、前記切換工程において前記特定の画像処理手段が実行する画像処理が切り換えられている場合に、前記送信工程において送信された前記パケットデータに含まれる前記識別子を変更し、変更された識別子を含むパケットデータを前記複数の画像処理手段に含まれる他の画像処理手段に転送する転送工程と
を備えることを特徴とする画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2010−263328(P2010−263328A)
【公開日】平成22年11月18日(2010.11.18)
【国際特許分類】
【出願番号】特願2009−111498(P2009−111498)
【出願日】平成21年4月30日(2009.4.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】