JP2021164046A - 画像処理装置、記録装置、画像処理方法、およびプログラム - Google Patents
画像処理装置、記録装置、画像処理方法、およびプログラム Download PDFInfo
- Publication number
- JP2021164046A JP2021164046A JP2020063577A JP2020063577A JP2021164046A JP 2021164046 A JP2021164046 A JP 2021164046A JP 2020063577 A JP2020063577 A JP 2020063577A JP 2020063577 A JP2020063577 A JP 2020063577A JP 2021164046 A JP2021164046 A JP 2021164046A
- Authority
- JP
- Japan
- Prior art keywords
- image
- rectangular
- input image
- degrees
- mcu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1835—Transforming generic data
- G06K15/1842—Geometric transformations, e.g. on raster data
- G06K15/1843—Changing size or raster resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1856—Generation of the printable image characterized by its workflow
- G06K15/1861—Generation of the printable image characterized by its workflow taking account of a limited available memory space or rasterization time
- G06K15/1865—Generation of the printable image characterized by its workflow taking account of a limited available memory space or rasterization time by compressing the rasterized print data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1867—Post-processing of the composed and rasterized print image
- G06K15/1886—Storage of the print image data or of parts thereof
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Editing Of Facsimile Originals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Record Information Processing For Printing (AREA)
Abstract
【課題】メモリを節約して、入力画像を右270度回転した状態で出力すること。
【解決手段】MCUが横方向において先端から後端に並んで構成されるMCUラインが、前記横方向と交差する縦方向に並んで構成されている入力画像を右270度回転して出力することが可能な記録装置100は、前記入力画像における前記縦方向の先頭のMCUラインの画像データから順に、MCUの画像データを取得する取得し、MCUラインにおける前記後端のMCUから、前記先端のMCUへ、MCUごとに前記画像データを圧縮する処理を、MCUラインごとに行うことで、前記入力画像のJPEGデータを生成する制御をする圧縮用DMAC104と、MCUに対応するJPEGデータを、伸張および右270度回転して配置することにより画像を出力する制御をする伸張用DMAC106と、を有する。
【選択図】図10
【解決手段】MCUが横方向において先端から後端に並んで構成されるMCUラインが、前記横方向と交差する縦方向に並んで構成されている入力画像を右270度回転して出力することが可能な記録装置100は、前記入力画像における前記縦方向の先頭のMCUラインの画像データから順に、MCUの画像データを取得する取得し、MCUラインにおける前記後端のMCUから、前記先端のMCUへ、MCUごとに前記画像データを圧縮する処理を、MCUラインごとに行うことで、前記入力画像のJPEGデータを生成する制御をする圧縮用DMAC104と、MCUに対応するJPEGデータを、伸張および右270度回転して配置することにより画像を出力する制御をする伸張用DMAC106と、を有する。
【選択図】図10
Description
本開示は、画像処理装置、記録装置、画像処理方法、およびプログラムに関する。
入力画像を所定の角度だけ回転して出力する場合がある。例えば、原稿をスキャンして得られた入力画像を、レーザーまたはインクジェットなどの記録技術を用いて複写動作を行う記録装置がある。そのような装置では、入力画像を90度回転して、回転された入力画像を用紙に記録して出力を行う場合がある。入力画像を回転して出力を行う場合、使用するメモリを節約するために、入力画像を圧縮してから画像を回転する方法がある。
特許文献1には、入力画像を圧縮して得られた圧縮画像データを解析して生成された解析テーブルを用いて、圧縮画像の列データを復号して、出力する画像の行データとすることにより入力画像を90度回転する方法が記載されている。
記録装置は、用紙の搬送に応じてプリントヘッドが用紙に記録を行い、画像の端部から用紙に記録する。このため、メモリを節約して入力画像を回転して出力するには、回転後の画像における最初に記録が行われる側に対応する圧縮画像データから伸張を行って、画像を出力する必要がある。
しかしながら、特許文献1の方法では、270度回転して入力画像を出力する場合、回転後の画像における最初に記録が行われる側に対応する圧縮画像データから伸張することができない。よって、メモリを節約して入力画像を270度回転して出力することができない。
本開示の画像処理装置は、圧縮処理の単位である矩形単位が横方向において先端から後端に並んで構成される矩形ラインが、前記横方向と交差する縦方向に並んで構成されている入力画像を右270度回転して出力することが可能な画像処理装置であって、前記入力画像における、前記縦方向の先頭の前記矩形ラインの画像データから順に、前記矩形単位の画像データを取得する取得手段と、前記矩形ラインにおける前記後端の前記矩形単位から前記先端の前記矩形単位へ、前記矩形単位ごとに前記画像データを圧縮する処理を、前記矩形ラインごとに行うことで、前記入力画像の圧縮データを生成する圧縮手段と、前記矩形単位に対応する前記圧縮データを、伸張および右270度回転して配置することにより画像を出力する伸張手段と、を有することを特徴とする。
本開示の技術によれば、メモリを節約して、入力画像を右270度回転した状態で出力することができる。
以下、実施形態について詳細に説明する。
<第1の実施形態>
本実施形態では、入力画像を回転して出力する場合、入力画像を圧縮し、圧縮して得られた圧縮データを伸張後に回転して出力することにより、メモリを節約して入力画像を回転する方法について説明する。
本実施形態では、入力画像を回転して出力する場合、入力画像を圧縮し、圧縮して得られた圧縮データを伸張後に回転して出力することにより、メモリを節約して入力画像を回転する方法について説明する。
[記録装置の構成について]
図1は、本実施形態における画像処理装置としても機能する記録装置100のブロック図である。
図1は、本実施形態における画像処理装置としても機能する記録装置100のブロック図である。
CPU101は、記録装置100の各部を統括的に制御するプロセッサである。
スキャナ部102は、原稿を読み取ってRGB多値ビットマップ画像データを得るためのスキャナである。他にも、スキャナ部102はスキャナではなく、他装置から入力画像の画像データをラスタ順に得ることが可能なI/Fでもよい。スキャナ部102が原稿を読み取ることによって得られたビットマップ画像データは、メモリ110へ格納される。
JPEG圧縮器103および圧縮用DMAC104は記録装置100における画像データを圧縮する機能を有する圧縮部である。JPEG圧縮器103は、MCU単位で入力画像の画像データの圧縮処理を行う。圧縮方法はJPEG圧縮であるものとして説明するが圧縮方法はJPEGに限られない。また、JPEG圧縮器103は、内部にMCU1個分の画像データを格納できるメモリを持つ。MCUは圧縮処理の単位であり詳細は後述する。
圧縮用DMAC104は、メモリ110から、後述する順番で入力画像の非圧縮の画像データを読み込み、MCUごとにJPEG圧縮器103へ供給する。また、圧縮用DMAC104は、JPEG圧縮器103が圧縮することによって得られたJPEGデータを、メモリ110へ出力するDMAコントローラである。
JPEG伸張器105および伸張用DMAC106は記録装置100における画像データを伸張する機能を有する伸張部である。JPEG伸張器105は、MCUに対応するJPEGデータごとに、JPEGデータの伸張処理を行う。JPEG伸張器105はMCU1個分の画像データを格納できる内部メモリを持つ。また、JPEG伸張器105は内部メモリを用いてMCU内の画像データを右90度または右270度回転する機能を持つ。
伸張用DMAC106は、メモリ110から、後述する順番でJPEGデータを読み込み、JPEG伸張器105へ供給する。また、伸張用DMAC106は、JPEG伸張器105が伸張することによって得られた非圧縮画像データを、後述する順番でメモリ110へ出力する。
画像処理部107は、伸張用DMAC106によってメモリ110に出力された非圧縮画像データに対して所定の画像処理を行い、プリンタ部108の出力で用いられる二値化または他値化された量子化データを出力する。プリンタ部108は、画像処理部107によって出力された量子化データを用紙等の記録媒体に記録して出力するためのプリントヘッドを有する記録部(プリンタ)である。
図1のJPEG圧縮器103、圧縮用DMAC104、JPEG伸張器105、伸張用DMAC106、画像処理部107はASICや電子回路等のハードウェアで実現されているものとして説明する。しかし、各部の全てまたは一部の機能は、CPU101がROM(不図示)に記憶されているプログラムコードをRAM(不図示)に展開し実行することにより実現されてもよい。
メモリ110は、上記各ブロックの処理結果を格納するメモリである。バス109は、上記各ブロックと、メモリ110との間のデータ転送を行う。
[画像データの回転処理について]
図2は、記録装置100の原稿台に置かれたA4サイズの原稿が読み取られて記録媒体である用紙に記録(印刷)される様子を説明するための図である。記録装置100は、原稿をスキャンして、レーザーまたはインクジェットなどの記録技術を用いて複写動作を行う記録装置である。
図2は、記録装置100の原稿台に置かれたA4サイズの原稿が読み取られて記録媒体である用紙に記録(印刷)される様子を説明するための図である。記録装置100は、原稿をスキャンして、レーザーまたはインクジェットなどの記録技術を用いて複写動作を行う記録装置である。
図2(a)は、本実施形態の記録装置100の原稿台に置かれた原稿を上面から見た図である。図2(a)に示すように、記録装置100のスキャナ部102は、A3サイズの原稿台の短手方向の長さ(A4の長手方向の長さ)のスキャナヘッドを有している。図2(a)に示すようにA4サイズの原稿の長手方向を原稿台の短手方向に合わせるように原稿が置かれる場合がある。この場合、スキャナヘッドは原稿の長手方向に沿ったラインごとにスキャンを行い、そのスキャナヘッドが、原稿台の長手方向に沿って動作することで、横方向の長さが縦方向の長さよりも長い向きのA4サイズのスキャン画像を入力画像として得ることができる。
また、A4サイズの画像を印刷する場合、出力する用紙の向きが決まっている場合がある。例えば、用紙の長手方向が用紙の搬送方向となることがある。この場合、スキャンして得られた入力画像の画像データを右90度回転し、回転して得られた画像データに基づき、A4用紙の搬送方向の下流側からプリントヘッドが印刷を行う。
このような記録装置において、原稿をスキャンすることによって得られたA4サイズの入力画像の画像データを非圧縮で記憶できるメモリが搭載されていれば、入力画像の回転処理は、そのまますることができる。しかしながら、A4サイズの入力画像の画像データを非圧縮で格納するには600dpiのカラー画像で約100メガバイト程度のメモリ容量が必要となり、その容量のメモリを記録装置に確保することが困難な場合がある。このため、入力画像の画像データは、JPEGなどの手法を用いて圧縮された状態でメモリに格納され、圧縮されたデータを伸張時に回転して出力することで、メモリを節約した回転処理が行われる。この回転処理の詳細は後述する。
また、用紙の両面に印刷をする場合、用紙の表面を印刷した後、用紙をスイッチバック動作させることで、用紙を表裏反転させてから、用紙の裏面の印刷を行う、スイッチバック機構を有する記録装置がある。
図3は、記録装置100の、プリントヘッドと用紙の搬送路とを横から見た図である。スイッチバック動作について図3を用いて説明する。まず図3(a)に示すように、ローラAで用紙を一方(便宜上、用紙のこの一方の側を「上」と呼ぶ)から引き込んで表面の印刷を行う。次に、表面の印刷が終わって、ローラBが用紙を用紙の下側の最後まで搬送したあとに、図3(b)に示すようにローラBは、逆回転することで、用紙を「上」とは逆方向の「下」から搬送する。ローラAは表面の印刷時と同様に動作することで、図3(c)に示すように用紙の「下」からプリントヘッドへ用紙を搬送する。そして図3(d)に示すように用紙がプリントヘッドの位置まで来たら、プリントヘッドは用紙の裏面の下から印刷を行う。両面印刷時にはこのような用紙の搬送動作が行われる。
このため、例えば、図2(a)に示す「ABCD」と書かれた同じ2枚の原稿が、同じ向きに原稿台に順次置かれてスキャンされて得られた2ページ分の入力画像を、1枚の用紙の両面に印刷を行う場合を考える。この場合、図2(b)に示すように入力画像の1ページ目を右270(左90)度回転して用紙の表面に印刷を行った場合、用紙の裏面への印刷は、図2(c)に示すように、入力画像の2ページ目は右90度回転させて印刷を行う必要がある。このように印刷を行うことで画像の向きが正しくなるように両面印刷がされる。よって、入力画像の画像データに対する回転処理には、90度の回転処理だけではなく270度の回転処理が必要になる場合がある。
[比較例の圧縮処理および伸張処理]
図4は、比較例として一般的な画像の圧縮処理を説明するための図である。ここで、入力画像の画像データをJPEG圧縮する処理の比較例を説明する。入力画像の非圧縮の画像データをJPEG圧縮する際には、入力画像を縦横8画素または縦横16画素などのMCU(minimum coded unit)と呼ばれる矩形単位に分割する。横1列分のMCU群を、以降、「MCUライン」または「矩形ライン」と呼ぶ。また画像内でのMCUラインが延在している方向を画像の横方向として、横方向と交差する方向を縦方向として説明する。
図4は、比較例として一般的な画像の圧縮処理を説明するための図である。ここで、入力画像の画像データをJPEG圧縮する処理の比較例を説明する。入力画像の非圧縮の画像データをJPEG圧縮する際には、入力画像を縦横8画素または縦横16画素などのMCU(minimum coded unit)と呼ばれる矩形単位に分割する。横1列分のMCU群を、以降、「MCUライン」または「矩形ライン」と呼ぶ。また画像内でのMCUラインが延在している方向を画像の横方向として、横方向と交差する方向を縦方向として説明する。
スキャナヘッドが1ライン分の原稿を読み取って得られた画像は、入力画像の横方向の1ライン分の画像に相当する。つまりスキャナヘッドの延在する方向は、MCUラインが延在する方向と同じである。また入力画像の縦方向の先頭(上側)は、スキャナヘッドが原稿を最初に読み取って得られた画像のある側である。後述するように入力画像の圧縮は入力画像における縦方向の上側のMCUラインから行うため、入力画像の全ての非圧縮の画像データを格納可能なメモリ容量を必要としないで、入力画像の圧縮を行うことができる。
図4(a)の点線の矢印で示すように、比較例では、MCUの処理順は、入力画像の左上のMCUから、MCUをラスタ順に圧縮処理をする。またMCU内では、図4(b)の点線の矢印で示しているように、入力画像における左上端の画素を示すアドレスをSA(スタートアドレス)として、MCU内ではラスタ順に1画素ずつ走査してJPEG圧縮器に入力することで圧縮処理を行う。MCUラインの1ライン分(1MCUライン)の圧縮処理が終了すると、次の下のMCUラインの先端である左側端部のMCUから後端のMCUへ、同様に圧縮処理を行う。これを1ページ終了するまで続けることで、入力画像1ページ分のJPEGデータが作成される。つまり、MCUごと、MCUラインごとに画像データが圧縮されてJPEGデータが生成される。
図5は、MCUのサイズを説明するための図である。MCU1個分(1MCU)の画素数は、図5(b)に示すように、横の画素数がx,縦の画素数がyである。また図5(a)に示すように、入力画像における縦方向のMCUの数をn、横方向のMCUの数をmとする。つまり、画像サイズは横mx画素、縦ny画素と表すことができ、1MCUラインはm個のMCU(mMCU)で構成されることになる。
MCUには説明のため、圧縮順にa00、a01、…、a0(m−1)、a10、a11、…、a1(m−1)、…、a(n−1)(m−1)のように番号を付している。例えば、画像の縦方向の上からi番目のMCUライン(第iMCUラインとよぶ)を構成するx番目のMCUにはaixとなるように番号を付している。つまり、ai0は、第iMCUラインで最初に圧縮処理されたMCUを示し、図5の場合は、第iMCUラインの左端のMCUを指す。なお、i=0が先頭のMCUラインである。
次に比較例の伸張処理を説明する。伸張処理では、まず、JPEGデータにおける各MCUラインの最初のビット位置である開始ビット位置と、各MCUラインの開始位置の直流成分値と、を取得する必要がある。このためはじめに、それらを取得するための空デコード処理を行う。
図6は、空デコード処理を説明するためのフローチャートである。なお、図6の処理は、記録装置100のJPEG伸張器105および伸張用DMAC106が行うものとして説明する。なお、各処理の説明における記号「S」は、当該フローチャートにおけるステップであることを意味し、以後のフローチャートにおいても同様とする。
S601において伸張用DMAC106は、ループカウンタi=0と設定して処理を開始する。
S602において伸張用DMAC106は、addr[0]=0、dc[0][k]=0(k=0,1,2)と夫々の変数を設定する。addr[i]は、JPEGデータにおける第iMCUラインの開始ビット位置を示すJEPGデータのアドレス値である。dc[i][k]は、第iMCUラインの開始時の各色成分の直流成分値である。
S603において伸張用DMAC106は、JPEGデータのうち、第iMCUライン分(第iMCUラインを構成するm個のMCU)のJPEGデータをJPEG伸張器105に伸張させる。本ステップでは伸張されたデータによる画像出力は不要である。このため、本フローチャートの処理を空デコードと呼ぶ。
S604において伸張用DMAC106は、ループカウンタiをインクリメントする。
S605において伸張用DMAC106は、S603の空デコード処理の結果として得られる、JPEGデータにおける第iMCUラインの開始ビット位置addr[i]と、直流成分値dc[i][k]と、を取得して記憶させる。つまり、処理対象である第iMCUラインを構成するMCUのうち「最初のMCU」である左端のMCU内の開始位置を示すJPEGデータのビット位置と、第iMCUラインの開始位置の画素の各色成分の直流成分値の情報とが取得される。k=0,1,2はそれぞれ、Y成分、Cb成分、Cr成分を指す。
このフローチャートの終了後に行われるJPEGデータから非圧縮画像を出力するための伸張処理では、第iMCUラインの先頭のJPEGデータから伸張処理を行う。第iMCUラインの先頭からJPEGデータの伸張を行うには、それぞれのMCUラインの開始ビット位置addr[i]と、直流成分値dc[i][k]の情報が必要であるため本ステップで取得される。
S606において伸張用DMAC106は、JPEGデータの全て、即ち、nMCUライン分のaddr[i]と、直流成分値dc[i][k]とを取得したかを判定する。nMCUライン分の値を取得している場合(S606がYES)、本フローチャートの処理を終了する。nMCUライン分の値を取得していなければ(S606がNO)、S603へ戻りS603〜S606の処理を繰り返す。以上の図6のフローにより、各MCUラインの開始ビット位置とMCUラインの開始位置の直流成分値とを取得できる。
次に、図7のフローチャートを用いて、入力画像を回転して出力するための比較例の伸張処理を説明する。図7の処理は説明の便宜上、記録装置100のJPEG伸張器105および伸張用DMAC106が行うものとして説明する。
S701において伸張用DMAC106は、カウンタj=0と設定する。なお、カウンタjは入力画像の1バンド分の画像が回転して出力されると、インクリメントされる。
S702において伸張用DMAC106は、ny×px画素のサイズの入力画像内の領域である1バンドの画素値を非圧縮で格納できる領域をメモリ内にバンドメモリBとして確保する。なお、p<mである。
図8は入力画像のMCUの位置と、出力される画像のMCUの位置とを説明するための図である。図8(a)は、入力画像のMCUの位置を示す図である。図8(a)に示すように、1バンドは、入力画像の横pMCU、縦nMCUラインのサイズの領域を構成する画素である。
なお、バンドメモリBは本フローチャートの処理の前に予め確保してもよい。またj≧1の場合は本ステップではj−1番目の処理で用いられたバンドメモリBが解放されるのを待つ。
S703において伸張用DMAC106は、カウンタi=0と設定する。
S704において伸張用DMAC106は、addr[i]のビット位置から、直流成分値dc[i][k](k=0,1,2)を用いてJPEGデータを伸張する。伸張用DMAC106は、第iMCUラインに含まれるMCUのうち、連続するp個分のMCUのJPEGデータを伸張処理する。具体的には、第iMCUラインのai(p×j)のMCUから連続するp個分のMCUのJEPGデータだけ伸張処理を行う。この比較例における圧縮処理では、入力画像の第iMCUラインの左端のMCUから右端のMCUへMCUの画像データが圧縮されている。このため、入力画像の左端のMCUがiMCUラインにおける0番目のMCUであり、伸張用DMAC106は、p×j番目から右へp個のMCUのJPEGデータを伸張させる。
図8(a)は入力画像のMCUの位置を示す図である。j=0、i=0の場合、本ステップまで処理を完了した結果、a00からa0(p−1)までのpMCU分のJPEGデータの伸張処理が完了したことになる。
S705において伸張用DMAC106は、伸張後のデータをMCUごとに右90度回転して、バンドメモリBの所定アドレスに、伸張して得られたデータ(画素値)を格納する。図8の(c)に示すように、伸張後の各MCUの画素値について、JPEG伸張器105内で出力順を制御することでMCU単位で回転する処理が行われる。そして、図8(d)に示すように伸張されて回転されたMCU内の画素値が画像内の所定位置に配置されるように、画素値をバンドメモリBに格納する。画像内の所定位置とは、図8(e)に示すように画像内の右上端から順にMCPが配置されるような位置である。
S706の開始時において、第iMCUラインのMCUp個分のJPEGデータが伸張処理された状態にある。S706において伸張用DMAC106は、本ステップの処理開始時点において、最後に伸張処理がされたJPEGデータのビット位置(JPEGデータ内の開始位置からのビット位置)をaddr[i]に格納する。また、伸張用DMAC106は、この時点の直流成分値をdc[i][k]に格納する。こうして、それぞれaddr[i]とdc[i][k]とを更新する。
更新されたaddr[i]およびdc[i][k]は、jがインクリメントされた後のS704のi番目の伸張処理に使用される。j≧1の場合、つまり2個目以降のバンドの画像を出力する際のS704では、前回の(j−1)におけるS706で更新されたaddr[i]およびdc[i][k]を用いて伸張処理が行われる。
JPEG圧縮のアルゴリズムはラスタ順に行われる処理である。つまり、図5に示すように、i=0のMCUラインでは、a00のMCUからa0(m−1)のMCUの順に圧縮処理が行われる。このため、最初を除くJPEGデータの伸張処理を行うためには、その処理対象のMCUよりも1つ前に圧縮処理されたMCUのJEPGデータを伸張して得られた各値を参照する必要がある。比較例の場合、MCUに対応するJPEGデータを伸張するには、そのMCUの左隣(左端MCUではひとつ上のMCUラインの右端)のMCUのJEPGデータを伸張して得られた各値が必要となる。
S707において伸張用DMAC106は、カウンタiをインクリメントする。
S708において伸張用DMAC106は、入力画像の最後のn番目のMCUラインのJPEGデータの伸張処理が完了したかを判定する。n番目のMCUラインの処理が完了していない場合、つまりi=nでない場合(S708がNO)、S704へ戻りS704〜S708を繰り返す。
n番目のMCUラインまで処理が完了している場合、つまりi=nの場合(S708がYES)、入力画像の1バンド分の画像が右90度回転された、非圧縮画像のデータがバンドメモリB内に格納されたことになる。このためS709に進み、伸張用DMAC106は、カウンタjをインクリメントする。
S709までの処理が終了すると、縦全部(n個)×MCU横p個分の1バンドに対応するJPEGデータが伸張されて90度回転されてバンドメモリB内に格納された状態になる。つまり、j=0の場合、バンドメモリBには、縦はa00からa(n−1)0まで、横はa00からa0(p−1)までのMCU分のJPEGデータが伸張されて、回転されたMCP内の画素が図8(e)に示すように配置された状態になる。
回転された1バンドの非圧縮画像が生成されるごとに、その回転された1バンド分の非圧縮画像データが画像処理部107に出力されて、プリンタ部108によってプリントされる。よって、非圧縮画像データを格納するためのバンドメモリBは1バンドの非圧縮画像データが格納可能なメモリ容量だけでよいため、全画像の非圧縮画像データを格納するためのメモリ容量は必要がない。よって、比較例でも、省メモリで、入力画像の右90度回転処理を行うことはできる。
S710では入力画像の回転処理が終了したかの判定が行われる。j≧m/pであれば、入力画像の画像データの全面の回転処理が終了したことになる(S710がYES)ので、本フローチャートを終了する。処理が終了していない場合(S710がNO)、S702へ戻り次の1バンドに対応するJPEGデータの伸張処理が行われる。
以上の説明したように、比較例の方法でも、入力画像を右90度回転して出力する場合、1ページ分の非圧縮画像データを格納するページメモリよりも少ないメモリ容量であるバンドメモリBで出力を行うことができる。このため、図2(a)のような配置で原稿のスキャンを行う場合は、図2(c)のような右90度回転時には、比較例の処理がそのまま適用可能である。
しかしながら、図2(b)のような左90度回転(=右270度回転)の場合、入力画像の縦方向の上側に対応するJPEGデータから伸張しようとすると、比較例では、伸張処理をすることができないという問題がある。
図9は、比較例の方法で圧縮した場合に、右270度回転して入力画像を出力するための、伸張処理を説明するための図である。図9(a)、(b)に示すように、比較例では、画像の左上端のMCUから、MCUごとにラスタ順で入力画像の圧縮処理が行われる。図9(b)および(c)のMCUには、MCUを識別するために図6と同じように圧縮順の番号を付している。
回転後の画像の上側から出力されるようにJPEGデータを伸張するには、最初の1バンドの処理時である図7におけるj=0の場合、i番目のMCUラインについては、ai(m−p)〜ai(m−1)のJEPGデータを伸張する必要がある。
図9(b)に示すように、例えば、a0(m−p)のMCU内のデータを伸張するためには、1つ前に圧縮処理されたMCUであるa0(m−p−1)のMCU内のJEPGデータを伸張処理した結果得られる開始ビット位置および直流成分値が必要である。しかし、a0(m−p−1)のMCUは、次の1バンドを伸張する際に伸張されるMCUであるから、a0(m−p−1)を伸張処理した結果を取得することができない。このため、比較例では、入力画像を圧縮してから、右270度回転する場合に回転後の画像の上側に対応するJEPGデータから伸張しようとすると、MCUの伸張に必要な、MCUの開始ビット位置および直流成分値を取得できない。
なお、バンドメモリで右270度回転を行う方法としては、初めにJPEGデータ全体を伸張し、出力に必要な1バンドの分の出力結果のみを切り出してメモリへ回転出力し、それ以外はメモリへ出力せずに回路内で消去するという方法が考えられる。しかし、この方法では、入力画像のバンドの数と同じ数だけJPEGデータ全体を伸張する必要がある。このため、比較例の入力画像を右90度回転する処理に比べ、処理時間やメモリ帯域が多く必要になるという問題がある。
[本実施形態の圧縮処理について]
比較例の方法で入力画像を右270度回転して出力にようとすると、JPEG圧縮時の処理順とは逆の順番でMCUごとの伸張処理を行う必要がある。前述したように伸張処理では前画素の伸張した結果が必要であるから比較例の方法ではメモリを節約して270度回転することができない。このため本実施形態では、出力時の回転角度に応じて、圧縮時の処理順を変更する。
比較例の方法で入力画像を右270度回転して出力にようとすると、JPEG圧縮時の処理順とは逆の順番でMCUごとの伸張処理を行う必要がある。前述したように伸張処理では前画素の伸張した結果が必要であるから比較例の方法ではメモリを節約して270度回転することができない。このため本実施形態では、出力時の回転角度に応じて、圧縮時の処理順を変更する。
図10は、本実施形態における入力画像を圧縮する処理順を説明するための図である。図10(a)に示すように、入力画像を右270度回転して出力する場合、MCUライン内におけるMCUを処理する順番を左側とは反対側の右側の端部のMCUから左のMCUへ順に行う方法に変更する。この方法で圧縮処理することで、高速かつ使用するメモリ領域を少なくして、入力画像を右270度回転する処理を行うことができる。
特に印刷を行うために作成されるJPEGデータは外部へ出力されることがない。よって、図10(a)の順番でMCUの圧縮処理を行うことにより生じる問題は少ない。以下の本実施形態の圧縮処理について具体的に説明する。
始めに圧縮用DMAC104の動作の概要について説明する。スキャナ部102が原稿をスキャンすることによって得られた入力画像の非圧縮の画像データはラスタ順にメモリ110に入力される。圧縮用DMAC104は、メモリ110に入力された画像データを、MCU単位に各画素値を取得して、JPEG圧縮器103へ供給する。圧縮用DMAC104は、JPEG圧縮器が圧縮することにより得られたJPEGデータを、JPEG圧縮器103へ供給したMCU順に、メモリ110内の別アドレスへ連続で出力する。
あらかじめメモリ110には各8bitのRGB画素値がスタートアドレスSAから点順次に並んでいる。図5で説明したように、1MCUの横幅をx画素、縦幅をyラインとし、入力画像は横m個×縦n個のMCUで構成されるものとすると、入力画像のサイズは横mx×縦ny画素となる。この場合、MCUの横幅のバイト数は3xバイトとなる。
図11は、JPEGデータ圧縮時における、本実施形態の圧縮用DMAC104の動作を説明するためのフローチャートである。はじめに、入力画像を右90度回転して出力する場合における、本実施形態の圧縮用DMAC104の処理について説明する。
S1101において圧縮用DMAC104は、カレントアドレスCA=SAと設定して処理開始する。図12は本実施形態の圧縮処理を説明するための図である。図12(a)は、右90度回転して出力する場合の、JPEG圧縮順を説明するための図である。図12(a)に示すように、SAが示す入力画像の位置は、画像の左上端の画素として説明する。
次に、S1105〜S1107の処理をy回繰り返すS1104〜S1108のループ処理の説明をする。S1105では圧縮用DMAC104は、カレントアドレスCAから始まる連続した3xバイトの入力画像の画像データを読み出してJPEG圧縮器103に供給する。読み出し後、カレントアドレスCAには読み出した分のバイト数である3xバイトを加算してCAを更新する。
S1106では、S1104〜S1108のループ処理におけるy回目の処理であるかが判定される。
y回目の処理ではない場合(S1106がNO)、S1107において圧縮用DMAC104は、本ステップ開始時のカレントアドレスCAにoff1バイトを加算してCAを更新する。右90回転時は、off1=3(m−1)xである。図12(a)に示すように、off1バイトの加算により、カレントアドレスCAが示す入力画像の位置は、同MCU内の次のラインの左端の画素に移動する。
y回目の処理の場合(S1106がYES)、S1107をスキップしてS1104〜S1108のループ処理を終了する。このS1104〜S1108のループ処理を行うことで、1MCU分の入力画像の画像データが、JPEG圧縮器103に供給される。JPEG圧縮器103は入力されるMCUに対して連続してJPEG圧縮処理を行う。この時点でカレントアドレスCAが示す画像内の位置はMCUの右下端画素の次の画素になる。
次に、S1104〜S1110の処理をm回繰り返すS1103〜S1111のループ処理の説明を行う。
前述したS1104〜S1108のループ処理の終了後、S1109においてS1103〜S1111のループ処理におけるm回目の処理か判定される。
m回目の処理ではない場合(S1109がNO)、S1110において圧縮用DMAC104は、カレントアドレスCAにoff2バイトを加算してCAを更新する。右90回転時は、off2=−3mx(y−1)である。off2バイトの加算により、カレントアドレスCAが示す入力画像における位置は、図12(a)に示すように、1つ右のMCU内の左上端の画素になる。
m回目の処理の場合(S1109がYES)、S1110をスキップしてS1103〜S1111のループ処理を終了する。このS1103〜S1111のループ処理を行うことで、入力画像の1MCUライン分のデータが、JPEG圧縮器103へ入力されたことになる。よって、この時点で、ここまでに圧縮した入力画像のうちの1MCUライン分の非圧縮画像を保存しているメモリ領域は、データを消去して解放してよい。ここで、入力画像の次のMCUラインの画像データが取得されておらず、メモリ110内にない場合は、メモリに入力画像の画像データが記憶されるまで待ってから次の処理に進む。
次に、S1103〜S1112の処理をn回繰り返すS1102〜S1113のループ処理の説明を行う。S1102〜S1113のループ処理では、前述したS1103〜S1111のループ処理の終了後、S1112において圧縮用DMAC104は、カレントアドレスCAにoff3バイトを加算してCAを更新する。
次の1MCUライン分の入力画像の画像データが、前の1MCUライン分の入力画像の画像データと連続したメモリ領域に保存されている場合はoff3=0である。次の1MCUライン分の入力画像が、新たなメモリ領域に格納された場合は、off3=「そのメモリ領域の開始アドレス」−CAである。off3バイトの加算により、カレントアドレスCAが示す入力画像における位置は、図12(a)に示すように、次の下のMCUラインの左端のMCU内の左上端の画素になる。
このS1102〜S1113のループ処理を行うことで、nMCUライン分の画像データ、つまり入力画像全体の画像データがJPEG圧縮器103へ入力され、入力画像のJPEGデータがメモリ内に生成されたことになる。
次に、右270度回転の伸張出力時の圧縮用DMAC104の動作を、図11のフローチャートを使用して説明する。右90度回転時との処理の違いは、CAに加算する値が異なる点である。このため、右90度回転の伸張出力時との差分を中心に説明する。
S1101において圧縮用DMAC104は、カレントアドレスCA=SA+3(m−1)xとして処理開始する。図12(b)は、右270度回転の場合の、JPEG圧縮順を説明するための図である。図12(b)に示すように、本ステップの処理後のCAが示す入力画像における位置は、入力画像の右上端のMCU内の左上端の画素になる。
S1105において圧縮用DMAC104は、カレントアドレスCAから始まる連続した3xバイトを読み出す。読み出し後、カレントアドレスCAには読み出した分の3xバイトを加算してCAを更新する。
S1107において圧縮用DMAC104は、本ステップ開始時のカレントアドレスCAにoff1バイトを加算してCAを更新する。270度回転の場合も、off1=3(m−1)xである。off1の加算により、カレントアドレスCAが示す画像内の位置は図12(b)に示すように同MCU内の次のラインの左端の画素になる。
S1104〜S1108のループ処理を行うことで、1MCU分の入力画像データがJPEG圧縮器103に供給される。
S1110では圧縮用DMAC104は、本ステップ開始時のカレントアドレスCAにoff2バイトを加算してCAを更新する。ただし270度回転の場合、off2=−3mx(y−1)−6xである。off2バイトの加算により、カレントアドレスCAが示す画像内の位置は、図12(b)に示すようにMCU内の右下端の次の画素から、1つ左のMCU内の左上端の画素になる。
S1103〜S1111のループ処理を行うことで、入力画像の1MCUライン分のデータが、右90度回転時とは逆に右から左のMCU順でJPEG圧縮器103へ入力されたことになる。
S1110では圧縮用DMAC104は、本ステップ処理時のカレントアドレスCAにoff3バイトを加算してCAを更新する。次の1MCUライン分の入力非圧縮画像が、前の1MCUライン分の非圧縮画像と連続したメモリ領域にある場合はoff3=6(m−1)xである。新たなメモリ領域に格納された場合は、off3=「そのメモリ領域の開始アドレス」−CA+3(m−1)xである。つまり、off3バイトの加算により、カレントアドレスCAが示す画像内の位置は図12(b)に示すように次のMCUラインの右端のMCU内の左上端の画素になる。
S1102〜S1113のループ処理を行うことで、入力画像全体がJPEG圧縮器103へ入力されたことになる。
[本実施形態の伸張処理について]
図11のフローチャートによって生成された右270度回転して出力する場合のJPEGデータは、比較例の圧縮処理で説明した通常のJPEG圧縮時のMCUの圧縮順とは異なる圧縮順で生成されている。また、一般的なJPEGデコーダは、比較例の伸張処理で説明したように通常のJPEG圧縮時のMCUの圧縮順を前提にJPEGデータを伸張処理する。このため、図11のフローチャートによって生成された右270度回転用のJPEGデータを、一般的なJPEGデコーダでは正しく画像として出力することはできない。
図11のフローチャートによって生成された右270度回転して出力する場合のJPEGデータは、比較例の圧縮処理で説明した通常のJPEG圧縮時のMCUの圧縮順とは異なる圧縮順で生成されている。また、一般的なJPEGデコーダは、比較例の伸張処理で説明したように通常のJPEG圧縮時のMCUの圧縮順を前提にJPEGデータを伸張処理する。このため、図11のフローチャートによって生成された右270度回転用のJPEGデータを、一般的なJPEGデコーダでは正しく画像として出力することはできない。
本実施形態では、JPEG伸張器105と伸張用DMAC106とは、図11のフローチャートに基づき生成された右270度回転のJPEGデータを、適切に画像として出力するために伸張する処理を行う。
はじめに、本実施形態においても比較例と同様に、伸張用DMAC106は、図6のフローに従って空デコード処理を行う。図6のフローチャートでは、JPEGデータにおける第iMCUラインの開始ビット位置と、第iMCUライン開始時の直流成分値と、を取得する必要がある。このため、本実施形態の伸張用DMAC106が行う図6の空デコード処理では、右90度回転して出力するために生成されたJPEGデータの場合、第iMCUラインの「最初のMCU」は入力画像における第iMCUラインの左端のMCUとなる。一方、右270度回転して出力するために生成されたJPEGデータの場合、第iMCUラインの「最初のMCU」は、入力画像における第iMCUラインの右端のMCUになる。
図6のフローチャートを実行することによって、JPEGデータにおける第iMCUラインにおける開始ビット位置addr[i]と、第iMCUライン開始時の直流成分値dc[0][k](k=0,1,2)と、が得られる。
次に、本実施形態の画像出力するための伸張処理における伸張用DMAC106およびJPEG伸張器105の動作の概要を説明する。伸張用DMAC106の動作は圧縮用DMAC104とは逆となる。即ち、伸張用DMAC106は、メモリ110内の指定アドレスから連続的にJPEGデータを取得してJPEG伸張器105へ供給する。JPEG伸張器105は、MCU1個分の伸張画像データを格納および回転できる内部メモリを持つ。JPEG伸張器105は、供給されたJPEGデータに対してMCU単位の伸張処理を行って内部メモリに格納した後、出力する際の回転角度(右90度または右270度)だけ回転した非圧縮画像をMCU内のラスタ順に伸張用DMAC106へ出力する。伸張用DMAC106は、取得したMCU単位の非圧縮画像データを、図15に示すフローで決定されたメモリ110内の所定のアドレスに格納して画像内の所定の画素に画素値が配置されるように出力する。
図13はJPEG伸張器105と伸張用DMAC106とによって行われる本実施形態の画像出力するための伸張処理を説明するためのフローチャートである。図13のフローチャートの処理は比較例の図7のフローチャートと同様の処理である。
はじめに入力画像を右270度回転して出力する場合について説明する。S1301〜S1303の処理は、S701〜S703の処理と同様である。なおS1302では、1バンドの非圧縮画像データが記憶可能な3nypxバイト(ただしpはmより小さい整数)サイズのバンドメモリBがメモリ110内に確保される。またバンドメモリBの先頭アドレスをSAとする。j≧1の場合は、S1302ではバンドメモリBが解放されるのを待つ。
図14は、本実施形態の伸張処理を説明するための図である。図14(a)は、入力画像を右90度回転して出力する場合のバンドメモリBのアドレスが示す出力画像の位置を説明する図である。図14(b)は、入力画像を右270度回転して出力する場合のバンドメモリBのアドレスが示す出力画像の位置を説明する図である。図14(a4)および図14(b4)に示すとおり、SAが示す出力画像での位置は左上端の画素であるものとして説明する。
S1304において伸張用DMAC106は、第iMCUラインのJPEGデータを、開始ビット位置addr[i]から連続して、JPEG伸張器105へ供給する。JPEG伸張器105は、開始ビット位置からp個分のMCUに対応する圧縮データを伸張する。j=0の場合、addr[i]は、図6の空デコード処理によって取得された開始ビット位置である。
S1305においてJPEG伸張器105は、JEPGデータを伸張して得られたデータ(非圧縮画像データ)をMCUごとに右270回転して伸張用DMAC106へ出力する。伸張用DMAC106は、バンドメモリBの所定のアドレスに回転したMCU内の非圧縮画像データを格納する。
なお、S1304〜S1305では、1MCUの処理が行われるごとにS1305へ進み伸張処理されたMCU内のデータに対して処理が行われる。そうしてp個分のMCU内の回転された非圧縮画像データがバンドメモリBに書き込まれる。
S1304およびS1305の処理について、JPEG伸張器105による1MCU分のJPEGデータの処理に注目して図14(b)を用いて説明する。図14(b1)に示すように、JPEG伸張器105の内部メモリに、伸張された結果得られた1MCU分の非圧縮画像データがラスタ順に出力される。そして、図14(b2)に示すように、MCU分の非圧縮画像データが右270度回転された後、図14(b3)に示すように、回転後のMCU分の非圧縮画像データがラスタ順に伸張用DMAC106に出力される。伸張用DMAC106は、回転された非圧縮画像データを、図15に示すフローチャートに従って決定されたバンドメモリBの所定のアドレスに書き込こむ。なお回転と伸張の順番は逆でもよい。
図15は、伸張用DMAC106およびJPEG伸張器105が伸張して得られた非圧縮画像データを書き込むためのバンドメモリBのアドレスを決定するためのフローチャートである。まず初めに、右270度回転の場合について説明する。
S1501において伸張用DMAC106は、カレントアドレスCAに初期値を設定する。
回転角度が右270度の場合、初期値はSAである。
次に、S1505〜S1507の処理をy回繰り返すS1504〜S1508のループ処理の説明をする。S1501の後、図13のS1305では、JPEG伸張器105からMCU内でのラスタ順に出力される3yバイト分の非圧縮画像データが、バンドメモリBのカレントアドレスCAから連続して書き込まれる。S1505において伸張用DMAC106は、バンドメモリBに3yバイトが書き込まれると、3yバイトをCAに加算してCAを更新する。
S1506では、S1504〜S1508のループ処理におけるx回目の処理であるかが判定される。
x回目の処理ではない場合(S1506がNO)、S1507において伸張用DMAC106は、本ステップの開始時のカレントアドレスCAにoff1バイトを加算してCAを更新する。回転角度が右270度の場合、off1=3(n−1)yである。図14(b4)に示すように、off1バイトの加算により、カレントアドレスCAが示す画像内の位置は同MCU内の次のラインの左端の画素になる。
x回目の処理の場合(S1506がYES)、S1507をスキップしてS1504〜S1508のループ処理を終了する。S1504〜S1508のループ処理が終了した時点で、1MCU分の非圧縮画像データが、バンドメモリBに書き込まれている。この時点でカレントアドレスCAが示す画像内の位置はデータを格納したMCU内の右下端の画素の右の画素となる。
次に、図15のS1504〜S1510の処理をp回繰り返すS1503〜S1511のループ処理の説明を行う。前述したS1504〜S1508のループ処理の終了後、S1509においてS1503〜S1511のループ処理におけるp回目の処理か判定される。
p回目の処理ではない場合(S1509がNO)、S1510において伸張用DMAC106は、カレントアドレスCAにoff2バイトを加算してCAを更新する。回転角度が右270度の場合、off2=3(n−1)yである。本ステップの処理の結果、カレントアドレスCAが示す画像内の位置は、図14(b4)に示すように、ひとつ下のMCUの左上端の画素になる。
p回目の処理の場合(S1509がYES)、S1510をスキップしてS1503〜S1511のループ処理を終了する。S1503〜1511のループ処理の終了時点で、入力画像の1MCUラインの内の連続するp個分のMCUのデータが、JPEG伸張器105から出力されて、バンドメモリBに書き込まれていることになる。
1MCUラインの内の連続するp個分のMCUのデータが、JPEG伸張器105から出力されて、バンドメモリBに書き込まれた時点で、図13のフローチャートではS1306に進む。S1306はS706と同様の処理であり、伸張用DMAC106は、S1306の処理の時点の、第iMCUラインにおける開始ビット位置addr[i]と直流成分値dc[i][k](k=0,1,2)とを更新する。これらの値は、jをインクリメントした後の次の1バンドの処理時に利用される。
次に、図15のフローチャートにおける、S1503〜S1512の処理をn回繰り返すS1502〜S1513のループ処理の説明を行う。S1502〜S1513のループ処理では、前述したS1503〜S1511のループ処理の終了後、S1512において伸張用DMAC106は、カレントアドレスCAにoff3バイトを加算してCAを更新する。回転角度が右270度の場合、off3=−3ny(px−1)である。本ステップの処理の結果、カレントアドレスCAのアドレスが示す画像内の位置は、図14(b4)に示すように、1つ右の列の上端のMCU内における左上端の画素となる。一方、S1512の時点で図13のS1307では伸張用DMAC106は、iをインクリメントする。
このS1502〜S1513のループ処理が終了した時点で、入力画像における横pMCU個分の幅の1バンドの画像が、右270度回転されてバンドメモリBへ出力されたことになる。また、この時点で、図13のフローチャートではS1308の判定においてYESと判定される。
図13のS1309ではjがインクリメントされる。そして、入力画像の次の1バンドに対応するJPEGデータがある場合(1310がNO)、S1302に戻る。その場合、図15のフローチャートではS1501から処理が再度行われる。jをインクリメントした後の処理では、MCUラインの先頭のMCUを0番目とすると、jp番目から(1+j)p−1番目までのp個のMCUで構成される1バンドのJPEGデータが伸張処理の対象となる。
入力画像の次の1バンドに対応するJPEGデータがない場合(1310がYES)は、全入力画像が回転されて出力されたことになるため処理を終了する。
次に出力する際の回転角度が右90度の場合の図13および図15のフローチャートの処理について説明する。右270度回転時との処理の主な違いは、図13では伸張時の回転角度、図15ではCAに加算する値が異なる点である。このため、右270度回転の伸張出力時との差分を中心に説明する。
S1304およびS1305の処理については図14(a1)を用いて説明する。JPEG伸張器105の内部メモリに、伸張された結果得られた1MCU内の非圧縮画像データをラスタ順に出力する。そして、図14(a2)に示すように1MCU内の非圧縮画像データが右90度回転された後、図14(a3)に示すように回転後のMCU内のデータがラスタ順に伸張用DMAC106に出力される。
S1305においてJPEG伸張器105は、伸張処理されたデータをMCUごとに右90度回転して伸張用DMAC106へ出力する。伸張用DMAC106は、バンドメモリBの所定のアドレスに回転したMCU内のデータを格納する。
図15のフローチャートでは、S1501において伸張用DMAC106は、カレントアドレスCAに初期値を設定する。回転角度が右90度の場合、初期値はSA+3(n−1)である。図14(a4)に示すように、カレントアドレスCAが示す画像内の位置は右上端にあるMCU内の左上端の画素である。
S1507では伸張用DMAC106は、本ステップの開始時のカレントアドレスCAに値off1バイトを加算してCAを更新する。回転角度が右90度の場合、270度の場合と同じoff1=3(n−1)yである。図14(a4)に示すように、off1バイトの加算により、カレントアドレスCAが示す画像内の位置は同MCU内の次のラインの左端の画素になる。
S1510では伸張用DMAC106は、カレントアドレスCAに値off2バイトを加算してCAを更新する。回転角度が右90度の場合、270度の場合と同じoff2=3(n−1)yである。本ステップの処理の結果、カレントアドレスCAが示す画像内の位置は、図14(a4)に示すように、ひとつ下のMCU内の左上端の画素となる。
S1512では伸張用DMAC106は、カレントアドレスCAに値off3バイトを加算してCAを更新する。回転角度が右90度の場合、off3=3y(n−2−xpn)である。本ステップの処理の結果、カレントアドレスCAが示す画像内の位置は、図14(a4)に示すように、次の左のMCUの列における上端のMCU内の左上端の画素となる。
このように、本実施形態の伸張処理では、図13の処理をS1308の判定において最終のMCUラインまで行ったと判定されるまで、図15の処理ではS1502〜S1513のループ処理が終了するまで、処理が行われる。このように処理することで、入力画像における横pMCU個分の幅の1バンドの非圧縮の画像が、右90度または270度回転された状態で、バンドメモリB内に生成されることになる。その時点のバンドメモリBに記憶された画像に基づき、プリンタ部108によって印刷が行われる。その後バンドメモリBを解放して、図13のフローチャートではjをインクリメントしてS1302に戻る。図15のフローチャートでは再度S1501から処理を開始することで、次の横pMCU個分の1バンドの非圧縮の画像が右90度または270度回転された状態でバンドメモリB内に生成される。
本実施形態では、JPEGデータを伸張時に右270度回転して出力する場合における入力画像を圧縮する順番は、JPEGデータを伸張時に右90度回転して出力する場合における入力画像の圧縮順と異ならせる。こうすることで、入力画像を右270度回転して出力する場合であっても回転後の画像の上側のバンドから出力することが可能となる。このため、入力画像全体のJPEGデータが格納可能なメモリ容量とバンドメモリBのメモリ容量とを合計した大きさのメモリ容量だけで、入力画像を右90度または右270度回転して出力を行うことができる。つまり、バンドメモリBの容量は、非圧縮の入力画像を格納できる3mnxyバイトのページメモリより小さい、1バンドの画像が格納可能な3pnxyバイトである。よって省メモリで入力画像を右270回転して出力する処理を行うことが可能である。
また本実施形態では、同一装置で右90度回転と右270度回転との両方の処理を使用する必要がある場合は、回転角度に応じて圧縮時の画素処理順を使い分けることで、右90度と右270度との双方の回転処理を省メモリで実施することができる。
例えば、図2に示したようなスイッチバック動作可能な機構をもつ両面印刷が可能な記録装置では、両面印刷が設定された場合において、用紙の表面への印刷の際には右270度回転がされたときは、裏面への印刷の際には右90度の回転が必要である。このような記録装置では、原稿をスキャンした順に、用紙の表、用紙の裏に交互に印刷される。このため、用紙の一方の面(例えば表面)を印刷する場合は入力画像を右90度回転して出力する場合の制御をして圧縮用DMAC104および伸張用DMAC106を動作させることができる。また、用紙の他方の面(例えば裏面)を印刷する場合は入力画像を右270度回転して出力する場合の制御をして圧縮用DMAC104および伸張用DMAC106を動作させることができる。
例えば、両面印刷設定時において、スキャンして得られた入力画像の奇数ページは右270度回転時の圧縮と伸張を行い、偶数ページは右90度回転時の圧縮と伸張を行うように、圧縮用DMAC104および伸張用DMAC106を制御してもよい。逆に、入力画像の奇数ページは右90度回転時の圧縮と伸張を行い、偶数ページは右270度回転時の圧縮と伸張を行うように、圧縮用DMAC104および伸張用DMAC106を制御してもよい。
他にも例えば、記録装置にはページ集約(Nin1)設定ができるものがある。例えば、2ページを1枚に印刷する2in1設定がある。2in1設定で両面印刷が行われる場合、用紙のn+1枚目への印刷では、入力画像の4n+1ページ目は表面、4n+2ページ目は表面で印刷する。次に、入力画像の4n+3ページ目は裏面、4n+4ページ目は裏面の順で、用紙に印刷することにより、入力画像の4ページ分を、用紙の両面に2in1で行う記録装置がある。この場合においても、入力画像が用紙の裏面か表面かどちらに印刷されるか応じて圧縮用DMAC104および伸張用DMAC106を制御してもよい。
ただし、原稿スキャン時には印刷時の回転角度が不明な場合がある。例えば、原稿の各ページをスキャンした結果が白ページであるかどうかを判定し、白ページは印刷せず次の非白ページを続けて印刷する、という動作を行うようなモードを有する記録装置がある。このようなモードで動作する記録装置では、両面印刷時においては、用紙の裏面か表面か、または入力画像の奇数ページか偶数ページかによる、圧縮用DMAC104および伸張用DMAC106を制御は行われなくてもよい。
また、記録装置は、外部の装置からJPEGデータを取得して印刷する機能を有していてもよい。その場合、外部装置から取得したJPEGデータは、比較例のようにMCUがラスタ順で圧縮された状態であるため、本実施形態における図13および図15のフローチャートによって右270度回転時の伸張処理を適用することは好ましくない場合がある。よって、記録装置100は、外部装置から取得したJPEGデータを右270度回転して出力する場合は、本実施形態の伸張処理方法である図13および図15の伸張処理における右270度回転の場合の処理ではない別の方法で伸張してもよい。例えば、外部装置から取得したJPEGデータを右270度回転して出力する場合は、右90度回転して出力する場合と同じ方法で伸張するように伸張用DMAC106の制御をしてもよい。
以上説明したように本実施形態によれば、入力画像を右270度回転して出力する場合でも、より非圧縮の入力画像を格納可能なメモリよりも少ない容量のメモリで右270度回転処理を行うことができる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100 記録装置
103 JPEG圧縮器
104 圧縮用DMAC
105 JPEG伸張器
106 伸張用DMAC
103 JPEG圧縮器
104 圧縮用DMAC
105 JPEG伸張器
106 伸張用DMAC
Claims (18)
- 圧縮処理の単位である矩形単位が横方向において先端から後端に並んで構成される矩形ラインが、前記横方向と交差する縦方向に並んで構成されている入力画像を右270度回転して出力することが可能な画像処理装置であって、
前記入力画像における、前記縦方向の先頭の前記矩形ラインの画像データから順に、前記矩形単位の画像データを取得する取得手段と、
前記矩形ラインにおける前記後端の前記矩形単位から前記先端の前記矩形単位へ、前記矩形単位ごとに前記画像データを圧縮する処理を、前記矩形ラインごとに行うことで、前記入力画像の圧縮データを生成する圧縮手段と、
前記矩形単位に対応する前記圧縮データを、伸張および右270度回転して配置することにより画像を出力する伸張手段と、
を有することを特徴とする画像処理装置。 - 前記画像処理装置は、前記入力画像を右90度回転して出力することも可能な画像処理装置であり、前記入力画像が右90度回転して出力される場合、
前記圧縮手段は、
前記矩形ラインにおける、前記先端の前記矩形単位から前記後端の前記矩形単位へ、前記矩形単位ごとに前記画像データを圧縮する処理を、前記矩形ラインごとに行うことで、前記入力画像の圧縮データを生成し、
前記伸張手段は、
前記矩形単位に対応する前記圧縮データを、伸張および右90度回転して配置することにより画像を出力する
ことを特徴とする請求項1に記載の画像処理装置。 - 圧縮処理の単位である矩形単位が横方向において先端から後端に並んで構成される矩形ラインが、前記横方向とは交差する縦方向に並んで構成されている入力画像における、前記縦方向の先頭の前記矩形ラインの画像データから順に、前記矩形単位の画像データを取得する取得手段と、
前記入力画像の前記先頭の前記矩形ラインにおける前記先端の前記矩形単位が、回転後の画像における縦方向の先頭に位置するように、前記入力画像が第1の方向の所定の角度、回転して出力される場合、前記矩形ラインにおける前記先端の前記矩形単位から前記後端の前記矩形単位へ、前記矩形単位ごとに前記画像データを圧縮する処理を、前記矩形ラインごとに行うことで、前記入力画像の圧縮データを生成する圧縮手段と、
前記矩形単位に対応する前記圧縮データを、伸張および回転して配置することにより画像を出力する伸張手段と、
を有する、前記入力画像を回転して出力することが可能な画像処理装置であって、
前記圧縮手段は、
前記入力画像が前記第1の方向とは逆方向の前記所定の角度、回転して出力される場合、前記矩形ラインの前記後端の前記矩形単位から前記先端の前記矩形単位へ、前記矩形単位ごとに画像データを圧縮する
ことを特徴とする画像処理装置。 - 前記伸張手段は、
前記入力画像が右90度回転して出力される場合、前記矩形ラインの前記先端の前記矩形単位から前記後端の前記矩形単位への順番で、前記矩形単位に対応する前記圧縮データを伸張し、
前記入力画像を右270度回転して出力する場合、前記矩形ラインの前記後端の前記矩形単位から前記先端の前記矩形単位への順番で、前記矩形単位に対応する前記圧縮データを伸張する
ことを特徴とする請求項2または3に記載の画像処理装置。 - 前記画像処理装置は、前記入力画像における所定のサイズの領域ごとに画像を回転して出力することが可能な画像処理装置であり、
前記伸張手段は、
前記矩形ラインに含まれる連続する所定の数の前記矩形単位に対応する前記圧縮データを前記圧縮が行われた順に伸張する処理を、全ての前記矩形ラインに対して行うことにより、前記入力画像の前記領域に対応する前記圧縮データを伸張する
ことを特徴とする請求項2から4のいずれか1項に記載の画像処理装置。 - 前記入力画像を圧縮して得られた前記圧縮データと、前記領域の非圧縮の画像データと、が少なくとも記憶可能な記憶手段をさらに有する
ことを特徴とする請求項5に記載の画像処理装置。 - 前記伸張手段は、
前記入力画像が右90度回転して出力される場合、前記矩形単位に対応する前記圧縮データを、伸張および右90度回転して、前記記憶手段に書き込み、
前記入力画像が右270度回転して出力される場合、前記矩形単位に対応する前記圧縮データを、伸張および右270度回転して、前記記憶手段に書き込む
ことを特徴とする請求項6に記載の画像処理装置。 - 前記伸張手段は、
前記矩形ラインの前記矩形単位に対応する前記圧縮データを伸張および回転して得られたデータを、画像内における縦方向の先頭から配置されるように、前記書き込みを行う
ことを特徴とする請求項7に記載の画像処理装置。 - 前記伸張手段は、
前記圧縮データを前記圧縮が行われた順に伸張して、前記圧縮データにおける前記矩形ラインの開始ビット位置と前記矩形ラインの開始の直流成分値とを夫々の前記矩形ラインの分、取得し、前記開始ビット位置および前記直流成分値の情報を用いて、前記圧縮データを前記入力画像を回転して出力するための伸張をする
ことを特徴とする請求項1から8のいずれか1項に記載の画像処理装置。 - 前記圧縮手段は、
前記矩形ラインに対応する前記圧縮データを記憶させた場合、前記記憶された圧縮データに対応する前記入力画像の前記矩形ラインの画像データを消去する
ことを特徴とする請求項1から9のいずれか1項に記載の画像処理装置。 - 前記画像処理装置とは異なる装置で圧縮処理されたデータを、伸張および右270度回転して出力する場合、
前記伸張手段は、前記入力画像を右90度回転して出力する場合における伸張する方法と同じ方法で、前記圧縮処理されたデータを伸張する
ことを特徴とする請求項1から10のいずれか1項に記載の画像処理装置。 - 前記圧縮手段は、前記矩形単位の画像データをラスタ順に圧縮する
ことを特徴とする請求項1から11のいずれか1項に記載の画像処理装置。 - 前記圧縮および前記伸張のアルゴリズムはJPEGであり、前記矩形単位はMCUである
ことを特徴とする請求項1から12のいずれか1項に記載の画像処理装置。 - 請求項1から13のいずれか1項に記載の画像処理装置の各手段と、
原稿を読み取る読み取り手段と、
前記読み取り手段が原稿を読み取ることによって得られた前記入力画像に基づく画像を、記録媒体に記録することが可能な記録手段と、
を有することを特徴とする記録装置。 - 記録媒体の両面に記録を行う設定において、
前記記録媒体の一方の面に記録する場合は、前記入力画像が右90度回転して出力される場合の前記圧縮手段と前記伸張手段との動作が行われるように制御され、
前記記録媒体の他方の面に記録する場合は、前記入力画像が右270度回転して出力される場合の前記圧縮手段と前記伸張手段との動作が行われるように制御される
ことを特徴とする請求項14に記載の記録装置。 - 圧縮処理の単位である矩形単位が横方向において先端から後端に並んで構成される矩形ラインが、前記横方向と交差する縦方向に並んで構成されている入力画像を右270度回転して出力することが可能な画像処理方法であって、
前記入力画像における、前記縦方向の先頭の前記矩形ラインの画像データから順に、前記矩形単位の画像データを取得する取得ステップと、
前記矩形ラインにおける前記後端の前記矩形単位から前記先端の前記矩形単位へ、前記矩形単位ごとに前記画像データを圧縮する処理を、前記矩形ラインごとに行うことで、前記入力画像の圧縮データを生成する圧縮ステップと、
前記矩形単位に対応する前記圧縮データを、伸張および右270度回転して配置することにより画像を出力する伸張ステップと、
を有することを特徴とする画像処理方法。 - 圧縮処理の単位である矩形単位が横方向において先端から後端に並んで構成される矩形ラインが、前記横方向とは交差する縦方向に並んで構成されている入力画像における、前記縦方向の先頭の前記矩形ラインの画像データから順に、前記矩形単位の画像データを取得する取得ステップと、
前記入力画像の前記先頭の前記矩形ラインにおける前記先端の前記矩形単位が、回転後の画像における縦方向の先頭に位置するように、前記入力画像が第1の方向の所定の角度、回転して出力される場合、前記矩形ラインにおける前記先端の前記矩形単位から前記後端の前記矩形単位へ、前記矩形単位ごとに前記画像データを圧縮する処理を、前記矩形ラインごとに行うことで、前記入力画像の圧縮データを生成する圧縮ステップと、
前記矩形単位に対応する前記圧縮データを、伸張および回転して配置することにより画像を出力する伸張ステップと、
を有する、前記入力画像を回転して出力する画像処理方法であって、
前記圧縮ステップにおいて、
前記入力画像が前記第1の方向とは逆方向の前記所定の角度、回転して出力される場合、前記矩形ラインの前記後端の前記矩形単位から前記先端の前記矩形単位へ、前記矩形単位ごとに画像データを圧縮する
ことを特徴とする画像処理方法。 - コンピュータを、請求項1から13のいずれか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020063577A JP2021164046A (ja) | 2020-03-31 | 2020-03-31 | 画像処理装置、記録装置、画像処理方法、およびプログラム |
US17/209,423 US11314995B2 (en) | 2020-03-31 | 2021-03-23 | Image processing apparatus, image processing method, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020063577A JP2021164046A (ja) | 2020-03-31 | 2020-03-31 | 画像処理装置、記録装置、画像処理方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021164046A true JP2021164046A (ja) | 2021-10-11 |
Family
ID=77854601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020063577A Pending JP2021164046A (ja) | 2020-03-31 | 2020-03-31 | 画像処理装置、記録装置、画像処理方法、およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11314995B2 (ja) |
JP (1) | JP2021164046A (ja) |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6246804B1 (en) | 1994-11-15 | 2001-06-12 | Canon Kabushiki Kaisha | Image retrieval method and apparatus using a compound image formed from a plurality of detected regions |
US6442302B2 (en) * | 1998-09-17 | 2002-08-27 | Xerox Corporation | Rotated read-out of JPEG compressed images |
US6353682B2 (en) * | 1998-09-17 | 2002-03-05 | Xerox Corporation | Rotated read-out of JPEG compressed images |
US6972874B2 (en) | 2000-07-06 | 2005-12-06 | Canon Kabushiki Kaisha | Image communicating apparatus |
JP3951791B2 (ja) * | 2002-04-30 | 2007-08-01 | コニカミノルタホールディングス株式会社 | 画像形成装置、及び画像形成方法 |
CN100477788C (zh) * | 2003-09-16 | 2009-04-08 | 富士通微电子株式会社 | 图像处理显示装置和图像处理显示方法 |
JP2006304243A (ja) | 2005-03-23 | 2006-11-02 | Seiko Epson Corp | 画像処理装置、印刷装置、および、画像処理方法 |
JP2006325186A (ja) * | 2005-04-20 | 2006-11-30 | Seiko Epson Corp | 画像処理装置 |
JP4440168B2 (ja) * | 2005-05-09 | 2010-03-24 | キヤノン株式会社 | 画像形成システム |
JP4974619B2 (ja) * | 2005-11-09 | 2012-07-11 | キヤノン株式会社 | 画像データ処理装置、画像データ処理方法、プログラム及び記録媒体 |
US20080226164A1 (en) * | 2007-03-12 | 2008-09-18 | Seiko Epson Corporation | Image data decoding device, image data encoding device, image processing device, and electronic instrument |
US8233003B2 (en) * | 2007-03-12 | 2012-07-31 | Seiko Epson Corporation | Image processing device, image processing method, and electronic instrument |
US8094952B2 (en) * | 2007-09-19 | 2012-01-10 | Ricoh Company, Ltd. | Image processing apparatus and image processing method |
US8427693B2 (en) * | 2009-03-24 | 2013-04-23 | Kyocera Document Solutions Inc. | Image processing apparatus and method |
JP5247793B2 (ja) | 2010-12-21 | 2013-07-24 | キヤノン株式会社 | 画像処理装置、画像処理方法、及びプログラム |
JP6381996B2 (ja) * | 2014-06-30 | 2018-08-29 | キヤノンメディカルシステムズ株式会社 | 医用画像処理装置およびx線ct装置 |
JP6541387B2 (ja) | 2015-03-23 | 2019-07-10 | キヤノン株式会社 | 処理装置及びその制御方法、プログラム |
JP6536180B2 (ja) * | 2015-05-29 | 2019-07-03 | ブラザー工業株式会社 | 複写装置 |
JP7115191B2 (ja) * | 2018-09-28 | 2022-08-09 | ブラザー工業株式会社 | 印刷装置およびプログラム |
JP2020088694A (ja) * | 2018-11-28 | 2020-06-04 | キヤノン株式会社 | 画像処理装置、画像処理方法 |
JP7251205B2 (ja) * | 2019-02-22 | 2023-04-04 | ブラザー工業株式会社 | プリンタ及びモジュール |
JP7259396B2 (ja) * | 2019-02-22 | 2023-04-18 | ブラザー工業株式会社 | プリンタ及びモジュール |
-
2020
- 2020-03-31 JP JP2020063577A patent/JP2021164046A/ja active Pending
-
2021
- 2021-03-23 US US17/209,423 patent/US11314995B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11314995B2 (en) | 2022-04-26 |
US20210303946A1 (en) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4929073B2 (ja) | 多機能プリンタ装置 | |
JP5383416B2 (ja) | 画像処理装置及びその制御方法とプログラム | |
JP2006129471A (ja) | 画像処理方法及び画像処理装置 | |
WO2000015442A1 (fr) | Imprimante, dispositif de traitement d'images, procede de traitement d'images et support d'enregistrement | |
JP4464415B2 (ja) | 画像処理装置、制御方法、プログラム、及び記憶媒体 | |
JP2021164046A (ja) | 画像処理装置、記録装置、画像処理方法、およびプログラム | |
JP6772020B2 (ja) | 画像処理装置、画像処理装置の制御方法、及びプログラム | |
JP2003189109A (ja) | 画像処理装置及び方法、並びにコンピュータ・プログラム | |
JP2009124576A (ja) | 画像処理装置及びその制御方法 | |
JP2008236084A (ja) | 画像処理方法、画像処理装置、画像処理プログラム及び記録媒体 | |
JP2020088694A (ja) | 画像処理装置、画像処理方法 | |
JP3754903B2 (ja) | 画像処理装置及びその制御方法及びコンピュータプログラム及び記憶媒体 | |
JP3559419B2 (ja) | 画像圧縮データの伸張方法及び装置 | |
JP4771095B2 (ja) | 画像圧縮装置 | |
US8270002B1 (en) | Printing digital images with rotation | |
JP3702675B2 (ja) | 画像処理装置および画像処理方法 | |
JP2001239710A (ja) | 画像処理装置 | |
JP2003092674A (ja) | 画像処理装置および画像処理方法 | |
JP6008770B2 (ja) | 画像形成装置 | |
JP2009130590A (ja) | プリンタ及びその制御方法 | |
JP4074832B2 (ja) | データ処理方法およびデータ処理装置 | |
JP3214617B2 (ja) | 多値画像プリンタ | |
JP3429402B2 (ja) | 画像形成装置 | |
JP5588222B2 (ja) | 画像形成装置及びその制御方法とプログラム | |
JPH08274947A (ja) | 画像回転方法および画像回転装置 |