(57)【要約】【課題】軽い処理負荷で、符号化された画像データを１８０°回転させることができるデータ変換装置およびそのプログラムを提供することを目的とする。【解決手段】データ変換装置は、連続した複数のデータを含む第１のデータ列を、第１のデータ列の先頭の第１の符号と、第１のデータ列において連続した２つのデータの差分値を複数の第２の符号とする差分符号列化して得られた差分符号列から、第１のデータ列の末尾のデータ値を算出し、差分符号列に含まれる複数の第２の符号それぞれを取り出し、取り出された複数の第２の符号を、第１のデータ列において末尾から先頭までの方向の順番に連続した２つのデータの差分値を示す複数の第３の符号に変換し、算出された第１のデータ列の末尾のデータ値を先頭とし、変換により得られた複数の第３の符号を、先頭の次から末尾まで連続して含む変換データ列を生成する。【選択図】図５
2011029682.tif 000002
【特許請求の範囲】
【請求項１】
先頭から末尾まで連続した複数のデータを含む第１のデータ列を、前記第１のデータ列の先頭のデータ値を示す第１の符号を先頭とし、前記第１のデータ列において先頭から末尾への方向の順番に、連続した２つのデータの差分値それぞれを複数の第２の符号それぞれとする差分符号列化して得られた差分符号列から、前記第１のデータ列の末尾のデータ値を算出する第１の末尾シンボル値算出手段と、
前記差分符号列に含まれる複数の第２の符号それぞれを取り出す第１の符号取出手段と、
前記取り出された複数の第２の符号を、前記第１のデータ列において末尾から先頭までの方向の順番に連続した２つのデータの差分値をそれぞれ示す複数の第３の符号に変換する第１の符号変換手段と、
前記算出された第１のデータ列の末尾のデータ値を先頭とし、前記変換により得られた複数の第３の符号を、先頭の次から末尾まで連続して含む変換データ列を生成する変換データ列生成手段と
を有する
データ変換装置。
【請求項２】
前記第１のデータ列は、第１の画像から得られた画素データ、または、複数の画素を含む画素ブロックのデータをシンボルとして含む第１の画像データ列であって、
前記差分符号列は、前記第１の画像データ列を、前記第１の画像データ列における先頭のシンボルを、前記第１の符号として含み、前記第１の画像データ列において連続した２つのシンボルの差分値を、前記複数の第２の符号として含む前記第１の差分符号列とし、
前記第１の末尾シンボル値算出手段は、前記第１の差分符号列に含まれる前記第１の符号が示す前記第１の画像データ列の先頭のシンボル値と、前記複数の第２の符号それぞれが示す前記第１の画像データ列における連続した２つのシンボルの差分値とに基づいて、前記第１の画像データ列の末尾のシンボル値を算出し、
前記第１の符号取出手段は、前記第１の差分符号列に含まれる複数の第２の符号を取り出し、
前記第１の符号変換手段は、前記取り出された複数の第２の符号それぞれを、前記第１の画像データ列において末尾から先頭までの方向の順番に連続した２つのシンボルの差分値を示す前記複数の第３の符号それぞれに変換し、
前記変換データ列生成手段は、前記算出された第１の画像データの末尾のシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含み、前記第１の画像データ列が示す第１の画像を、１８０°回転させた第２の画像を示す前記第２の差分符号列を生成する
請求項１に記載のデータ変換装置。
【請求項３】
前記差分符号列化により、前記第１の差分符号列は、符号化後の前記複数の第２の符号それぞれが、復号なしに、前記第２の画像データ列において末尾から先頭までの方向の順番に連続した２つのシンボルの差分値を示す前記複数の第４の符号それぞれに変換されうるように、さらに可変長符号化されて第２の差分符号列とされ、
前記第２の差分符号列を可変長復号して、前記第１の差分符号列とする第１の可変長復号手段と、
供給された前記末尾のシンボル値を可変長符号化する第１の可変長符号化手段と、
前記第２の差分符号列に含まれ、可変長符号化された第２のシンボル値の区切りを検出する区切り検出手段と
をさらに有し、
前記第１の末尾シンボル値算出手段は、前記第１の可変長復号手段により得られた前記第１の差分符号列から算出された前記第１の差分符号列の末尾のシンボル値を、前記第１の可変長符号化手段に対して供給し、
前記第１の符号取出手段は、前記区切り検出手段により検出された区切りごとに、前記第２の差分符号列に含まれ、可変長符号化された複数の第２の符号を取り出し、
前記第１の符号変換手段は、前記取り出された可変長符号化された複数の第２の符号それぞれを、前記第２の画像データ列において末尾から先頭までの方向の順番に連続した２つのシンボルの差分値を示す前記複数の第４の符号それぞれに変換し、
前記変換データ列生成手段は、前記第１の可変長符号化手段により可変長符号化された第１の画像データの末尾のシンボル値を先頭とし、前記変換により得られた複数の第４の符号を含む可変長符号化された前記第２の差分符号列を生成する
請求項２に記載のデータ変換装置。
【請求項４】
前記差分符号列化により、前記第１の差分符号列は、さらに可変長符号化されて第３の差分符号列とされ、
前記第３の差分符号列を可変長復号して、前記第１の差分符号列とする第１の可変長復号手段と、
供給された前記末尾のシンボル値を可変長符号化する第１の可変長符号化手段と、
前記第３の差分符号列に含まれ、可変長符号化された第２のシンボル値の区切りを検出する区切り検出手段と、
取り出された可変長符号化された第２の符号を可変長復号する第２の可変長復号手段と、
供給された前記第３の符号を可変長符号化する第２の可変長符号化手段と
をさらに有し、
前記第１の末尾シンボル値算出手段は、前記第１の可変長復号手段により得られた前記第１の差分符号列から算出された前記第１の差分符号列の末尾のシンボル値を、前記第１の可変長符号化手段に対して供給し、
前記第１の符号取出手段は、前記区切り検出手段により検出された区切りごとに、前記第３の差分符号列に含まれ、可変長符号化された複数の第２の符号を取り出して、前記第２の可変長復号手段に供給し、
前記第１の符号変換手段は、前記第２の可変長復号手段により復号された第２の符号それぞれを、前記第３の符号に変換して、前記第２の可変長符号化手段に対して供給し、
前記変換データ列生成手段は、前記第１の可変長符号化手段により可変長符号化された第１の画像データの末尾のシンボル値を先頭とし、前記第２の可変長符号化手段により可変長符号化された複数の第３の符号を含む可変長符号化された前記第２の差分符号列を生成する
請求項２に記載のデータ変換装置。
【請求項５】
前記差分符号列化により、前記第１の差分符号列は、さらに可変長符号化されて第３の差分符号列とされ、
前記第３の差分符号列を可変長復号して、前記第１の差分符号列とする第１の可変長復号手段と、
前記第３の差分符号列に含まれ、可変長符号化された第２のシンボル値の区切りを検出する区切り検出手段と、
取り出された可変長符号化された第２の符号を可変長復号する第２の可変長復号手段と、
供給された前記第２の符号を可変長符号化する第３の可変長符号化手段と
をさらに有し、
前記第１の末尾シンボル値算出手段は、前記第１の可変長復号手段により得られた前記第１の差分符号列から算出された前記第１の差分符号列の末尾のシンボル値を算出し、
前記第１の符号取出手段は、前記区切り検出手段により検出された区切りごとに、前記第３の差分符号列に含まれ、可変長符号化された複数の第２の符号を取り出して、前記第２の可変長復号手段に供給し、
前記第１の符号変換手段は、前記第２の可変長復号手段により復号された第２の符号それぞれを、前記第３の符号に変換し、
前記変換データ列生成手段は、前記算出された第１の画像データの末尾のシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含む前記第２の画像データ列を生成して、前記第３の可変長符号化手段に供給して可変長符号化させ、可変長された前記第２の差分符号列を生成させる
請求項２に記載のデータ変換装置。
【請求項６】
前記第１のデータ列は、第１の画像から得られ、それぞれ複数の画素を含む画素ブロックのデータそれぞれを符号化した画素ブロックのシンボルを含む第３の画像データ列であって、
前記差分符号列は、前記第３の画像データ列を、前記第３の画像データ列における先頭の画素ブロックのシンボルを、前記第１の符号として含み、前記第３の画像データ列において連続した２つの画素ブロックのシンボルの差分値を、前記複数の第２の符号として含む第３の差分符号列であり、
前記第３の画像データ列から、前記複数の画素ブロックのシンボルそれぞれを取り出すシンボル取り出し手段と、
前記第３の画像データ列に含まれる前記複数の画素ブロックのシンボルそれぞれの位置を示すオフセット値を保持する第１のオフセット保持手段と
をさらに有し、
前記第１の末尾シンボル値算出手段は、前記第３の差分符号列に含まれる前記第１の符号が示す前記第３の画像データ列の先頭の画素ブロックのシンボル値と、前記複数の第２の符号それぞれが示す前記第３の画像データ列における連続した２つの画素ブロックのシンボルの差分値とに基づいて、前記第３の画像データ列の末尾の画素ブロックのシンボル値を算出し、
前記第１の符号取出手段は、第１のオフセット保持手段に保持されたオフセット値に基づいて、前記第３の差分符号列に含まれる複数の第２の符号を取り出し、
前記第１の符号変換手段は、前記取り出された複数の第２の符号それぞれを、前記第３の画像データ列において末尾から先頭までの方向の順番に連続した２つの画素ブロックのシンボルの差分値を示す前記複数の第３の符号それぞれに変換し、
前記変換データ列生成手段は、前記算出された第３の画像データの末尾の画素ブロックのシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含み、前記第３の画像データ列が示す第１の画像を、１８０°回転させた第４の画像を示す第４の差分符号列を生成する
請求項１に記載のデータ変換装置。
【請求項７】
前記画素ブロックに対する符号化は、時間領域の前記画素ブロックを、直流成分と交流成分とを含む周波数領域のシンボルに変換し、
前記シンボル取り出し手段と、前記第１のオフセット保持手段と、前記第１の末尾シンボル値算出手段と、前記第１の符号取出手段と、前記第１の符号変換手段とは、前記第３の差分符号列に含まれる複数の画素ブロックのシンボルの直流成分に対して処理を行って第５の差分符号列を生成し、
前記変換データ列生成手段は、前記第５の差分符号列に含まれる前記算出された第３の画像データの末尾の画素ブロックのシンボル値と、前記変換により得られた複数の第３の符号と、これらに対応する交流成分とを対応付けて、前記第４の差分符号列を生成する
請求項６に記載のデータ変換装置。
【請求項８】
前記生成された第４の差分符号列を、可変長符号化する第３の可変符号化手段
をさらに有する請求項７に記載のデータ変換装置。
【請求項９】
前記第１のデータ列は、第１の画像から得られ、それぞれ複数の画素を含む複数の画素ブロック群から構成される第５の画像データ列であって、
前記差分符号列は、前記第５の画像データ列を、前記第５の画像データ列における先頭の画素ブロック群の先頭の画素ブロックのシンボルを、前記第１の符号として含み、前記第５の画像データ列において連続した２つの画素ブロックのシンボルの差分値を、前記複数の第２の符号として含む第６の差分符号列であり、
前記第６の差分符号列に含まれる前記第１の符号が示す前記第５の画像データ列の先頭の画素ブロック群の先頭の画素ブロックのシンボル値と、前記複数の第２の符号それぞれが示す前記第５の画像データ列における連続した２つの画素ブロックのシンボルの差分値とに基づいて、前記第５の画像データ列の末尾の画素ブロック群の末尾の画素ブロックのシンボル値を算出する第２の末尾シンボル値算出手段と、
前記第６の差分符号列に含まれる前記複数の画素ブロック群のシンボルそれぞれの位置を示すオフセット値を保持する第２のオフセット保持手段と、
前記第６の差分符号列に含まれる前記複数の画素ブロック群の前記複数の画素ブロックのシンボルそれぞれの位置を示すオフセット値を保持する第３のオフセット保持手段と、
第２のオフセット保持手段に保持されたオフセット値および第３のオフセット保持手段に保持されたオフセット値に基づいて、前記第６の差分符号列に含まれる前記複数の画素ブロック群の複数の画素ブロックそれぞれに対応する複数の第２の符号を取り出す第２の符号取出手段と、
前記取り出された複数の第２の符号それぞれを、前記第５の画像データ列において末尾から先頭までの方向の順番に連続した２つの画素ブロックのシンボルの差分値を示す前記複数の第３の符号それぞれに変換する第２の符号変換手段と
をさらに有し、
前記変換データ列生成手段は、前記算出された第５の画像データの末尾の画素ブロック群の末尾の画素ブロックのシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含む前記第４の差分符号列を生成する
請求項６〜８のいずれかに記載のデータ変換装置。
【請求項１０】
前記生成された第４の差分符号列を、前記第６の差分符号列に変換するブロック群符号化手段
をさらに有する請求項９に記載のデータ変換装置。
【請求項１１】
前記第２のオフセット保持手段は、前記オフセット値の全てを保持する
請求項９または１０に記載のデータ変換装置。    
【請求項１２】
前記第２のオフセット保持手段は、前記オフセット値の内、前記第２の符号取出手段が取り出す画素ブロックのオフセット値の計算の基点となる画素ブロック群の第１のオフセット値と、この基点となる画素ブロック群と、取り出しの対象となる画素ブロック群との相対的な位置を示す第２のオフセット値とを保持し、
前記第２の符号取出手段は、前記第１のオフセット値と、前記第２のオフセット値とを用いて、前記取出の対象となる画素ブロック群のシンボルを取り出す
請求項９または１０に記載のデータ変換装置。
【請求項１３】
前記第２のオフセット保持手段は、前記第２の符号取出手段が取り出す画素ブロックのオフセット値の計算の基点となる画素ブロック群の第１のオフセット値と、この基点となる画素ブロック群と、取り出しの対象となる画素ブロック群との相対的な位置を示す第２のオフセット値とを保持し、
前記第１のオフセット値と、前記第２のオフセット値とを用いて、前記取出の対象となる画素ブロック群のシンボルを取り出して記憶する処理シンボル記憶手段をさらに有し、
第２の符号取出手段は、前記記憶されたシンボルから前記第２の符号を取り出す
請求項９または１０に記載のデータ変換装置。
【請求項１４】
前記第２の符号それぞれは、０、正の値または負の値をとり、
前記第１の符号変換手段は、前記前記第２の符号それぞれを、この第２の符号の値が正であるときに、絶対値が同じ負の値に変換し、または、この第２の符号の値が負であるときに、絶対値が同じ正の値に変換することにより、前記第３の符号それぞれに変換する
請求項２〜１３のいずれかに記載のデータ変換装置。
【請求項１５】
先頭から末尾まで連続した複数のデータを含む第１のデータ列を、前記第１のデータ列の先頭のデータ値を示す第１の符号を先頭とし、前記第１のデータ列において先頭から末尾への方向の順番に、連続した２つのデータの差分値それぞれを複数の第２の符号それぞれとする差分符号列化して得られた差分符号列から、前記第１のデータ列の末尾のデータ値を算出するステップと、
前記差分符号列に含まれる複数の第２の符号それぞれを取り出すステップと、
前記取り出された複数の第２の符号を、前記第１のデータ列において末尾から先頭までの方向の順番に連続した２つのデータの差分値をそれぞれ示す複数の第３の符号に変換するステップと、
前記算出された第１のデータ列の末尾のデータ値を先頭とし、前記変換により得られた複数の第３の符号を、先頭の次から末尾まで連続して含む変換データ列を生成するステップと
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ変換装置およびそのプログラムに関する。
【背景技術】
【０００２】
例えば、特許文献１には、圧縮された画像データを復元して回転させる装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３０４２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、軽い処理負荷で、符号化された画像データを１８０°回転させることができるデータ変換装置およびそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本願請求項１にかかる発明は、先頭から末尾まで連続した複数のデータを含む第１のデータ列を、前記第１のデータ列の先頭のデータ値を示す第１の符号を先頭とし、前記第１のデータ列において先頭から末尾への方向の順番に、連続した２つのデータの差分値それぞれを複数の第２の符号それぞれとする差分符号列化して得られた差分符号列から、前記第１のデータ列の末尾のデータ値を算出する第１の末尾シンボル値算出手段と、前記差分符号列に含まれる複数の第２の符号それぞれを取り出す第１の符号取出手段と、前記取り出された複数の第２の符号を、前記第１のデータ列において末尾から先頭までの方向の順番に連続した２つのデータの差分値をそれぞれ示す複数の第３の符号に変換する第１の符号変換手段と、前記算出された第１のデータ列の末尾のデータ値を先頭とし、前記変換により得られた複数の第３の符号を、先頭の次から末尾まで連続して含む変換データ列を生成する変換データ列生成手段とを有するデータ変換装置である。
【０００６】
本願請求項２にかかる発明は、前記第１のデータ列は、第１の画像から得られた画素データ、または、複数の画素を含む画素ブロックのデータをシンボルとして含む第１の画像データ列であって、前記差分符号列は、前記第１の画像データ列を、前記第１の画像データ列における先頭のシンボルを、前記第１の符号として含み、前記第１の画像データ列において連続した２つのシンボルの差分値を、前記複数の第２の符号として含む前記第１の差分符号列とし、前記第１の末尾シンボル値算出手段は、前記第１の差分符号列に含まれる前記第１の符号が示す前記第１の画像データ列の先頭のシンボル値と、前記複数の第２の符号それぞれが示す前記第１の画像データ列における連続した２つのシンボルの差分値とに基づいて、前記第１の画像データ列の末尾のシンボル値を算出し、前記第１の符号取出手段は、前記第１の差分符号列に含まれる複数の第２の符号を取り出し、前記第１の符号変換手段は、前記取り出された複数の第２の符号それぞれを、前記第１の画像データ列において末尾から先頭までの方向の順番に連続した２つのシンボルの差分値を示す前記複数の第３の符号それぞれに変換し、前記変換データ列生成手段は、前記算出された第１の画像データの末尾のシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含み、前記第１の画像データ列が示す第１の画像を、１８０°回転させた第２の画像を示す前記第２の差分符号列を生成する請求項１に記載のデータ変換装置である。
【０００７】
本願請求項３にかかる発明は、前記差分符号列化により、前記第１の差分符号列は、符号化後の前記複数の第２の符号それぞれが、復号なしに、前記第２の画像データ列において末尾から先頭までの方向の順番に連続した２つのシンボルの差分値を示す前記複数の第４の符号それぞれに変換されうるように、さらに可変長符号化されて第２の差分符号列とされ、前記第２の差分符号列を可変長復号して、前記第１の差分符号列とする第１の可変長復号手段と、供給された前記末尾のシンボル値を可変長符号化する第１の可変長符号化手段と、前記第２の差分符号列に含まれ、可変長符号化された第２のシンボル値の区切りを検出する区切り検出手段とをさらに有し、前記第１の末尾シンボル値算出手段は、前記第１の可変長復号手段により得られた前記第１の差分符号列から算出された前記第１の差分符号列の末尾のシンボル値を、前記第１の可変長符号化手段に対して供給し、前記第１の符号取出手段は、前記区切り検出手段により検出された区切りごとに、前記第２の差分符号列に含まれ、可変長符号化された複数の第２の符号を取り出し、前記第１の符号変換手段は、前記取り出された可変長符号化された複数の第２の符号それぞれを、前記第２の画像データ列において末尾から先頭までの方向の順番に連続した２つのシンボルの差分値を示す前記複数の第４の符号それぞれに変換し、前記変換データ列生成手段は、前記第１の可変長符号化手段により可変長符号化された第１の画像データの末尾のシンボル値を先頭とし、前記変換により得られた複数の第４の符号を含む可変長符号化された前記第２の差分符号列を生成する請求項２に記載のデータ変換装置である。
【０００８】
本願請求項４にかかる発明は、前記差分符号列化により、前記第１の差分符号列は、さらに可変長符号化されて第３の差分符号列とされ、前記第３の差分符号列を可変長復号して、前記第１の差分符号列とする第１の可変長復号手段と、供給された前記末尾のシンボル値を可変長符号化する第１の可変長符号化手段と、前記第３の差分符号列に含まれ、可変長符号化された第２のシンボル値の区切りを検出する区切り検出手段と、取り出された可変長符号化された第２の符号を可変長復号する第２の可変長復号手段と、供給された前記第３の符号を可変長符号化する第２の可変長符号化手段とをさらに有し、前記第１の末尾シンボル値算出手段は、前記第１の可変長復号手段により得られた前記第１の差分符号列から算出された前記第１の差分符号列の末尾のシンボル値を、前記第１の可変長符号化手段に対して供給し、前記第１の符号取出手段は、前記区切り検出手段により検出された区切りごとに、前記第３の差分符号列に含まれ、可変長符号化された複数の第２の符号を取り出して、前記第２の可変長復号手段に供給し、前記第１の符号変換手段は、前記第２の可変長復号手段により復号された第２の符号それぞれを、前記第３の符号に変換して、前記第２の可変長符号化手段に対して供給し、前記変換データ列生成手段は、前記第１の可変長符号化手段により可変長符号化された第１の画像データの末尾のシンボル値を先頭とし、前記第２の可変長符号化手段により可変長符号化された複数の第３の符号を含む可変長符号化された前記第２の差分符号列を生成する請求項２に記載のデータ変換装置である。
【０００９】
本願請求項５にかかる発明は、前記差分符号列化により、前記第１の差分符号列は、さらに可変長符号化されて第３の差分符号列とされ、前記第３の差分符号列を可変長復号して、前記第１の差分符号列とする第１の可変長復号手段と、前記第３の差分符号列に含まれ、可変長符号化された第２のシンボル値の区切りを検出する区切り検出手段と、取り出された可変長符号化された第２の符号を可変長復号する第２の可変長復号手段と、供給された前記第２の符号を可変長符号化する第３の可変長符号化手段とをさらに有し、前記第１の末尾シンボル値算出手段は、前記第１の可変長復号手段により得られた前記第１の差分符号列から算出された前記第１の差分符号列の末尾のシンボル値を算出し、前記第１の符号取出手段は、前記区切り検出手段により検出された区切りごとに、前記第３の差分符号列に含まれ、可変長符号化された複数の第２の符号を取り出して、前記第２の可変長復号手段に供給し、前記第１の符号変換手段は、前記第２の可変長復号手段により復号された第２の符号それぞれを、前記第３の符号に変換し、前記変換データ列生成手段は、前記算出された第１の画像データの末尾のシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含む前記第２の画像データ列を生成して、前記第３の可変長符号化手段に供給して可変長符号化させ、可変長された前記第２の差分符号列を生成させる請求項２に記載のデータ変換装置である。
【００１０】
本願請求項６にかかる発明は、前記第１のデータ列は、第１の画像から得られ、それぞれ複数の画素を含む画素ブロックのデータそれぞれを符号化した画素ブロックのシンボルを含む第３の画像データ列であって、前記差分符号列は、前記第３の画像データ列を、前記第３の画像データ列における先頭の画素ブロックのシンボルを、前記第１の符号として含み、前記第３の画像データ列において連続した２つの画素ブロックのシンボルの差分値を、前記複数の第２の符号として含む第３の差分符号列であり、前記第３の画像データ列から、前記複数の画素ブロックのシンボルそれぞれを取り出すシンボル取り出し手段と、前記第３の画像データ列に含まれる前記複数の画素ブロックのシンボルそれぞれの位置を示すオフセット値を保持する第１のオフセット保持手段とをさらに有し、前記第１の末尾シンボル値算出手段は、前記第３の差分符号列に含まれる前記第１の符号が示す前記第３の画像データ列の先頭の画素ブロックのシンボル値と、前記複数の第２の符号それぞれが示す前記第３の画像データ列における連続した２つの画素ブロックのシンボルの差分値とに基づいて、前記第３の画像データ列の末尾の画素ブロックのシンボル値を算出し、前記第１の符号取出手段は、第１のオフセット保持手段に保持されたオフセット値に基づいて、前記第３の差分符号列に含まれる複数の第２の符号を取り出し、前記第１の符号変換手段は、前記取り出された複数の第２の符号それぞれを、前記第３の画像データ列において末尾から先頭までの方向の順番に連続した２つの画素ブロックのシンボルの差分値を示す前記複数の第３の符号それぞれに変換し、前記変換データ列生成手段は、前記算出された第３の画像データの末尾の画素ブロックのシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含み、前記第３の画像データ列が示す第１の画像を、１８０°回転させた第４の画像を示す第４の差分符号列を生成する請求項１に記載のデータ変換装置である。
【００１１】
本願請求項７にかかる発明は、前記画素ブロックに対する符号化は、時間領域の前記画素ブロックを、直流成分と交流成分とを含む周波数領域のシンボルに変換し、前記シンボル取り出し手段と、前記第１のオフセット保持手段と、前記第１の末尾シンボル値算出手段と、前記第１の符号取出手段と、前記第１の符号変換手段とは、前記第３の差分符号列に含まれる複数の画素ブロックのシンボルの直流成分に対して処理を行って第５の差分符号列を生成し、前記変換データ列生成手段は、前記第５の差分符号列に含まれる前記算出された第１の画像データの末尾の画素ブロックのシンボル値と、前記変換により得られた複数の第３の符号と、これらに対応する交流成分とを対応付けて、前記第４の差分符号列を生成する請求項６に記載のデータ変換装置である。
【００１２】
本願請求項８にかかる発明は、前記生成された第４の差分符号列を、可変長符号化する第３の可変符号化手段をさらに有する請求項７に記載のデータ変換装置である。
【００１３】
本願請求項９にかかる発明は、前記第１のデータ列は、第１の画像から得られ、それぞれ複数の画素を含む複数の画素ブロック群から構成される第５の画像データ列であって、前記差分符号列は、前記第５の画像データ列を、前記第５の画像データ列における先頭の画素ブロック群の先頭の画素ブロックのシンボルを、前記第１の符号として含み、前記第５の画像データ列において連続した２つの画素ブロックのシンボルの差分値を、前記複数の第２の符号として含む第６の差分符号列であり、前記第６の差分符号列に含まれる前記第１の符号が示す前記第５の画像データ列の先頭の画素ブロック群の先頭の画素ブロックのシンボル値と、前記複数の第２の符号それぞれが示す前記第５の画像データ列における連続した２つの画素ブロックのシンボルの差分値とに基づいて、前記第５の画像データ列の末尾の画素ブロック群の末尾の画素ブロックのシンボル値を算出する第２の末尾シンボル値算出手段と、前記第６の差分符号列に含まれる前記複数の画素ブロック群のシンボルそれぞれの位置を示すオフセット値を保持する第２のオフセット保持手段と、前記第６の差分符号列に含まれる前記複数の画素ブロック群の前記複数の画素ブロックのシンボルそれぞれの位置を示すオフセット値を保持する第３のオフセット保持手段と、第２のオフセット保持手段に保持されたオフセット値および第３のオフセット保持手段に保持されたオフセット値に基づいて、前記第６の差分符号列に含まれる前記複数の画素ブロック群の複数の画素ブロックそれぞれに対応する複数の第２の符号を取り出す第２の符号取出手段と、前記取り出された複数の第２の符号それぞれを、前記第５の画像データ列において末尾から先頭までの方向の順番に連続した２つの画素ブロックのシンボルの差分値を示す前記複数の第３の符号それぞれに変換する第２の符号変換手段とをさらに有し、前記変換データ列生成手段は、前記算出された第５の画像データの末尾の画素ブロック群の末尾の画素ブロックのシンボル値を先頭とし、前記変換により得られた複数の第３の符号を含む前記第４の差分符号列を生成する請求項６〜８のいずれかに記載のデータ変換装置である。
【００１４】
本願請求項１０にかかる発明は、前記生成された第４の差分符号列を、前記第６の差分符号列に変換するブロック群符号化手段をさらに有する請求項９に記載のデータ変換装置である。
【００１５】
本願請求項１１にかかる発明は、前記第２のオフセット保持手段は、前記オフセット値の全てを保持する請求項９または１０に記載のデータ変換装置である。
【００１６】
本願請求項１２にかかる発明は、前記第２のオフセット保持手段は、前記オフセット値の内、前記第２の符号取出手段が取り出す画素ブロックのオフセット値の計算の基点となる画素ブロック群の第１のオフセット値と、この基点となる画素ブロック群と、取り出しの対象となる画素ブロック群との相対的な位置を示す第２のオフセット値とを保持し、前記第２の符号取出手段は、前記第１のオフセット値と、前記第２のオフセット値とを用いて、前記取出の対象となる画素ブロック群のシンボルを取り出す請求項９または１０に記載のデータ変換装置である。
【００１７】
本願請求項１３にかかる発明は、前記第２のオフセット保持手段は、前記オフセット値の内、取り出しの対象となる画素ブロック群のオフセット値と、この画素ブロック群のシンボル値とを保持し、前記第２の符号取出手段は、前記取り出しの対象となる画素ブロック群のオフセット値と、この画素ブロックのシンボル値とから、次に取出の対象とする画素ブロック群のオフセット値を求める請求項９または１０に記載のデータ変換装置である。
【００１８】
本願請求項１４にかかる発明は、前記第２の符号それぞれは、０、正の値または負の値をとり、前記第１の符号変換手段は、前記前記第２の符号それぞれを、この第２の符号の値が正であるときに、絶対値が同じ負の値に変換し、または、この第２の符号の値が負であるときに、絶対値が同じ正の値に変換することにより、前記第３の符号それぞれに変換する請求項２〜１３のいずれかに記載のデータ変換装置である。
【００１９】
本願請求項１５にかかる発明は、先頭から末尾まで連続した複数のデータを含む第１のデータ列を、前記第１のデータ列の先頭のデータ値を示す第１の符号を先頭とし、前記第１のデータ列において先頭から末尾への方向の順番に、連続した２つのデータの差分値それぞれを複数の第２の符号それぞれとする差分符号列化して得られた差分符号列から、前記第１のデータ列の末尾のデータ値を算出するステップと、前記差分符号列に含まれる複数の第２の符号それぞれを取り出すステップと、前記取り出された複数の第２の符号を、前記第１のデータ列において末尾から先頭までの方向の順番に連続した２つのデータの差分値をそれぞれ示す複数の第３の符号に変換するステップと、前記算出された第１のデータ列の末尾のデータ値を先頭とし、前記変換により得られた複数の第３の符号を、先頭の次から末尾まで連続して含む変換データ列を生成するステップとをコンピュータに実行させるプログラムである。
【発明の効果】
【００２０】
本願請求項１にかかる発明によれば、本構成を有しないときと比較して軽い処理負荷で、符号化された画像データを１８０°回転させることができる。
【００２１】
本願請求項２にかかる発明によれば、本願請求項１にかかる発明の効果に加えて、本構成を有しないときと比較して軽い処理負荷で、画像データを１８０°回転させることができる。
【００２２】
本願請求項３にかかる発明によれば、本願請求項２にかかる発明の効果に加えて、画像データを、本構成を有しないときと比較して軽い処理負荷で１８０°回転させ、符号化することができる。
【００２３】
また、本願請求項４にかかる発明によれば、本願請求項２にかかる発明の効果に加えて、画像データを、本構成を有しないときと比較して軽い処理負荷で、符号化しつつ１８０°回転させることができる。
【００２４】
また、本願請求項５にかかる発明によれば、本願請求項２にかかる発明の効果に加えて、画像データを、本構成を有しないときと比較して軽い処理負荷で、符号化することができる。
【００２５】
また、本願請求項６にかかる発明によれば、本願請求項１にかかる発明の効果に加えて、本構成を有しないときと比較して軽い処理負荷で、画像データを１８０°回転させることができる。
【００２６】
また、本願請求項７にかかる発明によれば、本願請求項６にかかる発明の効果に加えて、本構成を有しないときと比較して軽い処理負荷で、画像データを１８０°回転させることができる。
【００２７】
また、本願請求項８にかかる発明によれば、本願請求項７にかかる発明の効果に加えて、本願請求項７にかかる発明により生成された画像データ列を、可変長符号化することができる。
【００２８】
また、本願請求項９にかかる発明によれば、本願請求項６〜８のいずれかにかかる発明の効果に加えて、画像データを、本構成を有しないときと比較して軽い処理負荷で１８０°回転させることができる。
【００２９】
また、本願請求項１０にかかる発明によれば、本願請求項９にかかる発明の効果に加えて、本願請求項９にかかる発明により生成された画像データ列に含まれる画素ブロック群を、ブロック符号化することができる。
【００３０】
また、本願請求項１１にかかる発明によれば、請求項９または１０にかかる発明の効果に加えて、画像データ列を、本構成を有しないときと比較して、軽い処理負荷で高速に１８０°回転させることができる。
【００３１】
また、本願請求項１２にかかる発明によれば、請求項９または１０にかかる発明の効果に加えて、画像データ列を、本構成を有しないときと比較して、少ないメモリ容量を用いて、軽い処理負荷で１８０°回転させることができる。
【００３２】
また、本願請求項１３にかかる発明によれば、請求項９または１０にかかる発明の効果に加えて、画像データ列を、使用メモリ容量と処理速度を最適化して、本構成を有しないときと比較して軽い処理負荷で１８０°回転させることができる。
【００３３】
また、本願請求項１４にかかる発明によれば、それぞれ０、正の値または負の値をとる符号を、本構成を有しないときと比較して軽い処理負荷で高速に処理して、画像データ列を１８０°回転させることができる。
【００３４】
本願請求項１５にかかる発明によれば、コンピュータに、本構成を有しないときと比較して軽い処理負荷で、符号化された画像データを１８０°回転させる処理を行わせることができる。
【図面の簡単な説明】
【００３５】
【図１】（Ａ）は、１８０°回転の対象となる画像を例示する図であり、（Ｂ）は、（Ａ）に示した画像を１８０°回転した画像である。
【図２】（Ａ）は、図１（Ａ）に示した画像を示す画像データに含まれる画素または画素ブロックのシンボル（ｓ０〜ｓｎ−１）を示す図であり、（Ｂ）は、図２（Ａ）に示したシンボルＳから得られたＤＰＣＭ符号（ｓ０，δ１，δ２，・・・，δｎ−１）を示す図である。
【図３】図４に示す画像回転プログラムなどを実行する画像処理装置の構成を例示する図である。
【図４】図３に示した画像処理装置において実行され、ＤＰＣＭ符号を回転させる一般的な画像回転プログラムの構成を示す図である。
【図５】第１の画像回転プログラムの構成を示す図である。
【図６】第２の画像回転プログラムの構成を示す図である。
【図７】第３の画像回転プログラムの構成を示す図である。
【図８】第４の画像回転プログラムの構成を示す図である。
【図９】第５の画像回転プログラムの構成を示す図である。
【図１０】第６の画像回転プログラムの構成を示す図である。
【図１１】第６の画像回転プログラムにおいて、ＭＣＵオフセット記憶部にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部がＭＣＵオフセット値を用いてＭＣＵを切り取るための第１の方法を示す図である。
【図１２】（Ａ）〜（Ｃ）は、第６の画像回転プログラムにおいて、ＭＣＵオフセット記憶部にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部がＭＣＵオフセット値を用いてＭＣＵを切り取るための第２の方法を示す図である。
【図１３】（Ａ）〜（Ｃ）は、第６の画像回転プログラムにおいて、ＭＣＵオフセット記憶部にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部がＭＣＵオフセット値を用いてＭＣＵを切り取るための第３の方法を示す図である。
【発明を実施するための形態】
【００３６】
［本願発明がなされるに至った経緯］
本願発明の実施形態に先立ち、その理解を助けるために、本願発明がなされるに至った経緯を説明する。
【００３７】
［ＤＰＣＭ符号化］
ＪＰＥＧ符号などの画像シンボルの符号化方式には、ＤＰＣＭ(Differential Pulse Code Modulation)符号化が用いられる。
ＤＰＣＭ符号化は、例えば、連続して画像データ列に含まれる画素、または、複数（例えば８×８）の画素から構成される画素ブロック（以下、「画素・画素ブロック」と略記することがある）を示すシンボルを処理して、画像データ列の先頭の画素・画素ブロックのシンボルと、これに続く２つの画素・画素ブロックのシンボルの差分値それぞれを、先頭から末尾の方向に連続的に配列することにより、符号を生成する。
なお、画素ブロックは、色成分あるいはサンプリングにおける要因により、複数の画素ブロックを含むＭＣＵ(Minimum Coding Unit)に対して、「ミクロブロック」と呼ばれることがあり、ＪＰＥＧ符号化においては、ＭＣＵが、単にブロックと呼ばれることがある。
また、ＭＣＵは、単一の画素ブロックのみから構成されてもよい。
【００３８】
つまり、ＤＰＣＭ符号化は、予測符号化の一種であって、画像データ列の先頭以外で、ある特定の注目すべき画素・画素ブロックのシンボル（注目シンボル）をＸと記し、その直前のシンボルをＡと記すと、その注目シンボルに対応する符号Ｘ'を、この注目シンボルＸとその直前のシンボルＡとの差分値（Ｘ−Ａ）で表す（Ｘ'＝Ｘ−Ａ）。
従って、ＤＰＣＭ符号化により得られた符号から、注目シンボル値を求めるためには、画像データ列の先頭の画素・画素ブロックのシンボル値に、先頭から注目シンボルまでの間に存在する連続した２つのシンボルの差分値の累加算値を加えればよい。
【００３９】
一般に、ＤＰＣＭ符号化により得られた符号（ＤＰＭＣ符号）は、符号化前の画素・画素ブロックのシンボル列と比較して、シンボルの種類の分散が少なくなることが期待される。
従って、一般的に、ＤＰＣＭ符号化は、情報量の圧縮の観点から、可変長符号化と併用される。
ＤＰＣＭ符号化は、例えば、ＪＰＥＧ符号化において、画像データを離散的フーリエ変換（ＤＦＴ）して得られる直流成分の符号化、あるいは、ＰＮＧ（Portable Network Graphics）フォーマットにおけるＦＩＬＴＥＲ／ＷＵＢオプションの実現のために用いられる。
なお、以下、ＤＰＣＭ符号は、画像データの画素・画素ブロックのシンボル列の特定の区間において、上述のように、先頭のシンボル値と、それに続く２つのシンボルの差分値を、先頭から末尾の方向に連続して配列した符号語を示す。
【００４０】
［ＤＰＣＭ符号の１８０°回転］
以下、ＤＰＣＭ符号を１８０°回転する方法を説明する。
図１（Ａ）は、１８０°回転の対象となる画像を例示する図であり、図１（Ｂ）は、図１（Ａ）に示した画像を１８０°回転した画像である。
図２（Ａ）は、図１（Ａ）に示した画像を示す画像データに含まれる画素または画素ブロックのシンボル（ｓ０〜ｓｎ−１）を示す図であり、図２（Ｂ）は、図２（Ａ）に示したシンボルＳから得られたＤＰＣＭ符号（ｓ０，δ１，δ２，・・・，δｎ−１）を示す図であり、図２（Ｃ）は、図１（Ｂ）に示した画像を示す画像データに含まれる画素または画素ブロックのシンボル（ｓ'ｎ−１〜ｓ'０）を示す図であり、図２（Ｄ）は、図２（Ｃ）に示したシンボルｓ'から得られたＤＰＣＭ符号（ｓｎ−１，δｎ−１，δｎ−２，・・・δ１，δ０）を示す図である。
【００４１】
なお、以下の説明においては、ｎは２以上の整数を示す。
また、先頭は、処理の対象となる連続した画素・画素ブロックなどの最初の１つを示し、末尾は、処理の対象となる連続した画素・画素ブロックなどの最後の１つを示し、これらは、必ずしも画像・画素ブロック全体の先頭または末尾を示さない。
図１（Ａ）に示すように、画像データには、先頭から末尾までｎ個の画素・画素ブロックが含まれ、この画素・画素ブロックは、図２（Ａ）および下式１に示すように、ｎ個のシンボルｓ０〜ｓｎ−１により表される。
【００４２】
Ｓ＝（ｓ０，ｓ１，・・・，ｓｎ−２，ｓｎ−１）      （１）
【００４３】
このｎ個のシンボルは、図２（Ｂ）および下式２に示すように、ＤＰＣＭ符号化により、先頭の画素・画素ブロックのシンボル値ｓ０と、δｉ＝Sｉ−１−Sｉ（ｉ＝１〜ｎ−１）と定義される（ｎ−１）個の差分値とを含むＤＰＣＭ符号ｃに符号化される。
【００４４】
ｃ＝（ｓ０，δ１，・・・，δｉ，・・・．δｎ−２，δｎ−１）      （２）
【００４５】
一方、図１（Ｂ）に示すように、図１（Ａ）に示した画像データを１８０°回転して得られる画像データには、図２（Ｃ）に示すように、ｎ個の画素・画素ブロックｓ'０〜ｓ'ｎ−１が含まれる。
下式３に示すように、これらｎ個のシンボルｓ'０〜ｓ'ｎ−１それぞれは、図１（Ａ）に示した１８０°回転前の画像データの画素・画素ブロックのｓｎ−１〜ｓ０それぞれに同じである。
つまり、１８０°回転後の画像データには、ｎ個のシンボルｓ'０〜ｓ'ｎ−１が、１８０°反転前の画像データとは反対の順番で、言い換えると、末尾から先頭の方向に連続した１８０°回転前の画像データの画素・画素ブロックのシンボルｓｎ−１〜ｓ０が含まれる。
【００４６】
Ｓ'＝（ｓｎ−１，ｓｎ−２，・・・，ｓ１，ｓ０）      （３）
【００４７】
このｎ個のシンボルは、図２（Ｄ）および下式４に示すように、ＤＰＣＭ符号化により、先頭の画素・画素ブロックのシンボル値ｓｎ−１と、δ'ｉ＝−δ（ｎ−ｉ）と定義される（ｎ−１）個の差分値とを含むＤＰＣＭ符号ｃ'に符号化される。
つまり、１８０°回転前の画像データのＤＰＭＣ符号ｃから、１８０°回転後の画像データのＤＰＣＭ符号ｃ'を得るためには、下記処理１−１〜１−３の処理を行えばよい。
【００４８】
ｃ'＝（ｓｎ−１，δｎ−１，・・・，δ１，δ０）        （４）
【００４９】
（処理１−１）１８０°回転前の画像データにおける末尾の画素・画素ブロックのシンボル値ｓｎ−１を、下式５に示すように計算し；
【００５０】
【数１】
2011029682.tif 000003
【００５１】
（処理１−２）１８０°回転前のＤＰＣＭ符号の先頭から末尾方向への差分値δ１〜δｎ−１の順番を、１８０°回転前のＤＰＣＭ符号の末尾から先頭方向への順番に逆転させ；さらに、
（処理１−３）差分値δｎ−１〜δ１として、１８０°回転前の画像データにおける末尾の画素・画素ブロックのシンボル値ｓｎ−１に付加すればよい。
つまり、１８０°回転させた画像データのＤＰＣＭ符号は、下式６により得られる。
【００５２】
【数２】
2011029682.tif 000004
【００５３】
つまり、以上の説明により明らかとなったように、ＤＰＣＭ符号ｃに対応する画像データを１８０°回転した画素・画素ブロックのシンボルＳ'を得るためには、ＤＰＣＭ符号ｃの全てを復号して１８０°回転前の画像・画素ブロックのシンボルＳを復元する必要はなく、下記（２−１）〜（２−４）の処理を行えばよい。
（処理２−１）ＤＰＣＭ符号ｃに含まれる末尾の画素・画素ブロックのシンボル値ｓｎ−１を、ＤＰＣＭ符号ｃに含まれる先頭の画素・画素ブロックのシンボル値ｓ０に、差分値δ１〜δｎ−１を累加算することにより求める；
（処理２−２）ＤＰＣＭ符号ｃに含まれる差分値δ１〜δｎ−１の正負逆転（差分値δ１〜δｎ−１の±符号を反転）させ、差分値−δ１〜−δｎ−１；
（処理２−３）±符号が反転された差分値−δ１〜−δｎ−１の順番を反転させ、差分値−δｎ−１〜−δ１とし；さらに、
（処理２−４）求められたシンボル値ｓｎ−１に、差分値−δｎ−１〜−δ１を付加する。
【００５４】
［ＪＰＥＧ符号およびその回転］
ＪＰＥＧ符号化は、ブロック符号化の一種であって、以下に示す処理３−１〜３−７により実現され、ＪＰＥＧ符号が得られる。
（処理３−１）画像データを８×８画素構成の複数の画素ブロックに分割し；
（処理３−２）分割により得られた画素ブロックをＤＣＴ（離散コサイン変換）処理し、時間領域の画素ブロックの画像データ、周波数領域のＤＣＴ係数に変換し；
（処理３−４）ＤＣＴ係数の内、連続した２つの画素ブロックから得られたＤＣＴ係数の直流成分の間で、上述したＤＰＣＭ符号化が行われ；
（処理３−５）ＤＰＣＭ符号化された直流成分に対してハフマン符号化が行われ、
（処理３−６）交流成分ＤＣＴ係数が、例えば、画素ブロックにおいてジグザグにスキャンされてデータ列とされ；
（処理３−７）データ列において、画素ブロックの全ての係数が数値０であるときに、これをＥＯＢマーカで置換するなどのマーカ処理が行われ；
（処理３−８）マーカ処理が行われたデータ列に対して、このデータ列において連続した数値０の個数（ランレングス）に応じた可変長符号の割り当（ランレングス符号化）と、有効桁数の付加が行われ；さらに、
（処理３−９）このデータ列において、連続した数値０の個数（ゼロラン）と、有効桁数とのペアをシンボルとするハフマン符号化が行われ、ＪＰＥＧ符号のシンボルとされる。
【００５５】
ＭＣＵ単位で処理された画像データの回転は、例えば、下記４−１〜４−３の処理により実現される。
（処理４−１）回転の態様（９０°，１８０°，２７０°のいずれで回転するか）に応じて、ＭＣＵの配列を変更し；
（処理４−２）回転の態様に応じて、ＭＣＵそれぞれに含まれる画素ブロックの配置を変更し；さらに、
（処理４−３）複数のＭＣＵをＤＰＣＭ符号化して得られたＤＰＣＭ符号を再計算し、；
（処理４−４）回転の態様に応じて、ＭＣＵそれぞれに含まれる画素ブロックの交流成分のＤＣＴ係数の配置を変更する。
【００５６】
しかしながら、ＭＣＵ単位で得られたＪＰＥＧ符号を回転させるためには、以下に示す問題１−１，１−２がある。
（問題１−１）ＭＣＵ単位で可変長符号化されているので、ＪＰＥＧ符号において、各ＭＣＵに対応する符号長が、ビット単位で変化してしまう；および
（問題１−２）ＤＰＣＭ符号に含まれる差分値δは、２つの連続した画素ブロックのＤＣＴ係数の直流成分から得られるので、上記処理４−２に、ＭＣＵ内で画素ブロックの配置が変更されると、画素ブロックの連続関係も変化してしまい、この変化に応じて、ＤＰＣＭ符号中の差分値δを再計算しなければならない。
上述のような問題を解決するためには、例えば、以下に示す処理５−１〜５−５が行われる。
（処理５−１）ＪＰＥＧ符号をシーク(seek)して、ＪＰＥＧ符号におけるＭＣＵのシンボルそれぞれの開始点を示すＭＣＵオフセット値と、画素ブロックそれぞれの開始点を示すオフセット値と、ＭＣＵのシンボルに含まれる複数の画素ブロックそれぞれのＤＣＴ係数の直流成分とを記憶し；
（処理５−２）処理５−１により記憶されたＭＣＵオフセット値を用いて、上記処理４−１を行い、
（処理５−３）処理５−１により記憶されたオフセット値を用いて、上記処理４−２を行い、
（処理５−４）処理５−１により記憶された直流成分を用いて、上記処理４−３を行い；さらに、
（処理５−５）画素ブロックそれぞれに対して、上記処理４−４を行う。
【００５７】
上記処理４−２，４−３の実現のためには、例えば、ＤＰＣＭ符号化されたＭＣＵの全てを復号し、ＭＣＵのオフセット値と、このＭＣＵに含まれる複数の画素ブロックの直流成分の値とを記憶する必要がある。
以下に示す実施形態は、このような背景からなされ、例えば、ＤＰＣＭ符号化を用いて生成されたＪＰＥＧ符号が示す画像を１８０°回転させるときに、記憶しなければならないＭＣＵのオフセット値と、ＭＣＵに含まれる画素ブロックのＤＣＴ係数の直流成分を少なくできるように工夫されている。
このために、実施形態は、ＤＰＣＭ符号の全てを復号せずに、ＤＰＣＭ符号化を用いて生成された符号が示す画像を１８０°回転させることができるように工夫されている。
また、実施形態は、一時に、ＭＣＵに含まれる複数の画素ブロックの複数の色それぞれの直流成分のいずれか１つのみの値を記憶するだけで、ＤＰＣＭ符号化を用いて生成された符号が示す画像を１８０°回転させることができるように工夫されている。
【００５８】
［一般的な符号回転装置］
以上説明した画像の回転処理は、汎用のハードウェアの組み合わせ、専用ハードウェア、汎用のソフトウェアの組み合わせ、あるいは、専用のソフトウェアのいずれによっても実現可能であるが、以下、説明の明確化および具体化のために、画像の回転処理が、汎用的なコンピュータハードウェア上で動作する専用ソフトウェアによって実現される場合を具体例とする。
以下、図２（Ａ）に示した画素・画素ブロックから生成されたＤＰＣＭ符号（図２（Ｂ））を変換して、このＤＰＣＭ符号が示す画像を１８０°回転させるためにデータを変換する一般的な画像回転プログラム１２を説明する。
図３は、図４に示す画像回転プログラム１２などを実行する画像処理装置１の構成を例示する図である。
図４は、図３に示した画像処理装置１において実行され、ＤＰＣＭ符号を回転させる一般的な画像回転プログラム１２の構成を示す図である。
なお、以下の各図面においては、実質的に同じ構成部分には、同じ符号が付される。
【００５９】
［ハードウェア構成］
図３に示すように、画像処理装置１は、ＣＰＵ１００、ＤＳＰ(Digital Signal Processor)１０２およびメモリ１０４などから構成される本体１０、表示装置、マウスおよびメモリカード受け入れ装置（図示せず）などを含む入出力装置１０６、ネットワークを介して他の画像処理装置１と通信を行う通信装置１０８、ＣＤ装置、ＨＤ装置およびＤＶＤ装置などであって、記憶媒体１１２に対してデータの書き込みおよび読み出しを行う記憶装置１１０から構成される。
つまり、画像処理装置１は、信号処理が可能な一般的なコンピュータとしての構成部分を有している。
【００６０】
［ソフトウェア構成］
図４に示すように、画像回転プログラム１２は、復号部１２０、シンボル記憶部１２２、シンボル取出部１２４および符号化部１２６から構成される。
画像回転プログラム１２は、例えば、記憶媒体１１２を介して画像処理装置１のメモリ１０４にロードされ、画像処理装置１上で動作するＯＳ上で、画像処理装置１のハードウェア資源を具体的に利用して実行される（以下の各プログラムについて同様）。
【００６１】
画像回転プログラム１２において、復号部１２０は、外部から画像処理装置１に入力されたＤＰＣＭ符号列ｃ１（元符号ｓ１；図２（Ｂ）などを参照）を復号し、画素・画素ブロックのシンボルｓ１（ｓ０〜ｓｎ−１；図２（Ａ）などを参照）とする。
シンボル記憶部１２２は、復号部１２０により復号された画素・画素ブロックのシンボルＳ１を記憶する。
シンボル取出部１２４は、シンボル記憶部１２２に記憶された画素・画素ブロックのシンボルＳ１の順番を、図１（Ｂ），図２（Ｃ）に示すように配列を変更し、ＤＰＣＭ符号化して、１８０°回転された上記画像を示すＤＰＣＭ符号ＳＲ１（回転符号ＳＲ１；図２（Ｄ）などを参照）を出力する。
以上説明した各構成部分により、画像回転プログラム１２は、元符号Ｓ１に対応する画像を１８０°回転させた画像に対応する回転符号ＳＲ１を生成する。
【００６２】
［第１の画像回転プログラム］
以下、図４に示した一般的な画像回転プログラム１２を改良して、少ない処理負荷で画像を回転できるように構成された第１の画像回転プログラム１４を説明する。
なお、以下、第１〜第４の画像回転プログラムにおいては、ＤＰＣＭ符号が、単色の画素データのシンボル値および差分値を含む場合が具体例とされる。
【００６３】
図５は、第１の画像回転プログラム１４の構成を示す図である。
図５に示すように、第１の画像回転プログラム１４は、末尾シンボル復号部１４０、末尾シンボル記憶部１４２、符号取出部１４４、差分値反転部１４６および回転符号組立部１４８から構成される。
第１の画像回転プログラム１４は、これらの構成部分により、図４に示した一般的な画像回転プログラム１２と同様に、図２（Ｂ）などに示したＤＰＣＭ符号（元符号）ｃ１を処理して、このＤＰＣＭ符号ｃ１が示す画像を１８０°回転させた画像のＤＰＣＭ符号（回転符号）ＳＲ１（図２（Ｄ）などを参照）を生成する。
【００６４】
画像回転プログラム１４において、末尾シンボル復号部１４０は、上式５に示した計算を行い、元符号ｃ１の末尾のシンボル値ｓｎ−１を算出し、末尾シンボル記憶部１４２に対して出力する。
末尾シンボル記憶部１４２は、末尾シンボル復号部１４０から入力された末尾のシンボル値ｓｎ−１を記憶する。
また、末尾シンボル記憶部１４２は、記憶したデータを、回転符号組立部１４８から入力されたデータと交換する。
符号取出部１４４は、元符号Ｓ１から、差分値δ１〜δｎ−１を、δｎ−１〜δ１の順で取り出し、差分値反転部１４６に対して順次出力する。
差分値反転部１４６は、符号取出部１４４から入力された差分値の正負を逆転させ、回転符号組立部１４８に対して出力する。
具体的には、符号取出部１４４からδｎ−１が入力されたときには、（−δｎ−１）とし、回転符号組立部１４８に対して出力する。
回転符号組立部１４８は、差分値反転部１４６から入力された差分値と、末尾シンボル記憶部１４２に記憶されたデータとを交換して入出力装置１０６および画像処理装置１１０（図３）などに出力する。
具体的には、差分値反転部１４６から（−δｎ−１）が入力されたときには、末尾シンボル記憶部１４２に記憶された末尾のシンボル値ｓｎ−１と交換され、入出力装置１０６および画像処理装置１１０（図３）などに出力される。
また、次に、差分値反転部１４６から（−δｎ−２）が入力されたときには、末尾シンボル記憶部１４２に記憶された（−δｎ−１）と交換され、入出力装置１０６および画像処理装置１１０（図３）などに出力される。
したがって、回転符号組立部１４８から順次出力されたデータは、元符号ｃが示す画像を１８０°回転させた画像を示す回転符号ＳＲ１となる。
以上説明した第２の画像回転プログラム１４の処理によれば、元符号Ｓ１をＤＰＣＭ復号せずに、１８０°回転させた画像を示す回転符号ＳＲ１を生成することができる。
【００６５】
［変形例］
なお、以上の説明においては、第１の画像回転プログラム１４の処理対象として、単色の画素のシンボルから生成されたＤＰＣＭ符号を例示したが、複数色の画素のシンボルを処理する場合には、各色の画素のシンボルについて、並列的に、あるいは、直列的に上記の処理を各色について行えばよい。
また、以上説明した処理は、適切な変形により、画素のシンボルのほかに、単色または複数色の画素ブロックのシンボルにも応用することができる。
この変形例は、以下の各画像回転プログラムについて同様である。
【００６６】
一般的な画像回転プログラム１２の処理内容と、第１の画像回転プログラム１４の処理内容とを比較すると、下表１に示すとおりとなる。
下記比較により、一般的な画像回転プログラム１２が必要とする処理付加およびメモリ容量よりも、第１の画像回転プログラム１４が必要とする処理付加およびメモリ容量が少なくて済むことが理解できる。
【００６７】
【表１】
2011029682.tif 000005
【００６８】
［第２の画像回転プログラム］
以下、第２の画像回転プログラム１６を説明する。
第２の画像回転プログラム１６は、可変長符号化されたＤＰＣＭ符号Ｓ２が示す画像を１８０°回転させて、可変長符号化された回転符号ＳＲ２を生成するように構成されている。
なお、可変長符号Ｓ２は、ＪＰＥＧ符号化の規格として定められているハフマン符号化により、ＤＰＣＭ符号Ｓ１（図２（Ｂ））を可変長符号化することにより生成される。
つまり、可変長符号Ｓ２は、次式７により表される。
【００６９】
Ｓ２＝（Ｖ（ｓ０），Ｖ（δ１）〜Ｖ（δｎ−１））    （７）
ただし、Ｖ（ｘ）はデータｘに対するＪＰＥＧ符号化の規格として定められているハフマン符号化による可変長符号化を示す。
なお、上記ＪＰＥＧ符号化の規格として定められているハフマン符号化による可変長符号化では、Ｖ（−ｘ）は、Ｖ（ｘ）のビット反転により得られる。
【００７０】
つまり、符号化された差分値Ｖ（δ１）〜Ｖ（δｎ−１）をビット反転することにより、Ｖ（−δ１），〜Ｖ（−δｎ−１）が得られる。
したがって、Ｖ（−δ１），〜Ｖ（−δｎ−１）は、Ｖ（δ１）〜Ｖ（δｎ−１）を可変長復号せずに実現することができる。
【００７１】
図６は、第２の画像回転プログラム１６の構成を示す図である。
図６に示すように、画像回転プログラム１６は、可変長符号復号部１６０、差分値加算部１６２、可変長符号化部１６４、末尾シンボル記憶部１６６、可変長符号取出部１６８、差分値取出部１７０、差分値反転部１７２および回転符号組立部１７４から構成される。
画像回転プログラム１６において、可変長符号復号部１６０は、入力される可変長符号Ｓ２を、ＤＰＣＭ符号Ｓ１に復号して、差分値加算部１６２に対して出力する。
【００７２】
差分値加算部１６２は、可変長符号復号部１６０から入力されるＤＰＣＭ符号に含まれる先頭のシンボルｓ０に、差分値δ１〜δｎ−１を順次、加算し、末尾のシンボルｓｎ−１を算出して、可変長符号化部１６４に対して出力する。
可変長符号化部１６４は、差分値加算部１６２から入力された末尾のシンボルｓｎ−１を可変長符号化し、末尾シンボル記憶部１６６に対して出力する。
なお、画像回転プログラム１６の可変長符号化部１６４においては、上述したＪＰＥＧ符号化の規格として定められているハフマン符号化が可変長符号化のために用いられる。
末尾シンボル記憶部１６６は、可変長符号化部１６４から入力された可変長符号化された末尾のシンボルｓｎ−１を記憶する。
また、末尾シンボル記憶部１６６は、記憶したデータと回転符号組立部１７４から入力されるデータと交換する。
【００７３】
可変長符号取出部１６８は、元符号Ｓ２から、可変長符号化された差分値Ｖ（δ１）〜Ｖ（δｎ−１）の位置を検出し、差分値取出部１７０に対して出力する。
差分値取出部１７０は、可変長符号取出部１６８から入力された可変長符号化された差分値Ｖ（δ１）〜Ｖ（δｎ−１）の位置に基づいて、Ｖ（δｎ−１）〜Ｖ（δ１）の順番で取り出し、差分値反転部１７２に対して順次出力する。
差分値反転部１７２は、差分値取出部１７０から入力された可変長符号化された差分値をビット反転し、回転符号組立部１７４に対して出力する。
具体的には、Ｖ（δｎ−１）が入力されたときには、Ｖ（δｎ−１）をビット反転して、Ｖ（―δｎ−１）とし、回転符号組立部１７４に対して出力する。
次に、Ｖ（δｎ−２）が入力されたときには、Ｖ（δｎ−２）をビット反転して、Ｖ（―δｎ−２）とし、回転符号組立部１７４に対して出力する。
回転符号組立部１７４は、末尾シンボル記憶部１６６に記憶されたデータと、
差分値反転部１７２から入力された可変長符号化された差分値とを交換し、外部に対して出力する。
つまり、差分値反転部１７２からＶ（―δｎ−１）が入力されたときには、末尾シンボル記憶部１６６に記憶された末尾のシンボルｓｎ−１と交換され、外部に出力される。
また、差分値反転部１７２からＶ（―δｎ−２）が入力されたときには、末尾シンボル記憶部１６６に記憶されたＶ（―δｎ−１）と交換され、外部に出力される。
したがって、回転符号組立部１７４から順次出力されたデータは、回転符号ＳＲ２（図２（Ｄ）などを参照）となる。
【００７４】
［第３の画像回転プログラム］
以下、第３の画像回転プログラム１８を説明する。
第３の画像回転プログラム１８は、可変長符号化されたＤＰＣＭ符号Ｓ３が示す画像を１８０°回転させて、可変長符号化された回転符号ＳＲ３を生成するように構成されている。
なお、可変長符号Ｓ３は、ＪＰＥＧ符号化の規格として定められているハフマン符号化とは異なる可変長符号化により、ＤＰＣＭ符号Ｓ１（図２（Ｂ））を可変長符号化することにより生成される。
つまり、可変長符号Ｓ３は、下式８により表される。
【００７５】
Ｓ３＝（Ｖ'（ｓ０），Ｖ'（δ１）〜Ｖ'（δｎ−１））    （８）
ただし、Ｖ'（ｘ）はデータｘに対するＪＰＥＧ符号化の規格として定められているハフマン符号化以外による可変長符号化を示す。
【００７６】
上記可変長符号化では、Ｖ'（―δ１）〜Ｖ'（―δｎ−１）それぞれは、Ｖ'（δ１）〜Ｖ'（δｎ−１）をビット反転しても得られない。
つまり、Ｖ'（―δ１）〜Ｖ'（―δｎ−１）は、Ｖ'（δ１）〜Ｖ'（δｎ−１）を可変長復号して、δ１〜δｎ−１に戻した後に、再度可変長符号化することにより実現できる。
【００７７】
図７は、第３の画像回転プログラム１８野構成を示す図である。
図７に示すように、画像回転プログラム１８は、可変長符号復号部１６０、差分値加算部１６２、可変長符号化部１６４、末尾シンボル記憶部１６６、可変長符号取出部１６８、差分値取出部１７０、回転符号組立部１７４（図６）、差分値復号部１８０、差分値反転部１４６（図５）および差分値符号化部１８２から構成される。
可変長符号復号部１６０、差分値加算部１６２、可変長符号化部１６４および末尾シンボル記憶部１６６は、元符号Ｓ３を可変長復号して、ＤＰＣＭ符号を生成し、末尾のシンボル値ｓｎ−１を記憶し、回転符号組立部１７４に対して出力する。
画像回転プログラム１８において、差分値取出部１７０は、可変長符号取出部１６８から入力された可変長符号化された差分値Ｖ'（δ１）〜Ｖ'（δｎ−１）の位置に基づいて、Ｖ'（δｎ−１）〜Ｖ'（δ１）の順番で取り出し、差分値復号部１８０に対して順次出力する。
【００７８】
差分値復号部１８０は、差分値取出部１７０から順次入力される可変長符号化された差分値Ｖ'（δｎ−１）〜Ｖ'（δ１）を可変長復号して、差分値反転部１４６に対して順次出力する。
具体的には、差分値取出部１７０から可変長符号化された差分値Ｖ'（δｎ−１）が入力されたときは、可変長復号して差分値δｎ−１とし、差分値反転部１４６に対して出力する。
差分値反転部１４６は、差分値復号部１８０から順次入力される差分値δｎ−１〜δ１の正負を逆転させ、差分値−δｎ−１〜−δ１とし、差分値符号化部１８２に対して順次出力する。
差分値符号化部１８２は、差分値反転部１４６から順次入力された差分値−δｎ−１〜−δ１を、差分値復号部１８０における可変長復号と対応する可変長符号化により符号化して差分値Ｖ'（−δｎ−１）〜Ｖ'（−δ１）とし、回転符号組立部１７４に対して順次出力する。
回転符号組立部１７４は、末尾シンボル記憶部１６６に記憶されたデータと、差分値符号化部１８２から入力された可変長符号化された差分値とを交換し、外部に対して出力する。
つまり、差分値符号化部１８２からＶ'（―δｎ−１）が入力されたときには、末尾シンボル記憶部１６６に記憶された末尾のシンボルｓｎ−１と交換され、末尾のシンボルｓｎ−１が外部に出力される。
また、差分値取出部１７０からＶ'（―δｎ−２）が入力されたときには、末尾シンボル記憶部１６６に記憶されたＶ'（―δｎ−１）と交換され、Ｖ'（―δｎ−１）が外部に出力される。
したがって、回転符号組立部１７４から順次出力されたデータは、回転符号回転符号ＳＲ３となる。
【００７９】
［第４の画像回転プログラム］
以下、第４の画像回転プログラム２０を説明する。
第４の画像回転プログラム２０は、第３の画像回転プログラム１８と同様に、可変長符号化されたＤＰＣＭ符号Ｓ３が示す画像を１８０°回転させて、可変長符号化された回転符号ＳＲ３を生成するように構成されている。
第３の画像回転プログラム１８と、第４の画像回転プログラム２０との差異は、第３の画像回転プログラム１８では、末尾シンボル記憶部１４２に記憶される状態が可変長符号化されているに対し、第４の画像回転プログラム２０では、末尾シンボル記憶部１４２に記憶される状態が可変長符号化されていない点である。
【００８０】
図８は、第４の画像回転プログラム２０の構成を示す図である。
図８に示すように、第４の画像回転プログラム２０は、末尾シンボル記憶部１４２、差分値反転部１４６、回転符号組立部１４８（図５）、可変長符号復号部１６０、差分値加算部１６２、可変長符号取出部１６８、差分値取出部１７０（図６）、差分値復号部１８０（図７）および可変長符号化部２００から構成される。
可変長符号復号部１６０、差分値加算部１６２および末尾シンボル記憶部１４２は、元符号Ｓ３を可変長復号し、末尾のシンボル値ｓｎ−１を算出し、記憶して、回転符号組立部１４８に対して出力する。
【００８１】
可変長符号取出部１６８、差分値取出部１７０、差分値復号部１８０および差分値反転部１４６は、元符号Ｓ３に含まれる可変符号化された差分値Ｖ（δ１）〜Ｖ（δｎ−１）を、その逆の順番で取り出し、可変長復号し、さらに正負を反転させて、回転符号組立部１４８に対して出力する。
つまり、差分値−δｎ−１〜−δ１が、順次、回転符号組立部１４８に対して出力される。
回転符号組立部１４８は、差分値反転部１４６から入力された差分値と、末尾シンボル記憶部１４２に記憶されたデータとを交換して可変長符号化部２００に出力する。
具体的には、差分値反転部１４６から（−δｎ−１）が入力されたときには、末尾シンボル記憶部１４２に記憶された末尾のシンボル値ｓｎ−１と交換され、可変長符号化部２００に出力される。
また、次に、差分値反転部１４６から（−δｎ−２）が入力されたときには、末尾シンボル記憶部１４２に記憶された（−δｎ−１）と交換され、可変長符号化部２００に出力される。
可変長符号化部２００は、回転符号組立部１４８から順次入力される差分値−δｎ−１〜−δ１を可変長符号化して、外部に対して出力する。
したがって、可変長符号化部２００から順次出力されたデータは、回転符号回転符号ＳＲ３となる。
【００８２】
なお、第３および第４の画像回転プログラム１８，２０においては、画像処理装置１において同時並行して行われる他の処理により、可変長符号Ｓ３中のＤＰＣＭ符号に含まれるシンボル値および差分値の位置が既知となるときには、他の処理により既知となったシンボル値および差分値の位置を利用して、可変長符号取出部１６８および差分値取出部１７０における処理を、より高速化できる。
また、第３および第４の画像回転プログラム１８，２０においては、可変長符号に付されるメタデータなどにより、末尾のシンボル値ｓｎ−１が既知のときには、既知の末尾のシンボル値ｓｎ−１を利用して、より高速に回転符号ＳＲ３が得られる。
【００８３】
［第５の画像回転プログラム］
例えば、ＪＰＥＧ符号化においては、最小符号化ユニット（ＭＣＵ）毎に符号化される。
ＭＣＵは、例えば、８×８画素を含む画素ブロックから構成される。
具体的には、ＭＣＵは、１つの画素ブロックから構成される場合もあるし、Ｙ成分の複数の画素ブロック、Ｃｂ成分の複数の画素ブロック、Ｃｒ成分の複数の画素ブロックから構成される場合もある。
【００８４】
以下、ＭＣＵ＝１の場合におけるＪＰＥＧ符号（元符号Ｓ４）に対応する画像を１８０°回転させ、回転符号ＳＲ４を生成する第５の画像回転プログラム２２を説明する。
なお、元符号Ｓ４は、例えば、下式９により表される。
【００８５】
Ｓ４＝Ｖ（ｓ０(ＤＣ）)Ｖ（ＡＣ０），Ｖ（δ1(ＤＣ））Ｖ（ＡＣ1），〜Ｖ（δn-1 ＤＣ）Ｖ（ＡＣn-1）      （９）
ここで、ｓｉ(ＤＣ），δｉ (ＤＣ）は、ｉ番目の画素ブロックのＤＰＣＭ符号化されたＤＣ成分である。
また、Ｖ（ｓi(ＤＣ）)，Ｖ（δi(ＤＣ））は、ＤＰＣＭ符号化されたＤＣ成分を、ＪＰＥＧ符号化の規格として定められているハフマン符号化による可変長符号化したものである。
また、Ｖ（ＡＣi）は、ｉ番目の画素ブロックのＡＣ成分を、ＪＰＥＧ符号化の規格として定められているハフマン符号化による可変長符号化したものである。
なお、可変長符号化されるＡＣ成分は、ジグザグスキャン、ランレングス符号化などの処理が行われている。
上述の例では、０番目〜ｎ−１番目のｎ個の画素ブロックが符号化されている。
【００８６】
図９は、第５の画像回転プログラム２２の構成を示す図である。
図９に示すように、第５の画像回転プログラム２２は、ブロック切出部２２０、末尾シンボル復号部２２２、末尾シンボル記憶部２２４、オフセット保持部２２６、差分値取出部２３０、可変長符号復号部２３２、差分値反転部２３４、回転符号組立部２３６、ＡＣ成分反転部２３８および可変長符号化部２４０から構成される。
第５の画像回転プログラム２２において、ブロック切出部２２０は、元符号Ｓ４から、画素ブロック毎にＤＣ成分を可変長復号し、末尾シンボル復号部２２２に対して出力する。
つまり、以下のＤＰＣＭ符号Ｓ４'が、末尾シンボル復号部２２２に対して出力される。
Ｓ４'＝｛ｓ０（ＤＣ），δ１（ＤＣ）〜δｎ−１（ＤＣ）｝      （１０）
また、ブロック切出部２２０は、画素ブロック内のＡＣ成分について、ゼロランと，有効桁数，およびEOBを可変長復号し、1画素ブロック分のビット数を読取り、次の画素ブロックの先頭位置の情報（オフセット値）を、オフセット保持部２２６に出力する。
オフセット保持部２２６は、ブロック切出部２２０から入力されたオフセット値を記憶する、
末尾シンボル復号部２２２は、ブロック切出部２２０から入力された先頭の画素ブロックのＤＣＴ係数の直流成分ｓ０（ＤＣ）に、その次以降の２つの連続した画素ブロックのＤＣＴ係数の直流成分の差分値δ１（ＤＣ）〜δｎ−１（ＤＣ）の全てを加算し、末尾の画像ブロックのＤＣＴ係数の直流成分の値ｓｎ−１（ＤＣ）を求め、末尾のシンボル値として末尾シンボル記憶部２２４に対して出力する。
【００８７】
末尾シンボル記憶部２２４は、末尾シンボル復号部２２２から入力された末尾のシンボル値ｓｎ−１（ＤＣ）を記憶し、回転符号組立部２３６から入力されるデータと交換する。
【００８８】
差分値取出部２３０は、オフセット保持部２２６に記憶されたオフセット値を参照し、元符号Ｓ４から、１画素ブロック分の符号列を、逆順で取り出し、可変長符号復号部２３２に対して順次出力する。
つまり、差分値取出部２３０は、画素ブロックを、Ｖ（δn-1 (ＤＣ））Ｖ（ＡＣn-1）からＶ（ｓ０(ＤＣ）)Ｖ（ＡＣ０）まで順次取り出し、可変長符号復号部２３２に対して出力する。
可変長符号復号部２３２は、差分値取出部２３０から入力された１画素ブロック分の符号列のうち、可変長符号化されたＤＣ成分の差分値を可変長復号して、ＤＣ成分の差分値δi (ＤＣ）を算出し、可変長符号化されたＡＣ成分とともに差分値反転部２３４に対して出力する。
つまり、可変長符号復号部２３２は、δi (ＤＣ）Ｖ（ＡＣi）を、差分値反転部２３４に対して出力する。
差分値反転部２３４は、可変長符号復号部２３２から入力された符号列から、ＤＣ成分の差分値δi (ＤＣ）の正負を反転させ、差分値−δi (ＤＣ）とし、回転符号組立部２３６に対して出力する。
つまり、差分値反転部２３４は、−δi (ＤＣ）Ｖ（ＡＣi）を、回転符号組立部２３６に対して出力する。
【００８９】
回転符号組立部２３６は、差分値反転部２３４から入力された−δi (ＤＣ）Ｖ（ＡＣi）において、−δi (ＤＣ）と、末尾シンボル記憶部２２４に
記憶されたデータとを交換し、ＡＣ成分反転部２３８に対して出力する。
ＡＣ成分反転部２３８は、回転符号組立部２３６から入力された１画素ブロック分のデータ列のうち、ＡＣ成分の反転を行い、可変長符号化部２４０に対して出力する。
つまり、Ｖ（ＡＣi）を可変長符号し、ゼロランおよび有効桁数に基づいて各係数を求め、各係数を反転させる。
具体的には、8x8の係数に対して、(x, y) = ｛(x, y)｜x=偶数のとき，y=偶数  または，x=奇数のとき，y=奇数｝である係数の正負を反転する。
ただし，ゼロである係数は処理の必要はない。
可変長符号化部２４０は、ＡＣ成分反転部２３８から入力された１画素ブロック分のデータ列を可変符号化して、回転符号ＳＲ４として外部に出力する。
【００９０】
画像回転プログラム２２は、以上のように処理を行うことにより、ＤＣＴ係数を逆変換（ＩＤＣＴ）せずに画像を１８０°回転させる。
また、第２の画像回転プログラム１８（図６）におけるように、差分値δｎ−１〜δ１のＤＣＴ係数の交流成分の正負の反転が、可変長復号なしに行える場合と、可変長復号なしに行えない場合とがあるときには、可変長符号復号部２３２を、その場合に応じて、可変長復号を行ったり行わなかったりするように制御してもよい。
また、画像回転プログラム２２は、適切な変更がなされることにより、単色の画像データやＹＣｂＣｒ形式以外の多色画像データ（ＹＵＶ形式の画像データなど）の処理に適応されうる。
【００９１】
［第５の画像回転プログラムの特徴］
以下、第５の画像回転プログラム２２の特徴を、具体例を挙げて説明する。
例えば、元符号Ｓ４が、Ａ３，６００ｄｐｉ，単色グレイスケールのＪＰＥＧ符号であるときには、元符号Ｓ４に含まれる画素ブロックの個数は１１０万程度となる。
この場合、１つのオフセット値のデータ量を４バイトとし、１つのシンボル（Ｖ（ｓi(ＤＣ）)またはＶ（δｉ(ＤＣ）)）のワークメモリを１バイトとすると、一般的な画像回転プログラム１２におけるように、オフセット値とワークメモリとをセットにして記憶するときには、元符号Ｓ４全体の処理のために、約５Ｍバイトのメモリ容量が必要とされる。
【００９２】
これに対して、第５の画像回転プログラム２２によれば、元符号Ｓ４全体に対して、１つの画素ブロックのＤＣＴ係数の直流成分ｓｎ−１（ＤＣ）のみを記憶すればよいので、ワークメモリのメモリ容量は１バイトであり、ワークメモリの容量は、現在の処理装置の水準からすると、ほとんど無視しうる。
一方、第５の画像回転プログラム２２によっても、１つのオフセット値のデータ量は変わらずに４バイトなので、第５の画像回転プログラム２２が全てのオフセット値を記憶するためには、４Ｍバイトの記憶容量が必要とされる。
以上説明したように、一般的な画像回転プログラム１２によるときと比べ、第５の画像回転プログラム２２によれば、元符号Ｓ４の処理のためのメモリ容量が、２０％程度削減される。
【００９３】
さらに、画像回転プログラム２２が、ＹＣｂＣｒ（ＹＵＶ）形式の多色画像データを処理するときには、各画素ブロックのシンボルの処理に要するワークメモリの容量は増大するので、下表２に示すように、一般的な画像回転プログラム１２におけるような処理を行うときに比べて、処理に用いられるメモリ容量が、約４２％削減される。
また、画像回転プログラム２２によりＪＰＥＧ符号を処理するときには、上述のように、差分値δｉの正負反転は、ビット値の反転で実現されうる。
【００９４】
【表２】
2011029682.tif 000006
【００９５】
［第６の画像回転プログラム］
以下、複数の画素ブロックを含むＭＣＵを処理単位として画像の１８０°回転を行う第６の画像回転プログラム２６を説明する。
図１０は、第６の画像回転プログラム２６の構成を示す図である。
図１０に示すように、画像回転プログラム２６は、ブロック切出部２６０、末尾シンボル復号部２６２、ＭＣＵ切り出し２６４、ＭＣＵオフセット記憶部２６６、ＭＣＵ取り出し部２６８、ＭＣＵ処理プログラム２８から構成される。
ＭＣＵ処理プログラム２８は、第５の画像回転プログラム２２において、末尾シンボル復号部２２２を削除し、末尾シンボル記憶部２２４を、末尾シンボル記憶部２８０に置き換えた構成を採る。
なお、第６の画像回転プログラム２６が処理の対象とする元符号Ｓ５は、下式１１により表される。
【００９６】
Ｓ５＝｛ＭＣＵ0（Ｙ,Ｃｂ,Ｃｒ）〜ＭＣＵm−１（Ｙ,Ｃｂ,Ｃｒ）｝    （１１）
ただし、ｍは１以上の整数であり、上記Ｓ５は、ｍ個のＭＣＵを含む。
また、各ＭＣＵは、複数の画素ブロックを含む。
以下、説明の明確化・具体化のため、ｍ＝３であり、各ＭＣＵが２つ画素ブロックを含む場合を具体例として説明する。
また、以下、説明の明確化・具体化のため、第６の画像回転プログラム２６がＹ成分について処理を行う場合を具体例とするが、ＹＣｂＣｒ成分全てについても、同様に処理することができる。
上記具体例の場合、Ｓ５は、下式１２により表される。
【００９７】
Ｓ５＝ＭＣＵ0｛Ｖ（ｓ０(ＤＣ）)Ｖ（ＡＣ０），Ｖ（δ1(ＤＣ））Ｖ（ＡＣ1），｝，ＭＣＵ１｛Ｖ（δ２(ＤＣ）)Ｖ（ＡＣ２），Ｖ（δ３(ＤＣ））Ｖ（ＡＣ３）｝，ＭＣＵ２｛Ｖ（δ４(ＤＣ）)Ｖ（ＡＣ４），Ｖ（δ５(ＤＣ））Ｖ（ＡＣ５）｝  （１２）
つまり、各画素ブロックのＤＣ成分は、式９を参照して上述したように、ＤＰＣＭ符号化され、さらに、ＪＰＥＧ符号化の規格として定められているハフマン符号化による可変長符号化されてる。
また、各画素ブロックのＡＣ成分は、式９を参照して上述したように、ジグザグスキャン、ランレングス符号化などの処理が行われ、ＪＰＥＧ符号化の規格として定められているハフマン符号化による可変長符号化されている。
【００９８】
第６の画像回転プログラム２２において、ブロック切出部２６０は、元符号Ｓ５に含まれる各画素ブロックの先頭シンボルであるＤＣ成分を可変長復号して取り出し、末尾シンボル復号部２６２に対して出力する。
また、ブロック切出部２６０は、画素ブロックのオフセットを、ＭＣＵ切り出し部２６４に出力する。
末尾シンボル復号部２６２は、ブロック切出部２６０から入力された各画素ブロックの可変長復号されたＤＣ成分に基づいて、末尾のＭＣＵの末尾の画素ブロックのＤＣ成分をＤＰＣＭ復号し、ＭＣＵ処理プログラム２８に対して出力する。
ＭＣＵ切り出し部２６４は、各ＭＣＵの先頭位置（ＭＣＵオフセット）を取り出し、ＭＣＵオフセット記憶部２６６に対して出力する。
ＭＣＵオフセット記憶部２６６は、ＭＣＵ切り出し部２６４から入力されたＭＣＵオフセットを記憶する。
ＭＣＵ取り出し部２６８は、ＭＣＵオフセット記憶部２６６に記憶されたＭＣＵオフセットを参照し、ＭＣＵを逆順で取り出し、ＭＣＵ処理プログラム２８に対して出力する。
具体的には、ＭＣＵ取り出し部２６８は、元符号Ｓ５に含まれるＭＣＵを、ＭＣＵm−１〜ＭＣＵ0の順で取り出し、ＭＣＵ処理プログラム２８に対して出力する。
【００９９】
ＭＣＵ処理プログラム２８は、上述したように、第５の画像回転プログラム２２において、末尾シンボル復号部２２２を削除し、末尾シンボル記憶部２２４を、末尾シンボル記憶部２８０に置き換えた構成を採る。
末尾シンボル記憶部２８０は、ＤＰＣＭ復号された末尾のＭＣＵの末尾の画素ブロックのＤＣ成分を記憶する。
また、末尾シンボル記憶部２８０は、記憶しているデータと、回転符号組立部２３６から入力されたデータとを交換する。
回転符号組立部２３６は、差分値反転部２３４から入力されたデータと、末尾シンボル記憶部２２４に記憶されたデータとを交換し、ＡＣ成分反転部２３８に対して出力する。
つまり、ＭＣＵ処理プログラム２８は、下式１３により表される回転符号ＳＲ５を外部に出力する。
【０１００】
ＳＲ５＝ＭＣＵ２｛Ｖ（ｓ５(ＤＣ）)Ｖ（ＡＣ'５），Ｖ（―δ５(ＤＣ））Ｖ（ＡＣ'４）｝，ＭＣＵ１｛Ｖ（―δ４(ＤＣ）)Ｖ（ＡＣ'３），Ｖ（―δ３(ＤＣ））Ｖ（ＡＣ'２）｝，ＭＣＵ０｛Ｖ（―δ２(ＤＣ）)Ｖ（ＡＣ'１），Ｖ（―δ１(ＤＣ））Ｖ（ＡＣ'０）｝  （１３）
なお、ＡＣ'ｉは、ＡＣｉ（ＡＣ成分）を反転したものとする。
【０１０１】
［ＭＣＵオフセット記憶部２６６におけるオフセット値の記憶方法］
以下、第６の画像回転プログラム２６において、ＭＣＵオフセット記憶部２６６にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部２６８がＭＣＵオフセット値を用いてＭＣＵを切り取る方法を説明する。
図１１は、第６の画像回転プログラム２６において、ＭＣＵオフセット記憶部２６６にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部２６８がＭＣＵオフセット値を用いてＭＣＵを切り取るための第１の方法を示す図である。
図１２（Ａ）〜（Ｃ）は、第６の画像回転プログラム２６において、ＭＣＵオフセット記憶部２６６にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部２６８がＭＣＵオフセット値を用いてＭＣＵを切り取るための第２の方法を示す図である。
図１３（Ａ）〜（Ｃ）は、第６の画像回転プログラム２６において、ＭＣＵオフセット記憶部２６６にＭＣＵオフセット値を記憶し、ＭＣＵ取り出し部２６８がＭＣＵオフセット値を用いてＭＣＵを切り取るための第３の方法を示す図である。
ＭＣＵオフセット記憶部２６６にＭＣＵオフセット値を記憶し、これを用いてＭＣＵ取り出し部２６８がＭＣＵを切り取る方法としては、以下に説明する方法１〜３がある。
【０１０２】
（方法１）図１１に示すように、ＭＣＵオフセット記憶部２６６が、ＭＣＵオフセット値の全てを記憶し、ＭＣＵ取り出し部２６８が、ＭＣＵを逆方向、つまり、ＭＣＵm−１〜ＭＣＵ0の順番に切り取る。
【０１０３】
（方法２）図１２（Ａ）に示すように、ＭＣＵオフセット記憶部２６６が、特定のＭＣＵのＭＣＵオフセット値（例えば、ＭＣＵの行の先頭のＭＣＵのＭＣＵオフセット値の全て）を記憶する。
次に、ＭＣＵオフセット記憶部２６６は、上記記憶したＭＣＵオフセット値を起点に、ＭＣＵ取り出し部２６８が取り出しを行うＭＣＵのＭＣＵオフセット値を生成し、記憶する。
ＭＣＵ取り出し部２６８は、上記記憶したＭＣＵオフセット値を参照し、ＭＣＵをＭＣＵm−１〜ＭＣＵ0の順番に切り取る。
ＭＣＵオフセット記憶部２６６は、ＭＣＵ取り出し部２６８が処理を完了したＭＣＵのＭＣＵオフセット値を、破棄する。
【０１０４】
（方法３）図１３（Ａ）に示すように、ＭＣＵオフセット記憶部２６６が、特定のＭＣＵのＭＣＵオフセット値（例えば、ＭＣＵの行の先頭のＭＣＵのＭＣＵオフセット値の全て）を記憶する。
方法３では、ＭＣＵ取り出し部２６８は、上記記憶したＭＣＵオフセット値を起点に、次の起点までのブロック列を順方向の順にアクセスし、ブロックラインバッファを行う。
つまり、方法３では、ＭＣＵ取り出し部２６８は、ＭＣＵを可変長復号して取り出し、バッファに保持する。
ＭＣＵ処理プログラム２８は、バッファに保持された可変調復号されたＭＣＵを用いて、ＤＣ成分の交換処理およびＡＣ成分の反転処理を行う。
【０１０５】
上記方法１〜３の内、方法１がとられると、全てのＭＣＵのオフセットを保持する必要があるので、処理のために大きなメモリ容量が必要とされるが、処理速度は速くなる。
また、方法２がとられると、一度に特定のＭＣＵのオフセットを保持すればよいので、処理のために必要とされるメモリ容量は方法１に比べてごく少なくて済む一方、処理速度は方法１に比べて遅くなる。
また、方法３がとられると、一度に特定のＭＣＵのオフセットおよび保持したＭＣＵにおけるＪＰＥＧ復号された画素ブロック分のデータを保持するので、処理のために必要とされるメモリ容量と、処理速度とは、方法１，２の中間となる。
【符号の説明】
【０１０６】
１・・・画像処理装置，
１０・・・本体，
１００・・・ＣＰＵ，
１０２・・・ＤＳＰ，
１０４・・・メモリ，
１０６・・・入出力装置，
１０８・・・通信装置，
１１０・・・記憶装置，
１１２・・・記憶媒体，
１２，１４，１６，１８，２０，２２，２６・・・画像回転プログラム，
１２０・・・復号部，
１２２・・・シンボル記憶部，
１２４・・・シンボル取出部，
１２６・・・符号化部，
１４０，２２２,２６２・・・末尾シンボル復号部，
１４２，２２４，２８０・・・末尾シンボル記憶部，
１４４・・・符号取出部，
１４６，１７２，２３４・・・差分値反転部，
１４８，１８４，２３６・・・回転符号組立部，
１６０，２３２・・・可変長符号復号部，
１６２・・・差分値加算部，
１６４，２００・・・可変長符号化部，
１６６・・・末尾シンボル記憶部，
１６８・・・可変長符号取出部，
１７０・・・差分値取出部，
１８０・・・差分値復号部，
１８２・・・差分値符号化部，
２００，２４０・・・可変長符号化部，
２２０，２６０・・・ブロック切出部，
２２６・・・オフセット保持部，
２３０・・・差分値取出部，
２３８・・・ＡＣ成分反転部，
２６４・・・ＭＣＵ切り出し
２６６・・・ＭＣＵオフセット記憶部，
２６８・・・ＭＣＵ取り出し
【図１】
2011029682.tif 000007
【図２】
2011029682.tif 000008
【図３】
2011029682.tif 000009
【図４】
2011029682.tif 000010
【図５】
2011029682.tif 000011
【図６】
2011029682.tif 000012
【図７】
2011029682.tif 000013
【図８】
2011029682.tif 000014
【図９】
2011029682.tif 000015
【図１０】
2011029682.tif 000016
【図１１】
2011029682.tif 000017
【図１２】
2011029682.tif 000018
【図１３】
2011029682.tif 000019