JP6049358B2 - 画像処理装置、画像処理方法、およびプログラム - Google Patents

画像処理装置、画像処理方法、およびプログラム Download PDF

Info

Publication number
JP6049358B2
JP6049358B2 JP2012191434A JP2012191434A JP6049358B2 JP 6049358 B2 JP6049358 B2 JP 6049358B2 JP 2012191434 A JP2012191434 A JP 2012191434A JP 2012191434 A JP2012191434 A JP 2012191434A JP 6049358 B2 JP6049358 B2 JP 6049358B2
Authority
JP
Japan
Prior art keywords
image
processing
image processing
input
pixels
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.)
Active
Application number
JP2012191434A
Other languages
English (en)
Other versions
JP2014048906A (ja
JP2014048906A5 (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
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2012191434A priority Critical patent/JP6049358B2/ja
Priority to US14/011,903 priority patent/US9626731B2/en
Publication of JP2014048906A publication Critical patent/JP2014048906A/ja
Publication of JP2014048906A5 publication Critical patent/JP2014048906A5/ja
Application granted granted Critical
Publication of JP6049358B2 publication Critical patent/JP6049358B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Description

本発明は、画像処理装置、画像処理方法、およびプログラムに関する。
画像を処理する際に、出力対象の位置の画素(注目画素)の画素値を算出するために、注目画素とその周辺の複数の画素の画素値が必要になる画像処理がある。たとえば、3×3のメディアンフィルタ処理では注目画素(ここでは、中央の1画素)に対して上下左右それぞれ1個以上の周辺画素(ここでは、周辺の8画素)の画素値が必要となる。ただし画像端を注目画素として、周辺画素が必要となる画像処理を行う際は、ダミーの画素を周辺画素として必要な量だけ入力画像に付加するなどした上でフィルタ処理をしないと好ましい出力値は得られない。
特許文献1ではフィルタ処理を組み合わせた場合の縦方向及び横方向の周辺画素の必要量を画像処理モジュールごとに加算し、入力画像に付加するべき周辺画素の量を求めている。
一方、特許文献2は処理回路間の接続をリング型のバス(リングバス)で接続する方法が開示されている。この方法によれば、複数の処理回路によってパイプライン処理をする際に、各処理回路の処理順番を入れ替えることができる。
特開2000−354168号公報 特開平7−325800号公報
しかし、特許文献1の技術を特許文献2の技術にそのまま適用することは困難である。詳細には、入力画像に付加するべき周辺画素量は、特許文献1の手法で画像処理モジュールごとに必要となる周辺画素の数を取得し加算していくだけでは効率的に求めることは難しい。なぜなら、特許文献2のようなリングバスを用いて画像処理モジュールの処理順序を変えられるように構成すると、変倍(拡大、縮小)モジュールや処理単位の制約のあるモジュールなどを、周辺画素を用いる画像処理モジュールより前で使うのか後で使うのか等によって、付加するべき周辺画素の数が異なってしまうためである。
そこで、本発明は特許文献2のように周辺画素を用いて処理をする画像処理モジュールを含む複数の画像処理モジュールの処理順番を変えられるような構成について、より効率良く周辺画素を付加できるような技術を提供することを目的とする。
上記の課題を達成する本発明に係る制御装置は、複数の画像処理モジュールがリング状のバスによって接続され、入力画像に対して、前記複数の画像処理モジュールが所定の処理順で一連の画像処理を実行し、出力画像を生成する画像処理装置を制御する制御装置であって、前記画像処理モジュール毎に、必要とする周辺画素数を取得するアルゴリズムを保持する保持手段と、前記画像処理装置に出力させる前記出力画像のサイズを取得する第1の取得手段と、前記一連の画像処理における前記所定の処理順と、前記複数の画像処理モジュールのうち前記一連の画像処理を実行する少なくとも2つ以上の画像処理モジュールそれぞれが実行する処理の処理パラメータと、を取得する第2の取得手段と、前記処理パラメータと前記所定の処理順とを用いて、前記所定の処理順の逆順に、画像処理モジュールに対応するアルゴリズムを順番に実施することで、前記出力画像のサイズを出力するために必要な前記入力画像の周辺画素数を算出する算出手段と、前記算出手段により算出された周辺画素数に基づいて前記画像処理装置に入力する前記入力画像のサイズを決定する決定手段を有することを特徴とする。
本発明によれば、画像処理モジュールの処理順を変えられるように構成について、周辺画素を必要とする画像処理のために、入力画像に対して効率良く周辺画素を付加することができる。
画像処理装置の概略構成を示すブロック図である。 画像処理部の概略構成を示すブロック図である。 周辺画素量を含む入力画像のサイズを算出する処理を示すフローチャートである。 複数の画像処理モジュールに関する処理順を示す模式図である。 入力量演算処理を示すフローチャートである。 出力量演算処理を示すフローチャートである。 縮小モジュールに対応する入力量演算処理を示すフローチャートである。 3×3フィルタ処理モジュールに対応する入力量演算処理を示すフローチャートである。 縮小モジュールに対応する出力量算出処理を示すフローチャートである。 3×3フィルタ処理モジュールに対応する出力量演算処理を示すフローチャートである。 入力制限がある縮小モジュールに対応する出力量演算処理を示すフローチャートである。 周辺画素量を含む入力画像のサイズを算出する処理を示すフローチャートである。 (a)従来技術で求めた周辺画素量を示す模式図、(b)適切な周辺画素量を示す模式図、(c)着目画素と周辺画素を示す模式図である。 (a)リングバスを備える並列処理部の概略構成を示すブロック図、(b)リングバスで用いるパケットのフォーマットを示す概略図である。 リングバスを用いる場合の画像処理モジュールの構成を示すブロック図である。 画像処理装置で実施する処理の概略を示すフローチャートである。 (a)ページ単位の入力画像に周辺画素を付加する様子を示す模式図、(b)バンド単位の入力画像に周辺画素を付加する様子を示す模式図である。 (a)処理モード毎に、各処理モジュールの処理順と、入・出力バンド高さ(周辺画素含まない)とを含む処理モード情報示す模式図、(b)処理モジュール毎に、対応する演算プログラムを示す表、(c)演算プログラムに含まれる内容を示す模式図である。
まず、前述の特許文献1の技術を特許文献2の技術にそのまま適用することが困難であることについて説明を補足する。
例えば、複数の画像処理モジュールとして、画像処理モジュールA、画像処理モジュールB、画像処理モジュールCがあるとする。図13(C)に示す様に、画像処理モジュールAの周辺画素の数(以降の説明では周辺画素量と称す)は右端部に1画素であり、画像処理モジュールBの周辺画素量は上下左右端部に2画素ずつである。画像処理モジュールCは拡大処理(単に入力画像を2倍に拡大するとする)で周辺画素量は0であるとする(不図示)。そして、それらの画像処理モジュールをA→C→Bという順で画像処理を行わせるとすると特許文献1の様に周辺画素量を求める。すると、画像処理モジュールAと画像処理モジュールBの周辺画素の必要分を足し合わせ、メモリから読み出した元画像1300の上端部に2画素、下端部に2画素、左端部に2画素、右端部に3画素のダミー画素1301を付加することになる(図13の(a)参照)。
しかし、実際に必要となる周辺画素量は異なる。画像処理モジュールBのために周辺画素として上下左右端部に2画素ずつ付加すると、画像処理モジュールCの拡大処理によって周辺画素も拡大されてしまう。従って、画像処理モジュールCの拡大処理を考慮すると画像処理モジュールCの出力として2画素必要であれば、拡大率の逆数をかけることにより画像処理モジュールCに入力される時点で周辺画素量は1画素であることが好ましい。
さらに、Aで必要となる周辺画素量は右端部に1画素なので、画像処理モジュールAに入力されるべき周辺画素量は上端部に1画素、下端部に1画素、左端部に1画素、右端部に2画素となる(図13の(b)参照)。このように変倍(拡大、縮小)モジュールが周辺画素を必要とする画像モジュールに対してどの順番で実行されるかを考慮する必要がある。
また、画像処理モジュールの中にはK×L画素のブロック単位(タイル単位)で処理を行うタイル処理モジュールがあり、そのようなモジュールは入力画像サイズの画像高さはLの倍数、画像幅はKの倍数である必要がある。例えばブロック処理サイズを2×2画素とすると、画像高さや画像幅が偶数でなければならない。
例えば、上述の画像処理モジュールA〜Cにおいて、画像モジュールCがタイル処理(エッジ検出処理など、周辺画素を必要しない領域処理)も実施するモジュールであり入力画像サイズが偶数でなければならない制約があるものとする。この際、入力画像幅が90の画像を入力しA→C→Bと処理を行わせるために、先に示したように終端モジュールから処理順とは逆順に辿って周辺画像量を求めていくことで入力画像幅は93(左端必要周辺画像量1+入力画像サイズ90+右端必要周辺画像量2)画素と求まる。しかし、これでは画像処理モジュールCに入力される左右の必要な周辺画像を含む入力画像サイズの幅は91画素になるためこれは画像処理モジュールCの制約に違反してしまう。
<<第1実施形態>>
まず、図1を参照して、本発明の一実施形態である第1実施形態に係る画像処理装置104の構成を説明する。画像処理装置104は画像処理部100、メモリ101、入出力デバイス102とCPU(中央制御部)103を備える。CPU103はメモリに保持されているプログラムに基づいて、後述のフローチャートを実現する処理を実施し、画像処理部100を初期化したり、画像処理部100に種々の処理を実行させるための設定をしたり、画像処理部100へ処理対象の画像データを供給したりする。また、CPU103は、画像処理装置を複数の処理モード(プリント、スキャン、コピー、メール、FAX、ダイレクトプリント)のいずれかで動作するように制御する。ここで、ダイレクトプリントとは着脱可能なメモリカードの画像をパソコンなどの制御を用いずにプリントアウトすることを示す。入出力デバイス102は、画像処理装置104の外部とのデータやコマンドの送受を行う。例えば、外部のスキャナでスキャンしたスキャンイメージを入出力デバイス102が受信してメモリ101に格納させる、スキャンイメージについて画像処理部100が画像処理を施した後で、入出力デバイス102が外部の出力装置(プリンタ、ディスプレイ、プロジェクタ)などに送信する。なお、各構成間のデータ転送は不図示のDMAC(ダイレクトメモリアクセスコントローラ)で行ってもよい。
次に図2を参照して、本実施形態に係る画像処理部100の概略構成について説明する。
画像処理部100は、入力モジュール200、画像処理モジュールA_201、画像処理モジュールB_202、画像処理モジュールC_203、画像処理モジュールD_204、並列処理部205、出力モジュール206を備える。
入力モジュール200はCPU103によって設定された読み込み開始アドレス、入力画像高さ、入力画像幅及び1ピクセル当たりのデータ単位を元にメモリ101から画像データを入力データとして、並列処理部205に転送する。
並列処理部205へ入力するデータはページ単位であっても、あるライン数でバンド分割したバンド単位あっても良い(並列処理部205に入力する、ページ単位のデータ、バンド単位のデータなどに周辺画素を付加する点についての詳細は後述する。)。
並列処理部205の有する各画像処理モジュール(以降、単に処理モジュールと称す)は、任意の順序で論理的に接続され、接続された順番でデータを処理することができる。また、各処理モジュール201〜204は並列に動作することができ、パイプライン処理を実現する。
処理モジュールA_201は3×3(以降、「3X3」の様に表記する)のフィルタ処理を行う。処理モジュールA_201が画像処理を行う際に必要となる周辺画素量は上下左右にそれぞれ1画素である。つまり、処理モジュールA_201が画像処理を行う際には少なくとも、縦方向に2画素、そして横方向に2画素を付加しなければ好ましい画像処理を行わせることができない。
処理モジュールB_202は5X5のフィルタ処理を行うモジュールであり、処理モジュールB_202が画像処理を行う際に必要となる周辺画素量は上下左右にそれぞれ2画素である。つまり、処理モジュールB_202が画像処理を行う際は少なくとも縦方向に4画素、そして横方向に4画素を付加しなければ好ましい画像処理を行わせることができない。
処理モジュールC_203は2画素単位でエッジ検出処理を行い、処理モジュールC_203が画像処理を行う際に周辺画素は不要である。ただし、処理モジュールCに対する入力画像サイズには制約があり、入力画像の高さ及び入力画像の幅が偶数個の画素数でなければならないものとする。
処理モジュールD_204は設定に応じて変倍処理を行うモジュールであり、画像処理モジュールD_204が画像処理を行う際に周辺画素は不要である。
並列処理部205では、処理モジュールA〜Dを任意の順で論理的に接続して画像データを順に処理する。詳細は後述するが、本実施形態ではリングバスによって各モジュールが順序入れ替え可能に接続されている。
出力モジュール206は設定された書き込み開始アドレス、出力画像高さ、出力画像幅及び1ピクセル当たりのデータ単位(ビット数)に基づいて外部メモリに出力データを転送する。
次に、図16のフローチャートを参照して、画像処理装置104の全体的な処理の概略を説明する。
処理待ちの状態(電源OFFや省電力状態でない状態)にある画像処理装置104のCPU103は、ユーザの指示、通信可能な外部装置(コンピュータや情報端末)からの画像処理依頼などを受けて、ステップS1601で次に実施する画像処理モードを決定する。
そして、ステップS1602においてCPU103は、ステップS1601で決定した画像処理モードを実現するための、画像処理モジュールの処理順と、各画像処理モジュールに設定するパラメータとをメモリ101の処理モード情報(詳細は図18(a)を用いて後述する)から取得する。なお、この際に処理モード情報から、周辺画素を含まない、入力画像または出力画像のサイズを示す情報(図18のInput Height,Output Height)を取得する。
ステップS1603ではCPU103は、画像処理モジュールの処理順とパラメータとに基づいて、各画像処理モジュールの要件を満たす周辺画素量を取得する(詳細は図3を用いて後述する)する。
ステップS1604ではCPU103は、入力モジュール200、出力モジュール206を含め、画像処理モードに沿った処理が実施できるように画像処理部100を設定(レジスタ設定など)する。
ステップS1605では画像処理部100が、複数のモジュール(画像処理モジュール、入力モジュール、出力モジュール)を動作させて画像処理モードに沿った処理を実現する。
ステップS1606でCPUは、画像処理部100から次の画像処理モードに沿った処理を開始できる通知を受けると、次に処理する画像処理の有無を判定する。次の画像処理が無ければ処理を終了し、有ればステップS1601に戻って同様の処理を繰り返す。
(入力モジュール200、出力モジュール206の設定算出)
次に、特定の接続順において各処理モジュール201〜204の要件を満たすような入力画像(並列処理部205への入力画像)のサイズを、CPU103が算出する処理に関して、図3のフローチャートを用いて説明する。なお、以降の説明では各処理モジュールへ入力する画像を中間入力画像の様に称して、算出しようとする並列処理部205への入力画像と区別する。この算出処理にて求まった入力画像サイズまたは出力画像サイズを利用してCPU103が、入力モジュール200と出力モジュール206を設定する。なお、本実施形態では入力画像サイズ(周辺画素を含まない)を予めメモリ101に保持しているものとする(詳細は図18を用いて後述する)。
ここで、中間出力画像に含まれる周辺画素量から中間入力画像に含まれる周辺画素量を算出するための入力量演算、または、中間入力画像に含まれる周辺画素量から中間出力画像に含まれる周辺画素量を算出する出力量演算処理、はモジュールごとに定義されプログラムとしてメモリ101に保持している(詳細は図18を用いて後述する)。
図3のフローチャートでは、ステップS301〜S313おいて、各処理モジュールについて論理的な接続順(以降、単に処理順として説明する)の逆順で着目し、着目したモジュールに対応する入力量演算処理を実施して周辺画素量を逐次的に求めていく。
ステップS313以降では、仮の入力画像サイズに各処理モジュールの要件を満たす周辺画素量加え、処理順に出力量演算処理を実施して処理モジュールの要件を満たすか確認する。なお、入力量演算処理や出力量演算処理はソフトウェアおよびハードウェアのどちらで実現しても良いが、以降の説明ではソフトウェアで実現する例について説明する。
まず、ステップS301でCPU103は、変数IN_WIDTHを0で初期化する。さらに、ステップS302ではCPU103は、変数、IN_HEIGHTを0で初期化する。
ステップS303でCPU103は各モジュールの設定パラメータを取得する。この設定パラメータは、例えば、画像処理の内容(度合い)を決定する値であり、変倍処理においては変倍モジュールの変倍率を求める際等に必要となる。
ステップS304ではCPU103はモジュールの処理順をメモリ101から取得し、その情報を元にステップS305にて処理順テーブル401を生成しメモリ101に保存する。各モジュールには固有のID(0以外の値)が割り振られており、そのIDを処理順に沿って処理順テーブル401に格納する。図4に並列処理部205の各モジュールの処理順がB→C→D→Aだった場合の模式図を示す。なお、画像処理部に複数のモードを設定し、各モードにおける処理順をテーブルとして予めメモリ101に保持させておけばステップS304,S305は省略してもよい。
ステップS306〜S312で、CPU103は各変数に0を格納して初期化する。詳細には、上部周辺画素量であるINIT_TOP_REF、下部周辺画素量であるINIT_BOTTOM_REF、左部周辺画素量であるINIT_LEFT_REF、右部周辺画素量であるINIT_RIGHT_REFに0を格納する。これらは、処理順で最後の処理モジュールから出力される画像の周辺画像量が0であることに相当する。
ステップS310ではAPU103は変数INIT_WIDTHに0を格納し、ステップS311では変数INIT_HEIGHTに0を格納して初期化する。
ステップS312ではCPU103は処理順テーブル401の参照開始位置を指定するSTART_Lに−1を格納する。
ステップS313ではCPU103は、ステップS305で作成した処理順テーブルを用いて、入力量演算処理(詳細は図5を用いて後述する)を実行し、入力モジュール200にメモリ101の保持する画像を転送する際に付加する周辺画素量を算出する。
算出された上部周辺画素量はIN_TOP_REFに格納する。同様に下部周辺画素量はIN_BOTTOM_REFに、左部周辺画素量はIN_LEFT_REFに、右部周辺画素量はIN_RIGHT_REFに格納する。
ステップS314ではCPU103は、周辺画素を含まない入力画像幅(メモリ101から取得)と、IN_LEFT_REFと、IN_RIGHT_REFと、を加算した結果をSET_IN_WIDTHに格納する。
ステップS315ではCPU103は、周辺画素を含まない入力画像高さ(メモリ101から取得)と、IN_TOP_REFと、IN_BOTTOM_REFと、を加算した結果をSET_IN_HEIGHTに格納する。
ステップS318ではCPU103は、入力画像幅としてSET_IN_WIDTH、入力画像高さとしてSET_IN_HEIGHTを用いて出力量演算処理(詳細は図6を用いて後述する)を実行する。出力量演算処理では並行処理部205から出力される画像幅及び画像高さが求まり、出力画像の画像幅はOUT_WIDTHに格納し、出力画像の画像高さはOUT_HEIGHTに格納する。
ステップS319ではCPU103は、ステップS318の実行結果がエラーであるかどうかを判断する。例えば、特定の処理モジュールについて下記1〜4のいずれか1つを満たしてしまっている場合などにエラーと判断する。
1.中間入力画像の幅・高さがNまたはM(NとMは自然数で、少なくとも一方は2以上)の倍数でなければならないという条件を満たさない中間入力画素数が算出されている場合。
2.中間入力画像の幅・高さが、特定モジュールの画像処理に必要な画素幅・高さに満たない場合。
3.中間出力画像の幅・高さの一方が0になる場合。
4.処理モジュールの内部バッファの容量を超える中間入力画像が算出されている場合。
なお、エラーであっても補正可能である場合は、補正可能か否かを示すフラグであるREVISE_FLAGに1が設定される。逆に補正不可能である場合は0が設定される。一方、エラーでない場合は終了する。また、エラー時は処理順テーブル401における参照位置もTABLE_NUMBERに格納される。ここでCPU103は、エラーではあるが、着目した画像モジュールを少し遡って算出処理をし直せば補正可能である場合は、補正した入力画像幅をIN_WIDTH_REVISEに設定する。CPU103は、入力画像高さも同様にエラーであり補正可能である場合、補正された(補正については図6を用いて後述する)入力画像高さをIN_HEIGHT_REVISEに設定する。詳しくは後述する。
ステップS319でCPU103は、エラーであると判断した場合はステップS322に遷移し、エラーでないと判断した場合はステップS320に遷移する。
ステップS322でCPU103はENABLE_FLAGが1(有効)であるか否かを判断する。1であればステップS324に遷移する。ENABLE_FLAGが1でない場合は、ステップS323に遷移してエラーフラグを1(有効)に設定して処理を終了する。
ステップS324でCPU103はステップS318にてエラーになった際に示された補正された補正画像幅であるIN_WIDTH_REVISEをINIT_WIDTHに格納する。このIN_WIDTH_REVISEは処理順においてひとつ前に位置するモジュールの出力画像幅となる(補正画像幅については図6を用いて後述する)。
ステップS325でCPU103はステップS318にてエラーになった際に示された補正された補正画像高さであるIN_HEIGHT_REVISEをINIT_HEIGHTに格納する。このIN_HEIGHT_REVISEは処理順においてひとつ前に位置するモジュールの出力画像高さとなる(補正画像高さについては図6を用いて後述する)。
ステップS330でCPU103はSTART_LにステップS318で示された(詳細は図6の説明で後述する)TABLE_NUMBERを格納する。
ステップS331でCPU103は周辺画素量・入力画像サイズ算出処理を再度実行する。ステップS332でCPU103はIN_WIDTHをSET_IN_WIDTHに格納し、ステップS333ではIN_HEIGHTをSET_IN_HEIGHTに格納する。そして、再びステップS316〜SS318を実行する。
以上の処理によって、各処理モジュールの要件・制約を満たす尤もらしい周辺画素量を取得することができる。
(入力量演算処理)
次に、ステップS313またはステップS331における入力量演算処理に関して図5のフローチャートを用いて説明する。入力量演算処理では、処理順の逆順に沿って各画像モジュールで入力する周辺画素を求める入力量演算処理を順次行っていく。詳細には、複数の処理モジュールについて処理順の逆順に、各モジュールの要件を満たす周辺画素量を逐次的に求め、処理順で1番目の処理モジュールに入力される画像に付加されるべき周辺画素量を取得する。
なお、中間入力画像に付加されるべき周辺画素量を算出する処理を実現するプログラムは予め、処理モジュール毎にメモリ101に保持されている。
ステップS501ではCPU103は、メモリ101から処理順テーブル401を取得する。
ステップS502では処理順テーブル401の参照位置を示すLに、ステップS312で設定されたstart_Lを代入する。start_Lに−1より大きい値を指定することで途中位置(図4の例でいう、C、D、A)から計算を開始することが可能である。
ステップS503〜506では、CPU103が入力量演算処理の対象の処理モジュールより、処理順が後の0個以上(図4の例で、対象が処理モジュールAであれば0個、対象が処理モジュールCであればDとAの2個)の処理モジュールで必要とされる周辺画素にステップS306〜S309で初期化した値を代入する。詳細には、上部周辺画素量の総量を示すOUT_TOP_REFにINIT_TOP_REFを格納し、ステップS504で下部周辺画素量の総量を示すOUT_BOTTOM_REFにINIT_BOTTOM_REFを格納し、ステップS505で左部周辺画素量の総量を示すOUT_LEFT_REFにINIT_LEFT_REFを格納し、ステップS506で右部周辺画素量の総量を示すOUT_RIGHT_REFにINIT_RIGHT_REFを格納する。
ステップS507,S508ではCPU103は周辺画素量の縦幅と横幅とを初期化する。詳細には、ステップS507ではステップS301において指定されたINIT_WIDTHをOUT_WIDTHに格納し、ステップS508ではステップS302において指定されたINIT_HEIGHTをOUT_HEIGHTに格納する。
ステップS509ではCPU103はstart_Lが−1か否かを判断し、−1であった場合にはステップS510を実行し、−1でなかった場合はステップS511を実行する。
ステップS510ではCPU103は、処理順テーブル401の終端位置を検索し、Lにテーブル終端位置を代入する。図4の例では3(番目)が終端位置であるためL=3とする。なお、以降の説明でL番目の処理モジュール(入力量演算処理の対象の処理モジュール)を着目モジュールと説明する。
ステップS511ではCPU103は、処理順テーブル401のL番目に位置する処理モジュールに対応する入力量演算処理を実行し、L番目の処理モジュールに入力する周辺画素量の横幅と縦幅等を取得する。詳細にはステップS511では、上下左右の周辺画素量(IN_TOP_REF、IN_BOTTOM_REF、IN_LEFT_REF、IN_RIGHT_REF)と、必要な周辺画素量のサイズ(IN_WIDTH、IN_HEIGHT)とを取得する。
ステップS512ではCPU103は、Lの値を1だけデクリメントし、着目する処理モジュールを、処理順で1つ前の処理モジュールに変更する。
ステップS513ではCPU103は、Lの値が0以上であればステップS514を実行し、0未満の場合は処理を終了する。
ステップS514〜S519では、CPU103は、先ほどステップS511で求めた、中間入力画像に含まれるべき周辺画素量を、新たな着目モジュールの中間出力画像に含まれるべき周辺画素量として代入する。詳細には、OUT_TOP_REFにIN_TOP_REFを代入し、OUT_BOTTOM_REFにIN_BOTTOM_REFを代入し、OUT_LEFT_REFにIN_LEFT_REFを代入し、OUT_RIGHT_REFにIN_RIGHT_REFを代入し、OUT_WIDTHにIN_WIDTHを代入し、OUT_HEIGHTにIN_HEIGHTを代入する。
図4の例では、着目モジュールをA→D→C→Bと変えながら、ステップS511〜S519までの処理を繰り返してステップS513でLが0より小さくなるとフローを抜ける。以上の処理によって、処理順序で1番目の処理モジュールに入力される画像に付加されるべき周辺画素量を取得する
(出力量演算処理)
次に図6のフローチャートを用いて、ステップS318の出力量演算処理の詳細に関して説明する。出力量演算処理では処理順に沿って各処理モジュールに対応する出力量演算処理を実施する。
まず、ステップS601でCPU103は処理順テーブルの参照位置を管理するカウンタであるLを0に初期化する。さらに、ステップS602でCPU103は処理順テーブルの終端位置を検索しMAX_Lに終端ライン位置を代入する。ステップS603でCPU103はステップS314で設定した入力画像の幅であるSET_IN_WIDTHをIN_WIDTHに代入する。ステップS604でCPU103はステップS315で設定した入力画像の高さであるSET_IN_HEIGHTをIN_HEIGHTに代入する。
ステップS605でCPU103は処理順テーブルL番目のモジュールに対応する出力量演算処理を実行する。ステップS606ではステップS605の実行結果がエラーか否かを判断し、エラーの場合はステップS611を実行し、エラーでない場合はステップS607を実行する(なお、何をエラーとするかはS319の説明で上述したとおりである)。
ステップS607でCPU103はLを1だけインクリメントする。ステップS608でCPU103はMAX_LとLを比較し「MAX_L<L」の条件に当てはまれば処理を終了し、当てはまらなければステップS610を実行する。
ステップS609でCPU103はIN_HEIGHTにステップS605実行時の結果として得られる出力画像の幅であるOUT_WIDTHを代入する。
ステップS610でCPU103はIN_HEIGHTにステップS605実行時の結果として得られる出力画像の高さであるOUT_HEIGHTを代入する。
ステップS611でCPU103はステップS605の処理がエラーだった場合に示される補正可能フラグが1である場合はステップS612を実行する。1でない場合はエラーとする。
ステップS612でCPU103はREVISE_FLAGに1を代入する。ステップS613でCPU103はIN_WIDTH_REVISEにステップS605の処理がエラーでありさらに補正可能である場合に示される入力画像幅補正値を代入する。ステップS614でCPU103はIN_HEIGHT_REVISEにステップS605の処理がエラーでありさらに補正可能である場合に示される入力画像高さ補正値を代入する。なお、ステップS613やS614で入力画像幅補正値や入力画像高さ補正値は、処理モジュール毎の演算プログラムに含まれている補正値演算プログラムによって求められる。
ステップS615でCPU103はTABLE_NUMBERにLを代入する。
(処理モジュールのアルゴリズム毎の入力量演算処理の具体例)
次に処理モジュールのアルゴリズム毎の入力量演算処理の具体例に関して図7及び図8を用いて説明する。
処理モジュールごとに定義される入力量演算処理は、着目モジュールより処理順が後の処理モジュール(0個以上)が必要とする「周辺画素量(上・下・左・右・幅・高さ)」に基づいて、着目モジュールが必要とする「周辺画素量(上・下・左・右・幅・高さ)」を算出するものである。処理モジュールで実施される画像処理のアルゴリズムにより入力量演算処理のアルゴリズムは異なる。
縮小処理モジュールに対するCPU103による入力量演算処理の具体例を図7に示す。図7では縮小処理を見越して縮小処理モジュールに入力する周辺画像の量は縦方向・横方向それぞれN倍(0<N<1)にする。
ステップS701でCPU103は着目モジュールより後で必要な上部周辺画素量を示すOUT_TOP_REFに変倍率の逆数(1/N)を乗じたものをIN_TOP_REFに格納する。同様に、ステップS702でCPU103はOUT_BOTTOM_REFに変倍率の逆数(1/N)を乗じたものをIN_BOTTOM_REFに格納し、ステップS703でCPU103はOUT_LEFT_REFに変倍率の逆数(1/N)を乗じたものをIN_LEFT_REFに格納する。ステップS704でCPU103はOUT_RIGHT_REFに変倍率の逆数(1/N)を乗じたものをIN_RIGHT_REFに格納する。
また、ステップS705でCPU103は着目モジュールより後で必要なOUT_WIDTHに変倍率の逆数(1/N)を乗じたものをIN_WIDTHに格納する。同様に、ステップS706でCPU103はOUT_HEIGHTに変倍率の逆数(1/N)を乗じたものをIN_HEIGHTに格納する。
以上の処理によって縮小処理モジュールに入力する、中間入力画像のサイズ(IN_WIDTH,OUT_HEIGHT)と、周辺画素量(IN_TOP_REF,IN_BOTTOM_REF,IN_LEFT_REF,IN_RIGHT_REF)とを取得する。
次に、フィルタ処理モジュールに対応する入力量演算処理の一例を図8に示す。説明の簡便のため3×3のフィルタ処理を用いて説明する。
ステップS801でCPU103は着目モジュールより後で必要な上部周辺画素量を格納したOUT_TOP_REFに着目モジュールにて必要となる上部周辺画素量である1を加算したものをIN_TOP_REFに格納する。同様に、ステップS802でCPU103は着目モジュールより後で必要な下部周辺画素量を格納したOUT_BOTTOM_REFに着目モジュールにて必要となる下部周辺画素量である1を加算したものをIN_BOTTOM_REFに格納する。さらに、ステップS803でCPU103は着目モジュールより後で必要な左部周辺画素量を格納したOUT_LEFT_REFに着目モジュールにて必要となる左部周辺画素量である1を加算したものをIN_LEFT_REFに格納する。そして、ステップS804でCPU103は着目モジュールより後で必要な右部周辺画素量を格納したOUT_RIGHT_REFに着目モジュールにて必要となる右部周辺画素量である1を加算したものをIN_RIGHT_REFに格納する。
ステップS805でCPU103は着目モジュールより後で必要な入力画像幅を格納したOUT_WIDTHに着目モジュールにて必要となる左部及び右部の周辺画素量の和である2を加算したものをIN_WIDTHFに格納する。同様に、ステップS806でCPU103は着目モジュールより後で必要な入力画像高さを格納したOUT_HEIGHTに当該モジュールにて必要となる上部及び下部の周辺画素量の和である2を加算したものをIN_HEIGHTに格納する。
以上の処理によってフィルタ処理モジュールに入力する、中間入力画像のサイズ(IN_WIDTH,OUT_HEIGHT)と、周辺画素量(IN_TOP_REF,IN_BOTTOM_REF,IN_LEFT_REF,IN_RIGHT_REF)とを取得する。
なお、以上の説明では3X3フィルタ処理モジュールにおける一例を示したが、NXM画素のフィルタ処理モジュールに拡張することもできる。ここで、NとMはともに自然数で、少なくとも一方は2以上であり、Nは幅、Mは高さを示すものとする。
NXMフィルタ処理モジュールについて必要となる周辺画素量は、左部周辺画素量がN/2、右部周辺画素量が(N−1)/2、上部周辺画素量がM/2、下部周辺画素量が(M−1)/2となる。なお、この計算式は図13(c)でモジュールBの5X5フィルタのように着目画素の位置が中央である場合の式であるが、着目画素の位置に応じて変えればよい。
3x3フィルタの場合左部周辺画素量と上部周辺画素量は3/2=1,右部周辺画素量と下部周辺画素量は(3−1)/2=1となる。4x4フィルタの場合、左部周辺画素量と上部周辺画素量は4/2=2,右部周辺画素量と下部周辺画素量は(4−1)/2=1となる。5x5フィルタの場合、左部周辺画素量と上部周辺画素量は5/2=2,右部周辺画素量と下部周辺画素量は(5−1)/2=2となる。
(処理モジュールのアルゴリズム毎の出力量演算処理の具体例)
次に、処理モジュールのアルゴリズム毎の出力量演算処理の具体例を図9、図10及び図11を用いて説明する。
縮小処理モジュールに対応する出力量演算処理の一例を図9に示す。図9は縮小処理モジュールに対して縦方向・横方向それぞれN倍にする設定がなされているものとする。
ステップS901でCPU103は入力される画像幅を格納したIN_WIDTHに変倍率を乗じたものをOUT_WIDTHに格納する。
ステップS902でCPU103は入力される画像高さを格納したIN_HEIGHTに変倍率を乗じたものをOUT_HEIGHTに格納する。
ステップS903でCPU103は中間入力画像の幅又は高さを補正したことを示すフラグであるREVISE_FLAGに0(補正なし)を格納する。
次に、フィルタ処理などのように、周辺画素を含む複数の入力画素を1つの出力画素を出力するために必要とするモジュールに対応する出力量演算処理の一例を図10に示す。当該フィルタ処理は3X3のフィルタ処理を行うものとする。
ステップS1001でCPU103は入力される画像幅を格納したIN_WIDTHに上部及び下部の周辺画素量の和である2を減算したものをOUT_WIDTHに格納する。
ステップS1002でCPU103は入力される画像高さを格納したIN_HEIGHTに左部及び右部の周辺画素量の和である2を減算したものをOUT_HEIGHTに格納する。
ステップS1003でCPU103は中間入力画像の幅又は高さを補正したことを示すフラグであるREVISE_FLAGに0(補正なし)を格納する。
次に、N倍(N=2)の拡大処理モジュールで、入力制限もあるモジュールに対応する出力量演算処理の一例を図11に示す。ここでは中間入力画像の幅と高さが、共に2の倍数でなければならない制限があるとする。
ステップS1101でCPU103は変数IN_WIDTH_REVISEを0に初期化する。同様に、ステップS1102でCPU103は変数IN_HEIGHT_REVISEを0に初期化する。
ステップS1103でCPU103はIN_WIDTHを2で割った際の余りが0であればステップS1105に遷移し、0でなければステップS1104に遷移する。
ステップS1104でCPU103はIN_WIDTHを2の倍数に切り上げた数をIN_WIDTH_REVISEに格納することで中間入力画像の幅が制約を満たすように補正する。
ステップS1105でCPU103はIN_HEIGHTを2で割った際の余りが0であればステップS1107に遷移し、0でなければステップS1106に遷移する。
ステップS1106でCPU103はIN_HEIGHTを2の倍数に切り上げた数をIN_WIDTH_REVISEに格納することで中間入力画像の高さが制約を満たすように補正する。
ステップS1107でCPU103はIN_WIDTH_REVISEが0でありかつIN_HEIGHT_REVISEが0である場合はステップS1108に遷移し、この条件を満たない場合はステップS1110に遷移する。
ステップS1108でCPU103はIN_WIDTHに2を乗じたものをOUT_WIDTHに格納する。
ステップS1109でCPU103はIN_HEIGHTに2を乗じたものをOUT_HEIGHTに格納する。
ステップS1110でCPU103は中間入力画像の幅又は高さを補正したことを示すフラグであるREVISE_FLAGに0(補正なし)を格納する。
ステップS1111でCPU103は中間入力画像の幅又は高さを補正したことを示すフラグであるREVISE_FLAGに1(補正あり)を格納し、実行エラーが発生した際にステップS324〜S333の処理を実施する判定に用いる。
あと、図は省略するが、周辺画素を消費しない処理モジュールでは、中間入力画像のサイズと周辺画素量をそのまま中間出力画像のサイズと周辺画素量として引き継げばよい。例えば、画像の色空間をRGBからCMYK(またはその逆)に変換する色変換処理モジュールや、カラー画像をグレースケールに変換する色処理モジュールなどが挙げられる。
(周辺画素の付加)
次に、並列処理部205へ入力する入力画像に周辺画素を付加する詳細について説明する。
図17(a)は、ページ単位の入力画像に周辺画素を付加する様子を示す模式図である。なお、並列処理部205は所定範囲(領域52、54、55、56、57)を処理に用いる処理モジュールを含むものとする。メモリ101に格納されている画像51は1ページ分であり、複数の処理モジュールにおける制約や必要とする周辺画素に基づいて領域53を補う。画素を補う具体例として、入力モジュール200が画像端部で折り返された画像が付加されるように、メモリ101の画像51について同じアドレスを複数回読み出す方法がある。もしくは画像51が画像処理装置のスキャナ(不図示)で読み取ったスキャン画像であれば並列処理部250へ読み出すアドレス領域を拡張することでも対応できる(一般的に、スキャナはラインセンサでスキャンした画像領域の一部を切り出してスキャン画像としているため。)。または、CPU103や入力モジュール200などで特定の値の画素を余白画素として付加するようにしてもよい。
そして、並列処理部205の入出力バッファ1401には領域53を付加された入力画像を保持する。
図17(b)は、バンド単位の入力画像(例えば、図17(a)の領域58)に周辺画素を付加する様子を示す模式図である。メモリ101に格納されている画像51を短冊状に分割し、短冊状に分割した部分画像(バンド画像)を順に並列処理部205へ入力する。ここで、並列処理部205の入出力バッファには周辺画素が付加された入力画像(点線領域65)を保持する。
(リングバス)
次に本実施形態で並列処理部205が備えるリングバスの詳細について説明する。
図14(a)に、並列処理部205の概略構成を示す。並列処理部205は複数個のモジュール201から204を有する。リングバス1400は、モジュール間でパケットを転送するためのバスである。モジュール201から204はリングバス並列処理部205を介して接続されている。各モジュールはデータパケットを隣接する一方のモジュールから受信し、所定の処理を行った後に隣接する他方のモジュールへ送信するように構成される。各モジュールが送受信するパケットはリングバスを一方向に移動する。以降の説明では単方向にデータ(又はパケット)を周回させるリング状のバスを単にリングバスと称す。
入出力バッファ1401は、データの入出力を行うためのバッファで、SRAMなどを備える。モジュール201〜204は、それぞれを識別するための情報を有している(図14では「ID」と記述)。なお、IDが1のモジュール201は、入出力バッファ206と接続されて、データの入出力も管理する。
次に、図15を参照して、各モジュール201〜204の概略構成を説明する。図15において、パケット識別部1508は、他のモジュールから到来したパケットを取り込むか否かを判断する。パケット識別部1508は自らが待ち受けているIDと一致する送信元IDを保持するパケットを受信した時にパケットをパケット受信部1510に出力する。
パケット受信部1510はパケットの受信処理を行う。処理データ送信部1504は、処理部1502に処理対象のデータを送信する。処理部1502は実際の画像処理を行う。処理データ受信部1505は、処理部1502からの処理後データを受信する。パケット生成部1511は、処理部1502から受信した処理後データとパケット変更部1507からの出力をもとにパケットを生成する。なお、パケット生成部1511はレジスタ1512に自身のモジュールの識別子を保持し、生成したパケットの送信元ID1412にレジスタ1512の値を保持させる。
パケット送信部1512はパケットをリングバスに送出する。パケット変更部1507は、パケット受信部1510からの指示に応じて、パケットのデータ有効フラグ1411や保留フラグ1414の値を変更する(パケットの詳細については後述する)。セレクタ1513は、パケット送信部1512からのパケットとパケット変更部1507からのパケットのいずれかをパケット送信部1512からの指示に基づいて選択する。セレクタ1513はパケット送信部1512からの指示がなければパケット変更部1507からの出力を選択してそれを出力とする。バッファ1514はパケットを次から次へと転送するためのもので、本実施形態では1つ分のパケットを1サイクルの間だけ保持する。
なお、処理部1502の状態によっては、パケット受信部1510はパケットの受信を保留しなければならないこともある。
次にモジュール間でデータを送受信するために必要なパケットのフォーマットを図14(b)に示す。データ有効フラグ1411は、パケットが有効なデータを保持しているかどうかを示す。例えば、データ有効フラグ401が「1」であればデータは有効であり、「0」であればデータは無効であるとする。
送信元ID1412は、パケットを送信したモジュールの識別子を格納する。データ格納領域1413は処理データ本体を格納する領域である。本実施形態では、データ格納領域はRGBもしくはCMYKの1画素分の画素データを保持するものとし、32bit分の領域を確保している。保留フラグ1414は、モジュールがパケットの処理を保留した際に「1」に設定する。即ち、保留フラグ1414が「1」であればそのパケットの処理が受け取り側で保留されたことを示している。なお、処理の保留は、例えば次に処理を実施する対象のモジュールが受信したものの、処理部1502がビジー状態であったためデータを処理できなかった場合に行われる。保留フラグ1414は初期値が「0」である。属性情報1515はその他のメタデータである。例えば、複数のデータフローを並列処理部205で実現する際に、各パケットがどのデータフローに属するのかを示すフロー識別情報などを含む。
また、各モジュールはパケット識別部1508内のレジスタ1515に待ち受けパケットIDを保持し、パケット識別部301は、待ち受けパケットIDとリングバスを流れるパケットの送信元ID402とが一致した時にパケットをパケット受信部1510に取り込む。
例えば、A→B→C→D→Aの順でデータパスを構成したい場合を考える。この場合、モジュールAの待ち受けパケットIDを3に、モジュールBの待ち受けパケットIDを4に、モジュールCの待ち受けパケットIDを2に、モジュールDの待ち受けパケットIDを1に設定する。このようにして各モジュールの待ち受けパケットIDをそれぞれ設定することで、データパスを形成することができる。ここで、入出力バッファ1401からの入力は直接モジュールAの処理部1502へ入力されるものとする。なお、待ち受けパケットIDは、各モジュールについて事前に設定され、その情報はパケット識別部1508のレジスタ1515が記憶するものとする。
次に、通信部1501におけるデータ受信方法に関して説明する。例えば、図14(a)においてID=1のモジュールAからID=3のモジュールCに転送を行う場合を考える。このとき、モジュールCのパケット識別部1508はデータ有効フラグ1411が有効となっているパケットを取得し、該パケットの送信元ID1412と自らの待ち受けパケットIDとを比較する。そして、両者が等しい場合に、該パケットをパケット受信部1510に送信する。
処理データ送信部1504は、処理部1502が処理可能であるかどうかを判定(ハンドシェイク)し、処理可能と判定した場合、パケット受信部1510は取得したパケットから処理対象データを抽出して処理データ送信部1504に送信する。データを抽出した際に、パケット無効処理指示レジスタ1509の値が「0」である場合、該パケットはすでに不要であるからパケット受信部1510はパケットのデータ有効フラグ1411を無効(0)に設定するようにパケット変更部1507に指示を出す。(パケット無効処理指示レジスタ1509の値が「0」である場合、パケット受信部1510はデータ有効フラグ1411を無効(0)に設定する指示を出さない。)
一方、処理データ送信部1504が処理部1502はビジー(新たなデータの投入が不可能)であると判定した場合、パケット受信部1510はパケットの保留フラグ1414を1に設定するようにパケット変更部1507に指示を出す。パケット変更部1507は、パケット受信部1510からの指示に従ってデータ有効フラグ1411或いは保留フラグ1414を変更して、セレクタ1513に送信する。セレクタ1513は、パケット変更部1507とパケット送信部1512からの入力のうちいずれかを選択してバッファ1514に送信する。
なお保留フラグ1414を有効(1)に設定されたパケットはリングバス1400をそのまま周回する。そして、保留フラグ1414を有効にしたモジュールまで周回してきた際に、当該モジュールのビジー状態が解除されていれば通常のパケットと同様に処理されるので、パケットを意識的に再送する必要がない。このようにリングバスを用いた並列処理部205では、モジュール間で効率よくデータ転送をすることができる。
(処理モード情報と演算プログラムについて)
図18(a)は処理モード毎に、各処理モジュールの処理順と、入・出力バンド高さ(周辺画素含まない)とを含む処理モード情報示す模式図である。処理モード情報は予めメモリ101のROMなどに工場出荷時に記憶する。MODE IDは処理モードの識別子であり、Processing Orderは処理モジュールの処理順を示す、Input Heightは入力バンド高さ(周辺画素含まない)、Output Heightha出力バンド高さ(周辺画素含まない)である。入力バンド幅と出力バンド高さも処理モード毎に設定してもよいが、この例では処理モード毎に変わらない値(200)を決め打ちで与えているため省略している。なお、処理モード4では分岐処理を含む処理順を示している。
図18(b)は、処理モジュールと対応する演算プログラムを示す識別子の対応を保持する表であり、処理モード情報と同様にメモリ101に保持されている。なお、演算プログラムの識別子でなくても、相対アドレスなどの代替できる情報であればよい。
図18(c)は、識別子1の演算プログラムの内容を示す。領域1801は入力量演算プログラムを示し、領域1802は出力量演算プログラムを示し、領域1803は補正値演算プログラムを示す。演算プログラムは画像処理モジュール毎に、処理モード情報と同様にメモリ101に保持されている。
以上のように、本実施形態によれば、周辺画素を使って処理する画像処理モジュールを含む複数の画像処理モジュールを所望の処理順で処理させる際に、好ましい結果をえるために少なくとも付加するべき周辺画素量を取得することができる。さらに、取得した周辺画素量を付加するように入力・出力モジュールを設定し、好ましい画像処理結果を得ることができる。
<<第2実施形態>>
第1実施形態では入力画像サイズ(入力バンド高さなど)周辺画素量と入力画像のサイズ(周辺画素含む)とを求めたが、第2実施形態では図12に示す様に、出力画像サイズ(出力バンド高さなど)から周辺画素量と入力画像のサイズ(周辺画素含む)とを求める。
なお、第1実施形態と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
ステップS1201でCPU103はINIT_WIDTHとして、設定された出力画像幅(S1602で取得したバンド幅)を格納する。
ステップS1202でCPU103はINIT_HEIGHTとして、設定された出力画像高さ(S1602で取得したOutput Height)を格納する。
ステップS1203でCPU103はIN_WIDTH、IN_LEFT_REF_OUTPUT及びIN_RIGHT_REF_OUTPUTの和をSET_IN_WIDTHに格納する。
ステップS1204でCPU103はIN_HEIGHT、IN_TOP_REF_OUTPUT及びIN_BOTTOM_REF_OUTPUTの和をSET_IN_HEIGHTに格納する。
本実施形態によれば、出力画像サイズから周辺画素を含む入力画像のサイズを求めることができる。
なお、説明の簡便のため、第1実施形態と第2実施形態を別々に説明したが、第1実施形態と第2実施形態を組み合わせて実施してもよい。例えば、ステップS1601においてCPU103が画像処理モードを決定する際に、図18(a)の処理モード情報に基づいて第1実施形態と第2実施形態とのいずれを実施するか決定すればよい。
上述の実施形態では並列処理部205の複数のモジュール間の接続としてリングバスを用いる形態について説明したが、モジュール間の処理順序を動的に変更可能なインターコネクトであれば構わない。例えば、クロスバースイッチやスイッチマトリックスを用いてもよいし、複数のセレクタによって処理順序の入れ替えができるように構成してもよい。
上述の実施形態ではクロッピングやマスクなどの切り出し処理を実施する切り出し処理モジュールについては触れていないが、これらの処理では処理順を遡って入力量を演算することが困難である。しかし、このような処理順を遡って入力量を演算することが困難な処理モジュールは処理順の最後とし、図4のように処理順のテーブルを作成する際に除外するようにしておけば、図3や図12に示した処理では自動的にスキップすることができる。ただし、クロッピング処理を含む処理順に対応する出力バンド高さは、クロッピングを実施する前の値を設定しておくことが好ましい。
なお上述の実施形態では詳細を述べていないが、画像処理モジュールの1つに余白画素を追加する余白追加処理モジュールを追加するようにしてもよい。その場合、処理順の先頭に予約画素を追加する処理モジュールが来るようにする。また、図3や図12の処理で周辺画素量を取得した後にCPU103が余白追加処理モジュールを設定し、余白追加処理モジュールは、所定の画素値(例えば、R255,G255,B255)を含む画素(実際にはパケット)を必要な箇所で出力する。
上述の実施例で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係を制限するものではない。
また、前述の各実施例の処理は、複数のハードウェアとソフトウェアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウェア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。

Claims (23)

  1. 複数の画像処理モジュールがリング状のバスによって接続され、入力画像に対して、前記複数の画像処理モジュールが所定の処理順で一連の画像処理を実行し、出力画像を生成する画像処理装置を制御する制御装置であって、
    前記画像処理モジュール毎に、必要とする周辺画素数を取得するアルゴリズムを保持する保持手段と、
    前記画像処理装置に出力させる前記出力画像のサイズを取得する第1の取得手段と、
    前記一連の画像処理における前記所定の処理順と、前記複数の画像処理モジュールのうち前記一連の画像処理を実行する少なくとも2つ以上の画像処理モジュールそれぞれが実行する処理の処理パラメータと、を取得する第2の取得手段と、
    前記処理パラメータと前記所定の処理順とを用いて、前記所定の処理順の逆順に、画像処理モジュールに対応するアルゴリズムを順番に実施することで、前記出力画像のサイズを出力するために必要な前記入力画像の周辺画素数を算出する算出手段と、
    前記算出手段により算出された周辺画素数に基づいて前記画像処理装置に入力する前記入力画像のサイズを決定する決定手段と、を有することを特徴とする制御装置。
  2. 前記保持手段は、前記画像処理装置が実行可能な複数の処理モード毎の、前記複数の画像処理モジュールのうち少なくとも2つ以上の画像処理モジュールで処理させる処理順をさらに保持することを特徴とする請求項1に記載の制御装置。
  3. 前記保持手段は、前記画像処理モジュール毎に入力画像サイズから出力画像サイズを取得するアルゴリズムを保持し、前記第1の取得手段は、前記処理順の画像処理モジュールに対応するアルゴリズムを順番に実施することで出力画像のサイズを取得することを特徴とする請求項に記載の制御装置。
  4. 前記画像処理装置を複数の処理モードで動作させるように制御する制御手段をさらに有することを特徴とする請求項乃至のいずれか1項に記載の制御装置。
  5. 前記保持手段は、前記画像処理装置の処理モード毎に、前記画像処理装置への入力画像のサイズ、または、前記画像処理装置からの出力画像のサイズを保持していることを特徴とする請求項に記載の制御装置。
  6. 前記周辺画素数は、画像の処理対象の画像の上端に付加する画素数、処理対象の画像の下端に付加する画素数、処理対象の画像の左端に付加する画素数、処理対象の画像の右端に付加する画素数、付加した画素を含む画像幅、付加した画素を含む画像高さ、の少なくとも1つを含むことを特徴とする請求項1乃至のいずれか1項に記載の制御装置。
  7. 前記複数の画像処理モジュールは、入力画像を拡大処理する拡大処理モジュールを含むことを特徴とする請求項1乃至のいずれか1項に記載の制御装置。
  8. 前記複数の画像処理モジュールは、入力画像を縮小処理する縮小処理モジュールを含むことを特徴とする請求項1乃至のいずれか1項に記載の制御装置。
  9. 前記複数の画像処理モジュールは、前記入力画像における注目画素を処理する際に、前記入力画像における複数の画素を参照して前記注目画素の出力画素を出力する処理を実施ことを特徴とする請求項1乃至のいずれか1項に記載の制御装置。
  10. 前記複数の画像処理モジュールは、N×M画素のフィルタ処理を実施するフィルタ処理モジュールを含むことを特徴とする請求項1乃至のいずれか1項に記載の制御装置。
  11. 前記複数の画像処理モジュールは、K×L画素のタイル処理を実施するタイル処理モジュールを含むことを特徴とする請求項1乃至10のいずれか1項に記載の制御装置。
  12. 前記複数の画像処理モジュールは、エッジ検出を実施することを特徴とする請求項1乃至11のいずれか1項に記載の制御装置。
  13. 前記複数の画像処理モジュールは、所定の画素値の画素を追加する余白追加処理モジュールを含むことを特徴とする請求項1乃至12のいずれか1項に記載の制御装置。
  14. 前記複数の画像処理モジュールは、切り出し処理を実施する切り出し処理モジュールを含むことを特徴とする請求項1乃至13のいずれか1項に記載の制御装置。
  15. 前記入力画像のサイズの入力画像を前記画像処理装置に供給する入力手段を更に有し、前記入力手段は、前記画像処理装置へ供給するためのアドレス領域を拡張することで、周辺画素を付加した入力画像を前記画像処理装置へ供給することを特徴とする請求項1乃至14のいずれか1項に記載の制御装置。
  16. 前記入力画像のサイズの入力画像を前記画像処理装置に供給する入力手段を更に有し、前記入力手段は、前記画像処理装置へ供給するためにアドレス領域を複数回読み出すことで、周辺画素を付加した入力画像を前記画像処理装置へ供給することを特徴とする請求項1乃至14のいずれか1項に記載の制御装置。
  17. 前記画像処理装置は、前記複数の画像処理モジュールを前記処理順に従って、論理的に接続するインターコネクトを備えることを特徴とする請求項1乃至16のいずれか1項に記載の制御装置。
  18. 前記所定の処理順は、前記複数の画像処理モジュールが前記バスによって接続された接続順とは異なることを特徴とする請求項1乃至17のいずれか1項に記載の制御装置。
  19. 複数の画像処理モジュールがリング状のバスによって接続され、入力画像に対して、前記複数の画像処理モジュールが所定の処理順で一連の画像処理を実行し、出力画像を生成する画像処理装置を制御する制御装置であって、
    前記画像処理装置に出力させる前記出力画像のサイズを取得する第1の取得手段と、
    前記一連の画像処理における前記所定の処理順と、前記複数の画像処理モジュールのうち前記一連の画像処理を実行する少なくとも2つ以上の画像処理モジュールそれぞれが実行する処理の処理パラメータと、を取得する第2の取得手段と、
    前記出力画像のサイズを出力するために必要な前記入力画像の周辺画素数を、前記所定パラメータと前記所定の処理順とを用いて算出する算出手段と、
    前記算出手段により算出された周辺画素数に基づいて前記画像処理装置に入力する前記入力画像のサイズを決定する決定手段と、を有し、
    前記算出手段は、前記所定の処理順とは逆順に、逐次的に必要な画素数を算出することにより、前記処理パラメータと前記所定の処理順とを用いた画素数を算出することを特徴とする制御装置。
  20. 複数の画像処理モジュールが、入力画像に対して、所定の論理的な処理順で一連の画像処理を実行し、出力画像を生成する画像処理装置を制御する制御装置であって、
    前記画像処理装置に出力させる前記出力画像のサイズを取得する第1の取得手段と、
    前記一連の画像処理における前記所定の処理順と、前記複数の画像処理モジュールのうち前記一連の画像処理を実行する少なくとも2つ以上の画像処理モジュールそれぞれが実行する処理の処理パラメータを取得する第2の取得手段と、
    前記出力画像のサイズを出力するために必要な前記入力画像の画素数を、前記処理パラメータと前記所定の処理順とを用いて算出する算出手段と、
    前記算出手段により算出された画素数に基づいて前記画像処理装置に入力する前記入力画像のサイズを決定する決定手段と、を有し、
    前記算出手段は、前記所定の処理順とは逆順に、逐次的に必要な画素数を算出することにより、前記処理パラメータと前記所定の処理順とを用いた画素数を算出することを特徴とする制御装置。
  21. 複数の画像処理モジュールがリング状のバスによって接続され、入力画像に対して、前記複数の画像処理モジュールが所定の処理順で一連の画像処理を実行し、出力画像を生成する画像処理装置を制御する制御方法であって、
    前記画像処理モジュール毎に、必要とする周辺画素数を取得するアルゴリズムを保持手段に保持する工程と、
    前記画像処理装置に出力させる前記出力画像のサイズを取得する第1の取得工程と、
    前記一連の画像処理における前記所定の処理順と、前記複数の画像処理モジュールのうち前記一連の画像処理を実行する少なくとも2つ以上の画像処理モジュールそれぞれが実行する処理の処理パラメータと、を取得する第2の取得工程と、
    前記処理パラメータと前記所定の処理順とを用いて、前記所定の処理順の逆順に、画像処理モジュールに対応するアルゴリズムを順番に実施することで、前記出力画像のサイズを出力するために必要な前記入力画像の画素数を算出する算出工程と、
    前記算出工程により算出された画素数に基づいて前記画像処理装置に入力する前記入力画像のサイズを決定する決定工程と、を有することを特徴とする制御方法。
  22. 複数の画像処理モジュールが、入力画像に対して、所定の論理的な処理順で一連の画像処理を実行し、出力画像を生成する画像処理装置を制御する制御方法であって、
    前記画像処理装置に出力させる前記出力画像のサイズを取得する第1の取得工程と、
    前記一連の画像処理における前記所定の処理順と、前記複数の画像処理モジュールのうち前記一連の画像処理を実行する少なくとも2つ以上の画像処理モジュールそれぞれが実行する処理の処理パラメータを取得する第2の取得工程と、
    前記出力画像のサイズを出力するために必要な前記入力画像の画素数を、前記処理パラメータと前記所定の処理順とを用いて算出する算出工程と、
    前記算出工程により算出された画素数に基づいて前記画像処理装置に入力する前記入力画像のサイズを決定する決定工程と、を有し、
    前記算出工程は、前記所定の処理順とは逆順に、逐次的に必要な画素数を算出することにより、前記処理パラメータと前記所定の処理順とを用いた画素数を算出することを特徴とする制御方法。
  23. コンピュータを請求項1乃至2いずれか1項の制御装置の各手段として機能させるためのプログラム。
JP2012191434A 2012-08-31 2012-08-31 画像処理装置、画像処理方法、およびプログラム Active JP6049358B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012191434A JP6049358B2 (ja) 2012-08-31 2012-08-31 画像処理装置、画像処理方法、およびプログラム
US14/011,903 US9626731B2 (en) 2012-08-31 2013-08-28 Image processing apparatus and image processing method that calculate a number of pixels, required for outputting a size of an output image, according to obtained processing parameters and a predetermined processing order

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012191434A JP6049358B2 (ja) 2012-08-31 2012-08-31 画像処理装置、画像処理方法、およびプログラム

Publications (3)

Publication Number Publication Date
JP2014048906A JP2014048906A (ja) 2014-03-17
JP2014048906A5 JP2014048906A5 (ja) 2016-07-07
JP6049358B2 true JP6049358B2 (ja) 2016-12-21

Family

ID=50187709

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012191434A Active JP6049358B2 (ja) 2012-08-31 2012-08-31 画像処理装置、画像処理方法、およびプログラム

Country Status (2)

Country Link
US (1) US9626731B2 (ja)
JP (1) JP6049358B2 (ja)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325800A (ja) 1994-05-31 1995-12-12 Sanyo Electric Co Ltd データフロープロセサ
US5848189A (en) * 1996-03-25 1998-12-08 Focus Automation Systems Inc. Method, apparatus and system for verification of patterns
JPH09120449A (ja) * 1996-11-05 1997-05-06 Hitachi Ltd フィルタリング装置
JP3510997B2 (ja) * 1999-04-05 2004-03-29 セイコーエプソン株式会社 画像処理装置およびコピーシステム
US6603882B2 (en) * 2001-04-12 2003-08-05 Seho Oh Automatic template generation and searching method
US6885384B2 (en) * 2002-03-12 2005-04-26 Sun Microsystems, Inc. Method of creating a larger 2-D sample location pattern from a smaller one by means of X, Y address permutation
US7257268B2 (en) * 2003-02-28 2007-08-14 Aperio Technologies, Inc. Systems and methods for image pattern recognition
JP2006115447A (ja) * 2004-09-15 2006-04-27 Matsushita Electric Ind Co Ltd 画像信号処理装置
US7602998B2 (en) * 2004-09-15 2009-10-13 Panasonic Corporation Image signal processing apparatus
US7715656B2 (en) * 2004-09-28 2010-05-11 Qualcomm Incorporated Magnification and pinching of two-dimensional images
US8115840B2 (en) * 2005-11-10 2012-02-14 DigitalOptics Corporation International Image enhancement in the mosaic domain
US7714866B2 (en) * 2006-07-19 2010-05-11 Autodesk, Inc. Rendering a simulated vector marker stroke
CN102016916B (zh) * 2008-04-04 2014-08-13 先进微装置公司 用于抗混叠的过滤方法和装置
US8243100B2 (en) * 2008-06-26 2012-08-14 Qualcomm Incorporated System and method to perform fast rotation operations
JP4869369B2 (ja) * 2009-03-13 2012-02-08 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP2010287175A (ja) * 2009-06-15 2010-12-24 Canon Inc データ処理装置、データ処理方法およびプログラム
JP5494013B2 (ja) * 2010-03-01 2014-05-14 セイコーエプソン株式会社 画像処理装置、投写型表示装置、映像表示システム、画像処理方法、コンピュータープログラム
JP5835942B2 (ja) * 2010-06-25 2015-12-24 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
US20120177111A1 (en) * 2011-01-12 2012-07-12 Matthias Narroschke Efficient clipping

Also Published As

Publication number Publication date
US20140064640A1 (en) 2014-03-06
US9626731B2 (en) 2017-04-18
JP2014048906A (ja) 2014-03-17

Similar Documents

Publication Publication Date Title
CN100420263C (zh) 显示打印进度状态的方法和设备
JP2007114833A (ja) 情報処理装置及びプログラム
JP2007310775A (ja) 画像処理装置及び画像処理方法
CN104375821B (zh) 信息处理设备、信息处理方法和处理设备
JP5315075B2 (ja) 画像処理装置、画像処理装置の制御方法およびプログラム
JP6049358B2 (ja) 画像処理装置、画像処理方法、およびプログラム
US20100315656A1 (en) Print program, print control apparatus and image forming apparatus
WO2017119191A1 (ja) 端末装置、情報処理方法、及び記録媒体
JP6772020B2 (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP2020101921A (ja) データ処理装置及びその制御方法及びプログラム
JP6460627B2 (ja) 原稿を読み取ることで得られた画像データに基づく印刷を行うことが可能な画像処理装置、画像処理装置の制御方法、およびプログラム
JPWO2018167973A1 (ja) 画像撮像装置、制御方法及び制御プログラム
JP2016078287A (ja) 画像形成装置およびその制御方法、並びにプログラム
JP5202265B2 (ja) 画像処理装置、プログラム及び画像処理装置の制御方法
US8643896B2 (en) Image processing apparatus for outputting raster image using a plurality of processors
JP6168311B2 (ja) 画像形成装置、画像形成システムおよび画像形成方法
JP6727273B2 (ja) 画像形成装置およびその制御方法、並びにプログラム
JP6884530B2 (ja) 画像処理装置及び第1調整回路
JP2014178927A (ja) 印刷処理システム、端末システム、印刷処理装置、端末システムの制御方法、印刷処理装置の制御方法、及びプログラム
JP2005269502A (ja) 画像処理装置および画像処理方法
JP2020042275A (ja) 情報処理装置、情報処理方法、及びプログラム
JP5521654B2 (ja) 画像形成装置及びプログラム
JPS63173459A (ja) 画像情報フアイル装置
JP2014175785A (ja) 画像処理装置、画像処理方法、プログラム、記憶媒体
JP2010062984A (ja) 画像形成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150831

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160802

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160921

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: 20161025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161122

R151 Written notification of patent or utility model registration

Ref document number: 6049358

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151