(57)【要約】【課題】画像内での画素列の並べ替え処理を含む補正処理を比較的高速に且つコストの増大を抑制しつつ実現することが可能な技術を提供する。【解決手段】ＭＦＰ（画像処理装置）は、２種類のメモリ（ＳＲＡＭおよびＤＲＡＭ）を用いて２種類の並べ替え処理を実行する。入力画像に基づいて生成される複数のブロック画像Ｂ１〜Ｂ３のそれぞれの内部における画素群に関する並べ替え処理（ブロック内並べ替え処理）が、ＳＲＡＭを利用して実行される。また、複数のブロック画像Ｂ１〜Ｂ３の相互間における画素列の並べ替え処理（ブロック相互間並べ替え処理）が、ＤＲＡＭを用いて実行される。比較的高価なＳＲＡＭの容量はＤＲＡＭの容量よりも少ない。また、ＳＲＡＭはＤＲＡＭよりも高速にランダムアクセスを行うことが可能であり、ブロック内並べ替え処理は、比較的高速なＳＲＡＭによるランダムアクセスを利用して行われる。【選択図】図８
2018128937.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
入力画像内の画素群に関する第１の並べ替え処理を実行するための第１のメモリと、
前記第１の並べ替え処理後の画像内の画素群に関する第２の並べ替え処理を実行するための第２のメモリであって、前記第２の並べ替え処理後の画像を出力するための第２のメモリと、
前記第１のメモリと前記第２のメモリとを用いて、前記第１の並べ替え処理と前記第２の並べ替え処理とを含む補正処理を前記入力画像に対して実行する補正手段と、
を備え、
前記第１の並べ替え処理は、前記第１のメモリへの書き込み時におけるランダムアクセスあるいは前記第１のメモリからの読み出し時におけるランダムアクセスを利用して、前記入力画像内の画素群に関する並べ替えを実行する処理であり、
前記第２の並べ替え処理は、前記第２のメモリへの書き込み時におけるランダムアクセスあるいは前記第２のメモリからの読み出し時におけるランダムアクセスを利用して、前記第１の並べ替え処理後の画像内の画素群に関する並べ替えを実行する処理であり、
前記第１のメモリと前記第２のメモリとは互いに異なる種類のメモリであり、
前記第１のメモリと前記第２のメモリとのうちの一方のメモリは、他方のメモリよりも高速にランダムアクセスを行うことが可能なメモリであり、
前記一方のメモリのメモリ容量は、前記他方のメモリのメモリ容量よりも少なく、
前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの一方の並べ替え処理は、前記入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理であり、
前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの他方の並べ替え処理は、前記複数のブロック画像の相互間における画素列の並べ替え処理であり、
前記一方の並べ替え処理は、前記一方のメモリによるランダムアクセスを伴う並べ替え処理であることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記一方の並べ替え処理は、各ブロック画像内にて階段状に配置された複数の部分画素列を直線状に配列させる並べ替え処理であり、
前記他方の並べ替え処理は、それぞれの所属ブロック内ではそれぞれ直線状に配置された画素列である複数のブロック内直線状画素列であって前記複数のブロック画像の相互間においては非直線状に配置された複数のブロック内直線状画素列を、前記複数のブロック画像の相互間において直線状に配列させる並べ替え処理であることを特徴とする画像処理装置。
【請求項３】
請求項１または請求項２に記載の画像処理装置において、
前記一方のメモリは、前記他方のメモリのライン数よりも少ないＮ本（ただし、Ｎは２以上の自然数）のラインメモリで構成されていることを特徴とする画像処理装置。
【請求項４】
請求項３に記載の画像処理装置において、
前記入力画像は、第１の方向に伸びる１次元状の画素列であるライン画素列を複数本備えて構成され、
前記複数のブロック画像のそれぞれは、前記第１の方向に垂直な第２の方向において、前記入力画像よりも短い長さであって前記Ｎ本のライン分の長さを有していることを特徴とする画像処理装置。
【請求項５】
請求項１から請求項４のいずれかに記載の画像処理装置において、
前記第１の並べ替え処理は、前記一方の並べ替え処理であり、
前記第２の並べ替え処理は、前記他方の並べ替え処理であり、
前記第１のメモリは、前記一方のメモリであり、
前記第２のメモリは、前記他方のメモリであることを特徴とする画像処理装置。
【請求項６】
請求項５に記載の画像処理装置において、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時には、前記入力画像における各ライン画素列を並べ替えることなく前記一方のメモリ内の各対応ライン上に書き込み、且つ、
前記一方のメモリからの読み出し時に、各ブロック画像内の複数の部分画素列であって、前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時に、前記一方の並べ替え処理において生成された各直列化画素列を、前記他方のメモリに関するランダムアクセスを利用して前記各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、
前記他方のメモリからの読み出し時に、前記複数のブロック画像に関して互いに異なるタイミングで前記他方のメモリに書き込まれていた複数の直列化画素列であって前記他方のメモリにて同一ライン上に配置されている複数の直列化画素列を読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えた１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項７】
請求項５に記載の画像処理装置において、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時に、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、
前記一方のメモリからの読み出し時に、前記各ブロック画像内に互いに異なるタイミングで書き込まれていた複数の部分画素列であって前記一方のメモリにて同一ライン上に配置されている複数の部分画素列を読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時には、前記一方の並べ替え処理によって暫定的に直列的に整列された画素列を並べ替えることなく前記他方のメモリ内に書き込み、且つ、
前記他方のメモリからの読み出し時に、前記複数のブロック画像に関する複数の直列化画素列であって前記他方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の直列化画素列を前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えて１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項８】
請求項５に記載の画像処理装置において、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時には、前記入力画像における各ライン画素列を並べ替えることなく前記一方のメモリ内の各対応ライン上に書き込み、且つ、
前記一方のメモリからの読み出し時に、各ブロック画像内の複数の部分画素列であって、前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時には、前記一方の並べ替え処理によって暫定的に直列的に整列された画素列を並べ替えることなく前記他方のメモリ内に書き込み、且つ、
前記他方のメモリからの読み出し時に、前記複数のブロック画像に関する複数の直列化画素列であって前記他方のメモリにて互いに異なるラインに配置されていた複数の直列化画素列を前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えて１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項９】
請求項５に記載の画像処理装置において、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時に、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、
前記一方のメモリからの読み出し時に、前記各ブロック画像内に互いに異なるタイミングで書き込まれていた複数の部分画素列であって前記一方のメモリにて同一ライン上に配置されている複数の部分画素列を読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時に、前記一方の並べ替え処理において生成された各直列化画素列を、前記他方のメモリに関するランダムアクセスを利用して前記各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、
前記他方のメモリからの読み出し時に、前記複数のブロック画像に関して互いに異なるタイミングで前記他方のメモリに書き込まれていた複数の直列化画素列であって前記他方のメモリにて同一ライン上に配置されている複数の直列化画素列を読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えた１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項１０】
請求項１から請求項４のいずれかに記載の画像処理装置において、
前記第１の並べ替え処理は、前記他方の並べ替え処理であり、
前記第２の並べ替え処理は、前記一方の並べ替え処理であり、
前記第１のメモリは、前記他方のメモリであり、
前記第２のメモリは、前記一方のメモリであることを特徴とする画像処理装置。
【請求項１１】
請求項１０に記載の画像処理装置において、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時には、前記入力画像における各ライン画素列をそれぞれ並べ替えることなく前記他方のメモリ内の各対応ライン上に書き込み、且つ、
前記他方のメモリからの読み出し時に、前記他方のメモリにて非直線状に配置されていた複数のブロック画像を、前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える処理であり、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時に、前記複数のブロック画像のそれぞれに関して、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の目標位置の対応アドレスに書き込むことによって、前記各ブロック画像内の複数の部分画素列が同一ライン上に配置されるように前記複数の部分画素列を並べ替えた直列化画素列を生成し、且つ、
前記一方のメモリからの読み出し時に、 前記一方のメモリにて同一ライン上に配置されている前記複数の部分画素列を読み出すことによって、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項１２】
請求項１０に記載の画像処理装置において、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時に、前記他方のメモリに関するランダムアクセスを利用して前記複数のブロック画像を前記複数のブロック画像の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、
前記他方のメモリからの読み出し時に、前記他方のメモリにて直線状に配置されている複数のブロック画像を読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える並べ替え処理であり、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時には、前記複数のブロック画像内の各部分画素列を並べ替えることなく前記一方のメモリに書き込み、且つ、
前記一方のメモリからの読み出し時に、前記複数のブロック画像のそれぞれに関して、各ブロック画像内の複数の部分画素列であって前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像に関する前記複数の部分画素列が直線状に配列されるように前記複数のブロック画像に関する前記複数の部分画素列を並べ替えた直列化画素列を生成し、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項１３】
請求項１０に記載の画像処理装置において、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時には、前記入力画像における各ライン画素列をそれぞれ並べ替えることなく前記他方のメモリ内の各対応ライン上に書き込み、且つ、
前記他方のメモリからの読み出し時に、前記他方のメモリにて非直線状に配置されていた複数のブロック画像を、前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える処理であり、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時には、前記複数のブロック画像内の各部分画素列を並べ替えることなく前記一方のメモリに書き込み、且つ、
前記一方のメモリからの読み出し時に、前記複数のブロック画像のそれぞれに関して、各ブロック画像内の複数の部分画素列であって前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像に関する前記複数の部分画素列が直線状に配列されるように前記複数のブロック画像に関する前記複数の部分画素列を並べ替えた直列化画素列を生成し、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項１４】
請求項１０に記載の画像処理装置において、
前記他方の並べ替え処理は、
前記他方のメモリへの書き込み時に、前記他方のメモリに関するランダムアクセスを利用して前記複数のブロック画像を前記複数のブロック画像の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、
前記他方のメモリからの読み出し時に、前記他方のメモリにて直線状に配置されている複数のブロック画像を読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える並べ替え処理であり、
前記一方の並べ替え処理は、
前記一方のメモリへの書き込み時に、前記複数のブロック画像のそれぞれに関して、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の目標位置の対応アドレスに書き込むことによって、前記各ブロック画像内の複数の部分画素列が同一ライン上に配置されるように前記複数の部分画素列を並べ替えた直列化画素列を生成し、且つ、
前記一方のメモリからの読み出し時に、 前記一方のメモリにて同一ライン上に配置されている前記複数の部分画素列を読み出すことによって、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする画像処理装置。
【請求項１５】
請求項１から請求項１４のいずれかに記載の画像処理装置において、
前記入力画像は、原稿を光学的に読み取ったスキャン画像であり、
前記第１の並べ替え処理と前記第２の並べ替え処理とを実行することによって、前記スキャン画像に対するスキュー補正が行われることを特徴とする画像処理装置。
【請求項１６】
請求項１５に記載の画像処理装置において、
前記スキュー補正は、斜行補正であることを特徴とする画像処理装置。
【請求項１７】
請求項１６に記載の画像処理装置において、
原稿の斜行角度を検出する検出手段、
をさらに備え、
前記複数のブロック画像は、前記入力画像内の斜行ラインを構成する複数の部分画素列であって前記入力画像の複数の所定方向ラインに亘って階段状に配置された複数の部分画素列を含むように生成され、
前記補正手段は、前記第１の並べ替え処理と前記第２の並べ替え処理とを用いて、前記入力画像の斜行ラインであって前記入力画像の複数の所定方向ラインに亘って階段状に配置された部分画素列で構成される斜行ラインに対応する画素列を直列化して出力することを特徴とする画像処理装置。
【請求項１８】
請求項１５に記載の画像処理装置において、
前記スキュー補正は、画像歪み補正であることを特徴とする画像処理装置。
【請求項１９】
請求項１８に記載の画像処理装置において、
原稿のスキャン画像の一部における画像歪みを検出する検出手段、
をさらに備え、
前記複数のブロック画像は、前記入力画像内の画像歪みを伴った変形ラインを構成する複数の部分画素列であって前記入力画像の複数の所定方向ラインに亘って階段状に配置された複数の部分画素列を含むように生成され、
前記補正手段は、前記第１の並べ替え処理と前記第２の並べ替え処理とを用いて、前記入力画像内にて画像歪みを伴った変形ラインであって前記入力画像の複数の所定方向ラインに亘って階段状に配置された部分画素列で構成される変形ラインに対応する画素列を直列化して出力することを特徴とする画像処理装置。
【請求項２０】
請求項１から請求項１４のいずれかに記載の画像処理装置において、
前記入力画像は、印刷出力用画像であり、
前記第１の並べ替え処理と前記第２の並べ替え処理とを実行することによって、前記印刷出力用画像に対するスキュー補正が行われることを特徴とする画像処理装置。
【請求項２１】
請求項２０に記載の画像処理装置において、
前記スキュー補正は、斜行補正であることを特徴とする画像処理装置。
【請求項２２】
請求項２１に記載の画像処理装置において、
印刷対象用紙の斜行角度を検出する検出手段、
をさらに備え、
前記複数のブロック画像は、前記入力画像内の斜行ラインを構成する複数の部分画素列であって前記入力画像の複数の所定方向ラインに亘って階段状に配置された複数の部分画素列を含むように生成され、
前記補正手段は、前記第１の並べ替え処理と前記第２の並べ替え処理とを用いて、前記入力画像の斜行ラインであって前記入力画像の複数の所定方向ラインに亘って階段状に配置された部分画素列で構成される斜行ラインに対応する画素列を直列化して出力することを特徴とする画像処理装置。
【請求項２３】
請求項１から請求項２２のいずれかに記載の画像処理装置において、
前記一方のメモリは、ＳＲＡＭであり、
前記他方のメモリは、ＤＲＡＭであることを特徴とする画像処理装置。
【請求項２４】
画像処理方法であって、
ａ）入力画像を取得するステップと、
ｂ）入力画像内の画素群に関する第１の並べ替え処理を実行するための第１のメモリと、前記第１の並べ替え処理後の画像内の画素群に関する第２の並べ替え処理を実行するための第２のメモリであって前記第２の並べ替え処理後の画像を出力するための第２のメモリとを用いて、前記第１の並べ替え処理と前記第２の並べ替え処理とを含む補正処理を前記入力画像に対して実行するステップと、
を備え、
前記第１の並べ替え処理は、前記第１のメモリへの書き込み時におけるランダムアクセスあるいは前記第１のメモリからの読み出し時におけるランダムアクセスを利用して、前記入力画像内の画素群に関する並べ替えを実行する処理であり、
前記第２の並べ替え処理は、前記第２のメモリへの書き込み時におけるランダムアクセスあるいは前記第２のメモリからの読み出し時におけるランダムアクセスを利用して、前記第１の並べ替え処理後の画像内の画素群に関する並べ替えを実行する処理であり、
前記第１のメモリと前記第２のメモリとは互いに異なる種類のメモリであり、
前記第１のメモリと前記第２のメモリとのうちの一方のメモリは、他方のメモリよりも高速にランダムアクセスを行うことが可能なメモリであり、
前記一方のメモリのメモリ容量は、前記他方のメモリのメモリ容量よりも少なく、
前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの一方の並べ替え処理は、前記入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理であり、
前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの他方の並べ替え処理は、前記複数のブロック画像の相互間における画素列の並べ替え処理であり、
前記一方の並べ替え処理は、前記一方のメモリによるランダムアクセスを伴う並べ替え処理であることを特徴とする画像処理方法。
【請求項２５】
コンピュータに、
ａ）入力画像を取得するステップと、
ｂ）入力画像内の画素群に関する第１の並べ替え処理を実行するための第１のメモリと、前記第１の並べ替え処理後の画像内の画素群に関する第２の並べ替え処理を実行するための第２のメモリであって前記第２の並べ替え処理後の画像を出力するための第２のメモリとを用いて、前記第１の並べ替え処理と前記第２の並べ替え処理とを含む補正処理を前記入力画像に対して実行するステップと、
を実行させるためのプログラムであって、
前記第１の並べ替え処理は、前記第１のメモリへの書き込み時におけるランダムアクセスあるいは前記第１のメモリからの読み出し時におけるランダムアクセスを利用して、前記入力画像内の画素群に関する並べ替えを実行する処理であり、
前記第２の並べ替え処理は、前記第２のメモリへの書き込み時におけるランダムアクセスあるいは前記第２のメモリからの読み出し時におけるランダムアクセスを利用して、前記第１の並べ替え処理後の画像内の画素群に関する並べ替えを実行する処理であり、
前記第１のメモリと前記第２のメモリとは互いに異なる種類のメモリであり、
前記第１のメモリと前記第２のメモリとのうちの一方のメモリは、他方のメモリよりも高速にランダムアクセスを行うことが可能なメモリであり、
前記一方のメモリのメモリ容量は、前記他方のメモリのメモリ容量よりも少なく、
前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの一方の並べ替え処理は、前記入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理であり、
前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの他方の並べ替え処理は、前記複数のブロック画像の相互間における画素列の並べ替え処理であり、
前記一方の並べ替え処理は、前記一方のメモリによるランダムアクセスを伴う並べ替え処理であることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＦＰ（マルチ・ファンクション・ペリフェラル（Multi-Functional Peripheral））などの画像処理装置およびそれに関連する技術に関する。
【背景技術】
【０００２】
原稿を読み取ってスキャン画像（原稿の読取画像）を生成する際に、原稿の斜行量（斜行角度θ）を検出し、当該斜行量に基づいてスキャン画像の斜行を補正する技術が存在する（特許文献１等参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２５８８０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、スキャン画像に関する斜行補正において、修正後の１ライン分の画像を得るため、修正前の画像全体のうちの一部の画像（たとえば、修正後の当該１ラインに対応する斜行ラインを含む部分の画像３０３（図４参照））を格納する画像メモリ（原稿１ページ分よりも小容量のメモリ）を利用する技術が考えられる。
【０００５】
たとえば、まず補正前の当該一部の画像をそのままの配列状態で画像メモリに書き込み当該画像メモリに一旦格納する。この状態では、修正後の当該１ラインに対応する斜行部分は、マトリックス状にメモリセルが配置された画像メモリ内において未だ斜めに配置されたままである。換言すれば、当該斜行部分は、横方向において複数の部分画素列（細切れの部分的な連続画素列）に分断され、画像メモリ内のマトリックス状の配置における異なる縦方向位置に亘って階段状に配置されている。
【０００６】
その後、当該画像メモリから画素列を読み出す際に、当該画素列の読出し順序が変更される。具体的には、画像メモリ内のマトリックス状の配置における同じ縦方向位置（同じ横方向ライン内）の画素列がそのまま読み出されるのではなく、画像メモリ内の異なる縦方向位置に亘って階段状に配列された斜行ラインの１ライン分の画像（主走査方向の全幅に亘る画像）が、ランダムアクセスを利用して（その読出し位置（縦方向位置）が順次に変更されつつ）連続的に読み出される。これによって、斜行ラインの画素列（主走査方向の全幅に亘る画素列）が補正後の１ラインの画素列として（すなわち補正された状態で）出力される。端的に言えば、画像メモリのランダムアクセスを利用した並べ替え処理によって、斜行ラインが直列化されて出力される。
【０００７】
これによれば、ラインセンサで読み取った画素列（斜行状態の部分画像）を比較的小容量（原稿１ページ分よりも小容量のメモリ）の画像メモリを利用して、斜行ラインを１列に整列された状態で後段の処理部（各種の画像処理部（たとえば色調整部）等）に対して出力することが可能である。
【０００８】
なお、このような画像メモリの容量は、次のように算出される。たとえば、Ａ４サイズの原稿を読み取って（Ａ４原稿の長辺方向を主走査方向として読み取って）解像度６００ｄｐｉのスキャン画像を生成する際において、斜行角度が１．５度である場合を想定する。この場合、当該一部の画像（修正後の当該１ラインに対応する斜行ラインを含む部分の画像）は、主走査方向に約７２００画素（＝６００ｄｐｉ＊約１２インチ）、副走査方向に約１８０ライン（画素）（＝約７２００＊ｓｉｎθ）のサイズを有する。当該画像メモリの容量は、たとえば、４ＭＢ（＝７２００＊１８０＊３＊８／８）〜５ＭＢ（メガバイト）程度である。
【０００９】
上述の一部の画像を格納する画像メモリは、たとえばＤＲＡＭ（Dynamic Random Access Memory ）で構成されればよい。
【００１０】
しかしながら、ＤＲＡＭは、不連続なアドレスにアクセスする場合、アクセス毎にセットアップ・プリチャージ時間を要するとの特性を有している。そのため、上述の画像メモリがＤＲＡＭで構成される場合、ＤＲＡＭのランダムアクセスには比較的長い時間を要するという問題が存在する。
【００１１】
具体的には、上述のように、斜行ラインの読出し時等においては、画像メモリ内の異なる縦方向位置に亘って階段状に配列された斜行ラインの１ライン分の画像（主走査方向の全幅に亘る画像）を（その読出し位置（縦方向位置）を順次に変更しつつ）連続的に読み出すなどの比較的ランダムなアクセスが行われる。そのため、処理時間が比較的長くなる。より具体的には、１つの斜行ライン上の画像（１８０ラインに亘る複数の部分画素列）を読み出すために、たとえば、当該１８０ラインに亘る部分画素列の読出処理、換言すれば１８０回のランダムアクセスが行われる。これを画像全体について行い約５４００ラインの斜行ラインを読み出すためには、約１００万（＝５４００＊１８０）回のランダムアクセスが行われる。このような多数回のランダムアクセスが発生すると、並べ替え処理に長い時間を要する。
【００１２】
これに対して、ＤＲＡＭに代えて、ＳＲＡＭ（Static Random Access Memory）などの比較的高速なメモリを用いてランダムアクセス（比較的高速なランダムアクセス）を行うことが考えられる。
【００１３】
しかしながら、ＳＲＡＭは比較的高価であり、当該一部の画像を格納する画像メモリの全てをＳＲＡＭで構成すると、コストアップの問題が生じる。たとえば、４ＭＢ〜５ＭＢ（メガバイト）のＳＲＡＭが設けられる場合には、同程度の容量のＤＲＡＭが設けられる場合に比べて、コストが大幅に増大する。
【００１４】
このように、単一の種類のメモリのみを用いて画像内での画素列の並べ替え処理を含む補正処理を行う場合、処理速度およびコストに関する問題が存在する。
【００１５】
そこで、この発明は、画像内での画素列の並べ替え処理を含む補正処理を比較的高速に且つコストの増大を抑制しつつ実現することが可能な技術を提供することを課題とする。
【００１６】
なお、上述のような補正処理（画像内での画素列の並べ替え処理を含む補正処理）は、斜行補正のみならず、原稿の浮き上がり等に起因する画像の歪みの補正にも適用することが可能である。
【００１７】
また、上述のような補正処理は、スキャン処理（たとえば、斜行して配置された原稿に関する画像読取処理）のみならず、印刷出力処理（たとえば、斜行した用紙に対する印刷出力処理等）にも適用可能である。
【課題を解決するための手段】
【００１８】
上記課題を解決すべく、請求項１の発明は、画像処理装置であって、入力画像内の画素群に関する第１の並べ替え処理を実行するための第１のメモリと、前記第１の並べ替え処理後の画像内の画素群に関する第２の並べ替え処理を実行するための第２のメモリであって、前記第２の並べ替え処理後の画像を出力するための第２のメモリと、前記第１のメモリと前記第２のメモリとを用いて、前記第１の並べ替え処理と前記第２の並べ替え処理とを含む補正処理を前記入力画像に対して実行する補正手段と、を備え、前記第１の並べ替え処理は、前記第１のメモリへの書き込み時におけるランダムアクセスあるいは前記第１のメモリからの読み出し時におけるランダムアクセスを利用して、前記入力画像内の画素群に関する並べ替えを実行する処理であり、前記第２の並べ替え処理は、前記第２のメモリへの書き込み時におけるランダムアクセスあるいは前記第２のメモリからの読み出し時におけるランダムアクセスを利用して、前記第１の並べ替え処理後の画像内の画素群に関する並べ替えを実行する処理であり、前記第１のメモリと前記第２のメモリとは互いに異なる種類のメモリであり、前記第１のメモリと前記第２のメモリとのうちの一方のメモリは、他方のメモリよりも高速にランダムアクセスを行うことが可能なメモリであり、前記一方のメモリのメモリ容量は、前記他方のメモリのメモリ容量よりも少なく、前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの一方の並べ替え処理は、前記入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理であり、前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの他方の並べ替え処理は、前記複数のブロック画像の相互間における画素列の並べ替え処理であり、前記一方の並べ替え処理は、前記一方のメモリによるランダムアクセスを伴う並べ替え処理であることを特徴とする。
【００１９】
請求項２の発明は、請求項１の発明に係る画像処理装置において、前記一方の並べ替え処理は、各ブロック画像内にて階段状に配置された複数の部分画素列を直線状に配列させる並べ替え処理であり、前記他方の並べ替え処理は、それぞれの所属ブロック内ではそれぞれ直線状に配置された画素列である複数のブロック内直線状画素列であって前記複数のブロック画像の相互間においては非直線状に配置された複数のブロック内直線状画素列を、前記複数のブロック画像の相互間において直線状に配列させる並べ替え処理であることを特徴とする。
【００２０】
請求項３の発明は、請求項１または請求項２の発明に係る画像処理装置において、前記一方のメモリは、前記他方のメモリのライン数よりも少ないＮ本（ただし、Ｎは２以上の自然数）のラインメモリで構成されていることを特徴とする。
【００２１】
請求項４の発明は、請求項３の発明に係る画像処理装置において、前記入力画像は、第１の方向に伸びる１次元状の画素列であるライン画素列を複数本備えて構成され、前記複数のブロック画像のそれぞれは、前記第１の方向に垂直な第２の方向において、前記入力画像よりも短い長さであって前記Ｎ本のライン分の長さを有していることを特徴とする。
【００２２】
請求項５の発明は、請求項１から請求項４のいずれかの発明に係る画像処理装置において、前記第１の並べ替え処理は、前記一方の並べ替え処理であり、前記第２の並べ替え処理は、前記他方の並べ替え処理であり、前記第１のメモリは、前記一方のメモリであり、前記第２のメモリは、前記他方のメモリであることを特徴とする。
【００２３】
請求項６の発明は、請求項５の発明に係る画像処理装置において、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時には、前記入力画像における各ライン画素列を並べ替えることなく前記一方のメモリ内の各対応ライン上に書き込み、且つ、前記一方のメモリからの読み出し時に、各ブロック画像内の複数の部分画素列であって、前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時に、前記一方の並べ替え処理において生成された各直列化画素列を、前記他方のメモリに関するランダムアクセスを利用して前記各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、前記他方のメモリからの読み出し時に、前記複数のブロック画像に関して互いに異なるタイミングで前記他方のメモリに書き込まれていた複数の直列化画素列であって前記他方のメモリにて同一ライン上に配置されている複数の直列化画素列を読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えた１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００２４】
請求項７の発明は、請求項５の発明に係る画像処理装置において、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時に、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、前記一方のメモリからの読み出し時に、前記各ブロック画像内に互いに異なるタイミングで書き込まれていた複数の部分画素列であって前記一方のメモリにて同一ライン上に配置されている複数の部分画素列を読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時には、前記一方の並べ替え処理によって暫定的に直列的に整列された画素列を並べ替えることなく前記他方のメモリ内に書き込み、且つ、前記他方のメモリからの読み出し時に、前記複数のブロック画像に関する複数の直列化画素列であって前記他方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の直列化画素列を前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えて１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００２５】
請求項８の発明は、請求項５の発明に係る画像処理装置において、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時には、前記入力画像における各ライン画素列を並べ替えることなく前記一方のメモリ内の各対応ライン上に書き込み、且つ、前記一方のメモリからの読み出し時に、各ブロック画像内の複数の部分画素列であって、前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時には、前記一方の並べ替え処理によって暫定的に直列的に整列された画素列を並べ替えることなく前記他方のメモリ内に書き込み、且つ、前記他方のメモリからの読み出し時に、前記複数のブロック画像に関する複数の直列化画素列であって前記他方のメモリにて互いに異なるラインに配置されていた複数の直列化画素列を前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えて１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００２６】
請求項９の発明は、請求項５の発明に係る画像処理装置において、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時に、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、前記一方のメモリからの読み出し時に、前記各ブロック画像内に互いに異なるタイミングで書き込まれていた複数の部分画素列であって前記一方のメモリにて同一ライン上に配置されている複数の部分画素列を読み出すことによって、前記各ブロック画像内の前記複数の部分画素列が直線状に配列されるように前記複数の部分画素列を並べ替えた直列化画素列を生成する並べ替え処理であり、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時に、前記一方の並べ替え処理において生成された各直列化画素列を、前記他方のメモリに関するランダムアクセスを利用して前記各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、前記他方のメモリからの読み出し時に、前記複数のブロック画像に関して互いに異なるタイミングで前記他方のメモリに書き込まれていた複数の直列化画素列であって前記他方のメモリにて同一ライン上に配置されている複数の直列化画素列を読み出すことによって、前記複数の直列化画素列が直線状に配列されるように前記複数の直列化画素列を並べ替えた１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００２７】
請求項１０の発明は、請求項１から請求項４のいずれかの発明に係る画像処理装置において、前記第１の並べ替え処理は、前記他方の並べ替え処理であり、前記第２の並べ替え処理は、前記一方の並べ替え処理であり、前記第１のメモリは、前記他方のメモリであり、前記第２のメモリは、前記一方のメモリであることを特徴とする。
【００２８】
請求項１１の発明は、請求項１０の発明に係る画像処理装置において、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時には、前記入力画像における各ライン画素列をそれぞれ並べ替えることなく前記他方のメモリ内の各対応ライン上に書き込み、且つ、前記他方のメモリからの読み出し時に、前記他方のメモリにて非直線状に配置されていた複数のブロック画像を、前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える処理であり、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時に、前記複数のブロック画像のそれぞれに関して、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の目標位置の対応アドレスに書き込むことによって、前記各ブロック画像内の複数の部分画素列が同一ライン上に配置されるように前記複数の部分画素列を並べ替えた直列化画素列を生成し、且つ、前記一方のメモリからの読み出し時に、 前記一方のメモリにて同一ライン上に配置されている前記複数の部分画素列を読み出すことによって、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００２９】
請求項１２の発明は、請求項１０の発明に係る画像処理装置において、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時に、前記他方のメモリに関するランダムアクセスを利用して前記複数のブロック画像を前記複数のブロック画像の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、前記他方のメモリからの読み出し時に、前記他方のメモリにて直線状に配置されている複数のブロック画像を読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える並べ替え処理であり、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時には、前記複数のブロック画像内の各部分画素列を並べ替えることなく前記一方のメモリに書き込み、且つ、前記一方のメモリからの読み出し時に、前記複数のブロック画像のそれぞれに関して、各ブロック画像内の複数の部分画素列であって前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像に関する前記複数の部分画素列が直線状に配列されるように前記複数のブロック画像に関する前記複数の部分画素列を並べ替えた直列化画素列を生成し、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００３０】
請求項１３の発明は、請求項１０の発明に係る画像処理装置において、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時には、前記入力画像における各ライン画素列をそれぞれ並べ替えることなく前記他方のメモリ内の各対応ライン上に書き込み、且つ、前記他方のメモリからの読み出し時に、前記他方のメモリにて非直線状に配置されていた複数のブロック画像を、前記他方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える処理であり、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時には、前記複数のブロック画像内の各部分画素列を並べ替えることなく前記一方のメモリに書き込み、且つ、前記一方のメモリからの読み出し時に、前記複数のブロック画像のそれぞれに関して、各ブロック画像内の複数の部分画素列であって前記一方のメモリにて互いに異なるラインに配置されている２以上の部分画素列を含む複数の部分画素列を、前記一方のメモリに関するランダムアクセスを利用して読み出すことによって、前記複数のブロック画像に関する前記複数の部分画素列が直線状に配列されるように前記複数のブロック画像に関する前記複数の部分画素列を並べ替えた直列化画素列を生成し、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００３１】
請求項１４の発明は、請求項１０の発明に係る画像処理装置において、前記他方の並べ替え処理は、前記他方のメモリへの書き込み時に、前記他方のメモリに関するランダムアクセスを利用して前記複数のブロック画像を前記複数のブロック画像の並べ替え処理後の各目標位置の対応アドレスに書き込み、且つ、前記他方のメモリからの読み出し時に、前記他方のメモリにて直線状に配置されている複数のブロック画像を読み出すことによって、前記複数のブロック画像が直線状に配列されるように前記複数のブロック画像を並べ替える並べ替え処理であり、前記一方の並べ替え処理は、前記一方のメモリへの書き込み時に、前記複数のブロック画像のそれぞれに関して、前記一方のメモリに関するランダムアクセスを利用して、各ブロック画像内の各部分画素列を前記各部分画素列の並べ替え処理後の目標位置の対応アドレスに書き込むことによって、前記各ブロック画像内の複数の部分画素列が同一ライン上に配置されるように前記複数の部分画素列を並べ替えた直列化画素列を生成し、且つ、前記一方のメモリからの読み出し時に、 前記一方のメモリにて同一ライン上に配置されている前記複数の部分画素列を読み出すことによって、前記複数のブロックから抽出された１本のライン画像を生成する並べ替え処理であることを特徴とする。
【００３２】
請求項１５の発明は、請求項１から請求項１４のいずれかの発明に係る画像処理装置において、前記入力画像は、原稿を光学的に読み取ったスキャン画像であり、前記第１の並べ替え処理と前記第２の並べ替え処理とを実行することによって、前記スキャン画像に対するスキュー補正が行われることを特徴とする。
【００３３】
請求項１６の発明は、請求項１５の発明に係る画像処理装置において、前記スキュー補正は、斜行補正であることを特徴とする。
【００３４】
請求項１７の発明は、請求項１６の発明に係る画像処理装置において、原稿の斜行角度を検出する検出手段、をさらに備え、前記複数のブロック画像は、前記入力画像内の斜行ラインを構成する複数の部分画素列であって前記入力画像の複数の所定方向ラインに亘って階段状に配置された複数の部分画素列を含むように生成され、前記補正手段は、前記第１の並べ替え処理と前記第２の並べ替え処理とを用いて、前記入力画像の斜行ラインであって前記入力画像の複数の所定方向ラインに亘って階段状に配置された部分画素列で構成される斜行ラインに対応する画素列を直列化して出力することを特徴とする。
【００３５】
請求項１８の発明は、請求項１５の発明に係る画像処理装置において、前記スキュー補正は、画像歪み補正であることを特徴とする。
【００３６】
請求項１９の発明は、請求項１８の発明に係る画像処理装置において、原稿のスキャン画像の一部における画像歪みを検出する検出手段、をさらに備え、前記複数のブロック画像は、前記入力画像内の画像歪みを伴った変形ラインを構成する複数の部分画素列であって前記入力画像の複数の所定方向ラインに亘って階段状に配置された複数の部分画素列を含むように生成され、前記補正手段は、前記第１の並べ替え処理と前記第２の並べ替え処理とを用いて、前記入力画像内にて画像歪みを伴った変形ラインであって前記入力画像の複数の所定方向ラインに亘って階段状に配置された部分画素列で構成される変形ラインに対応する画素列を直列化して出力することを特徴とする。
【００３７】
請求項２０の発明は、請求項１から請求項１４のいずれかの発明に係る画像処理装置において、前記入力画像は、印刷出力用画像であり、前記第１の並べ替え処理と前記第２の並べ替え処理とを実行することによって、前記印刷出力用画像に対するスキュー補正が行われることを特徴とする。
【００３８】
請求項２１の発明は、請求項２０の発明に係る画像処理装置において、前記スキュー補正は、斜行補正であることを特徴とする。
【００３９】
請求項２２の発明は、請求項２１の発明に係る画像処理装置において、印刷対象用紙の斜行角度を検出する検出手段、をさらに備え、前記複数のブロック画像は、前記入力画像内の斜行ラインを構成する複数の部分画素列であって前記入力画像の複数の所定方向ラインに亘って階段状に配置された複数の部分画素列を含むように生成され、前記補正手段は、前記第１の並べ替え処理と前記第２の並べ替え処理とを用いて、前記入力画像の斜行ラインであって前記入力画像の複数の所定方向ラインに亘って階段状に配置された部分画素列で構成される斜行ラインに対応する画素列を直列化して出力することを特徴とする。
【００４０】
請求項２３の発明は、請求項１から請求項２２のいずれかの発明に係る画像処理装置において、前記一方のメモリは、ＳＲＡＭであり、前記他方のメモリは、ＤＲＡＭであることを特徴とする。
【００４１】
請求項２４の発明は、画像処理方法であって、ａ）入力画像を取得するステップと、ｂ）入力画像内の画素群に関する第１の並べ替え処理を実行するための第１のメモリと、前記第１の並べ替え処理後の画像内の画素群に関する第２の並べ替え処理を実行するための第２のメモリであって前記第２の並べ替え処理後の画像を出力するための第２のメモリとを用いて、前記第１の並べ替え処理と前記第２の並べ替え処理とを含む補正処理を前記入力画像に対して実行するステップと、を備え、前記第１の並べ替え処理は、前記第１のメモリへの書き込み時におけるランダムアクセスあるいは前記第１のメモリからの読み出し時におけるランダムアクセスを利用して、前記入力画像内の画素群に関する並べ替えを実行する処理であり、前記第２の並べ替え処理は、前記第２のメモリへの書き込み時におけるランダムアクセスあるいは前記第２のメモリからの読み出し時におけるランダムアクセスを利用して、前記第１の並べ替え処理後の画像内の画素群に関する並べ替えを実行する処理であり、前記第１のメモリと前記第２のメモリとは互いに異なる種類のメモリであり、前記第１のメモリと前記第２のメモリとのうちの一方のメモリは、他方のメモリよりも高速にランダムアクセスを行うことが可能なメモリであり、前記一方のメモリのメモリ容量は、前記他方のメモリのメモリ容量よりも少なく、前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの一方の並べ替え処理は、前記入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理であり、前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの他方の並べ替え処理は、前記複数のブロック画像の相互間における画素列の並べ替え処理であり、前記一方の並べ替え処理は、前記一方のメモリによるランダムアクセスを伴う並べ替え処理であることを特徴とする。
【００４２】
請求項２５の発明は、コンピュータに、ａ）入力画像を取得するステップと、ｂ）入力画像内の画素群に関する第１の並べ替え処理を実行するための第１のメモリと、前記第１の並べ替え処理後の画像内の画素群に関する第２の並べ替え処理を実行するための第２のメモリであって前記第２の並べ替え処理後の画像を出力するための第２のメモリとを用いて、前記第１の並べ替え処理と前記第２の並べ替え処理とを含む補正処理を前記入力画像に対して実行するステップと、を実行させるためのプログラムであって、前記第１の並べ替え処理は、前記第１のメモリへの書き込み時におけるランダムアクセスあるいは前記第１のメモリからの読み出し時におけるランダムアクセスを利用して、前記入力画像内の画素群に関する並べ替えを実行する処理であり、前記第２の並べ替え処理は、前記第２のメモリへの書き込み時におけるランダムアクセスあるいは前記第２のメモリからの読み出し時におけるランダムアクセスを利用して、前記第１の並べ替え処理後の画像内の画素群に関する並べ替えを実行する処理であり、前記第１のメモリと前記第２のメモリとは互いに異なる種類のメモリであり、前記第１のメモリと前記第２のメモリとのうちの一方のメモリは、他方のメモリよりも高速にランダムアクセスを行うことが可能なメモリであり、前記一方のメモリのメモリ容量は、前記他方のメモリのメモリ容量よりも少なく、前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの一方の並べ替え処理は、前記入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理であり、前記第１の並べ替え処理と前記第２の並べ替え処理とのうちの他方の並べ替え処理は、前記複数のブロック画像の相互間における画素列の並べ替え処理であり、前記一方の並べ替え処理は、前記一方のメモリによるランダムアクセスを伴う並べ替え処理であることを特徴とする。
【発明の効果】
【００４３】
請求項１から請求項２５に記載の発明によれば、一方の並べ替え処理におけるランダムアクセスが比較的高速な一方のメモリを用いて実行されるので、並べ替え処理を比較的高速に実行することが可能である。また、比較的高価な一方のメモリのメモリ容量は、他方のメモリのメモリ容量よりも少なくて済むので、コストの増大を抑制することが可能である。
【図面の簡単な説明】
【００４４】
【図１】ＭＦＰ（画像処理装置）の外観を示す図である。
【図２】ＭＦＰの機能ブロックを示す図である。
【図３】画像読取部（スキャナ部）の詳細構成を示す図である。
【図４】画像の補正動作を示す概念図である。
【図５】プラテンガラス上に原稿が載置されている様子を示す図である。
【図６】補正前の入力画像（斜行画像）を簡略化して示す図である。
【図７】第１実施形態の概要を示す図である。
【図８】第１実施形態に係る並べ替え動作に関する説明図である。
【図９】ＳＲＡＭへの書き込み領域を示す概念図である。
【図１０】撮像部からの各ライン画素列に対する処理を示す図である。
【図１１】撮像部からの各ライン画素列に対する処理を示す図である。
【図１２】撮像部からの各ライン画素列に対する処理を示す図である。
【図１３】撮像部からの各ライン画素列に対する処理を示す図である。
【図１４】撮像部からの各ライン画素列に対する処理を示す図である。
【図１５】撮像部からの各ライン画素列に対する処理を示す図である。
【図１６】撮像部からの各ライン画素列に対する処理を示す図である。
【図１７】撮像部からの各ライン画素列に対する処理を示す図である。
【図１８】撮像部からの各ライン画素列に対する処理を示す図である。
【図１９】撮像部からの各ライン画素列に対する処理を示す図である。
【図２０】変形例に係る入力画像を示す図である。
【図２１】変形例に係る入力画像に対する処理を示す図である。
【図２２】第２実施形態の概要を示す図である。
【図２３】第２実施形態に係る並べ替え動作に関する説明図である。
【図２４】各ライン画素列に対する処理を示す図である。
【図２５】各ライン画素列に対する処理を示す図である。
【図２６】各ライン画素列に対する処理を示す図である。
【図２７】各ライン画素列に対する処理を示す図である。
【図２８】各ライン画素列に対する処理を示す図である。
【図２９】各ライン画素列に対する処理を示す図である。
【図３０】各ライン画素列に対する処理を示す図である。
【図３１】各ライン画素列に対する処理を示す図である。
【図３２】各ライン画素列に対する処理を示す図である。
【図３３】第３実施形態の概要を示す図である。
【図３４】第３実施形態に係る並べ替え動作に関する説明図である。
【図３５】第４実施形態の概要を示す図である。
【図３６】第４実施形態に係る並べ替え動作に関する説明図である。
【図３７】第５実施形態の概要を示す図である。
【図３８】第５実施形態に係る並べ替え動作に関する説明図である。
【図３９】各ライン画素列に対する処理を示す図である。
【図４０】各ライン画素列に対する処理を示す図である。
【図４１】各ライン画素列に対する処理を示す図である。
【図４２】各ライン画素列に対する処理を示す図である。
【図４３】各ライン画素列に対する処理を示す図である。
【図４４】各ライン画素列に対する処理を示す図である。
【図４５】各ライン画素列に対する処理を示す図である。
【図４６】各ライン画素列に対する処理を示す図である。
【図４７】各ライン画素列に対する処理を示す図である。
【図４８】第６実施形態の概要を示す図である。
【図４９】第６実施形態に係る並べ替え動作に関する説明図である。
【図５０】各ライン画素列に対する処理を示す図である。
【図５１】各ライン画素列に対する処理を示す図である。
【図５２】各ライン画素列に対する処理を示す図である。
【図５３】各ライン画素列に対する処理を示す図である。
【図５４】各ライン画素列に対する処理を示す図である。
【図５５】各ライン画素列に対する処理を示す図である。
【図５６】各ライン画素列に対する処理を示す図である。
【図５７】各ライン画素列に対する処理を示す図である。
【図５８】各ライン画素列に対する処理を示す図である。
【図５９】第７実施形態の概要を示す図である。
【図６０】第７実施形態に係る並べ替え動作に関する説明図である。
【図６１】第８実施形態の概要を示す図である。
【図６２】第８実施形態に係る並べ替え動作に関する説明図である。
【図６３】原稿台上に原稿が弛んだ状態で載置されている様子を示す図である。
【図６４】画像歪みを有するスキャン画像を示す図である。
【図６５】第９実施形態に係る並べ替え動作に関する説明図である。
【図６６】画像歪みを有する別のスキャン画像を示す図である。
【図６７】第１０実施形態に係る並べ替え動作に関する説明図である。
【図６８】各ライン画素列に対する処理を示す図である。
【図６９】各ライン画素列に対する処理を示す図である。
【図７０】各ライン画素列に対する処理を示す図である。
【図７１】各ライン画素列に対する処理を示す図である。
【図７２】各ライン画素列に対する処理を示す図である。
【図７３】各ライン画素列に対する処理を示す図である。
【図７４】各ライン画素列に対する処理を示す図である。
【図７５】変形例に係る別のスキャン画像を示す図である。
【発明を実施するための形態】
【００４５】
以下、本発明の実施形態を図面に基づいて説明する。
【００４６】
＜１．第１実施形態＞
＜１−１．構成＞
図１は、ＭＦＰ（画像処理装置）１０の外観を示す図であり、図２は、ＭＦＰ１０の機能ブロックを示す図である。ここでは、画像処理装置として、ＭＦＰ（マルチ・ファンクション・ペリフェラル（Multi-Functional Peripheral））を例示する。
【００４７】
ＭＦＰ１０は、スキャン機能、コピー機能、ファクシミリ機能およびボックス格納機能などを備える装置（複合機とも称する）である。具体的には、ＭＦＰ１０は、図２の機能ブロック図に示すように、画像読取部２、印刷出力部３、通信部４、格納部５、操作部６およびコントローラ（制御部）９等を備えており、これらの各部を複合的に動作させることによって、各種の機能を実現する。なお、ＭＦＰ１０は、画像形成装置あるいは画像読取装置などとも称される。
【００４８】
画像読取部２は、ＭＦＰ１０の所定の位置に載置された原稿を光学的に読み取って（すなわちスキャンして）、当該原稿の画像データ（原稿画像あるいはスキャン画像とも称する）を生成する処理部である。この画像読取部２は、スキャナ部であるとも称される。
【００４９】
印刷出力部３は、印刷対象に関するデータに基づいて紙などの各種の媒体に画像を印刷出力する出力部である。
【００５０】
通信部４は、公衆回線等を介したファクシミリ通信を行うことが可能な処理部である。また、通信部４は、各種のネットワーク通信（有線通信および無線通信）を行うことも可能である。
【００５１】
格納部５は、各種の半導体メモリ（ＲＯＭ、ＳＲＡＭ（Static Random Access Memory）５１（図４参照）、ＤＲＡＭ（Dynamic Random Access Memory ）５２（図４参照）およびその他の画像用メモリ等）、ならびにハードディスクドライブ（ＨＤＤ）等の記憶装置で構成される。
【００５２】
操作部６は、ＭＦＰ１０に対する操作入力を受け付ける操作入力部６ａと、各種情報の表示出力を行う表示部６ｂとを備えている。
【００５３】
このＭＦＰ１０においては、略板状の操作パネル部６ｃ（図１参照）が設けられている。また、操作パネル部６ｃは、その正面側にタッチパネル２５（図１参照）を有している。タッチパネル２５は、操作入力部６ａの一部としても機能するとともに、表示部６ｂの一部としても機能する。タッチパネル２５は、液晶表示パネルに各種センサ等が埋め込まれて構成され、各種情報を表示するとともに操作者からの各種の操作入力を受け付けることが可能である。
【００５４】
コントローラ（制御部）９は、ＭＦＰ１０に内蔵され、ＭＦＰ１０を統括的に制御する制御装置である。コントローラ９は、ＣＰＵおよび各種の半導体メモリ（ＲＡＭおよびＲＯＭ）等を備えるコンピュータシステムとして構成される。コントローラ９は、ＣＰＵにおいて、ＲＯＭ（例えば、ＥＥＰＲＯＭ（登録商標））内に格納されている所定のソフトウエアプログラム（以下、単にプログラムとも称する）を実行することによって、各種の処理部を実現する。なお、当該プログラム（詳細にはプログラムモジュール群）は、ＵＳＢメモリなどの可搬性の記録媒体に記録され、当該記録媒体を介してＭＦＰ１０にインストールされてもよい。あるいは、当該プログラムは、通信ネットワークを経由してダウンロードされ、ＭＦＰ１０にインストールされるようにしてもよい。
【００５５】
具体的には、図２に示すように、コントローラ９は、当該プログラムの実行により、通信制御部１１と入力制御部１２と表示制御部１３と検出部１５と補正部１６とを含む各種の処理部を実現する。
【００５６】
通信制御部１１は、他の装置（携帯端末７０等）との間の通信動作を通信部４等と協働して制御する処理部である。通信制御部１１は、各種データの送信動作を制御する送信制御部と各種データの受信動作を制御する受信制御部とを有する。
【００５７】
入力制御部１２は、操作入力部６ａ（タッチパネル２５等）に対する操作入力動作を制御する制御部である。たとえば、入力制御部１２は、タッチパネル２５に表示された操作画面に対する操作入力を受け付ける動作を制御する。
【００５８】
表示制御部１３は、表示部６ｂ（タッチパネル２５等）についての表示制御を行う処理部である。たとえば、表示制御部１３は、ＭＦＰ１０を操作するための操作画面等をタッチパネル２５に表示させる。
【００５９】
検出部１５は、原稿の斜行角度等を検出する処理部である。
【００６０】
補正部１６は、互いに異なる種類のメモリ（ここではＳＲＡＭ５１とＤＲＡＭ５２との２種類のメモリ）を用いて、２種類の並べ替え処理を含む補正処理を入力画像に対して実行する処理部である。
【００６１】
＜１−２．スキャナ部の詳細構成＞
図３は、画像読取部（スキャナ部）２の詳細構成を示す図である。なお、図３等においては、ＸＹＺ直交座標系を用いて方向等を適宜示している。
【００６２】
図３に示されるように、スキャナ部２は、読取ユニット２１０を有している。
【００６３】
読取ユニット２１０は、ここでは縮小光学系型の読取部として構成される。読取ユニット２１０は、光源２１１とミラー２１２（２１２ａ，２１２ｂ，２１２ｃ）とレンズ（結像光学系）２１４と撮像部（イメージセンサ（撮像素子））２１５とを有している。読取ユニット２１０の各要素は、いずれも、透明なプラテンガラス２４４（原稿の載置面）の下側（内部側）に設けられている。光源２１１から上方の原稿に向けて照射（出射）された光がプラテンガラス２４４を透過して当該原稿で反射され、反射された光がイメージセンサ２１５に到達することによって、原稿の画像が取得される。
【００６４】
また、光源２１１は、複数の発光素子２１１Ｅ（不図示）を有しており、当該複数の発光素子（複数の部分光源）２１１Ｅは、主走査方向（Ｘ方向）に一次元状（直線状）に配列される発光素子列である。換言すれば、光源２１１は、主走査方向に伸延される直線状の光源である。複数の発光素子２１１Ｅは、たとえば数十個のＬＥＤ（発光ダイオード）で構成される。また、複数の発光素子２１１Ｅは、互いに独立して点灯可能である。
【００６５】
また、イメージセンサ２１５としては、複数の受光素子（画素）が主走査方向（Ｘ方向）に一次元状（直線状）に配列されたリニアイメージセンサ（ここでは、ＣＣＤラインセンサ）が用いられる。換言すれば、イメージセンサ２１５は、主走査方向に配列された複数の画素を有する光電変換素子である。当該光電変換素子によって、光源２１１から原稿９０に向かって出射され原稿９０で反射された反射光を画像信号に変換することによって、原稿９０の主走査方向における直線状の画像である「ライン画像」（並べ替え処理（後述）前のライン画像（元のライン画像））が取得される。
【００６６】
ここでは、イメージセンサ２１５は、主走査方向に配列された多数（たとえば７２００個）の受光素子列を有しており、プラテンガラス２４４上に配置された原稿９０の主走査方向における所定長さのライン画像を取得する。
【００６７】
このＭＦＰ１０は、原稿台（詳細にはプラテンガラス２４４）上に原稿を載置した状態において、片面コピーを実行することなどが可能である。具体的には、一旦、操作者が原稿カバー２３１をＭＦＰ１０の本体のプラテンガラス２４４から上側に退避させた状態で原稿をプラテンガラス２４４上に載置する。そして、操作者が再び原稿カバー２３１を元の位置に戻すことによって、原稿カバー２３１とプラテンガラス２４４との間に原稿が挟持される。その後、スキャン動作が実行される。スキャン動作においては、読取ユニット２１０の可動部２２０ａ（後述）が、副走査方向（Ｙ方向）において原稿の一方端から他方端へと移動しつつ各副走査位置でのライン画像（Ｘ方向ライン画像）をそれぞれ取得することによって、プラテンガラス２４４上に載置された原稿の２次元画像が読み取られる。
【００６８】
読取ユニット２１０の光源２１１は、プラテンガラス２４４の下側に配置され、上方に向けて照明光を出射し、プラテンガラス２４４（原稿台）に載置された原稿のスキャン対象面（下側の面）を下方より照射する。光源２１１からの光は、プラテンガラス２４４を透過し、原稿９０のスキャン対象面で反射される。そして、当該反射光に係る光像は、ミラー２１２ａ，２１２ｂ，２１２ｃでさらに反射され、レンズ２１４を通過して縮小された後に、イメージセンサ２１５で受光される。イメージセンサ２１５は、用紙の幅方向（主走査方向）におけるライン画像を一度に取得する。これにより、原稿９０の或る副走査方向位置（Ｙ）での直線状の画像（ライン画像）が取得される。
【００６９】
また、読取ユニット２１０は、副走査方向（Ｙ方向）に移動可能な２つの可動部２２０ａ，２２０ｂ（可動部２２０と総称する）を有して構成されている。可動部２２０ａには、光源２１１およびミラー２１２ａが設けられており、可動部２２０ｂには、ミラー２１２ｂ，２１２ｃが設けられている。可動部（スライド部あるいはスライダとも称する）２２０ａ，２２０ｂが副走査方向（Ｙ方向）に移動することに伴って、プラテンガラス２４４上に載置された原稿９０の各副走査方向位置（Ｙ）での直線状の画像（ライン画像）がそれぞれ取得される。可動部２２０ａ，２２０ｂは、スライダ駆動部２２３（モータおよびギアなどを有する駆動機構）により駆動される。なお、可動部２２０ａ，２２０ｂの移動の際には、可動部２２０ｂが可動部２２０ａの移動量の半分の距離を移動することによって、原稿からの反射光の各反射位置からイメージセンサ２１５までの光路長が一定に維持される。
【００７０】
このように、読取ユニット２１０の移動に伴って、副走査方向における各走査位置（各Ｙ位置）を変更しつつ、各Ｙ位置でのライン画像（直線状の画像）が取得される動作が繰り返されることによって、原稿のスキャン対象面に関する２次元の画像が取得される。換言すれば、原稿全体の画像（原稿の情報）が取得される。
【００７１】
＜１−３．動作概要＞
図４は、画像（斜行画像）の補正動作を示す概念図である。
【００７２】
図４に示すように、画像読取部２の撮像部２１５によって撮像された画像３１０がＳＲＡＭ５１およびＤＲＡＭ５２を用いて補正された後、画像読取部２における後段処理部（後段の処理部）２５０に出力される。
【００７３】
この実施形態においては、入力画像３１０は、斜行状態の画像（正規の状態ではなく斜行した状態の画像）であり、上述の補正処理によって斜行状態の画像が変形された正規の画像が後段処理部２５０に出力される。そして、斜行状態が補正され且つ後段の処理が施された画像３２０が後段処理部２５０から出力される。
【００７４】
また、ＭＦＰ１０には、上述のように、ＳＲＡＭ５１とＤＲＡＭ５２とを含む画像メモリが設けられている。なお、ＳＲＡＭ５１およびＤＲＡＭ５２は、斜行補正等を行うためのメモリ（補正処理用メモリ（一時記憶用メモリ））であり、いずれも、１ページ分の画像を格納するためのメモリ容量よりも小さな容量を有する。
【００７５】
また特に、ＳＲＡＭ５１のメモリ容量は、ＤＲＡＭ５２のメモリ容量よりも少ない。ＳＲＡＭ５１は、比較的少数のＮ本のライン画像格納するためのメモリ容量を有する。たとえば、ＤＲＡＭ５２は、２００本のライン画像を格納するためのメモリ容量（２００ライン分のメモリ容量）を有するのに対して、ＳＲＡＭ５１は、３本のライン画像を格納するためのメモリ容量（３ライン分のメモリ容量）を有する。具体的には、ＳＲＡＭ５１は、比較的少数のＮ本（ただし、Ｎは２以上の自然数）のラインメモリで構成されている。ここで各ライン画像は、主走査方向（Ｘ方向）において直線状に配置された画素群（１次元の画素群）で構成される画像である。
【００７６】
また、ＳＲＡＭ５１とＤＲＡＭ５２とのうち、ＳＲＡＭ５１は、ＤＲＡＭ５２よりも高速にランダムアクセスを行うことが可能である。
【００７７】
上述の補正部１６は、これらのメモリ５１，５２を利用して、第１の並べ替え処理Ｐ１と第２の並べ替え処理Ｐ２とを含む補正処理を入力画像に対して実行する。第１の並べ替え処理Ｐ１と第２の並べ替え処理Ｐ２とはこの順序で実行される。換言すれば、第１段階の並べ替え処理Ｐ１と第２段階の並べ替え処理Ｐ２との２段階の補正処理が実行される。
【００７８】
ここで、第１の並べ替え処理（第１の補正処理とも称する）Ｐ１は、第１のメモリＭ１への書き込み時におけるランダムアクセス、あるいは第１のメモリＭ１からの読み出し時におけるランダムアクセスを利用して、入力画像内の画素群に関する並べ替えを実行する処理である。
【００７９】
また、第２の並べ替え処理（第２の補正処理とも称する）Ｐ２は、第２のメモリＭ２への書き込み時におけるランダムアクセス、あるいは第２のメモリＭ２からの読み出し時におけるランダムアクセスを利用して、第１の並べ替え処理Ｐ１後の画像内の画素群に関する並べ替えを実行する処理である。
【００８０】
第１の並べ替え処理Ｐ１と第２の並べ替え処理Ｐ２とのうちの一方の並べ替え処理は、入力画像に基づいて生成される複数のブロック画像Ｂｉ（後述）のそれぞれの内部における画素群に関する並べ替え処理である。当該一方の並べ替え処理は、「ブロック内並べ替え処理」とも称される。「ブロック内並べ替え処理」は、ここではＳＲＡＭ５１を用いて実行される。「ブロック内並べ替え処理」においては、各ブロック画像内の比較的細かな並べ替え処理が行われる。
【００８１】
第１の並べ替え処理Ｐ１と第２の並べ替え処理Ｐ２とのうちの他方の並べ替え処理は、複数のブロック画像Ｂｉ（後述）の相互間における画素列の並べ替え処理である。当該他方の並べ替え処理は、「ブロック相互間並べ替え処理」とも称される。「ブロック相互間並べ替え処理」は、複数のブロック画像Ｂｉ内の画素列（各ブロック画像の全幅（Ｘ方向長さ）に亘って連続する画素列等）をブロック画像単位で並べ替える処理であるとも表現される。また、「ブロック相互間並べ替え処理」は、それぞれの所属ブロック画像内ではそれぞれ直線状に配置された画素列である複数のブロック内直線状画素列（複数の直列化画素列）（後述）であって複数のブロック画像Ｂの相互間においては非直線状に配置されていた複数のブロック内直線状画素列を、複数のブロック画像Ｂの相互間において直線状に配列させる並べ替え処理である、とも表現される。「ブロック相互間並べ替え処理」は、ここではＤＲＡＭ５２を用いて実行される。「ブロック相互間並べ替え処理」においては、ブロック画像単位での比較的大まかな並べ替え処理が行われる。
【００８２】
この実施形態では、入力画像内の画素群に関する「第１の並べ替え処理」Ｐ１として「ブロック内並べ替え処理」が実行され、第１の並べ替え処理後の画像内の画素群に関する「第２の並べ替え処理」Ｐ２として「ブロック相互間並べ替え処理」が実行される。端的に言えば、先にＳＲＡＭ５１が利用されて「ブロック内並べ替え処理」が実行され、次にＤＲＡＭ５２が利用されて「ブロック相互間並べ替え処理」が実行される。より詳細には、「第１の並べ替え処理」Ｐ１を実行するための第１のメモリとして、ＳＲＡＭ５１が利用され、「第２の並べ替え処理」Ｐ２を実行するための第２のメモリであって当該２の並べ替え処理後の画像を後続の処理用に出力するための第２のメモリとして、ＤＲＡＭ５２が利用される。
【００８３】
また、この第１実施形態では、後述するように（図７および図８参照）、実質的にＳＲＡＭ５１からの読み出し時（リード時）に第１の並べ替え処理Ｐ１（且つ「ブロック内並べ替え処理」）が実質的に実行される。また、実質的にＤＲＡＭ５２への書き込み時（ライト時）に第２の並べ替え処理Ｐ２（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。端的に言えば、第１実施形態では、ＳＲＡＭリード時補正且つＤＲＡＭライト時補正が（この順序で）行われる。なお、図７および図８は、第１実施形態の動作を示す概念図である。図７は、図４を簡略化して示す図であり、図８は、並べ替え動作に関する説明図である。
【００８４】
このような態様について、以下では詳細に説明する。
【００８５】
＜１−４．補正前の状態＞
図４に示すように、補正前の画像３１０は、斜行状態を有している。本実施形態の斜行補正によれば、補正前の画像における各斜行ラインが、それぞれ、所定の基準方向（Ｘ方向等）に対して平行に配置される。たとえば、補正前画像内の斜行ラインＥ１（主走査方向（Ｘ方向）に対して角度θ斜行しているライン）は、当該斜行補正によって新ラインＦ１（主走査方向（Ｘ方向）に平行なライン）へと変更される。なお、斜行ラインＥｉは、入力画像の複数のＸ方向ラインに亘って階段状に配置された複数の部分画素列（各Ｘ方向ラインの一部分においてＸ方向に連続する画素列）で構成される斜行ラインであるとも表現される。
【００８６】
図５は、略Ａ３サイズのプラテンガラス２４４上にＡ４サイズの原稿が載置されている様子を示す図である。
【００８７】
略Ａ３サイズ（Ａ３サイズよりも若干大きなサイズ）のプラテンガラス２４４は、その主走査方向（Ｘ方向）の長さがその副走査方向（Ｙ方向）の長さよりも短くなるように設置されている。そして、Ａ４サイズの原稿は、大まかにはその長辺が主走査方向（Ｘ方向）に沿うように配置されているものの、詳細には、当該原稿は、その長辺が主走査方向（Ｘ方向）に対して角度θずれて配置されている。
【００８８】
このような載置状態でスキャン動作が行われることによって、図４および図６のような画像（補正前の画像（斜行状態の画像））３１０が生成される。
【００８９】
図６は、補正前の画像（入力画像）３１０を簡略化して示す図である。図６においては、斜行の幅が９ライン分である場合が示されている。
【００９０】
上述のように斜行ラインＥ１の斜行角度θが１．５度（ｄｅｇ）である場合には、斜行の幅（Ｙ方向の幅）は１８０ライン分程度であるので、斜行ラインＥ１は、比較的多数のＸ方向ライン（具体的には、１８０本のＸ方向ラインＬ１〜Ｌ１８０）に分かれて階段状に存在する。ただし、ここでは、説明の簡略化のため、斜行ラインＥ１が比較的少数のＸ方向ライン（具体的には、９つのＸ方向ラインＬ１〜Ｌ９）に跨がって斜行している状況（換言すれば、斜行角度が非常に小さい状況）を想定する。
【００９１】
図６に示す場合、たとえば、斜行ラインＥ１は、斜行角度ゼロ（θ＝０）のラインと同様に、Ｘ方向における７２００個の画素によって構成される。ただし、７２００個の画素は、Ｙ方向において異なる９つのＸ方向ラインＬ１〜Ｌ９に分離されて存在する。当該斜行ラインＥ１を構成する画素群は、補正前の画像においては階段状に配置される。より詳細には、斜行ラインＥ１を構成する画素群は、Ｘ方向の画素群（たとえば７２００個の画素群）を９つに区分した各区分範囲（区分区間とも称する）Ｃ１〜Ｃ９に分かれて配置されている。各区分範囲Ｃ１〜Ｃ９は、それぞれ、たとえばＸ方向にて連続する８００個（＝７２００／９）の画素群（部分画素列とも称される）で構成される。換言すれば、斜行ラインＥ１は、複数の区分範囲Ｃ１〜Ｃ９に対応する複数の部分画素列で構成されており、各部分画素列は、それぞれ、Ｘ方向に沿って配置される８００個の連続画素群（部分画素列）を有している。また、複数の区分範囲Ｃ１〜Ｃ９の連続画素群（それぞれ８００個の画素群）は、そのＹ方向位置が徐々に変更された各対応Ｘ方向ラインＬ１〜Ｌ９上にそれぞれ存在する。このように、斜行ラインＥ１は、９本のＸ方向ラインＬ１〜Ｌ９に分かれて階段状に存在する。
【００９２】
なお、上述のように斜行ラインＥ１の斜行角度θが１．５度（ｄｅｇ）である場合には、斜行ラインＥ１は、比較的多数のライン（具体的には、１８０本のＸ方向ラインＬ１〜Ｌ１８０）に分かれて階段状に存在する。また、斜行ラインＥ１は、複数の区分範囲Ｃ１〜Ｃ１８０のそれぞれにおいて、４０個（＝７２００／１８０）の連続画素で構成される画素群（部分画素列）を有する。このように、斜行ラインの区分数（分割数）および各区分領域（部分画素列）の長さは、斜行角度等に応じて変化する。
【００９３】
図４および図６等に示されるように、本実施形態の斜行補正（スキュー補正）によれば、斜行ラインＥ１がＸ方向ラインＦ１へと変換される。詳細には、異なるＹ方向位置を有する複数のＸ方向ラインに跨がって配置された画素群（斜行ラインＥ１）が、単一のＸ方向ライン上にて連続的に配置された画素群（新ラインＦ１）へと変換される。
【００９４】
＜１−５．ブロック画像＞
本実施形態に係る補正処理においては、入力画像に基づいて（概念的に）生成された複数のブロック画像Ｂｉが利用される。具体的には、入力画像を（概念的に）複数のブロックに区分することによって、複数のブロック画像Ｂｉが生成される。
【００９５】
また、各ブロック画像Ｂｉは、各変形ライン（斜行ライン等）Ｅｉごとに（概念的に）生成される。各変形ラインＥｉに関する複数のブロック画像は、各変形ラインＥｉ上の階段状部分（ここでは、右に行くにつれて比較的上側に位置する階段状の部分（増加部分とも称する））（複数の部分画素列Ｄ）を所定のＹ方向位置のＮラインごとに区分するように生成される。たとえば、変形ラインＥ１に関しては、図８に示すような複数のブロック画像Ｂ１，Ｂ２，Ｂ３が（概念的に）形成される。
【００９６】
各ブロック画像Ｂｉは、Ｙ方向（縦方向）において、Ｎ本（ＳＲＡＭ５１のライン数Ｎと同じ本数）のライン分の長さ（Ｎ本のラインの幅に相当する長さ）を有している。各ブロック画像ＢｉのＹ方向の長さは、入力画像のＹ方向の長さよりも短い。また、各ブロック画像Ｂｉは、Ｘ方向において、１本のラインに関する全ての区分範囲ＣのうちのＱ個の区分範囲Ｃ（部分画素列）の合計値の長さを有している。詳細には、各ブロック画像Ｂｉは、Ｘ方向において、複数の区分範囲Ｃのうち、斜行ラインに対応する部分画素列であって異なるＮ本のラインに跨がる部分画素列に対応するＱ個の区分範囲Ｃの長さの合計値の長さを有する。端的に言えば、各ブロック画像Ｂｉは、Ｑ×Ｎの部分画素列で構成される。ここでは、各ブロック画像Ｂｉは、Ｙ方向に３本（Ｎ＝３）のライン分の長さを有し且つＸ方向に３つの区分範囲Ｃｉ（部分画素列）の合計長を有する。すなわち、各ブロック画像Ｂｉは、３×３の部分画素列で構成されている。
【００９７】
たとえば、図８に示すように、３つのブロック画像Ｂ１〜Ｂ３は、Ｙ方向において、それぞれ３本（Ｎ本）のＸ方向ラインに相当する大きさ（高さ）を有する。また、当該３つのブロック画像Ｂ１〜Ｂ３のＹ方向位置は互いに異なっている。たとえば、ブロック画像Ｂ１は、入力画像のＸ方向ラインＬ１〜Ｌ３に対応するＹ方向位置に存在し、ブロック画像Ｂ２は、入力画像のＸ方向ラインＬ４〜Ｌ６に対応するＹ方向位置に存在し、ブロック画像Ｂ３は、入力画像のＸ方向ラインＬ７〜Ｌ９に対応するＹ方向位置に存在する。なお、３つのブロック画像Ｂ１〜Ｂ３のＸ方向位置も互いに異なっている。たとえば、ブロック画像Ｂ１は、入力画像の区分範囲Ｃ１〜Ｃ３に対応するＸ方向位置に存在し、ブロック画像Ｂ２は、入力画像の区分範囲Ｃ４〜Ｃ６に対応するＸ方向位置に存在し、ブロック画像Ｂ３は、入力画像の区分範囲Ｃ７〜Ｃ９に対応するＸ方向位置に存在する。
【００９８】
また、（斜行ラインＥ１用の）各ブロック画像Ｂｉにおいては、それぞれ、斜行ラインＥ１上の複数の部分画素列（ここでは３つの部分画素列）が含まれている。たとえば、ブロック画像Ｂ１には、入力画像内の最初の３本のＸ方向ラインＬ１〜Ｌ３に分離して配置されている３つの部分画素列Ｄ１１，Ｄ２２，Ｄ３３が含まれている。また、ブロック画像Ｂ２には、入力画像において次の３本のＸ方向ラインＬ４〜Ｌ６に分離して配置されている３つの部分画素列Ｄ４４，Ｄ５５，Ｄ６６が含まれている。さらに、ブロック画像Ｂ３には、入力画像において更に次の３本のＸ方向ラインＬ７〜Ｌ９に分離して配置されている３つの部分画素列Ｄ７７，Ｄ８８，Ｄ９９が含まれている。
【００９９】
このように、（斜行ラインＥ１用の）複数のブロック画像Ｂ１〜Ｂ３は、入力画像内の斜行ラインを構成する複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７，Ｄ６６，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１であって当該入力画像の複数のＸ方向ライン（Ｘ方向に伸びるライン）Ｌ１〜Ｌ９に亘って階段状に配置された複数の部分画素列を含むように生成される。
【０１００】
なお、各変形ラインＥｉ上の階段状部分（非直線状部分）は、ここでは、「増加部分」のみで構成されているが、これに限定されず、右に行くにつれて比較的下側に位置する階段状の部分（減少部分とも称する）のみで構成されてもよい。また、当該階段状部分は、増加部分と減少部分との双方を含んでいてもよい。後述するように、特に変形ラインＥ１が増加部分と減少部分との双方を含む場合等においては、ブロック画像Ｂｉは、（Ｎ×Ｎ）の部分画素列で構成されるとは限らない。換言すれば、ブロック画像Ｂｉのサイズに関する値Ｑは、値Ｎとは非同一の値であってもよい。
【０１０１】
また、ここでは、９本のＸ方向ラインＬ１〜Ｌ９に分かれて階段状に存在する斜行ラインＥ１に関して、３個（＝９／Ｎ＝９／３）のブロック画像Ｂ１〜Ｂ３が形成されている。ただし、当該ブロック画像の数は、斜行角度等にも応じて変更される。上述のように斜行ラインＥ１の斜行角度θが１．５度（ｄｅｇ）である場合には、斜行ラインＥ１は、１８０本のＸ方向ラインＬ１〜Ｌ１８０に分かれて階段状に存在する。その場合、６０個（＝１８０／Ｎ＝１８０／３）のブロック画像Ｂ１〜Ｂ６０が形成される。
【０１０２】
＜１−６．補正動作＞
＜斜行角度検出＞
つぎに、補正動作の詳細について説明する。図５に示すような原稿載置状態でスタートボタンが操作者によって押下されると、ＭＦＰ１０は、まず斜行角度の検出動作を実行する。
【０１０３】
具体的には、画像読取部２は、主走査方向（Ｘ方向）に伸びるライン画像を取得する動作を、副走査方向（Ｙ方向）の移動（読取ユニット２１０の移動）を伴いつつ繰り返し実行することによって、斜行角度検出用画像３０３（図５参照）を生成する。読取ユニット２１０のＹ方向の移動範囲（移動距離）は、斜行角度を検出するための比較的小さな範囲（距離）（たとえば１ｃｍ（センチメートル）程度）でよい。換言すれば、斜行角度検出用画像３０３の副走査方向（Ｙ方向）の長さは、原稿の副走査方向の長さよりも短くてもよい。
【０１０４】
検出部１５は、斜行角度検出用画像３０３に基づいて、原稿の境界線（エッジ）を検出し、当該エッジの主走査方向に対する斜行角度θを検出する。より詳細には、当該エッジの複数の点の（Ｘ，Ｙ）座標が求められ、当該複数の点の座標に基づいて斜行角度θが検出される。
【０１０５】
＜スキャン動作開始＞
そして、画像読取部２は、スキャン画像の取得動作を実行するため、読取ユニット２１０を副走査方向（Ｙ方向）の原点位置（基準位置）に一旦戻す。その後、画像読取部２は、スキャン動作を開始する。これによって、撮像部２１５は、副走査方向（Ｙ方向）の原点位置から、各Ｙ方向位置におけるライン画像（Ｘ方向に伸びる１次元状の画素列（ライン画素列とも称する）で構成される画像）を順次に撮像して取得する。
【０１０６】
撮像部２１５によって撮影された各ライン画像（各ライン画素列Ｌ１，Ｌ２，...）は、１ラインごとにＳＲＡＭ５１に順次に出力される。この第１実施形態では、撮像部２１５によって撮影された各ライン画像（ライン画素列）は、そのままの順序でＳＲＡＭ５１内の連続アドレスに（同一ライン上に）（１本のライン画像として）書き込まれる（図１０〜図１８等参照）。なお、図１０〜図１８は、撮像部２１５からの各ライン画素列がＳＲＡＭ５１およびＳＲＡＭ５１にてアクセスされる様子を概念的に示す図である。各図の上側においては、ＳＲＡＭ５１に関するアクセスが示されており、各図の下側においては、ＤＲＡＭ５２に関するアクセスが示されている。
【０１０７】
＜第１ライン〜第２ライン＞
たとえば、図１０の上側に示すように、撮像部２１５からの第１のライン画素列Ｌ１は、ＳＲＡＭ５１上においてそのままの順序で、ＳＲＡＭ５１内において、一のＸ方向ラインに対応する連続アドレスに（同一ラインＨ１上に）書き込まれる（図１０の太い破線参照）。
【０１０８】
また、図１１の上側に示すように、撮像部２１５からの第２のライン画素列Ｌ２は、ＳＲＡＭ５１上においてそのままの順序で、ＳＲＡＭ５１内において、一のＸ方向ラインに対応する連続アドレスに書き込まれる（図１１の太い破線参照）。この際、第１のライン画素列Ｌ１は、一つ上に（Ｙ方向に１行）ずらされ、第２のライン画素列Ｌ２は、ＳＲＡＭ５１内において、第１のライン画素列Ｌ１とは異なるＹ方向位置のＸ方向ライン（Ｈ２）に書き込まれる。
【０１０９】
＜第３ライン＞
さらに、図１２の上側に示すように、撮像部２１５からの第３のライン画素列Ｌ３は、ＳＲＡＭ５１上においてそのままの順序で、ＳＲＡＭ５１内において、一のＸ方向ラインに対応する連続アドレスに書き込まれる（図１２の太い破線参照）。この際、第１および第２のライン画素列Ｌ１，Ｌ２は、それぞれ一つ上に（Ｙ方向に１行）ずらされ、第３のライン画素列Ｌ３は、ＳＲＡＭ５１内において、第１および第２のライン画素列Ｌ１，Ｌ２とは異なるＹ方向位置のＸ方向ライン（Ｈ３）に書き込まれる。なお、図９に示すように、第１実施形態では、撮像部２１５からの複数のライン画素列Ｌの各取得時点において、（比喩的に表現すれば）入力画像（図６参照）のうちＳＲＡＭ５１と同じサイズ（Ｎ本のライン幅に相当するＹ方向サイズ）の窓３５０によって囲まれる領域が、ＳＲＡＭ５１に書き込まれている。
【０１１０】
このようにして、撮像部２１５によって撮影された複数のライン画像（ライン画素列）は、順次に、ＳＲＡＭ５１に書き込まれる。この際、各ライン画素列Ｌｉは、そのままの順序でＳＲＡＭ５１内の連続アドレスに（１本のライン画像として）書き込まれる。換言すれば、入力画像の各ライン画素列は、並べ替えることなくＳＲＡＭ５１内の各対応ライン上に書き込まれる。
【０１１１】
そして、撮像部２１５からのライン画像数（ライン数）がＳＲＡＭ５１のライン数Ｎ（ここでは、Ｎ＝３）に到達すると、ＳＲＡＭ５１からの読み出しが開始される。なお、以後、撮像部２１５からの各ラインに関するＳＲＡＭ５１への完了後のタイミングでＳＲＡＭ５１からの読み出しが行われる。ただし、変形ラインＥ１に関する読み出し処理は、Ｎ本のラインの読み出しが完了するごとに行われる。
【０１１２】
第１実施形態においては、当該読み出しの際に、ＳＲＡＭ５１に関するランダムアクセスを利用した並べ替え処理（ブロック内並べ替え処理）が実質的に実行される。
【０１１３】
さて、第１実施形態の「ブロック内並べ替え処理」は、ＳＲＡＭ５１からの当該読み出し時に行われる。
【０１１４】
図１２においては、撮像部２１５からの３本のライン画像がＳＲＡＭ５１に書き込まれた状態（図１２の上側参照）において、（変形ラインＥ１用の）ブロック画像Ｂ１内の複数の画素群（複数の部分画素列）の並べ替え処理が実行される。
【０１１５】
具体的には、ブロック画像Ｂ１内の複数の部分画素列（３つの区分範囲Ｃ１〜Ｃ３に対応する３つの部分画素列（図１２にてクロスハッチングで示される３つの部分領域）Ｄ３３（Ｃ３，Ｌ３），Ｄ２２（Ｃ２，Ｌ２），Ｄ１１（Ｃ１，Ｌ１））が連続して読み出される（図１２の上側の太い実線矢印参照）。ここにおいて、部分画素列Ｄｉｊ（Ｃｉ，Ｌｊ）は、元の画像内のラインＬｊ上にて区分範囲Ｃｉ内で連続する部分画素列であり、Ｄ（Ｃｉ，Ｌｊ）あるいは単にＤｉｊとも表記する。なお、各部分画素列Ｄｉｊは、その所属ブロック画像内にてＸ方向に連続する一部の画素列であるとも表現される。
【０１１６】
当該３つの部分画素列Ｄ３３，Ｄ２２，Ｄ１１は、ＳＲＡＭ５１にて互いに連続しないアドレスに（互いに異なるＸ方向ラインに）配置された部分画素列である。
【０１１７】
ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３３，Ｄ２２，Ｄ１１が連続的に読み出されることによって、３つの部分画素列Ｄ３３，Ｄ２２，Ｄ１１が直列化されて配列される。
【０１１８】
このような並べ替え処理によって、（斜行ラインＥ１用の）ブロック画像Ｂ１内の複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が連続するように複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１を並べ替えた直列化画素列（ブロック内直線状画素列とも称される）が生成される。なお、当該直列化画素列は、ブロック画像Ｂ１内の複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が直線状に配列されるように複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１を並べ替えた画素列である、とも表現される。
【０１１９】
なお、後述するように、当該直列化画素列（複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１）は、元の画像における第１の斜行ラインＥ１（補正後の第１のＸ方向ラインＦ１）に関する補正処理に利用される。
【０１２０】
そして、図１２の下側に示すように、複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１は、ＤＲＡＭ５２における連続アドレスに（同一ライン上に）書き込まれる（図１２の下側の太い実線矢印参照）。具体的には、複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１は、ＤＲＡＭ５２内において、第１のラインＲ１の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる。
【０１２１】
ここにおいて、ＳＲＡＭ５１は、ランダムアクセス（非連続アドレスへのアクセス（ここでは非連続アドレスからの読み出し処理））をＤＲＡＭ５２よりも高速に行うことが可能であるので、ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」は、非常に短時間で完了され得る。
【０１２２】
＜第４ライン＞
つぎに、図１３の上側に示すように、撮像部２１５からの第４のライン画素列Ｌ４は、ＳＲＡＭ５１上においてそのままの順序で、ＳＲＡＭ５１内において、一のＸ方向ラインに対応する連続アドレスに書き込まれる。この際、第２および第３のライン画素列Ｌ２，Ｌ３は、それぞれ一つ上に（Ｙ方向に１行）ずらされ、第４のライン画素列Ｌ４は、ＳＲＡＭ５１内において、第２および第３のライン画素列Ｌ２，Ｌ３とは異なるＹ方向位置のＸ方向ラインＨ１に書き込まれる。なお、ここでは便宜上、各ライン画素列（Ｌ１，Ｌ２，Ｌ３等）は一つ上に（Ｙ方向に１行）ずらされる、との表現を用いているが、実際にずらされることを要さず、理論的に（概念的に）ずらされればよい。たとえば、撮像部２１５によって順次に取得される多数のライン画像に対して、ＳＲＡＭ５１における３本のラインメモリ（Ｈ１，Ｈ２，Ｈ３）が循環的に利用されるようにすればよい。
【０１２３】
第４のライン画素列Ｌ４がＳＲＡＭ５１に書き込まれた後、ＳＲＡＭ５１からの読み出し時に、「ブロック内並べ替え処理」が行われる。
【０１２４】
図１３においては、（斜行ラインＥ２用の）ブロック画像Ｂ１内の複数の部分画素列（３つの区分範囲Ｃ１〜Ｃ３に対応する３つの部分画素列（図１３にて右上がり斜線ハッチングで示される３つの部分領域）Ｄ３４（Ｃ３，Ｌ４），Ｄ２３（Ｃ２，Ｌ３），Ｄ１２（Ｃ１，Ｌ２））が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３４，Ｄ２３，Ｄ１２が連続的に読み出されることによって、３つの部分画素列Ｄ３４，Ｄ２３，Ｄ１２が直列化されて（直線状に）配列される。このような並べ替え処理によって、ブロック画像Ｂ１内の複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２に関する直列化画素列が生成される。
【０１２５】
なお、当該直列化画素列（複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２）は、後述するように、元の画像における第２の斜行ラインＥ２（補正後の第２のＸ方向ラインＦ２）に関する補正処理に利用される。
【０１２６】
また、図１３の下側に示すように、当該複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２は、ＤＲＡＭ５２における連続アドレスに書き込まれる（図１３の下側の太い実線矢印参照）。具体的には、複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２は、ＤＲＡＭ５２内において、第２のラインＲ２の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる。
【０１２７】
＜第５ライン＞
つぎに、図１４の上側に示すように、撮像部２１５からの第５のライン画素列Ｌ５は、ＳＲＡＭ５１上においてそのままの順序で、ＳＲＡＭ５１内において、一のＸ方向ラインに対応する連続アドレスに書き込まれる。この際、第３および第４のライン画素列Ｌ３，Ｌ４は、それぞれ一つ上に（Ｙ方向に１行）ずらされ、第５のライン画素列Ｌ５は、ＳＲＡＭ５１内において、第３および第４のライン画素列Ｌ３，Ｌ４とは異なるＹ方向位置のＸ方向ラインＨ２に書き込まれる。
【０１２８】
そして、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が（実質的に）行われる。
【０１２９】
図１４においては、（斜行ラインＥ３用の）ブロック画像Ｂ１内の複数の部分画素列（３つの区分範囲Ｃ１〜Ｃ３に対応する３つの部分画素列（図１４にて右下がり斜線ハッチングで示される３つの部分領域）Ｄ３５（Ｃ３，Ｌ５），Ｄ２４（Ｃ２，Ｌ４），Ｄ１３（Ｃ１，Ｌ３））が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３５，Ｄ２４，Ｄ１３が連続的に読み出されることによって、３つの部分画素列Ｄ３５，Ｄ２４，Ｄ１３が直列化されて配列される。このような並べ替え処理によって、ブロック画像Ｂ１内の複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３に関する直列化画素列が生成される。
【０１３０】
また、図１４の下側に示すように、当該複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３は、ＤＲＡＭ５２における連続アドレスに書き込まれる（図１４の下側の太い実線矢印参照）。具体的には、複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３は、ＤＲＡＭ５２内において、第３のラインＲ３の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる。
【０１３１】
なお、当該直列化画素列（複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３）は、後述するように、元の画像における第３の斜行ラインＥ３（補正後の第３のＸ方向ラインＦ３）に関する補正処理に利用される。
【０１３２】
＜第６ライン＞
つぎに、図１５の上側に示すように、撮像部２１５からの第６のライン画素列Ｌ６は、ＳＲＡＭ５１上においてそのままの順序で、ＳＲＡＭ５１内において、一のＸ方向ラインに対応する連続アドレスに書き込まれる（図１５の太い破線参照）。この際、第４および第５のライン画素列Ｌ４，Ｌ５は、それぞれ一つ上に（Ｙ方向に１行）ずらされ、第６のライン画素列Ｌ６は、ＳＲＡＭ５１内において、第４および第５のライン画素列Ｌ４，Ｌ５とは異なるＹ方向位置のＸ方向ラインＨ３に書き込まれる。
【０１３３】
そして、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が行われる。
【０１３４】
図１５においては、（斜行ラインＥ４用の）ブロック画像Ｂ１内の複数の部分画素列（３つの区分範囲Ｃ１〜Ｃ３に対応する３つの部分画素列（図１５にて右上り破線ハッチングで示される３つの部分領域）Ｄ３６（Ｃ３，Ｌ６），Ｄ２５（Ｃ２，Ｌ５），Ｄ１４（Ｃ１，Ｌ４））が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３６，Ｄ２５，Ｄ１４が連続的に読み出されることによって、３つの部分画素列Ｄ３６，Ｄ２５，Ｄ１４が直列化されて配列される。このような並べ替え処理によって、ブロック画像Ｂ１内の複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４に関する直列化画素列が生成される。
【０１３５】
さらに、図１５においては、（斜行ラインＥ１用の）ブロック画像Ｂ２内の複数の部分画素列（３つの区分範囲Ｃ４〜Ｃ６に対応する３つの部分画素列（図１５にてクロスハッチングで示される３つの部分領域）Ｄ６６（Ｃ６，Ｌ６），Ｄ５５（Ｃ５，Ｌ５），Ｄ４４（Ｃ４，Ｌ４））が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ６６，Ｄ５５，Ｄ４４が連続的に読み出されることによって、３つの部分画素列Ｄ６６，Ｄ５５，Ｄ４４が直列化されて配列される。このような並べ替え処理によって、ブロック画像Ｂ２内の複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４に関する直列化画素列が生成される。
【０１３６】
また、図１５の下側に示すように、（斜行ラインＥ４用の）ブロック画像Ｂ１内の複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４は、ＤＲＡＭ５２における連続アドレスに書き込まれる（図１５の下側（且つ右側）の太い実線矢印参照）。具体的には、複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４は、ＤＲＡＭ５２内において、第４のラインＲ４の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる。
【０１３７】
さらに、図１５の下側に示すように、（斜行ラインＥ１用の）ブロック画像Ｂ２内の複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４は、ＤＲＡＭ５２における連続アドレスに書き込まれる（図１５の下側（且つ左側）の太い実線矢印参照）。具体的には、複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４は、ＤＲＡＭ５２内において、第１のラインＲ１の３つの区分範囲Ｃ６，Ｃ５，Ｃ４に対応する連続アドレス領域に書き込まれる。
【０１３８】
なお、後述するように、（斜行ラインＥ４用の）ブロック画像Ｂ１に関する直列化画素列（複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４）は、元の画像における第４の斜行ラインＥ４（補正後の第４のＸ方向ラインＦ４）に関する補正処理に利用される。また、（斜行ラインＥ１用の）ブロック画像Ｂ２に関する直列化画素列（複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４）は、元の画像における第１の斜行ラインＥ１（補正後の第１のＸ方向ラインＦ１）に関する補正処理に利用される。
【０１３９】
＜第７ライン〜第８ライン＞
その後、図１６に示すように、撮像部２１５からの第７のライン画素列Ｌ７のＳＲＡＭ５１への書き込み処理が行われる（図１６の太い破線参照）。
【０１４０】
そして、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が行われる。具体的には、（斜行ラインＥ５用の）ブロック画像Ｂ１内の３つの部分画素列Ｄ３７（Ｃ３，Ｌ７），Ｄ２６（Ｃ２，Ｌ６），Ｄ１５（Ｃ１，Ｌ５）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３７，Ｄ２６，Ｄ１５が連続的に読み出されることによって、３つの部分画素列Ｄ３７，Ｄ２６，Ｄ１５が直列化されて配列された直列化画素列が生成される。また、（斜行ラインＥ２用の）ブロック画像Ｂ２内の３つの部分画素列Ｄ６７（Ｃ６，Ｌ７），Ｄ５６（Ｃ５，Ｌ６），Ｄ４５（Ｃ４，Ｌ５）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ６７，Ｄ５６，Ｄ４５が連続的に読み出されることによって、３つの部分画素列Ｄ６７，Ｄ５６，Ｄ４５が直列化されて配列された直列化画素列が生成される。
【０１４１】
また、図１６の下側に示すように、（斜行ラインＥ５用の）ブロック画像Ｂ１内の複数の部分画素列Ｄ３７，Ｄ２６，Ｄ１５は、ＤＲＡＭ５２内において、第５のラインＲ５の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる（図１６の下側の太い実線矢印参照）。さらに、図１６の下側に示すように、（斜行ラインＥ２用の）ブロック画像Ｂ２内の複数の部分画素列Ｄ６７，Ｄ５６，Ｄ４５は、ＤＲＡＭ５２内において、第２のラインＲ２の３つの区分範囲Ｃ６，Ｃ５，Ｃ４に対応する連続アドレス領域に書き込まれる（図１６の下側の太い実線矢印参照）。
【０１４２】
なお、後述するように、（斜行ラインＥ５用の）ブロック画像Ｂ１に関する直列化画素列（複数の部分画素列Ｄ３７，Ｄ２６，Ｄ１５）は、元の画像における第５の斜行ラインＥ５（補正後の第５のＸ方向ラインＦ５）に関する補正処理に利用され、（斜行ラインＥ２用の）ブロック画像Ｂ２に関する直列化画素列（複数の部分画素列Ｄ６７，Ｄ５６，Ｄ４５）は、元の画像における第２の斜行ラインＥ２（補正後の第２のＸ方向ラインＦ２）に関する補正処理に利用される。
【０１４３】
その後、図１７に示すように、撮像部２１５からの第８のライン画素列Ｌ８のＳＲＡＭ５１への書き込み処理が行われる（図１７の太い破線参照）。
【０１４４】
そして、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が行われる。具体的には、（斜行ラインＥ６用の）ブロック画像Ｂ１内の３つの部分画素列Ｄ３８（Ｃ３，Ｌ８），Ｄ２７（Ｃ２，Ｌ７），Ｄ１６（Ｃ１，Ｌ６）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３８，Ｄ２７，Ｄ１６が連続的に読み出されることによって、３つの部分画素列Ｄ３８，Ｄ２７，Ｄ１６が直列化されて配列された直列化画素列が生成される。また、（斜行ラインＥ３用の）ブロック画像Ｂ２内の３つの部分画素列Ｄ６８（Ｃ６，Ｌ８），Ｄ５７（Ｃ５，Ｌ７），Ｄ４６（Ｃ４，Ｌ６）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ６８，Ｄ５７，Ｄ４６が連続的に読み出されることによって、３つの部分画素列Ｄ６８，Ｄ５７，Ｄ４６が直列化されて配列された直列化画素列が生成される。
【０１４５】
また、図１７の下側に示すように、（斜行ラインＥ６用の）ブロック画像Ｂ１内の複数の部分画素列Ｄ３８，Ｄ２７，Ｄ１６は、ＤＲＡＭ５２内において、第６のラインＲ６の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる。さらに、図１７の下側に示すように、（斜行ラインＥ３用の）ブロック画像Ｂ２内の複数の部分画素列Ｄ６８，Ｄ５７，Ｄ４６は、ＤＲＡＭ５２内において、第３のラインＲ３の３つの区分範囲Ｃ６，Ｃ５，Ｃ４に対応する連続アドレス領域に書き込まれる。
【０１４６】
なお、後述するように、（斜行ラインＥ６用の）ブロック画像Ｂ１に関する直列化画素列（複数の部分画素列Ｄ３８，Ｄ２７，Ｄ１６）は、元の画像における第６の斜行ラインＥ６（補正後の第６のＸ方向ラインＦ６）に関する補正処理に利用され、（斜行ラインＥ３用の）ブロック画像Ｂ２に関する直列化画素列（複数の部分画素列Ｄ６８，Ｄ５７，Ｄ４６）は、元の画像における第３の斜行ラインＥ３（補正後の第３のＸ方向ラインＦ３）に関する補正処理に利用される。
【０１４７】
＜第９ライン＞
その後、図１８に示すように、撮像部２１５からの第９のライン画素列Ｌ９のＳＲＡＭ５１への書き込み処理が行われる（図１８の太い破線参照）。
【０１４８】
そして、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が行われる。
【０１４９】
具体的には、（斜行ラインＥ７用の）ブロック画像Ｂ１内の３つの部分画素列Ｄ３９（Ｃ３，Ｌ９），Ｄ２８（Ｃ２，Ｌ８），Ｄ１７（Ｃ１，Ｌ７）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ３９，Ｄ２８，Ｄ１７が連続的に読み出されることによって、３つの部分画素列Ｄ３９，Ｄ２８，Ｄ１７が直列化されて配列された直列化画素列が生成される。
【０１５０】
また、（斜行ラインＥ４用の）ブロック画像Ｂ２内の３つの部分画素列Ｄ６９（Ｃ６，Ｌ９），Ｄ５８（Ｃ５，Ｌ８），Ｄ４７（Ｃ４，Ｌ７）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ６９，Ｄ５８，Ｄ４７が連続的に読み出されることによって、３つの部分画素列Ｄ６９，Ｄ５８，Ｄ４７が直列化されて配列された直列化画素列が生成される。
【０１５１】
さらに、（斜行ラインＥ１用の）ブロック画像Ｂ３内の３つの部分画素列Ｄ９９（Ｃ９，Ｌ９），Ｄ８８（Ｃ８，Ｌ８），Ｄ７７（Ｃ７，Ｌ７）が連続して読み出される。ＳＲＡＭ５１にて互いに連続しないアドレスに配置された３つの部分画素列Ｄ９９，Ｄ８８，Ｄ７７が連続的に読み出されることによって、３つの部分画素列Ｄ９９，Ｄ８８，Ｄ７７が直列化されて配列された直列化画素列が生成される。
【０１５２】
このような「ブロック内並べ替え処理」によって、各ブロック画像Ｂ１，Ｂ２，Ｂ３に関して、当該各ブロック画像Ｂｉ内にて階段状に配置されていた複数の部分画素列が直線状に配列され、直列化画素列が生成される。
【０１５３】
そして、変形ラインＥ１が存在する９本のラインＬ１〜Ｌ９の読み出し処理が行われると、「ブロック相互間並べ替え処理」が開始される。「ブロック相互間並べ替え処理」はＤＲＡＭ５２を利用して行われる。具体的には、ＤＲＡＭ５２への書き込み時において、ＤＲＡＭ５２に関するランダムアクセスを利用して、ＳＲＡＭ５１からのリード時におけるブロック内並べ替え処理（上述）において生成されていた各直列化画素列が各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込まれる。
【０１５４】
具体的には、図１８の下側に示すように、（斜行ラインＥ１用の）ブロック画像Ｂ３内の直列化画素列（複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７）は、ＤＲＡＭ５２内において、第１のラインＲ１の３つの区分範囲Ｃ９，Ｃ８，Ｃ７に対応する連続アドレス領域に書き込まれる。当該直列化画素列（Ｄ３９，Ｄ２８，Ｄ１７）は、斜行ラインＥ１に関する「ブロック相互間並べ替え処理」に利用される。ＤＲＡＭ５２の第１のＸ方向ラインＲ１（且つ区分範囲Ｃ９，Ｃ８，Ｃ７）は、直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７）の目標位置である。
【０１５５】
また、（斜行ラインＥ７用の）ブロック画像Ｂ１内の直列化画素列（複数の部分画素列Ｄ３９，Ｄ２８，Ｄ１７）は、ＤＲＡＭ５２内において、第７のラインＲ７の３つの区分範囲Ｃ３，Ｃ２，Ｃ１に対応する連続アドレス領域に書き込まれる。ただし、当該直列化画素列（Ｄ３９，Ｄ２８，Ｄ１７）は、斜行ラインＥ７に関する「ブロック相互間並べ替え処理」に利用される。ＤＲＡＭ５２の第７のＸ方向ラインＲ７（且つ区分範囲Ｃ３，Ｃ２，Ｃ１）は、斜行ラインＥ７に関する「ブロック相互間並べ替え処理」における、直列化画素列（Ｄ３９，Ｄ２８，Ｄ１７）の目標位置である。
【０１５６】
さらに、（斜行ラインＥ４用の）ブロック画像Ｂ２内の直列化画素列（複数の部分画素列Ｄ６９，Ｄ５８，Ｄ４７）は、ＤＲＡＭ５２内において、第４のラインＲ４の３つの区分範囲Ｃ６，Ｃ５，Ｃ４に対応する連続アドレス領域に書き込まれる。ただし、当該直列化画素列（Ｄ６９，Ｄ５８，Ｄ４７）は、斜行ラインＥ４に関する「ブロック相互間並べ替え処理」に利用される。ＤＲＡＭ５２の第４のＸ方向ラインＲ４（且つ区分範囲Ｃ６，Ｃ５，Ｃ４）は、斜行ラインＥ４に関する「ブロック相互間並べ替え処理」における、直列化画素列（Ｄ６９，Ｄ５８，Ｄ４７）の目標位置である。
【０１５７】
ここにおいて、元の画像における部分画素列Ｄ３３，Ｄ２２，Ｄ１１は、撮像部２１５による第３ラインＬ３入力時におけるＳＲＡＭ５１を利用したブロック内並べ替え処理（図１２参照）によって直列化されて、ＤＲＡＭ５２の第１ラインＲ１の区分範囲Ｃ３〜Ｃ１に亘って既に書き込まれている。すなわち、当該部分画素列Ｄ３３，Ｄ２２，Ｄ１１は、ラインＬ３入力時のブロック画像Ｂ１内の並べ替え処理（図１２参照）によって直列化されている。このように直列化画素列（Ｄ３３，Ｄ２２，Ｄ１１）は、その目標位置、具体的には、ＤＲＡＭ５２の第１のＸ方向ラインＲ１（且つ区分範囲Ｃ３，Ｃ２，Ｃ１）に既に書き込まれている。
【０１５８】
また、元の画像における部分画素列Ｄ６６，Ｄ５５，Ｄ４４は、撮像部２１５による第６ラインＬ６入力時におけるＳＲＡＭ５１を利用したブロック内並べ替え処理（図１５参照）によって直列化されて、ＤＲＡＭ５２の第１ラインＲ１の区分範囲Ｃ６〜Ｃ４に亘って既に書き込まれている。すなわち、当該部分画素列Ｄ６６，Ｄ５５，Ｄ４４は、ラインＬ６入力時のブロック画像Ｂ２内の並べ替え処理（図１５参照）によって直列化されている。このように直列化画素列（Ｄ６６，Ｄ５５，Ｄ４４）は、その目標位置、具体的には、ＤＲＡＭ５２の第１のＸ方向ラインＲ１（且つ区分範囲Ｃ６，Ｃ５，Ｃ４）に既に書き込まれている。
【０１５９】
したがって、ＳＲＡＭ５１からのリード時におけるブロック内並べ替え処理（上述）において生成されていた各直列化画素列が各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込まれている。具体的には、３つの直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が、それぞれ、ＤＲＡＭ５２内の各目標位置に書き込まれている。また、当該目標位置は、ＤＲＡＭ５２内の同一ラインＲ１上の位置である。換言すれば、ブロック画像単位でのランダムアクセスを利用することによって、補正前の画像における斜行ラインＥ１に関する当該３つの直列化画素列が、ＤＲＡＭ５２において単一のＸ方向ラインＲ１上にて連続的に配置されている。より詳細には、元の画像における斜行ラインＥ１を構成する複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７，Ｄ６６，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１が直列化されてＤＲＡＭ５２の第１ラインＲ１の区分範囲Ｃ９〜Ｃ１に書き込まれている。このように、「ブロック相互間並べ替え処理」が実質的にＤＲＡＭ５２への書き込み時に行われる。
【０１６０】
そして、ＤＲＡＭ５２からの読み出し時には、ＤＲＡＭ５２内の同一ライン上に配置されている複数の直列化画素列が当該同一ライン上から（詳細には、同一ライン上の連続アドレスから）読み出される。具体的には、ＤＲＡＭ５２における第１のＸ方向ラインＲ１の連続画素が全区分範囲Ｃ９〜Ｃ１に亘って読み出される。換言すれば、当該ＤＲＡＭ５２の第１ラインＲ１の区分範囲Ｃ９〜Ｃ１内の連続画素群が（ランダムアクセスではなく）そのまま読み出される。これによって、複数の直列化画素列が直線状に配列されるように複数の直列化画素列を並べ替えた１本のライン画像（補正後のライン画像）が生成される。すなわち、補正前の画像における斜行ラインＥ１が、単一のＸ方向ラインＲ１上にて連続的に配置された画素群（新ラインＦ１）へと変換された状態で読み出される。
【０１６１】
これによれば、斜行ラインＥ１のライン画像（複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７，Ｄ６６，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１で構成される）が、ＤＲＡＭ５２内の同一ライン上に配置されているので、当該ライン画像がＤＲＡＭ５２から（ランダムアクセスを要することなく）高速に読み出されて後段処理部２５０に対して出力され得る。
【０１６２】
なお、「ブロック相互間並べ替え処理」は、それぞれの所属ブロック画像内ではそれぞれ直線状に配置された画素列である複数のブロック内直線状画素列（複数の直列化画素列）であって複数のブロック画像Ｂの相互間においては非直線状に配置された複数のブロック内直線状画素列を直線状に配列させる並べ替え処理である、とも表現される。
【０１６３】
その後、図１９に示すように、さらに第２のラインＦ２も順次出力される。
【０１６４】
具体的には、撮像部２１５からの第１０のライン画素列Ｌ１０のＳＲＡＭ５１への書き込み処理が行われる。
【０１６５】
そして、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が行われる。具体的には、ＳＲＡＭ５１の各ブロック画像Ｂｉ内において非同一ライン（互いに異なるＹ方向位置）に配置されていた複数の部分画素列（互いに連続していない複数の部分画素列）が、ＳＲＡＭ５１のランダムアクセスを利用して、連続して読み出されることによって、「ブロック内並べ替え処理」が行われる。
【０１６６】
また、ＤＲＡＭ５２への書き込み時に「ブロック相互間並べ替え処理」が行われる。具体的には、ＳＲＡＭ５１から読み出されたブロック単位の連続画素列が、ＤＲＡＭ５２において同一ライン上の各目標位置に書き込まれる。
【０１６７】
その後、書き込み処理時の「ブロック相互間並べ替え処理」によってＤＲＡＭ５２の１本のＸ方向ラインＲ２の全区分範囲Ｃにおいて連続的に書き込まれていた複数の部分画素列（図１９の右上がり斜線ハッチング部分参照）が、そのまま順次に読み出されることによって、第２のラインＦ２が出力される。当該複数の部分画素列は、Ｄ（Ｃ９，Ｌ１０），Ｄ８９（Ｃ８，Ｌ９），Ｄ７８（Ｃ７，Ｌ８），Ｄ６７（Ｃ６，Ｌ７），Ｄ５６（Ｃ５，Ｌ６），Ｄ４５（Ｃ４，Ｌ５），Ｄ３４（Ｃ３，Ｌ４），Ｄ２３（Ｃ２，Ｌ３），Ｄ１２（Ｃ１，Ｌ２）である。
【０１６８】
このようにして、補正前の画像における斜行ラインＥ２が、単一のＸ方向ラインＲ２上にて連続的に配置された画素群（新ラインＦ２）へと変換された状態で読み出される。
【０１６９】
さらに、第３のラインＦ３以後の各ライン画像も順次に出力される。
【０１７０】
＜小括＞
以上のような態様によれば、ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」とＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」とが組み合わせられることによって補正前画像内の斜行ラインＥ１に対する斜行補正が行われ、新ラインＦ１（主走査方向（Ｘ方向）に平行なライン）が生成される。
【０１７１】
詳細には、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３（図１２、図１５および図１８参照）のそれぞれに関するブロック内並べ替え処理が、ＳＲＡＭ５１を利用して行われる。当該ブロック内並べ替え処理に関しては、ＳＲＡＭ５１からの読み出し時に主な処理が行われる。具体的には、各ブロック画像Ｂｉ内にて互いに異なるラインに配置される複数の部分画素列Ｄがランダムアクセスを利用して順次に読み出されることによって、各ブロック画像Ｂｉ内の当該複数の部分画素列が直線状に並ぶように当該複数の部分画素列が並べ替えられ、直列化画素列が生成される。たとえば、ブロック画像Ｂ３内にて互いに異なるラインＬ９，Ｌ８，Ｌ７に配置された複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７がランダムアクセスを利用して順次に読み出されることによって、ブロック画像Ｂ３内の当該複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が直線状に配列されて直列化画素列が生成される（図８および図１８参照）。他のブロック画像Ｂ２，Ｂ１についても同様である。これにより、複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４で構成される直列化画素列と複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１で構成される直列化画素列とが生成される。
【０１７２】
また、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３（図１２、図１５および図１８参照）の相互間に関する並べ替え処理（ブロック相互間並べ替え処理）（ブロック単位での並べ替え処理）が、ＤＲＡＭ５２を利用して行われる（図１８参照）。当該ブロック相互間並べ替え処理に関しては、ＤＲＡＭ５２への書き込み時に主な処理が行われる。具体的には、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３に関して、ブロック単位で（当該各ブロック内部で）並べ替えられて生成された複数の直列化画素列をさらに並べ替える処理がＤＲＡＭ５２を利用して行われる。より詳細には、ＳＲＡＭ５１を用いたブロック内並べ替え処理にて生成された各直列化画素列が、ＤＲＡＭ５２に関するランダムアクセスを利用して各直列化画素列の各目標位置（たとえばＤＲＡＭ５２内の同一ラインＲ１上）の対応アドレスに書き込まれる。そして、複数のブロック画像Ｂ１〜Ｂ３に関して異なるタイミングでＤＲＡＭ５２内の同一ライン上に配置されていた複数の直列化画素列が順次に読み出される。これによって、当該複数の直列化画素列が直線状に並べ替えられて配列された１本のライン画像Ｆ１が生成される。このようにして、斜行ラインＥ１に対する斜行補正が行われ、新ラインＦ１（斜行ラインＥ１の補正後のライン画像）が生成される。
【０１７３】
ここにおいて、ＳＲＡＭ５１のメモリ容量は、ＤＲＡＭ５２のメモリ容量よりも少ないので、コストの増大を抑制することが可能である。詳細には、Ｎライン（たとえば３ライン）画像分のメモリ容量を有するＳＲＡＭ５１とＭライン（たとえば２００ライン）画像分のメモリ容量を有するＤＲＡＭ５２とを設けることによれば、Ｍライン（２００ライン）画像分のメモリ容量を有するＳＲＡＭ５１を設ける場合よりも低コストで済む。より詳細には、ＳＲＡＭ５１のメモリ容量の分のメモリ容量を重複して余分に設けるとしても、全てのメモリ容量をＳＲＡＭ５１で準備する場合よりも、コストを抑制することが可能である。
【０１７４】
また、入力画像に基づいて生成される複数のブロック画像のそれぞれの内部における画素群に関する並べ替え処理（ブロック内並べ替え処理）は、ＳＲＡＭ５１によるランダムアクセスを伴って行われる。また、それに伴い、ＤＲＡＭ５２におけるランダムアクセス数は、「１／Ｎ」（Ｎ分の１）に低減される。たとえば、Ｎ＝３の場合には、ＤＲＡＭ５２におけるランダムアクセス数は、「１／３」に低減される。したがって、比較的高速に並べ替え処理（直列化処理）を実行することが可能である。
【０１７５】
より詳細には、図１８および図８等に示すように、１本の新ラインＦ１を出力するために、ＳＲＡＭ５１による９回のランダムアクセスが行われるものの、ＤＲＡＭ５２によるランダムアクセス回数は３回に抑制される。また、ＳＲＡＭ５１によるランダムアクセスは、ＤＲＡＭ５２によるランダムアクセスよりも非常に高速である。換言すれば、ブロック内並べ替えに関する比較的多数回のランダムアクセスが比較的高速なＳＲＡＭ５１によって行われ、比較的低速なＤＲＡＭ５２によるブロック相互間並べ替えにおけるランダムアクセスは、比較的少ない回数に抑制される。したがって、このような動作によれば、ＤＲＡＭ５２による９回のランダムアクセスが行われる場合（比較的低速なＤＲＡＭ５２によって比較的多数回のランダムアクセスが行われる場合）に比べて、高速な並べ替え処理（直列化処理）を実現することが可能である。
【０１７６】
また、このような効果は、斜行ラインＥ１の斜行角度θが比較的大きい場合に一層顕著である。たとえば、上述のように斜行ラインＥ１の斜行角度θが１．５度（ｄｅｇ）である場合には、斜行の幅は１８０ライン分程度であり、斜行ラインＥ１は、比較的多数のＸ方向ライン（具体的には、１８０本のＸ方向ラインＬ１〜Ｌ１８０）に分かれて階段状に存在する。そして、１本の新ラインＦ１を出力するために、ＳＲＡＭ５１による１８０回のランダムアクセスが行われるものの、ＤＲＡＭ５２によるランダムアクセス回数は６０回に抑制される。ＳＲＡＭ５１による１８０回のランダムアクセスとＤＲＡＭ５２による６０回のランダムアクセスとに要する時間は、ＤＲＡＭ５２による１８０回のランダムアクセスに要する時間よりも非常に短い。換言すれば、ＳＲＡＭ５１による１８０回のランダムアクセスに要する時間は、ＤＲＡＭ５２による１２０回のランダムアクセスに要する時間よりも非常に短い。
【０１７７】
なお、上記実施形態においては、図８に示すように、斜行ラインＥ１が９本のＸ方向ラインＬ１〜Ｌ９に分かれて階段状に存在する場合には、撮像部２１５からの９本のライン画素列が読み取られた時点で、第１の斜行ラインＥ１に対応する新ラインＦ１が出力されている。図２０に示すように、たとえば、斜行ラインＥ１が１２本のＸ方向ラインＬ１〜Ｌ１２に分かれて階段状に存在する場合には、撮像部２１５からの１２本のライン画素列が読み取られた時点で、第１の斜行ラインＥ１に対応する新ラインＦ１が出力される（図２１も参照）。同様に、斜行ラインＥ１が１８０本のＸ方向ラインＬ１〜Ｌ１８０に分かれて階段状に存在する場合には、撮像部２１５からの１８０本のライン画素列が読み取られた時点で、第１の斜行ラインＥ１に対応する新ラインＦ１が出力される。
【０１７８】
また、上記実施形態においては、Ｎ＝３の場合について例示しているが、これに限定されない。たとえば、ＳＲＡＭ５１のライン数Ｎは、２であってもよく、４以上（の自然数）であってもよい。ただし、ＳＲＡＭ５１のライン数Ｎが大きい程、高速な処理が実現される。たとえば、Ｎ＝６、且つ、θ＝１．５度（ｄｅｇ）の場合、１本の新ラインＦ１を出力するために、（上記実施形態と同様に）ＳＲＡＭ５１による１８０回のランダムアクセスが行われるものの、ＤＲＡＭ５２によるランダムアクセス回数は（６０回から）３０回にさらに抑制される。したがって、一層の高速化を図ることが可能である。
【０１７９】
また、上記実施形態においては、原稿をプラテンガラス２４４の上に載置してスキャン動作が行われる態様について例示しているが、これに限定されない。たとえば、ＡＤＦ（原稿自動送り装置（Auto Document Feeder））を用いて原稿を読み取る場合にも本発明を適用することが可能である。なお、他の実施形態に関しても同様の改変が可能である。
【０１８０】
＜２．第２実施形態＞
＜２−１．概要＞
第２実施形態は、第１実施形態の変形例である。以下では、第１実施形態との相違点を中心に説明する。
【０１８１】
上記第１実施形態では、ＳＲＡＭリード時補正且つＤＲＡＭライト時補正が行われている（図７および図８参照）が、本発明はこれに限定されない。
【０１８２】
この第２実施形態では、図２２に示されるように、ＳＲＡＭ５１への書き込み時（ライト時）に第１の並べ替え処理Ｐ１（且つ「ブロック内並べ替え処理」）が実質的に実行される。また、ＤＲＡＭ５２からの読み出し時（リード時）に第２の並べ替え処理Ｐ２（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。端的に言えば、第２実施形態では、ＳＲＡＭライト時補正且つＤＲＡＭリード時補正が（この順序で）行われる。
【０１８３】
より具体的には、上記第１実施形態では、ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」はＳＲＡＭ５１からのリード時に行われている（図８のＳＲＡＭ５１内の太い実線矢印参照）。これに対して、この第２実施形態においては、ＳＲＡＭ５１を利用した「ブロック相互間並べ替え処理」はＳＲＡＭ５１へのライト時に行われる（図２３のＳＲＡＭ５１内の破線矢印参照）。なお、図２３は、第２実施形態の動作を示す概念図である。
【０１８４】
また、上記第１実施形態では、ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」はＤＲＡＭ５２へのライト時に行われている（図８のＤＲＡＭ５２内の太い実線矢印参照）。これに対して、この第２実施形態においては、ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」はＤＲＡＭ５２からのリード時に行われる（図２３のＤＲＡＭ５２内の点線矢印参照）。
【０１８５】
＜２−２．動作詳細＞
第２実施形態では、斜行角度θの検出後に画像読取部２によるスキャン動作が開始されると、図１０〜図１８に代えて図２４〜図３２に示すような動作が行われる。
【０１８６】
上記第１実施形態では、撮像部２１５によって撮影された各ライン画像（各ライン画素列Ｌ１，Ｌ２，...）の全画素列が、そのままの順序でＳＲＡＭ５１内の連続アドレスに（１本のライン画像として）書き込まれている（図８のＳＲＡＭ５１内の破線矢印参照）。
【０１８７】
一方、第２実施形態では、撮像部２１５によって撮影された各ライン画像（各ライン画素列Ｌ１，Ｌ２，...）内の各部分画素列は、ＳＲＡＭ５１に関するランダムアクセスを利用して、当該各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込まれる。ＳＲＡＭ５１を利用した並べ替え処理では、各ブロック画像Ｂｉ内の各部分画素列が、当該各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込まれる（図２３のＳＲＡＭ５１内の破線矢印参照）。
【０１８８】
このような動作について以下では更に詳細に説明する。
【０１８９】
＜第１ライン〜第２ライン＞
たとえば、図２４に示すように、撮像部２１５からの第１のライン画素列Ｌ１（図２４の最上段の画素列参照）内の互いに異なる複数の部分画素列は、ＳＲＡＭ５１において、互いに連続しない位置（互い異なるライン）に書き込まれる（図２４の中央右側の太い破線参照）。
【０１９０】
より具体的には、（斜行ラインＥ１用の）ブロック画像Ｂ１に関して、第１のライン画素列Ｌ１のうちの区分範囲Ｃ１内の部分画素列Ｄ１１（Ｃ１，Ｌ１）は、ＳＲＡＭ５１の第３ラインＨ３の区分範囲Ｃ１に書き込まれる。なお、ＳＲＡＭ５１の第３ラインＨ３の区分範囲Ｃ１は、部分画素列Ｄ１１の目標位置である。また、部分画素列Ｄ２１（Ｃ２，Ｌ１）は、ＳＲＡＭ５１の第２ラインＨ２の区分範囲Ｃ２に書き込まれる。さらに、部分画素列Ｄ３１（Ｃ３，Ｌ１）は、ＳＲＡＭ５１の第１ラインＨ１の区分範囲Ｃ３に書き込まれる。
【０１９１】
このように、第１のライン画素列Ｌ１（図２４の最上段の画素列参照）内の互いに異なる複数の部分画素列Ｄ３１，Ｄ２１，Ｄ１１は、ＳＲＡＭ５１において、互いに連続しない位置に書き込まれる（図２４の太い破線参照）。詳細には、Ｘ方向のライン画素列Ｌ１内の各ブロック画像の複数の部分画素列Ｄは、ブロック画像ごとに斜行角度θを補正するように並べ替えられ、逆向きの角度θに沿って階段状（逆向きの階段状）に配置される。
【０１９２】
なお、部分画素列Ｄ９１，Ｄ８１，Ｄ７１、および部分画素列Ｄ６１，Ｄ５１，Ｄ４１に関しても同様の並べ替え動作が行われてもよい。
【０１９３】
同様に、図２５に示すように、撮像部２１５からの第２のライン画素列Ｌ２（図２５の最上段の画素列参照）内の互いに異なる複数の部分画素列Ｄ３２，Ｄ２２，Ｄ１２は、ＳＲＡＭ５１において、互いに連続しない位置に書き込まれる（図２５の太い破線参照）。
【０１９４】
この際、図２５に示されるように、ライン画素列Ｌ２に関する書き込み前に、ＳＲＡＭ５１内の各ラインＨｉは１つ上にずらされる。具体的には、最下段のラインＨ３は中段に移動し、中段のラインＨ２は最上段に移動する。なお、最上段のラインＨ１は、再び最下段の位置に戻る。このように、ＳＲＡＭ５１の各ラインは、循環的に利用される。
【０１９５】
そして、このようにして各ラインが概念的にずらされた後、図２４と同様の位置に、第２のライン画素列Ｌ２の複数の部分画素列のそれぞれが配置される（図２５参照）。
【０１９６】
＜第３ライン＞
同様に、図２６に示すように、撮像部２１５からの第３のライン画素列Ｌ３（図２６の最上段の画素列参照）内の互いに異なる複数の部分画素列Ｄ３３，Ｄ２３，Ｄ１３は、ＳＲＡＭ５１において、互いに連続しない位置に書き込まれる（図２６の太い破線参照）。この際、上述のように各ラインが概念的にずらされた後、図２４と同様にして、第３のライン画素列Ｌ３の複数の部分画素列のそれぞれが書き込まれる（図２６参照）。
【０１９７】
ここで、図２４〜図２６の動作（（斜行ラインＥ１用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）内での補正処理であって部分画素列Ｄ３３，Ｄ２２，Ｄ１１の直列化処理）について纏めて説明する。まず、図２４に示すように、ＳＲＡＭ５１に関するランダムアクセスを利用して、ライン画素列Ｌ１のブロック画像Ｂ１内の複数の部分画素列（Ｄ３１，Ｄ２１，Ｄ１１）が（当該複数の部分画素列の並べ替え処理後の）各目標位置の対応アドレスに書き込まれる。特に部分画素列Ｄ１１は、ラインＨ３内の区分範囲Ｃ１に書き込まれる（図２４参照）。そして、このような動作が別の複数のライン画素列Ｌ２，Ｌ３について繰り返される。具体的には、図２５に示すように、ライン画素列Ｌ２の複数の部分画素列（Ｄ３２，Ｄ２２，Ｄ１２）が各目標位置の対応アドレスに書き込まれる。特に部分画素列Ｄ２２は、ラインＨ３内の区分範囲Ｃ２に書き込まれる。また、図２６に示すように、ライン画素列Ｌ３の複数の部分画素列（Ｄ３３，Ｄ２３，Ｄ１３）が各目標位置の対応アドレスに書き込まれる。特に部分画素列Ｄ３３は、ラインＨ３内の区分範囲Ｃ３に書き込まれる。
【０１９８】
この結果、（斜行ラインＥ１用の）ブロック画像Ｂ１に関して、ライン画素列Ｌ３の部分画素列Ｄ３３とライン画素列Ｌ２の部分画素列Ｄ２２とライン画素列Ｌ１の部分画素列Ｄ１１とが、この順序でＳＲＡＭ５１内の同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１に亘って連続して配置される。換言すれば、互いに異なるライン画素列Ｌ１，Ｌ２，Ｌ３に存在していた互いに異なる複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が、ＳＲＡＭ５１内の同一ラインＨ３上にて互いに連続して配置されるように並べ替えられる。このようにして、ＳＲＡＭ５１に関するランダムアクセスを利用して、ブロック画像Ｂ１内の各部分画素列が当該各部分画素列の並べ替え処理後の各目標位置（同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１）の対応アドレスに書き込まれる。
【０１９９】
そして、当該ブロック画像Ｂ１に関する部分画素列であって互いに異なるタイミングで書き込まれていたこれらの部分画素列Ｄ３３，Ｄ２２，Ｄ１１（ＳＲＡＭ５１にて互いに連続して配置されている複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１）は、同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１から連続して読み出される。このようなＳＲＡＭ５１を利用したブロック内並べ替え処理によって、ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が連続するように当該複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１を並べ替えた直列化画素列が生成される。当該直列化画素列は、当該複数の部分画素列（Ｄ３３，Ｄ２２，Ｄ１１）が直線状に配列されるように並べ替えられた画素列である、とも表現される。
【０２００】
その後、ＳＲＡＭ５１から読み出された当該直列化画素列（複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１）は、ＤＲＡＭ５２の第１のラインＲ１の範囲Ｃ３〜Ｃ１に亘って連続的に書き込まれる。
【０２０１】
＜第４ライン〜第５ライン＞
同様に、図２７に示すように、撮像部２１５からの第４のライン画素列Ｌ４（図２７の最上段の画素列参照）内の互いに異なる複数の部分画素列Ｄ９４，Ｄ８４，Ｄ７４，Ｄ６４，Ｄ５４，Ｄ４４，Ｄ３４，Ｄ２４，Ｄ１４は、ＳＲＡＭ５１において、互いに連続しない各目標位置に書き込まれる（図２７の太い破線参照）。この際、上述のように各ラインが概念的にずらされた後、図２４と同様にして、第４のライン画素列Ｌ４の複数の部分画素列のそれぞれが書き込まれる（図２７参照）。
【０２０２】
この結果、（斜行ラインＥ２用の）ブロック画像Ｂ１に関して、ライン画素列Ｌ４の部分画素列Ｄ３４とライン画素列Ｌ３の部分画素列Ｄ２３とライン画素列Ｌ１の部分画素列Ｄ１２とが、この順序でＳＲＡＭ５１内の同一ラインＨ１の区分範囲Ｃ３，Ｃ２，Ｃ１に亘って連続して配置される。
【０２０３】
そして、互いに異なるタイミングで書き込まれていたこれらの部分画素列（ブロック画像Ｂ１に関する部分画素列）Ｄ３４，Ｄ２３，Ｄ１２は、同一ラインＨ１の区分範囲Ｃ３，Ｃ２，Ｃ１から連続して読み出される。このようなＳＲＡＭ５１を利用したブロック内並べ替え処理によって、（斜行ラインＥ２用の）ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２が連続するように当該複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２を並べ替えた直列化画素列が生成される。
【０２０４】
また、ＳＲＡＭ５１から読み出された当該直列化画素列（複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２）は、ＤＲＡＭ５２の第２のラインＲ２の範囲Ｃ３〜Ｃ１に亘って連続的に書き込まれる。
【０２０５】
このようにして、（斜行ラインＥ２用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）内での補正処理であって部分画素列Ｄ３４，Ｄ２３，Ｄ１２の直列化処理）が行われる。なお、当該直列化処理による当該直列化画素列（複数の部分画素列Ｄ３４，Ｄ２３，Ｄ１２）は、元の画像における第２の斜行ラインＥ２（補正後の第２のＸ方向ラインＦ２）に関する補正処理に利用される。
【０２０６】
同様に、図２８に示すように、撮像部２１５からの第５のライン画素列Ｌ５（図２８の最上段の画素列参照）内の互いに異なる複数の部分画素列Ｄ９５，Ｄ８５，Ｄ７５，Ｄ６５，Ｄ５５，Ｄ４５，Ｄ３５，Ｄ２５，Ｄ１５は、ＳＲＡＭ５１において、互いに連続しない各目標位置に書き込まれる（図２８の太い破線参照）。この際、上述のように各ラインが概念的にずらされた後、図２４と同様にして、第５のライン画素列Ｌ５の複数の部分画素列のそれぞれが書き込まれる（図２８参照）。
【０２０７】
この結果、（斜行ラインＥ３用の）ブロック画像Ｂ１に関して、ライン画素列Ｌ５の部分画素列Ｄ３５とライン画素列Ｌ４の部分画素列Ｄ２４とライン画素列Ｌ３の部分画素列Ｄ１３とが、この順序でＳＲＡＭ５１内の同一ラインＨ２の区分範囲Ｃ３，Ｃ２，Ｃ１に亘って連続して配置される。
【０２０８】
そして、互いに異なるタイミングで書き込まれたこれらの部分画素列Ｄ３５，Ｄ２４，Ｄ１３は、同一ラインＨ２の区分範囲Ｃ３，Ｃ２，Ｃ１から連続して読み出される。このようなＳＲＡＭ５１を利用したブロック内並べ替え処理によって、（斜行ラインＥ３用の）ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３が連続するように当該複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３を並べ替えた直列化画素列が生成される。
【０２０９】
また、ＳＲＡＭ５１から読み出された当該直列化画素列（複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３）は、ＤＲＡＭ５２の第３のラインＲ３の範囲Ｃ３〜Ｃ１に亘って連続的に書き込まれる。
【０２１０】
このようにして、（斜行ラインＥ３用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）内での補正処理であって部分画素列Ｄ３５，Ｄ２４，Ｄ１３の直列化処理）が行われる。なお、当該直列化処理による当該直列化画素列（複数の部分画素列Ｄ３５，Ｄ２４，Ｄ１３）は、元の画像における第３の斜行ラインＥ３（補正後の第３のＸ方向ラインＦ３）に関する補正処理に利用される。
【０２１１】
＜第６ライン＞
図２９に示すように、撮像部２１５からの第６のライン画素列Ｌ６（図２９の最上段の画素列参照）内の互いに異なる複数の部分画素列Ｄ９６，Ｄ８６，Ｄ７６，Ｄ６６，Ｄ５６，Ｄ４６，Ｄ３６，Ｄ２６，Ｄ１６は、ＳＲＡＭ５１において、互いに連続しない各目標位置に書き込まれる（図２９の太い破線参照）。この際、上述のように各ラインが概念的にずらされた後、図２４と同様にして、第６のライン画素列Ｌ６の複数の部分画素列のそれぞれが書き込まれる（図２９参照）。
【０２１２】
この結果、（斜行ラインＥ１用の）ブロック画像Ｂ２に関して、ライン画素列Ｌ６の部分画素列Ｄ６６とライン画素列Ｌ５の部分画素列Ｄ５５とライン画素列Ｌ４の部分画素列Ｄ４４とが、この順序でＳＲＡＭ５１内の同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１に亘って連続して配置される。そして、互いに異なるタイミングで書き込まれたこれらの部分画素列（ブロック画像Ｂ２に関する部分画素列）Ｄ６６，Ｄ５５，Ｄ４４は、同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１から連続して読み出される。このようなＳＲＡＭ５１を利用したブロック内並べ替え処理によって、ブロック画像Ｂ２内の当該複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４が連続するように当該複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４を並べ替えた直列化画素列が生成される。なお、当該直列化処理による当該直列化画素列（複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４）は、元の画像における第１の斜行ラインＥ１（補正後の第１のＸ方向ラインＦ１）に関する補正処理に利用される。
【０２１３】
また、（斜行ラインＥ４用の）ブロック画像Ｂ１に関して、ライン画素列Ｌ６の部分画素列Ｄ３６とライン画素列Ｌ５の部分画素列Ｄ２５とライン画素列Ｌ４の部分画素列Ｄ１４とが、この順序でＳＲＡＭ５１内の同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１に亘って連続して配置される。そして、互いに異なるタイミングで書き込まれたこれらの部分画素列Ｄ３６，Ｄ２５，Ｄ１４は、同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１から連続して読み出される。このようなＳＲＡＭ５１を利用したブロック内並べ替え処理によって、ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４が連続するように当該複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４を並べ替えた直列化画素列が生成される。なお、当該直列化処理による当該直列化画素列（複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４）は、元の画像における第４の斜行ラインＥ４（補正後の第４のＸ方向ラインＦ４）に関する補正処理に利用される。
【０２１４】
また、（斜行ラインＥ１用の）ブロック画像Ｂ２に関して生成された直列化画素列（複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４）と（斜行ラインＥ４用の）ブロック画像Ｂ１に関して生成された直列化画素列（複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４）とがＳＲＡＭ５１から読み出され、ＤＲＡＭ５２の同一ライン上にそのままの順序で連続的に書き込まれる。具体的には、複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４は、ＤＲＡＭ５２の第４のラインＲ４の範囲Ｃ６〜Ｃ４に亘って書き込まれ、複数の部分画素列Ｄ３６，Ｄ２５，Ｄ１４は、ＤＲＡＭ５２の第４のラインＲ４の範囲Ｃ３〜Ｃ１に亘って書き込まれる。なお、第４のラインＲ４の各区分範囲Ｃ６〜Ｃ４は、直列化画素列（複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４）の（並べ替え後の）目標位置である、とも表現される。
【０２１５】
＜第７ライン〜第８ライン＞
図３０に示すように、撮像部２１５からの第７のライン画素列Ｌ７（図３０の最上段参照）内の互いに異なる複数の部分画素列Ｄ９７，Ｄ８７，Ｄ７７，Ｄ６７，Ｄ５７，Ｄ４７，Ｄ３７，Ｄ２７，Ｄ１７に関しても同様の処理が行われる。
【０２１６】
この結果、（斜行ラインＥ５用の）ブロック画像Ｂ１内でのＳＲＡＭ５１を利用した並べ替え処理によって、当該ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３７，Ｄ２６，Ｄ１５を直列化した画素列（直列化画素列）が生成される。なお、当該直列化画素列（複数の部分画素列Ｄ３７，Ｄ２６，Ｄ１５）は、元の画像における第５の斜行ラインＥ５（補正後の第５のＸ方向ラインＦ５）に関する補正処理に利用される。
【０２１７】
また、（斜行ラインＥ２用の）ブロック画像Ｂ２内でのＳＲＡＭ５１を利用した並べ替え処理によって、当該ブロック画像Ｂ２内の当該複数の部分画素列Ｄ６７，Ｄ５６，Ｄ４５を直列化した画素列（直列化画素列）が生成される。なお、当該直列化画素列（複数の部分画素列Ｄ６７，Ｄ５６，Ｄ４５）は、元の画像における第２の斜行ラインＥ２（補正後の第２のＸ方向ラインＦ２）に関する補正処理に利用される。
【０２１８】
また、（斜行ラインＥ５用の）ブロック画像Ｂ１に関して生成された直列化画素列（複数の部分画素列Ｄ３７，Ｄ２６，Ｄ１５）は、ＳＲＡＭ５１から読み出され、ＤＲＡＭ５２の第５のラインＲ５の範囲Ｃ３〜Ｃ１に亘ってそのままの順序で連続的に書き込まれる。また、（斜行ラインＥ２用の）ブロック画像Ｂ２に関して生成された直列化画素列（複数の部分画素列Ｄ６７，Ｄ５６，Ｄ４５）は、ＳＲＡＭ５１から読み出され、ＤＲＡＭ５２の第５のラインＲ５の範囲Ｃ６〜Ｃ４に亘ってそのままの順序で連続的に書き込まれる。
【０２１９】
同様に、図３１に示すように、撮像部２１５からの第８のライン画素列Ｌ８（図３１の最上段参照）内の互いに異なる複数の部分画素列Ｄ９８，Ｄ８８，Ｄ７８，Ｄ６８，Ｄ５８，Ｄ４８，Ｄ３８，Ｄ２８，Ｄ１８に関しても同様の処理が行われる。
【０２２０】
この結果、（斜行ラインＥ６用の）ブロック画像Ｂ１内でのＳＲＡＭ５１を利用した並べ替え処理によって、ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３８，Ｄ２７，Ｄ１６を直列化した画素列（直列化画素列）が生成される。なお、当該直列化画素列（複数の部分画素列Ｄ３８，Ｄ２７，Ｄ１６）は、元の画像における第６の斜行ラインＥ６（補正後の第６のＸ方向ラインＦ６）に関する補正処理に利用される。
【０２２１】
また、（斜行ラインＥ３用の）ブロック画像Ｂ２内でのＳＲＡＭ５１を利用した並べ替え処理によって、ブロック画像Ｂ２内の当該複数の部分画素列Ｄ６８，Ｄ５７，Ｄ４６を直列化した画素列（直列化画素列）が生成される。なお、当該直列化画素列（複数の部分画素列Ｄ６８，Ｄ５７，Ｄ４６）は、元の画像における第３の斜行ラインＥ３（補正後の第３のＸ方向ラインＦ３）に関する補正処理に利用される。
【０２２２】
また、（斜行ラインＥ６用の）ブロック画像Ｂ１に関して生成された直列化画素列（複数の部分画素列Ｄ３８，Ｄ２７，Ｄ１６）は、ＳＲＡＭ５１から読み出され、ＤＲＡＭ５２の第６のラインＲ６の範囲Ｃ３〜Ｃ１に亘ってそのままの順序で連続的に書き込まれる。また、（斜行ラインＥ３用の）ブロック画像Ｂ２に関して生成された直列化画素列（複数の部分画素列Ｄ６８，Ｄ５７，Ｄ４６）は、ＳＲＡＭ５１から読み出され、ＤＲＡＭ５２の第６のラインＲ６の範囲Ｃ６〜Ｃ４に亘ってそのままの順序で連続的に書き込まれる。
【０２２３】
＜第９ライン＞
同様に、図３２に示すように、撮像部２１５からの第９のライン画素列Ｌ９（図３２の最上段参照）内の互いに異なる複数の部分画素列Ｄ９９，Ｄ８９，Ｄ７９，Ｄ６９，Ｄ５９，Ｄ４９，Ｄ３９，Ｄ２９，Ｄ１９に関しても同様の処理が行われる。
【０２２４】
この結果、（斜行ラインＥ７用の）ブロック画像Ｂ１内でのＳＲＡＭ５１を利用した並べ替え処理によって、ブロック画像Ｂ１内の当該複数の部分画素列Ｄ３９，Ｄ２８，Ｄ１７を直列化した画素列（直列化画素列）が生成される。なお、当該直列化画素列（複数の部分画素列Ｄ３９，Ｄ２８，Ｄ１７）は、元の画像における第７の斜行ラインＥ７（補正後の第７のＸ方向ラインＦ７）に関する補正処理に利用される。
【０２２５】
また、（斜行ラインＥ４用の）ブロック画像Ｂ２内でのＳＲＡＭ５１を利用した並べ替え処理によって、ブロック画像Ｂ２内の当該複数の部分画素列Ｄ６９，Ｄ５８，Ｄ４７を直列化した画素列（直列化画素列）が生成される。なお、当該直列化画素列（複数の部分画素列Ｄ６９，Ｄ５８，Ｄ４７）は、元の画像における第４の斜行ラインＥ４（補正後の第４のＸ方向ラインＦ４）に関する補正処理に利用される。
【０２２６】
さらに、（斜行ラインＥ１用の）ブロック画像Ｂ３内でのＳＲＡＭ５１を利用した並べ替え処理が行われる。具体的には、当該ブロック画像Ｂ３に関して、ライン画素列Ｌ９の部分画素列Ｄ９９とライン画素列Ｌ８の部分画素列Ｄ８８とライン画素列Ｌ７の部分画素列Ｄ７７とが、この順序でＳＲＡＭ５１内の同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１に亘って連続して配置される。端的に言えば、複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が直線状に配列される。
【０２２７】
そして、互いに異なるタイミングで書き込まれたこれらの部分画素列（ブロック画像Ｂ３に関する部分画素列）Ｄ９９，Ｄ８８，Ｄ７７は、同一ラインＨ３の区分範囲Ｃ３，Ｃ２，Ｃ１から連続して読み出される。このようなＳＲＡＭ５１を利用したブロック内並べ替え処理によって、ブロック画像Ｂ３内の当該複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７を直列化した画素列（直列化画素列）が生成される。なお、次述するように、当該直列化画素列（複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７）は、元の画像における第１の斜行ラインＥ１（補正後の第１のＸ方向ラインＦ１）に関する補正処理に利用される。
【０２２８】
その後、全てのブロック画像Ｂ１，Ｂ２，Ｂ３に関してそれぞれ（互いに異なるタイミングで）生成された複数の直列化画素列は、ＳＲＡＭ５１（詳細にはそのラインＨ３）から読み出され、ＤＲＡＭ５２の同一のラインＲ７に（詳細にはラインＲ７の区分範囲Ｃ９〜Ｃ１に亘って）連続的に書き込まれる。より詳細には、（斜行ラインＥ１用の）ブロック画像Ｂ３に関して生成された直列化画素列（複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７）と、（斜行ラインＥ４用の）ブロック画像Ｂ２に関して生成された直列化画素列（複数の部分画素列Ｄ６９，Ｄ５８，Ｄ４７）と、（斜行ラインＥ７用の）ブロック画像Ｂ１に関して生成された直列化画素列（複数の部分画素列Ｄ３９，Ｄ２８，Ｄ１７）とが、ＤＲＡＭ５２の第７のラインＲ７の範囲Ｃ９〜Ｃ７，Ｃ６〜Ｃ４，Ｃ３〜Ｃ１にそれぞれそのままの順序で連続的に書き込まれる。また、各直列化画素列は、ＤＲＡＭ５２において、それぞれの各目標位置（第７のラインＲ７の各区分範囲Ｃ９〜Ｃ７，Ｃ６〜Ｃ４，Ｃ３〜Ｃ１）に配置される。
【０２２９】
なお、ＤＲＡＭ５２への書き込み時には、「ブロック相互間並べ替え処理」は、実質的には未だ行われていない。ＤＲＡＭ５２への書き込み時には、ブロック内並べ替え処理によって暫定的に直列的に配列された画素列が、そのままＤＲＡＭ５２の同一ラインに書き込まれる。たとえば、ブロック内並べ替え処理によって暫定的に直線状に配列された複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７，Ｄ６９，Ｄ５８，Ｄ４７，Ｄ３９，Ｄ２８，Ｄ１７が、そのままの順序でＤＲＡＭ５２の同一ラインＲ７に書き込まれる。
【０２３０】
そして、ＤＲＡＭ５２からの読み出し時に「ブロック相互間並べ替え処理」が実質的に実行される。具体的には、ＤＲＡＭ５２に関するランダムアクセスを利用して、ＤＲＡＭ５２にて互いに連続しないアドレスに配置された複数の直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が連続して読み出される。当該複数の直列化画素列は、（並べ替え処理後の）各目標位置にそれぞれ配置された複数の直列化画素列であってＤＲＡＭ５２にて互いに異なるラインに互い異なるタイミングで配置された複数の直列化画素列であるとも表現される。なお、上述のような動作によって、（斜行ラインＥ１用の）ブロック画像Ｂ３に関する直列化画素列（部分画素列Ｄ９９，Ｄ８８，Ｄ７７）は、ＤＲＡＭ５２の第７のラインＲ７の区分範囲Ｃ９〜Ｃ７に配置されており、（斜行ラインＥ１用の）ブロック画像Ｂ２に関する直列化画素列（部分画素列Ｄ６６，Ｄ５５，Ｄ４４）は、ＤＲＡＭ５２の第４のラインＲ４の区分範囲Ｃ６〜Ｃ４に配置されている。また、（斜行ラインＥ１用の）ブロック画像Ｂ１に関する直列化画素列（部分画素列Ｄ３３，Ｄ２２，Ｄ１１）は、ＤＲＡＭ５２の第１のラインＲ１の区分範囲Ｃ３〜Ｃ１に配置されている。
【０２３１】
ここでは、ＤＲＡＭ５２にて互いに異なるライン（互いに連続しないアドレス）に配置されていた複数の直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が、ＤＲＡＭ５２のランダムアクセスを利用して、連続して読み出されることによって、１本のライン画像Ｆ１が生成される。換言すれば、（斜行ラインＥ１用の）複数のブロック画像Ｂ３，Ｂ２，Ｂ１に関する複数の直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が直線状に配列されるように（連続するように）複数のブロック画像Ｂ３，Ｂ２，Ｂ１の相互間にて複数の直列化画素列の並べ替えが行われ、１本のライン画像が生成される。
【０２３２】
以上のように、この第２実施形態においては、ブロック内並べ替え処理は、実質的にＳＲＡＭ５１への書き込み（ライト）時に行われる。また、ブロック相互間並べ替え処理は、実質的にＤＲＡＭ５２からの読み出し（リード）時に行われる。
【０２３３】
具体的には、ＳＲＡＭ５１への書き込み時に、ＳＲＡＭ５１に関するランダムアクセスを利用して、各ブロック画像内の各部分画素列が各部分画素列の並べ替え処理後の各目標位置の対応アドレスに書き込まれる。たとえば、入力画像のブロック画像Ｂ３にて互いに異なるラインＬ９，Ｌ８，Ｌ７（図２３参照）に属する複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が、ＳＲＡＭ５１に関するランダムアクセスを利用して、各部分画素列Ｄ９９，Ｄ８８，Ｄ７７の目標位置（たとえばＳＲＡＭ５１内の同一ラインＨ３上且つ区分範囲Ｃ９〜Ｃ７の位置）の対応アドレスに書き込まれる。他のブロック画像Ｂ２，Ｂ１についても同様である。各部分画素列Ｄ６６，Ｄ５５，Ｄ４４の目標位置（たとえばＳＲＡＭ５１内の同一ラインＨ３上且つ区分範囲Ｃ６〜Ｃ４の位置）の対応アドレスに書き込まれる。また、各部分画素列Ｄ３３，Ｄ２２，Ｄ１１の目標位置（たとえばＳＲＡＭ５１内の同一ラインＨ３上且つ区分範囲Ｃ３〜Ｃ１の位置）の対応アドレスに書き込まれる。
【０２３４】
そして、ＳＲＡＭ５１からの読み出し時に、各ブロック画像内に互いに異なるタイミングで書き込まれていた複数の部分画素列（且つＳＲＡＭ５１内の同一ライン（Ｈ３）上に配置されている複数の部分画素列）が順次に読み出される。たとえば、ブロック画像Ｂ３内に互いに異なるタイミングで書き込まれていた複数の部分画素列（且つＳＲＡＭ５１内の同一ライン（Ｈ３）上に配置されている複数の部分画素列）Ｄ９９，Ｄ８８，Ｄ７７が順次に読み出される。これによって、各ブロック画像内の当該複数の部分画素列が直線状に配列されるように当該複数の部分画素列を並べ替えた直列化画素列が生成される。たとえば、ブロック画像Ｂ１内の複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７を並べ替えた直列化画素列が生成される。他のブロック画像Ｂ２，Ｂ１に関しても同様にして、複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４を並べ替えた直列化画素列と複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１を並べ替えた直列化画素列とが生成される。
【０２３５】
また、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３（図２６、図２９および図３２参照）の相互間に関する並べ替え処理（ブロック相互間並べ替え処理）（ブロック単位での並べ替え処理）が、ＤＲＡＭ５２を利用して行われる（図２３および図３２参照）。ブロック相互間並べ替え処理は、ＤＲＡＭ５２からの読み出し時に行われる。
【０２３６】
ＤＲＡＭ５２への書き込み時には、ブロック内並べ替え処理によって暫定的に直列的に整列された画素列が、並べ替えられることなく（そのままの順序で）ＤＲＡＭ５２に書き込まれる。具体的には、暫定的に直列的に整列された複数の部分画素列ＤがＤＲＡＭ５２内の同一ラインに書き込まれる。たとえば、複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７，Ｄ６９，Ｄ５８，Ｄ４７，Ｄ３９，Ｄ２８，Ｄ１７がＤＲＡＭ５２の同一ラインＲ７（詳細には、当該ラインＲ７の区分範囲Ｃ９〜Ｃ１）に書き込まれる。
【０２３７】
そして、ＤＲＡＭ５２からの読み出し時に、複数のブロック画像Ｂ１〜Ｂ３に関する複数の直列化画素列であってＤＲＡＭ５２にて互いに異なるラインに互い異なるタイミングで書き込まれて配置されていた複数の直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が、ＤＲＡＭ５２に関するランダムアクセスを利用して読み出される。これによって、当該複数の直列化画素列が直線状に並べ替えられて配列された１本のライン画像Ｆ１が生成される。このようにして、斜行ラインＥ１に対する斜行補正が行われ、新ラインＦ１（斜行ラインＥ１の補正後のライン画像）が生成される。
【０２３８】
以上のような態様によっても第１実施形態と同様の効果を得ることが可能である。
【０２３９】
＜３．第３実施形態＞
第３実施形態は、第１実施形態等の変形例である。以下では、第１実施形態等との相違点を中心に説明する。
【０２４０】
第３実施形態では、図３３に示されるように、ＳＲＡＭ５１からの読み出し時（リード時）に第１の並べ替え処理Ｐ１（且つ「ブロック内並べ替え処理」）が実質的に実行される。また、ＤＲＡＭ５２からの読み出し時（リード時）に第２の並べ替え処理Ｐ２（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。端的に言えば、第３実施形態では、ＳＲＡＭリード時補正且つＤＲＡＭリード時補正が（この順序で）行われる。
【０２４１】
図３４は、第３実施形態に係る動作を概念的に示す図である。図３４においては、ライン画素列Ｌ９を読み出す際のＳＲＡＭ５１への書き込み動作（図３４の中央の破線矢印参照）、およびＳＲＡＭ５１からの（ランダムアクセスを伴う）読み出し動作（図３４の太い実線矢印参照）が概念的に示されている。また、ＤＲＡＭ５２への書き込み動作（図３４の下側の太い実線矢印参照）、およびＤＲＡＭ５２からの（ランダムアクセスを伴う）読み出し動作（図３４の点線矢印参照）が概念的に示されている。
【０２４２】
ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」は、第１実施形態と同様にして行われればよい。具体的には、ＳＲＡＭ５１への書き込み時（ライト時）の動作は、第１実施形態におけるＳＲＡＭ５１への書き込み時の動作と同様に行われればよい。また、ＳＲＡＭ５１からの読み出し時（リード時）の動作（並べ替え動作を含む）も、第１実施形態におけるＳＲＡＭ５１からの読み出し時の動作と同様に行われればよい。
【０２４３】
また、ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」は、第２実施形態と同様にして行われればよい。具体的には、ＤＲＡＭ５２への書き込み時（ライト時）の動作は、第２実施形態におけるＤＲＡＭ５２への書き込み時の動作と同様に行われればよい。また、ＤＲＡＭ５２からの読み出し時（リード時）の動作（並べ替え動作を含む）も、第２実施形態におけるＤＲＡＭ５２からの読み出し時の動作と同様に行われればよい。
【０２４４】
＜４．第４実施形態＞
第４実施形態は、第１実施形態等の変形例である。以下では、第１実施形態等との相違点を中心に説明する。
【０２４５】
第４実施形態では、図３５に示されるように、ＳＲＡＭ５１への書き込み時（ライト時）に第１の並べ替え処理Ｐ１（且つ「ブロック内並べ替え処理」）が実質的に実行される。また、ＤＲＡＭ５２への書き込み時（ライト時）に第２の並べ替え処理Ｐ２（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。端的に言えば、第４実施形態では、ＳＲＡＭライト時補正且つＤＲＡＭライト時補正が（この順序で）行われる。
【０２４６】
図３６は、第４実施形態に係る動作を概念的に示す図である。図３６においては、ライン画素列Ｌ９を読み出す際の（ランダムアクセスを伴う）ＳＲＡＭ５１への書き込み動作（図３６の破線矢印参照）、ＳＲＡＭ５１からの読み出し動作（図３６の太い実線矢印参照）が概念的に示されている。また、（ランダムアクセスを伴う）ＤＲＡＭ５２への書き込み動作（図３６の下側の太い実線矢印参照）、およびＤＲＡＭ５２からの読み出し動作（図３６の点線矢印参照）が概念的に示されている。
【０２４７】
ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」は、第２実施形態と同様にして行われればよい。具体的には、ＳＲＡＭ５１への書き込み時（ライト時）の動作（並べ替え動作を含む）は、第２実施形態におけるＳＲＡＭ５１への書き込み時の動作と同様に行われればよい。また、ＳＲＡＭ５１からの読み出し時（リード時）の動作も、第２実施形態におけるＳＲＡＭ５１からの読み出し時の動作と同様に行われればよい。
【０２４８】
また、ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」は、第１実施形態と同様にして行われればよい。具体的には、ＤＲＡＭ５２への書き込み時（ライト時）の動作（並べ替え動作を含む）は、第１実施形態におけるＤＲＡＭ５２への書き込み時の動作と同様に行われればよい。また、ＤＲＡＭ５２からの読み出し時（リード時）の動作も、第１実施形態におけるＤＲＡＭ５２からの読み出し時の動作と同様に行われればよい。
【０２４９】
＜５．第５実施形態＞
＜５−１．概要＞
第５実施形態は、第１実施形態等の変形例である。以下では、第１実施形態との相違点を中心に説明する。
【０２５０】
上記第１実施形態〜第４実施形態においては、ＳＲＡＭ５１とＤＲＡＭ５２とのうち、先にＳＲＡＭ５１が利用され、次にＤＲＡＭ５２が利用されている。ただし、本発明はこれに限定されない。たとえば、逆に、ＳＲＡＭ５１とＤＲＡＭ５２とのうち、ＤＲＡＭ５２が先に利用されてもよい。具体的には、入力画像内の画素群に関する「第１の並べ替え処理」Ｐ１を実行するための第１のメモリとしてＤＲＡＭ５２が利用され、且つ、第２の並べ替え処理Ｐ２を実行するための第２のメモリ（当該２の並べ替え処理後の画像を後続の処理用に出力するための第２のメモリ）としてＳＲＡＭ５１が利用されてもよい。換言すれば、「第１の並べ替え処理」Ｐ１として「ブロック相互間並べ替え処理」が実行され、「第２の並べ替え処理」Ｐ２として「ブロック内並べ替え処理」が実行されてもよい。第５実施形態〜第８実施形態では、このような態様について説明する。
【０２５１】
このうち、第５実施形態では、図３７に示されるように、ＤＲＡＭ５２からの読み出し時（リード時）に第１の並べ替え処理Ｐ１（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。また、ＳＲＡＭ５１への書き込み時（ライト時）に第２の並べ替え処理Ｐ２（且つ「ブロック内並べ替え処理」）が実質的に実行される。端的に言えば、第５実施形態では、ＤＲＡＭリード時補正且つＳＲＡＭライト時補正が（この順序で）行われる。なお、第５実施形態に関する変形例（第２実施形態〜第４実施形態と同様の変形例）については、第６実施形態〜第８実施形態において説明する。
【０２５２】
第５実施形態では、図３８等に示すように、入力画像における第１の斜行ラインＥ１を含む３つのブロック画像（斜行ラインＥ１用の３つのブロック画像）Ｂ１〜Ｂ３に関して、ブロック画像単位での並べ替え処理（「ブロック相互間並べ替え処理」）がＤＲＡＭ５２を用いて行われるとともに、並べ替え後の画素列がＳＲＡＭ５１に配置される。また、各ブロック画像Ｂｉ内における並べ替え処理（「ブロック内並べ替え処理」）がＳＲＡＭ５１を用いて行われる。
【０２５３】
＜５−２．動作詳細＞
第５実施形態では、斜行角度θの検出後に画像読取部２によるスキャン動作が開始されると、図１０〜図１８に代えて図３９〜図４７に示すような動作が行われる。
【０２５４】
上記第１実施形態では、撮像部２１５によって撮影された各ライン画像（各ライン画素列Ｌ１，Ｌ２，...）の全画素列が、そのままの順序でＳＲＡＭ５１内の連続アドレスに（同一ライン上に）（１本のライン画像として）書き込まれている（図８のＳＲＡＭ５１内の破線矢印参照）。
【０２５５】
一方、第５実施形態では、撮像部２１５によって撮影された各ライン画像（各ライン画素列Ｌ１，Ｌ２，...）の全画素列が、そのままの順序で「ＤＲＡＭ５２」内の連続アドレスに（１本のライン画像として）書き込まれる（図３８のＤＲＡＭ５２内の破線矢印参照）。
【０２５６】
＜第１ライン〜第６ライン＞
まず、図３９の上側に示すように、撮像部２１５からの第１のライン画素列Ｌ１（図３８の最上段も参照）は、そのままの順序で、ＤＲＡＭ５２において一のＸ方向ラインＲ１（より詳細には、当該ラインＲ１に対応する連続アドレス）に連続的に書き込まれる（図３９の太い破線参照）。
【０２５７】
つぎに、図４０の上側に示すように、撮像部２１５からの第２のライン画素列Ｌ２は、そのままの順序で、ＤＲＡＭ５２において一のＸ方向ラインＲ２（より詳細には、当該ラインＲ２に対応する連続アドレス）に連続的に書き込まれる（図４０の太い破線参照）。
【０２５８】
その後、同様に、図４１〜図４４に示すように、撮像部２１５からのライン画素列Ｌ３〜Ｌ６は、ＤＲＡＭ５２において一のＸ方向ラインＲ３〜Ｒ６にそれぞれ書き込まれる（図４１〜図４４の太い破線参照）。
【０２５９】
＜第７ライン＞
その後、図４５の上側に示すように、撮像部２１５からの第７のライン画素列Ｌ７は、そのままの順序で、ＤＲＡＭ５２において一のＸ方向ラインＲ７に連続的に書き込まれる（図４５の太い破線参照）。
【０２６０】
このように、ＤＲＡＭ５２への書き込み時には、入力画像における各ライン画素列はそのままの順序でＤＲＡＭ５２内の各対応ライン（Ｘ方向に伸びるライン）上に書き込まれる。
【０２６１】
ここにおいて、読み出し対象のライン画素列Ｌ７は、斜行ラインＥ１の他方端（図３８の左端）の部分画素列Ｄ９９のライン画素列Ｌ９の（Ｎ−１）本（ここでは２本）手前のライン画素列であり、当該部分画素列Ｄ９９を含む（左端側の）最後のブロック画像Ｂ３に属する。この時点（ライン画素列Ｌ７の書き込み完了時点）から、ＤＲＡＭ５２からの読み出し処理が開始される。
【０２６２】
ＤＲＡＭ５２からの読み出し処理においては、ＤＲＡＭ５２にて非直線状に配置されていた複数のブロック画像（詳細には、ＤＲＡＭ５２の互いに異なるライン群（互いに異なるＹ方向位置）に配置されていた複数のブロック画像）が、ＤＲＡＭ５２のランダムアクセス（ブロック単位のランダムアクセス）を利用して読み出される。これによって、複数のブロック画像が（Ｘ方向に）直線状に配列されるように並べ替えられる。
【０２６３】
詳細には、ＤＲＡＭ５２にて互いに異なるライン上の（換言すれば、ＤＲＡＭ５２にて互いに連続しない位置に配置される）複数のブロック内直列画素列が連続して読み出される。なお、当該複数のブロック内直列画素列のそれぞれは、各ブロック画像内では同一ライン上に連続して配置される画素列である。ＤＲＡＭ５２への書き込み時点では、異なるブロック画像に属する当該複数のブロック内直列画素列は、互いに連続しない位置に（非直線状に）配置されている。
【０２６４】
図４５に示すように、ＤＲＡＭ５２からの読み出し処理においては、ライン画素列Ｌ７内のブロック内直列画素列（部分画素列Ｄ９７，Ｄ８７，Ｄ７７）と、ライン画素列Ｌ４内のブロック内直列画素列（部分画素列Ｄ６４，Ｄ５４，Ｄ４４）と、ライン画素列Ｌ１内のブロック内直列画素列（部分画素列Ｄ３１，Ｄ２１，Ｄ１１）とが連続して読み出される。
【０２６５】
換言すれば、（斜行ラインＥ１用の）複数のブロック画像Ｂ３，Ｂ２，Ｂ１に関する複数のブロック内直列画素列Ｇ３１，Ｇ２１，Ｇ１１がこの順序で読み出される。なお、部分画素列Ｄ９７，Ｄ８７，Ｄ７７は、ブロック画像Ｂ３に関するブロック内直列画素列Ｇ３１（３，１）を構成し、部分画素列Ｄ６４，Ｄ５４，Ｄ４４は、ブロック画像Ｂ２に関するブロック内直列画素列Ｇ２１（２，１）を構成し、部分画素列Ｄ３１，Ｄ２１，Ｄ１１は、ブロック画像Ｂ１に関するブロック内直列画素列Ｇ１１（１，１）を構成する。ここで、ブロック内直列画素列Ｇｉｊ（ｉ，ｊ）は、第ｉブロック画像Ｂｉ内の第ｊライン上の直列画素列を表すものとし、Ｇ（ｉ，ｊ）あるいは単にＧｉｊなどとも表記する。
【０２６６】
このような読み出し処理によって、当該複数のブロック画像Ｂ３，Ｂ２，Ｂ１の相互間にて複数のブロック内直列画素列Ｇ３１，Ｇ２１，Ｇ１１が連続するように複数のブロック内直列画素列Ｇ３１，Ｇ２１，Ｇ１１が並べ替えられる。
【０２６７】
このようにして、ＤＲＡＭ５２からの読み出し時に「ブロック相互間並べ替え処理」が実質的に実行される。
【０２６８】
また、ＤＲＡＭ５２から読み出された複数のブロック内直列画素列Ｇ３１，Ｇ２１，Ｇ１１は、ＳＲＡＭ５１に書き込まれる。
【０２６９】
この第５実施形態では、「ブロック内並べ替え処理」が実質的にＳＲＡＭ５１への書き込み時に実行される。
【０２７０】
具体的には、ブロック画像Ｂ３内のブロック内直列画素列Ｇ３１に関して、部分画素列Ｄ９７がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ９に書き込まれ、部分画素列Ｄ８７がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ８に書き込まれ、部分画素列Ｄ７７がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ７に書き込まれる。
【０２７１】
また、ブロック画像Ｂ２内のブロック内直列画素列Ｇ２１に関して、部分画素列Ｄ６４がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ６に書き込まれ、部分画素列Ｄ５４がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ５に書き込まれ、部分画素列Ｄ４４がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ４に書き込まれる。
【０２７２】
さらに、ブロック画像Ｂ１内のブロック内直列画素列Ｇ１１に関して、部分画素列Ｄ３１がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ３に書き込まれ、部分画素列Ｄ２１がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ２に書き込まれ、部分画素列Ｄ１１がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ１に書き込まれる。
【０２７３】
＜第８ライン＞
その後、図４６の上側に示すように、撮像部２１５からの第８のライン画素列Ｌ８が、そのままの順序で、ＤＲＡＭ５２において一のＸ方向ラインＲ８に連続的に書き込まれる（図４６の太い破線参照）。
【０２７４】
そして、ＤＲＡＭ５２からの読み出し処理が行われる。
【０２７５】
当該読み出し処理においては、ライン画素列Ｌ８（Ｒ８）内のブロック内直列画素列（部分画素列Ｄ９８，Ｄ８８，Ｄ７８）と、ライン画素列Ｌ５（Ｒ５）内のブロック内直列画素列（部分画素列Ｄ６５，Ｄ５５，Ｄ４５）と、ライン画素列Ｌ２内のブロック内直列画素列（部分画素列Ｄ３２，Ｄ２２，Ｄ１２）とが連続して読み出される。
【０２７６】
換言すれば、（斜行ラインＥ１用の）複数のブロック画像Ｂ３，Ｂ２，Ｂ１に関する複数のブロック内直列画素列Ｇ３２，Ｇ２２，Ｇ１２がこの順序で読み出される。なお、部分画素列Ｄ９８，Ｄ８８，Ｄ７８は、ブロック画像Ｂ３に関するブロック内直列画素列Ｇ３２（３，２）を構成し、部分画素列Ｄ６５，Ｄ５５，Ｄ４５は、ブロック画像Ｂ２に関するブロック内直列画素列Ｇ２２（２，２）を構成し、部分画素列Ｄ３２，Ｄ２２，Ｄ１２は、ブロック画像Ｂ１に関するブロック内直列画素列Ｇ１２（１，２）を構成する。
【０２７７】
これによって、当該複数のブロック画像Ｂ３，Ｂ２，Ｂ１の相互間にて複数のブロック内直列画素列Ｇ３２，Ｇ２２，Ｇ１２が連続するように複数のブロック内直列画素列Ｇ３２，Ｇ２２，Ｇ１２が並べ替えられる。
【０２７８】
このようにして、ＤＲＡＭ５２からの読み出し時に「ブロック相互間並べ替え処理」が実質的に実行される。
【０２７９】
また、ＤＲＡＭ５２から読み出された複数のブロック内直列画素列Ｇ３２，Ｇ２２，Ｇ１２は、ＳＲＡＭ５１に書き込まれる。
【０２８０】
つぎに、「ブロック内並べ替え処理」（ＳＲＡＭライト時補正）が実行される。
【０２８１】
まず、図４６の下側に示されるように、ライン画素列Ｌ８に関する書き込み前に、ＳＲＡＭ５１内の各ラインＨｉは１つ上にずらされる。具体的には、最下段のラインＨ３は中段に移動し、中段のラインＨ２は最上段に移動する。なお、最上段のラインＨ１は、再び最下段の位置に戻る。このように、ＳＲＡＭ５１の各ラインは、循環的に利用される。
【０２８２】
そして、ブロック画像Ｂ３内のブロック内直列画素列Ｇ３２に関して、部分画素列Ｄ９８がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ９に書き込まれ、部分画素列Ｄ８８がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ８に書き込まれ、部分画素列Ｄ７８がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ７に書き込まれる。
【０２８３】
また、ブロック画像Ｂ２内のブロック内直列画素列Ｇ２２に関して、部分画素列Ｄ６５がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ６に書き込まれ、部分画素列Ｄ５５がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ５に書き込まれ、部分画素列Ｄ４５がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ４に書き込まれる。
【０２８４】
さらに、ブロック画像Ｂ３内のブロック内直列画素列Ｇ１２に関して、部分画素列Ｄ３２がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ３に書き込まれ、部分画素列Ｄ２２がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ２に書き込まれ、部分画素列Ｄ１２がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ１に書き込まれる。
【０２８５】
＜第９ライン＞
その後、図４７に示すように、撮像部２１５からの第９のライン画素列Ｌ９が、そのままの順序で、ＤＲＡＭ５２において一のＸ方向ラインＲ９に連続的に書き込まれる（図４７の太い破線参照）。
【０２８６】
そして、ＤＲＡＭ５２からの読み出し処理が行われる。ＤＲＡＭ５２からの読み出し処理においては、当該読み出し処理においては、ＤＲＡＭ５２にて互いに異なるライン（互いに異なるＹ方向位置）に配置された複数のブロック内直列画素列が、ＤＲＡＭ５２に関するランダムアクセスを利用して読み出される。換言すれば、ＤＲＡＭ５２のランダムアクセス（ブロック単位のランダムアクセス）を利用して、ＤＲＡＭ５２の互いに異なるライン群（互いに異なるＹ方向位置）に配置されていた複数のブロック画像が、ＤＲＡＭ５２に関するランダムアクセスを利用して読み出される。これによって、複数のブロック画像が（Ｘ方向に）直線状に配列されるように並べ替えられる。
【０２８７】
詳細には、ライン画素列Ｌ９（Ｒ９）内のブロック内直列画素列Ｇ３３（部分画素列Ｄ９９，Ｄ８９，Ｄ７９）と、ライン画素列Ｌ６（Ｒ６）内のブロック内直列画素列Ｇ２３（部分画素列Ｄ６６，Ｄ５６，Ｄ４６）と、ライン画素列Ｌ３内のブロック内直列画素列Ｇ１３（部分画素列Ｄ３３，Ｄ２３，Ｄ１３）とが連続して読み出される。換言すれば、（斜行ラインＥ１用の）複数のブロック画像Ｂ３，Ｂ２，Ｂ１に関する複数のブロック内直列画素列Ｇ３３，Ｇ２３，Ｇ１３がこの順序で読み出される。なお、部分画素列Ｄ９９，Ｄ８９，Ｄ７９は、ブロック画像Ｂ３に関するブロック内直列画素列Ｇ３３（３，３）を構成し、部分画素列Ｄ６６，Ｄ５６，Ｄ４６は、ブロック画像Ｂ２に関するブロック内直列画素列Ｇ２３（２，３）を構成し、部分画素列Ｄ３３，Ｄ２３，Ｄ１３は、ブロック画像Ｂ１に関するブロック内直列画素列Ｇ１３（１，３）を構成する。
【０２８８】
これによって、当該複数のブロック画像Ｂ３，Ｂ２，Ｂ１の相互間にて、複数のブロック内直列画素列Ｇ３３，Ｇ２３，Ｇ１３が連続するように（直線状に配列されるように）複数のブロック内直列画素列Ｇ３３，Ｇ２３，Ｇ１３が並べ替えられる。換言すれば、複数のブロック内直列画素列Ｇ３３，Ｇ２３，Ｇ１３が直線状に配列されるように当該複数のブロック内直列画素列が並べ替えられる。
【０２８９】
このようにして、ＤＲＡＭ５２からの読み出し時に「ブロック相互間並べ替え処理」が実質的に実行される。
【０２９０】
また、ＤＲＡＭ５２から読み出された複数のブロック内直列画素列Ｇ３３，Ｇ２３，Ｇ１３は、ＳＲＡＭ５１に書き込まれる。
【０２９１】
つぎに、「ブロック内並べ替え処理」（ＳＲＡＭライト時補正）が実行される。
【０２９２】
まず、図４７の下側に示されるように、ライン画素列Ｌ９に関する書き込み前に、ＳＲＡＭ５１内の各ラインＨｉは１つ上にずらされる。具体的には、最下段のラインＨ１は中段に移動し、中段のラインＨ３は最上段に移動する。なお、最上段のラインＨ２は、再び最下段の位置に戻る。
【０２９３】
そして、ブロック画像Ｂ３内のブロック内直列画素列Ｇ３３に関して、部分画素列Ｄ９９がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ９に書き込まれ、部分画素列Ｄ８９がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ８に書き込まれ、部分画素列Ｄ７９がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ７に書き込まれる。
【０２９４】
また、ブロック画像Ｂ２内のブロック内直列画素列Ｇ２３に関して、部分画素列Ｄ６６がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ６に書き込まれ、部分画素列Ｄ５６がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ５に書き込まれ、部分画素列Ｄ４６がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ４に書き込まれる。
【０２９５】
さらに、ブロック画像Ｂ３内のブロック内直列画素列Ｇ１３に関して、部分画素列Ｄ３３がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ３に書き込まれ、部分画素列Ｄ２３がＳＲＡＭ５１のラインＨ１の区分範囲Ｃ２に書き込まれ、部分画素列Ｄ１３がＳＲＡＭ５１のラインＨ２の区分範囲Ｃ１に書き込まれる。
【０２９６】
このように、ＤＲＡＭ５２を利用して並べ替えられていた複数のブロック内直列画素列Ｇ３３，Ｇ２３，Ｇ１３のそれぞれに関して、ＳＲＡＭ５１への書き込み時に、ＳＲＡＭ５１に関するランダムアクセスを利用して、各ブロック画像Ｂ３，Ｂ２，Ｂ１内の各部分画素列（（Ｄ９９，Ｄ８９，Ｄ７９），（Ｄ６６，Ｄ５６，Ｄ４６），（Ｄ３３，Ｄ２３，Ｄ１３））が当該各部分画素列の並べ替え処理後の目標位置の対応アドレスにそれぞれ書き込まれる。
【０２９７】
この結果、特にラインＨ３においては、変形ラインＥ１に関する補正後のライン画像Ｆ１が配置されている。詳細には、（斜行ラインＥ１用の）各ブロック画像Ｂｉ内の複数の部分画素列が連続するように当該複数の部分画素列を並べ替えた直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が生成されている。当該各直列化画素列は、各ブロック画像Ｂｉ内の複数の部分画素列が同一ライン上に配置されるように当該複数の部分画素列を並べ替えた画素列である、とも表現される。
【０２９８】
そして、ＳＲＡＭ５１からの読み出し時には、（斜行ラインＥ１用の）各ブロック画像Ｂｉ内に互いに異なるタイミングで書き込まれていた複数の部分画素列（且つＳＲＡＭ５１にて同一ライン上に配置されている複数の部分画素列）（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が連続して読み出される。特に、ＳＲＡＭ５１にて同一ライン上に配置されている３つの直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が、連続して読み出される。これによって、複数のブロックから抽出された１本のライン画像（補正後のライン画像Ｆ１）が生成される。
【０２９９】
＜第１０ライン以後＞
その後、撮像部２１５からの第１０のライン画素列Ｌ１０の入力処理等も同様に行われる。
【０３００】
撮像部２１５からの第１０のライン画素列Ｌ１０のＤＲＡＭ５２への書き込み処理が行われた後、ＤＲＡＭ５２からの読み出し時に「ブロック相互間並べ替え処理」が実質的に行われる。より具体的には、入力画像における第２の斜行ラインＥ２を含む新たな３つのブロック画像（斜行ラインＥ２用のブロック画像）Ｂ１〜Ｂ３に関して、ブロック画像単位での並べ替え処理（「ブロック相互間並べ替え処理」）がＤＲＡＭ５２を用いて行われる。また、並べ替え後の画素列がＳＲＡＭ５１に配置される。さらに、各ブロック画像Ｂｉ内における並べ替え処理（「ブロック内並べ替え処理」）がＳＲＡＭ５１を用いて行われる。そして、上述と同様の処理によって、斜行ラインＥ２が新ライン画像Ｆ２に変換されて出力される。
【０３０１】
なお、斜行ラインＥ２用の３つのブロック画像Ｂ１〜Ｂ３は、斜行ラインＥ１用の３つのブロック画像Ｂ１〜Ｂ３と比較して、Ｙ方向において、１ライン分、下方にずらされる。たとえば、（斜行ラインＥ２用の）ブロック画像Ｂ１は、入力画像のＸ方向ラインＬ２〜Ｌ４に対応するＹ方向位置に存在し、（斜行ラインＥ２用の）ブロック画像Ｂ２は、入力画像のＸ方向ラインＬ５〜Ｌ７に対応するＹ方向位置に存在し、（斜行ラインＥ２用の）ブロック画像Ｂ３は、入力画像のＸ方向ラインＬ８〜Ｌ１０に対応するＹ方向位置に存在する。
【０３０２】
＜小括＞
以上のようにして、この第５実施形態では、「ブロック相互間並べ替え処理」が実質的にＤＲＡＭ５２からの読み出し時に実行される。また、「ブロック内並べ替え処理」が実質的にＳＲＡＭ５１への書き込み時に実行される。
【０３０３】
より具体的には、図４５〜図４７（および図３８）に示すように、入力画像における第１の斜行ラインＥ１を含む３つのブロック画像Ｂ１〜Ｂ３に関して、ブロック画像単位での並べ替え処理（「ブロック相互間並べ替え処理」）がＤＲＡＭ５２を用いて行われるとともに、並べ替え後の画素列がＳＲＡＭ５１に配置される。また、各ブロック画像Ｂｉ内における並べ替え処理（「ブロック内並べ替え処理」）がＳＲＡＭ５１を用いて行われる。
【０３０４】
まず、ＤＲＡＭ５２への書き込み時には、入力画像における各ライン画素列がそれぞれＤＲＡＭ５２内の（Ｘ方向に伸びる）各対応ライン上に書き込まれる。当該書き込み時には未だ並べ替え処理は行われない。
【０３０５】
そして、ＤＲＡＭ５２からの読み出し時に、ＤＲＡＭ５２にて互いに異なるライン群（互いに異なるＹ方向位置）に配置されていた複数のブロック画像Ｂ３〜Ｂ１が、ＤＲＡＭ５２に関するランダムアクセスを利用して読み出される。このような読み出し処理（並べ替え処理）によって、複数のブロック画像Ｂ３〜Ｂ１が（Ｘ方向に）直線状に配列される。
【０３０６】
また、ＤＲＡＭ５２による「ブロック相互間並べ替え処理」によれば、そのＹ方向位置が互いに異なる３つのブロック画像Ｂ１〜Ｂ３に含まれていた斜行ラインＥ１に関する画素列が、ＳＲＡＭ５１のＹ方向サイズ（Ｎ本のＸ方向ラインのＹ方向サイズ）内に集約される。詳細には、入力画像では異なるＹ方向位置に配置されていた複数の部分画素列Ｄ１１，Ｄ１２，Ｄ１３，Ｄ２２，Ｄ２３，Ｄ３３，Ｄ４４，Ｄ４５，Ｄ４６，Ｄ５５，Ｄ５６，Ｄ６６，Ｄ７７，Ｄ７８，Ｄ７９，Ｄ８８，Ｄ８９，Ｄ９９が、ＳＲＡＭ５１内（詳細にはＳＲＡＭ５１の３本のＸ方向ライン）に配置される。
【０３０７】
その後、「ブロック内並べ替え処理」は、ＳＲＡＭ５１を用いて（実質的にＳＲＡＭ５１の書き込み時に）行われる。
【０３０８】
具体的には、ＳＲＡＭ５１への書き込み時に、複数のブロック画像Ｂ３〜Ｂ１のそれぞれに関してＳＲＡＭ５１に関するランダムアクセスを利用して、各ブロック画像Ｂ３〜Ｂ１内の各部分画素列が当該各部分画素列の並べ替え処理後の目標位置の対応アドレスに書き込まれる。たとえば、ブロック画像Ｂ３に関して、ＤＲＡＭ５２上では互いに異なるラインに配置されていた複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が、ＳＲＡＭ５１に関するランダムアクセスを利用して、当該各部分画素列の並べ替え処理後の目標位置（ラインＨ３の区分範囲Ｃ９，Ｃ８，Ｃ７）の対応アドレスにそれぞれ書き込まれる。これによって、各ブロック画像Ｂ３〜Ｂ１内の複数の部分画素列Ｄが同一ライン上に配置されるように当該複数の部分画素列Ｄを並べ替えた直列化画素列が生成される。たとえば、ブロック画像Ｂ３内の複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が同一ラインＨ３上に配置されるように並べ替えられて、当該複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７に関する直列化画素列が生成される。他のブロック画像Ｂ２，Ｂ１についても同様である。具体的には、ブロック画像Ｂ２に関する複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４、およびブロック画像Ｂ１に関する複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が、同一ラインＨ３上に配置される。
【０３０９】
そして、ＳＲＡＭ５１からの読み出し時に、各ブロック画像Ｂ３〜Ｂ１内に互いに異なるタイミングで書き込まれていた複数の部分画素列（且つ、ＳＲＡＭ５１にて同一ライン上に配置されている複数の部分画素列）が読み出される。
【０３１０】
たとえば、ブロック画像Ｂ３内に互いに異なるタイミングで書き込まれていた複数の部分画素列（且つ、ＳＲＡＭ５１にて同一ラインＨ３上に配置されている複数の部分画素列）Ｄ９９，Ｄ８８，Ｄ７７が読み出される。また、同一ラインＨ３上に配置されている他の部分画素列Ｄ（具体的には、ブロック画像Ｂ２に関する複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４、およびブロック画像Ｂ１に関する複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１）もが、順次に読み出される。これによって、複数のブロック画像Ｂ３〜Ｂ１から抽出された１本のライン画像Ｆ１が生成される。
【０３１１】
このようなＳＲＡＭ５１による「ブロック内並べ替え処理」によれば、一の斜行ラインＥ１上の複数の部分画素列であってＳＲＡＭ５１内の３本のＸ方向ラインＨ１，Ｈ２，Ｈ３のうち異なるＸ方向ラインに配置されていた複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７，Ｄ６６，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１が、一のＸ方向ライン（たとえばＨ３）上に連続して配列される。すなわち、単一の斜行ラインＥ１上の複数の部分画素列がＳＲＡＭ５１内の単一のＸ方向ラインに書き込まれる。そして、当該複数の部分画素列がそのまま読み出されることによって、斜行ラインＥ１に対応する新ライン画像Ｆ１（補正後のライン画像）が後段処理部２５０に出力され得る。
【０３１２】
＜６．第６実施形態＞
＜６−１．概要＞
第６実施形態は、第５実施形態等の変形例である。以下では、第５実施形態との相違点を中心に説明する。
【０３１３】
第６実施形態では、図４８に示されるように、ＤＲＡＭ５２への書き込み時（ライト時）に第１の並べ替え処理Ｐ１（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。また、ＳＲＡＭ５１からの読み出し時（リード時）に第２の並べ替え処理Ｐ２（且つ「ブロック内並べ替え処理」）が実質的に実行される。端的に言えば、第６実施形態では、ＤＲＡＭライト時補正且つＳＲＡＭリード時補正が（この順序で）行われる。
【０３１４】
具体的には、図４９等に示すように、入力画像における第１の斜行ラインＥ１を含む３つのブロック画像（斜行ラインＥ１用のブロック画像）Ｂ１〜Ｂ３に関して、ブロック画像単位での並べ替え処理（「ブロック相互間並べ替え処理」）がＤＲＡＭ５２を用いて行われるとともに、並べ替え後の画素列がＳＲＡＭ５１に配置される。また、（斜行ラインＥ１用の）各ブロック画像Ｂｉ内における並べ替え処理（「ブロック内並べ替え処理」）がＳＲＡＭ５１を用いて行われる。
【０３１５】
特に、この第６実施形態では、ＤＲＡＭ５２へのライト時に、斜行ラインＥ１を含む複数のブロック画像Ｂ１〜Ｂ３の相互間においてそのＹ方向位置が揃うように当該複数のブロック画像Ｂ１〜Ｂ３がブロック単位で並べ替えられる。また、ＳＲＡＭ５１からのリード時に、各ブロック画像Ｂｉ内の斜行ラインＥ１に関する複数の部分画素列Ｄが、そのＹ方向位置が揃うように並べ替えられる
＜６−２．動作詳細＞
第６実施形態では、斜行角度θの検出後に画像読取部２によるスキャン動作が開始されると、図３９〜図４７に代えて図５０〜図５８に示すような動作が行われる。
【０３１６】
＜第１ライン〜第３ライン＞
図３９，図４０，図４１と比較すると判るように、第６実施形態に係る第１ライン画素列Ｌ１の処理（図５０）、第２ライン画素列Ｌ２の処理（図５１）および第３ライン画素列Ｌ３の処理（図５２）は、第５実施形態と同様である。特に、各ライン画素列Ｌ１，Ｌ２，Ｌ３のうち、（斜行ラインＥ１用の）ブロック画像Ｂ１に対応する部分（区分範囲Ｃ３〜Ｃ１）が、ＤＲＡＭ５２に書き込まれる。これによって、斜行ラインＥ１内の複数の部分画素列Ｄ１１，Ｄ２２，Ｄ３３を含むブロック画像Ｂ１がＤＲＡＭ５２上に格納される。
【０３１７】
＜第４ライン〜第６ライン＞
つぎに、図５３に示すように、撮像部２１５からの第４のライン画素列Ｌ４のうち、（斜行ラインＥ２用の）ブロック画像Ｂ１に対応する区分範囲Ｃ３〜Ｃ１（部分画素列Ｄ３４，Ｄ２４，Ｄ１４）が、ＤＲＡＭ５２の対応領域（第４のラインＲ４の区分範囲Ｃ３〜Ｃ１）に書き込まれる（破線矢印参照）。また、撮像部２１５からの第４のライン画素列Ｌ４のうち、（斜行ラインＥ１用の）ブロック画像Ｂ２に対応する区分範囲Ｃ６〜Ｃ４（部分画素列Ｄ４６，Ｄ５４，Ｄ４４）が、ＤＲＡＭ５２の対応領域（第１のラインＲ１の区分範囲Ｃ６〜Ｃ４）に書き込まれる（破線矢印参照）。なお、撮像部２１５からの第４のライン画素列Ｌ４のうち、区分範囲Ｃ９〜Ｃ７に対応する部分は、破棄される。このようにして、第４のライン画素列Ｌ４のうち区分範囲Ｃ１，Ｃ２に対応する部分（ブロック画像Ｂ１，Ｂ２に対応する部分）がＤＲＡＭ５２上に格納される。
【０３１８】
また、図５４に示すように、撮像部２１５からの第５のライン画素列Ｌ５のうち、（斜行ラインＥ３用の）ブロック画像Ｂ１に対応する区分範囲Ｃ３〜Ｃ１（部分画素列Ｄ３５，Ｄ２５，Ｄ１５）が、ＤＲＡＭ５２の対応領域（第５のラインＲ５の区分範囲Ｃ３〜Ｃ１）に書き込まれる。また、撮像部２１５からの第５のライン画素列Ｌ５のうち、（斜行ラインＥ１用の）ブロック画像Ｂ２に対応する区分範囲Ｃ６〜Ｃ４（部分画素列Ｄ６５，Ｄ５５，Ｄ４５）が、ＤＲＡＭ５２の対応領域（第２のラインＲ２の区分範囲Ｃ６〜Ｃ４）に書き込まれる。なお、撮像部２１５からの第５のライン画素列Ｌ５のうち、区分範囲Ｃ９〜Ｃ７に対応する部分は、破棄される。このようにして、第５のライン画素列Ｌ５のうち区分範囲Ｃ１，Ｃ２に対応する部分（ブロック画像Ｂ１，Ｂ２に対応する部分）がＤＲＡＭ５２上に格納される。
【０３１９】
さらに、図５５に示すように、撮像部２１５からの第６のライン画素列Ｌ６のうち、（斜行ラインＥ４用の）ブロック画像Ｂ１に対応する区分範囲Ｃ３〜Ｃ１（部分画素列Ｄ３６，Ｄ２６，Ｄ１６）が、ＤＲＡＭ５２の対応領域（第６のラインＲ６の区分範囲Ｃ３〜Ｃ１）に書き込まれる（破線矢印参照）。また、撮像部２１５からの第６のライン画素列Ｌ６のうち、（斜行ラインＥ１用の）ブロック画像Ｂ２に対応する区分範囲Ｃ６〜Ｃ４（部分画素列Ｄ６６，Ｄ５６，Ｄ４６）が、ＤＲＡＭ５２の対応領域（第３のラインＲ３の区分範囲Ｃ６〜Ｃ４）に書き込まれる（破線矢印参照）。なお、撮像部２１５からの第６のライン画素列Ｌ６のうち、区分範囲Ｃ９〜Ｃ７に対応する部分は、破棄される。このようにして、第６のライン画素列Ｌ６のうち区分範囲Ｃ１，Ｃ２に対応する部分（ブロック画像Ｂ１，Ｂ２に対応する部分）がＤＲＡＭ５２上に格納される。
【０３２０】
＜第７ライン＞
つぎに、図５６に示すように、撮像部２１５からの第７のライン画素列Ｌ７のうち、（斜行ラインＥ５用の）ブロック画像Ｂ１に対応する区分範囲Ｃ３〜Ｃ１（部分画素列Ｄ３７，Ｄ２７，Ｄ１７）が、ＤＲＡＭ５２の対応領域（第７のラインＲ７の区分範囲Ｃ３〜Ｃ１）に書き込まれる（破線矢印参照）。また、撮像部２１５からの第７のライン画素列Ｌ７のうち、（斜行ラインＥ２用の）ブロック画像Ｂ２に対応する区分範囲Ｃ６〜Ｃ４（部分画素列Ｄ６７，Ｄ５７，Ｄ４７）が、ＤＲＡＭ５２の対応領域（第４のラインＲ４の区分範囲Ｃ６〜Ｃ４）に書き込まれる（破線矢印参照）。さらに、撮像部２１５からの第７のライン画素列Ｌ７のうち、（斜行ラインＥ１用の）ブロック画像Ｂ３に対応する区分範囲Ｃ９〜Ｃ７（部分画素列Ｄ９７，Ｄ８７，Ｄ７７）が、ＤＲＡＭ５２の対応領域（第１のラインＲ１の区分範囲Ｃ９〜Ｃ７）に書き込まれる（破線矢印参照）。このような処理によって、第７のライン画素列Ｌ７の各区分範囲Ｃ１，Ｃ２，Ｃ３に対応する部分（ブロック画像Ｂ１，Ｂ２，Ｂ３に対応する部分）がＤＲＡＭ５２上に格納される。なお、ブロック画像Ｂ３内の３つの部分画素列Ｄ９７，Ｄ８７，Ｄ７７は、ブロック内直列画素列（Ｄ９７，Ｄ８７，Ｄ７７）とも表現される。他の同一ブロック画像Ｂ内にて連続する部分画素列も同様に表現される。
【０３２１】
この結果、入力画像にて互いに異なるＹ方向位置に存在していた各ブロック画像（斜行ラインＥ１用の各ブロック画像）Ｂ１，Ｂ２，Ｂ３は、そのＹ方向位置が同じになるように並べ替えられる。具体的には、これらのブロック画像Ｂ１，Ｂ２，Ｂ３は、当該並べ替えによって、ＤＲＡＭ５２のラインＲ１〜Ｒ３に対応するＹ方向位置に配置される。
【０３２２】
このようにして、ＤＲＡＭ５２を用いた「ブロック相互間並べ替え処理」が実行される。
【０３２３】
その後、ＤＲＡＭ５２からの読み出し処理が行われる。この時点では、ＤＲＡＭ５２の第１ラインＲ１の画素列が読み出される（図５６の太い実線矢印参照）。より具体的には、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３に関して異なるタイミングでＤＲＡＭ５２に書き込まれていた複数のブロック内直列画素列であってＤＲＡＭ５２にて同一のライン上に互いに連続して配置されている複数のブロック内直列画素列（Ｄ９７，Ｄ８７，Ｄ７７），（Ｄ６４，Ｄ５４，Ｄ４４），（Ｄ３１，Ｄ２１，Ｄ１１）が連続して読み出される。これによって、複数のブロック画像の相互間にて複数のブロック内直列画素列（Ｄ９７，Ｄ８７，Ｄ７７），（Ｄ６４，Ｄ５４，Ｄ４４），（Ｄ３１，Ｄ２１，Ｄ１１）が連続するように、当該複数のブロック内直列画素列がＤＲＡＭ５２（同一ラインＲ１）から読み出される。
【０３２４】
また、当該読み出された複数のブロック内画素列は、そのままの順序でＳＲＡＭ５１内にて連続して（同一ライン（たとえばラインＨ３））に書き込まれる。
【０３２５】
＜第８ライン＞
つぎに、図５７に示すように、撮像部２１５からの第８のライン画素列Ｌ８のうち、（斜行ラインＥ６用の）ブロック画像Ｂ１に対応する区分範囲Ｃ３〜Ｃ１（部分画素列Ｄ３８，Ｄ２８，Ｄ１８）が、ＤＲＡＭ５２の対応領域（第８のラインＲ８の区分範囲Ｃ３〜Ｃ１）に書き込まれる（破線矢印参照）。また、撮像部２１５からの第８のライン画素列Ｌ８のうち、（斜行ラインＥ３用の）ブロック画像Ｂ２に対応する区分範囲Ｃ６〜Ｃ４（部分画素列Ｄ６８，Ｄ５８，Ｄ４８）が、ＤＲＡＭ５２の対応領域（第５のラインＲ５の区分範囲Ｃ６〜Ｃ４）に書き込まれる（破線矢印参照）。さらに、撮像部２１５からの第８のライン画素列Ｌ８のうち、（斜行ラインＥ１用の）ブロック画像Ｂ３に対応する区分範囲Ｃ９〜Ｃ７（部分画素列Ｄ９８，Ｄ８８，Ｄ７８）が、ＤＲＡＭ５２の対応領域（第２のラインＲ２の区分範囲Ｃ９〜Ｃ７）に書き込まれる（破線矢印参照）。このようにして、第８のライン画素列Ｌ８の各区分範囲Ｃ１，Ｃ２，Ｃ３に対応する部分（ブロック画像Ｂ１，Ｂ２，Ｂ３に対応する部分）がＤＲＡＭ５２上に格納される。
【０３２６】
この結果、入力画像にて互いに異なるＹ方向位置に存在していた各ブロック画像（斜行ラインＥ１用の各ブロック画像）Ｂ１，Ｂ２，Ｂ３は、そのＹ方向位置が同じになるように並べ替えられる。具体的には、これらのブロック画像Ｂ１，Ｂ２，Ｂ３は、当該並べ替えによって、ＤＲＡＭ５２のラインＲ１〜Ｒ３に対応するＹ方向位置に配置される。
【０３２７】
このようにして、ＤＲＡＭ５２を用いた「ブロック相互間並べ替え処理」が実行される。
【０３２８】
その後、ＤＲＡＭ５２からの読み出し処理が行われる。具体的には、ＤＲＡＭ５２の第２ラインＲ２の画素列が読み出される（図５７の太い実線矢印参照）。より具体的には、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３に関して異なるタイミングでＤＲＡＭ５２に書き込まれていた複数のブロック内直列画素列であってＤＲＡＭ５２にて互いに連続して配置されている複数のブロック内直列画素列（Ｄ９８，Ｄ８８，Ｄ７８），（Ｄ６５，Ｄ５５，Ｄ４５），（Ｄ３２，Ｄ２２，Ｄ１２）が連続して読み出される。これによって、複数のブロック画像の相互間にて複数のブロック内直列画素列（Ｄ９８，Ｄ８８，Ｄ７８），（Ｄ６５，Ｄ５５，Ｄ４５），（Ｄ３２，Ｄ２２，Ｄ１２）が連続するように、当該複数のブロック内直列画素列がＤＲＡＭ５２（同一ラインＲ２）から読み出される。
【０３２９】
また、当該読み出された複数のブロック内画素列は、そのままの順序でＳＲＡＭ５１内にて連続して（同一ライン（たとえばラインＨ１））に書き込まれる。なお、当該書き込み前に、ＳＲＡＭ５１内の各ラインＨｉは１つ上にずらされる。具体的には、最下段のラインＨ３は中段に移動し、中段のラインＨ２は最上段に移動し、最上段のラインＨ１は最下段の位置に戻る。このようにＳＲＡＭ５１は、循環的に利用される。
【０３３０】
＜第９ライン＞
つぎに、図５８に示すように、撮像部２１５からの第９のライン画素列Ｌ９のうち、（斜行ラインＥ７用の）ブロック画像Ｂ１に対応する区分範囲Ｃ３〜Ｃ１（部分画素列Ｄ３９，Ｄ２９，Ｄ１９）が、ＤＲＡＭ５２の対応領域（第９のラインＲ９の区分範囲Ｃ３〜Ｃ１）に書き込まれる（破線矢印参照）。また、撮像部２１５からの第９のライン画素列Ｌ９のうち、（斜行ラインＥ４用の）ブロック画像Ｂ２に対応する区分範囲Ｃ６〜Ｃ４（部分画素列Ｄ６９，Ｄ５９，Ｄ４９）が、ＤＲＡＭ５２の対応領域（第６のラインＲ６の区分範囲Ｃ６〜Ｃ４）に書き込まれる（破線矢印参照）。さらに、撮像部２１５からの第９のライン画素列Ｌ９のうち、（斜行ラインＥ１用の）ブロック画像Ｂ３に対応する区分範囲Ｃ９〜Ｃ７（部分画素列Ｄ９９，Ｄ８９，Ｄ７９）が、ＤＲＡＭ５２の対応領域（第３のラインＲ３の区分範囲Ｃ９〜Ｃ７）に書き込まれる（破線矢印参照）。このようにして、第９のライン画素列Ｌ９の各区分範囲Ｃ１，Ｃ２，Ｃ３に対応する部分（ブロック画像Ｂ１，Ｂ２，Ｂ３に対応する部分）がＤＲＡＭ５２上に格納される。
【０３３１】
この結果、入力画像にて互いに異なるＹ方向位置に存在していた各ブロック画像（斜行ラインＥ１用の各ブロック画像）Ｂ１，Ｂ２，Ｂ３は、そのＹ方向位置が同じになるように並べ替えられる。具体的には、これらのブロック画像Ｂ１，Ｂ２，Ｂ３は、当該並べ替えによって、ＤＲＡＭ５２のラインＲ１〜Ｒ３に対応するＹ方向位置に配置される。換言すれば、入力画像にて互いに異なるラインに属する複数のブロック内直列画素列が複数のブロック内直列画素列の並べ替え処理後の各目標位置（当該複数のブロック内直列画素列が直線状に配列される位置）の対応アドレスに書き込まれる。
【０３３２】
このようにして、ＤＲＡＭ５２を用いた「ブロック相互間並べ替え処理」が実行される。
【０３３３】
その後、ＤＲＡＭ５２からの読み出し処理が行われる。具体的には、ＤＲＡＭ５２の第３ラインＲ３の画素列が連続的に読み出される（図５８の太い実線矢印参照）。より具体的には、（斜行ラインＥ１用の）複数のブロック画像Ｂ１，Ｂ２，Ｂ３に関して互いに異なるタイミングでＤＲＡＭ５２に書き込まれていた複数のブロック内直列画素列であってＤＲＡＭ５２にて同一ライン上に互いに連続して配置されている複数のブロック内直列画素列（Ｄ９９，Ｄ８９，Ｄ７９），（Ｄ６６，Ｄ５６，Ｄ４６），（Ｄ３３，Ｄ２３，Ｄ１３）が連続して読み出される。これによって、複数のブロック画像の相互間にて複数のブロック内直列画素列（Ｄ９９，Ｄ８９，Ｄ７９），（Ｄ６６，Ｄ５６，Ｄ４６），（Ｄ３３，Ｄ２３，Ｄ１３）が直線状に配列されるように、当該複数のブロック内直列画素列が並べ替えられて読み出される。
【０３３４】
また、当該読み出された複数のブロック内画素列は、そのままの順序でＳＲＡＭ５１内にて連続して（同一ライン（たとえばラインＨ２））に書き込まれる。なお、当該書き込み対象のラインは、上述のように随時変更され、ＳＲＡＭ５１は、循環的に利用される。
【０３３５】
その後、ＳＲＡＭ５１からの読み出し時に「ブロック内並べ替え処理」が実質的に実行される。
【０３３６】
具体的には、ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」にて並べ替えられていた複数のブロック内直列画素列のそれぞれに関して、当該複数のブロック内直列画素列のそれぞれの内部における部分画素列Ｄの並べ替え処理が、ＳＲＡＭ５１に関するランダムアクセスを利用して行われる。詳細には、各ブロック画像内にて階段状に配置された複数の部分画素列（ＳＲＡＭ５１にて互いに連続しないアドレス（互いに異なるライン）に配置された複数の部分画素列）が連続して読み出される。これによって、各ブロック画像内の当該複数の部分画素列が直線状に配列されるように（連続して配置されるように）当該複数の部分画素列が並べ替えられて直列化画素列が生成される。
【０３３７】
たとえば、（斜行ラインＥ１用の）ブロック画像Ｂ３内にて階段状に配置された複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が連続して読み出される。これによって、ブロック画像Ｂ３内の複数の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が直線状に配列されるように当該複数の部分画素列が並べ替えられた直列化画素列が生成される。
【０３３８】
また、（斜行ラインＥ１用の）ブロック画像Ｂ２内にて階段状に配置された複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４が連続して読み出される。これによって、ブロック画像Ｂ２内の複数の部分画素列Ｄ６６，Ｄ５５，Ｄ４４が直線状に配列されるように当該複数の部分画素列が並べ替えられた直列化画素列が生成される。
【０３３９】
さらに、（斜行ラインＥ１用の）ブロック画像Ｂ１内にて階段状に配置された複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が連続して読み出される。これによって、ブロック画像Ｂ１内の複数の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が直線状に配列されるように当該複数の部分画素列が並べ替えられ直列化画素列が生成される。
【０３４０】
そして、（斜行ラインＥ１用の）全てのブロック画像Ｂ３，Ｂ２，Ｂ１にて生成された複数の直列化画素列（Ｄ９９，Ｄ８８，Ｄ７７），（Ｄ６６，Ｄ５５，Ｄ４４），（Ｄ３３，Ｄ２２，Ｄ１１）が連続して読み出される。これによって、複数のブロックから抽出された１本のライン画像Ｆ１が生成されて出力される。この際、（斜行ラインＥ１用の）ブロック画像Ｂ３，Ｂ２，Ｂ１に関する「ブロック相互間並べ替え処理」は予め終了しているので、「ブロック内並べ替え処理」もが終了することによって、１ラインの並べ替え処理が完了し、斜行ラインＥ１の補正後のライン画像Ｆ１が（直線状に配列された状態で）出力される。
【０３４１】
＜７．第７実施形態＞
第７実施形態は、第５実施形態等の変形例である。以下では、第５実施形態等との相違点を中心に説明する。
【０３４２】
第７実施形態では、図５９に示されるように、ＤＲＡＭ５２からの読み出し時（リード時）に第１の並べ替え処理Ｐ１（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。また、ＳＲＡＭ５１からの読み出し時（リード時）に第２の並べ替え処理Ｐ２（且つ「ブロック内並べ替え処理」）が実質的に実行される。端的に言えば、第７実施形態では、ＤＲＡＭリード時補正且つＳＲＡＭリード時補正が（この順序で）行われる。
【０３４３】
図６０は、第７実施形態に係る動作を概念的に示す図である。図６０においては、ライン画素列Ｌ９を撮像部２１５から読み出す際のＤＲＡＭ５２への書き込み動作（図６０の中央の破線矢印参照）、およびＤＲＡＭ５２からの（ランダムアクセスを伴う）読み出し動作（図６０の太い実線矢印参照）が概念的に示されている。また、ＳＲＡＭ５１への書き込み動作（図６０の太い実線矢印参照）、およびＳＲＡＭ５１からの（ランダムアクセスを伴う）読み出し動作（図６０の点線矢印参照）が概念的に示されている。
【０３４４】
ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」は、第５実施形態と同様にして行われればよい。具体的には、ＤＲＡＭ５２への書き込み時（ライト時）の動作は、第５実施形態におけるＤＲＡＭ５２への書き込み時の動作と同様に行われればよい。また、ＤＲＡＭ５２からの読み出し時（リード時）の動作（並べ替え動作を含む）も、第５実施形態におけるＤＲＡＭ５２からの読み出し時の動作と同様に行われればよい。
【０３４５】
また、ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」は、第６実施形態と同様にして行われればよい。具体的には、ＳＲＡＭ５１への書き込み時（ライト時）の動作は、第６実施形態におけるＳＲＡＭ５１への書き込み時の動作と同様に行われればよい。また、ＳＲＡＭ５１からの読み出し時（リード時）の動作（並べ替え動作を含む）も、第６実施形態におけるＳＲＡＭ５１からの読み出し時の動作と同様に行われればよい。
【０３４６】
＜８．第８実施形態＞
第８実施形態は、第５実施形態等の変形例である。以下では、第５実施形態等との相違点を中心に説明する。
【０３４７】
第８実施形態では、図６１に示されるように、ＤＲＡＭ５２への書き込み時（ライト時）に第１の並べ替え処理Ｐ１（且つ「ブロック相互間並べ替え処理」）が実質的に実行される。また、ＳＲＡＭ５１への書き込み時（ライト時）に第２の並べ替え処理Ｐ２（且つ「ブロック内並べ替え処理」）が実質的に実行される。端的に言えば、第８実施形態では、ＤＲＡＭライト時補正且つＳＲＡＭライト時補正が（この順序で）行われる。
【０３４８】
図６２は、第８実施形態に係る動作を概念的に示す図である。図６２においては、ライン画素列Ｌ９を撮像部２１５から読み出す際の（ランダムアクセスを伴う）ＤＲＡＭ５２への書き込み動作（図６２の破線矢印参照）、およびＤＲＡＭ５２からの読み出し動作（図６２の太い実線矢印参照）が概念的に示されている。また、（ランダムアクセスを伴う）ＳＲＡＭ５１への書き込み動作（図６２の太い実線矢印参照）、およびＳＲＡＭ５１からの読み出し動作（図６２の点線矢印参照）が概念的に示されている。
【０３４９】
ＤＲＡＭ５２を利用した「ブロック相互間並べ替え処理」は、第６実施形態と同様にして行われればよい。具体的には、ＤＲＡＭ５２への書き込み時（ライト時）の動作（並べ替え動作を含む）は、第６実施形態におけるＤＲＡＭ５２への書き込み時の動作と同様に行われればよい。また、ＤＲＡＭ５２からの読み出し時（リード時）の動作も、第６実施形態におけるＤＲＡＭ５２からの読み出し時の動作と同様に行われればよい。
【０３５０】
また、ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」は、第５実施形態と同様にして行われればよい。具体的には、ＳＲＡＭ５１への書き込み時（ライト時）の動作（並べ替え動作を含む）は、第５実施形態におけるＳＲＡＭ５１への書き込み時の動作と同様に行われればよい。また、ＳＲＡＭ５１からの読み出し時（リード時）の動作も、第５実施形態におけるＳＲＡＭ５１からの読み出し時の動作と同様に行われればよい。
【０３５１】
＜９．第９実施形態＞
第９実施形態は、第１実施形態等の変形例である。以下では、第１実施形態との相違点を中心に説明する。
【０３５２】
上記各実施形態においては、本発明が斜行補正に適用される態様が例示されているが、本発明はこれに限定されない。たとえば、本発明は画像の歪み補正に適用されてもよい。
【０３５３】
図６３は、画像歪みが発生する状況を示す図であり、図６４は、当該画像歪みを有するスキャン画像を示す概念図である。当該画像歪みは、原稿の弛み（撓み）等によって生じ得る。なお、ここでは、図６等と同様に、簡単化のため、歪み画像における変形ラインＥ１が９本のラインＬ１〜Ｌ９に亘って存在する態様について主に例示する。
【０３５４】
この実施形態においては、上述の斜行角度の検出動作に代わって、画像歪みの検出動作が実行される。画像歪みの検出動作は、検出部１５等によって行われる。
【０３５５】
具体的には、原稿のエッジ部分を検出することによって、原稿（ひいてはスキャン画像）の変形を検出する。上述の図５では、スキャン画像のエッジ部分が一定割合で（一定の斜行角度に従って）変形（謂わば「線形」に変形）している。一方、図６３においては、スキャン画像のエッジ部分が不均一に変形（謂わば「非線形」に変形）している。ＭＦＰ１０は、このような変形を検出すると、エッジ画像の形状を記憶する。具体的には、原稿のエッジ部分に対応する変形ラインＥ１の複数の代表点に関する（Ｘ，Ｙ）座標を記憶しておく。より詳細には、変形ラインＥ１を構成する複数の連続点のうち、そのＹ座標が変更される点（Ｘ方向ラインが変更される点）が区分範囲Ｃの境界であると判定されるとともに、当該境界における（Ｘ，Ｙ）座標が記録される。具体的には、基準点（Ｘ０，Ｙ０）に対してそのＹ方向位置が１ドット分変更される点（変形ラインＥ１上の点）のＸ座標Ｘ１を取得し、その点の座標（Ｘ１，Ｙ１）を記憶する（Ｙ１＝Ｙ０＋１）。同様に、そのＹ方向位置が１ドット分変更されるごとに、そのＸ方向位置Ｘｉを含む新たな座標位置（Ｘｉ，Ｙｉ）が記憶される（Ｙｉ＝Ｙ（ｉ−１）＋１）。換言すれば、相互に隣接する区分範囲Ｃの境界の点に関する座標と基準位置の座標とが記憶される。たとえば、図６４では、１０（＝９＋１）個の点の座標が記憶される。
【０３５６】
なお、変形ラインＥｉは、入力画像内にて画像歪みを伴った変形ライン（詳細には、入力画像の複数のラインに亘って階段状に配置された部分画素列で構成される変形ライン）などとも表現される。
【０３５７】
そして、このような画像に対して第１実施形態と同様の処理が実行される（図６５参照）。なお、第１実施形態では、複数の区分範囲Ｃ１〜Ｃ９に含まれる各画素数が同一であるのに対して、この第９実施形態では、複数の区分範囲Ｃ１〜Ｃ９に含まれる各画素数が必ずしも同一ではない点で、第９実施形態は第１実施形態と相違する。たとえば、各区分範囲Ｃｉに属する画素数（同一ライン上の部分画素列）は、その添え字ｉが「１」から「９」へと変化するにつれて徐々に大きくなる。ただし、その他の点ではほぼ同様の動作が実行される。
【０３５８】
このような動作によれば、変形ラインＥ１に対応する画素列が直列化して出力されることによって、新ライン画像Ｆ１が生成される。
【０３５９】
なお、上記においては、第１実施形態に係る思想を画像歪み補正処理に適用する態様について主に例示したが、これに限定されない。たとえば、第２実施形態〜第８実施形態等に係る思想を画像歪み補正処理に適用するようにしてもよい。
【０３６０】
＜１０．第１０実施形態＞
＜１０−１．概要＞
第１０実施形態は、第９実施形態等の変形例である。以下では、第９実施形態との相違点を中心に説明する。
【０３６１】
上記第９実施形態では、変形ラインＥ１は（Ｘ方向に伸びるにつれて）Ｙ方向には常に増加（あるいは常に減少）している。しかしながら、これに限定されず、変形ラインＥ１は、Ｙ方向において減少する部分とＹ方向において増加する部分とを有していてもよい。
【０３６２】
図６６は、そのような画像歪みが発生している様子を示す図である。図６６の画像歪みにおいては、区分範囲Ｃ１〜Ｃ５に関しては図の左側にいくにつれて変形ラインＥ１（各区分範囲Ｃの部分画素列Ｄ）のＹ方向位置は、徐々に下側に移動している。ただし、その後、区分範囲Ｃ５〜Ｃ９に関しては図の左側にいくにつれて変形ラインＥ１（各区分範囲Ｃの部分画素列Ｄ）のＹ方向位置は、徐々に上側に移動している。
【０３６３】
このような場合にも、上記各実施形態と同様の思想を適用することが可能である。この第１０実施形態では、第１実施形態に係る思想を図６６のような画像歪みに適用する態様について説明する。ただし、これに限定されず、たとえば、第２実施形態〜第８実施形態等に係る思想が、図６６のような画像歪み等に適用されるようにしてもよい。
【０３６４】
第１０実施形態においては、図６７に示すように、（斜行ラインＥ１用の）複数のブロック画像Ｂ１〜Ｂ３は、たとえば、入力画像内の変形ラインを構成する複数の部分画素列Ｄ９１，Ｄ８２，Ｄ７３，Ｄ６４，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１（当該入力画像の複数のＸ方向ライン（Ｘ方向に伸びるライン）Ｌ１〜Ｌ９に亘って階段状に配置された複数の部分画素列）を含むように生成される。なお、ブロック画像Ｂ１，Ｂ３のＹ方向位置は互いに同じであるものの、ブロック画像Ｂ１，Ｂ３のＹ方向位置とブロック画像Ｂ２とのＹ方向位置は互いに異なっており、３つのブロック画像Ｂ１，Ｂ２，Ｂ３は非直線状に配置されている。
【０３６５】
なお、第１０実施形態では、第９実施形態と同様に、ＳＲＡＭ５１によるブロック内並べ替え処理が実行され、ＤＲＡＭ５２によるブロック相互間並べ替え処理が行われる。
【０３６６】
＜１０−２．動作詳細＞
＜第１ライン〜第３ライン＞
まず、第１ライン画素列Ｌ１の処理（図６８）、第２ライン画素列Ｌ２の処理（図６９）および第３ライン画素列Ｌ３の処理（図７０）が、第９実施形態（および第１実施形態）と同様に実行される。具体的には、各ライン画素列Ｌ１，Ｌ２，Ｌ３が、ＳＲＡＭ５１の各ラインＨ３，Ｈ２，Ｈ１にそれぞれそのまま書き込まれる。ただし、当該各ライン画素列Ｌ１，Ｌ２，Ｌ３の区分範囲Ｃ３〜Ｃ１には元の画像内の変形ラインＥ１の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が含まれるとともに、当該各ライン画素列Ｌ１，Ｌ２，Ｌ３の区分範囲Ｃ９〜Ｃ７には元の画像内の変形ラインＥ１の部分画素列Ｄ９９，Ｄ８８，Ｄ７７が含まれる。
【０３６７】
なお、入力画像のライン画素列Ｌ１〜Ｌ３で構成される帯状の画像のうち区分範囲Ｃ３〜Ｃ１に亘る部分は、変形ラインＥ１の補正用のブロック画像であり、変形ラインＥ１用のブロック画像Ｂ１であるとも表現される。同様に、入力画像のライン画素列Ｌ１〜Ｌ３で構成される帯状の画像のうち区分範囲Ｃ９〜Ｃ７に亘る部分も、変形ラインＥ１の補正用のブロック画像であり、変形ラインＥ１用のブロック画像Ｂ３であるとも表現される。
【０３６８】
第３ライン画素列Ｌ３がＳＲＡＭ５１に書き込まれた直後においては、ＳＲＡＭ５１は、図７０の上側に示すような状態を有している。
【０３６９】
その後、ブロック内並べ替え処理がＳＲＡＭ５１からの読み出し時に実質的に実行される。具体的には、第９実施形態（および第１実施形態）と同様に、（変形ラインＥ１用の）ブロック画像Ｂ１（換言すれば、区分範囲Ｃ３〜Ｃ１）に関して、変形ラインＥ１上の部分画素列Ｄ３３，Ｄ２２，Ｄ１１が連続して読み出される。さらに、この第１０実施形態では、（変形ラインＥ１用の）ブロック画像Ｂ３（換言すれば、区分範囲Ｃ９〜Ｃ７）に関して、変形ラインＥ１上の部分画素列Ｄ９１，Ｄ８２，Ｄ７３が連続して読み出される。
【０３７０】
また、（変形ラインＥ１用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）に関して読み出された部分画素列Ｄ３３，Ｄ２２，Ｄ１１は、ＤＲＡＭ５２上のラインＲ１の区分範囲Ｃ３，Ｃ２，Ｃ１にそのまま連続して配置される。さらに、（変形ラインＥ１用の）ブロック画像Ｂ３（区分範囲Ｃ９〜Ｃ７）に関して読み出された部分画素列Ｄ９１，Ｄ８２，Ｄ７３は、ＤＲＡＭ５２上のラインＲ１の区分範囲Ｃ９，Ｃ８，Ｃ７にそのまま連続して配置される。
【０３７１】
＜第４ライン〜第５ライン＞
つぎに、第４ライン画素列Ｌ４の処理（図７１）が実行される。
【０３７２】
具体的には、ライン画素列Ｌ４が、ＳＲＡＭ５１のラインＨ３にそのまま書き込まれる。第４ライン画素列Ｌ４がＳＲＡＭ５１に書き込まれた直後においては、ＳＲＡＭ５１は、図７１の上側に示すような状態を有している。詳細には、部分画素列Ｄ９４，Ｄ８４，Ｄ７４，Ｄ６４がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ９，Ｃ８，Ｃ７，Ｃ６にそれぞれ書き込まれており、部分画素列Ｄ４４，Ｄ３４，Ｄ２４，Ｄ１４がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ４，Ｃ３，Ｃ２，Ｃ１にそれぞれ書き込まれている。
【０３７３】
その後、ブロック内並べ替え処理がＳＲＡＭ５１からの読み出し時に実質的に実行される。具体的には、（変形ラインＥ２用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）に関して、変形ラインＥ２上の部分画素列Ｄ３４，Ｄ２３，Ｄ１２が連続して読み出される。さらに、（変形ラインＥ２用の）ブロック画像Ｂ３（区分範囲Ｃ９〜Ｃ７）に関して、変形ラインＥ２上の部分画素列Ｄ９２，Ｄ８３，Ｄ７４が連続して読み出される。
【０３７４】
また、（変形ラインＥ２用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）に関して読み出された部分画素列Ｄ３４，Ｄ２３，Ｄ１２は、ＤＲＡＭ５２上のラインＲ２の区分範囲Ｃ３，Ｃ２，Ｃ１にそのまま連続して配置される。さらに、（変形ラインＥ２用の）ブロック画像Ｂ３（区分範囲Ｃ９〜Ｃ７）に関して読み出された部分画素列Ｄ９２，Ｄ８３，Ｄ７４は、ＤＲＡＭ５２上のラインＲ２の区分範囲Ｃ９，Ｃ８，Ｃ７にそのまま連続して配置される。
【０３７５】
次に、第５ライン画素列Ｌ４の処理（図７２）が同様に実行される。
【０３７６】
この結果、（変形ラインＥ３用の）ブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）に関して読み出された部分画素列Ｄ３５，Ｄ２４，Ｄ１３は、ＤＲＡＭ５２上のラインＲ３の区分範囲Ｃ３，Ｃ２，Ｃ１にそのまま連続して配置される。さらに、（変形ラインＥ３用の）ブロック画像Ｂ３（区分範囲Ｃ９〜Ｃ７）に関して読み出された部分画素列Ｄ９３，Ｄ８４，Ｄ７５は、ＤＲＡＭ５２上のラインＲ３の区分範囲Ｃ９，Ｃ８，Ｃ７にそのまま連続して配置される。
【０３７７】
＜第６ライン＞
つぎに、第６ライン画素列Ｌ６の処理（図７３）が実行される。
【０３７８】
具体的には、ライン画素列Ｌ６が、ＳＲＡＭ５１のラインＨ２にそのまま書き込まれる。第６ライン画素列Ｌ６がＳＲＡＭ５１に書き込まれた直後においては、ＳＲＡＭ５１は、図７３の上側に示すような状態を有している。詳細には、部分画素列Ｄ９６，Ｄ８６，Ｄ７６，Ｄ６６，Ｄ５６，Ｄ４６，Ｄ３６，Ｄ２６，Ｄ１６がＳＲＡＭ５１のラインＨ３の区分範囲Ｃ９〜Ｃ１にそれぞれ書き込まれている。また、ＳＲＡＭ５１の区分範囲Ｃ６〜Ｃ４には元の画像内の変形ラインＥ１の部分画素列Ｄ６４，Ｄ５５，Ｄ４４（変形ラインＥ１用のブロック画像Ｂ２に関する部分画素列）が含まれる。
【０３７９】
その後、ブロック内並べ替え処理がＳＲＡＭ５１からの読み出し時に実質的に実行される。具体的には、変形ラインＥ４用のブロック画像Ｂ１（区分範囲Ｃ３〜Ｃ１）に関して、変形ラインＥ４上の部分画素列Ｄ３６，Ｄ２５，Ｄ１４が連続して読み出される。また、変形ラインＥ４用のブロック画像Ｂ３（区分範囲Ｃ９〜Ｃ７）に関して、変形ラインＥ４上の部分画素列Ｄ９４，Ｄ８５，Ｄ７６が連続して読み出される。さらに、変形ラインＥ１用のブロック画像Ｂ２（区分範囲Ｃ６〜Ｃ４）に関して、変形ラインＥ１上の部分画素列Ｄ６４，Ｄ５５，Ｄ４４が連続して読み出される。
【０３８０】
変形ラインＥ４用のブロック画像Ｂ４（区分範囲Ｃ３〜Ｃ１）に関して読み出された部分画素列Ｄ３６，Ｄ２５，Ｄ１４（直列化画素列）は、ＤＲＡＭ５２上のラインＲ４の区分範囲Ｃ３，Ｃ２，Ｃ１にそのまま連続して書き込まれる。また、変形ラインＥ４用のブロック画像Ｂ３（区分範囲Ｃ９〜Ｃ７）に関して読み出された部分画素列Ｄ９４，Ｄ８５，Ｄ７６（直列化画素列）は、ＤＲＡＭ５２上のラインＲ４の区分範囲Ｃ９，Ｃ８，Ｃ７にそのまま連続して書き込まれる。さらに、変形ラインＥ１用のブロック画像Ｂ２（区分範囲Ｃ６〜Ｃ４）に関して読み出された部分画素列Ｄ６４，Ｄ５５，Ｄ４４（直列化画素列）は、ＤＲＡＭ５２上のラインＲ１の区分範囲Ｃ６，Ｃ５，Ｃ４にそのまま連続して書き込まれる。
【０３８１】
このようにして、ＤＲＡＭ５２への書き込み時にブロック単位での並べ替え処理が実行される。具体的には、ＳＲＡＭ５１を利用したブロック内並べ替え処理にて生成された各直列化画素列が、ＤＲＡＭ５２に関するランダムアクセスを利用して当該各直列化画素列の並べ替え処理後の各目標位置の対応アドレスに書き込まれる。
【０３８２】
図７０に示されるように、変形ラインＥ１用のブロック画像Ｂ３，Ｂ１に関して読み出された直列化画素列（Ｄ９１，Ｄ８２，Ｄ７３），（Ｄ３３，Ｄ２２，Ｄ１１）は、それぞれ、ＤＲＡＭ５２のラインＲ１（区分範囲Ｃ３，Ｃ１）に既に書き込まれている。さらに、変形ラインＥ１用のブロック画像Ｂ２に関して読み出された部分画素列Ｄ６４，Ｄ５５，Ｄ４４（直列化画素列）が、ＤＲＡＭ５２上のラインＲ１に書き込まれたことによって、変形ラインＥ１に関する全ての部分画素列Ｄ９１，Ｄ８２，Ｄ７３，Ｄ６４，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１が同一ラインＲ１上に配置される。
【０３８３】
その後、ＤＲＡＭ５２の一のラインＲ１に連続して配置されている部分画素列Ｄ９１，Ｄ８２，Ｄ７３，Ｄ６４，Ｄ５５，Ｄ４４，Ｄ３３，Ｄ２２，Ｄ１１が、連続して読み出される。換言すれば、直列化画素列（部分画素列Ｄ９１，Ｄ８２，Ｄ７３）と直列化画素列（部分画素列Ｄ６４，Ｄ５５，Ｄ４４）と直列化画素列（部分画素列Ｄ３３，Ｄ２２，Ｄ１１）とが、この順序で読み出される。これによって、変形ラインＥ１に対応する新ライン画像Ｆ１（補正後のライン画像）が後段処理部２５０に出力される。
【０３８４】
ここで、直列化画素列（部分画素列Ｄ９１，Ｄ８２，Ｄ７３）は、ライン画素列Ｌ３の読み込み処理（図７０参照）に付随して生成されＤＲＡＭ５２にラインＲ１の区分範囲Ｃ９，Ｃ８，Ｃ７に書き込まれていた直列化画素列である。また、直列化画素列（部分画素列Ｄ３３，Ｄ２２，Ｄ１１）は、ライン画素列Ｌ３の読み込み処理（図７０参照）に付随して生成されＤＲＡＭ５２にラインＲ１の区分範囲Ｃ３，Ｃ２，Ｃ１に書き込まれていた直列化画素列である。一方、直列化画素列（部分画素列Ｄ６４，Ｄ５５，Ｄ４４）は、ライン画素列Ｌ６の読み込み処理（図７３）に付随して生成されＤＲＡＭ５２にラインＲ１の区分範囲Ｃ６，Ｃ５，Ｃ４に書き込まれた直列化画素列である。
【０３８５】
＜第７ライン＞
第７のライン画素列Ｌ７の読み込み処理（図７４）に付随して上記と同様の処理が実行される。
【０３８６】
この結果、変形ラインＥ２に対応する新ライン画像Ｆ２（補正後のライン画像）が後段処理部２５０に出力される。具体的には、最終的に、ラインＲ２の区分範囲Ｃ９，Ｃ８，Ｃ７の直列化画素列（部分画素列Ｄ９２，Ｄ８３，Ｄ７４）と、ラインＲ２の区分範囲Ｃ６，Ｃ５，Ｃ４の直列化画素列（部分画素列Ｄ６５，Ｄ５６，Ｄ４５）と、ラインＲ２の区分範囲Ｃ３，Ｃ２，Ｃ１の直列化画素列（部分画素列Ｄ３４，Ｄ２３，Ｄ１２）とが、この順序で読み出される。これによって、変形ラインＥ２に対応する新ライン画像Ｆ２（補正後のライン画像）が後段処理部２５０に出力される。なお、部分画素列Ｄ９２，Ｄ８３，Ｄ７４は、ライン画素列Ｌ４の読み込み処理（図７１参照）に付随して生成されてＤＲＡＭ５２（ラインＲ２）に書き込まれていた直列化画素列であり、部分画素列Ｄ３４，Ｄ２３，Ｄ１２も、ライン画素列Ｌ４の読み込み処理（図７１参照）に付随して生成されてＤＲＡＭ５２（ラインＲ２）に書き込まれていた直列化画素列である。また、部分画素列Ｄ６５，Ｄ５６，Ｄ４５は、ライン画素列Ｌ７の読み込み処理（図７４参照）に付随して生成されてＤＲＡＭ５２（ラインＲ２）に書き込まれた直列化画素列である。
【０３８７】
その後、第８のライン画素列Ｌ８以後に関しても同様の処理が行われる。
【０３８８】
以上のような動作によれば、第９実施形態（および第１実施形態）等と同様の効果を得ることが可能である。
【０３８９】
なお、上記においては、図６６のような画像歪みを補正する補正処理に対して第１実施形態に係る思想を適用する態様について主に例示したが、これに限定されない。たとえば、第２実施形態〜第８実施形態等に係る思想を当該補正処理に適用するようにしてもよい。
【０３９０】
＜１１．その他＞
以上、この発明の実施の形態について説明したが、この発明は上記説明した内容のものに限定されるものではない。
【０３９１】
たとえば、上記各実施形態においては、（３×３）個の部分画素列Ｄで各ブロック画像Ｂｉが構成されている態様が例示されているが、これに限定されない。換言すれば、各ブロック画像Ｂｉは、（Ｎ×Ｎ）個の部分画素列Ｄで構成されるものに限定されない。各ブロック画像Ｂは、変形ラインＥ１に関する複数の部分画素列Ｄであって、所定のＹ方向位置のＮ本分のライン画像に対応し且つ連続する複数の区分範囲Ｃに関する複数の部分画素列Ｄが含まれるものであってもよい。
【０３９２】
具体的には、図７５に示すように、ブロック画像Ｂ２は、変形ラインＥ１の区分範囲Ｃ１０〜Ｃ４における複数の部分画素列Ｄ（１０，４），Ｄ９５，Ｄ８４，Ｄ７５，Ｄ６６，Ｄ５５，Ｄ４４を含む７×３の部分画素列Ｄで構成されていてもよい。このように、ブロック画像Ｂ２は、所定のＹ方向位置（ライン画素列Ｌ４〜Ｌ６に対応するＹ方向位置）のＮ本（３本）分のライン画像に対応し且つ連続する複数の区分範囲Ｃ１０〜Ｃ４に関する複数の部分画素列Ｄが含まれるものであってもよい。なお、当該複数の部分画素列Ｄ（１０，４），Ｄ９５，Ｄ８４，Ｄ７５，Ｄ６６，Ｄ５５，Ｄ４４は、非直線状に配置されている画素列である、とも表現される。このように、変形ラインＥ１は、各ブロック画像Ｂの内部において、Ｙ方向における減少とＹ方向における増加とを繰り返すものであってもよい。
【０３９３】
このような場合には、ＳＲＡＭ５１を利用した「ブロック内並べ替え処理」においては、非直線状に配置されていた複数の部分画素列が直線状に（同一ライン上に）配置されるように並べ替えられればよい。換言すれば、互いに異なるラインに配置されている２以上の部分画素列Ｄを含む複数の部分画素列が直線状に配置されるように並べ替えられればよい。
【０３９４】
また、上記各実施形態等においては、スキャン動作に関して本発明が適用される態様について説明したが、これに限定されない。たとえば、プリント動作に関して本発明が適用されるようにしてもよい。
【０３９５】
詳細には、印刷対象用紙がＭＦＰ１０内の搬送経路上にて搬送されている期間において、原稿の搬送角度のずれ（ずれ角）を検出し、当該ずれ角に応じて意図的に斜めに斜行させた画像を画像ドラム上に形成して印刷対象用紙に転写するようにしてもよい。この場合には、上記各実施形態とは逆に、入力画像が正規の画像（斜行していない画像）であり、上述の補正処理によって意図的に変形された画像（斜行している画像）が後段の処理部に出力される。
【０３９６】
より具体的には、非斜行状態の画像が、意図的に所定角度θずらされた状態で画像ドラム上に形成され、その後、当該画像ドラム上に所定角度θずれた状態の印刷対象用紙が到達する。そして、当該画像ドラム上の画像が当該印刷対象用紙上に転写されることによって、当該画像は正規の角度で印刷対象用紙上に形成される。換言すれば、当該画像は印刷対象用紙のエッジに対して平行になるように形成される。このような補正処理が実行されるようにしてもよい。
【０３９７】
この場合、補正前の画像においてＸ方向に対して逆向きに角度θずれた各斜行ラインＥｉは補正処理後の画像においてＸ方向に平行なラインに変換され、補正前の画像におけるＸ方向に平行なラインは補正処理後の画像においてＸ方向に対して角度θずれたラインに変換される。
【０３９８】
あるいは、印刷時における原稿の弛み（撓み）等に起因して発生し得る画像歪みの発生が抑制されるようにしてもよい。具体的には、印刷対象用紙がＭＦＰ１０内の搬送経路上にて搬送されている期間において、原稿の弛み（撓み）等に起因する原稿のエッジ部分の変形を検出し、当該変形に応じて意図的に変形された画像を画像ドラム上に形成して印刷対象用紙に転写するようにしてもよい。この場合には、上記各実施形態とは逆に、入力画像が正規の画像（変形していない画像）であり、上述の補正処理によって意図的に変形された画像（変形後の画像）が後段の処理部に出力される。そして、変形している印刷用紙に対して「変形後の画像」が転写されることによって、印刷用紙上に正規の画像（歪みが無い画像）が生成され得る。なお、印刷用紙がその撓み等に起因して画像ドラムに対して微小量浮いた状態であっても、画像ドラム上の帯電したトナーは、その静電気を利用して印刷用紙に対して転写されることが可能である。
【０３９９】
また、プリント動作は、画像ドラム等を用いた電子写真方式の印刷出力部によって実現されてもよいが、これに限定されず、たとえばインクジェット方式などの他の方式の印刷出力部によって実現されてもよい。インクジェット方式の印刷出力部が用いられる場合には、正規の画像に対して変形が施された画像（変形後の画像）の画像データに基づき、インクジェットノズルから噴射されたインク（変形後の画像を表す）が印刷用紙（詳細には、撓んだ（あるいは斜行した）印刷用紙）に吹き付けられればよい。
【０４００】
また、上記各実施形態においては、コントローラ９にてソフトウエアが実行されることによって補正処理が行われているが、これに限定されない。たとえば、ハードウエアロジック回路を用いて上述のような補正処理が行われてもよい。
【符号の説明】
【０４０１】
１０  ＭＦＰ
５１  ＳＲＡＭ
５２  ＤＲＡＭ
３０３  斜行角度検出用画像
３１０  入力画像
３２０  画像（出力画像）
Ｂｉ  ブロック画像
Ｃｉ  区分範囲
Ｄｉｊ  部分画素列
Ｅｉ  （入力画像における）斜行ライン（変形ライン）
Ｆｉ  （補正後の）新ライン画像
Ｈｉ  （ＳＲＡＭの）ライン
Ｌｉ  （入力画像の）ライン画素列
Ｒｉ  （ＤＲＡＭの）ライン
θ  斜行角度
【図１】
2018128937.tif 000003
【図２】
2018128937.tif 000004
【図３】
2018128937.tif 000005
【図４】
2018128937.tif 000006
【図５】
2018128937.tif 000007
【図６】
2018128937.tif 000008
【図７】
2018128937.tif 000009
【図８】
2018128937.tif 000010
【図９】
2018128937.tif 000011
【図１０】
2018128937.tif 000012
【図１１】
2018128937.tif 000013
【図１２】
2018128937.tif 000014
【図１３】
2018128937.tif 000015
【図１４】
2018128937.tif 000016
【図１５】
2018128937.tif 000017
【図１６】
2018128937.tif 000018
【図１７】
2018128937.tif 000019
【図１８】
2018128937.tif 000020
【図１９】
2018128937.tif 000021
【図２０】
2018128937.tif 000022
【図２１】
2018128937.tif 000023
【図２２】
2018128937.tif 000024
【図２３】
2018128937.tif 000025
【図２４】
2018128937.tif 000026
【図２５】
2018128937.tif 000027
【図２６】
2018128937.tif 000028
【図２７】
2018128937.tif 000029
【図２８】
2018128937.tif 000030
【図２９】
2018128937.tif 000031
【図３０】
2018128937.tif 000032
【図３１】
2018128937.tif 000033
【図３２】
2018128937.tif 000034
【図３３】
2018128937.tif 000035
【図３４】
2018128937.tif 000036
【図３５】
2018128937.tif 000037
【図３６】
2018128937.tif 000038
【図３７】
2018128937.tif 000039
【図３８】
2018128937.tif 000040
【図３９】
2018128937.tif 000041
【図４０】
2018128937.tif 000042
【図４１】
2018128937.tif 000043
【図４２】
2018128937.tif 000044
【図４３】
2018128937.tif 000045
【図４４】
2018128937.tif 000046
【図４５】
2018128937.tif 000047
【図４６】
2018128937.tif 000048
【図４７】
2018128937.tif 000049
【図４８】
2018128937.tif 000050
【図４９】
2018128937.tif 000051
【図５０】
2018128937.tif 000052
【図５１】
2018128937.tif 000053
【図５２】
2018128937.tif 000054
【図５３】
2018128937.tif 000055
【図５４】
2018128937.tif 000056
【図５５】
2018128937.tif 000057
【図５６】
2018128937.tif 000058
【図５７】
2018128937.tif 000059
【図５８】
2018128937.tif 000060
【図５９】
2018128937.tif 000061
【図６０】
2018128937.tif 000062
【図６１】
2018128937.tif 000063
【図６２】
2018128937.tif 000064
【図６３】
2018128937.tif 000065
【図６４】
2018128937.tif 000066
【図６５】
2018128937.tif 000067
【図６６】
2018128937.tif 000068
【図６７】
2018128937.tif 000069
【図６８】
2018128937.tif 000070
【図６９】
2018128937.tif 000071
【図７０】
2018128937.tif 000072
【図７１】
2018128937.tif 000073
【図７２】
2018128937.tif 000074
【図７３】
2018128937.tif 000075
【図７４】
2018128937.tif 000076
【図７５】
2018128937.tif 000077