図1は、本発明の実施形態にかかる画像処理装置200の概略的な構成を示すブロック図である。スキャナインタフェース(以下、「スキャナI/F」という。)部10には、アナログフロントエンド(AFE)15を介して、CCD17、CIS18が接続し、個別の専用回路を介在することなく、その読み取りデータを画像処理装置200に取り込むことができる。スキャナI/F部10のデータ処理については、後に詳細に説明する。
20はスキャナ画像処理部であり、スキャナI/F部10の処理によりメインメモリ100に展開された画像データに対して画像処理動作モード(カラーコピー、モノクロコピー、カラースキャン、モノクロスキャン等)に応じた画像処理を実行する処理部である。スキャナ画像処理部20の詳細については、後に説明する。
プリンタ画像処理部30は、画像処理の結果、得られた画像データをプリンタ出力するための処理ユニットであり、LBPインタフェース(I/F)40を介して接続するレーザビームプリンタ(LBP)45に画像処理結果を出力するための処理を実行する。
50、60はJPEG、JBIGモジュールであり、所定の規格に準拠した画像データの圧縮、伸張処理を実行する処理部である。
70はメモリ制御部であり、画像処理系の第1BUS80及びコンピュータ系の第2BUS85と接続し、メインメモリ(SDRAM)100に対するデータの書き込み、読み出しに関するDMA制御を実行する処理ユニット(LDMAC_A〜F(105a〜105f))の全体的な制御を行なう。ここで、「DMA(DirectMemoryAccess)」とは、主記憶装置と周辺装置の間において、データを直接移動させる処理をいう。
上述のスキャナI/F部10、スキャナ画像処理部20、プリンタ画像処理部30、LBPI/F部40、JPEG処理部50及びJBIG処理部60と、第1BUS80との間には、各処理部(10〜60)に対応し、画像データのDMA制御を実行するための処理ユニット(LDMAC_A〜F(105a〜105f)が接続している。
各LDMAC_A〜F(105a〜105f)は、各画像処理部(10〜60)とメインメモリ100との間のデータ授受に関し、DMA制御を実行するための所定のアドレス情報を生成し、この情報に基づいてDMAを制御する。例えば、LDMAC_A(105a)は、画像読み取りデバイスの種類、CCD17、CIS18の別に応じて、スキャナI/F部10で読み取り処理された画像データをメインメモリ100にDMA転送するためのアドレス情報(DMAを開始するスタートアドレス、メモリのアドレスを切り替えるオフセット情報等)をDMAのチャンネルごとに生成する。また、LDMAC_B(105b)は、メインメモリ100上に展開された画像データを読み出すためのアドレス情報をDMAのチャンネルに応じて生成する。
また、LDMAC_C〜F(105c〜f)についても同様に、所定のアドレス情報を生成し、その情報に基づいてメインメモリ100との間でデータ授受に関するDMA制御を実行することができる。すなわち、LDMAC_C〜F(105c〜f)は、データの書き込みと、読み出しに対応したチャンネルを有し、これらのチャンネルに対応したアドレス情報を生成してDMAを制御する。
80は、画像処理系の各処理部(10〜60)間でデータを授受することが可能な第1BUSであり、85は、CPU180、通信及びユーザインタフェース制御部170、メカトロ系制御部125及びROM95が接続するコンピュータ系の第2BUSである。CPU180は、ROM95に格納された制御パラメータや制御プログラムに基づき、上述のLDMAC_A〜F(105a〜f)を制御することができる。
メカトロ系制御部125にはモータ制御部110と、モータの駆動タイミングや、画像処理系の処理の同調を制御するためのタイミング制御を司る割り込みタイマー制御部120が含まれる。
LCD制御部130は、画像処理装置の種々の設定、処理状況等をLCD135に表示するための表示制御を司るユニットである。
140、150は周辺機器との接続を可能にするUSBインタフェース部であり、図1では、BJ−プリンタ175が接続した状態を示している。
160はメディアアクセス制御(MAC)部であり、接続する機器に対してデータをどのようなタイミングで送り出せばよいか(アクセス)等を制御するユニットである。
180はCPUであり、画像処理装置200の全体的な動作を制御する。
<スキャナI/F部10の構成>
スキャナI/F部10は、画像読み取りデバイスとして、CCD17及びCIS18に対応可能であり、両画像読み取りデバイスの信号を入力処理する。ここで入力された画像データは、LDMAC_A(105a)によりDMA転送されてメインメモリ100上に展開される。
図2はスキャナI/F部10の概略的な構成を示すブロック図である。CCD17/CIS18に対して、タイミング制御部11aは読み取りスピードに応じた読み取りデバイスの制御信号を生成し、出力する。このデバイス制御信号は、スキャナI/F部10内で生成される同期信号に同期するものであり、これにより主走査方向の読み取りタイミングと、読み取り処理の同調を図ることができる。
LED点灯制御部11bは、CCD17/CIS18の光源となるLED19の点灯を制御するユニットであり、R、G、B各色要素に対応したLEDの順次点灯制御のための同期信号(TG、SP、図3(a)、図4を参照)、クロック信号(CLK、図4等を参照)及びCCD17/CIS18に対応した調光の制御、点灯の開始、消灯の制御を実行する。この制御タイミングは、上述のタイミング制御部から受信する同期信号に基づくものであり、画像読み取りデバイスの駆動と同期したLED19の点灯が制御される。
図3(a)〜(d)は、CCD17による出力信号を例示する図である。LED19から照射された光が原稿面を照らし、その反射光がCCD17に導かれ、光電変換される。例えば、主走査方向であるCCD17のライン方向と直角方向(副走査方向)に、読み取り位置を定速移動させながら、その原稿面を主走査方向のライン毎に順次走査して原稿面全体の画像を読み取ることができる。図3(a)に示すとおり、タイミング制御部11aから出力される同期信号(TG)に基づき、CCD17の1ライン分のR、G、B要素に対応した信号がパラレルに出力される(図3(b)、(c)、(d)を参照)。
一方、図4は、CIS18に対するLED19の点灯制御に関するタイミングチャートであり、LED点灯制御部11bにより生成された同期信号(SP)とクロック(CLK)に基づき、各R、G、BのLEDの点灯開始と消灯のタイミングが制御される。同期信号(SP)の周期はTstgで示され、この時間内に各色(R、G、B)のいずれか、又はこれらの組合わせによりLEDが点灯制御される。Tledは、同期信号(SP)の1周期(Tstg)におけるLEDの点灯時間を示すものである。
図5Aは、上述の図4のタイミングチャートに従った、R、G、Bに対応するLEDの点灯((a)〜(d))と、その点灯時間内に蓄積されたLEDの反射光により光電変換された出力(e)と、を示すタイミングチャートである。図5A(e)より明らかなように、R、G、B各色に対応した信号の出力は、R出力、G出力、B出力と、それぞれがシリアルのデータとして出力され、先に説明したCCD17の出力信号とは相違する。
また、図5Bは、CIS18の制御に関連し、同期信号(SP)の1周期以内にR、G、Bの各LED19が順次点灯する場合のタイミングを示す図であり、R、G、Bデータの合成により、この場合の画像読み取りデバイスの入力はモノクロ画像のデータとして画像処理装置200に取り込むことが可能になる。
図5Cは、CIS18が主走査方向に2チャンネル設けられた場合の出力を例示する図である。チャンネル1の出力(図5Cの(c))は、N番目のCLK信号(図5Cの(b)を参照)の立ち下がりと同期して、任意のダミーのビット列(図5Cの(c)の場合は22ビット)を出力し、その後、有効ビット数3254ビットに対する信号を出力する(図5Cの(c))。一方、チャンネル2の出力(図5Cの(d))は、N番目のCLK信号の立ち下がりと同期して、有効ビット3255ビット目(チャンネル1のセンサ出力の最終ビット3254に後続するビット)から有効ビットとして2794ビットを出力する。
2つのチャンネルのセンサ出力により、主走査方向1ライン分のデータを分割して読み取ることができる。尚、CISの構成は最大2チャンネルに限るものではなく、例えば、3チャンネルの構成にしても、有効ビット数の出力数が変わるのみで、本発明の趣旨が限定されるものではない。
図2のブロック図に説明を戻し、画像読み取りデバイス(CCD17/CIS18)の出力信号は、AFE(アナログフロントエンド)15に入力される。AFE15の処理は、図6に示すように、CCD17、CIS18の出力信号に対して、ゲイン調整(15a,15d)、A/D変換処理(15b,c,e)を施し、各画像読み取りデバイスより出力されるアナログ信号をデジタル信号に変換して、スキャナI/F部10に入力する。また、AFE15は画像読み取りデバイスより出力されるパラレルなデータをシリアルなデータに変換して出力することができる。
図2における同期制御部11cは、AFE15に対して、各デバイス(17、18)のアナログ信号に応じて所定の閾値レベルを設定し、画像読み取りデバイスの相違による出力信号レベルの調整を行なう。更に、アナログ信号のサンプリング制御とデジタル信号をAFE15に出力させるための同期クロックの生成して出力し、AFE15から所定のデジタル信号による読み取り画像データを受信する。このデータは、同期制御部11cを介して出力データ制御部11dに入力され、出力データ制御部11dは、スキャナI/F部10の出力モードに合わせて、AFE15より受信した画像データをバッファ(11e,f,g)に格納する。
スキャナI/F部10の出力モードには、シングルモード、2チャンネル(ch)モード、3チャンネル(ch)モードと、接続する画像読み取りデバイスに応じて出力モードを切り替えることができる。
シングルモードとは、AFE15から主走査方向データがシリアル入力される場合に選択されるモードであり、この場合、1つのバッファのみが利用可能な状態になる。
2chモードは、AFE15から入力されるデータが、画像読み取りデバイスの2チャンネル分の情報として、同じタイミングで入力される場合に選択されるモードであり、この場合は、2つのバッファ(例えば、11e,11f)が利用可能な状態に設定される。
3chモードは、AFE15から受信する画像データが、R、G,B出力として、同じタイミングで入力される場合に選択されるモードであり、この場合は、3つのバッファ(11e,f,g)が利用可能な状態に設定される。
カラー画像データを、シングルモードによりCIS18で読み取った場合、AFE15より受信するデータは、図5Aの(e)に示すように、LEDの点灯順位に従ったR,G,Bデータの出力がシリアルに配列したものとなり、出力データ制御部11dは、この配列に従って、データを1つのバッファ(例えば第1バッファ(11e))に格納する。モノクロ画像データをCIS18で読み取った場合でも同様であり、モノクロ画像データが1つのバッファに格納される。
カラー画像データを2チャンネルのCIS18により読み取った場合、上述の2chモードが設定される。AFE15より受信するデータは、図5Cの(c)、(d)で示すように、主走査方向に2分割した領域毎のデータとなり、これら領域毎のデータを格納するために、出力データ制御部11dは、受信したデータを2つのバッファ(例えば、第1バッファ(11e)及び第2バッファ(11f))に格納する。この処理はモノクロ画像データをCIS2チャンネルで読み取った場合でも同様である。
カラー画像データをCCD17で読み取った場合、出力データ制御部11dは、AFE15から受信したデータを上述の3chモードによりR、G、Bデータごとに、3つのバッファ(第1、第2、第3バッファ(11e,f,g))に振り分けて格納することができる。
次に、スキャナI/F部10の処理により、所定のバッファ(11e,f,g)に格納された画像データをメインメモリ(SDRAM)100にDMA転送し、格納する処理について説明する。画像データをメインメモリ100にDMA転送して格納する処理は、LDMAC_A(105a)により制御される。
図7は、画像読み取りデバイス(17、18)により読み取った画像データをメインメモリ(SDRAM)100にDMA転送するためのLDMAC_A(105a)と、メインメモリ100及びスキャナ画像処理部20との間でDMAを制御するLDMAC_B(105b)の概略的な構成を示す図である。
75はバッファコントローラであり、メインメモリ100をリングバッファとして使用する場合、データの書き込みと読み出しを調停するために、LDMAC_A(105a)とLDMAC_B(105b)を制御する。
<LDMAC_A(105a)の構成>
ここで、LDMAC_A(105a)は、データ調停ユニット71aと、第1書き込みデータインタフェース(I/F)部71bと、I/Oインタフェース部71cと、を有している。
I/Oインタフェース部71cは、メインメモリ100にデータを格納するために、LDMAC_Aが生成した所定のアドレス情報を第1書き込みデータI/F部71bに設定する。また、スキャナI/F部10より画像データを受信して、LDMAC_A(105a)内の各バッファチャンネル(以下、「チャンネル」という。)(ch0〜ch2)にデータを格納する。
第1書き込みデータI/F部71bはメインメモリ100に対してデータの書き込みを行なうための第3BUS73と接続し、生成された所定のアドレス情報に従って各チャンネル(ch0〜ch2)に格納されているデータをメインメモリ100にDMA転送する。データ調停ユニット71aは、各チャンネルに格納されているデータの読み出しを行ない、第1書き込みデータI/F部71bの書き込み処理に合わせて各チャンネルのデータの受け渡しを行なう。
第1書き込みデータI/F部71bはバッファコントローラ75と接続し、後に説明するLDMAC_B(105b)によるデータの読み出し、若しくは書き込みと、メモリアクセスが競合しないよう制御される。メインメモリ100に対するアクセスの制御により、メインメモリ100をリングバッファとして使用した場合であっても、メインメモリ100に格納されているデータの読み出し前に、同一のメモリアドレスにデータをオーバライトする等のトラブルを防止することができ、メモリリソースを有効に活用することが可能になる。
<(1)1チャンネルのデータの格納>
図8(a)、(b)は、LDMAC_A105aがメインメモリ(SDRAM)100に1チャンネル分のデータを書き込む処理を説明する図である。図5Aの(e)で示した出力例のように、主走査方向の1ライン分のR、G、Bデータがシリアルに出力され、スキャナI/F部10の1つのバッファ(図2の11(e))にデータが格納された場合、LDMAC_A(105a)内の対応する1つのチャンネル(ch0、図7を参照)にデータが転送される。ここで、図8(a)、(b)、図9(a)、(b)、図10において、チャンネル(ch0)のデータをデータ調停ユニット71aと,第1書き込みデータI/F部71bとによりDMA転送し、メインメモリ100に格納処理するための構成を「第1LDMAC」と標記し、チャンネル(ch1)のデータを処理するための構成を「第2LDMAC」、チャンネル(ch2)のデータを処理するための構成を「第3LDMAC」と標記する。
図8(a)は、1チャンネルのカラー画像データをR、G、Bデータに分離して格納する処理を示す図である。第1LDMACは、ライン順位のR、G、Bデータのうち、主走査方向1ライン分(R1〜R2)のRデータをメインメモリ100のR領域(1000a)に書き込み、次の書き込み領域であるG領域(1000b)の先頭アドレス(G1)に書き込みアドレスを切り替える。そして、第1LDMACは、R、G、Bデータのうち、主走査方向1ライン分(G1〜G2)のGデータをメインメモリ100のG領域(1000b)に書き込み、次の書き込み領域であるB領域(1000c)の先頭アドレス(B1)に書き込みアドレスを切り替える。そして第1LDMACは、主走査方向1ライン分(B1〜B2)のBデータをメインメモリ100のB領域(1000c)に書き込み後、アドレスをR領域(1000a)の2ライン目の先頭アドレス(R2)に切り替える。以下、Gデータ、Bデータも同様にデータの書き込みアドレスを副走査方向の2ライン目にシフトさせてデータの書き込みを行なう。
第1LDMACがデータを書き込むDMA制御において、Rデータ、Gデータ、Bデータに対応したデータの格納先となるメモリの番地をオフセット情報(A、B)として与え、各色データ毎の格納領域を切り替えることで、ライン順位のR、G、Bデータを、Rデータ、Gデータ、Bデータと分離してメインメモリ100に格納することが可能になる。
DMA転送を開始するスタートアドレス(図8(a)の場合R1)、オフセット情報(A、B)等は上述のLDMAC_A(105a)の生成によるものである。
図8(b)は、図5Bで示したLEDの点灯タイミングで得られるCIS18によるモノクロ画像データの書き込み処理を説明する図である。モノクロ画像データの場合は、R、G、Bごとにデータを分離する必要がないので、ライン順位のモノクロ画像データを、メインメモリ100の主走査方向に1ライン分(M1〜M2)のデータを書き込み、同領域(1000d)の副走査方向に書き込みアドレスをシフトさせて、次の2ライン目(M3〜M4)のデータの書き込みをする。以下、順次同様の処理をしていくことにより、モノクロ画像データをメインメモリの領域(1000d)に格納することができる。
<(2)CIS2チャンネルによるデータの格納>
図9(a)は、図5Cで示したように2チャンネルのカラー画像データをR、G、Bデータに分離して格納する処理を示す図である。主走査方向のメモリ領域は2つのチャンネルに対応して分割される。
2チャンネルのCIS18(chip0,chip1)により読み取られた画像データは、スキャナI/F部10の2つのバッファ(11e,11f)に格納され、LDMAC_A105aの制御の下、2つのバッファ(11e,11f)のデータは、105a内のチャンネル(ch0、ch1)に転送される。
第1LDMACは、チャンネル(ch0)のデータ(chip0_data)を、図9(a)の第1R領域(1100a)、第1G領域(1200a)、第1B領域(1300a)として示される領域に格納する。
図9(a)において、第1LDMACは、chip0から入力されたR、G、Bデータのうち、Rデータ(RA1〜RA2)をメインメモリの第1R領域(1100a)に書き込み、次の書き込み領域である第1G領域(1200a)の先頭アドレス(GA1)に書き込みアドレスを切り替える(オフセット情報C)。第1LDMACは、R、G、Bデータのうち、Gデータ(GA1〜GA2)をメインメモリの第1G領域(1200a)に書き込み、次の書き込み領域である第1B領域(1300a)の先頭アドレス(BA1)に書き込みアドレスを切り替える(オフセット情報C)。そして、第1LDMACは、R、G、Bデータのうち、Bデータ(BA1〜BA2)をメインメモリのB領域(1300a)に書き込み、処理の終了後、アドレスをR領域(1100a)の副走査方向の2ライン目の先頭アドレス(RA3)に切り替える(オフセット情報D)。以下、Gデータ、Bデータも同様にデータの書き込みアドレスを副走査方向の2ライン目にシフトさせてデータの書き込みを行なう。
第1LDMACは、メインメモリのデータ格納領域として、図9(a)の第1R領域(1100a)、第1G領域(1200a)、第1B領域(1300a)として示される領域毎に、データの格納先となるメモリの番地をオフセット情報(C、D)に基づき、任意に設定することができ、その設定に従ってチャンネル(ch0)に格納されているデータをメインメモリ100に格納する。
第2LDMACは、チャンネル(ch1)のデータ(chip1_data)を、図9(ajの第2R領域(1100b)、第2G領域(1200b)、第2B領域(1300b)として示される領域に格納する。
図9(a)において、第2LDMACは、chip1から入力されたR、G、Bデータのうち、Rデータ(RB1〜RB2)をメインメモリの第2R領域(1100b)に書き込み、次の書き込み領域である第2G領域(1200b)の先頭アドレス(GB1)に書き込みアドレスを切り替える(オフセット情報E)。第2LDMACは、R、G、Bデータのうち、Gデータ(GB1〜GB2)をメインメモリ100の第2G領域(1200b)に書き込み、次の書き込み領域である第2B領域(1300b)の先頭アドレス(BB1)に書き込みアドレスを切り替える(オフセット情報E)。そして、第2LDMACは、R、G、Bデータのうち、Bデータ(BB1〜BB2)をメインメモリ100の第2B領域(1300b)に書き込み、処理の終了後、アドレスを第2R領域(1100b)の副走査方向の2ライン目の先頭アドレス(RB3)に切り替える(オフセット情報F)。以下、Gデータ、Bデータも同様にデータの書き込みアドレスを副走査方向の2ライン目にシフトさせてデータの書き込みを行なう。
第1及び第2LDMACがデータを書き込むDMA制御において、Rデータ、Gデータ、Bデータに対応したデータの格納先となるメモリの番地をオフセット情報(C、D、E、F)として与え、各色データ毎の格納領域を切り替えることで、ライン順位のR、G、Bデータを、Rデータ、Gデータ、Bデータと分離してメインメモリ100に格納することが可能になる。
DMA転送を開始するスタートアドレス(図8(a)の場合RA1,RB1)、オフセット情報(C、D、E、F)等は上述のLDMAC_A(105a)の生成によるものである。
図9(b)は、図5Bで示したLEDの点灯タイミングで得られる2チャンネルのCISによるモノクロ画像データの書き込み処理を説明する図である。モノクロ画像データの場合は、上述のカラー画像データの場合と異なり、R、G、Bごとにデータを分離する必要がないので、ライン順位のモノクロ画像データを、メインメモリ100の主走査方向に1ライン分(MA1〜MA2、MB1〜MB2)のデータを書き込みし、同領域(1400a,1400b)の副走査方向に書き込みアドレスをシフトさせて、次の2ライン目(MA3〜MA4,MB3〜MB4)のデータの書き込みをする。以下、順次同様の処理をしていくことにより、モノクロ画像データをメインメモリの領域(1400a,1400b)に格納することができる。
<(3)3チャンネルのデータの格納>
図10は、スキャナI/F部10における出力データ制御部11dが、CCD17により読み取った画像データを3チャンネルのデータ(Rデータ、Gデータ、Bデータ)として処理した場合、各チャンネルに対応した第1乃至第3LDMACがメインメモリ100にデータを書き込む処理を説明する図である。
3つのバッファ(図2の11e,11f,11g)に格納されたデータは、LDMAC_A(105a)の制御の下、105a内のチャンネル(ch0、ch2、ch3)に転送される。ch0に転送されたデータは、第1LDMACによりメインメモリ100にデータが書き込まれ、ch1に転送されたデータは、第2LDMACによりメインメモリ100にデータが書き込まれ、そして、ch2に転送されたデータは、第3LDMACによりメインメモリ100にデータが書き込まれる。第1乃至第3LDMACがメインメモリ100のR領域(1500a)、G領域(1500b)、B領域(1500c)に対応する領域にデータを書き込むことにより、R、G、Bデータを分離してメインメモリ100上に格納することができる。
この場合、DMA転送を開始するスタートアドレス(図10の場合SA1,SA2、SA3)等は上述のLDMAC_A(105a)の生成によるものである。
以上説明したように、画像読み取りデバイス(CCD17、CIS18)により読み取った画像データを、その出力形式に応じてDMA転送を制御するチャンネルに振り分け、振り分けたデータに対してDMAを制御するアドレス情報とオフセット情報を生成することにより、種々の画像読み取りデバイスに対応することが可能になる。
また、本実施形態においては、画像読み取りデバイス(CCD17、CIS18)の出力形式に関わらずR、G、Bデータを分離してメインメモリ100上に画像データが格納される。このため、後述する後段の画像処理部に、画像読み取りデバイス(CCD17、CIS18)の出力形式に応じたDMA転送をする必要がなく、要求される画像処理に応じたDMA転送をするだけでよい。このため、極めて簡単な構成/制御で画像読み取りデバイス(CCD17、CIS18)の出力形式に対応した画像処理装置を提供できる。
<メインメモリ上の領域設定とDMA転送>
メインメモリ100に画像データをDMA転送するために、メインメモリ100に対するアドレス情報をLDMAC_A(105a)は生成し、このアドレス情報に従ってDMA転送を制御する。図11(a)はメインメモリ100を所定の矩形領域(ブロック)に分割した状態を示す図であり、図11(b)はメインメモリ100をリングバッファとして利用する場合を示す図である。メインメモリ100に格納された画像データに対して、矩形領域単位に画像処理を施すために、画像処理モード(コピーモードあるいはスキャナモード)に応じて、矩形領域を定義するためのアドレス情報が設定される。図11(a)中において、SAはDMAのスタートアドレスを示し、主走査方向(X軸方向)の領域は所定のバイト長(XA、XB)により分割される。副走査方向(Y軸方向)の領域は、所定のライン数(YA、YB)により分割される。リングバッファとして使用する場合(図1111(b))、ハッチングを付して示した領域101a及び101bは同一のメモリ領域となる。
矩形領域(0,0)に対するDMAは、スタートアドレスSAから始まり、主走査方向にXA分のデータが転送されると、副走査方向に1ライン分シフトした転送アドレスとして、オフセットデータ(OFF1A)で示されるアドレスが設定される。以下同様に主走査方向の転送とオフセットデータ(OFF1A)によるアドレスのシフトが制御されて矩形領域(0,0)に対するDMAが完了すると、次の矩形領域(1,0)に対するDMAに移行する。
矩形領域(1、0)に対するDMAは、オフセットアドレス(OFF2A)で示されるアドレスにジャンプし、以下、矩形領域(0、0)の場合と同様に主走査方向の転送と、オフセットデータ(OFF1A)によるアドレスのシフトが制御され、矩形領域(1、0)に対するDMAが終了すると、次の矩形領域(2、0)に処理を進める。以下同様に領域(n、0)まで、YAライン分のDMAが完了すると、次のDMAをオフセットデータ(OFF3)で示されるアドレスにジャンプして、矩形領域(0,1)に対する処理に移行する。以下同様に領域(1,1)、(2,1)・・・に対するDMAが制御される。メモリ容量により、例えば、矩形領域のサイズが異なる場合(XB、YBにより定義される場合)、その領域サイズに応じたオフセットデータ(OFF1B、OFF2B)が更に設定されてDMAが制御される。
以上説明した矩形領域は、設定された画像処理モードに応じた主走査方向の解像度と、参照するべき画素領域と、により矩形領域間で重複する領域(のり代領域)として主走査方向の画素及び副走査方向のライン数が設定され、メモリ上に展開されている画像データの割り当て(分割)が制御される。
<具体例>
図12は、メインメモリに必要となる容量を画像処理モード別に例示する図であり、各処理モードにより以下のように設定される。
(a)カラーコピーモードの場合
・有効画素:主走査方向に600dpi
・文字判定処理:上下11ライン、左12画素、右13画素
・色判定フィルタリング処理:上下2ライン、左2画素、右2画素
・変倍処理:下nライン、右m画素(m、nは変倍率による。)
(b)白黒コピーモードの場合
・有効画素:主走査方向に600dpi
・色判定フィルタリング処理:上下2ライン、左右2画素
・変倍処理:下1ライン
(c)カラースキャンモードモードの場合
・有効画素:主走査方向に1200dpi
・変倍処理:下1ライン
更に、のり代量の設定は、メモリリソースの他、メインメモリ100とスキャナ画像処理部20との間の転送効率にも影響する。転送効率はのり代領域を含めた画像領域に対する有効画素領域の面積比として定義され、上述のように、コピーモードにおいては、のり代領域の確保が不可欠であることから転送効率は低くなるが、スキャナモードでは、変倍処理を除いて、のり代が無いために転送効率は高くなる。
例えば、図12(a)のカラーコピーモードの場合、のり代領域を含む矩形領域を281画素×46ラインとすると、最大ののり代領域分(文字判定処理分)を差し引いた有効な領域は、256画素×24ラインとなり、転送効率は(256画素×24ライン)/(281画素×46ライン)≒48%となる。一方、図12(c)のスキャナモード時は変倍処理をしなければ、のり代は無いので転送効率は100%となる。
スキャナモード、またはコピーモードは画像処理の内容が異なるため、必要となるメモリの領域は、その処理内容に応じて適切に設定される。例えば、図12に示すように、カラーコピーモード時には、文字判定処理や色判定フィルタリング処理が必要なために、有効画素領域を抽出するのり代量(図中では、有効画素周辺に確保されている領域として示す。)は多くなるが、主走査方向の有効画素数として解像度600dpi程度を確保する必要があるため、メモリ領域とのトレードオフによりのり代領域は決定される。
一方、スキャナモード時は、変倍処理以外ではのり代量の確保は不要であるが、主走査方向の有効画素数として1200dpi程度を確保する必要がある。従って、メモリの割当量をスキャナモードとコピーモードとで同程度とする場合は、副走査方向のライン数を、例えば、24ラインとすれば、カラーコピーモードとスキャナモードにおけるメインメモリの割り当て量を同程度とすることができる。以下、画像処理モード別の格納処理の流れを図13、図14により説明する。
<コピーモード時の格納処理>
図13は、コピーモード時におけるデータの格納処理の流れを説明する図である。まず、ステップS10で、コピーモードがカラーであるか否かを判断し、カラーである場合(S10−YES)、処理をステップS20に進め、カラーコピーモード時のDMA転送のためのアドレス情報を以下のように設定する。
(a)のり代を含めて書き込む場合
バッファの先頭から有効画素(例えば、主走査方向の解像度600dpi)を確保し、更に、その周辺にのり代(上下11ライン、左12画素、右13画素)を設定する(図12の(a)を参照)。
(b)有効画素のみを書き込む場合
・スタートアドレス(SA)
=メモリの先頭アドレス(BUFTOP)
+のり代を含めた1頁画像の主走査方向の画素数(TOTALWIDTH)×11(副走査方向ののり代(上))+12(主走査方向ののり代(左))
(TOTALWIDTH=1ページ画像の主走査有効画素数(IMAGEWIDTH)
+左のり代画素数+右のり代画素数)
・UA=メモリのエンドアドレス(BUFFBOTTOM)+1
=リングバッファの折り返しアドレス
・OFF1A=TOTALWIDTH−IMAGEWIDTH
一方、モノクロコピーモード時(ステップS30)は以下のようにDMA転送のアドレス情報を設定する。
(a)のり代を含めて書き込む場合
バッファの先頭から有効画素(例えば、主走査方向の解像度600dpi)を確保し、更に、その周辺にのり代(上下2ライン、左右2画素)を設定する(図12の(b)を参照)。
(b)有効画素のみを書き込む場合
・スタートアドレス(SA)
=メモリの先頭アドレス(BUFTOP)
+のり代を含めた1頁画像の主走査方向の画素数(TOTALWIDTH)×2(副走査方向ののり代(上))+2(主走査方向ののり代(左))
・UA=メモリのエンドアドレス(BUFFBOTTOM)+1
・OFF1A=TOTALWIDTH−IMAGEWIDTH
ステップS20、ステップS30でそれぞれDMA転送のためのアドレス情報が設定されると、処理をステップS40に進めて、転送が開始する。LDMAC_A105a内の各チャンネルに格納されたデータは、順次読み取りされ所定のアドレス情報に従って、DMA転送される(S50、60)。そして、チャンネル(ch0〜ch2)に格納されたデータの読み取りが終了すると(S70)、DMA転送は終了する(S80)。
<スキャナモード時の格納処理>
図14は、スキャナモード時におけるデータの格納処理の流れを説明する図である。まず、ステップS100で、スキャナモード時のDMA転送のためのアドレス情報を以下のように設定する。
(a)のり代を含めて書き込む場合
バッファの先頭から有効画素(例えば、主走査方向の解像度1200dpi)を確保し、更に、副走査方向に下1ラインののり代を設定する(図12の(c)を参照)。
(b)有効画素のみを書き込む場合
・スタートアドレス(SA)=メモリの先頭アドレス(BUFTOP)
・UA=メモリのエンドアドレス(BUFFBOTTOM)+1
=リングバッファの折り返しアドレス
・OFF1A=0(TOTALWIDTH=IMAGEWIDTH)
ステップS100でアドレス情報が設定されると、処理をステップS110に進めてDMA転送が開始する。LDMAC_A105a内の各チャンネルに格納されたデータは、順次読み取りされ、所定のアドレス情報に従って、DMA転送される(S120、130)。そして、チャンネル(ch0〜ch2)に格納されたデータの読み取りが終了すると(S140)、DMA転送は終了する(S150)。
以上、図13、図14の処理により、画像データは設定された処理モードに応じてメインメモリ100に展開される。尚、図13、図14で示したのり代量は任意に設定可能なパラメータであり、本発明の趣旨はこの条件により限定されるものではない。例えば、写真のカラー送信等では、文字判定処理をはずし、フィルタ処理のみ実施するように必要な画像処理の参照画素数に応じて、任意にのり代量を設定してもよい。
<データの読み出し>
メインメモリ100に展開された画像データは、所定の矩形領域ごとに、対応するR、G、Bデータ、若しくはモノクロ画像データとして、スキャナ画像処理部20にローディングされ、矩形領域毎に画像処理が実行される。矩形領域ごとに画像処理を行なうために、CPU180は画像読み取りデバイス(CCD17/CIS18)の受光素子の感度のばらつきやLED19の光量のばらつき等を補正するシェーディング(SHD)補正データをメインメモリ100内に準備し、矩形領域のシェーディングデータ及び矩形領域の画像データは、後に説明するLDMAC_B(105b)によりスキャナ画像処理部20にDMA転送される。
図15(a)、(b)は、矩形領域の画像データをスキャナ画像処理部20のブロックバッファRAM210(図16)に転送する際のデータの読み出しを説明する図である。領域(0,0)に関しては、その有効画素領域(abcd)に対して、のり代領域AB1CD1が設定されており(図15(a))、画像データの読み出しはAをスタートアドレスとして、対応するデータが主走査方向B1アドレスまで読み出される。主走査方向のデータの読み出しが終了すると、次に読み出すデータのアドレスを、副走査方向に1ライン分をシフトした図中のA2アドレスに移し、主走査方向にB3アドレスの画素までデータが読み出される。以下同様にデータが読み出され、のり代領域の最終ラインに相当するCアドレスからD1アドレスまでの主走査方向のデータの読み出しが行われて、領域(0,0)のデータの読み出しが完了する。
領域(0、1)に関しては、その有効画素領域(bedf)に対して、のり代領域B2ED2Fが設定されており(図15(b))、画像データの読み出しはB2をスタートアドレスとして、対応するデータが主走査方向Eアドレスまで読み出される。主走査方向のデータの読み出しが終了すると、次に読み出すデータのアドレスを、副走査方向に1ライン分シフトした図中のB4アドレスに移し、主走査方向にB5アドレスの画素までデータが読み出される。そして、のり代領域の最終ラインに相当するD2アドレスからFアドレスまでの主走査方向の画像データの読み出しが行われて、第2領域のデータの読み出しが完了する。以上の処理により、のり代領域を含む矩形領域のデータが読み出される。以下、同様の処理が各矩形領域に対して行われる。
<LDMAC_B(105b)の構成>
メインメモリ100に格納されたデータの読み出しは、図7におけるLDMAC_B(105b)により制御される。読み出しデータI/F部72aは、データ読み出し用の第4BUS74を介してメインメモリ100と接続し、読み出しデータI/F部72aは、LDMAC_B(105b)が生成したアドレス情報を参照して、メインメモリ100から所定の画像データを読み出すことができる。
読み出されたデータはデータ設定ユニット72bにより、複数個設けられた所定のチャンネル(ch3〜ch6)に設定される。例えば、シェーディング補正用の画像データをチャンネル3(ch3)、面順次のRデータをチャンネル4(ch4)、面順次のGデータをチャンネル5(ch5)、面順次のBデータをチャンネル6(ch6)と、各データが設定される。
各チャンネル(ch3〜ch6)に設定されたデータは、I/Pインタフェース72cを介して、LDMAC_B(105b)の制御の下、順次DMA転送され、スキャナ画像処理部20のブロックバッファRAM210(図16)にローディングされる。
また、LDMAC_B(105b)内のチャンネル7(ch7)は、所定の画像処理が施されたデータをメインメモリ100に格納するために、スキャナ画像処理部20から出力される点順次の画像データを格納するチャンネルである。スキャナ画像処理部20は、点順次の画像データの出力に合わせて、アドレス情報(ブロック・エンド信号、ライン・エンド信号)を出力し、このアドレス情報に基づいて、第2書き込みデータI/F72dは、チャンネル7に格納されている画像データをメインメモリ100に格納する。この処理の内容は後に詳細に説明する。
<画像処理>
図16は、スキャナ画像処理部20の概略的な構成を説明するブロック図であり、ブロックバッファRAM210にローディングされたデータに対して、各画像処理モードに応じた処理が実行される。また、図19は、各画像処理に要する矩形領域のサイズを模式的に示す図である。スキャナ画像処理部20は、設定された画像処理モードに応じて、矩形領域に対して参照するべき矩形画素領域を切り替えて処理を実行する。以下、画像処理の内容を図16により、また、その処理の際に参照する矩形領域のサイズを図19により説明する。
図16において、シェーディング補正ブロック(SHD)22は、主走査方向の光源(LED19)の光量分布のばらつきや、画像読み取りデバイスの受光素子のばらつき、暗出力のオフセットを補正する処理ブロックである。シェーディングデータはメインメモリ100上で明R、明G、明B、暗R、暗G、暗Bの順に1画素分の補正データが面順次に格納されており、矩形領域に対応した画素数(主走査方向にXA画素、副走査方向にYA画素(図19(a)を参照))が入力される。入力された面順次の補正データは、入力データ処理部21により点順次のデータに変換され、スキャナ画像処理部20のブロックバッファRAM210に格納される。そして、矩形領域のシェーディングデータの取り込みが終了すると、画像データの転送に移行する。
入力データ処理部21は、R、G、Bに分離した面順次のデータを点順次のデータに再構成する処理を実行する処理部である。1画素のデータはメインメモリ100上に面順次のデータとしてR、G、B各色毎に格納されており、これらのデータがブロックバッファRAM210にローディングされると、入力データ処理部21は、各色データごとに1画素データを取り出し、1画素のR、G、Bデータとして再構成する。再構成の処理を画素毎に行ない、面順次の画像データを点順次のデータに変換する。ここで、再構成の処理は、矩形内の全ての画素(XA画素×YA画素)に対して行われる。
図17は、画像処理の対象領域とその処理を実行するためのフィルタ処理等をするための参照領域(ABCD)を概略的に示す図であり、同図において、有効画素領域(abcd)に対して、主走査方向(X方向)ののり代量として、「Na」、「Nb」画素が設定され、副走査方向(Y方向)ののり代量として、「Nc」、「Nd」画素が設定されている。
図18は、画像処理モード別(カラーコピーモード、モノクロコピーモード、スキャナモード)ののり代を例示する図であり、変倍時は変倍処理の必要から、m画素、nラインだけ、等倍時よりも参照領域は大きくなる。カラーコピーモードの場合は、黒文字の判定をするため、画像処理モードの内で最も大きい参照領域が必要である。黒文字の検出のためには、網点と黒文字の判定を確実にする必要があり、そのため網点の周期を判定するために、主走査方向(24+m)画素、副走査方向(21+n)画素(変倍時)を参照領域としている。モノクロコピーモードの場合は、文字部に対してエッジ強調を行なうため主走査方向(4+m)画素、副走査方向(4+n)画素(変倍時)を参照領域としている。スキャナモードは、ホストコンピュータ上のスキャナドライバやアプリケーションにより必要な画像処理を行なうため、等倍時には参照領域は必要としないが、変倍時には、変倍率に応じて、主走査方向にm画素、副走査方向にn画素分、参照領域が設定される。尚、ここで示したのり代量に本発明の趣旨は限定されるものではなく、任意に設定することが可能であることはいうまでもない。
処理ブロック23において、平均化処理部(SUBS)は、主走査方向の読み取り解像度を落とすためのサブサンプリング(単純間引き)、あるいは平均化処理を行なう処理ブロックであり、入力マスキング処理部(INPMSK)は、入力されたR、G、Bデータの色補正を演算する処理ブロックである。γ補正処理部(LUT)は入力されたデータに対して、所定の階調特性を与える処理ブロックである。
文字判定処理ブロック24は、入力画像データに対して、黒文字判別、線画輪郭の画素判別を行なう処理ブロックである。黒文字判別処理においては、上述のように網点周期よりも広いエリアを参照する必要があるので、主走査方向(24+m)画素、副走査方向(21+n)画素(ライン)(「m」、「n」は変倍処理の倍率による。)相当ののり代領域を参照するのが望ましい。文字判定処理ブロック24の入力データは、シェーディング補正ブロック(SHD)21の入力と同様に主走査方向XA画素(有効画素+のり代)×副走査方向YA画素(有効画素+のり代)のデータ(図19の(a))を参照する。即ち、矩形内の全ての画素(XA画素×YA画素)を参照する。
処理ブロック25において、MTF補正処理部は、画像読み取りデバイスを変更した際の、MTF差補正、縮小変倍時のモアレ低減のために主走査方向にフィルタ処理を行なう処理部であり、注目領域に対して、主走査方向の所定画素について、各係数を乗加算処理するブロックである。図19(b)では、注目領域G1に対して左側ハッチング部(b1)2画素と、右側ハッチング部(b2)3画素を確保して、領域G1に対する処理を実行する。即ち、矩形内の注目領域G1とハッチング部b1、b2の領域を読み出して注目領域G1の領域を得る。
(RGB→(L、Ca、Cb))変換処理部(CTRN)は、後続のフィルタ処理ブロック26で行なうフィルタリング(明度強調、彩度強調、色判定)に際し、R,G、B各色の多値画像データの変換処理を行なう。
下地濃度調整処理部(ABC)は、原稿の下地濃度を自動認識し、下地濃度値を白側に補正することによりファクシミリ通信等に適した二値化データを得るための処理を実行する。
フィルタ処理ブロック26は、先のCTRN処理において、得られたデータに対して色判定とフィルタリングを行なうための処理として、画像の明度成分(L)のエッジ強度処理及び彩度(Ca、Cb)の強調処理を行なう。更に、入力画像の彩色判定を行ない、その結果を出力する。また、文字判定処理ブロック24で生成された文字、線画輪郭部の判定信号等に基づき、強調量のパラメータを変化させることができる。フィルタ処理後のデータは、L、Ca、CbからR、G、Bデータに変換されて出力される。この処理ブロックはモノクロ画像データを処理する場合は5画素×5画素のエッジ強調フィルタとして機能する。
図19(c)では、注目領域G2に対して、上下2画素(ライン)、左右2画素の領域(ハッチングを付した領域)を参照データとして、上述のフィルタ処理が実行される。即ち、MTF補正処理部で処理された領域G1に対し、フィルタ処理後の領域G2を得る。
変倍処理(LIP)ブロック27は、主走査、副走査方向の線形補間変倍処理を施す処理ブロックである。図19(d)では、領域G3が線形補間変倍処理された結果、得られる領域であり、画像データ(d:(X−(Na+Nb)画素)×(Y−(Nc+Nd)画素))から、ハッチングを付した領域が所定の変倍率(主走査方向(+m画素)、副走査方向(+nライン))に応じて、主走査方向、副走査方向に変倍し、領域G3の面積が決定される。即ち、フィルタ処理後の領域G2を入力として、変倍後の領域G3を得る。
図19(b)〜(d)において、図中の「Na」、「Nb」は、図17と同様に主走査方向(X方向)ののり代量として設定された画素数を示し、「Nc」、「Nd」は、副走査方向(Y方向)ののり代量として設定された画素数を示すものである。
以上の画像処理が、設定された画像処理モード(コピーモード、スキャナモード)に応じて、矩形領域単位の画像データに施される。画像処理モードに応じた矩形領域をメモリ上に設定し、この矩形領域の単位を切り替えることにより、各画像処理モードに応じた解像度、高精彩処理を実現することが可能になる。また、各矩形領域は、各処理ブロックの画像処理に必要なだけのり代を含んでいるので、処理対象の矩形画像データの端部を処理するために、隣接する領域の画像データを矩形単位で読み出す必要がなく、単純に画像を矩形単位で区切って画像処理する方法よりも、さらなるワークメモリの削減が達成できる。
このように、各画像処理部で必要な最大の矩形分の画像データを予めブロックバッファRAM210にローディングし、RAM210上の画像データを各画像処理部間で必要な画像データ量の受け渡しをするだけで、カラーコピー/モノクロコピー/スキャナモード等、各モードに必要な一連の画像処理を実現できる。これによって、画像処理ブロックに専用のラインバッファを不要にしている。さらに、ブロックバッファRAM210にローディングされた矩形単位の画像データで、全ての画像処理を行なえるので、主走査幅、解像度によらない画像処理が可能である。このため従来のように各画像処理部のラインバッファの容量を、主走査幅や解像度に合わせて拡張する必要がない。また、適時必要な画像処理を行なうコピー、スキャナなどの装置を、極めて単純な構成で提供できる。
図20は、1つの矩形データの処理が終了して、次の矩形データの画像データをDMA転送するためのDMA主走査方向の開始点を説明する図である。最初の矩形領域ABCDのDMAが終了し、D点の画素まで転送が終了すると、主走査方向の開始点は、主走査方向にNa+Nb画素分戻した位置(図中のS1点)となる。以下、順次1列分の矩形データのDMAが終了し、1列目の最終の矩形データに対応するE点のDMAが転送されると、次の列の矩形データを転送するために、副走査方向にシフトする開始点はNc+Nd画素分戻した位置(図中のS2)となる。
図21、図22は、画像処理モード別のDMA転送処理と、画像処理の流れを説明するフローチャートである。尚、図21及び図22で説明するアドレス情報は、具体的な数値を例示的に用いているが、この数値に限定されるものではなく、任意に設定することは可能である。
<コピーモード時の処理>
図21は、コピーモード時におけるデータの読み出しと、画像処理の流れを説明するフローチャートである。まず、ステップS200において、カラーモードであるか、モノクロモードであるかを判断する。カラーモードである場合(S200−YES)は、処理をステップS210に進め、モノクロモードである場合(S200−NO)は処理をステップS220に進める。
ステップS210では、カラーコピーモード時の読み出しのためのアドレス情報を、以下のように設定する。このアドレス情報は、LDMAC_B(105b)が生成し(ステップS220も同様)、このアドレス情報に基づいて、LDMAC_B(105b)はDMAを制御する。
・スタートアドレス(SA)=メモリの先頭アドレス(BUFTOP)
・UA=メモリのエンドアドレス(BUFFBOTTOM)+1
・XA=矩形有効主走査画素
+のり代(左のり代画素数(12画素)、右のり代画素数(13画素))
・YA=矩形有効副走査画素(ライン)
+のり代(上のり代画素数(11画素(ライン))、下のり代画素数(11画素(ライン)))
・OFF1A=TOTALWIDTH−XA
・OFF2A=−(TOTALWIDTH×YA+のり代(左12画素、右13画素))
・OFF3A=−(TOTALWIDTH×(のり代(上11画素、下11画素)
+有効主走査画素+のり代(左12画素、右13画素))
(TOTALWIDTH=1ページ画像の主走査有効画素数(IMAGEWIDTH)
+左のり代画素数+右のり代画素数)
・XANUM=有効主走査画素/矩形有効主走査画素
ステップS220では、モノクロコピーモード時の読み出しのためのアドレス情報を以下のように設定する。
・スタートアドレス(SA)=メモリの先頭アドレス(BUFTOP)
・メモリのエンドアドレス(BUFFBOTTOM)+1
・XA=矩形有効主走査画素+のり代(左のり代画素数(2画素)、右のり代画素数(2画素))
・YA=矩形有効副走査画素(ライン)+のり代(上のり代画素数(2画素
(ライン))、下のり代画素数(2画素(ライン)))
・OFF1A=TOTALWIDTH−XA
・OFF2A=−(TOTALWIDTH×YA+のり代(左2画素、右2画素))
・OFF3A=−(TOTALWIDTH×(のり代(上2画素、下2画素)
+有効主走査画素+のり代(左12画素、右13画素))
(TOTALWIDTH=1ページ画像の主走査有効画素数(IMAGEWIDTH)
+左のり代画素数+右のり代画素数)
・XANUM=有効主走査画素/矩形有効主走査画素
ステップS210、S220により、アドレス情報が読み出しデータI/F部72aに設定されると、処理をステップS230に進め、LDMAC_B(105b)がデータの読み出しが可能な状態にあるか否かを判断する。例えば、バッファコントローラ75が、バッファリードを禁止した状態である場合は、その状態が解除されるまで待機し(S230−NO)、バッファリードが可能であれば(S230−YES)、処理をステップS240に進める。
ステップS240において、読み出しデータI/F部72aは設定されたアドレス情報に従ってデータを読み出し、データ設定ユニット72bは所定のチャンネル(ch3〜ch6)にデータを設定する。そして、LDMAC_B(105b)は各チャンネルに設定されたデータをスキャナ画像処理部20のバッファRAM210にDMA転送をする。ここでDMA転送されたデータは、スキャナ画像処理部20のバッファにローディングされ、各画像処理モードに合わせた画像処理が実行される。個別の画像処理の内容は先に説明したので、ここではその詳細な説明は省略する。
ローディングされたシェーディング補正データ、画像データは上述の入力データ処理部21により、面順次のデータから点順次のデータに変換され、以下の画像処理が施される。
ステップS250において、カラーコピーモードであるか、モノクロコピーモードであるかを判断し、カラーコピーモードの場合(S250−YES)は処理をステップS260に進めて、文字判定処理を実行する。モノクロコピーモードの場合(S250−NO)は、ステップS260(文字判定処理)をスキップして、ステップS270のフィルタ処理を実行し、ステップS280で変倍処理を実行する。
以上の処理が矩形領域のデータごとに実行され、ステップS290で画像処理済みの点順次の画像データは、画像処理済みデータを格納する所定のメモリ領域に更にDMA転送され、格納される。この格納処理は後に詳細に説明する。
ステップS300で、矩形領域の画像処理及びそのデータの格納処理が完了したか否か判断し、処理が完了していない場合は処理を再びステップS250に戻し、同様の処理を実行する。矩形領域の処理が完了した場合(S300−YES)、処理をステップS310に進めてページ全体を構成する矩形領域の処理が終了したか否かを判断する(S310)。ページ全体の処理が終了していない場合(S310−NO)は、処理をステップS230に戻し、メインメモリ100から後続の画像データを読み出し、そのデータに対する画像処理(S230以降のステップ)を実行する。
一方、ページ処理が終了した場合(S310−YES)は、処理をステップS320に進め、スキャナ画像処理部20に対するDMA転送(S320)と、スキャナ画像処理部20のバッファへのデータ書き込み処理を終了させ(S330)、スキャナ画像処理部20における画像処理を終了する(S340)。
以上の処理により、コピーモードで読み取ったデータに対する画像処理が完了する。
<スキャナモード時の処理>
図22は、スキャナモード時におけるデータの読み出しと、画像処理の流れを説明するフローチャートである。まず、ステップS400において、メインメモリ100からデータを読み出すためのアドレス情報を、以下のように設定する。尚、このアドレス情報は、LDMAC_B(105b)が生成し、このアドレス情報に基づいて、LDMAC_B(105b)はDMAを制御する。
・スタートアドレス(SA)=メモリの先頭アドレス(BUFTOP)
・UA=メモリのエンドアドレス(BUFFBOTTOM)+1
・XA=矩形有効主走査画素
・YA=矩形有効副走査画素(ライン)
+のり代(下のり代画素数(1画素(ライン)))
・OFF1A=TOTALWIDTH−XA
・OFF2A=−(TOTALWIDTH×YA)
・OFF3A=−(TOTALWIDTH×(のり代(下のり代画素数(1画素))
+有効主走査画素)
(TOTALWIDTH=1ページ画像の主走査有効画素数(IMAGEWIDTH)
+左のり代画素数+右のり代画素数)
・XANUM=有効主走査画素/矩形有効主走査画素
ステップS400により、アドレス情報が読み出しデータI/F部72aに設定されると、処理をステップS410に進め、LDMAC_B(105b)がデータの読み出しが可能な状態にあるか否かを判断する。例えば、バッファコントローラ75が、データの読み出しを禁止した状態である場合は、その状態が解除されるまで待機し(S230−NO)、バッファリードが可能であれば(S230−YES)、処理をステップS420に進める。
ステップS420において、読み出しデータI/F部72aは設定されたアドレス情報に従ってデータを読み出し、データ設定ユニット72bは所定のチャンネル(ch3〜ch6)にデータを設定する。そして、LDMAC_B(105b)は各チャンネルに設定されたデータをスキャナ画像処理部20のバッファにDMA転送をする。ここでDMA転送されたデータは、スキャナ画像処理部のバッファにローディングされ、各画像処理モードに合わせた画像処理が実行される。画像処理の内容は先に説明したので、その詳細な説明は省略する。
ローディングされた画像データは上述の入力データ処理部21により、面順次のデータから点順次のデータに変換され、ステップS430において変倍処理を実行する。
ステップS440において、画像処理済みの点順次の画像データは、画像処理済みデータを格納する所定のメモリ領域に更にDMA転送され、格納される。この格納処理は後に詳細に説明する。
ステップS450で、矩形領域の画像処理及びそのデータの格納処理が完了したか否か判断し、処理が完了していない場合は処理を再びステップS430に戻し、同様の処理を実行する。矩形領域の処理が完了した場合(S450−YES)、処理をステップS460に進めてページ全体の処理が終了したか否かを判断する(S460)。ページ全体の処理が終了していない場合(S460−NO)は、処理をステップS410に戻し、メインメモリ100から後続の画像データを読み出し、そのデータに対する画像処理を実行する。
一方、ページ処理が終了した場合(S460−YES)は、処理をステップS470に進め、スキャナ画像処理部20に対するDMA転送(S470)と、スキャナ画像処理部20のバッファへのデータ書き込み処理を終了させ(S480)、スキャナ画像処理部20における画像処理を終了する(S490)。
以上の処理により、スキャナモードで読み取った画像データに対する画像処理が完了する。
画像処理モードに応じて、所定ののり代量を含む矩形領域を設定し、この矩形領域単位に画像処理を行なうことにより、各画像処理部の個別のラインバッファの介在無しに所定の画像処理を実行することが可能になる。
<画像処理済みデータの格納>
図23は、変倍処理された矩形データを変倍処理ブロック(LIP)27からメインメモリ100に転送する処理を説明する図である。例えば、256画素×256画素の矩形データを70%に縮小する場合、256画素×0.7=179.2画素となり、数値計算上179.2画素×179.2画素の矩形データを作る必要がある。しかし、少数点以下の数値を反映した画素データを生成することができないので、主走査方向、副走査方向に、180画素と179画素の出現確率を2:8に制御して、全体的に縮小倍率70%相当の179.2画素を生成する。図23では、矩形領域のサイズが領域B11(XA1=180画素)、B12(XA2=179画素)と主走査方向に画素数が異なり、B11(YA1=180画素)とB21(YA2=179画素)とでは副走査方向にそれぞれ矩形領域のサイズが異なっている。変倍処理の結果に応じてサイズが異なる矩形領域の出現確率は制御され、所定の変倍画像データを得ることができる。そして、メインメモリ100に対して、画像処理されたデータを戻すために、DMAを制御する信号は変倍処理ブロック(LIP)27からLDMAC_B(105b)に対して通知される(図24)。
次に、図21のステップS290、図22のステップS440における処理を説明する。図25は、画像処理済みのデータをメインメモリ100にDMA転送するために、変倍処理ブロック(LIP)27からLDMAC_B(105b)に送出されるデータ及び信号の関係を示すタイミングチャートである。
LDMAC_B(105b)は、画像処理済みのデータをメインメモリ100に格納する際、矩形の主走査長、副走査長が未知の状態でDMA転送を開始する。変倍処理ブロック27から1つの矩形内における主走査幅の最終データ(XA1、XA2)の転送時にライン・エンド信号が出力され、そのライン・エンド信号により矩形の主走査長が変倍処理ブロック27からLDMAC_B(105b)に通知される。
変倍処理ブロック27から1つの矩形内の最終データ転送時にブロック・エンド信号がLDMAC_B(105b)に対して出力され、これによって副走査長を認識することができる。副走査方向YA1のデータがすべて処理されると、DMA転送を領域B21、B22(図23を参照)にシフトして、同様に主走査方向のデータXAを送出する。DMAはライン・エンド信号、ブロック・エンド信号により制御される。これにより、変倍処理ブロック27の演算結果に応じて動的にDMAの矩形領域を切り替えることができるようになる。
上述のライン・エンド信号、ブロック・エンド信号、および点順次の画像データは、LDMAC_B(105b)のインタエース部72cに入力され、このうち画像データはチャンネル(ch)7に格納される。ライン・エンド信号及びブロック・エンド信号は、チャンネル(ch)7に格納したデータをメインメモリ100上に展開する際のアドレス情報として用いられ、第2書き込みデータI/F部72dは、これらのアドレス情報に基づき、ch7のデータを読み出し、メインメモリ100上にデータを格納する。
図26は、ライン・エンド信号及びブロック・エンド信号に従って、データをメインメモリ100に展開した状態を説明する図である。同図において、SAはDMA転送のスタートアドレスを示し、このアドレスから主走査方向に点順次のRGBデータを格納していく。ライン・エンド信号に基づき、DMA転送のアドレスをオフセット情報(OFF1A)により切り替え、副走査方向に1画素(ライン)シフトしたアドレスから同様に主走査方向にデータを格納していく。そして、矩形領域(0,0)のブロック・エンド信号に基づき、次の矩形領域(1,0)に対するデータの格納に移行する。DMA転送のアドレスはオフセット情報(OFF2A)により切り替えられる。この場合のOFF2Aは、領域(0、0)に対して主走査方向に1画素シフトし、副走査方向1ライン目にジャンプしたアドレスとして切り替えられる。
以下、同様に領域(2、0)、・・・・(n−1)、(n、0)とデータを格納していき、n個分のブロックの格納が完了すると、オフセット情報(OFF3)によりDMA転送のアドレスを切り替える。この場合のOFF3は、領域(0,0)の最終ラインの画素に対して副走査方向に1画素(ライン)シフトし、主走査方向1画素目にジャンプしたアドレスとして切り替えられる。
以上説明したとおり、ライン・エンド信号及びブロック・エンド信号により、オフセット情報(OFF1A、OFF2A、OFF3)を動的に切り替えることにより、画像処理されたデータをメインメモリ100の所定の領域にDMA転送し、格納することができる。
さらに、上記の実施形態によれば、種々の画像読み取りデバイスに対応することが可能な画像処理装置を提供することが可能になる。すなわち、画像読み取りデバイスにより読み取った画像データを、その出力形式に応じてDMA転送を制御するチャンネルに振り分け、振り分けたデータに対してDMAを制御するアドレス情報とオフセット情報を生成することにより、種々の画像読み取りデバイスに対応することが可能になる。
<他の実施形態>
上記の実施形態では、各種画像入出力機能を有する複合型の画像処理装置で、本発明を説明したが、本発明はこれに限るものではなく、単機能のスキャナ装置、プリンタ装置、あるいは他の装置に拡張接続するためのオプションカード等にも、適用可能である。また、本発明に関わる装置のユニット構成も限定するものではなく、例えば、ネットワークを介して接続された複数の装置により、達成されるように、本発明に関わる装置またはシステムを構成してもよい。
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し、実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される場合も含まれる。
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される場合も含まれる。