(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-04
(45)【発行日】2023-12-12
(54)【発明の名称】画像処理装置
(51)【国際特許分類】
G06T 1/20 20060101AFI20231205BHJP
G06T 1/60 20060101ALI20231205BHJP
【FI】
G06T1/20 A
G06T1/60 450E
(21)【出願番号】P 2019150418
(22)【出願日】2019-08-20
【審査請求日】2022-07-21
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【代理人】
【識別番号】100125346
【氏名又は名称】尾形 文雄
(74)【代理人】
【識別番号】100166981
【氏名又は名称】砂田 岳彦
(72)【発明者】
【氏名】ヌデ島 正起
(72)【発明者】
【氏名】大野 智之
(72)【発明者】
【氏名】橋本 貴之
(72)【発明者】
【氏名】高澤 大樹
【審査官】高野 美帆子
(56)【参考文献】
【文献】特開2017-157883(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/20
G06T 1/60
(57)【特許請求の範囲】
【請求項1】
画像処理を実行する処理部と、
メモリに対するアクセス(Direct Memory Access)を制御するDMAC(DMA Controller)であって、当該メモリからのデータの読み取りに用いられる読み取り用DMACおよび当該メモリへのデータの書き込みに用いられる書き込み用DMACと、
前記読み取り用DMACおよび前記書き込み用DMACに接続され、各DMACのチャネル数に対応する数のFIFO(First-In First-Out)を有する上段FIFO部と、
前記上段FIFO部と前記処理部との間に設けられ、当該上段FIFO部の個々のFIFOに対して1対F(ただし、Fは2以上の整数)の比で対応させたFIFOを有し、当該上段FIFO部の各FIFOにそれぞれ対応する各F個の当該FIFOの一部を使用しないことにより当該処理部に入力するデータのライン数を前記読み取り用DMACのチャネル数単位で変更可能とする下段FIFO部と、
を備えることを特徴とする、画像処理装置。
【請求項2】
前記処理部に入力される複数ラインのデータのうち、予め定められた2ラインのデータを
無効にすることにより、当該処理部に入力するデータのライン数を2ライン単位で変更可能であることを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記処理部に入力される複数ラインのデータのうち2ラインのデータを
無効にする際に、画像から最後に読み取られたデータと、前記メモリから読み出され前記下段FIFO部から取得したデータのうちの最も古いデータとを
無効にすることを特徴とする、請求項2に記載の画像処理装置。
【請求項4】
前記処理部は、画像から読み取られた1ラインと前記メモリから読み出され前記下段FIFO部から取得したn-1ラインとからなるnラインのデータを入力して処理し、1ラインの処理済みデータを出力し、
前記読み取り用DMACに接続された前記上段FIFO部の数は、当該読み取り用DMACのチャネル数に対応するC個(ただし、Cは1以上の整数)であり、
前記読み取り用DMACに接続された前記上段FIFO部に対応する前記下段FIFO部の数は、C×F個であると共にn-1個であることを特徴とする、請求項1に記載の画像処理装置。
【請求項5】
前記書き込み用DMACは1チャネルであり、
前記処理部は、画像から最後に読み取られた1ラインのデータであるラインデータN0と、前記下段FIFO部から取得したラインデータであって1回前からn-1回前に読み取られたn-1ラインのデータであるラインデータN1~N(n-1)とからなるnラインのラインデータを処理対象として入力すると共に、入力した当該ラインデータのうちFライン分のラインデータNL(L=C×(P-1))(ただし、Pは1からFまでの整数)を、前記書き込み用DMACに接続された前記上段FIFO部に対応する前記下段FIFO部へ送ることを特徴とする、請求項4に記載の画像処理装置。
【請求項6】
前記書き込み用DMAC側の前記上段FIFO部および前記下段FIFO部では、前記処理部から当該下段FIFO部に送られたデータが、F個の当該下段FIFO部の各々から順に1データずつ当該上段FIFO部へ送られ、当該書き込み用DMACにより当該上段FIFO部から前記メモリへ順に書き込まれ、
前記読み取り用DMAC側の前記上段FIFO部および前記下段FIFO部では、当該読み取り用DMACにより前記メモリから読み出されてC個の当該上段FIFO部に格納されたデータが、前記処理部に入力されるライン順にしたがって当該上段FIFO部ごとのF個の当該下段FIFO部へ1データずつ順に格納されることを特徴とする、請求項5に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置に関する。
【背景技術】
【0002】
画像処理装置では、複数画素のウインドウ単位で画像を処理することが行われている。かかる画像処理では、1ラインずつ画像を読み取ってメモリに蓄積し、このメモリからウインドウのサイズに応じたライン分のデータを読み出して、処理が行われる。画像処理を行う演算コアとラインごとのデータを蓄積するメモリとの間のデータ転送は、DMA(Direct Memory Access)により行われる。
【0003】
特許文献1には、複数の画像処理モジュール部と、メモリと、かかる画像処理モジュールによるメモリアクセスを制御するDMAC(DMA Controller)とを備えた画像処理装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ウインドウ単位での画像処理では、ウインドウのサイズを変更することにより画質を制御することができる。ここで、ウインドウサイズを変更するために、ウインドウに対応するデータのライン数を変更するには、メモリアクセスを制御するDMACのチャネル数の変更が必要となる。
【0006】
本発明は、ウインドウサイズを変更した場合においても、DMACのチャネル数を変更する手間を抑制することを目的とする。
【課題を解決するための手段】
【0007】
請求項1に係る本発明は、
画像処理を実行する処理部と、
メモリに対するアクセス(Direct Memory Access)を制御するDMAC(DMA Controller)であって、当該メモリからのデータの読み取りに用いられる読み取り用DMACおよび当該メモリへのデータの書き込みに用いられる書き込み用DMACと、
前記読み取り用DMACおよび前記書き込み用DMACに接続され、各DMACのチャネル数に対応する数のFIFO(First-In First-Out)を有する上段FIFO部と、
前記上段FIFO部と前記処理部との間に設けられ、当該上段FIFO部の個々のFIFOに対して1対F(ただし、Fは2以上の整数)の比で対応させたFIFOを有し、当該上段FIFO部の各FIFOにそれぞれ対応する各F個の当該FIFOの一部を使用しないことにより当該処理部に入力するデータのライン数を前記読み取り用DMACのチャネル数単位で変更可能とする下段FIFO部と、
を備えることを特徴とする、画像処理装置である。
請求項2に係る本発明は、
前記処理部に入力される複数ラインのデータのうち、予め定められた2ラインのデータを無効にすることにより、当該処理部に入力するデータのライン数を2ライン単位で変更可能であることを特徴とする、請求項1に記載の画像処理装置である。
請求項3に係る本発明は、
前記処理部に入力される複数ラインのデータのうち2ラインのデータを無効にする際に、画像から最後に読み取られたデータと、前記メモリから読み出され前記下段FIFO部から取得したデータのうちの最も古いデータとを無効にすることを特徴とする、請求項2に記載の画像処理装置である。
請求項4に係る本発明は、
前記処理部は、画像から読み取られた1ラインと前記メモリから読み出され前記下段FIFO部から取得したn-1ラインとからなるnラインのデータを入力して処理し、1ラインの処理済みデータを出力し、
前記読み取り用DMACに接続された前記上段FIFO部の数は、当該読み取り用DMACのチャネル数に対応するC個(ただし、Cは1以上の整数)であり、
前記読み取り用DMACに接続された前記上段FIFO部に対応する前記下段FIFO部の数は、C×F個であると共にn-1個であることを特徴とする、請求項1に記載の画像処理装置である。
請求項5に係る本発明は、
前記書き込み用DMACは1チャネルであり、
前記処理部は、画像から最後に読み取られた1ラインのデータであるラインデータN0と、前記下段FIFO部から取得したラインデータであって1回前からn-1回前に読み取られたn-1ラインのデータであるラインデータN1~N(n-1)とからなるnラインのラインデータを処理対象として入力すると共に、入力した当該ラインデータのうちFライン分のラインデータNL(L=C×(P-1))(ただし、Pは1からFまでの整数)を、前記書き込み用DMACに接続された前記上段FIFO部に対応する前記下段FIFO部へ送ることを特徴とする、請求項4に記載の画像処理装置である。
請求項6に係る本発明は、
前記書き込み用DMAC側の前記上段FIFO部および前記下段FIFO部では、前記処理部から当該下段FIFO部に送られたデータが、F個の当該下段FIFO部の各々から順に1データずつ当該上段FIFO部へ送られ、当該書き込み用DMACにより当該上段FIFO部から前記メモリへ順に書き込まれ、
前記読み取り用DMAC側の前記上段FIFO部および前記下段FIFO部では、当該読み取り用DMACにより前記メモリから読み出されてC個の当該上段FIFO部に格納されたデータが、前記処理部に入力されるライン順にしたがって当該上段FIFO部ごとのF個の当該下段FIFO部へ1データずつ順に格納されることを特徴とする、請求項5に記載の画像処理装置である。
【発明の効果】
【0008】
請求項1の発明によれば、処理部とDMACとの間に1段のFIFO部を備える構成と比較して、処理部のウインドウサイズを変更する場合におけるDMACのチャネル数を変更する手間を減らすことができる。
請求項2の発明によれば、下段FIFO部のFIFOのみによるウインドウサイズの制御と比較して、より細かく処理部のウインドウサイズを制御することができる。
請求項3の発明によれば、連続する2ラインのデータを除外する構成と比較して、ウインドウサイズを変更した場合に、出力データを出力するラインを変更する手間を削減することができる。
請求項4の発明によれば、処理部とDMACとの間に1段のFIFO部を備える構成と比較して、DMACのチャネル数および処理部の入力数に応じた下段FIFO部のFIFOの数を特定することができる。
請求項5の発明によれば、処理部とDMACとの間に1段のFIFO部を備える構成と比較して、ラインバッファに保持させるラインデータを下段FIFO部のFIFOに対応して抽出することができる。
請求項6の発明によれば、処理部とDMACとの間に1段のFIFO部を備える構成と比較して、上段FIFO部と下段FIFO部との関係に応じてラインデータをメモリへ書き込み、処理部へ提供することができる。
【図面の簡単な説明】
【0009】
【
図3】上段FIFO部の各FIFOと処理部の入力ポートとの関係を示す図表である。
【
図6】上段FIFO部の各FIFOと処理部の入力ポートとの関係を示す図表である。
【
図8】ウインドウサイズの他の制御例を示す図である。
【
図9】画像処理装置の設計手順を示すフローチャートである。
【
図10】本実施形態による画像処理の概念を示す図である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
<画像処理装置の概要>
本実施形態が適用される画像処理装置は、画像から読み取られたデータを取得し、処理部であるプロセッサにより画像処理を行う。画像データは、画像読み取り装置(例えば、イメージ・インプット・ターミナル;IIT)の走査線1ラインごとに画像を読み取って得られる。この1ラインごとの画像データをラインデータと呼ぶ。ラインデータは1ラインずつ読み取られ、ラインバッファに蓄積される。
【0011】
プロセッサは、最後に読み取られた1ラインを受け付けると共に、その直前までに読み取られた複数(n-1)ライン分のラインデータをラインバッファから取得して、合計nライン分のラインデータの画像処理を行い、1ライン分の処理データを出力する。より詳細には、プロセッサは、nライン分のラインデータに対し、m(ピクセル)×n(ライン)のウインドウ単位で画像処理を行い、このウインドウを代表する1画素分の処理データを生成する。そして、プロセッサは、ウインドウをラインに沿って1画素分ずつずらしながら画像処理を行い、1画素分の処理データが連続する1ライン分の処理データを得、出力する。
【0012】
図10は、本実施形態による画像処理の概念を示す図である。
図10に示す例では、ウインドウサイズは5(ピクセル)×5(ライン)である。画像読み取り装置(
図10では「前段」とのみ記載)により読み取られた1ライン分のラインデータlineN0は、処理部10に入力されると共に、ラインバッファへ送られて保持される。ラインバッファからは、直前までに読み取られて蓄積された4ライン分のラインデータlineN1、lineN2、lineN3、lineN4が読み出され、最後に読み取られたラインデータlineN0と共に処理部10へ入力される。
【0013】
処理部10は、取得した5ライン分のラインデータ(lineN0~N4)に対し、ウインドウサイズ5(ピクセル)×5(ライン)のウインドウを1画素分ずつずらしながら適用して画像処理を行い、処理データを生成する。処理データは、ウインドウにおける何れかの画素の位置のデータとして生成される。図示の例では、5(ピクセル)×5(ライン)のウインドウの中央の画素(lineN2の左端(または右端)から3番目の画素の位置のデータとして、処理データが生成されている。そして、ウインドウを1画素分ずつずらしながら生成された1ライン分のラインデータが、lineN2の処理データとして出力され、後段の装置(例えば、イメージ・アウトプット・ターミナル:IOT)へ送られる。
【0014】
なお、ここではウインドウサイズを5(ピクセル)×5(ライン)の正方形として説明した。より詳細には、ウインドウサイズのライン数は処理部10に入力するラインデータの数で特定されるが、ピクセル数は、処理部10の処理能力等に応じて設定し得る。したがって、処理部10において設定されるウインドウは、必ずしもライン数と同数のピクセル数による正方形のウインドウには限定されない。以下では、ウインドウサイズについて言及する際、ライン数のみを特定し、ピクセル数については特定しない。
【0015】
<画像処理装置の構成>
図1は、画像処理装置の構成を示す図である。画像処理装置1は、処理部10と、ラインバッファを構成するメモリ20、DMAC30、上段FIFO部40、下段FIFO部50およびバスブリッジ60とを備える。DMAC30は、書き込み用DMAC31と、読み取り用DMAC32とを含む。上段FIFO部40および下段FIFO部50は、それぞれ複数のFIFOを備えて構成される。
【0016】
処理部10は、画像の電子データに対するフィルタ処理を行うプロセッサであり、いわゆるデジタルフィルタである。処理部10は、複数画素で構成されるウインドウ単位で処理を実行する。処理部10は、上述したように、ウインドウのサイズに応じた数のラインデータ(
図1の例では、lineN0~N8)を読み込み、1ライン分の処理後のラインデータ(
図1の例では、lineN4)を出力する。また、処理部10は、読み込んだラインデータのうち、一部のラインデータ(
図1の例では、lineN0およびlineN4)をそのまま出力してラインバッファへ転送する。転送対象のラインデータについては後述する。
【0017】
メモリ20は、1ラインずつ読み取られた画像のラインデータを蓄積する記憶手段である。メモリ20としては、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等が用いられる。メモリ20を、CPUによる演算処理における作業メモリと共用のメモリとしても良い。
【0018】
DMAC30は、画像処理装置1におけるメモリアクセスを制御するDMAコントローラである。DMAC30は、メモリ20へのデータの書き込みに用いられる書き込み用DMAC31と、メモリ20からのデータの読み取りに用いられる読み取り用DMAC32とを含む。書き込み用DMAC31は、1チャネルでデータの書き込みを行う。読み取り用DMAC32は、複数チャネルでデータの読み取りを行う。
図1に示す構成例では、読み取り用DMAC32は4チャネルである。
【0019】
上段FIFO部40および下段FIFO部50は、DMAC30によるメモリ20へのデータの読み書きに用いられるバッファである。上段FIFO部40は、DMAC30に接続されている。下段FIFO部50は、上段FIFO部40と処理部10との間に設けられている。
【0020】
上段FIFO部40は、書き込み用DMAC31および読み取り用DMAC32の各々のチャネル数に対応する数のFIFO(First-In First-Out)を有する。書き込み用DMAC31に接続された上段FIFO部40が有するFIFOの数は、書き込み用DMAC31のチャネル数に対応する1個のFIFO45が設けられている。読み取り用DMAC32に接続された上段FIFO部40が有するFIFOの数は、読み取り用DMAC32のチャネル数に対応するC個(ただし、Cは1以上の整数)である。
図1に示す構成例では、C=4であり、4個のFIFO41~44が設けられている。
【0021】
下段FIFO部50は、上段FIFO部40の個々のFIFO41~45に対して1対F(ただし、Fは2以上の整数)の比で対応させたFIFOを有する。
図1に示す構成例では、F=2である。したがって、読み取り用DMAC32に接続された上段FIFO部40のFIFO41~44に対応する下段FIFO部50のFIFOの総数は、C×F個である。
【0022】
ここで、処理部10に入力されるラインデータの総数をnとする。すなわち、処理部10に入力されるラインデータのうち、メモリ20から読み出されたラインデータの数は、n-1である。一方、下段FIFO部50は、処理部10に接続されているので、下段FIFO部50のFIFOの個数は、メモリ20から読み出されて処理部10に入力されるラインデータの数に対応するn-1個である。すなわち、読み取り用DMAC32側の下段FIFO部50が有するFIFOの個数に関して、
C×F=n-1
が成り立つ。
【0023】
図1に示す構成例では、C=4であり、n=9(lineN0~N8の9ライン)であるので、F=2となる。すなわち、下段FIFO部50は、読み取り用DMAC32側の上段FIFO部40のFIFO41~44に対して2個ずつのFIFO51a、b~54a、bを有する。また、書き込み用DMAC31側についても同様であり、下段FIFO部50は、上段FIFO部40の1個のFIFO45に対して2個のFIFO55a、bを有する。
【0024】
バスブリッジ60は、メモリ20とDMAC30の間に介在するブリッジ回路である。DMAC30は、バスブリッジ60を介してメモリ20に接続し、データの読み書きを行う。
【0025】
<処理部10とラインバッファとの間のデータ転送>
次に、
図1に示す構成例を参照して、処理部10とラインバッファとの間のデータ転送について説明する。
図1に示す構成例において、処理部10は、9個の入力ポート(N0~N8)を有する。入力ポートN0には、画像から最後に読み取られたラインデータが入力される。入力ポートN1~N8には、ラインバッファから取得された8ライン分のラインデータが入力される。一般的には、n個の入力ポートのうち、入力ポートN0には画像から最後に読み取られたラインデータが入力され、入力ポートN1~N(n-1)にはラインバッファから取得されたn-1ライン分のラインデータが入力される。
【0026】
入力ポートN1~N8の並びは、ラインデータの新旧に対応している。具体的には、入力ポートN0に入力されるラインデータの直前に読み取られたラインデータが入力ポートN1に入力され、さらに1ライン前に読み取られたラインデータが入力ポートN2に入力される。同様に1ライン分ずつ遡って、入力ポートN8には最も古い8ライン前に読み取られたラインデータが入力される。
【0027】
入力ポートN1~N8は、読み取り用DMAC32側の下段FIFO部50のFIFO51a、b~54a、bに個別に接続されている。具体的には、入力ポートN1は、下段FIFO部50のFIFO51aに接続されている。入力ポートN2は、下段FIFO部50のFIFO52aに接続されている。入力ポートN3は、下段FIFO部50のFIFO53aに接続されている。入力ポートN4は、下段FIFO部50のFIFO54aに接続されている。入力ポートN5は、下段FIFO部50のFIFO51bに接続されている。入力ポートN6は、下段FIFO部50のFIFO52bに接続されている。入力ポートN7は、下段FIFO部50のFIFO53bに接続されている。入力ポートN8は、下段FIFO部50のFIFO54bに接続されている。
【0028】
また、処理部10は、処理結果の出力データを出力する1個の出力ポート(N4(出力))と、入力ポートから入力されたラインデータをそのまま出力する2個の出力ポート(N0、N4)とを有する。出力ポートは、入力ポートから入力された全ラインデータN0~N8の中央のライン(N4)に対応している。また、以下の説明において、入力されたラインデータをそのまま出力する出力ポートを、処理結果を出力する出力ポートと区別するため、「転送ポート」と呼ぶ。転送ポートN0からは、入力ポートN0に入力されたラインデータが出力され、転送ポートN4からは、入力ポートN4に入力されたラインデータが出力される。
【0029】
転送ポートは、一般的には次のように設定される。まず、入力ポートN0に対応する出力ポート(転送ポートN0)である。そして、ラインバッファからのラインデータに対応する入力ポートのうち、N1(新しい方)から順に数えて、読み取り用DMAC32のチャネル数Cの整数倍の位置の入力ポート(
図1の例ではN4とN8が該当)であって、かつ、最後の(最も古い)ラインデータに対応する入力ポート(
図1の例ではN8)以外の入力ポート(
図1ではN4のみ)に対応する出力ポート(転送ポートN4)である。すなわち、Cを読み取り用DMAC32のチャネル数、Pを1からF(Fは上段FIFO部40のFIFO1個に対する下段FIFO部50のFIFOの数)までの整数として、入力ポートNL(L=C×(P-1))に対応する出力ポートNLが転送ポートとして設定される。
【0030】
転送ポートN0は、下段FIFO部50のFIFO55aに接続されている。また、転送ポートN4は、下段FIFO部50のFIFO55bに接続されている。そして、転送ポートN0、N4から出力されるラインデータは、書き込み用DMAC31側の下段FIFO部50のFIFO55a、bへ供給される。
図1の例では、具体的には、転送ポートN0の出力はFIFO55aへ、転送ポートN4の出力はFIFO55bへ供給される。
【0031】
図1において、FIFO55a、bに記載されている(L
N0,P
1)等の文字は、FIFO55a、bに供給され、保持された各ラインデータに固有の情報である(対応するポート,同期情報)を表す。例えば、FIFO55aの(L
N0,P
1)とFIFO55bの(L
N4,P
1)とは、同じP
1のタイミングで転送ポートN0と転送ポートN4から出力されたラインデータを表す。また、FIFO55bの(L
N4,P
1)(L
N4,P
2)(L
N4,P
3)(L
N4,P
4)……は、転送ポートN4からP
1、P
2、P
3、P
4、……の順で、各タイミングに出力されたラインデータを表す。
【0032】
下段FIFO部50のFIFO55a、bに保持されたラインデータは、交互に上段FIFO部40のFIFO45に移される。
図1の例では、(L
N0,P
1)(L
N4,P
1)(L
N0,P
2)(L
N4,P
2)……の順でラインデータが格納されている。書き込み用DMAC31は、FIFO45から順にラインデータを読み出し、バスブリッジ60を介してメモリ20へ格納する。
【0033】
より一般的には、書き込み用DMAC31側の上段FIFO部40のFIFO45および下段FIFO部50のFIFO55a、bでは、処理部10から下段FIFO部50に送られたラインデータが、FIFO55a、bの各々から順に1データずつ上段FIFO部40のFIFO45へ送られる。そして、書き込み用DMAC31によりFIFO45からメモリ20へ順に書き込まれる。
【0034】
読み取り用DMAC32は、バスブリッジ60を介して、メモリ20から自身のチャネル数分のラインデータを読み出し、上段FIFO部40のFIFO41~44に保持させる。FIFO41には、下段FIFO部50のFIFO51a、bに供給されるラインデータが交互に保持される。
図1に示す例では、(L
N1,P
1)(L
N5,P
1)(L
N1,P
2)(L
N5,P
2)……というように、FIFO41にラインデータが保持されている。ここで、ラインデータがメモリ20から読み出される時点では、メモリ20に書き込まれる時点から1サイクル分進んでおり、新たなラインデータL
Nが入力される。したがって、FIFO45から(L
N0,P
1)(L
N4,P
1)としてメモリ20に書き込まれたラインデータが(L
N1,P
1)(L
N5,P
1)として読み出されている。
【0035】
FIFO42には、下段FIFO部50のFIFO52a、bに供給されるラインデータが交互に保持される。
図1の例では、(L
N2,P
1)(L
N6,P
1)(L
N2,P
2)(L
N6,P
2)……というように、FIFO42にラインデータが保持されている。ここで、FIFO42に供給されるラインデータは、直前のサイクルでFIFO41に供給されたラインデータである。そして、1サイクル進んで新たなラインデータL
Nが読み込まれたことにより、メモリ20から読み出された各ラインデータは、1ライン分ずれてFIFO42に供給されている。
【0036】
FIFO43には、下段FIFO部50のFIFO53a、bに供給されるラインデータが交互に保持される。
図1の例では、(L
N3,P
1)(L
N7,P
1)(L
N3,P
2)(L
N7,P
2)……というように、FIFO43にラインデータが保持されている。ここで、FIFO43に供給されるラインデータは、直前のサイクルでFIFO42に供給されたラインデータである。そして、1サイクル進んで新たなラインデータL
Nが読み込まれたことにより、メモリ20から読み出された各ラインデータは、1ライン分ずれてFIFO43に供給される。
【0037】
FIFO44には、下段FIFO部50のFIFO54a、bに供給されるラインデータが交互に保持される。
図1の例では、(L
N4,P
1)(L
N8,P
1)(L
N4,P
2)(L
N8,P
2)……というように、FIFO44にラインデータが保持されている。ここで、FIFO44に供給されるラインデータは、直前のサイクルでFIFO43に供給されたラインデータである。そして、1サイクル進んで新たなラインデータL
Nが読み込まれたことにより、メモリ20から読み出された各ラインデータは、1ライン分ずれてFIFO44に供給される。
【0038】
下段FIFO部50のFIFO51a、bには、FIFO41から交互にラインデータが転送される。
図1に示す例では、FIFO51aに、(L
N1,P
1)(L
N1,P
2)(L
N1,P
3)(L
N1,P
4)……というようにラインデータが転送され、FIFO51bに、(L
N5,P
1)(L
N5,P
2)(L
N5,P
3)(L
N5,P
4)……というようにラインデータが転送されている。同様に、FIFO52a、bにはFIFO42から、FIFO53a、bにはFIFO43から、FIFO54a、bにはFIFO44から、交互にラインデータが転送される。
図1に示す例では、FIFO52aに、(L
N2,P
1)(L
N2,P
2)(L
N2,P
3)(L
N2,P
4)……というようにラインデータが転送され、FIFO52bに、(L
N6,P
1)(L
N6,P
2)(L
N6,P
3)(L
N6,P
4)……というようにラインデータが転送されている。また、FIFO53aに、(L
N3,P
1)(L
N3,P
2)(L
N3,P
3)(L
N3,P
4)……というようにラインデータが転送され、FIFO53bに、(L
N7,P
1)(L
N7,P
2)(L
N7,P
3)(L
N7,P
4)……というようにラインデータが転送されている。また、FIFO54aに、(L
N4,P
1)(L
N4,P
2)(L
N4,P
3)(L
N4,P
4)……というようにラインデータが転送され、FIFO54bに、(L
N8,P
1)(L
N8,P
2)(L
N8,P
3)(L
N8,P
4)……というようにラインデータが転送されている。
【0039】
より一般的には、読み取り用DMAC32側の上段FIFO部40のFIFO41~44および下段FIFO部50のFIFO51a、b~54a、bでは、読み取り用DMAC32によりメモリ20から読み出されてFIFO41~44に格納されたラインデータが、処理部20に入力されるライン順にしたがって、上段FIFO部40の各FIFO41~44に対応する下段FIFO部50のFIFO51a、b~54a、bへ1データずつ順に格納される。
【0040】
そして、下段FIFO部50の各FIFO51a、b~54a、bから、1サイクルごとに、同じ同期情報(P1、P2、P3、P4、……)のラインデータが処理部10へ供給される。処理部10の入力ポートN0には、その都度、新たに読み込まれたラインデータが入力される。
【0041】
<処理部10の構成>
図2は、処理部10の構成例を示す図である。処理部10は、演算コア11と、入力部12と、出力部13とを備える。入力部12は、入力ポートを構成する複数個の入力インターフェイス(I/F)121と、入力ポートのON/OFFを制御するデータセレクタ122とを備える。入力I/F121の数は、
図1に示す構成の場合、入力ポートN0、N1~N8に対応する9個である。データセレクタ122は、入力ポートN0以外の各入力ポートを構成する入力I/F121に対して設けられる。したがって、データセレクタ122の数は、
図1に示す構成の場合、入力ポートN1~N8に対応する8個である。入力ポートN0を構成する入力I/F121には、画像の読み取り手段(
図2では「前段」と記載)により最後に読み取られたデータが入力される。
【0042】
出力部13は、出力ポート(転送ポートを含む)を構成する複数個の出力インターフェイス(I/F)131と、出力ポートのON/OFFを制御するデータセレクタ132とを備える。出力I/F131の数は、
図1に示す構成の場合、出力ポートN4および転送ポートN0、N4に対応する3個である。データセレクタ132は、各転送ポートN0、N4に対して設けられ、データセレクタ132の数は2個である。
【0043】
<上段FIFO部40の各FIFO41~45と処理部10の入力ポートとの関係>
図3は、上段FIFO部40の各FIFO41~45と処理部10の入力ポートとの関係を示す図表である。
図3には、入力ライン(入力ポートN0)に画像読み取りによる100~105ライン目のラインデータが入力されるタイミング(各サイクル)における、処理部10の各入力ポートN0、N1~N8に入力されるラインデータと、上段FIFO部40の各FIFO41~45に保持されるラインデータとが示されている。
【0044】
図3を参照すると、例えば入力ポートNに100ライン目のラインデータが入力される時、読み取り用DMAC32側のFIFO41~44には、次のラインデータが保持される。なお、
図3では、例えば99ライン目のラインデータを「L99」と表記している。
FIFO41:(L
N1,P
1)(L
N5,P
1)→L99、L95
FIFO42:(L
N2,P
1)(L
N6,P
1)→L98、L94
FIFO43:(L
N3,P
1)(L
N7,P
1)→L97、L93
FIFO44:(L
N4,P
1)(L
N8,P
1)→L96、L92
【0045】
これが下段FIFO部50のFIFO51a、b~54a、bに振り分けられ、入力ポートN1~N8に、次のように転送される。すなわち、古いラインデータから、N8→N1の順に入力される。なお、
図3では、入力ポートN1を「port N1」と表記している。
入力ポートN8:L92
入力ポートN7:L93
入力ポートN6:L94
入力ポートN5:L95
入力ポートN4:L96
入力ポートN3:L97
入力ポートN2:L98
入力ポートN1:L99
【0046】
このサイクルでは、上述したように入力ポートN0には100ライン目のラインデータ「L100」が入力される。次のサイクルでは、入力ポートN0に101ライン目のラインデータ「L101」が入力される。また、読み取り用DMAC32に読み出されてFIFO41~44に保持されるラインデータ、入力ポートN1~N8に振り分けられるラインデータは、上記の状態から新しい方へ1ラインずつずれる。
【0047】
ここで、転送ポートN0、N4から出力されるラインデータに着目する。転送ポートN0、N4からは、入力ポートN0、N4への入力がそのまま出力されるため、上述の入力ポートN0に100ライン目のラインデータ(L100)が入力されたタイミングでは、転送ポートN0の出力はL100、転送ポートN4の出力はL96となる。したがって、書き込み用DMAC31側のFIFO45には、L
N=L100、L
N4=L96が保持される。
図3では、L100およびL96の位置を網掛けで示している。図示のように、1サイクルごとに、入力ポートN0から新たなラインデータが入力され、これに伴い、L100およびL96が入力される入力ポートの位置が1ラインずつずれている。同様に、メモリ20から読み出されたL100およびL96が保持されるFIFO41~44が一つずつずれている。
【0048】
<ウインドウサイズの制御>
次に、
図1のように構成された画像処理装置のウインドウサイズの制御について説明する。本実施形態では、画像処理装置のラインバッファにおいて、DMAC30により読み書きされるラインデータを保持するFIFOを複数段とした。そして、上段FIFO部40のFIFO(
図1ではFIFO41~45)に対し、下段FIFO部50の複数個のFIFO(
図1ではFIFO51a、b~55a、b)を対応付けた。これにより、DMAC30のチャネル数を変更することなく処理部10への入力ライン数を増加させ、処理部10におけるウインドウサイズを拡大させた。
【0049】
図1の例では、読み取り用DMAC32のチャネル数4で1段のFIFO(上段FIFO部40のFIFO41~44の場合、入力ポートN0への入力ラインと合わせて5ラインのウインドウサイズであるところ、下段FIFO部50のFIFO51a、b~54a、bを追加したことで、入力ポートN0への入力ラインと合わせて9ラインのウインドウサイズとなった。ここで、上段FIFO部40の各FIFO41~45に対応する下段FIFO部50のFIFO51a、b~55a、bの一部を非アクティブとすることにより、ウインドウサイズを変化(縮小)させることができる。
【0050】
図4は、ウインドウサイズの制御例を示す図である。
図4に示す例では、下段FIFO部50のFIFO51a、b~55a、bのうち、FIFO51b、52b、53b、54b、55bを非アクティブとし、FIFO51a、52a、53a、54a、55aのみを使用する。これにより、DMAC30や上段FIFO部40の構成を変更することなく、5ラインのウインドウサイズに変更(縮小)される。
【0051】
処理部10の入力ポートは、入力ラインが接続された入力ポートN0と、FIFO51a、52a、53a、54aが接続された入力ポートN1~N4が使用され、入力ポートN5~N8は使用されない。この場合、データセレクタ122(
図2参照)により入力ポートN5~N8を遮断しても良いし、FIFO51b、52b、53b、54bからのラインデータの入力自体が無いため、特に入力ポートN5~N8を遮断しなくても良い。
【0052】
処理部10の有効な入力ポートがN0~N4となったため、出力ポートは、これらの中央のラインであるN2に変更される。また、処理部10の転送ポートは、入力ポートN0への入力が出力される転送ポートN0が使用され、入力ポートN4への入力が出力される転送ポートN4は使用されない。この場合、データセレクタ132(
図2参照)により転送ポートN4を遮断して、入力ポートN4への入力がFIFO55bへ転送されないようにする。
【0053】
<画像処理装置1の他の構成例>
図5は、画像処理装置の他の構成例を示す図である。
図5に示す画像処理装置1は、
図1に示した構成と比較して、下段FIFO部50が有するFIFOの数が異なる。下段FIFO部50は、上段FIFO部40の個々のFIFO41~45に対して1対Fの比で対応させたFIFOを有する。そして、
図5に示す構成では、F=3である。すなわち、下段FIFO部50は、読み取り用DMAC32側の上段FIFO部40のFIFO41~44に対して3個ずつのFIFO51a、b、c~54a、b、cを有する。また、書き込み用DMAC31側についても同様であり、下段FIFO部50は、上段FIFO部40の1個のFIFO45に対して3個のFIFO55a、b、cを有する。
【0054】
また、読み取り用DMAC32のチャネル数に対応するC、処理部10に入力されるラインデータの総数をnとすると、
C×F=n-1
であるから、
n=C×F+1=4×3+1=13
であり、処理部10に入力されるラインデータの総数は13である。
図5に示す構成では、lineN0~N12が入力されている。また、処理部10は、処理後のラインデータlineN6を出力する。さらに、処理部10は、読み込んだラインデータのうち、lineN0、N4、N8をそのまま出力してラインバッファへ転送する。
【0055】
図5に示す画像処理装置1において、その他の構成は、
図1に示した画像処理装置1と同様である。すなわち、
図5に示す画像処理装置1は、読み取り用DMAC32のチャネル数および上段FIFO部40のFIFOの数は、
図1に示した構成と同一であるのに対し、下段FIFO部50のFIFOの数が増加することにより、処理部10の入力ライン数が増加し、処理単位のウインドウのサイズが拡大する。
【0056】
<
図5に示す画像処理装置1における処理部10とラインバッファとの間のデータ転送>
次に、
図5に示す構成例を参照して、処理部10とラインバッファとの間のデータ転送について説明する。
図5に示す構成例において、処理部10は、13個の入力ポート(N0~N12)を有する。入力ポートN0には、画像から最後に読み取られたラインデータが入力される。入力ポートN1~N12には、ラインバッファから取得された12ライン分のラインデータが入力される。入力ポートN1~N12の並びは、ラインデータの新旧に対応している。具体的には、入力ポートN0に入力されるラインデータの直前に読み取られたラインデータが入力ポートN1に入力され、さらに1ライン前に読み取られたラインデータが入力ポートN2に入力される。同様に1ライン分ずつ遡って、入力ポートN12には最も古い12ライン前に読み取られたラインデータが入力される。
【0057】
入力ポートN1~N12は、読み取り用DMAC32側の下段FIFO部50のFIFO51a、b、c~54a、b、cに個別に接続されている。具体的には、入力ポートN1は、下段FIFO部50のFIFO51aに接続されている。入力ポートN2は、下段FIFO部50のFIFO52aに接続されている。入力ポートN3は、下段FIFO部50のFIFO53aに接続されている。入力ポートN4は、下段FIFO部50のFIFO54aに接続されている。入力ポートN5は、下段FIFO部50のFIFO51bに接続されている。入力ポートN6は、下段FIFO部50のFIFO52bに接続されている。入力ポートN7は、下段FIFO部50のFIFO53bに接続されている。入力ポートN8は、下段FIFO部50のFIFO54bに接続されている。ここまでは、
図1に示した構成例における接続関係と同様である。
図5に示す構成例では、さらに、入力ポートN9は、下段FIFO部50のFIFO51cに接続されている。入力ポートN10は、下段FIFO部50のFIFO52cに接続されている。入力ポートN11は、下段FIFO部50のFIFO53cに接続されている。入力ポートN12は、下段FIFO部50のFIFO54cに接続されている。
【0058】
また、処理部10は、処理結果の出力データを出力する1個の出力ポート(N6(出力))と、入力ポートから入力されたラインデータをそのまま出力する3個の転送ポート(N0、N4、N8)とを有する。転送ポートN0からは、入力ポートN0に入力されたラインデータが出力され、転送ポートN4からは、入力ポートN4に入力されたラインデータが出力され、転送ポートN8からは、入力ポートN8に入力されたラインデータが出力される。
【0059】
図1を参照して説明した転送ポートの設定方法により、転送ポートとして、入力ポートN0に対応する出力ポートと、ラインバッファからのラインデータに対応する入力ポートのうち、読み取り用DMAC32のチャネル数Cの整数倍の位置の入力ポート(N4、N8、N12)であって、最後のラインデータに対応する入力ポート(N12)以外の入力ポート(N4、N8)に対応する出力ポートとが設定されている。
【0060】
転送ポートN0は、下段FIFO部50のFIFO55aに接続されている。また、転送ポートN4は、下段FIFO部50のFIFO55bに接続されている。また、転送ポートN8は、下段FIFO部50のFIFO55cに接続されている。そして、転送ポートN0、N4、N8から出力されるラインデータは、書き込み用DMAC31側の下段FIFO部50のFIFO55a、b、cへ供給される。
図5の例では、具体的には、転送ポートN0の出力はFIFO55aへ、転送ポートN4の出力はFIFO55bへ、転送ポートN8の出力はFIFO55cへ供給される。
【0061】
下段FIFO部50のFIFO55a、b、cに保持されたラインデータは、交互に上段FIFO部40のFIFO45に移される。
図5の例では、(L
N0,P
1)(L
N4,P
1)(L
N8,P
1)(L
N0,P
2)……の順でラインデータが格納されている。書き込み用DMAC31は、FIFO45から順にラインデータを読み出し、バスブリッジ60を介してメモリ20へ格納する。
【0062】
読み取り用DMAC32は、バスブリッジ60を介して、メモリ20から自身のチャネル数分のラインデータを読み出し、上段FIFO部40のFIFO41~44に保持させる。FIFO41には、下段FIFO部50のFIFO51a、b、cに供給されるラインデータが交互に保持される。
図5に示す例では、(L
N1,P
1)(L
N5,P
1)(L
N9,P
1)(L
N1,P
2)……というように、FIFO41にラインデータが保持されている。
【0063】
FIFO42には、下段FIFO部50のFIFO52a、b、cに供給されるラインデータが交互に保持される。
図5の例では、(L
N2,P
1)(L
N6,P
1)(L
N10,P
1)(L
N2,P
2)……というように、FIFO42にラインデータが保持されている。FIFO42に供給されるラインデータは、直前のサイクルでFIFO41に供給され、1ライン分ずれてメモリ20からFIFO42に供給されている。
【0064】
FIFO43には、下段FIFO部50のFIFO53a、b、cに供給されるラインデータが交互に保持される。
図5の例では、(L
N3,P
1)(L
N7,P
1)(L
N11,P
1)(L
N3,P
2)……というように、FIFO43にラインデータが保持されている。FIFO43に供給されるラインデータは、直前のサイクルでFIFO42に供給され、1ライン分ずれてメモリ20からFIFO43に供給される。
【0065】
FIFO44には、下段FIFO部50のFIFO54a、b、cに供給されるラインデータが交互に保持される。
図5の例では、(L
N4,P
1)(L
N8,P
1)(L
N12,P
1)(L
N4,P
2)……というように、FIFO44にラインデータが保持されている。FIFO44に供給されるラインデータは、直前のサイクルでFIFO43に供給され、1ライン分ずれてメモリ20からFIFO44に供給される。
【0066】
下段FIFO部50のFIFO51a、b、cには、FIFO41から交互にラインデータが転送される。
図5に示す例では、FIFO51aに、(L
N1,P
1)(L
N1,P
2)(L
N1,P
3)(L
N1,P
4)……というようにラインデータが転送され、FIFO51bに、(L
N5,P
1)(L
N5,P
2)(L
N5,P
3)(L
N5,P
4)……というようにラインデータが転送され、FIFO51cに、(L
N9,P
1)(L
N9,P
2)(L
N9,P
3)(L
N9,P
4)……というようにラインデータが転送されている。同様に、FIFO52a、b、cにはFIFO42から、FIFO53a、b、cにはFIFO43から、FIFO54a、b、cにはFIFO44から、交互にラインデータが転送される。
図5に示す例では、FIFO52aに、(L
N2,P
1)(L
N2,P
2)(L
N2,P
3)(L
N2,P
4)……というようにラインデータが転送され、FIFO52bに、(L
N6,P
1)(L
N6,P
2)(L
N6,P
3)(L
N6,P
4)……というようにラインデータが転送され、FIFO52cに、(L
N10,P
1)(L
N10,P
2)(L
N10,P
3)(L
N10,P
4)……というようにラインデータが転送されている。また、FIFO53aに、(L
N3,P
1)(L
N3,P
2)(L
N3,P
3)(L
N3,P
4)……というようにラインデータが転送され、FIFO53bに、(L
N7,P
1)(L
N7,P
2)(L
N7,P
3)(L
N7,P
4)……というようにラインデータが転送され、FIFO53cに、(L
N11,P
1)(L
N11,P
2)(L
N11,P
3)(L
N11,P
4)……というようにラインデータが転送されている。また、FIFO54aに、(L
N4,P
1)(L
N4,P
2)(L
N4,P
3)(L
N4,P
4)……というようにラインデータが転送され、FIFO54bに、(L
N8,P
1)(L
N8,P
2)(L
N8,P
3)(L
N8,P
4)……というようにラインデータが転送され、FIFO54cに、(L
N12,P
1)(L
N12,P
2)(L
N12,P
3)(L
N12,P
4)……というようにラインデータが転送されている。
【0067】
そして、下段FIFO部50の各FIFO51a、b、c~54a、b、cから、1サイクルごとに、同じ同期情報(P1、P2、P3、P4、……)のラインデータが処理部10へ供給される。処理部10の入力ポートN0には、その都度、新たに読み込まれたラインデータが入力される。
【0068】
<
図5の構成による上段FIFO部40の各FIFO41~45と処理部10の入力ポートとの関係>
図6は、上段FIFO部40の各FIFO41~45と処理部10の入力ポートとの関係を示す図表である。
図6には、入力ライン(入力ポートN0)に画像読み取りによる100~105ライン目のラインデータが入力されるタイミング(各サイクル)における、処理部10の各入力ポートN0、N1~N12に入力されるラインデータと、上段FIFO部40の各FIFO41~45に保持されるラインデータとが示されている。
【0069】
図6を参照すると、例えば入力ポートNに100ライン目のラインデータが入力される時、読み取り用DMAC32側のFIFO41~44には、次のラインデータが保持される。
FIFO41:(L
N1,P
1)(L
N5,P
1)(L
N9,P
1)→L99、L95、L91
FIFO42:(L
N2,P
1)(L
N6,P
1)(L
N10,P
1)→L98、L94、L90
FIFO43:(L
N3,P
1)(L
N7,P
1)(L
N11,P
1)→L97、L93、L89
FIFO44:(L
N4,P
1)(L
N8,P
1)(L
N12,P
1)→L96、L92、L88
【0070】
これが下段FIFO部50のFIFO51a、b、c~54a、b、cに振り分けられ、入力ポートN1~N12に、次のように転送される。すなわち、古いラインデータから、N12→N1の順に入力される。
入力ポートN12:L88
入力ポートN11:L89
入力ポートN10:L90
入力ポートN9:L91
入力ポートN8:L92
入力ポートN7:L93
入力ポートN6:L94
入力ポートN5:L95
入力ポートN4:L96
入力ポートN3:L97
入力ポートN2:L98
入力ポートN1:L99
【0071】
このサイクルでは、上述したように入力ポートN0には100ライン目のラインデータ「L100」が入力される。次のサイクルでは、入力ポートN0に101ライン目のラインデータ「L101」が入力される。また、読み取り用DMAC32に読み出されてFIFO41~44に保持されるラインデータ、入力ポートN1~N12に振り分けられるラインデータは、上記の状態から新しい方へ1ラインずつずれる。
【0072】
ここで、転送ポートN0、N4、N8から出力されるラインデータに着目する。転送ポートN0、N4、N8からは、入力ポートN0、N4、N8への入力がそのまま出力されるため、上述の入力ポートN0に100ライン目のラインデータ(L100)が入力されたタイミングでは、転送ポートN0の出力はL100、転送ポートN4の出力はL96、転送ポートN8の出力はL92となる。したがって、書き込み用DMAC31側のFIFO45には、L
N0=L100、L
N4=L96、L
N8=L92が保持される。
図6では、L100、L96およびL92の位置を網掛けで示している。図示のように、1サイクルごとに、入力ポートN0から新たなラインデータが入力され、これに伴い、L100、L96およびL92が入力される入力ポートの位置が1ラインずつずれている。同様に、メモリ20から読み出されたL100、L96およびL92が保持されるFIFO41~44が一つずつずれている。
【0073】
<
図5の構成におけるウインドウサイズの制御>
次に、
図5のように構成された画像処理装置のウインドウサイズの制御について説明する。
図5に示す構成では、上段FIFO部40のFIFO41~45に対し、下段FIFO部50のFIFO51a、b、c~55a、b、cを対応付け、処理部10におけるウインドウサイズを拡大させた。そして、上段FIFO部40の各FIFO41~45に対応する下段FIFO部50のFIFO51a、b、c~55a、b、cの一部を非アクティブとすることにより、ウインドウサイズを変化(縮小)させることができる。
【0074】
図7は、ウインドウサイズの制御例を示す図である。
図7に示す例では、下段FIFO部50のFIFO51a、b、c~55a、b、cのうち、FIFO51c、52c、53c、54c、55cを非アクティブとし、FIFO51a、b、52a、b、53a、b、54a、b、55a、bのみを使用する。これにより、DMAC30や上段FIFO部40の構成を変更することなく、9ラインのウインドウサイズに変更(縮小)される。
【0075】
処理部10の入力ポートは、入力ラインが接続された入力ポートN0と、FIFO51a、b、52a、b、53a、b、54a、b、55a、bが接続された入力ポートN1~N8が使用され、入力ポートN9~N12は使用されない。この場合、データセレクタ122(
図2参照)により入力ポートN9~N12を遮断しても良いし、FIFO51c、52c、53c、54cからのラインデータの入力自体が無いため、特に入力ポートN9~N12を遮断しなくても良い。
【0076】
処理部10の有効な入力ポートがN0~N8となったため、出力ポートは、これらの中央のラインであるN4に変更される。また、処理部10の転送ポートは、入力ポートN0への入力が出力される転送ポートN0および入力ポートN4への入力が出力される転送ポートN4が使用され、入力ポートN8への入力が出力される転送ポートN8は使用されない。この場合、データセレクタ132(
図2参照)により転送ポートN8を遮断して、入力ポートN8への入力がFIFO55cへ転送されないようにする。
【0077】
図8は、ウインドウサイズの他の制御例を示す図である。
図8に示す例では、下段FIFO部50のFIFO51a、b、c~55a、b、cのうち、FIFO51b、c、52b、c、53b、c、54b、c、55b、cを非アクティブとし、FIFO51a、52a、53a、54a、55aのみを使用する。これにより、DMAC30や上段FIFO部40の構成を変更することなく、5ラインのウインドウサイズに変更(縮小)される。
【0078】
処理部10の入力ポートは、入力ラインが接続された入力ポートN0と、FIFO51a、52a、53a、54a、55aが接続された入力ポートN1~N4が使用され、入力ポートN5~N12は使用されない。この場合、データセレクタ122(
図2参照)により入力ポートN5~N12を遮断しても良いし、FIFO51b、c、52b、c、53b、c、54b、cからのラインデータの入力自体が無いため、特に入力ポートN5~N12を遮断しなくても良い。
【0079】
処理部10の有効な入力ポートがN0~N4となったため、出力ポートは、これらの中央のラインであるN2に変更される。また、処理部10の転送ポートは、入力ポートN0への入力が出力される転送ポートN0が使用され、入力ポートN4への入力が出力される転送ポートN4および入力ポートN8への入力が出力される転送ポートN8は使用されない。この場合、データセレクタ132(
図2参照)により転送ポートN4および転送ポートN8を遮断して、入力ポートN4および入力ポートN8への入力がFIFO55b、cへ転送されないようにする。
【0080】
<他の手法によるウインドウサイズの制御>
以上の例では、下段FIFO部50のFIFOを全部使用したり、一部のみを使用したりすることにより、処理部10におけるウインドウサイズを制御した。この場合、上述したように、読み取り用DMAC32のチャネル数単位でラインデータのライン数を増減させ得る。これに対し、処理部10に入力されるラインの有効、無効を切り替えることにより、読み取り用DMAC32のチャネル数よりも細かい単位で処理部10のウインドウサイズを制御し得る。
【0081】
一例として、
図1に示した構成例を参照して具体的に説明する。
図1の構成では、処理部10に対して9ライン分のラインデータが入力されている。9ラインのうちの1ラインであるlineN0は、画像読み取り装置(前段)により読み取られたラインデータである。他の8ラインであるlineN1~N8は、ラインバッファから読み出されたラインデータである。
【0082】
下段FIFO部50のFIFO51a、b~54a、bを全部使用する場合、9ライン分のラインデータが処理部10に入力される。したがって、処理部10のウインドウサイズは、9ラインである。一方、
図4を参照して説明したように、下段FIFO部50のFIFO51b、52b、53b、54bを使用しない場合、処理部10に入力されるラインデータは5ラインとなる。したがって、処理部10のウインドウサイズは、5ラインである。これらのウインドウサイズの差分は4ラインであり、読み取り用DMAC32のチャネル数に対応している。
【0083】
これに対し、処理部10において、2ライン分の入力ポートを無効にするものとする。入力ポートの有効、無効の切り替えは、処理部10の入力部12のデータセレクタ122(
図2参照)により行われる。これにより、処理部10は、有効な7ライン分のラインデータのみを受け付けて処理することとなる。したがって、ウインドウサイズも7ラインとなる。このようにすることで、下段FIFO部50のFIFOによるウインドウサイズの制御よりも細かく制御し得る。
【0084】
ここで、無効とするラインを何れのラインにするかについては、残る有効なラインが連続する7ラインとなるように決めれば良い。例えば、画像から最後に読み取られたラインデータ(lineN0)と、メモリ20から読み出されたラインデータのうちの最も古いラインデータ(
図1に示す例では、lineN8)とを無効とし、その間のラインデータ(
図1に示す例では、lineN1~N7)を有効としても良い。また、古い方から2ライン(
図1に示す例では、lineN8~N7)を無効とし、その他のラインデータ(
図1に示す例では、lineN0~N6)を有効としても良い。前者のようにすれば、入力ラインのうちの両端が無効となる。したがって、
図1、5、10等を参照して説明したように入力ラインのうちの中央のラインに対応するラインデータを出力データとする場合、ウインドウサイズの変更後も同じラインに対応するラインデータが出力データとなるため、出力ラインを変更する必要がない。
【0085】
以上、
図1に示した構成を例として説明したが、
図5に示した構成においても同様に適用し得る。上記のラインの切り替えによるウインドウサイズの制御と、
図4、
図7、
図8を参照して説明した、下段FIFO部50のFIFOの一部を使用しないことによるウインドウサイズの制御と組み合わせることにより、多様なウインドウサイズの制御を実現し得る。
【0086】
<画像処理装置1の設計手順>
図9は、画像処理装置1の設計手順を示すフローチャートである。まず、処理部10の演算コア11に対して要求される性能(要求性能)が決定される(S901)。要求性能として、画像処理の性能(画質)を優先すると、処理量が多くなるので処理速度が低下する。反対に、処理速度を優先すると、画質が低下する。したがって、画像処理装置1が適用されるシステムの要求に応じて、画質と処理速度のバランスを取ることが求められる。
【0087】
次に、バス幅やレイテンシ等に基づき、DMAC30の1チャネルあたりの転送性能が決定される(S902)。転送性能とは、DMAC30の1チャネルが1サイクルの処理でどれだけのラインデータの転送をメモリ20に対して実行できるかを示す指標である。バス幅とは、転送性能に直結するパラメータの一つであり、1回の読み出し(または書き込み)で何ビットのデータを読めるか(書けるか)を表す。レイテンシとは、転送性能に直結するパラメータの一つであり、データの読み書きのコマンドを発行してから、実際に処理が完了するまでに要するクロック数を表す。
【0088】
次に、S901で決定された処理部10の演算コア11の要求性能を満たすように、DMAC30のチャネル数が決定される(S903)。より具体的には、処理部10にラインデータを供給する読み取り用DMAC32のチャネル数が決定される。そして、決定されたDMAC30(特に読み取り用DMAC32)のチャネル数に対して、処理部10に供給するラインデータの数を特定するための下段FIFO部50のFIFOの数が適当か否か(言い換えれば、過剰か、不足しているか)が判断される。
【0089】
下段FIFO部50のFIFOの数が適当でなければ(S904でNO)、下段FIFO部50のFIFOの数を調整し(S905)、S902からの操作が行われる。以下、要求性能に応じたDMAC30および下段FIFO部50の設定が繰り返される。下段FIFO部50のFIFOの数が適当と判断されたならば(S904でYES)、画像処理装置1の設計が完了する。
【0090】
以上、本発明の実施形態について説明したが、本発明の技術的範囲は上記実施形態には限定されない。本発明の技術思想の範囲から逸脱しない様々な変更や構成の代替は、本発明に含まれる。
【符号の説明】
【0091】
1…画像処理装置、10…処理部、11…演算コア、12…入力部、13…出力部、20…メモリ、30…DMAC、31…書き込み用DMAC、32…読み取り用DMAC、40…上段FIFO部、41~45…FIFO、50…下段FIFO部、51a、b、c~55a、b、c…FIFO、60…バスブリッジ、121…入力I/F、122…データセレクタ、131…出力I/F、132…データセレクタ