JP2020088694A - 画像処理装置、画像処理方法 - Google Patents

画像処理装置、画像処理方法 Download PDF

Info

Publication number
JP2020088694A
JP2020088694A JP2018222719A JP2018222719A JP2020088694A JP 2020088694 A JP2020088694 A JP 2020088694A JP 2018222719 A JP2018222719 A JP 2018222719A JP 2018222719 A JP2018222719 A JP 2018222719A JP 2020088694 A JP2020088694 A JP 2020088694A
Authority
JP
Japan
Prior art keywords
image
compression
predetermined
processing
decompression
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
Application number
JP2018222719A
Other languages
English (en)
Other versions
JP2020088694A5 (ja
Inventor
健二郎 原
Kenjiro Hara
健二郎 原
吉谷 明洋
Akihiro Yoshitani
明洋 吉谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2018222719A priority Critical patent/JP2020088694A/ja
Priority to US16/691,351 priority patent/US11276205B2/en
Publication of JP2020088694A publication Critical patent/JP2020088694A/ja
Publication of JP2020088694A5 publication Critical patent/JP2020088694A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

【課題】 画像の圧縮、伸張に伴い当該画像が回転される場合に、メモリ使用量を抑え、且つより高速に処理するための技術を提供することを目的とする。【解決手段】 処理対象の画像が回転される場合、処理対象の所定のブロックに対し、回転角度に応じて異なるブロックを参照することで所定の圧縮処理を実行する。そして、所定のブロックに対応する圧縮データに対し、所定のブロックに対する所定の圧縮処理で参照されたブロックを参照することで所定の伸張処理を実行する。【選択図】 図6

Description

本発明は、回転が行われる画像の圧縮処理、伸張処理を行う画像処理装置および画像処理方法に関する。
多値ディジタル静止画符号化方式の国際標準規格であるJoint Photographic Experts Group(以下JPEGと称する)がある。JPEGにおいては、カラー静止画の膨大なデータ量を効率よく圧縮・伸張するために、離散コサイン符号化、量子化およびハフマン符号化を組み合わせた符号化方式を用いて符号化アルゴリズムを規定している。
ところで、画像データを取り扱うに際して、入力した画像を所定の角度だけ回転させたい場合がある。例えば、CD−ROMなどの媒体から、あるいはインターネットなどを介してパーソナルコンピュータに取り込んだJPEG画像をプリンタでプリントする場合がある。この場合に、用紙のサイズや画像のレイアウトに応じて、JPEG画像を90度、180度、あるいは270度回転させた状態で出力させたいことがある。このような場合に、対象となるJPEG画像の全体を復元し、しかる後に所定の角度だけ回転処理を施す方法が考えられる。
しかし、この方法によると、復元した画像の全体を一時的に保持するための大容量のメモリが必要となるばかりでなく、大容量の画像データを回転処理するために回転処理の所要時間も増大し、システムに対する負荷が大きくなるという問題が生ずる。例えば、このようなJPEG画像の復元、保持、回転処理を印刷装置で実行することとすると、印刷装置のメモリのコストが高くなり、また処理の負荷が増大する。
特許文献1には、画像の一部に対する回転、復号を順次行うことが記載されている。具体的には、JPEG画像を90度回転するために、画像処理回路が、画像データの左端のブロックのAC成分(交流成分)のアドレスと、DC成分(直流成分)の値とを求めて解析テーブルを生成する。次に、画像処理回路が、解析テーブルに格納されているAC成分のアドレスを参照し、画像データの左端のブロックに対応するデータを取得してAC成分を復号するとともに、DC成分の値を復号して出力する。そして、該画像処理回路の後段に存在する回路によって並べ換え処理が施され、回転後の行データが得られることが記載されている。
特開2006−304243号公報
しかしながら、特許文献1に示すJPEG回転処理は、あるブロックの直流成分値を得るために、出力されないブロックについてもデコードを行う空デコード解析を行う必要がある。そのため、ページメモリを使用したJPEGデータの回転処理と比較して、解析処理に掛かる時間が必要になる。
上記の課題を鑑みて本発明は、回転が行われる画像の圧縮、伸張において、メモリ使用量を抑え且つより高速に処理するための技術を提供することを目的とする。
上記の課題を解決するための本発明の画像処理装置は、処理対象の画像が分割された各ブロックに所定の圧縮処理を実行することで、前記処理対象の画像を圧縮する圧縮手段と、前記圧縮手段により圧縮された前記処理対象の画像のうちの伸張対象部分に含まれる複数のブロックのそれぞれに対応する、前記圧縮手段による圧縮で得られた圧縮データに、所定の伸張処理と回転を実行する実行手段と、前記実行手段による前記所定の伸張処理と前記回転が前記複数のブロックに対して実行されることで得られた前記伸張対象部分に対応する伸張画像を、所定のメモリ領域に記憶する記憶手段と、前記記憶手段により前記所定のメモリ領域に記憶された前記伸張画像を出力する出力手段と、前記伸張対象部分を変更する変更手段と、を備え、前記記憶手段による前記伸張対象部分に対応する前記伸張画像の前記所定のメモリ領域への記憶と、前記出力手段による前記所定のメモリ領域に記憶された前記伸張画像の出力が、前記変更手段による前記伸張対象部分の変更のたびに実行されることで、伸張および回転が実行された前記処理対象の画像が出力され、前記圧縮手段は、処理対象の所定のブロックに対し、前記実行手段による回転の回転角度に応じて異なるブロックを参照することで前記所定の圧縮処理を実行し、前記実行手段は、前記所定のブロックに対応する圧縮データに対し、前記所定のブロックの圧縮において前記所定の圧縮処理で参照されたブロックを参照することで前記所定の伸張処理を実行することを特徴とする。
回転が行われる画像の圧縮、伸張において、メモリ使用量を抑え且つより高速に処理することができる。
JPEG圧縮処理における、MCUの処理順およびMCU内画素の処理順を示す図である。 JPEG伸張において90度回転させる場合の空デコード処理の一例を示すフローチャートである。 JPEG画像を右90度回転させて伸張する処理の一例を示すフローチャートである。 JPEG画像を右90度回転させて伸張する動作の一例を示す図である。 画像の圧縮処理および伸張処理を行う画像処理装置を示すブロック図である。 右90度回転が伴う画像圧縮時における処理順序の一例を示す図である。 右90度回転が伴う画像圧縮処理の一例を示すフローチャートである。 右90度回転が伴う画像伸張時における処理順序の一例を示す図である。 右90度回転が伴う画像伸張処理の一例を示すフローチャートである。 右270度回転が伴う画像圧縮時における処理順序の一例を示す図である。 右270度回転が伴う画像伸張時における処理順序の一例を示す図である。 右90度回転が伴う画像圧縮時における処理順序の別の例を示す図である。 右90度回転が伴う画像伸張時における処理順序の別の例を示す図である。 右90度回転が伴う画像伸張処理の別の例を示すフローチャートである。 第1の実施形態で説明したMCUの圧縮処理の順序を示す図である。 第2の実施形態で説明したMCUの圧縮処理の順序を示す図である。
以下、本発明の実施の形態について詳細に説明する。
[第1の実施形態]
本実施形態を説明するために、まずJPEG圧縮処理による圧縮(ここではエンコードとも呼ぶ)により生成されたJPEG画像データの伸張(ここではデコードとも呼ぶ)を行う処理について説明する。JPEG圧縮、伸張では、非圧縮画像が複数のブロック(ここではMCUと呼ぶ)に分割され、各ブロックに対して圧縮、伸張が行われる。ここでJPEG画像データ内の横1列分のMCU群を、以降、「MCUライン」と呼ぶこととする。ここで説明する伸張処理により、JPEGデータ全体の伸張処理における各MCUラインの、ビット位置と、各色成分の直流成分値を用いて、ページメモリより少ないメモリ領域で90度回転の伸張処理を可能とする。
図1は、JPEG圧縮処理における、MCUの処理順およびMCU内画素の処理順を示す図である。図1を用いて説明する処理が、一般的なJPEG圧縮処理である。図1で説明する処理は、例えば図5で後述するJPEG圧縮器503、圧縮制御のためのDMAC(ダイレクト・メモリ・アクセス・コントローラ)である圧縮用DMAC504により実行される。
非圧縮画像データをJPEG圧縮する際には、入力画像データが縦横16画素などのMCUの単位に分割され、図1(a)の太い点線で示すように、そのMCUを左上から順に圧縮処理していく。具体的には、圧縮用DMAC504が、メモリ510に格納されている画像データの各MCUに図1(a)の太い点線で示す順序でアクセスする。そして、該アクセスにより順次読み込まれるMCUがJPEG圧縮器503に入力され、MCUごとに順次JEPG圧縮される。
ここで、このJPEGデータの1MCUの縦横画素数を図1(d)のようにそれぞれx、yとし、縦横MCU数を図1(c)のようにそれぞれm、nとする。即ち、画像サイズは横mx、縦ny画素であり、1MCUラインはm個のMCUで構成されることになる。
JPEG圧縮器503は、入力されたMCUの圧縮データに対して、MCU左上端の画素のアドレスをSA(スタートアドレス)として、図1(b)に示すように、MCU内のラスタ順に左から1画素ずつ走査して所定の圧縮処理を行う。具体的には、JPEG圧縮器503によるMCUに対するJPEG圧縮では、各MCUに対するDCT(離散コサイン変換)により、各MCUの画像データが周波数成分のデータに変換される。その周波数成分のデータは、DC(直流)成分、AC(交流)成分に分けられる。
そして、あるMCUについての圧縮が完了すると、右隣りのMCUがJPEG圧縮器503による新たな処理対象となり、該MCU内に対して同様にJPEG圧縮が行われる。なお、各MCUの直流成分値として、該MCUの実際の直流成分値と1つ前に圧縮されたMCUの実際の直流成分値との差分が計算され、記憶される。ただし、画像の左上に配置されているMCUについては、上記のような差分ではなく、実際の直流成分値が該MCUの直流成分値として記憶される。
1MCUラインの処理を終了すると、次のMCUラインの左端のMCUから、同様の処理を行う。これを1ページ終了まで続けることで、1ページ分のJPEGデータが作成される。以上が一般的なJPEG圧縮の処理である。
このように圧縮されたJPEG画像データを90度回転させて伸張する時には、まずJPEG画像データに含まれる左端のMCUラインのビット位置と直流成分値を取得する。図2は、JPEG伸張において90度回転させる場合の空デコード処理の一例を示すフローチャートである。なお、図2に示すフローチャートにおける各処理は、図5で後述する、JPEG伸張器505、伸張用DMAC506により実行される。
s201で伸張用DMAC506は、MCUラインごとに同様の処理を実行させるためのループカウンタiを、i=0として初期化する。
s202で伸張用DMAC506は、変数addr[i]を変数addr[0]=0として初期化し、変数dc[i][k](k=0,1,2)について、dc[0][k]を取得する。ここで、addr[i]は、JPEGデータの第iMCUラインにおける処理対象のMCUのうち最初に処理されるMCUの開始ビット位置を示す変数である。図2においては、addr[i]は、最初に処理されるMCUライン(右90度回転時では左端の縦MCUライン)のそれぞれのMCUの、バンドメモリにおける書込み開始ビット位置を示す変数である。変数dc[i][k]は、最初に処理されるMCUライン(右90度回転時では左端の縦MCUライン)のそれぞれのMCUの、実際の直流成分値を示す。k=0,1,2はそれぞれ、Y成分、Cb成分、Cr成分を指す。
図2における処理は、JPEGデータの左端の縦のMCUラインに実行される。そのため、s201では、JPEGデータの左上のMCUの実際の直流成分値であるdc[0][k]が取得される。ここで、画像の左端の縦のMCUラインにおける、上から2番目のMCUの実際の直流成分値dc[1][k]は、s201で取得されたdc[0][k]から求めることができる。具体的には、s202で取得されたdc[0][k]に対して、画像の最上のMCUライン(第0MCUライン)における直流成分値(左隣のMCUに対する実際の直流成分値の差分)を順次加算することで求めることができる。なお、このとき、画像の最上のMCUライン(第0MCUライン)における左端のMCU以外の実際の直流成分値は、一時的にJPEG伸張器505に記憶されるが、順次上書きされる。このように、あるMCUについて実際の直流成分値を求めるために、他のMCUの実際の直流成分値を求め、一時的に記憶することを、空(から)デコードと呼ぶ。空デコードでは、周波数成分データの画像データへの変換や画像出力は不要である。そのため、空デコードでは、逆DCT処理は行われず、ハフマン符号解析のみ行われればよい。
s203で伸張用DMAC506は、例えばメモリ510に記憶されているJPEGデータにアクセスして入力し、JPEG伸張器505は、入力されたJPEGデータを、1MCUライン分空デコードする。後述するように、s203の処理は、各MCUラインについて繰り返し実行される。そのため、「i=0」としてs203が最初に実行されるときは、画像の最上のMCUラインについて空デコードが実行される。
s203においてMCU1ラインに対する空デコードが終了すると、s204において伸張用DMAC506は、ループカウンタiをインクリメントする。
s205で伸張用DMAC506は、画像左端であり且つ第iMCUラインのMCUについて、s203での空デコード処理の結果として得られたビット位置addr[i]と、直流成分値dc[i][k]を取得して保存しておく。s205が初めて実行されるときは、画像の左端でかつ上から2番目のMCUについて、ビット位置addr[i]と、直流成分値dc[i][k]が取得される。このように保存されたビット位置addr[i]と、直流成分値dc[i][k]は、図3を用いて後述するように、左端以外のMCUの実際の直流成分値を求める際に使用される。
s206でJPEG伸張器505は、入力JPEGデータの全MCUラインについて、左端のMCUのための空デコードが終了したかを判定する。s206における判定結果がYESなら図2に示す処理が終了し、NOならs203へ処理が戻る。
以上のフローにより、入力JPEGデータの各MCUラインについて左端のMCUのビット位置と直流成分値を取得できる。
次に、JPEG画像を右90度回転させて伸張するための処理について説明する。図3は、JPEG画像を右90度回転させて伸張する処理の一例を示すフローチャートである。なお、図3の処理の前に、図2に示した処理が実行される。また図3に示す処理も、JPEG伸張器505、伸張用DMAC506により実行される。
また図4は、JPEG画像を右90度回転させて伸張する動作の一例を示す図である。ここでは、図4(a)に示す画像がJPEG圧縮され、そのJPEG圧縮された画像が図2、図3に示す伸張処理により図4(e)に示す画像のように、90度回転が実行されるものとする。
なお、伸張用DMAC506は、あらかじめ、ny×px画素分(=入力画像の縦MCUラインのpライン分)の伸張後の画素値を非圧縮で格納できるメモリB(メモリ領域)を、伸張用DMAC506内に用意しておく。例えば各画素がRGBの3つの色成分で表現され、各色成分が8bit(1バイト、0〜255の値)で表されるならば、メモリBのメモリ容量は、3×ny×pxバイトとなる。図4(e)に示すように、ny×px画素は、回転後の画像の縦のMCUラインのpライン分の画素に相当する。pは、画像全体における縦のMCUライン数の上限mを越えることは無く、また1ページ分のメモリ領域を使用させないために、p<mである。また伸張用DMAC506は、図2のs205で取得された、開始ビット位置addr[i]および画像左端のMCUの実際の直流成分値を、メモリ領域に書き込んでいる。
s301で伸張用DMAC506は、カウンタjをj=0として初期化する。なお、後述する処理により、pライン分の縦MCUラインごとにデコード対象が変更される。カウンタjは、デコード対象のpライン分の縦MCUラインを示す。
s302で伸張用DMAC506は、上述したメモリBが解放されるのを待つ。
s303で伸張用DMAC506は、カウンタiをi=0として初期化する。カウンタiは、当該デコード対象の横MCUラインを示し、該横MCUラインにおける、pライン分の縦のMCUライン分の圧縮画像が伸張される。
s304で伸張用DMAC506は、図2のs205で取得されていた入力JPEGデータのaddr[i]のビット位置および実際の直流成分値dc[i][k](k=0,1,2)を取得する。また伸張用DMAC506は、j番目の出力バンドメモリに対応するp個分のMCUにアクセスする。そしてJPEG伸張器505は、直流成分値を用いて、該アクセスにより入力したJPEGデータにおける横方向の第iMCUラインに対して、MCUのp個分だけ所定の伸張処理を行う。この所定の伸張処理には、逆DCTによる周波数データの画像データへの変換等が含まれる。
具体的には、s304が初めて実行されるとき、図2における処理により、画像左端のMCUのビット位置addr[i]と、直流成分値dc[i][k]が、i=0〜n−1のラインについて記憶されている。そこでs304で伸張用DMAC506は、ビット位置addr[i]により左端のMCUの直流成分値dc[i][k]を取得する。そして、JPEG伸張器505は、伸張用DMAC506により読み出されたp個分のMCUのうちの左端以外のMCUについて、実際の直流成分値dc[i][k]を求める。具体的には、左端のMCUの直流成分値dc[i][k]に対してMCUの直流成分値(左隣のMCUに対する直流成分値の差分)が順次加算される。これにより、第iMCUラインについて、該p個のMCUの直流成分値dc[i][k]が求められる。s304でJPEG伸張器505はさらに、直流成分値dc[i][k]と該p個のMCUの交流成分値とに対して逆DCTを施すことで、第iMCUラインのp個分のMCUの画像データ(画素値)を得ることができる。
s305でJPEG伸張器505は、伸張後の各MCUの画素値について、図4(b)から図4(c)のように各MCUを90度回転する。また伸張用DMAC506は、画素出力順を制御して、メモリ510に対して、図4(d)(e)のようにMCUが配置されるよう画素値を出力する。
s306では、s304において、第iMCUラインのpMCU個分伸張処理された状態にある。伸張用DMAC506は、s304における伸張で得られた実際の直流成分値dc[i][k]と、ビット開始位置addr[i]を記憶する。
s307でJPEG伸張器505は、カウンタiをインクリメントする。
s308でJPEG伸張器505は、i=nであれば、つまり入力画像の横MCUラインの全てについてs304〜s306の処理が終了していれば、s309に処理を進める。i=nでなければ、s304へ処理が戻る。
なお、s309に処理が進むとき、当該入力された圧縮画像のp本の縦MCUラインに相当するバンドについて伸張、回転、メモリ510への出力が完了している。また、該p本の縦MCUラインの右端のMCUラインに関する、ビット位置addr[i]と、直流成分値dc[i][k]がJPEG伸張器505に格納されている。
s309では、カウンタjをインクリメントすることで。s302からs308までの処理が次の出力バンドについて実行される。なお次の出力バンドについて、s304が実行されるとき、前回s306が実行されたときに記憶された、前の出力バンドの右端に対応するビット位置addr[i]と、直流成分値dc[i][k]が用いられる。
s310でJPEG伸張器505は、j≧m/pであるか確認する。j≧m/pであれば、入力画像データの全面に対してs302〜s309で示した回転処理が終了したことになるので図3に示す処理を終了する。j≧m/pでなければ、処理がs302へ戻って次の出力バンドの処理を行う。
図4(a)に示したような画像がJPEG圧縮されたデータがJPEG伸張器505に入力された場合、図3に示した処理により、図4(e)に示したような伸張後のデータが得られる。また、メモリBに対応するバンドごとに順次デコードが行われるため、JPEG伸張器505や伸張用DMAC506に画像全体を格納するページメモリが用意されていなくても、JPEGデータに回転を加えてデコードすることができる。
しかしながら、図2、図3に示したJPEG回転伸張処理では、図2のs203において空デコード解析を行う必要がある。そのため解析処理に多くの時間が必要になることがある。さらに、JPEG伸張時においては、入力画像の各MCUラインにおいて、pMCU個分の伸張を行うごとに、図3のs302、s304において、その時点のビット位置と直流成分値情報を取得するための割り込み処理が必要になる。そのため、バンドメモリのためのメモリ領域のサイズによっては割り込み回数が増大し、処理速度が低下するという課題がある。
そこで本実施形態では、画像の圧縮と伸張のそれぞれにおける、MCUの処理順序について、図1、図4で説明した処理順序とは異なるものを適用する。これにより、空デコード解析を必要とせず、処理時間の早い伸張回転処理を実現する。さらに、本実施形態における圧縮、伸張により、圧縮時、伸張時の双方で所定の情報を取得するための割り込み処理回数を削減する。以下、詳細に説明する。
図5は、画像の圧縮処理および伸張処理を行う画像処理装置を示すブロック図である。なお、図5では、スキャナおよびプリンタを備え、スキャン、プリントに加えてコピーが可能な画像処理装置500を例に説明する。
501は、画像処理装置500の全体を制御するCPUである。画像処理装置500は、制御プログラムを記憶した不図示のROM等のメモリを含む。CPU501は、ROM等に記憶されている制御プログラムを、例えばメモリ510をワークメモリとして実行することで、各種の制御を行うことができる。
502は、原稿をスキャンしてRGB多値ビットマップ画像データを得るスキャナである。スキャナ502で得られたビットマップ画像データは、一度メモリ510へ格納される。後述するように、このビットマップ画像データが、本実施形態による圧縮、回転伸張の対象となる。また画像処理装置500は、不図示のIF(インターフェース)や、メモリカード等の外部メモリを装着するためのスロットを含む。そして、そのIFを介して外部装置から受信した画像データもしくは外部メモリから読み出された画像データが、本実施形態による圧縮、回転伸張の対象となってもよい。画像処理装置500が有するIFとしては、無線LAN等のための無線インターフェースや、有線LANやUSB等のための有線インターフェースが含まれる。
なお、IFを介して外部装置から受信した画像データや、外部メモリから読み出した画像データが、図1に示すような一般的なJPEG圧縮により圧縮されていることがある。例えば、画像処理装置500が、このようなJPEGデータに対して、印刷を行うことがある。このとき、画像処理装置500が、該JPEGデータに対して、用紙サイズや印刷方向等の印刷設定に合わせて回転されるよう回転伸張することがある。このような場合には、例えばJPEG伸張器505、伸張用DMAC506は、図2、図3に示した方法により、回転伸張を行う。即ち、JPEGの規格に則して圧縮されているため、その規格を考慮した順序でMCUが空デコードされることで、回転伸張が行われる。
503は、MCU単位でJPEG圧縮処理を行うJPEG圧縮器であり、内部に1MCU分の画像データを格納できるメモリを持つ。JPEG圧縮器503は、1MCUに対して上述したようなDCT変換や直流成分値の差分の計算、1MCUに対する周波数データの記憶等の処理を行う。
504は、メモリ510から、非圧縮画像データを読み込み、MCU単位にJPEG圧縮器503へ供給し、かつ、JPEG圧縮器503で圧縮されたJPEGデータをメモリ510へ出力する圧縮制御を行う圧縮用DMACである。
なお、圧縮用DMAC504は、非圧縮画像データの圧縮後に回転伸張を行うか否かに応じて、JPEG圧縮器503に圧縮を行わせるMCUの順序を異ならせる。具体的には、圧縮後に回転伸張を行うことが決定されていなければ、圧縮用DMAC504はJPEG圧縮器503に、図1に示したような一般的なJPEG圧縮における順序でMCUを圧縮させる。具体的には、左上のMCUからMCUライン右方向に向かって圧縮が行われ、該MCUラインの圧縮後、画像の縦方向において1つ下のMCUラインについて、左から右に向かって圧縮が行われる。一方、圧縮後に回転伸張を行うことが決定されていれば、圧縮用DMAC504はJPEG圧縮器503に、図1に示した順序と異なる、画像の回転角度に応じた順序で、MCUを圧縮させる。なお、圧縮後に回転伸張を行うか否かは、例えば圧縮対象の非圧縮画像データが印刷される場合に、その印刷における印刷設定に応じて判定される。回転角度に応じたMCUの処理順序の詳細については後述する。
505は、MCU単位でJPEG伸張処理を行うJPEG伸張器であり、1MCU分の画像データを格納できる内部メモリを持つ。
506は、メモリ510から後述の順でJPEG画像データを読み込み、JPEG伸張器505へ供給し、かつ、JPEG伸張器で伸張された結果の非圧縮画像データを、後述の順でメモリ510へ出力する伸張制御を行う伸張用DMACである。なお、伸張用DMAC506は、JPEG伸張器505により伸張、回転されたMCU内の画像データを、回転角度に応じた書き込み方法でメモリ510に書き込む機能を持つ。このように、圧縮用DMAC504、伸張用DMAC506はそれぞれ、JPEG画像への圧縮のためのJPEG圧縮制御、JPEG画像の伸張のためのJPEG伸張制御を実行する。
507は、伸張用DMAC506でメモリ510へ出力された非圧縮画像データに所定の画像処理を行って、プリンタ508で出力できる量子化データを出力する画像処理部である。
508は、画像処理部507から出力された量子化データに基づいて画像をプリントするプリンタである。509は、上記各ブロックと、メモリ510との間のデータ転送を行うバスである。510は、上記各ブロックの処理結果を格納するメモリである。
本実施形態では、画像の圧縮と伸張のそれぞれにおける、MCUの処理順序について、図1、図4で説明したJPEGにおける一般的な処理順序とは異なるものを適用する。具体的には、圧縮用DMAC504、伸張用DMAC506それぞれが、画像の回転角度に応じた順序でメモリ510からMCUを読み出し、JPEG圧縮器503、JPEG伸張器505に圧縮、伸張を実行させる。
これにより、空デコード解析を必要とせず、処理時間の早い伸張回転処理を実現する。さらに、本実施形態における圧縮、伸張により、圧縮時、伸張時の双方で所定の情報を取得するための割り込み処理回数を削減する。さらに、JPEG圧縮器503、JPEG伸張器505は、通常のJPEG圧縮、JPEG伸張と同様の処理(DCT、逆DCT等)を実行する。そのため、通常のJPEG用の処理を本実施形態における圧縮、伸張にも兼用することができる。以下、詳細に説明する。
まず、図6と図7を用いて、本実施形態の画像圧縮時における、圧縮用DMAC504の動作を説明する。図6は、本実施形態の画像圧縮時における処理順序の一例を示す図であり、図7は、本実施形態の画像圧縮処理の一例を示すフローチャートである。圧縮用DMAC504は、スキャナ502からラスタ順にメモリ510へ入力される非圧縮画像データに対して、MCU単位に画素値を読み込む。そして、圧縮用DMAC504は、読み込まれた画素値をJPEG圧縮器503へ供給し、かつ、画素値を供給したMCU順にJPEG圧縮器で圧縮されたJPEGデータを、メモリ510内に連続的に出力する。
なお、スキャナ502により原稿がスキャンされることで得られる非圧縮画像データにおいては、RGBそれぞれの画素値として8bitのデータが割り当てられている。メモリ510には、このRGB画素値がスタートアドレスSAから順次並んでいるデータが格納される。図6に示すように、入力画像の1MCUの横幅をx画素、縦幅をyライン(y画素)とし、入力画像は横m個×縦n個のMCUで構成されるものとする。このとき、入力画像のサイズは横mx×縦ny画素となる。この場合、各画素の画素値のバイト数は、RGBそれぞれについて8bit(1バイト)割り当てられているため3バイトとなり、MCUの横幅のバイト数は3xバイトとなる。
圧縮用DMAC504は、右90度回転の伸張出力時には、図7に示すフローに従って、MCU単位で非圧縮画像をメモリ510から読み出してJPEG圧縮器503に供給する。
s701で圧縮用DMAC504は、入力画像がq本の横MCUライン(=qyライン)分以上、メモリ510に読み込まれたときに処理を開始する。なお、このときメモリ510における現在の読み込み位置を示すカレントアドレスとして、そのqMCUライン分の左上画素のアドレスをカレントアドレスCA=SA_aを初期値として処理が開始される。また、このとき圧縮用DMAC504は、JPEG圧縮器503を初期化する。s702で圧縮用DMAC504は、カレントアドレスCAから、連続した3xバイトを読み出す。さらに、圧縮用DMAC504は、読み出された3xバイトの情報をJPEG圧縮器503に入力する。また圧縮用DMAC504は、CAに、読み出された分のバイト数(3xバイト)を随時加算する。
s703で圧縮用DMAC504は、その時点のカレントアドレスCAにオフセットとして値off1を加算する。ここではoff1=3(m−1)xである。図6に示すように、off1の加算により、カレントアドレスCAが同MCU内の次のラインの左端に移動する。
s704で圧縮用DMAC504は、s702とs703をy−1回繰り返す。この計y回の処理で、1MCU分の入力画像データが、JPEG圧縮器503に供給される。JPEG圧縮器503は、入力された1MCUの画像データに対してJPEG圧縮処理を行う。具体的には、JPEG圧縮器503は、通常のJPEG圧縮と同様に、画像データにDCTを施すことで周波数データに変換し、直流成分については、前回圧縮したMCUの直流成分の差分値を求める。そして、その差分値と交流成分が現在圧縮対象のMCUのデータとしてJPEG圧縮器503に記憶される。ただし、スタートアドレスSAに対応するMCUについては、直流成分として差分ではなく実際の直流成分値が記憶される。s704において圧縮用DMAC504はさらに、JPEG圧縮器503に記憶されているMCUの圧縮データを、メモリ510に書き込む。ただし、このときの書き込み位置は、当該圧縮されている画像の非圧縮データとは異なる書き込み位置である。なお、この時点でカレントアドレスCAはMCUの右下端画素の次の画素のアドレスとなっている。
s705で圧縮用DMAC504は、カレントアドレスCAに値off2を加算する。ただしoff2=3(m−1)xである。off2の加算により、カレントアドレスCAは図6に示すように下のMCU左上端へ移動する。即ち、圧縮されたMCUの下のMCUが新たな読み込み対象となる。
s706で圧縮用DMAC504は、s702〜s705の処理をq−1回繰り返す。これら計q回の処理により、縦MCUラインにおけるq個のMCUについて、圧縮が完了する。
s707で圧縮用DMAC504は、カレントアドレスCAに値off3を加算する。off3の加算により、カレントアドレスCAは図6に示すように、当該圧縮対象となったMCUの右隣りの縦MCUラインにおける、q個上のMCUの左上端のアドレスへ移動する。
s708で圧縮用DMAC504は、s702〜s707の処理をm−1回繰り返す。この計m回の処理により、入力画像のq本の横MCUライン分のデータが、JPEG圧縮器503により圧縮され、その圧縮画像がメモリ510に格納される。s708の処理が終了すると(つまりs702〜s707の処理がq回繰り返されると)、JPEG圧縮器503の処理をいったん終了する。
なお、s708の処理が完了した時点で、横mx画素×縦qy画素の圧縮処理が完了している。そのため、s708の終了時に、ここまでに圧縮したq本のMCUライン分の非圧縮画像が格納されているメモリ510内のメモリ領域が解放されてよい。
またs708の処理が完了すると、圧縮用DMAC504は、次のq本のMCUライン分の非圧縮画像をメモリ510から読み出す。この非圧縮画像がメモリ510にない場合、圧縮用DMAC504は、該非圧縮画像がメモリ510に格納されるまで待機する。
なお、s705〜s707における処理により、縦方向にq個分のMCUに対して圧縮処理が順次実行され、続けて右隣の縦のMCUが同様に圧縮される。このような順番で行う処理を以下「縦MCU順」と呼ぶこととする。
s709で圧縮用DMAC504は、s701〜s708の処理をページ終了まで繰り返す。つまり、q本のMCUライン分の部分画像である圧縮対象画像が、入力画像において順次変更され、その圧縮対象画像の中では、縦MCU順でMCUが順次圧縮される。ただし、s701で圧縮用DMAC504は、JPEG圧縮器を初期化し、かつ、そのqMCUライン分の左上端画素のアドレスをカレントアドレスCA=SA_bとして処理を行う。なお、入力されている当該圧縮対象画像が、前の1MCUライン分の非圧縮画像と連続したメモリ領域にある場合はSA_b=CAとなる。一方、当該圧縮対象画像が新たなメモリ領域に格納された場合は、SA_b=「そのメモリ領域の開始アドレス」となる。
また、S708の処理が完了した時点で、直流成分値の差分計算は中断され、リフレッシュされる。即ち、例えば図6のCA初期値=SA_bに対応するMCUについては、差分ではなく実際の直流成分値が記憶される。
上記のs701〜s708に示した処理がページ終了まで繰り返されると、入力画像全体がJPEG圧縮器503へ入力され、計n/q個の圧縮データがメモリ510に格納される。ただし、これらの圧縮データは、圧縮されたMCUの順序が図1とは異なる。即ち、通常のJPEG圧縮とは異なる順序でMCUが圧縮されているため、通常のJPEG伸張器では正しく伸張することができない。そのため、後述する伸張処理により、図6で示したMCUが圧縮された順序と同じ順序で、各MCUに対して回転伸張処理が行われる。
次に、図6、図7に示した処理によって生成された圧縮データを伸張する際の、JPEG伸張器505と伸張用DMAC506の動作を、図8、図9を用いて説明する。図8は、右90度回転が伴う画像伸張時における処理順序の一例を示す図であり、図9は、右90度回転が伴う画像伸張処理の一例を示すフローチャートである。
伸張用DMAC506は、メモリ510内の圧縮データを指定アドレスから連続的にJPEG伸張器505へ供給する。JPEG伸張器505は、MCU1個分の伸張画像データを格納および回転できる内部メモリを持つ。そしてJPEG伸張器505は、伸張用DMAC506を介して供給された1MCUの圧縮データに対して伸張処理を行い、伸張された画像データをこの内部メモリに格納する。
そしてJPEG伸張器505は、伸張処理が行われ、JPEG圧縮器503に格納されている画像データを90度回転し、それをMCU内のラスタ順に伸張用DMAC506へ出力する。伸張用DMAC506は、MCU単位に出力された非圧縮画像データを、メモリ510へ出力する。
JPEG伸張器505は、図8(a)のように、内部メモリに伸張結果の非圧縮画像を1MCUずつ出力し、図8(b)のように内部メモリ上で回転を行う。そしてJPEG伸張器505は、回転された画像を、図8(c)のように回転後のMCU内のラスタ順に伸張用DMAC506へ出力する。なお、図8(a)における伸長処理のため伸張用DMAC506は、図6に示したMCUの圧縮順と同じ順序で、圧縮されたMCUをJPEG伸張器505に入力する。これにより、JPEG伸張器505は、伸張対象のMCUに含まれる直流成分値の差分を、該差分が求められた他のMCUの直流成分値に対して加算することができる。
図8(a)に示すように伸張され、図8(b)に示すように回転された画像データは、伸張用DMAC506により、回転伸張された画像がメモリ510に格納される。図9は、伸張用DMAC506が回転された画像をメモリに書き込む処理を示すフローチャートである。
s900において、伸張用DMAC506は、s302で示した処理と同様に、3ny×pxバイト(ただしpはmより小さい整数)のサイズの出力バンドメモリBを伸張用DMAC506内に確保し、その先頭アドレスをSAとする。該出力バンドメモリBは、伸張される画像の単位サイズに相当するメモリ領域である。該単位サイズの横幅は、図8(d)に示す90度回転後の画像の横幅に対応するn×y画素(横に並んだn個のMCUに相当)であり、該単位サイズの縦の高さは、p×x画素(縦に並んだp個のMCUに相当)である。この出力バンドメモリBとして確保されるメモリサイズは、図4で示した伸張処理におけるメモリBのサイズと同じである。また、s900において伸張用DMAC506は、出力バンドメモリにおける現在の書き込み開始位置を示すカレントアドレスCAに、初期値を設定する。具体的には、図8(d)に示す画像左上のSA(スタートアドレス)から右方向に(n−1)×y画素分移動した位置に相当するアドレスであるSA+3(n−1)yがCAの初期値として設定される。
s901において、伸張用DMAC506は、図3のs304、s305と同様に、伸張対象のMCUをJPEG伸張器505に入力し、図8(a)、図8(b)に示したように、伸張、回転させる。JPEG伸張器505によるこの伸張、回転は、図3、図4で示した処理と同様であり、図4における伸張回転処理のための機能を兼用することができる。また、伸張用DMAC506は、JPEG伸張器505に入力する伸張対象のMCUの順序として、図6で示した圧縮順に従った順序で、MCUをJPEG伸張器505に入力する。そのため、JPEG伸張器505は、各MCUの直流成分を適切に伸張することができる。
s902において伸張用DMAC506は、JPEG伸張器からMCU内ラスタ順に出力される各画素値を、出力バンドメモリへ、カレントアドレスCAから、連続した3yバイト分書き込む。なお、ここでの3yバイト分の書き込みは、図8(d)における1MCUの横方向のy画素分のデータを書き込むことに相当する。また、カレントアドレスCAには書き込んだ分のバイト数が随時加算される。
s903で伸張用DMAC506は、その時点のカレントアドレスCAに値off1を加算する。off1は、3(n−1)yである。図8(d)に示すように、off1の加算により、カレントアドレスCAが同MCU内の次のラインの左端に移動する。s904で伸張用DMAC506は、s902とs903をx−1回繰り返す。この計x回の処理で、1MCU分の出力非圧縮画像データが、伸張用DMAC506内の出力バンドメモリに書き出される。この時点でカレントアドレスCAはMCUの右下端画素の次の画素のアドレスとなる。
s905で伸張用DMAC506は、カレントアドレスCAに値off2を加算する。off2は、−3y((x−1)q+2)である。カレントアドレスCAは図8(d)に示すように、回転後の出力画像における左隣のMCUの左上端へ移動する。
s906で伸張用DMAC506は、s902〜s905の処理をq−1回繰り返す。s906における処理により、図6に示す画像において縦にq個並んだMCUのそれぞれについて、90度回転が行われ、さらにその回転後のq個のMCUが、図8(d)に示す画像において右からq個のMCUとして配置される。
s907で伸張用DMAC506は、カレントアドレスCAに値off3を加算する。off3は、3y(n+q−2)である。off3の加算によりカレントアドレスCAは、図8(d)に示す画像において、最後にメモリ510にデータが書き込まれたMCUのq−1個右であり、且つ1MCUライン下のMCUにおける、左上の画素に移動する。
s908で伸張用DMAC506は、s902〜s907の処理をp−1回繰り返す。この計p回の処理で、図6に示したデータにおける、横p、縦q個分のMCUそれぞれのデータがJPEG伸張器505により伸張され且つ90度回転される。そして、伸張、回転された画像が、伸張用DMAC506の内部の出力バンドメモリに書き込まれる。図8(d)に示すように、その書込みでは、横q、縦p個分のMCUとして、90度回転された画像が書き込まれることになる。なお、s902〜s907の処理が合計p回実行された後、伸張用DMAC506は、最後に伸張対象となった入力画像の第iMCUにおけるビット位置addr[i]と直流成分値dc[i][k](k=0,1,2)を更新する。これらの値は、次の出力バンドでの処理時に利用される。
s909で伸張用DMAC506は、s901〜s908の処理を、q/n−1回繰り返す。即ち、伸張用DMAC506は、圧縮画像のうちの伸張対象部分であるq×p個のMCUを変更しながら、s901〜s908の処理を繰り返す。これにより、図8(d)の画像における、横幅がn×y画素(横に並んだn個のMCUに相当)であり、縦の高さがp×x画素(縦に並んだp個のMCUに相当)の伸張回転済みの画像が、伸張用DMAC506内部の出力バンドメモリに記憶される。そして、s909において伸張用DMAC506はさらに、出力バンドメモリ内の画像を、メモリ510に出力する。即ち、図6に示した圧縮画像における、p本の縦MCUラインに相当する縦バンドの圧縮データが伸張、回転されてメモリ510に格納されたことになる。
s910において伸張用DMAC506は、s900〜s909の処理を、画像の全体がデコードされるまで繰り返す。具体的には、s900〜s909の処理が、m/p−1回繰り返される。なお、s909の処理が実行されて出力バンドメモリBに記憶されている画像がメモリ510に出力されるたびに、伸張用DMAC506は、当該出力された画像を出力バンドメモリBから削除する。これにより、入力画像を非圧縮で格納できるページメモリ(3mnxyバイト)よりメモリ容量の小さい、バンドメモリB(3pnxyバイト)を用いて、圧縮されている入力画像全体の伸張、回転を行うことができる。
なお、s909によるループにおける2回目以降の処理において、s901で始めに伸張されるMCUの直流成分としては、他のMCUの直流成分値との差分値が記憶されている。具体的には、図8(d)に示す画像において、該s901で始めに伸張されるMCUに対してq−1個分左であり且つ1つ分上に配置されたMCUの直流成分値との差分値が記憶されている。
そこで伸張用DMAC506は、前回メモリバンドBに対して回転伸張を行った際にJPEG伸張器505に記憶されていた、ビット位置addr[i]と直流成分値dc[i][k](k=0,1,2)を読み出し、ビット位置addr[i]および当該直流成分値dc[i][k](k=0,1,2)をJPEG伸張器505に入力する。そのため、s901で始めに伸張されるMCUに対して、適切な直流成分値を求めることができる。
上記のように、本実施形態においては、まずJPEG圧縮器503により入力画像が圧縮されるときに、圧縮用DMAC504により、入力画像がqMCUラインずつの複数の画像データに分割される。そして、90度回転の場合、分割された画像データそれぞれについて、左上のMCUから下方向に向かってMCUがJPEG圧縮器503により圧縮されるよう、圧縮用DMAC504により制御が行われる。そして、90度回転が伴う伸張時には、伸張用DMAC506が、上記圧縮順に従った順序でMCUをJPEG伸張器505に伸張させ、さらに90度回転に対応する書込み順序、アドレスに従って、メモリ510に画像を書き込む。
このとき、上記実施形態では、画像に対して回転を伴う圧縮、伸張が行われる場合に、圧縮されるMCUの順序と伸張されるMCUの順序が同一になるよう制御が行われる。そのため、図4を用いて説明した空デコード解析が不要となるため、より高速な画像圧縮、伸張が可能となる。また、図4に示した例では、各MCUラインごとにビット位置と直流成分値を更新するために(m/p)×n回発生する割り込み処理についても、上記の処理を行うことで処理回数の削減が可能となる。具体的には、図9のs908のように各画像の先頭からpqMCU個ずつ伸張することによって、割り込み回数を(m/p)×(n/q)回にすることができ、つまり図4の例の1/qに削減することができる。そのため、割り込み処理分の処理時間を大幅に削減でき、全体の処理を大幅に高速化することができる。
以上より、空デコード解析を不要とし、割り込み処理の回数を削減した高速な画像圧縮処理、画像伸張処理を実現している。
さらに、本実施形態でも、JPEG圧縮器503によるDCTやMCU間における直流成分値の差分の計算、JPEG伸張器505による逆DCTやMCUに対する実際の直流成分値の計算等、通常のJPEGと同様の処理を用いる。つまり、本実施形態では、圧縮用DMAC504、伸張用DMAC506による制御により、MCUの圧縮順、伸張順が通常のJPEGとは異なるが、1MCUに対する処理は通常のJPEGと同様である。そのため、本実施形態による圧縮、伸張のために、JPEG圧縮器503、JPEG伸張器505とは異なる特別な圧縮器、伸張器が用意されなくても、上述の高速な画像圧縮、画像伸張を行うことが可能である。
[第2の実施形態]
第1の実施形態では、画像の圧縮、伸張に伴い当該画像を右に90度回転する場合について説明した。第2の実施形態では、画像の圧縮、伸張に伴い当該画像を右に270度回転(左に90度回転)する場合について説明する。
第1の実施形態で説明したように、画像を右に90度回転する場合、入力画像の縦のMCUラインにおけるqライン分の画像が圧縮の単位となり、当該qライン分の画像内では縦MCU順に圧縮が行われる。そして、右に90度回転する場合の伸張処理では、図8(d)に示したように、p×q個のMCUに相当する画像単位iで伸張処理が行われ、且つ該画像単位i内では各MCUが圧縮時と同じ順に伸張が行われる。そして、第j出力バンドにおける第i画像単位の処理において、s908で記録されたアドレス値および直流成分値を、第j+1出力バンドにおける第i画像単位の伸張処理で使うことができる。
しかしながら、270度回転時には、圧縮時の処理を同じとすると、伸張時はMCU単位の処理が90度回転時の処理と逆になる。そのため、第j出力バンド伸張時に使用するアドレス値および直流成分値を、それ以前の出力バンドでの処理で得ることができないという問題がある。本実施形態は、圧縮時に入力画像の「右から」縦MCU順に圧縮することでその課題を解決する。ただし、伸張時の回転方向が圧縮前に既知である必要がある。
図10および図11はそれぞれ、右270度回転が伴うJPEG圧縮、伸張処理における処理順序を示す図である。第2の実施形態における画像処理装置の構成は第1の実施形態と同様であるが、画像データを270度回転する点が異なる。以下では、画像の圧縮、伸張に伴い該画像が右270度回転される時のJPEG圧縮器503と圧縮用DMAC504の動作、ならびにJPEG伸張器505と伸張用DMAC506の動作について説明する。
まず、右270度回転の伸張出力時の圧縮用DMAC504の動作を、図10を用いて説明する。ただし、右270度回転の伸張出力時の処理フローは、図7に示した、画像が90度回転される場合の処理フローと同じであるが、処理に用いられる設定値が異なる。具体的には、図10に示す順序でMCUが圧縮されるように、カレントアドレスCAの初期値と、処理対象のデータのアドレスを変更するためのオフセット値が設定される。
s701において圧縮用DMAC504は、カレントアドレスCAとして、SA_aを設定する。このときのSA_aは、画像の左上をSAとすると、SA_a=SA+3(m−1)xであり、このアドレスは、図10に示すように、画像の右上のMCUにおける左上の画素に対応する。そして、s702における処理により、MCU内の1ラインのデータが読み出される。s703における処理で用いられるオフセットであるoff1として、3(m−1)xが用いられる。s703における処理により、圧縮用DMAC504により読み出されるデータのアドレスが、MCUにおける1つ下のラインの左端の画素に対応するアドレスに移動する。そして、s704における処理により、s702、s703がさらにy−1回繰り返されると、1MCUの圧縮が完了する。
s705において用いられるオフセットであるoff2として、off1と同じである、3(m−1)xが用いられる。s705における処理により、読み出されるデータのアドレスが、画像における1つ下のMCUにおける左上の画素に対応するアドレスに移動する。
s706における処理により、s702〜s705の処理がさらにq−1回繰り返されると、縦に並んだq個のMCUについて圧縮が完了する。
s707において用いられるオフセットであるoff3として、3y(m−2−xpm)が用いられる。s707における処理により、圧縮対象のMCUが、1つ左であり且つq−1個上のMCUに移る。さらに、読み出し対象のアドレスが、該MCUの左上の画素に対応するアドレスに移る。
s708、s709における処理により、図10に示す順序に従って、MCUが順次圧縮される。これにより、入力画像全体がJPEG圧縮器503へ入力されたことになり、すなわち、計n/q個(ただしn≧q、nがqで割り切れない場合は+1個)のJPEGデータが生成される。ただし、これらのJPEGデータは、各MCUについては通常のJPEGと同様の処理で圧縮されているが、MCUの圧縮順は通常のJPEGのものとは異なる。
また、右270度回転を伴う伸張処理を行う際のフローについても、圧縮時同様に、設定値が異なる以外は、図9を用いて説明した右90度回転を伴う伸張処理と同じである。具体的には、右270度回転時の各設定値は下記の通りとなる。
CAの初期値=SA
off1=3(n−1)y
off2=−3m(y−1)x
off3=0
上記の設定値を用いて図9のフローが実行されることで、図11に示すように、図10で示した画像が右に270度(左に90度)回転された状態で伸張される。図10で示した画像に含まれるMCUの、伸張が行われる順序は、圧縮された順序と同じである。また伸張されたデータがメモリ510に書き込まれるときの、メモリ510における書き込み位置は具体的には次のようになる。まず、メモリ510にデータを書き込む際の書き込み先アドレスを示すCAの初期値が、右270度回転後の画像における左上の画素に対応するアドレス(SA)に設定される。そして、回転後のMCUの左上の画素から右方向に向かって、データの伸張、書込みが行われ、off1により、書き込み位置が該MCUの下のラインに移る。この伸張、書込みが該MCUの全体に行われた後、off2により、書き込み位置が右隣りのMCUの左上の画素に対応するアドレスに移る。これらの処理が横に並んだq個のMCUについて実行されると、off3により、書き込み位置が、最後に伸張したMCUから左にq−1個分且つ下に1個分ずれたMCUの、左上の画素に対応するアドレスに移る。以上の処理を縦にpMCUライン繰り返すことで、q×p個のMCUについて、右に270度回転させた伸張が完了する。そして、以上の処理を、CAの初期値を変更しながら回転後の画像全体に対して実行することで、図10に示した画像を右に270度回転させた伸張処理が完了する。よって、右90度回転と同じ処理(図9に示した処理)を、設定値を異ならせて実行することで、右270度回転が可能となる。そのため、右90度回転を伴う伸張処理と同様に、右270度回転を伴う伸張処理においても空デコード解析は不要であり、割り込み処理の回数が削減された高速な処理を実現できる。
なお、図15は、第1の実施形態で説明したMCUの圧縮処理の順序を示す図であり、図16は、第2の実施形態で説明したMCUの圧縮処理の順序を示す図である。そして、図15、図16の圧縮順序それぞれに応じた伸張順序に従って伸張が行われる。このように、画像の回転角度に応じた順序でMCUが圧縮され、且つその順序に応じた順序で伸張処理が実行されることで、空デコードを不要とすることができる。
[第3の実施形態]
図12および図13はそれぞれ、右90度回転が伴うJPEG圧縮、伸張処理における処理順序の別の例を示す図である。第1の実施形態と同じく右90度回転を伴う手法であるが、第1の実施形態では入力画像データの圧縮順が縦MCU順であったのに対し、MCUの横ライン方向に向かって圧縮処理が行われる。
以下に、第3の実施形態におけるJPEG圧縮器503と圧縮用DMAC504の動作ならびに、JPEG伸張器505と伸張用DMAC506の動作について説明する。
図14は、JPEG圧縮器503と圧縮用DMAC504により処理を示すフローチャートであり、右90度回転が伴う画像伸張処理の別の例を示す。
s1401において、圧縮用DMAC504は、カレントアドレスCAとして、図12に示すSA_aを設定する。s1402において、圧縮用DMAC504は、カレントアドレスCAから、連続した3xバイトを読み出す。CAには読み出した分のバイト数が随時加算される。s1403において、圧縮用DMAC504は、その時点のカレントアドレスCAに値off1を加算する。ただしoff1=3(m−1)xである。図10に示すように、off1の加算により、カレントアドレスCAが同MCU内の次のラインの左端に移動する。s1404では、s1402とs1403がy−1回繰り返される。この計y回の処理で、1MCU分の入力画像データが、JPEG圧縮器503に供給される。JPEG圧縮器503は入力されるMCUに対して、連続してJPEG圧縮処理を行う。この時点でカレントアドレスCAはMCUの右下端画素の次の画素のアドレスとなる。
s1405において、圧縮用DMAC504は、カレントアドレスCAに値off2を加算する。ただしoff2=−3m(y−1)xである。off2の加算により、カレントアドレスCAは、図12に示すように右のMCU左上端へ移動する。s1406において、圧縮用DMAC504は、s1402〜s1405の処理をp−1回繰り返す。この計p回の処理で、横に並んだp個のMCUについての圧縮処理が完了する。s1407において、圧縮用DMAC504は、カレントアドレスCAに値off3を加算する。off3の加算により、カレントアドレスCAは、図12に示すように、一つ下の横MCUラインにおける先頭のMCUの左上端へ移動する。なお、off3は、3x(m−p)xである。
s1408において、圧縮用DMAC504は、s1402〜s1407の処理をq−1回繰り返す。この計q回の処理で、入力画像のp×q個のMCUに相当するデータがJPEG圧縮器503へ入力され、圧縮用DMAC504内のバンドメモリに格納されたことになる。
s1409において、圧縮用DMAC504は、カレントアドレスCAに値off4を加算する。off4の加算により、カレントアドレスCAは、図12に示すように、右隣りの縦MCUラインにおけるq−1個上のMCUの、左上の画素のアドレスとなる。
s1410において、圧縮用DMAC504は、s1402〜s1409の処理をバンド終了まで繰り返す。以上の処理により、ここまでに圧縮したq本の横MCUライン分の画像が圧縮され、圧縮用DMAC504内のバンドメモリに格納される。そして圧縮用DMAC504は、バンドメモリ内の画像をメモリ510に格納する。このとき、圧縮用DMAC504は、バンドメモリを解放してもよい。ここで圧縮用DMAC504は、次のMCUラインの非圧縮画像がメモリ510内にない場合は、それが格納されるまで待機する。
s1411において、圧縮用DMAC504は、s1401〜s1410の処理を、画像全体にこれらの処理が実行されるまで繰り返す。つまり、圧縮用DMAC504は、カレントアドレスCAについて、図12のSA_bのように、qライン分、順次下方向に変更することで、s1401〜s1410の処理を画像全体に実行する。これにより、入力画像全体がJPEG圧縮器503により圧縮される。すなわち、第2の実施形態同様、計n/q個(ただしn≧q、nがqで割り切れない場合は+1個)の圧縮画像が生成され、それらの圧縮画像がメモリ510に格納されたことになる。
第3の実施形態における伸張処理は、図9に示した処理が実行される。ただし、処理に用いられる設定値は、第1の実施形態で示した右90度回転時のものとは異なる。第3の実施形態における各設定値は下記の通りである。
CAの初期値=SA+3(n−1)y
off1=3(n−1)y
off2=3(n−1)y
off3=3y(n−2−xpn)
これらの設定値を用いて図9に示した処理が実行されることで、図13に示す順序に従ってメモリ510に伸張されたデータが書き込まれる。そのため、図12に示したように圧縮された画像が、図13に示すように、右に90度回転された上でメモリ510に書き込まれる。
以上の実施形態3で示した処理により、入力画像データの圧縮順が縦MCU順でなくとも、画像の回転を伴う圧縮、伸張処理を、空デコード解析を行わず且つ割り込み処理の回数を削減した上で実現することができる。
上述したように、以上の実施形態では、圧縮されている画像が回転されるように、且つ画像全体を一度に伸張せずに、分割して伸張する場合の処理について説明した。この処理において、圧縮された画像が、図1に示したように通常のJPEG圧縮における順序に従ってMCUが順次圧縮されたものである場合、当該伸張対象の一部のMCUの直流成分値を求めるため、空デコードが必要になる。
そこで以上の実施形態では、画像を圧縮、伸張させるときに該画像を回転する場合、画像の圧縮においてMCUに対して圧縮処理が順次実行されるときの順序として、通常のJPEGとは異なり且つ回転角度に応じた順序が適用される。そして、そのように圧縮された画像について、MCUが該圧縮の順序に応じた順序で伸張、回転が順次実行され、回転角度に応じた順序に従ってMCUが順次メモリに書き込まれる。そのため、空デコードを必要とせずに、画像の圧縮、伸張処理において画像を回転させることが可能となる。
ただし、図6、図10、図12で示した圧縮処理により圧縮されたデータは、通常のJPEGとは異なる順序でMCUが圧縮されているため、例えば外部装置が備える通常のJPEGデコーダでは伸張できないことも考えられる。そのため、例えば以上の実施形態における圧縮処理は、画像処理装置500において、伸張が行われることが決定されている状況において実行される。例えば、スキャナ502により原稿がスキャンされることで得られたスキャン画像をプリンタ508が印刷することでコピーが行われる場合に、以上の実施形態における圧縮処理が実行される。具体的には、該スキャン画像をJPEG圧縮器503が圧縮し、該圧縮されたスキャン画像をJPEG伸張器505が伸張し、当該伸張された画像をプリンタ508が印刷する。この場合に、コピー設定(両面設定やNin1のページ割り付け設定等)により、画像を右に90度、270度に回転する必要が生じる場合がある。このとき、JPEG圧縮器503によるスキャン画像の圧縮に図6、図10、図12に示した圧縮処理が適用され、JPEG伸張器505による伸張に図8、図11、図13に示した伸張処理が適用される。
一方、IFを介して外部装置から受信した画像データや、外部メモリから読み出した画像データが、通常のJPEG圧縮により圧縮されていることがある。この場合、MCUが圧縮された順序は、図1に示したような通常のJPEG圧縮による順序である。例えば、JPEG伸張器505が、このようなJPEG画像を伸張し、プリンタ508が印刷を行うことがある。そして、このとき、印刷設定(両面設定やNin1のページ割り付け設定等)によっては、該JPEG画像に対する回転が必要な場合がある。このような場合には、伸張用DMAC506は、JPEG伸張器505に、図4に示したような空デコードを行わせることにより、回転伸張を行う。
さらに、画像処理装置500は、スキャナ502がスキャンした画像を外部装置に送信する場合などは、圧縮用DMAC504は、図1に示したような通常のJPEG圧縮における圧縮順序に従って、MCUを圧縮する。
このように画像処理装置500が、通常のJPEGに則した圧縮や伸張を行う場合でも、各MCUに対する圧縮処理(DCT等)や、伸張処理(逆DCT等)は、圧縮、伸張順に関わらず共通の処理を用いることができる。そのため、図6、図10、図12に示した圧縮処理や、図8、図11、図13に示した伸張処理に、通常のJPEG圧縮、伸張で用いられるJPEG圧縮器503、JPEG伸張器505を用いることができる。
なお、JPEG圧縮器503およびJPEG伸張器505は、回路等のハードウェアで構成されていてもよいし、CPU501がプログラムを実行することで、JPEG圧縮器503およびJPEG伸張器505として動作してもよい。同様に、圧縮用DMAC504および伸張用DMAC506は、回路等のハードウェアで構成されていてもよいし、CPU501がプログラムを実行することで、圧縮用DMAC504および伸張用DMAC506として動作してもよい。
さらに、以上の実施形態では、画像処理装置500が、JPEG圧縮器503および圧縮用DMAC504による圧縮処理と、JPEG伸張器505および伸張用DMAC506による伸張処理の両方を実行していた。しかしこれに限らず、JPEG圧縮器503および圧縮用DMAC504による圧縮処理と、JPEG伸張器505および伸張用DMAC506による伸張処理がそれぞれ別個の画像処理装置により実行されてもよい。この場合、例えば同一のベンダーにより画像圧縮装置としての画像処理装置(例えばデジタルカメラ)と、画像伸張装置としての画像処理装置(例えばプリンタ)が提供されるとする。この場合、上述した実施形態における、画像の回転角度に応じて順序によるMCUの圧縮処理および伸張処理を、それぞれの画像処理装置に搭載することが可能である。そのため、上述の実施形態における圧縮処理、伸張処理をそれぞれ個別の画像処理装置で実現することができる。
以上の実施形態がプログラムにより実現される場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も以上の実施形態の機能を実現することになる。以上の実施形態の機能を実現するためのプログラムコードを、1つのコンピュータ(CPU、MPU)で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。

Claims (15)

  1. 処理対象の画像が分割された各ブロックに所定の圧縮処理を実行することで、前記処理対象の画像を圧縮する圧縮手段と、
    前記圧縮手段により圧縮された前記処理対象の画像のうちの伸張対象部分に含まれる複数のブロックのそれぞれに対応する、前記圧縮手段による圧縮で得られた圧縮データに、所定の伸張処理と回転を実行する実行手段と、
    前記実行手段による前記所定の伸張処理と前記回転が前記複数のブロックに対して実行されることで得られた前記伸張対象部分に対応する伸張画像を、所定のメモリ領域に記憶する記憶手段と、
    前記記憶手段により前記所定のメモリ領域に記憶された前記伸張画像を出力する出力手段と、
    前記伸張対象部分を変更する変更手段と、
    を備え、
    前記記憶手段による前記伸張対象部分に対応する前記伸張画像の前記所定のメモリ領域への記憶と、前記出力手段による前記所定のメモリ領域に記憶された前記伸張画像の出力が、前記変更手段による前記伸張対象部分の変更のたびに実行されることで、伸張および回転が実行された前記処理対象の画像が出力され、
    前記圧縮手段は、処理対象の所定のブロックに対し、前記実行手段による回転の回転角度に応じて異なるブロックを参照することで前記所定の圧縮処理を実行し、前記実行手段は、前記所定のブロックに対応する圧縮データに対し、前記所定のブロックの圧縮において前記所定の圧縮処理で参照されたブロックを参照することで前記所定の伸張処理を実行することを特徴とする画像処理装置。
  2. 前記圧縮手段に、前記伸張対象部分に含まれる複数のブロックに、前記所定の圧縮処理を所定の圧縮順序に従って順次実行させる圧縮制御手段と、
    前記実行手段に、前記複数のブロックに対して前記所定の伸張処理を前記所定の圧縮順序に対応する所定の伸張順序に従って順次実行させる伸張制御手段と、
    をさらに備え、
    前記圧縮手段は、前記所定のブロックに対する前記所定の圧縮処理において、前記所定の圧縮順序における1つ前のブロックを参照し、前記実行手段は、前記所定のブロックに対する前記所定の伸張処理において、前記所定の圧縮順序における1つ前のブロックを参照し、
    前記圧縮制御手段および前記伸張制御手段は、前記回転角度に応じて、前記所定の圧縮順序と前記所定の伸張順序を異ならせることを特徴とする請求項1に記載の画像処理装置。
  3. 前記圧縮制御手段は、前記変更手段により前記伸張対象部分が変更されるたびに、前記伸張対象部分に含まれる複数のブロックに、前記所定の圧縮処理を所定の圧縮順序に従って順次実行させ、
    前記伸張制御手段は、前記変更手段により前記伸張対象部分が変更されるたびに、前記複数のブロックに対して前記所定の伸張処理を前記所定の伸張順序に従って順次実行させることを特徴とする請求項2に記載の画像処理装置。
  4. 前記変更手段は、前記伸張対象部分の変更方法を前記回転角度に応じて異ならせることを特徴とする請求項3に記載の画像処理装置。
  5. 前記変更手段は、前記処理対象の画像において前記伸張対象部分となる複数の部分の、前記伸張対象部分となる順番を前記回転角度に応じて異ならせることを特徴とする請求項4に記載の画像処理装置。
  6. 前記処理対象の画像が分割された各ブロックをJPEGに従った順序で順次圧縮することで、前記画像をJPEG圧縮するJPEG圧縮制御手段をさらに備え、
    前記圧縮制御手段は、前記圧縮手段に、前記JPEG圧縮制御手段によるJPEGに従った前記順序とは異なる前記所定の圧縮順序に従って、前記各ブロックに対して前記所定の圧縮処理を順次実行させることを特徴とする請求項2乃至4のいずれか1項に記載の画像処理装置。
  7. 前記処理対象の画像が回転されない場合、前記JPEG圧縮制御手段が、前記複数のブロックをJPEGに従った順序で順次圧縮することで、前記画像をJPEG圧縮することを特徴とする請求項6に記載の画像処理装置。
  8. 前記実行手段により前記処理対象の画像に伸張と回転が行われる場合に、前記圧縮手段は、前記処理対象の所定のブロックに対し、前記回転角度に応じて異なるブロックを参照することで前記所定の圧縮処理を実行し、
    前記実行手段による伸張と回転が行われない場合、前記圧縮手段は、前記処理対象の所定のブロックに対し、前記回転の回転角度に関わらず同じブロックを参照することで前記所定の圧縮処理を実行することを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
  9. 原稿をスキャンするスキャン手段と、
    前記スキャン手段によるスキャンにより得られたスキャン画像を印刷するプリント手段をさらに備え、
    前記プリント手段は、前記圧縮手段により圧縮され且つ前記実行手段により伸張された前記スキャン画像を印刷することを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
  10. 前記スキャン画像が回転され、且つ回転された前記スキャン画像が前記プリント手段により印刷される場合に、前記圧縮手段は、前記処理対象の所定のブロックに対し、前記回転角度に応じて異なるブロックを参照して前記所定の圧縮処理を実行し、
    前記スキャン画像が回転される場合であっても、前記スキャン画像が前記プリント手段により印刷されない場合、前記圧縮手段は、前記処理対象の所定のブロックに対し、前記回転の回転角度に関わらず同じブロックを参照することで前記所定の圧縮処理を実行することを特徴とする請求項9に記載の画像処理装置。
  11. 前記出力手段は、所定のメモリ領域に記憶された、前記伸張対象部分に含まれる伸張画像を前記所定のメモリ領域とは異なるメモリに書き込むことを特徴とする請求項1乃至10のいずれか1項に記載の画像処理装置。
  12. 前記所定の圧縮処理は、1つのブロックに対応する画像データの周波数データへの変換、および、当該変換により得られた周波数データにおける当該1つのブロックの直流成分値と他のブロックの直流成分値との差分の計算を含み、
    前記所定の伸張処理は、当該他のブロックの直流成分値に対する当該差分の加算、および、当該加算で得られた周波数データの画像データへの変換を含み、
    前記圧縮手段は、処理対象の所定のブロックに対し、前記実行手段による回転の回転角度に応じて異なる他のブロックを参照することで前記差分を計算し、前記実行手段は、前記所定のブロックに対応する圧縮データに対し、前記他のブロックの直流成分値に前記差分を加算することで得られた周波数データを画像データに変換することを特徴とする請求項1乃至11のいずれか1項に記載の画像処理装置。
  13. 処理対象の画像が分割された各ブロックに所定の圧縮処理を実行することで、前記処理対象の画像を圧縮する圧縮工程と、
    前記圧縮工程において圧縮された前記処理対象の画像のうちの伸張対象部分に含まれる複数のブロックのそれぞれに対応する、前記圧縮工程における圧縮で得られた圧縮データに、所定の伸張処理と回転を実行する実行工程と、
    前記実行工程における前記所定の伸張処理と前記回転が前記複数のブロックに対して実行されることで得られた前記伸張対象部分に対応する伸張画像を、所定のメモリ領域に記憶する記憶工程と、
    前記記憶工程において前記所定のメモリ領域に記憶された前記伸張画像を出力する出力工程と、
    前記伸張対象部分を変更する変更工程と、
    を備え、
    前記記憶工程における前記伸張対象部分に対応する前記伸張画像の前記所定のメモリ領域への記憶と、前記出力工程における前記所定のメモリ領域に記憶された前記伸張画像の出力が、前記変更工程における前記伸張対象部分の変更のたびに実行されることで、伸張および回転が実行された前記処理対象の画像が出力され、
    前記圧縮工程では、処理対象の所定のブロックに対し、前記実行工程における回転の回転角度に応じて異なるブロックを参照することで前記所定の圧縮処理を実行し、前記実行工程では、前記所定のブロックに対応する圧縮データに対し、前記所定のブロックの圧縮において前記所定の圧縮処理で参照されたブロックを参照することで前記所定の伸張処理を実行することを特徴とする画像処理方法。
  14. 処理対象の画像が分割された各ブロックに所定の圧縮処理を実行し、且つ、処理対象の所定のブロックに対し、前記処理対象の画像の回転の回転角度に応じて異なるブロックを参照することで前記所定の圧縮処理を実行する圧縮手段により圧縮された前記処理対象の画像を伸張する画像処理装置であって、
    前記圧縮手段により圧縮された前記処理対象の画像のうちの伸張対象部分に含まれる複数のブロックのそれぞれに対応する、前記圧縮手段による圧縮で得られた圧縮データに、所定の伸張処理と前記回転角度に応じた回転を実行する実行手段と、
    前記実行手段による前記所定の伸張処理と前記回転が前記複数のブロックに対して実行されることで得られた前記伸張対象部分に対応する伸張画像を、所定のメモリ領域に記憶する記憶手段と、
    前記記憶手段により前記所定のメモリ領域に記憶された前記伸張画像を出力する出力手段と、
    前記伸張対象部分を変更する変更手段と、
    を備え、
    前記記憶手段による前記伸張対象部分に対応する前記伸張画像の前記所定のメモリ領域への記憶と、前記出力手段による前記所定のメモリ領域に記憶された前記伸張画像の出力が、前記変更手段による前記伸張対象部分の変更のたびに実行されることで、伸張および回転が実行された前記処理対象の画像が出力され、
    前記実行手段は、前記所定のブロックに対応する圧縮データに対し、前記圧縮手段による前記所定の圧縮処理で参照された、前記回転角度に応じて異なるブロックを参照することで、前記所定の伸張処理を実行することを特徴とする画像処理装置。
  15. 処理対象の画像を圧縮する画像処理装置であって、
    前記処理対象の画像が分割された各ブロックに所定の圧縮処理を実行することで、前記処理対象の画像を圧縮する圧縮手段を有し、
    前記圧縮手段により圧縮された前記処理対象の画像のうちの伸張対象部分に含まれる複数のブロックのそれぞれに対応する、前記圧縮手段による圧縮で得られた圧縮データに、所定の伸張処理と回転が実行され、
    前記所定の伸張処理と前記回転が前記複数のブロックに対して実行されることで得られた前記伸張対象部分に対応する伸張画像が、所定のメモリ領域に記憶され、
    前記所定のメモリ領域に記憶された前記伸張画像が出力され、
    前記伸張対象部分に対応する前記伸張画像の前記所定のメモリ領域への記憶と、前記所定のメモリ領域に記憶された前記伸張画像の出力が、前記伸張対象部分の変更のたびに実行されることで、伸張および回転が実行された前記処理対象の画像が出力され、
    前記所定の伸張処理は、処理対象の所定のブロックに対応する圧縮データに対し、前記回転の回転角度に応じて異なるブロックが参照されることで実行され、
    前記圧縮手段は、前記所定のブロックに対し、前記所定の伸張処理で参照される、前記回転の前記回転角度に応じて異なるブロックを参照することで、前記所定の圧縮処理を実行することを特徴とする画像処理装置。
JP2018222719A 2018-11-28 2018-11-28 画像処理装置、画像処理方法 Pending JP2020088694A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018222719A JP2020088694A (ja) 2018-11-28 2018-11-28 画像処理装置、画像処理方法
US16/691,351 US11276205B2 (en) 2018-11-28 2019-11-21 Image processing apparatus and image processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018222719A JP2020088694A (ja) 2018-11-28 2018-11-28 画像処理装置、画像処理方法

Publications (2)

Publication Number Publication Date
JP2020088694A true JP2020088694A (ja) 2020-06-04
JP2020088694A5 JP2020088694A5 (ja) 2022-01-06

Family

ID=70770896

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018222719A Pending JP2020088694A (ja) 2018-11-28 2018-11-28 画像処理装置、画像処理方法

Country Status (2)

Country Link
US (1) US11276205B2 (ja)
JP (1) JP2020088694A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021164046A (ja) * 2020-03-31 2021-10-11 キヤノン株式会社 画像処理装置、記録装置、画像処理方法、およびプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09247424A (ja) * 1996-03-04 1997-09-19 Canon Inc 画像処理装置およびその方法
JPH1075345A (ja) * 1996-06-26 1998-03-17 Fuji Xerox Co Ltd 画像処理装置
JP2004328571A (ja) * 2003-04-28 2004-11-18 Kyocera Mita Corp 画像処理装置
JP2008104164A (ja) * 2006-09-19 2008-05-01 Ricoh Co Ltd 画像処理装置及び画像処理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7277596B2 (en) * 2002-04-10 2007-10-02 Ricoh Company, Ltd. Apparatus configured to eliminate image data show-through
CN100477788C (zh) * 2003-09-16 2009-04-08 富士通微电子株式会社 图像处理显示装置和图像处理显示方法
CA2563478A1 (en) * 2004-04-16 2005-10-27 James A. Aman Automatic event videoing, tracking and content generation system
JP2006304243A (ja) 2005-03-23 2006-11-02 Seiko Epson Corp 画像処理装置、印刷装置、および、画像処理方法
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
JP6381996B2 (ja) * 2014-06-30 2018-08-29 キヤノンメディカルシステムズ株式会社 医用画像処理装置およびx線ct装置
US9912868B2 (en) * 2015-09-15 2018-03-06 Canon Kabushiki Kaisha Image-blur correction apparatus, tilt correction apparatus, method of controlling image-blur correction apparatus, and method of controlling tilt correction apparatus
ITUB20155295A1 (it) * 2015-10-16 2017-04-16 Torino Politecnico Apparatuses and methods for encoding and decoding images
US10535161B2 (en) * 2017-11-09 2020-01-14 Samsung Electronics Co., Ltd. Point cloud compression using non-orthogonal projection
JP7251205B2 (ja) * 2019-02-22 2023-04-04 ブラザー工業株式会社 プリンタ及びモジュール

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09247424A (ja) * 1996-03-04 1997-09-19 Canon Inc 画像処理装置およびその方法
JPH1075345A (ja) * 1996-06-26 1998-03-17 Fuji Xerox Co Ltd 画像処理装置
JP2004328571A (ja) * 2003-04-28 2004-11-18 Kyocera Mita Corp 画像処理装置
JP2008104164A (ja) * 2006-09-19 2008-05-01 Ricoh Co Ltd 画像処理装置及び画像処理方法

Also Published As

Publication number Publication date
US11276205B2 (en) 2022-03-15
US20200167967A1 (en) 2020-05-28

Similar Documents

Publication Publication Date Title
US5751865A (en) Method and apparatus for image rotation with reduced memory using JPEG compression
JP5558767B2 (ja) 画像処理装置及びその処理方法
US7468803B2 (en) Image processing apparatus and image processing method
JP5614122B2 (ja) 画像データ復号装置
JP2020088694A (ja) 画像処理装置、画像処理方法
JP2003189109A (ja) 画像処理装置及び方法、並びにコンピュータ・プログラム
JP2004221998A (ja) 画像処理装置
JP3023215B2 (ja) 画像処理装置
JP2018058295A (ja) 画像処理装置、画像処理方法、及びプログラム
JP5441676B2 (ja) 画像処理装置及びその処理方法
JP2003348355A (ja) 画像処理装置及びその制御方法
JP2006101014A (ja) 画像処理装置およびこれを備えるプリンタ、画像処理方法
JP6775558B2 (ja) 画像伸長装置及びその制御方法及びプログラム
US11314995B2 (en) Image processing apparatus, image processing method, and storage medium
JP2004253889A (ja) 画像処理装置及び方法
JP3559419B2 (ja) 画像圧縮データの伸張方法及び装置
JP2006313985A (ja) 画像処理装置
JP2003092674A (ja) 画像処理装置および画像処理方法
JP5732765B2 (ja) 画像データ復号装置
JP2000134459A (ja) 画像処理方法
JP2020129728A (ja) 画像処理装置およびその制御方法
JP3119387B2 (ja) 画像処理装置
JP2016046597A (ja) 画像処理装置、および画像処理装置の制御方法、プログラム
US9332152B2 (en) Image processing apparatus, image processing method, and non-transitory computer readable medium
JP2008227628A (ja) 画像処理装置、画像処理方法、及び画像形成装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211125

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230718