(57)【特許請求の範囲】
【請求項１】
入力データを変換して出力データを生成するデータ変換方法であって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求めるステップ（ａ）と、
ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを求めるステップ（ｂ）と、
前記第１のデータと前記第２のデータとを結合して、（ｍ＋ｎ）ビット幅の第１のアドレスを生成するステップ（ｃ）と、
前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成するステップ（ｄ）と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段により、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出すステップ（ｅ）と、
前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成するステップ（ｆ）と、
を具備するデータ変換方法。
【請求項２】
前記ステップ（ｆ）は前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成するステップであることを特徴とする請求項１記載のデータ変換方法。
【請求項３】
ｎが２、３、又は、４であることを特徴とする請求項１又は２記載のデータ変換方法。
【請求項４】
入力データを変換して出力データを生成するデータ変換方法であって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求めるステップ（ａ）と、
前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータに所定の操作を施すことによりｋビット幅の第３のデータを求めるステップ（ｂ）と、
前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成するステップ（ｃ）と、
前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成するステップ（ｄ）と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段により、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出すステップ（ｅ）と、
前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成するステップ（ｆ）と、
を具備するデータ変換方法。
【請求項５】
前記ステップ（ｆ）は前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成するステップであることを特徴とする請求項４記載のデータ変換方法。
【請求項６】
前記ステップ（ｂ）が、第ｉ群に属するデータの数をＶｉとしたときにＶ０＜Ｖ１＜…＜ＶＮとなるように、前記第２のデータ０〜（２ｎ−１）をＮ群に分割することにより前記第３のデータを求めることを特徴とする請求項４又は５記載のデータ変換方法。
【請求項７】
ｎが３、４、又は、５であることを特徴とする請求項４乃至６記載のデータ変換方法。
【請求項８】
入力データを変換して出力データを生成するデータ変換方法であって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求めるステップ（ａ）と、
前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータ中の「１」であるビットの内で最上位に位置するビットのビット番号を示すｋビット幅の第３のデータを求めるステップ（ｂ）と、
前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成するステップ（ｃ）と、
前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成するステップ（ｄ）と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段により、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出すステップ（ｅ）と、
前記第１及び第２の変換データに基づいて、前記出力データを生成するステップ（ｆ）と、
を具備するデータ変換方法。
【請求項９】
前記ステップ（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成するステップであることを特徴とする請求項８記載のデータ変換方法。
【請求項１０】
ｎが３であることを特徴とする請求項８又は９記載のデータ変換方法。
【請求項１１】
前記補間処理が線形補間処理であることを特徴とする請求項２、３、５〜７、９〜１０のいずれか１項記載のデータ変換方法。
【請求項１２】
前記所定の変換がガンマ変換であることを特徴とする請求項１〜９のいずれか１項記載のデータ変換方法。
【請求項１３】
前記入力データのビット数と等しいビット数を有するデータを、自然数Ａと実数Ｂとを用いて２−Ａ・Ｂの形式で表せるように、２つの項に分解するステップ（ｇ）と、
等間隔の複数のデータに前記所定の変換を施した変換データを記憶しているテーブルから、前記２つの項のそれぞれに対応する２つの変換データを読み出すステップ（ｈ）と、
前記２つの変換データの乗算を行うことにより、２−Ａ・Ｂの形式で表したデータの変換データを求めるステップ（ｉ）と、
をさらに具備し、複数のデータについてステップ（ｇ）〜（ｉ）を繰り返すことにより、前記記憶手段に記憶すべき変換データを求める請求項１２記載のデータ変換方法。
【請求項１４】
入力データを変換して出力データを生成するデータ変換回路であって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める第１の手段と、
前記入力データ中のビット番号Ｌのデータに続くｎビット幅の第２のデータを求める第２の手段と、
前記第１のデータと前記第２のデータとを結合して、（ｍ＋ｎ）ビット幅の第１のアドレスを生成し、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する第３の手段と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶する第４の手段と、
前記第３の手段によって生成された第１のアドレスに対応する第１の変換データと、前記第３の手段によって生成された第２のアドレスに対応する第２の変換データとを前記第４の手段から読み出す第５の手段と、
前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成する第６の手段と、
を具備するデータ変換回路。
【請求項１５】
前記第６の手段は、前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成する手段であることを特徴とする請求項１４記載のデータ変換回路。
【請求項１６】
入力データを変換して出力データを生成するデータ変換回路であって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める第１の手段と、
前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータに所定の操作を施すことによりｋビット幅の第３のデータを求める第２の手段と、
前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成し、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する第３の手段と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶する第４の手段と、
前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを前記第４の手段から読み出す第５の手段と、
前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成する第６の手段と、
を具備するデータ変換回路。
【請求項１７】
前記第６の手段は、前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成する手段であることを特徴とする請求項１６記載のデータ変換回路。
【請求項１８】
前記第２の手段が、第ｉ群に属するデータの数をＶｉとしたときにＶ０＜Ｖ１＜…＜ＶＮとなるように、前記第２のデータ０〜（２ｎ−１）をＮ群に分割することにより前記第３のデータを求めることを特徴とする請求項１６乃至１８記載のデータ変換回路。
【請求項１９】
入力データを変換して出力データを生成するデータ変換回路であって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める第１の手段と、
前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータ中の「１」であるビットの内で最上位に位置するビットのビット番号を示すｋビット幅の第３のデータを求める
第２の手段と、
前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成し、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する第３の手段と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶する第４の手段と、
前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを前記第４の手段から読み出す第５の手段と、
前記第１及び第２の変換データに基づいて、前記出力データを生成する第６の手段と、
を具備するデータ変換回路。
【請求項２０】
前記第６の手段は、前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手段であることを特徴とする請求項１９記載のデータ変換回路。
【請求項２１】
前記補間処理が線形補間処理であることを特徴とする請求項１５、１７、１８、２０のいずれか１項記載のデータ変換回路。
【請求項２２】
前記所定の変換がガンマ変換であることを特徴とする請求項１５、１７、１８、２０、２１のいずれか１項記載のデータ変換回路。
【請求項２３】
入力データを変換して出力データを生成するために用いるデータ変換プログラムであって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める手順（ａ）と、
前記入力データ中のビット番号Ｌのデータに続くｎビット幅の第２のデータを求める手順（ｂ）と、
前記第１のデータと前記第２のデータとを結合して、（ｍ＋ｎ）ビット幅の第１のアドレスを生成する手順（ｃ）と、
前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する手順（ｄ）と、
入力アドレスに所定の変換を施した変換データを複数のアドレスに対応して記憶している記憶手段から、前記第１のアドレスに対応する第１の変換データと、
前記第２のアドレスに対応する第２の変換データとを読み出す手順（ｅ）と、
前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成する手順（ｆ）と、
を情報処理装置に実行させるデータ変換プログラム。
【請求項２４】
前記手順（ｆ）は前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成する手順であることを特徴とする請求項２３記載のデータ変換プログラム。
【請求項２５】
入力データを変換して出力データを生成するために用いるデータ変換プログラムであって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める手順（ａ）と、
前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータに所定の操作を施すことによりｋビット幅の第３のデータを求める手順（ｂ）と、
前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成する手順（ｃ）と、
前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する手順（ｄ）と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段から、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出す手順（ｅ）と、
前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成する手順（ｆ）と、
を情報処理装置に実行させるデータ変換プログラム。
【請求項２６】
前記手順（ｆ）は前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成する手順であることを特徴とする請求項２５記載のデータ変換プログラム。
【請求項２７】
手順（ｂ）が、第ｉ群に属するデータの数をＶｉとしたときにＶ０＜Ｖ１＜…＜ＶＮとなるように、前記第２のデータ０〜（２ｎ−１）をＮ群に分割することにより前記第３のデータを求めることを特徴とする請求項２６記載のデータ変換プログラム。
【請求項２８】
入力データを変換して出力データを生成するために用いるデータ変換プログラムであって、
前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める手順（ａ）と、
前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータ中の「１」で
あるビットの内で最上位に位置するビットのビット番号を示すｋビット幅の第３のデータを求める手順（ｂ）と、
前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成する手順（ｃ）と、
前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する手順（ｄ）と、
入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段から、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出す手順（ｅ）と、
前記第１及び第２の変換データに基づいて、前記出力データを生成する手順（ｆ）と、
を情報処理装置に実行させるデータ変換プログラム。
【請求項２９】
前記手順（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手順であることを特徴とする請求項２５記載のデータ変換プログラム。
【請求項３０】
前記補間処理が線形補間処理であることを特徴とする請求項２４，２６，２７，２９のいずれか１項記載のデータ変換プログラム。
【請求項３１】
前記所定の変換がガンマ変換であることを特徴とする請求項２３〜３０記載のデータ変換プログラム。
【請求項３２】
前記入力データのビット数と等しいビット数を有するデータを、自然数Ａと実数Ｂとを用いて２−Ａ・Ｂの形式で表せるように、２つの項に分解する手順（ｇ）と、
等間隔の複数のデータに前記所定の変換を施すことにより得られた複数の変換データを記憶しているテーブルから、前記２つの項のそれぞれに対応する２つの変換データを読み出す手順（ｈ）と、
前記２つの変換データの乗算を行うことにより、２−Ａ・Ｂの形式で表したデータの変換データを求める手順（ｉ）と、
を情報処理装置に実行させ、複数のデータについて手順（ｇ）〜（ｉ）を繰り返すことにより、前記記憶手段に記憶すべき変換データを求める請求項３１記載のデータ変換プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力データを変換して出力データを生成するデータ変換方法、データ変換回路及びデータ変換プログラムに関し、特に、入力データをガンマ変換して出力データを生成するデータ変換方法等に関する。
【０００２】
【従来の技術】
一般に、ＣＲＴ等の受像管において、駆動電圧Ｅとカソード電流Ｉとの間には、次式で表すような関係が存在する。
Ｉ＝ＫＥγ
この関係はガンマ（γ）特性と呼ばれる。ガンマの値は一般に１．６〜３程度であるので、カソード電流Ｉは駆動電圧Ｅに対して非直線性を有する。受像管においてγ＝１とすることは困難なので、送像側にガンマ補正回路を設けて総合的にγ＝１とすることが行われている。本願においては、このようなガンマ補正のために画像信号に対して行う変換のことをガンマ変換という。
【０００３】
画像読み取り装置や画像表示装置等に用いられる画像処理ＬＳＩ等において、画像データのガンマ変換が行われる。ガンマ変換は、入力をｘ、出力をｙとすると、次式によって表される。
【数１】
0003757884.tif 000002
【０００４】
図２６に、γ＝１．８とした場合の式（１）のグラフを示す。ガンマ変換は、このようにべき関数であるため、その演算には多くの時間が必要である。ところが、ガンマ変換は、画像読み取り装置等の高速動作のために、高速に行われることが要求される。そのため、従来より、入力データに対応する変換データを有する変換テーブルをＳＲＡＭ等の高速記憶素子に格納し、入力データに対応する変換データを変換テーブルから読み出すことが行われている。図２７は、このような従来のガンマ変換回路を示す図である。図２７に示すように、従来のガンマ変換回路７０は、入力データに対応する変換データを有する変換テーブルを格納する変換テーブル格納部７１を具備しており、入力データに対応する変換データを出力する。ここで、変換テーブル格納部７１は、ＳＲＡＭ等の高速記憶素子によって構成される。
【０００５】
ガンマ変換回路７０においては、例えば、入力データが１２ビットのデータであり、出力データが８ビットのデータである場合には、変換テーブルのサイズは、４０９６ワード（ここでは、１ワード＝８ビット）となり、変換テーブル格納部７１の記憶容量も４０９６ワード必要となる。また、入力データが１６ビットのデータであり、出力データが１２ビットのデータである場合には、変換テーブルのサイズは、６５５３６ワード（ここでは、１ワード＝１２ビット）となり、変換テーブル格納部７１の記憶容量も６５５３６ワード必要となる。このように大きなサイズの変換テーブルを格納するための大容量のＳＲＡＭを画像処理ＬＳＩに集積することは、極めて困難である。また、このような大容量のＳＲＡＭを画像処理ＬＳＩに集積できた場合であっても、画像処理ＬＳＩの大幅なコストアップを招くこととなる。
【０００６】
また、変換テーブルを小さくするため、所定間隔（例えば、１６）毎の入力データに対応する変換データを有する変換テーブルをＳＲＡＭ等に格納し、対応する変換データが変換テーブルに格納されている入力データが入力された場合には該変換データを出力し、対応する変換データが変換テーブルに格納されていない入力データが入力された場合には、該入力データの前後の入力データであって対応する変換データが変換テーブルに格納されている入力データに対応する変換データに補間処理を行って得られたデータを出力することが行われている。図２８は、このような従来のガンマ変換回路を示す図である。図２８に示すように、従来のガンマ変換回路８０は、所定間隔毎の入力データに対応する変換データを有する変換テーブルを格納する変換テーブル格納部８１及び変換テーブル格納部８１の出力データに補間処理を行う補間処理部８２を具備している。ここで、変換テーブル格納部８１は、ＳＲＡＭ等の高速記憶素子によって構成される。
【０００７】
ガンマ変換回路８０においては、例えば、入力データが１２ビットのデータであり、出力データが８ビットのデータであり、対応する変換データが格納される入力データの間隔が１６である場合には、変換テーブルのサイズは、２５６ワード（ここでは、１ワード＝８ビット）となり、変換テーブル格納部８１に必要とされる記憶容量も２５６ワードに低減される。また、入力データが１６ビットのデータであり、出力データが１２ビットのデータで、入力データの間隔が１６である場合には、変換テーブルのサイズは、４０９６ワード（ここでは、１ワード＝１２ビット）となり、変換テーブル格納部８１に必要とされる記憶容量も４０９６ワードに低減される。
【０００８】
【発明が解決しようとする課題】
しかしながら、ガンマ変換回路８０の出力データは、補間処理により算出されるため、誤差を有することとなる。図２９は、入力データが１６ビットのデータであり、出力データが１６ビットのデータであり、対応する変換データが格納される入力データの間隔が１６であるとした場合におけるガンマ変換回路８０の出力データと式（１）により算出される値との誤差を示す図である。図２９に示すように、ガンマ変換回路８０の出力データは、最大で約１３０の誤差を有する。
【０００９】
そこで、上記の点に鑑み、本発明は、変換データを格納する回路の記憶容量を小さくすると共に、出力データの誤差を小さくすることができるデータ変換方法、データ変換回路及びデータ変換プログラムを提供することを目的とする。
【００１０】
【課題を解決するための手段】
以上の課題を解決するため、本発明の第１の観点に係るデータ変換方法は、入力データを変換して出力データを生成するデータ変換方法であって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求めるステップ（ａ）と、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを求めるステップ（ｂ）と、前記第１のデータと前記第２のデータとを結合して、（ｍ＋ｎ）ビット幅の第１のアドレスを生成するステップ（ｃ）と、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成するステップ（ｄ）と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段により、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出すステップ（ｅ）と、前記ビット番号Ｌを示すｍビット幅の第１のデータに基づいて、前記第１及び第２の変換データのシフト量を求め、前記シフト量に基づいて前記第１及び第２の変換データから前記出力データを生成するステップ（ｆ）と、を具備するデータ変換方法に関係する。
【００１１】
ここで、前記ステップ（ｆ）は前記第１及び第２の変換データの差に基づく値を前記シフト量でシフトした値を、前記第１の変換データに加算して補間処理をおこなうことで出力データを生成するステップであることを特徴とするデータ変換方法に関係する。
【００１２】
また、本発明の第２の観点に係るデータ変換方法は、入力データを変換して出力データを生成するデータ変換方法であって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求めるステップ（ａ）と、前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータに所定の操作を施すことによりｋビット幅の第３のデータを求めるステップ（ｂ）と、前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成するステップ（ｃ）と、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成するステップ（ｄ）と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段により、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出すステップ（ｅ）と、前記第１及び第２の変換データに基づいて、前記出力データを生成するステップ（ｆ）と、を具備する。
【００１３】
ここで、前記ステップ（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成するステップであることとしても良い。また、前記ステップ（ｂ）が、第ｉ群に属するデータの数をＶiとしたときにＶ0＜Ｖ1＜…＜ＶNとなるように、前記第２のデータ０〜（２n−１）をＮ群に分割することにより前記第３のデータを求めることをとしても良い。また、ｎが３、４、又は、５であるとしても良い。
【００１４】
さらに、本発明の第３の観点に係るデータ変換方法は、入力データを変換して出力データを生成するデータ変換方法であって、  前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求めるステップ（ａ）と、前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータ中の「１」であるビットの内で最上位に位置するビットのビット番号を示すｋビット幅の第３のデータを求めるステップ（ｂ）と、前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成するステップ（ｃ）と、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成するステップ（ｄ）と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段により、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出すステップ（ｅ）と、前記第１及び第２の変換データに基づいて、前記出力データを生成するステップ（ｆ）と、を具備する。
【００１５】
ここで、前記ステップ（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成するステップであることとしても良く。また、ｎが３であるとしても良い。
【００１６】
また、本発明の第１乃至第３の観点に係るデータ変換方法において、前記補間処理が線形補間処理であるとしても良い。また、前記所定の変換がガンマ変換であることとしても良い。さらに、前記入力データのビット数と等しいビット数を有するデータを、自然数Ａと実数Ｂとを用いて２-A・Ｂの形式で表せるように、２つの項に分解するステップ（ｇ）と、等間隔の複数のデータに前記所定の変換を施した変換データを記憶しているテーブルから、前記２つの項のそれぞれに対応する２つの変換データを読み出すステップ（ｈ）と、前記２つの変換データの乗算を行うことにより、２-A・Ｂの形式で表したデータの変換データを求めるステップ（ｉ）と、をさらに具備し、複数のデータについてステップ（ｇ）〜（ｉ）を繰り返すことにより、前記記憶手段に記憶すべき変換データを求めることとしても良い。
【００１７】
本発明の第１の観点に係るデータ変換回路は、入力データを変換して出力データを生成するデータ変換回路であって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める第１の手段と、前記入力データ中のビット番号Ｌのデータに続くｎビット幅の第２のデータを求める第２の手段と、前記第１のデータと前記第２のデータとを結合して、（ｍ＋ｎ）ビット幅の第１のアドレスを生成し、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する第３の手段と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶する第４の手段と、前記第３の手段によって生成された第１のアドレスに対応する第１の変換データと、前記第３の手段によって生成された第２のアドレスに対応する第２の変換データとを前記第４の手段から読み出す第５の手段と、  前記第１及び第２の変換データに基づいて、前記出力データを生成する第６の手段と、を具備する。
【００１８】
ここで、前記第６の手段は、前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手段であるとしても良い。
【００１９】
本発明の第２の観点に係るデータ変換回路は、入力データを変換して出力データを生成するデータ変換回路であって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める第１の手段と、前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータに所定の操作を施すことによりｋビット幅の第３のデータを求める第２の手段と、前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成し、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する第３の手段と、入力アドレスに所定の変換を施した変換データを前記入力アドレスに対応して記憶する第４の手段と、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを前記第４の手段から読み出す第５の手段と、前記第１及び第２の変換データに基づいて前記出力データを生成する第６の手段と、を具備する。
【００２０】
ここで、前記第６の手段は、前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手段であるとしても良い。また、前記第２の手段が、第ｉ群に属するデータの数をＶiとしたときにＶ0＜Ｖ1＜…＜ＶNとなるように、前記第２のデータ０〜（２n−１）をＮ群に分割することにより前記第３のデータを求めることとしても良い。
【００２１】
本発明の第３の観点に係るデータ変換回路は、入力データを変換して出力データを生成するデータ変換回路であって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める第１の手段と、前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータ中の「１」であるビットの内で最上位に位置するビットのビット番号を示すｋビット幅の第３のデータを求める第２の手段と、前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成し、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する第３の手段と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶する第４の手段と、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを前記第４の手段から読み出す第５の手段と、前記第１及び第２の変換データに基づいて、前記出力データを生成する第６の手段と、を具備する。
【００２２】
ここで、前記第６の手段は、前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手段であるとしても良い。また、前記補間処理が線形補間処理であるとしても良い。
【００２３】
ここで、本発明の第１から第３の観点に係るデータ変換回路において、前記補間処理が線形補間処理であるとしても良い。また、前記所定の変換がガンマ変換であるとしても良い。
【００２４】
本発明の第１の観点に係るデータ変換プログラムは、入力データを変換して出力データを生成するために用いるデータ変換プログラムであって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める手順（ａ）と、前記入力データ中のビット番号Ｌのデータに続くｎビット幅の第２のデータを求める手順（ｂ）と、前記第１のデータと前記第２のデータとを結合して、（ｍ＋ｎ）ビット幅の第１のアドレスを生成する手順（ｃ）と、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する手順（ｄ）と、入力アドレスに所定の変換を施した変換データを複数のアドレスに対応して記憶している記憶手段から、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出す手順（ｅ）と、前記第１及び第２の変換データに基づいて前記出力データを生成する手順（ｆ）と、を情報処理装置に実行させる。
【００２５】
ここで、前記手順（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手順であるとしても良い。
【００２６】
本発明の第２の観点に係るデータ変換プログラムは、入力データを変換して出力データを生成するために用いるデータ変換プログラムであって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める手順（ａ）と、前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータに所定の操作を施すことによりｋビット幅の第３のデータを求める手順（ｂ）と、前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成する手順（ｃ）と、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する手順（ｄ）と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段から、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出す手順（ｅ）と、前記第１及び第２の変換データに基づいて、前記出力データを生成する手順（ｆ）と、を情報処理装置に実行させる。
【００２７】
ここで、前記手順（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手順であるとしても良い。また、手順（ｂ）が、第ｉ群に属するデータの数をＶiとしたときにＶ0＜Ｖ1＜…＜ＶNとなるように、前記第２のデータ０〜（２n−１）をＮ群に分割することにより前記第３のデータを求めることとしても良い。
【００２８】
本発明の第３の観点に係るデータ変換プログラムは、入力データを変換して出力データを生成するために用いるデータ変換プログラムであって、前記入力データ中の「１」であるビットの内で最上位に位置するビットのビット番号Ｌを示すｍビット幅の第１のデータを求める手順（ａ）と、前記入力データの中から、ビット番号（Ｌ−１）から（Ｌ−ｎ）までのｎビット幅の第２のデータを抽出し、前記第２のデータ中の「１」であるビットの内で最上位に位置するビットのビット番号を示すｋビット幅の第３のデータを求める手順（ｂ）と、前記第１のデータと前記第３のデータとを結合して、（ｍ＋ｋ）ビット幅の第１のアドレスを生成する手順（ｃ）と、前記第１のアドレスをインクリメント又はデクリメントして、第２のアドレスを生成する手順（ｄ）と、入力データに所定の変換を施した変換データを前記入力データから生成した前記アドレスに対応して記憶している記憶手段から、前記第１のアドレスに対応する第１の変換データと、前記第２のアドレスに対応する第２の変換データとを読み出す手順（ｅ）と、前記第１及び第２の変換データに基づいて、前記出力データを生成する手順（ｆ）と、を情報処理装置に実行させる。
ここで、前記手順（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手順であることとしても良い。
【００２９】
本発明の第１〜３の観点に係るデータ変換プログラムにおいて、前記手順（ｆ）は前記第１及び第２の変換データに基づいて補間処理をおこなうことで出力データを生成する手順であることとしても良い。また、前記補間処理が線形補間処理であるとしても良い。また、前記所定の変換がガンマ変換であるとしても良い。さらに、前記入力データのビット数と等しいビット数を有するデータを、自然数Ａと実数Ｂとを用いて２-A・Ｂの形式で表せるように、２つの項に分解する手順（ｇ）と、等間隔の複数のデータに前記所定の変換を施すことにより得られた複数の変換データを記憶しているテーブルから、前記２つの項のそれぞれに対応する２つの変換データを読み出す手順（ｈ）と、前記２つの変換データの乗算を行うことにより、２-A・Ｂの形式で表したデータの変換データを求める手順（ｉ）と、を情報処理装置に実行させ、複数のデータについて手順（ｇ）〜（ｉ）を繰り返すことにより、前記記憶手段に記憶すべき変換データを求めることとしても良い。
【００３０】
プライオリティエンコーダ１１は、１６ビット幅の入力データを入力し、入力データ中の最上位に位置する「１」のビットを検出し、検出したビットのビット番号を４ビット幅のＬデータとして出力する。なお、一般に、ビット番号は、最下位ビットを０とし、上位ビットに向かってカウントする。本実施形態においては、一般にならい、最下位ビットのビット番号を０とし、最上位ビットのビット番号を１５とする。例えば、プライオリティエンコーダ１１は、入力データが「１６’ｈ０００１」（ここで、「１６’」は１６ビット幅のデータであることを示し、「ｈ」は１６進表示であることを示し、「０００１」は入力データの値を示す）の場合には、「４’ｈ０」（ここで、「４’」は４ビット幅のデータであることを示し、「ｈ」は１６進表示であることを示し、「０」はＬデータの値を示す）のＬデータを出力し、入力データが「１６’ｈ０００２」の場合には、「４’ｈ１」のＬデータを出力し、入力データが「１６’ｈ０００３」の場合には、「４’ｈ１」のＬデータを出力する。また、プライオリティエンコーダ１１は、入力データ中に「１」のビットがない場合、すなわち入力データが「１６’ｈ００００」である場合には、「４’ｈ０」のＬデータを出力すると共に、ハイレベルのｚｅｒｏ信号を出力する。
【００３１】
ビット抽出部１２は、入力データ及びＬデータを入力し、入力データ中のビット番号（Ｌ−１）〜（Ｌ−２）の２ビットをＮデータとして出力する。例えば、ビット抽出部１２は、入力データが「１６’ｈ０００４」であり、Ｌデータが「４’ｈ２」である場合には、「２’ｂ００」（ここで、「２’」は２ビット幅のデータであることを示し、「ｂ」は２進表示であることを示し、「００」はデータの値を示す）のＮデータを出力し、入力データが「１６’ｈ０００５」であり、Ｌデータが「４’ｈ２」である場合には、「２’ｂ０１」のＮデータを出力する。なお、ビット抽出部１２は、Ｌデータが「４’ｈ２」以下の場合、すなわち入力データが「１６’ｈ００００」であり、Ｌデータが「４’ｈ０」である場合には、「２’ｂ００」のＮデータを出力し、入力データが「１６’ｈ０００１」であり、Ｌデータが「４’ｈ０」である場合には、「２’ｂ００」のＮデータを出力し、入力データが「１６’ｈ０００２」であり、Ｌデータが「４’ｈ１」である場合には、「２’ｂ００」のＮデータを出力し、入力データが「１６’ｈ０００３」であり、Ｌデータが「４’ｈ１」である場合には、「２’ｂ１０」のＮデータを出力する。
【００３２】
また、ビット抽出部１２は、入力データ中のビット番号（Ｌ−３）〜０の（Ｌ−２）ビットを１６ビット幅にゼロ拡張したＭデータを乗算器１９に出力する。例えば、ビット抽出部１２は、入力データが「１６’ｈ０００９」であり、Ｌデータが「４’ｈ３」である場合に、入力データのビット番号０である「１’ｂ１」を１６ビット幅にゼロ拡張した「１６’ｈ０００１」をＭデータとして乗算器２４に出力する。また、例えば、ビット抽出部１２は、入力データが「１６’ｈ００１３」であり、Ｌデータが「４’ｈ４」である場合に、入力データのビット番号１〜０である「２’ｂ１１」を１６ビット幅にゼロ拡張した「１６’ｈ０００３」をＭデータとして乗算器１９に出力する。
【００３３】
テーブルアドレス作成部１３は、４ビット幅のＬデータ及び２ビット幅のＮデータを入力し、Ｌデータを上位としＮデータを下位として結合した６ビットの第１のテーブルアドレスを出力し、所定時間経過後に、ＬデータとＮデータを結合したデータをインクリメント（又はデクリメント）した第２のテーブルアドレスを出力する。例えば、テーブルアドレス作成部１４は、Ｌデータが「４’ｈ３」であり、Ｎデータが「２’ｂ００」である場合には、「６’ｂ００１１００」を第１のテーブルアドレスとして出力し、所定時間経過後に、「６’ｂ００１１０１」を第２のテーブルアドレスとして出力する。
【００３４】
変換テーブル格納部１４は、所定の入力データをガンマ変換した１２ビット幅の変換データをテーブルアドレスに対応させた変換テーブルを格納しており、第１及び第２のテーブルアドレスに応じて第１及び第２の変換データを出力する。
【００３５】
図２は、入力データ、Ｌデータ、Ｎデータ、テーブルアドレス、入力データの増分、及び、変換データの対応を示す図である。図２において、ｙ0001は、入力データ「１６’ｈ０００１」をガンマ変換した１２ビット幅のデータであり、ｙ0002は、入力データ「１６’ｈ０００２」をガンマ変換した１２ビット幅のデータであり、ｙ0003は、入力データ「１６’ｈ０００３」をガンマ変換した１２ビット幅のデータであり、ｙ0004は、入力データ「１６’ｈ０００４」をガンマ変換した１２ビット幅のデータである。また、ｙ0005は、入力データ「１６’ｈ０００５」をガンマ変換した１２ビット幅のデータであり、ｙ0006は、入力データ「１６’ｈ０００６」をガンマ変換した１２ビット幅のデータであり、ｙ0007は、入力データ「１６’ｈ０００７」をガンマ変換した１２ビット幅のデータであり、ｙ0008は、入力データ「１６’ｈ０００８」をガンマ変換した１２ビット幅のデータである。また、ｙ000aは、入力データ「１６’ｈ０００ａ」をガンマ変換した１２ビット幅のデータであり、ｙ000cは、入力データ「１６’ｈ０００ｃ」をガンマ変換した１２ビット幅のデータであり、ｙ000cは、入力データ「１６’ｈ０００ｅ」をガンマ変換した１２ビット幅のデータであり、ｙ0010は、入力データ「１６’ｈ００１０」をガンマ変換した１２ビット幅のデータであり、ｙe000は、入力データ「１６’ｈｅ０００」をガンマ変換した１２ビット幅のデータである。
【００３６】
図２に示すように、例えば、入力データが「１６’ｈ０００８」の場合に、テーブルアドレスは、「６’ｂ００１１００」となり、入力データが「１６’ｈ０００９」の場合にも、テーブルアドレスは、「６’ｂ００１１００」となる。この場合、変換テーブル格納部１４は、入力データ「１６’ｈ０００８」をガンマ変換した変換データｙ0008をテーブルアドレス「６’ｂ００１１００」に対応させて格納し、入力データ「１６’ｈ０００９」をガンマ変換した変換データは格納しない。このように、複数の入力データから同一のテーブルアドレスが生成される場合には、変換テーブル格納部１４は、複数の入力データの内の最小の入力データをガンマ変換した変換データのみを複数の入力データから生成されるテーブルアドレスに対応させて格納する。
【００３７】
図３〜図５は、入力データ、テーブルアドレス、及び、変換データの対応を示す図である。図３〜図５において、対応する変換データが変換テーブル格納部１４に格納されていない入力データの表示は、省かれている。図３〜図５に示すように、入力データ（本実施形態においては、「１６’ｈ００００」〜「１６’ｈｆｆｆｆ」の６５５３６通りに変化する）に対して、変換データは、ｙ0001〜ｙe000の５９データとなる。従って、変換テーブル格納部１４は、５９ワード（ここでは、１ワード＝１２ビット）の記憶容量を有すれば良いこととなる。
【００３８】
なお、図３〜図５に示すように、変換テーブル格納部１４は、入力データのレンジ「１６’ｈ０００８」〜「１６’ｈ００１０」において、このレンジを４等分する入力データである「１６’ｈ０００ａ」、「１６’ｈ０００ｃ」、及び、「１６’ｈ０００ｅ」にそれぞれ対応する変換データｙ000a、ｙ000c、及び、ｙ000eを格納する。同様に、変換テーブル格納部１４は、入力データのレンジ「１６’ｈ００１０」〜「１６’ｈ００２０」、「１６’ｈ００２０」〜「１６’ｈ００４０」、「１６’ｈ００４０」〜「１６’ｈ００８０」、「１６’ｈ００８０」〜「１６’ｈ０１００」、「１６’ｈ０１００」〜「１６’ｈ０２００」、「１６’ｈ０２００」〜「１６’ｈ０４００」、「１６’ｈ０４００」〜「１６’ｈ０８００」、「１６’ｈ０８００」〜「１６’ｈ１０００」、「１６’ｈ１０００」〜「１６’ｈ２０００」、「１６’ｈ２０００」〜「１６’ｈ４０００」、「１６’ｈ４０００」〜「１６’ｈ８０００」、「１６’ｈ８０００」〜「１６’ｈ１００００」のレンジを４等分する入力データにそれぞれ対応する変換データを格納する。
【００３９】
再び図１を参照すると、マルチプレクサ１５は、ｚｅｒｏ信号がハイレベルの場合には「０」を選択出力し、ｚｅｒｏ信号がローレベルの場合には変換テーブル格納部１４が出力する変換データを選択出力する。
【００４０】
線形補間部２０は、変換テーブル格納部１４が出力する第１及び第２の変換データに対して線形補間処理を行う。
デコーダ２１は、Ｌデータから２を減じたデータをシフタ２５に出力する。例えば、デコーダ２１は、Ｌデータが「４’ｈ３」の場合には、「４’ｈ１」をシフタ２５に出力し、Ｌデータが「４’ｈ４」の場合には、「４’ｈ２」をシフタ２５に出力する。
【００４１】
レジスタ２２は、マルチプレクサ１５の出力を所定の時間保持する。
減算器２３は、マルチプレクサ１５の出力データからレジスタ２２の出力データを減じて出力する。
乗算器２４は、減算器２３の出力データにＭデータを乗じて出力する。
【００４２】
シフタ２５は、乗算器２４の出力データをデコーダ２１の出力データの値分だけ右シフトして出力する。シフタ２５は、除算器としての機能を果たす。
加算器２６は、マルチプレクサ１５の出力データをシフタ２５の出力データに加え、出力データ（ガンマ変換データ）として出力する。
【００４３】
次に、線形補間部２０が行う線形補間処理について図６を参照しながら説明する。図６は、線形補間部２０が行う線形補間処理の原理を示す図である。図６に示すように、線形補間部２０は、入力データｘcに対応する変換データｙcを、次式によって算出することができる。
【数２】
0003757884.tif 000003
【００４４】
次に、ガンマ変換回路のガンマ変換処理について、図１、図７、及び、図８を参照しながら説明する。図７は、ガンマ変換回路のガンマ変換処理を示すフローチャートであり、図８は、ガンマ変換回路の線形補間部の線形補間処理を示すフローチャートである。
【００４５】
図７及び図８の処理を開始すると、プライオリティエンコーダ１１は、入力データを入力し、Ｌデータを出力する（ステップＳ１０１）。
次に、ビット抽出部１２は、入力データ及びＬデータを入力し、Ｎデータ及びＭデータを出力する（ステップＳ１０２）。
次に、テーブルアドレス作成部１３は、Ｌデータ及びＮデータを入力し、第１のテーブルアドレスを出力する（ステップＳ１０３）。
【００４６】
次に、変換テーブル格納部１４は、第１のテーブルアドレスに応じて、第１の変換データを出力する（ステップＳ１０４）。
次に、マルチプレクサ１５は、ｚｅｒｏ信号の値に応じて、０又は第１の変換データを選択出力し、これがレジスタ２２に読み込まれる（ステップＳ１０５）。
次に、テーブルアドレス作成部１３は、第１のテーブルアドレスをインクリメント（又はデクリメント）した第２のテーブルアドレスを出力する（ステップＳ１０６）。
【００４７】
次に、変換テーブル格納部１４は、第２のテーブルアドレスに応じて、第２の変換データを出力する（ステップＳ１０７）。
次に、マルチプレクサ１５は、ｚｅｒｏ信号の値に応じて、０又は第２の変換データを選択出力する（ステップＳ１０８）。
次に、線形補間部２０は、第１の変換データ及び第２の変換データに基づいて、線形補間処理を開始する（ステップＳ１０９）。
【００４８】
線形補間処理を開始すると、線形補間部２０のデコーダ２１は、Ｌデータからシフタ２５が行うべきシフト処理のシフト量を算出する（ステップＳ２０１）。
次に、減算器２３は、マルチプレクサ１５の出力データである第２の変換データからレジスタ２２の出力データである第１の変換データを減ずる（ステップＳ２０２）。
【００４９】
次に、乗算器２４は、減算器２３の出力データにＭデータを乗ずる（ステップＳ２０３）。
次に、シフタ２５は、乗算器２４の出力データを、デコーダ２１の出力データに応じた量だけシフトする（ステップＳ２０４）。
次に、加算器２６は、レジスタ２２の出力データである第１の変換データにシフタ２５の出力データを加え、入力データに応じたガンマ変換データとして出力する（ステップＳ２０５）。
このように、ガンマ変換回路１０は、入力データに応じた出力データ（ガンマ変換データ）を出力することができる。
【００５０】
次に、入力データとして「１６’ｈ０００９」が入力された場合のガンマ変換回路１０の動作について、具体的に説明する。
まず、プライオリティエンコーダ１１は、入力データ「１６’ｈ０００９」を入力すると、Ｌデータ「４’ｈ３」をビット抽出部１２、テーブルアドレス作成部１３、及び、デコーダ２１に出力すると共に、ローレベルのｚｅｒｏ信号をマルチプレクサ１５に出力する。
【００５１】
ビット抽出部１２は、Ｌデータ「４’ｈ３」を入力すると、入力データ「１６’ｈ０００９」のビット番号２〜１である「２’ｂ００」をＮデータとしてテーブルアドレス作成部１３に出力する。さらに、ビット抽出部１２は、入力データ「１６’ｈ０００９」のビット番号０を１６ビットにゼロ拡張した「１６’ｈ０００１」をＭデータとして乗算器２４に出力する。このＭデータ「１６’ｈ０００１」が、式（２）の「Δｘ」に相当する。
【００５２】
テーブルアドレス作成部１３は、Ｌデータ「４’ｈ３」及びＮデータ「２’ｂ００」を入力すると、Ｌデータ「４’ｈ３」を上位としＮデータ「２’ｂ００」を下位として結合した「６’ｂ００１１００」を第１のテーブルアドレスとして変換テーブル格納部１４に出力する。さらに、テーブルアドレス作成部１３は、所定時間経過後に、「６’ｂ００１１００」をインクリメントした「６’ｂ００１１０１」を第２のテーブルアドレスとして変換テーブル格納部１４に出力する。
【００５３】
変換テーブル格納部１４は、第１のテーブルアドレス「６’ｂ００１１００」を入力すると、第１のテーブルアドレス「６’ｂ００１１００」に対応する第１の変換データｙ0008を出力する。さらに、変換テーブル格納部１４は、所定時間経過後に、第２のテーブルアドレス「６’ｂ００１１０１」を入力すると、第２のテーブルアドレス「６’ｂ００１１０１」に対応する第２の変換データｙ000aを出力する。
【００５４】
マルチプレクサ１５は、ｚｅｒｏ信号がローレベルであるため、変換テーブル格納部１４が出力する第１の変換データｙ７を選択出力する。さらに、マルチプレクサ１６は、所定時間経過後に、変換テーブル格納部１４が出力する第２の変換データｙ８を選択出力する。
【００５５】
デコーダ２１は、Ｌデータ「４’ｈ３」を入力すると、「４’ｈ３」から２を減算した「４’ｈ１」をシフタ２５に出力する。２の「４’ｈ１」乗（２1）が、式（２）の「ｄ」に相当する。
レジスタ２２は、マルチプレクサ１５が選択出力する第１の変換データｙ７を所定時間保持する。この第１の変換データｙ７が、式（２）の「ｙa」に相当する。
【００５６】
減算器２３は、マルチプレクサ１５が出力する第２の変換データｙ８からレジスタ２２が保持する第１の変換データｙ７の値を減じて出力する。この減算器２３の出力データが、式（２）の「Δｙ」に相当する。
乗算器２４は、減算器２３の出力データである（ｙ８−ｙ７）にＭデータ「１６’ｈ０００１」を乗じて出力する。この乗算器２４の出力データ（ここでは、（ｙ８−ｙ７）×１）が、式（２）の「Δｙ×Δｘ」に相当する。
【００５７】
シフタ２５は、乗算器２４の出力データ（ここでは、（ｙ８−ｙ７）×１）を、デコーダ２１の出力データ「４’ｈ１」に応じ、１ビット右シフトして出力する。このシフタ２５の出力データ（ここでは、（ｙ８−ｙ７）×１／２）が、式（２）の「Δｙ×Δｘ×１／ｄ」に相当する。
加算器２６は、レジスタ２２が保持する第１の変換データｙ７にシフタ２５の出力データ（ここでは、（ｙ８−ｙ７）×１／２）を加えて出力する。この加算器２６が出力するデータが、式（２）の「ｙa＋Δｙ×Δｘ×１／ｄ」に相当する。
図９は、本例における線形補間を示す図である。このように、ガンマ変換回路１０は、入力データ「１６’ｈ０００９」に応じた出力データ（ガンマ変換データ）を出力することができる。
【００５８】
次に、ガンマ変換回路１０の出力データと式（１）によって算出される値との間の誤差について、図１０を参照しながら説明する。図１０は、ガンマ変換回路１０の出力データと式（１）によって算出される値との間の誤差を示す図である。図１０に示すように、ガンマ変換回路１０の出力データと式（１）によって算出される値との間の誤差は、最大で約７３であり、図２９に示すガンマ変換回路８０の誤差（約１３０）の約１．７８分の１となっている。
【００５９】
このように、本実施形態によれば、変換テーブル格納部１４の記憶容量を小さくすることができる。本実施形態においては、変換テーブル格納部１４の記憶容量は５９ワードであり、ガンマ変換回路７０の変換テーブル格納部７１の記憶容量（６５５３６ワード）の約１１１０分の１に低減することができ、ガンマ変換回路８０の変換テーブル格納部８１の記憶容量（４０９６ワード）の約６９分の１に低減することができる。また、本実施形態によれば、出力データの誤差をガンマ変換回路８０の誤差の約１．７８分の１に低減することができる。
【００６０】
なお、ガンマ変換回路１０をＣＰＵとプログラムによって構成することができる。その場合には、図３〜図５に示す変換テーブルのサイズが５９ワードと小さいため、ＣＰＵに内蔵されているキャッシュメモリを変換テーブル格納部１４とし、キャッシュメモリに変換テーブルを格納することができ、ガンマ変換を高速に実現することが可能となる。
【００６１】
また、本実施形態においては、ビット抽出部１２が、入力データのビット番号（Ｌ−１）〜（Ｌ−２）の２ビットをＮデータとして抽出することとしているが、入力データのビット番号（Ｌ−１）〜（Ｌ−３）の３ビットをＮデータとして抽出することとしても良いし、入力データのビット番号（Ｌ−１）〜（Ｌ−４）の４ビットをＮデータとして抽出することとしても良い。このように、Ｎデータのビット幅を増やすことにより、出力データの誤差をより小さくすることができる。
また、本実施形態においては、入力データを１６ビット幅とし、出力データを１２ビット幅としているが、これらのデータを他のビット幅としても良い。
【００６２】
次に、本実施形態において用いる変換テーブルの作成方法について説明する。ガンマ変換の変換テーブルを作成する際に、式（１）において用いるγの値が与えられれば、変換データの値を計算することができる。また、γ補正の特性が、γの値ではなく、等間隔の入力に対する出力を格納した線型テーブル（例えば、入力データを８ビットとしたときの２５６ワードのテーブル）によって与えられることもある。このような場合には、線型テーブルから一旦γの値を求めるか、又は、ソフトウエア体系を変更して、始めからγの値が与えられるようにしなければならず、システム開発に要する労力が増加してしまうという問題があった。しかしながら、以下に述べる方法によれば、従来の線型テーブルに基づいて、本実施形態において用いる変換テーブルを容易に作成することができる。
【００６３】
この変換テーブルの作成方法は、次の原理を利用している。
ｘ＝２-A・Ｂの形式で表せるときに、
0003757884.tif 000004
即ち、ｘ＝２-A・Ｂのガンマ変換値は、２-Aのガンマ変換値とＢ1/γのガンマ変換値との積で表すことができる。
【００６４】
本実施形態において用いる変換テーブルに格納するデータの値を求めるには、以下の操作を行う。
従来の線型テーブルのデータを使用できる範囲においては、それらのデータをそのまま用いる。
従来の線型テーブルのデータを使用できない範囲においては、まず、入力データのビット数と等しいビット数を有するデータを、自然数Ａと実数Ｂとを用いて２-A・Ｂの形式で表せるように、２つの項に分解する。次に、従来の線型テーブルから、２つの項２-A、Ｂのそれぞれに対応する２つの変換データ２-A/γ、Ｂ1/γを読み出す。さらに、２つの変換データの乗算を行うことにより、２-A・Ｂの形式で表したデータの変換データ（２-A・Ｂ）1/γを求める。複数のデータについてこれらの操作を繰り返すことにより、変換テーブルに格納すべき変換データを求めることができる。
【００６５】
実際に、入力データが１６ビットである場合に、８ビットの入力データに対応した２５６ワードの線型テーブルに基づいて変換テーブルを作成する例について説明する。
例えば、入力データが（０,０,１,０,１,０,０,０,０,０,０,０,０,０,０,０）である場合には、８ビットの線型テーブルにおけるアドレス（０,０,１,０,１,０,０,０）に対応する変換値を読み取れば良い。
一方、入力データが（０,０,０,０,０,０,０,０,１,１,０,０,０,０,０,０）以下である場合には、８ビットの線型テーブルから変換値を読み取ることができない。そこで、入力データが（０,０,０,０,０,１,０,０,０,０,０,０,０,０,０,０）より小さい場合には、次の関係を利用する。
ｘ＝（０,０,０,０,０,０,ｘ9,ｘ8,ｘ7,０,０,０,０,０,０,０）は、
Ｂ＝（ｘ9,ｘ8,ｘ7,０,０,０,０,０,０,０,０,０,０,０,０,０）と、
２-6＝（０,０,０,０,０,１,０,０,０,０,０,０,０,０,０,０）との積で表されるので（ここでは、Ａ＝６とした）、
ｙ（ｘ）＝ｙ（０,０,０,０,０,１,０,０,０,０,０,０,０,０,０,０）
・ｙ（ｘ9,ｘ8,ｘ7,０,０,０,０,０,０,０,０,０,０,０,０,０）
この式において、右辺の２つの項に関する変換データは、従来の線型テーブルから読み取ることができる。
【００６６】
一般に、２-i≦ｘ＜２-(i-1)の範囲で該当する入力値は、次の４つである。
（１）２-i
（２）２-i＋１×２-(i+2)
（３）２-i＋２×２-(i+2)＝２-i＋２-(i+1)
（４）２-i＋３×２-(i+2)＝２-i＋２-(i+1)＋２-(i+2)
【００６７】
このような入力値を大きい方から並べると、
最上位ビットが最初の「１」である場合には、
（１,１,１,０,０,０,０,０,０,０,０,０,０,０,０,０）
（１,１,０,０,０,０,０,０,０,０,０,０,０,０,０,０）
（１,０,１,０,０,０,０,０,０,０,０,０,０,０,０,０）
（１,０,０,０,０,０,０,０,０,０,０,０,０,０,０,０）
【００６８】
上位から２番目のビットが最初の「１」である場合には、
（０,１,１,１,０,０,０,０,０,０,０,０,０,０,０,０）
（０,１,１,０,０,０,０,０,０,０,０,０,０,０,０,０）
（０,１,０,１,０,０,０,０,０,０,０,０,０,０,０,０）
（０,１,０,０,０,０,０,０,０,０,０,０,０,０,０,０）
と続いて、
【００６９】
上位から１４番目のビットが最初の「１」である場合には、
（０,０,０,０,０,０,０,０,０,０,０,０,０,１,１,１）
（０,０,０,０,０,０,０,０,０,０,０,０,０,１,１,０）
（０,０,０,０,０,０,０,０,０,０,０,０,０,１,０,１）
（０,０,０,０,０,０,０,０,０,０,０,０,０,１,０,０）
【００７０】
上位から１５番目のビットが最初の「１」である場合には、
（０,０,０,０,０,０,０,０,０,０,０,０,０,０,１,１）
（０,０,０,０,０,０,０,０,０,０,０,０,０,０,１,０）
【００７１】
最下位ビットが最初の「１」である場合には、
（０,０,０,０,０,０,０,０,０,０,０,０,０,０,０,１）
全てのビットが「０」である場合には、
（０,０,０,０,０,０,０,０,０,０,０,０,０,０,０,０）
【００７２】
このように、最上位の「１」であるビットの位置と、それに続く２ビットによって入力値が定まる。そこで、既に説明したように、入力値において最上位の「１」であるビットの位置を表す４ビットのデータＬと、それに続く２ビットのデータＮとを結合したデータ｛Ｌ，Ｎ｝を、アドレスとして用いることができる。なお、変換テーブルには格納しないが、入力値が「０」である場合には、明らかに変換値も「０」とする。また、入力値が「１」である場合には、変換値も「１」とする。
【００７３】
この例においては、１＞ｘ≧２-6の範囲について８ビットの線型テーブルの値を読み取った後、Ａ＝６として２-6＞ｘ≧２-12の範囲を求め、次にＡ＝１２として２-12＞ｘ≧２-18の範囲を求めることができる。これにより、乗算等の簡単な計算のみで変換値を求めることができるので、パーソナルコンピュータ等を用いて高速に計算が可能である。また、ソフトウエア体系を変更する必要もない。
【００７４】
次に、本発明の第２の実施形態について説明する。図１１は、本発明の第２の実施形態に係るデータ変換回路の構成を示す図である。本実施形態は、本発明をガンマ変換回路に適用したものである。本実施形態においては、入力データは１６ビット幅であり、出力データは１２ビット幅であるものとする。
図１１において、ガンマ変換回路３０は、プライオリティエンコーダ３１と、第１ビット抽出部３２と、第２テーブル格納部３３と、テーブルアドレス作成部３４と、変換テーブル格納部３５と、線形補間部４０とを具備している。また、線形補間部４０は、第２ビット抽出部４１と、第３テーブル格納部４２と、第４テーブル格納部４３と、レジスタ４４と、減算器４５と、補正項算出部４６と、加算器４７とを含んでいる。
【００７５】
プライオリティエンコーダ３１は、１６ビット幅の入力データを入力し、入力データ中の最上位に位置する「１」のビットを検出し、検出したビットのビット番号を４ビット幅のｊデータとして出力する。
第１ビット抽出部３２は、入力データ及びｊデータを入力し、入力データ中のビット番号（ｊ−１）〜（ｊ−４）の４ビットを抽出し、抽出した４ビットをｘiデータとして出力する。
【００７６】
第２テーブル格納部３３は、４ビットのｘiデータを２ビット幅のｒｅｐｉデータに変換するテーブルを格納しており、ｘiデータが「４’ｈ０」〜「４’ｈ２」の場合には、「２’ｂ００」をｒｅｐｉデータとして出力し、ｘiデータが「４’ｈ３」〜「４’ｈ６」の場合には、「２’ｂ０１」をｒｅｐｉデータとして出力し、ｘiデータが「４’ｈ７」〜「４’ｈａ」の場合には、「２’ｂ１０」をｒｅｐｉデータとして出力し、ｘiデータが「４’ｈｂ」〜「４’ｈｆ」の場合には、「２’ｂ１１」をｒｅｐｉデータとして出力する。
【００７７】
テーブルアドレス作成部３４は、４ビット幅のｊデータ及び２ビット幅のｒｅｐｉデータを入力し、ｊデータを上位としｒｅｐｉデータを下位として結合して得られた６ビットの第１のテーブルアドレスを出力し、所定時間経過後に、ｊデータとｒｅｐｉデータを結合して得られたデータをインクリメント（又はデクリメント）した第２のテーブルアドレスを出力する。
変換テーブル格納部３５は、１６ビット幅の入力データをガンマ変換した１２ビット幅の変換データをテーブルアドレスに対応させた変換テーブルを格納しており、第１及び第２のテーブルアドレスに応じて第１及び第２の変換データを出力する。
【００７８】
線形補間部４０は、変換テーブル格納部３５が出力する第１及び第２の変換データに対して線形補間処理を行う。
第２ビット抽出部４１は、入力データ及びｊデータを入力し、入力データ中のビット番号（ｊ−５）〜０の（ｊ−４）ビットを抽出し、抽出したデータをｘrデータとして出力する。
【００７９】
第３テーブル格納部４２は、ｘiデータを所定のデータ（ｄｄデータ）に変換するテーブルを格納しており、ｘiデータが「４’ｈ０」の場合には、「０」をｄｄデータとして出力し、ｘiデータが「４’ｈ１」の場合には、「１」をｄｄデータとして出力し、ｘiデータが「４’ｈ２」の場合には、「２」をｄｄデータとして出力し、ｘiデータが「４’ｈ３」の場合には、「０」をｄｄデータとして出力する。また、第３テーブル格納部４２は、ｘiデータが「４’ｈ４」の場合には、「１」をｄｄデータとして出力し、ｘiデータが「４’ｈ５」の場合には、「２」をｄｄデータとして出力し、ｘiデータが「４’ｈ６」の場合には、「３」をｄｄデータとして出力し、ｘiデータが「４’ｈ７」の場合には、「０」をｄｄデータとして出力する。
【００８０】
また、第３テーブル格納部４２は、ｘiデータが「４’ｈ８」の場合には、「１」をｄｄデータとして出力し、ｘiデータが「４’ｈ９」の場合には、「２」をｄｄデータとして出力し、ｘiデータが「４’ｈａ」の場合には、「３」をｄｄデータとして出力し、ｘiデータが「４’ｈｂ」の場合には、「０」をｄｄデータとして出力する。また、第３テーブル格納部４２は、ｘiデータが「４’ｈｃ」の場合には、「１」をｄｄデータとして出力し、ｘiデータが「４’ｈｄ」の場合には、「２」をｄｄデータとして出力し、ｘiデータが「４’ｈｅ」の場合には、「３」をｄｄデータとして出力し、ｘiデータが「４’ｈｆ」の場合には、「４」をｄｄデータとして出力する。
【００８１】
第４テーブル格納部４３は、ｘiデータを所定のデータ（ｓｐａｎデータ）に変換するテーブルを格納しており、ｘiデータが「４’ｈ０」〜「４’ｈ２」の場合には、「３」をｓｐａｎデータとして出力し、ｘiデータが「４’ｈ３」〜「４’ｈａ」の場合には、「４」をｓｐａｎデータとして出力し、ｘiデータが「４’ｈｂ」〜「４’ｈｆ」の場合には、「５」をｓｐａｎデータとして出力する。
【００８２】
図１２は、入力データ、入力データを所定の幅に分割したレンジ、ｊデータ、ｄｄデータ、ｓｐａｎデータ、ｒｅｐｉデータ、テーブルアドレス、及び、変換データの対応を示す図である。図１２において、ｙ1000は、入力データ「１６’ｈ１０００」をガンマ変換した１２ビット幅のデータであり、ｙ1300は、入力データ「１６’ｈ１３００」をガンマ変換した１２ビット幅のデータであり、ｙ1700は、入力データ「１６’ｈ１７００」をガンマ変換した１２ビット幅のデータであり、ｙ1b00は、入力データ「１６’ｈ１ｂ００」をガンマ変換した１２ビット幅のデータであり、ｙ2000は、入力データ「１６’ｈ２０００」をガンマ変換した１２ビット幅のデータである。
【００８３】
図１２に示すように、例えば、入力データが「１６’ｈ１０００」の場合に、テーブルアドレスは、「６’ｂ１１００００」となり、入力データが「１６’ｈ１１００」の場合にも、テーブルアドレスは、「６’ｂ１１００００」となる。この場合、変換テーブル格納部３４は、入力データ「１６’ｈ１０００」をガンマ変換した変換データｙ1000をテーブルアドレス「６’ｂ１１００００」に対応させて格納し、入力データ「１６’ｈ１１００」をガンマ変換した変換データは格納しない。このように、複数の入力データから同一のテーブルアドレスが生成される場合には、変換テーブル格納部３４は、複数の入力データの内の最小の入力データをガンマ変換した変換データのみを複数の入力データから生成されるテーブルアドレスに対応させて格納する。
【００８４】
なお、図１２に示すように、変換データ格納部３５は、入力データの「１６’ｈ１０００」〜「１６’ｈ２０００」のレンジにおいて、入力データ「１６’ｈ１０００」に対応する変換データｙ1000、並びに、「１６’ｈ１０００」〜「１６’ｈ２０００」のレンジを３：４：４：５に分割する入力データ「１６’ｈ１３００」、「１６’ｈ１７００」、及び、「１６’ｈ１ｂ００」にそれぞれ対応する変換データｙ1300、ｙ1700、及び、ｙ1b00を格納することとなる。
【００８５】
ここで、入力データの「１６’ｈ１０００」〜「１６’ｈ１３００」のレンジをｒｅｐ０とし、入力データの「１６’ｈ１３００」〜「１６’ｈ１７００」のレンジをｒｅｐ１とし、入力データの「１６’ｈ１７００」〜「１６’ｈ１ｂ００」のレンジをｒｅｐ２とし、入力データの「１６’ｈ１ｂ００」〜「１６’ｈ２０００」のレンジをｒｅｐ３とすると、ｒｅｐｉデータは、入力データが属するレンジのｒｅｐ番号を示す。
【００８６】
また、ｓｐａｎデータは、入力データが属するレンジの他の３つのレンジに対する比率となる。例えば、入力データが「１６’ｈ１００１」の場合には、ｓｐａｎデータは、入力データが属するレンジであるｒｅｐ０のｒｅｐ１〜ｒｅｐ３に対する比率である「３」となる。
【００８７】
再び図１１を参照すると、レジスタ４４は、変換テーブル格納部３５の出力データを所定の時間保持すると共に、保持しているデータをｙ＿ｔｂｌデータとして出力する。
減算器４５は、変換テーブル格納部３５の出力データからレジスタ４４の出力データを減じたデータをｓｔｅｐ＿ｙデータとして出力する。
補正項算出部４６は、ｄｄデータ、ｓｐａｎデータ、ｊデータ、ｘrデータ、及び、ｓｔｅｐ＿ｙデータを入力し、ｄｙデータを次式によって算出して出力する。加算器４７は、ｄｙデータをｙ＿ｔｂｌデータに加えて出力する。
【数３】
0003757884.tif 000005
【００８８】
次に、線形補間部４０が行う線形補間処理について図１３を参照しながら説明する。図１３は、線形補間部４０が行う線形補間処理の原理を示す図である。図１３に示すように、線形補間部４０は、入力データｘに対応する変換データｙを次式によって算出することができる。
【数４】
0003757884.tif 000006
【００８９】
次に、ガンマ変換回路のガンマ変換処理について、図１１、図１４、及び、図１５を参照しながら説明する。図１４は、ガンマ変換回路のガンマ変換処理を示すフローチャートであり、図１５は、ガンマ変換回路の線形補間部の線形補間処理を示すフローチャートである。
【００９０】
図１４及び図１５の処理を開始すると、プライオリティエンコーダ３１は、入力データを入力し、ｊデータを出力する（ステップＳ３０１）。
次に、第１ビット抽出部３２は、入力データ及びｊデータを入力し、ｘiデータを出力する（ステップＳ３０２）。
次に、第２テーブル格納部３３は、ｘiデータを入力し、ｒｅｐｉデータを出力する（ステップＳ３０３）。
【００９１】
次に、テーブルアドレス作成部３４は、ｊデータ及びｒｅｐｉデータを入力し、第１のテーブルアドレスを出力する（ステップＳ３０４）。
次に、変換テーブル格納部３５は、第１のテーブルアドレスに応じて、第１の変換データを出力し、レジスタ４４はこれを保持する（ステップＳ３０５）。
【００９２】
次に、テーブルアドレス作成部３４は、第１のテーブルアドレスをインクリメント（又はデクリメント）した第２のテーブルアドレスを出力する（ステップＳ３０５）。
次に、変換テーブル格納部３５は、第２のテーブルアドレスに応じて、第２の変換データを出力する（ステップＳ３０６）。
次に、線形補間部４０は、第１の変換データ及び第２の変換データに基づいて、線形補間処理を開始する（ステップＳ３０８）。
【００９３】
線形補間処理を開始すると、線形補間部４０の第２ビット抽出部４１は、入力データ及びｊデータを入力し、ｘrデータを出力する（ステップＳ４０１）。
次に、第３テーブル格納部４２は、ｘiデータを入力し、ｄｄデータを出力する（ステップＳ４０２）。
次に、第４テーブル格納部４２は、ｘiデータを入力し、ｓｐａｎデータを出力する（ステップＳ４０３）。
【００９４】
次に、減算器４５は、変換テーブル格納部３５の出力データである第２の変換データからレジスタ４４の出力データである第１の変換データを減ずる（ステップＳ４０４）。
【００９５】
次に、補正項算出部４６は、ｊデータ、ｘrデータ、ｄｄデータ、ｓｐａｎデータ、及び、ｓｔｅｐ＿ｙデータを入力し、ｄｙデータを出力する（ステップＳ４０５）。
次に、加算器４７は、ｙ＿ｔｂｌデータにｄｙデータを加え、入力データに応じたガンマ変換データとして出力する（ステップＳ４０６）。
このように、ガンマ変換回路３０は、入力データに応じた出力データ（ガンマ変換データ）を出力することができる。
【００９６】
次に、ガンマ変換回路３０の出力データと式（１）によって算出される値との間の誤差について、図１６を参照しながら説明する。図１６は、ガンマ変換回路３０の出力データと式（１）によって算出される値との間の誤差を示す図である。図１６に示すように、ガンマ変換回路３０の出力データと式（１）によって算出される値との間の誤差は、最大で約５８程度であり、図２９に示すガンマ変換回路８０の誤差（約１３０）の約２．２４分の１となっており、図１０に示すガンマ変換回路１０の誤差（約７３）の約１．２５分の１となっている。
【００９７】
このように、本実施形態によれば、変換テーブル格納部３５が格納する変換テーブルのサイズをガンマ変換回路１０の変換テーブル格納部１４が格納する変換テーブルのサイズと同一に保ったまま、すなわち変換テーブル格納部３５の記憶容量を変換テーブル格納部１４の記憶容量と同一に保ったまま、ガンマ変換回路１０より誤差を小さくすることができる。
【００９８】
なお、ガンマ変換回路３０をＣＰＵとプログラムによって構成することができる。その場合には、変換テーブルのサイズが小さいため、ＣＰＵに内蔵されているキャッシュメモリを変換テーブル格納部３５とし、キャッシュメモリに変換テーブルを格納することができ、ガンマ変換を高速に実現することが可能となる。
【００９９】
また、本実施形態においては、第１ビット抽出部３２が、入力データのビット番号（Ｌ−１）〜（Ｌ−４）の４ビットをｘiデータとして抽出することとしているが、入力データのビット番号（Ｌ−１）〜（Ｌ−３）の３ビットをｘiデータとして抽出することとしても良いし、入力データのビット番号（Ｌ−１）〜（Ｌ−５）の５ビットをｘiデータとして抽出することとしても良い。ｘiデータのビット幅を増やすこととすると、出力データの誤差をより小さくすることができる。
また、本実施形態においては、入力データを１６ビット幅とし、出力データを１２ビット幅としているが、これらのデータを他のビット幅としても良い。
【０１００】
また、本実施形態においては、ｊデータに基づいてｒｅｐｉデータを出力するために第２テーブル格納部３２を用いているが、第２テーブル格納部３２に代えてデコーダを用いることとしても良い。同様に、第３テーブル格納部４２及び第４テーブル格納部４３に代えてデコーダを用いることとしても良い。
【０１０１】
次に、本発明の第３の実施形態について説明する。図１７は、本発明の第３の実施形態に係るデータ変換回路の構成を示す図である。本実施形態は、本発明をガンマ変換回路に適用したものである。本実施形態においては、入力データは１６ビット幅であり、出力データは１２ビット幅であるものとする。
図１７において、ガンマ変換回路５０は、プライオリティエンコーダ５１及び５３と、ビット抽出部５２と、テーブルアドレス作成部５４と、変換テーブル格納部５５と、マルチプレクサ１５と、線形補間部６０とを具備している。また、線形補間部６０は、デコーダ６１と、レジスタ２２と、減算器２３と、乗算器２４と、シフタ２５と、加算器２６とを含んでいる。
【０１０２】
プライオリティエンコーダ５１は、１６ビット幅の入力データを入力し、入力データ中の最上位に位置する「１」のビットを検出し、検出したビットのビット番号を４ビット幅のＬ１データとして出力する。また、プライオリティエンコーダ５１は、入力データ中に「１」のビットがない場合、すなわち入力データが「１６’ｈ００００」である場合には、「４’ｈ０」のＬ１データを出力すると共に、ハイレベルのｚｅｒｏ信号を出力する。
【０１０３】
ビット抽出部５２は、入力データ及びＬ１データを入力し、入力データ中のビット番号（Ｌ１−１）〜（Ｌ１−３）の３ビットを抽出し、抽出した３ビットを出力する。なお、ビット抽出部５２は、Ｌ１データの値が「４’ｈ３」より小さい場合には、ビット番号（Ｌ１−１）〜０を抽出し、下位に所定数の「０」を結合した３ビットデータを出力する。例えば、ビット抽出部５２は、入力データが「１６’ｈ０００３」であり、Ｌ１データが「４’ｈ１」である場合には、入力データ「１６’ｈ０００３」のビット番号０である「１」の下位に「００」を結合した「３’ｂ１００」を出力する。
【０１０４】
プライオリティエンコーダ５３は、ビット抽出部５２から３ビット幅のデータを入力し、入力したデータ中の最上位に位置する「１」のビットを検出し、検出したビットのビット番号を２ビット幅のＬ２データとして出力する。
テーブルアドレス作成部５３は、４ビット幅のＬ１データ及び２ビット幅のＬ２データを入力し、Ｌ１データを上位としＬ２データを下位として結合して得られた６ビットの第１のテーブルアドレスを出力し、所定時間経過後に、Ｌ１データとＬ２データを結合して得られたデータをインクリメント（又はデクリメント）した第２のテーブルアドレスを出力する。
変換テーブル格納部５５は、１６ビット幅の入力データをガンマ変換した１２ビット幅の変換データをテーブルアドレスに対応させた変換テーブルを格納しており、第１及び第２のテーブルアドレスに応じて第１及び第２の変換データを出力する。
【０１０５】
図１８は、入力データ、Ｌ１データ、Ｌ２データ、テーブルアドレス、入力データの増分、及び、変換データの対応を示す図である。図１８において、ｙ0001は、入力データ「１６’ｈ０００１」をガンマ変換した１２ビット幅のデータであり、ｙ0002は、入力データ「１６’ｈ０００２」をガンマ変換した１２ビット幅のデータであり、ｙ0003は、入力データ「１６’ｈ０００３」をガンマ変換した１２ビット幅のデータであり、ｙ0004は、入力データ「１６’ｈ０００４」をガンマ変換した１２ビット幅のデータである。また、ｙ0005は、入力データ「１６’ｈ０００５」をガンマ変換した１２ビット幅のデータであり、ｙ0006は、入力データ「１６’ｈ０００６」をガンマ変換した１２ビット幅のデータであり、ｙ0007は、入力データ「１６’ｈ０００７」をガンマ変換した１２ビット幅のデータであり、ｙ0008は、入力データ「１６’ｈ０００８」をガンマ変換した１２ビット幅のデータである。
【０１０６】
また、ｙ0009は、入力データ「１６’ｈ０００９」をガンマ変換した１２ビット幅のデータであり、ｙ000aは、入力データ「１６’ｈ０００ａ」をガンマ変換した１２ビット幅のデータであり、ｙ000cは、入力データ「１６’ｈ０００ｃ」をガンマ変換した１２ビット幅のデータであり、ｙ0010は、入力データ「１６’ｈ００１０」をガンマ変換した１２ビット幅のデータであり、ｙc000は、入力データ「１６’ｈｃ０００」をガンマ変換した１２ビット幅のデータである。
【０１０７】
図１８に示すように、例えば、入力データが「１６’ｈ０００ａ」の場合に、テーブルアドレスは、「６’ｂ００１１１０」となり、入力データが「１６’ｈ０００ｂ」の場合にも、テーブルアドレスは、「６’ｂ００１１１０」となる。この場合、変換テーブル格納部５５は、入力データ「１６’ｈ０００ａ」をガンマ変換した変換データｙ000aをテーブルアドレス「６’ｂ００１１００」に対応させて格納し、入力データ「１６’ｈ０００ｂ」をガンマ変換した変換データは格納しない。このように、複数の入力データから同一のテーブルアドレスが生成される場合には、変換テーブル格納部５５は、複数の入力データの内の最小の入力データをガンマ変換した変換データのみを複数の入力データから生成されるテーブルアドレスに対応させて格納する。
【０１０８】
図１９〜図２１は、入力データ、テーブルアドレス、及び、変換データの対応を示す図である。図１９〜図２１において、対応する変換データが変換テーブル格納部５５に格納されていない入力データの表示は、省かれている。図１９〜図２１に示すように、入力データ（本実施形態においては、「１６’ｈ００００」〜「１６’ｈｆｆｆｆ」の６５５３６通りに変化する）に対して、変換データは、ｙ0001〜ｙc000の５９データとなる。従って、変換テーブル格納部１４は、５９ワード（ここでは、１ワード＝１２ビット）の記憶容量を有すれば良いこととなる。
【０１０９】
再び図９を参照すると、線形補間部６０は、変換テーブル格納部５５が出力する第１及び第２の変換データに対して線形補間を行う。
デコーダ６１は、Ｌ２データが「２’ｂ００」の場合には、（Ｌ１−３）を出力し、Ｌ２データが「２’ｂ０１」、「２’ｂ１０」、又は、「２’ｂ１１」の場合には、（Ｌ１＋Ｌ２−４）を出力する。
【０１１０】
次に、ガンマ変換回路のガンマ変換処理について、図１７、及び、図２２〜図２４を参照しながら説明する。図２２〜図２３は、ガンマ変換回路のガンマ変換処理を示すフローチャートであり、図２４は、ガンマ変換回路の線形補間部の線形補間処理を示すフローチャートである。
【０１１１】
図２２〜図２４の処理を開始すると、プライオリティエンコーダ５１は、入力データを入力し、Ｌ１データを出力する（ステップＳ５０１）。
次に、ビット抽出部５２は、入力データ及びＬ１データを入力し、入力データのビット番号（Ｌ−１）〜（Ｌ−３）の３ビットデータ及びＭデータを出力する（ステップＳ５０２）。
次に、プライオリティエンコーダ５３は、入力データのビット番号（Ｌ−１）〜（Ｌ−３）の３ビットデータを入力し、Ｌ２データを出力する（ステップＳ５０３）。
次に、テーブルアドレス作成部１３は、Ｌ１データ及びＬ２データを入力し、第１のテーブルアドレスを出力する（ステップＳ５０４）。
【０１１２】
次に、変換テーブル格納部５５は、第１のテーブルアドレスに応じて、第１の変換データを出力する（ステップＳ５０５）。
次に、マルチプレクサ１５は、ｚｅｒｏ信号の値に応じて、０又は第１の変換データを選択出力する（ステップＳ５０６）。
次に、テーブルアドレス作成部５４は、第１のテーブルアドレスをインクリメント（又はデクリメント）した第２のテーブルアドレスを出力する（ステップＳ５０７）。
【０１１３】
次に、変換テーブル格納部５５は、第２のテーブルアドレスに応じて、第２の変換データを出力する（ステップＳ５０８）。
次に、マルチプレクサ１５は、ｚｅｒｏ信号の値に応じて、０又は第２の変換データを選択出力する（ステップＳ５０９）。
次に、線形補間部６０は、第１の変換データ及び第２の変換データに基づいて、線形補間処理を開始する（ステップＳ５１０）。
【０１１４】
線形補間処理を開始すると、線形補間部６０のデコーダ６１は、Ｌ１データ及びＬ２データからシフタ２５が行うシフト処理のシフト量を算出する（ステップＳ６０１）。
次に、レジスタ２２は、第１の変換データを所定の時間保持する（ステップＳ６０２）。
次に、減算器２３は、マルチプレクサ１５の出力データである第２の変換データからレジスタ２２の出力データである第１の変換データを減ずる（ステップＳ６０３）。
【０１１５】
次に、乗算器２４は、減算器２３の出力データにＭデータを乗ずる（ステップＳ６０４）。
次に、シフタ２５は、乗算器２４の出力データを、デコーダ２１の出力データに応じた量だけシフトする（ステップＳ６０５）。
次に、加算器２６は、レジスタ２２の出力データである第１の変換データにシフタ２５の出力データを加え、入力データに応じたガンマ変換データとして出力する（ステップＳ６０６）。
このように、ガンマ変換回路５０は、入力データに応じた出力データ（ガンマ変換データ）を出力することができる。
【０１１６】
次に、ガンマ変換回路５０の出力データと式（１）によって算出される値との間の誤差について、図２５を参照しながら説明する。図２５は、ガンマ変換回路５０の出力データと式（１）によって算出される値との間の誤差を示す図である。図２５に示すように、ガンマ変換回路５０の出力データと式（１）によって算出される値との間の誤差は、最大で約１５０程度である。
【０１１７】
このように、本実施形態によれば、変換データ格納部５５の記憶容量を小さくすることができる
【０１１８】
なお、ガンマ変換回路５０をＣＰＵとプログラムによって構成することができる。その場合には、変換テーブルのサイズが小さいため、ＣＰＵに内蔵されているキャッシュメモリを変換テーブル格納部５５とし、キャッシュメモリに変換テーブルを格納することができ、ガンマ変換を高速に実現することが可能となる。
【０１１９】
また、本実施形態においては、入力データを１６ビット幅とし、出力データを１２ビット幅としているが、これらのデータを他のビット幅としても良い。
【０１２０】
【発明の効果】
以上述べた様に、本発明によれば、変換データを格納する回路の記憶容量を小さくすると共に、出力データの誤差を小さくすることができる。
【図面の簡単な説明】
【図１】  本発明の第１の実施形態に係るガンマ変換回路の構成を示す図である。
【図２】  本発明の第１の実施形態における入力データ、Ｌデータ、Ｎデータ、テーブルアドレス、入力データの増分、及び、変換データの対応を示す図である。
【図３】  本発明の第１の実施形態における入力データ、テーブルアドレス、及び、変換データの対応を示す図である。
【図４】  本発明の第１の実施形態における入力データ、テーブルアドレス、及び、変換データの対応を示す図である。
【図５】  本発明の第１の実施形態における入力データ、テーブルアドレス、及び、変換データの対応を示す図である。
【図６】  本発明の第１の実施形態における線形補間処理の原理を示す図である。
【図７】  本発明の第１の実施形態に係るガンマ変換回路の動作を示すフローチャートである。
【図８】  本発明の第１の実施形態に係るガンマ変換回路の線形補間処理を示すフローチャートである。
【図９】  本発明の第１の実施形態における線形補間処理による入力データ「１６’ｈ０００９」に対応するガンマ変換データの算出の原理を示す図である。
【図１０】  本発明の第１の実施形態に係るガンマ変換回路の出力データの誤差を示す図である。
【図１１】  本発明の第２の実施形態に係るガンマ変換回路の構成を示す図である。
【図１２】  本発明の第２の実施形態における入力データ、入力データのレンジ、ｊデータ、ｄｄデータ、ｓｐａｎデータ、ｒｅｐｉデータ、テーブルアドレス、及び、変換データの対応を示す図である。
【図１３】  本発明の第２の実施形態における線形補間処理の原理を示す図である。
【図１４】  本発明の第２の実施形態に係るガンマ変換回路の動作を示すフローチャートである。
【図１５】  本発明の第２の実施形態に係るガンマ変換回路の線形補間処理を示すフローチャートである。
【図１６】  本発明の第２の実施形態に係るガンマ変換回路の出力データの誤差を示す図である。
【図１７】  本発明の第３の実施形態に係るガンマ変換回路の構成を示す図である。
【図１８】  本発明の第３の実施形態における入力データ、Ｌ１データ、Ｌ２データ、テーブルアドレス、入力データの増分、及び、変換データの対応を示す図である。
【図１９】  本発明の第３の実施形態における入力データ、テーブルアドレス、及び、変換データの対応を示す図である。
【図２０】  本発明の第３の実施形態における入力データ、テーブルアドレス、及び、変換データの対応を示す図である。
【図２１】  本発明の第３の実施形態における入力データ、テーブルアドレス、及び、変換データの対応を示す図である。
【図２２】  本発明の第３の実施形態に係るガンマ変換回路の動作を示すフローチャートである。
【図２３】  本発明の第３の実施形態に係るガンマ変換回路の動作を示すフローチャートである。
【図２４】  本発明の第３の実施形態に係るガンマ変換回路の線形補間処理を示すフローチャートである。
【図２５】  本発明の第１の実施形態に係るガンマ変換回路の出力データの誤差を示す図である。
【図２６】  ガンマ変換のグラフを示す図である。
【図２７】  従来のガンマ変換回路の構成を示す図である。
【図２８】  従来のガンマ変換回路の構成を示す図である。
【図２９】  図２８のガンマ変換回路の出力データの誤差を示す図である。
【符号の説明】
１０、３０、５０  ガンマ変換回路
１１、３１、５１、５３  プライオリティエンコーダ
１２、５２  ビット抽出部
１３、３４、５４  テーブルアドレス作成部
１４、３５、５５  変換テーブル格納部
１５  マルチプレクサ
２０、４０、６０  線形補間部
２１、６１  デコーダ
２２、４４  レジスタ
２３、４５  減算器
２４  乗算器
２５  シフタ
２６、４７  加算器
３２  第１ビット抽出部
３３  第２テーブル格納部
４１  第２ビット抽出部
４２  第３テーブル格納部
４３  第４テーブル格納部
４６  補正項算出部
【図１】
0003757884.tif 000007
【図２】
0003757884.tif 000008
【図３】
0003757884.tif 000009
【図４】
0003757884.tif 000010
【図５】
0003757884.tif 000011
【図６】
0003757884.tif 000012
【図７】
0003757884.tif 000013
【図８】
0003757884.tif 000014
【図９】
0003757884.tif 000015
【図１０】
0003757884.tif 000016
【図１１】
0003757884.tif 000017
【図１２】
0003757884.tif 000018
【図１３】
0003757884.tif 000019
【図１４】
0003757884.tif 000020
【図１５】
0003757884.tif 000021
【図１６】
0003757884.tif 000022
【図１７】
0003757884.tif 000023
【図１８】
0003757884.tif 000024
【図１９】
0003757884.tif 000025
【図２０】
0003757884.tif 000026
【図２１】
0003757884.tif 000027
【図２２】
0003757884.tif 000028
【図２３】
0003757884.tif 000029
【図２４】
0003757884.tif 000030
【図２５】
0003757884.tif 000031
【図２６】
0003757884.tif 000032
【図２７】
0003757884.tif 000033
【図２８】
0003757884.tif 000034
【図２９】
0003757884.tif 000035