JP2007148941A - 除算器および除算器を用いた画像処理装置 - Google Patents
除算器および除算器を用いた画像処理装置 Download PDFInfo
- Publication number
- JP2007148941A JP2007148941A JP2005344773A JP2005344773A JP2007148941A JP 2007148941 A JP2007148941 A JP 2007148941A JP 2005344773 A JP2005344773 A JP 2005344773A JP 2005344773 A JP2005344773 A JP 2005344773A JP 2007148941 A JP2007148941 A JP 2007148941A
- Authority
- JP
- Japan
- Prior art keywords
- divisor
- divider
- value
- subtraction
- table data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Image Processing (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
【課題】高速で且つ誤差の少ない除算器及び前記除算器を用いた高速で且つ画像レベルの変化の小さい画像処理装置を提供する
【解決手段】前記N、M及び加算するか減算するかの選択をテーブルデータに基づいて決定した上で、被除数をNビットシフタ1によってNビットシフトし、またMビットシフタ2によってMビットシフトし、Nビットシフトした結果にMビットシフトした結果を加算した値か被除数がNビットシフトされた結果からMビットシフトされた結果を減算した値か前記決定に基づき選択して商として出力する。
【選択図】 図1
【解決手段】前記N、M及び加算するか減算するかの選択をテーブルデータに基づいて決定した上で、被除数をNビットシフタ1によってNビットシフトし、またMビットシフタ2によってMビットシフトし、Nビットシフトした結果にMビットシフトした結果を加算した値か被除数がNビットシフトされた結果からMビットシフトされた結果を減算した値か前記決定に基づき選択して商として出力する。
【選択図】 図1
Description
本発明は、除算器および除算器を用いた画像形成装置に関するものであり、特に画像処理におけるコンボリューション演算に適用して好適なものである。
デジタル画像に対してぼかし、エッジ強調、反転等の画像処理をする際に行うデジタルフィルタ処理は、デジタル画像を構成する最小単位であるピクセルとその周辺のピクセルからなるピクセル群に対し、必要な画像処理に応じて設計されたコンボリューションカーネルを掛け合わせ、行列演算を行う処理と、もとの画像輝度レベルとフィルタ処理後の画像輝度レベルが変化しないようにカーネルの総和値で割り、算出された値を処理後の値とする処理と、前記演算をスキャンさせて全てのピクセルに対して行う処理とから成る。
前記デジタルフィルタ処理は、数1で表す数式で表すことができ、数1中のAは元の画像のピクセル群、Hはコンボリューションカーネル、Bは画像処理後のピクセル群を表している。
前記演算を実現するためには、カーネルの総和値で割るという除算の工程が必要であり、そのための除算器が必要となる。
除算器で用いられる除算方法としては、例えば除数をB、被除数をAとし、除算結果をYとしてA/Bを算出する場合、被除数Aから除数Bを引き、その余りCをレジスタに格納して再度余りCから除数Bを引く動作を余りCが除数Bより小さな値になるまで繰り返す、という商が整数にならない場合に、その整数部分を改めて商と定め、商と除数との積を被除数から引いたもののことを剰余と定めている除算の性質そのものを利用した方法があり、具体的には、図8で示した構成の除算器がある。初期状態ではマルチプレクサ31は被除数32側を選択している。またカウンター33は0で初期化されている。1クロック送ると第1DEF34がその時のデータ(被除数値)をラッチし出力する。また第2DEF35はマルチプレクサ31の選択を減算器36側に切り替え、減算器36の出力を第1DEF34とコンパレータ37に送出する。第1DEF34の入力には減算器36の結果がフィードバックされるので次のクロックで再びラッチされその出力から除数を減算することになる。一方このクロックはカウンター33にカウントされていく。さてクロック送信により減算は繰り返され、結果がマイナスになったところでコンパレータ37がHからLになりANDでゲートされカウンター33の値は保持される。上記コンパレータ37の出力がLになったときにカウンター値を読むことで商が導出される。
除算器で用いられる除算方法としては、例えば除数をB、被除数をAとし、除算結果をYとしてA/Bを算出する場合、被除数Aから除数Bを引き、その余りCをレジスタに格納して再度余りCから除数Bを引く動作を余りCが除数Bより小さな値になるまで繰り返す、という商が整数にならない場合に、その整数部分を改めて商と定め、商と除数との積を被除数から引いたもののことを剰余と定めている除算の性質そのものを利用した方法があり、具体的には、図8で示した構成の除算器がある。初期状態ではマルチプレクサ31は被除数32側を選択している。またカウンター33は0で初期化されている。1クロック送ると第1DEF34がその時のデータ(被除数値)をラッチし出力する。また第2DEF35はマルチプレクサ31の選択を減算器36側に切り替え、減算器36の出力を第1DEF34とコンパレータ37に送出する。第1DEF34の入力には減算器36の結果がフィードバックされるので次のクロックで再びラッチされその出力から除数を減算することになる。一方このクロックはカウンター33にカウントされていく。さてクロック送信により減算は繰り返され、結果がマイナスになったところでコンパレータ37がHからLになりANDでゲートされカウンター33の値は保持される。上記コンパレータ37の出力がLになったときにカウンター値を読むことで商が導出される。
また、別の除算方法としては、除数を2のN乗(Nは自然数)で近似した時の被除数のNビットシフト結果に基づいて除算結果を算出するという2のN乗(Nは自然数)は右にNビットシフトすれば商が求まるというバイナリーデータの性質を利用した方法があり、具体的には、図9で示した構成の除算器がある。除数を2のN乗(Nは自然数)で近似し、Nビットシフタ41によってNビットシフトすることにより商を求めることができる。
さらに別の除算方法としては、除数を2のN乗(Nは自然数)で近似した時の被除数のNビットシフト結果を被除数の2Nビットシフトした結果に基づいて補正することによって商を求める方法が特許文献1に開示されている。
しかしながら、前記除数Bを繰り返し引く方法は、被除数Aが除数Bと比べて大きくなればなるほど除数サイクル数が大きくなるとともに、被除数Aと除数Bによっては除数サイクル数が安定して得られず、安定して高速な演算を行うことができないため、特にリアルタイムな画像処理を必要とされるアプリケーションに適用することは困難である。
また、前記除数を2のN乗(Nは自然数)で近似してNビットシフトする方法は、高速な演算は可能であるものの、除数を2のN乗(Nは自然数)に近似することにより実際の商と誤差が生じるという問題があり、誤差を生じさせないためには除数を2のN乗(Nは自然数)にあわせる必要があり、画像処理のコンボリューション演算に用いる場合にはカーネルの設計に制約が生じるという問題があった。
さらに、前記特許文献1に開示されている方法は、除数を2のN乗(Nは自然数)で近似してNビットシフトした値を2Nビットシフトした値で補正するため、前記単純にNビットシフトするだけの方法よりも実際の商との誤差は小さくなるものの、やはり除数を2のN乗に近似させてNを決定した上でNと2Nを使用するため補正を行う方法の柔軟性に乏しく、また補正式を作成する際にも近似式を用いているため、やはり実際の商と誤差が生じるという問題があった。
また、前記除数を2のN乗(Nは自然数)で近似してNビットシフトする方法は、高速な演算は可能であるものの、除数を2のN乗(Nは自然数)に近似することにより実際の商と誤差が生じるという問題があり、誤差を生じさせないためには除数を2のN乗(Nは自然数)にあわせる必要があり、画像処理のコンボリューション演算に用いる場合にはカーネルの設計に制約が生じるという問題があった。
さらに、前記特許文献1に開示されている方法は、除数を2のN乗(Nは自然数)で近似してNビットシフトした値を2Nビットシフトした値で補正するため、前記単純にNビットシフトするだけの方法よりも実際の商との誤差は小さくなるものの、やはり除数を2のN乗に近似させてNを決定した上でNと2Nを使用するため補正を行う方法の柔軟性に乏しく、また補正式を作成する際にも近似式を用いているため、やはり実際の商と誤差が生じるという問題があった。
従って、本発明はかかる従来技術の問題に鑑み、高速で且つ誤差の少ない除算器及び前記除算器を用いた高速で且つ画像レベルの変化の小さい画像処理装置を提供することを目的とする。
上記課題を解決するため本発明においては、
被除数をNビットシフトしてNビットシフトした結果を得る第一のビットシフト手段と、被除数をMビットシフトしてMビットシフトした結果を得る第二のビットシフト手段と、前記Nビットシフトした結果とMビットシフトした結果を加算するか減算するかを選択する選択手段とを備え、前記選択手段によって選択した結果に応じて加算または減算を行うことにより商を求めることを特徴とする。ここで、N及びMは、除数に応じて決定される値であり、自然数である(以降もN及びMは自然数を表すものとする)。
このことにより、Nビットシフト、Mビットシフト及び前記結果を加算か減算かすることを組み合わせることにより、高速で且つ小さい誤差で除算を行うことができる。
被除数をNビットシフトしてNビットシフトした結果を得る第一のビットシフト手段と、被除数をMビットシフトしてMビットシフトした結果を得る第二のビットシフト手段と、前記Nビットシフトした結果とMビットシフトした結果を加算するか減算するかを選択する選択手段とを備え、前記選択手段によって選択した結果に応じて加算または減算を行うことにより商を求めることを特徴とする。ここで、N及びMは、除数に応じて決定される値であり、自然数である(以降もN及びMは自然数を表すものとする)。
このことにより、Nビットシフト、Mビットシフト及び前記結果を加算か減算かすることを組み合わせることにより、高速で且つ小さい誤差で除算を行うことができる。
さらに、前記N、M及び加算するか減算するかの選択をテーブルデータに基づいて決定することによって、N、M及び加算するか減算するかをより迅速に決定することができ、さらなる高速化をすることができる。
また、除数を下記(1)式又は(2)式で表すことができるようなN及びMを決定し、数式(1)を利用してN及びMを決定した場合には前記選択手段は加算を選択し、数式(2)を利用してN及びMを決定した場合には前記選択手段は減算を選択するように作られたテーブルデータを用いることを特徴とすることによって、N、M及び加算するか減算するかの選択の組み合わせでより多くの除数を表現することのできるテーブルデータを作成することができるため、より小さい誤差の除算結果を得ることができる。
除数=2M/(2(M−N)+1) ・・・(1)
除数=2M/(2(M−N)−1) ・・・(2)
除数=2M/(2(M−N)+1) ・・・(1)
除数=2M/(2(M−N)−1) ・・・(2)
ここで、除数Jが(2/3)×2N≦J<2Nであり、且つ1≦M−Nである場合は前記(1)式を用いてN、Mを決定し、除数Jが2N≦J<(4/3)×2Nであり、且つ2<M−Nである場合は前記(2)式を用いてN、Mを決定することにより、必要な除数範囲を網羅する最小の大きさのテーブルを作成することができる。つまり、最小数のN、M及び加算か減算かの選択の組み合わせで、最大数の除数を表現することができるテーブルデータを利用することができるようになるため、さらなる高速化が可能となる。
また、処理前の画像にフィルタカーネルを掛け合わせ、行列演算を行い、もとの画像レベルと画像レベルが変化しないようにフィルタカーネルの総和値で割るコンボリューション演算を用いる画像処理装置において、フィルタカーネルの総和値で割る除算の手段に前記の除算器を用いることを特徴とする。このことにより、本発明における画像処理装置は、除算を高速で行うことができるため、リアルタイムな画像処理を必要とされるアプリケーションにも適用することができ、且つ除算における誤差が小さいために画像レベルの変化の小さい画像処理を行うことができる。
さらに、総和値をテーブルの除数に存在している数値になるようにフィルタカーネルを設計し、このフィルタカーネルを前記画像処理装置に用いることによって、除算の際の誤差がなくなるため、画像レベルの変化のない画像処理を行うことができる。
本発明によれば、ビットシフトを利用することによって計算を高速化することができ、さらに2種類のビットシフトの結果を加算または減算するという手法を行うことによって誤差の小さい除算結果を得ることができる。
従って、本発明により、高速で且つ誤差の小さい除算器及び前記除算器を用いた高速で且つ画像レベルの変化の小さい画像処理装置を提供することができる。
従って、本発明により、高速で且つ誤差の小さい除算器及び前記除算器を用いた高速で且つ画像レベルの変化の小さい画像処理装置を提供することができる。
以下、図面を参照して本発明の好適な実施例を例示的に詳しく説明する。但しこの実施例に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、この発明の範囲をそれに限定する趣旨ではなく、単なる説明例に過ぎない。
図1は、被除数をNビットシフトするNビットシフタと、被除数をMビットシフトするMビットシフタと、前記NビットシフタとMビットシフタの結果を加算するか減算するかを選択する選択フラグとを備えた除算器である。
除算を行うに際して除数Jが決定されると、除数に応じてNビットシフタ1の値N、Mビットシフタ2の値M及び加算するか減算するかを選択する選択フラグ3の値S(加算の場合は1、減算の場合は0)がそれぞれセットされる。被除数はNビットシフタ1によってNビットシフトされ、またMビットシフタ2によってMビットシフトされる。そして、被除数がNビットシフトされた結果にMビットシフトされた結果を加算した値が2入力マルチプレクサ4の一方4aに入力され、被除数がNビットシフトされた結果からMビットシフトされた結果を減算した値が2入力マルチプレクサの他方4bに入力される。マルチプレクサ4では、選択フラグ3の値Sが1の場合は前記加算した値を、選択フラグSの値が0の場合は前記減算した値を選択して商として出力する。
このような除算器を用いることにより、高速で且つ誤差の少ない除算を行うことができる。
ここで、除数に応じてセットされるNビットシフタ1の値N、Mビットシフタ2の値M及び加算するか減算するかを選択する選択フラグSの値は、例えば後述するようなテーブルデータを使用してもいいし、除数に応じてN、M、Sを自動的に決定する計算プログラムを使用してもよく、除数に応じてN、M、Sの値が決定できる方法であれば何でもよい。
除算を行うに際して除数Jが決定されると、除数に応じてNビットシフタ1の値N、Mビットシフタ2の値M及び加算するか減算するかを選択する選択フラグ3の値S(加算の場合は1、減算の場合は0)がそれぞれセットされる。被除数はNビットシフタ1によってNビットシフトされ、またMビットシフタ2によってMビットシフトされる。そして、被除数がNビットシフトされた結果にMビットシフトされた結果を加算した値が2入力マルチプレクサ4の一方4aに入力され、被除数がNビットシフトされた結果からMビットシフトされた結果を減算した値が2入力マルチプレクサの他方4bに入力される。マルチプレクサ4では、選択フラグ3の値Sが1の場合は前記加算した値を、選択フラグSの値が0の場合は前記減算した値を選択して商として出力する。
このような除算器を用いることにより、高速で且つ誤差の少ない除算を行うことができる。
ここで、除数に応じてセットされるNビットシフタ1の値N、Mビットシフタ2の値M及び加算するか減算するかを選択する選択フラグSの値は、例えば後述するようなテーブルデータを使用してもいいし、除数に応じてN、M、Sを自動的に決定する計算プログラムを使用してもよく、除数に応じてN、M、Sの値が決定できる方法であれば何でもよい。
図2は、被除数をNビットシフトするNビットシフタと、被除数をMビットシフトするMビットシフタと、前記NビットシフタとMビットシフタの結果を加算するか減算するかを選択する選択フラグと、テーブルデータ参照器を備えた除算器である。
除数Jがテーブルデータ参照器15に入力されると、テーブルデータ参照器15はあらかじめ用意しておいたテーブルデータと除数Jを比較し、Nビットシフタ11の値N、Mビットシフタ12の値M及び加算するか減算するかを選択する選択フラグ13の値S(加算の場合は1、減算の場合は0)を決定する。前記決定されたN、M、Sを利用して、被除数はNビットシフタ11によってNビットシフトされ、またMビットシフタ12によってMビットシフトされる。そして、被除数がNビットシフトされた結果にMビットシフトされた結果を加算した値が2入力マルチプレクサ14の一方14aに入力され、被除数がNビットシフトされた結果からMビットシフトされた結果を減算した値が2入力マルチプレクサの他方14bに入力される。マルチプレクサ14では、選択フラグ13の値Sが1の場合は前記加算した値を、選択フラグSの値が0の場合は前記減算した値を選択して商として出力する。
このように除算を行うことにより実施例1と同じく高速で且つ誤差の少ない除算を行うことができる。
除数Jがテーブルデータ参照器15に入力されると、テーブルデータ参照器15はあらかじめ用意しておいたテーブルデータと除数Jを比較し、Nビットシフタ11の値N、Mビットシフタ12の値M及び加算するか減算するかを選択する選択フラグ13の値S(加算の場合は1、減算の場合は0)を決定する。前記決定されたN、M、Sを利用して、被除数はNビットシフタ11によってNビットシフトされ、またMビットシフタ12によってMビットシフトされる。そして、被除数がNビットシフトされた結果にMビットシフトされた結果を加算した値が2入力マルチプレクサ14の一方14aに入力され、被除数がNビットシフトされた結果からMビットシフトされた結果を減算した値が2入力マルチプレクサの他方14bに入力される。マルチプレクサ14では、選択フラグ13の値Sが1の場合は前記加算した値を、選択フラグSの値が0の場合は前記減算した値を選択して商として出力する。
このように除算を行うことにより実施例1と同じく高速で且つ誤差の少ない除算を行うことができる。
前記テーブルデータ参照器15が参照するテーブルデータには図3に示すテーブルデータを利用した。図3(A)はテーブルデータ参照器15が参照するテーブルデータ、図3(B)はテーブルデータをグラフ化した図である。テーブルデータは除数の小さい順番に番号を付けた。図3(A)は番号毎の除数、N、M、Sをテーブルデータ化している。例えば番号1では除数が43、N=6、M=7、S=1であることを意味している。また、図3(B)は縦軸は除数、横軸はテーブルデータの番号を表している。
ここで、除数Jがテーブルデータ参照器15にセットされると、参照器内では除数Jとテーブルデータ内の除数とをテーブルデータの番号の小さい除数から順に比較していく。テーブルデータ内の除数≧JとなるテーブルデータのN、M、Sを除数JにおけるN、M、Sと決定する。例えば除数Jが100であるときは、図3(A)のテーブルデータにおける番号15において102>J(=100)となるため、テーブルデータの番号15を参照し、N=7、M=9、S=1と決定することができる。
また、図3(B)のグラフから非常に細かい除数の間隔でテーブルデータが作成されていることもわかる。
ここで、除数Jがテーブルデータ参照器15にセットされると、参照器内では除数Jとテーブルデータ内の除数とをテーブルデータの番号の小さい除数から順に比較していく。テーブルデータ内の除数≧JとなるテーブルデータのN、M、Sを除数JにおけるN、M、Sと決定する。例えば除数Jが100であるときは、図3(A)のテーブルデータにおける番号15において102>J(=100)となるため、テーブルデータの番号15を参照し、N=7、M=9、S=1と決定することができる。
また、図3(B)のグラフから非常に細かい除数の間隔でテーブルデータが作成されていることもわかる。
また、図3(A)に示したテーブルデータは以下の方法で作成した。
まず、S=1のときの除数JとM、Nを下記(1)式によって決定し、図4にNをN=6、7、8及び9で固定したときの(1)式で求めた除数JとMの関係のグラフを示した。縦軸は除数J、横軸はMを表している。グラフから各固定したNの値において、Mの値が小さいときはMの値が大きくなると除数も大きくなるが、Mの値が10〜15を越えて大きくなるとMの値を大きくしても除数はほとんど変わらないことがわかる。さらに、Nの値が大きく、Mの値が小さい領域においては、Mの値を1変化させるだけでも除数が大きく変化してしまう領域も存在することもわかる。
除数J=2M/(2(M−N)+1) ・・・(1)
まず、S=1のときの除数JとM、Nを下記(1)式によって決定し、図4にNをN=6、7、8及び9で固定したときの(1)式で求めた除数JとMの関係のグラフを示した。縦軸は除数J、横軸はMを表している。グラフから各固定したNの値において、Mの値が小さいときはMの値が大きくなると除数も大きくなるが、Mの値が10〜15を越えて大きくなるとMの値を大きくしても除数はほとんど変わらないことがわかる。さらに、Nの値が大きく、Mの値が小さい領域においては、Mの値を1変化させるだけでも除数が大きく変化してしまう領域も存在することもわかる。
除数J=2M/(2(M−N)+1) ・・・(1)
次に、S=0のときの除数JとM、Nを下記(2)式によって決定し、図5にNをN=6、7、8及び9で固定したときの(2)式で求めた除数JとMの関係のグラフを示した。縦軸は除数J、横軸はMを表している。グラフから各固定したNの値において、Mの値が小さいときはMの値が大きくなると除数は小さくなるが、Mの値が10〜15を越えて大きくなるとMの値を大きくしても除数はほとんど変わらないことがわかる。さらに、Nの値が大きく、Mの値が小さい領域においては、Mの値を1変化させるだけでも除数が大きく変化してしまう領域も存在することもわかる。
除数=2M/(2(M−N)−1) ・・・(2)
除数=2M/(2(M−N)−1) ・・・(2)
前記(1)式を用いる方法と前記(2)式を用いる方法のいずれの方法でもテーブルデータを作成することは可能であるが、前記の通り(1)式、(2)式いずれの方法もMの値を変えても除数がほとんど変わらない領域が存在してしまいテーブルデータが必要以上に大きくなるということから除算の高速化について、Mの値を1変化させるだけでも除数が大きく変化してしまう領域が存在することから除算の誤差を小さくするということについて、さらによいテーブルデータを作成するため、前記(1)式を用いる方法と前記(2)を組み合わせた。
図6は図4と図5を重ね合わせたグラフであり、図7は図6においてテーブルデータに使用する線を強調したグラフである。図6、図7いずれも縦軸は除数J、横軸はMの値を表している。
図6から、Mの値を変えても除数がほとんど変わらない領域21は、同じNの値における加算((1)式を利用)ラインと減算((2)式を利用)ラインではほとんど一致しており、加算ラインは領域21へ除数の小さいほうから、減算ラインは領域21へ除数の大きいほうから近づく。
また、加算ラインと減算ラインそれぞれの前記Mの値を1変化させるだけでも除数が大きく変化してしまう領域は、N=Naにおける加算ラインとNa−1における減算ラインが交差する点22が存在することがわかる。
図6から、Mの値を変えても除数がほとんど変わらない領域21は、同じNの値における加算((1)式を利用)ラインと減算((2)式を利用)ラインではほとんど一致しており、加算ラインは領域21へ除数の小さいほうから、減算ラインは領域21へ除数の大きいほうから近づく。
また、加算ラインと減算ラインそれぞれの前記Mの値を1変化させるだけでも除数が大きく変化してしまう領域は、N=Naにおける加算ラインとNa−1における減算ラインが交差する点22が存在することがわかる。
そこで、除数を徐々に大きくする場合を考えると、使用するラインを領域21近傍ではNの値を変えずに加算ラインから減算ラインへ切り替え、交差する点22ではNの値を1だけ大きくした上で減算ラインから加算ラインに切り替えることによってテーブルデータを必要以上に大きくすることなく、またMの変化に対する除数の変化を最少に抑えることができるため、最良のテーブルデータを作成することができる。このように切り替えた場合、使用するラインは図7で強調した線23となる。
言い換えると、除数が領域21以下であり且つ交差する点22よりも大きい場合は加算ラインを使用し、除数が交差する点22以下であり且つ領域21よりも大きい場合は減算ラインを使用することによって、最良のテーブルデータを作成することができる。
このことをさらに言い換えると、以下のようになる。
除数Jが
(2/3)×2N≦J<2Nであり、且つ1≦M−N ・・・(3)
である場合は前記(1)式を用いてN、Mを決定し、
除数Jが
2N≦J<(4/3)×2Nであり、且つ2<M−N ・・・(4)
である場合は前記(2)式を用いてN、Mを決定することにより最良のテーブルデータを作成することができる。
ここで、(3)式及び(4)式は例えばN=7のケースであれば、(3)式は図6における除数が85付近の交差する点22から除数が128付近の領域21まではN=7((1)式使用)のグラフ上であることを、(4)式は除数128付近の領域21から除数171付近の交差する点22まではN=7((2)式使用)のグラフ上であることを意味し、図7をよくあらわしているといえる。
言い換えると、除数が領域21以下であり且つ交差する点22よりも大きい場合は加算ラインを使用し、除数が交差する点22以下であり且つ領域21よりも大きい場合は減算ラインを使用することによって、最良のテーブルデータを作成することができる。
このことをさらに言い換えると、以下のようになる。
除数Jが
(2/3)×2N≦J<2Nであり、且つ1≦M−N ・・・(3)
である場合は前記(1)式を用いてN、Mを決定し、
除数Jが
2N≦J<(4/3)×2Nであり、且つ2<M−N ・・・(4)
である場合は前記(2)式を用いてN、Mを決定することにより最良のテーブルデータを作成することができる。
ここで、(3)式及び(4)式は例えばN=7のケースであれば、(3)式は図6における除数が85付近の交差する点22から除数が128付近の領域21まではN=7((1)式使用)のグラフ上であることを、(4)式は除数128付近の領域21から除数171付近の交差する点22まではN=7((2)式使用)のグラフ上であることを意味し、図7をよくあらわしているといえる。
なお、この条件は以下のようにして求めた。
まず加算ラインを使用する範囲を求める。図6及び図7から明らかであるようにN=Naにおける加算ラインは、Mを小さくしていくとN=Na−1における減算ラインと交点22で交わり、Mを大きくしていくとN=Naにおける減算ラインと領域21で近づく。N=Naにおける加算ラインを使用する範囲は該交点22以上であり、且つ該領域21より小さいことが必要である。
まず、N=Naにおける加算ラインが該交点22以上である条件を求める。N=Naにおける加算ライン及びN=Na−1における減算ラインはそれぞれ(5)式、(6)式で表すことができるため、N=Naにおける加算ラインが該交点22以上である条件は数2で導くことができる。
2M/(2(M−N)+1) ・・・(5)
2M/(2(M−N+1)−1) ・・・(6)
次にN=Naにおける加算ラインが領域21より小さい条件を求める。前記の通り、同じNの値における加算ラインと減算ラインではほとんど一致しており、Nが大きくなればなるほど近づく。従って、N=Naにおける加算ラインが近づく該領域21は数3で求まる。
以上より加算ラインを使用する範囲が求まる。
まず加算ラインを使用する範囲を求める。図6及び図7から明らかであるようにN=Naにおける加算ラインは、Mを小さくしていくとN=Na−1における減算ラインと交点22で交わり、Mを大きくしていくとN=Naにおける減算ラインと領域21で近づく。N=Naにおける加算ラインを使用する範囲は該交点22以上であり、且つ該領域21より小さいことが必要である。
まず、N=Naにおける加算ラインが該交点22以上である条件を求める。N=Naにおける加算ライン及びN=Na−1における減算ラインはそれぞれ(5)式、(6)式で表すことができるため、N=Naにおける加算ラインが該交点22以上である条件は数2で導くことができる。
2M/(2(M−N)+1) ・・・(5)
2M/(2(M−N+1)−1) ・・・(6)
次に、減算ラインを使用する範囲を求める。図6及び図7から明らかであるようにN=Naにおける減算ラインは、Mを小さくしていくとN=Na+1における加算ラインと交点22で交わり、Mを大きくしていくとN=Naにおける加算ラインと領域21で近づく。N=Naにおける減算ラインを使用する範囲は該領域21以上であり、且つ該交点22より小さいことが必要である。
まず、N=Naにおける減算ラインが該交点22より小さい条件を求める。N=Naにおける減算ライン及びN=Na+1における加算ラインはそれぞれ(7)式、(8)式で表すことができるため、N=Naにおける加算ラインが該交点22より小さい条件は数4で導くことができる。
2M/(2(M−N)−1) ・・・(7)
2M/(2(M−N−1)+1) ・・・(8)
次にN=Naにおける加算ラインが領域21以上である条件を求める。前記の通り、同じNの値における加算ラインと減算ラインではほとんど一致しており、Nが大きくなればなるほど近づく。従って、N=Naにおける加算ラインが近づく該領域21は数5で求まる。
以上より減算ラインを使用する範囲が求まる。
まず、N=Naにおける減算ラインが該交点22より小さい条件を求める。N=Naにおける減算ライン及びN=Na+1における加算ラインはそれぞれ(7)式、(8)式で表すことができるため、N=Naにおける加算ラインが該交点22より小さい条件は数4で導くことができる。
2M/(2(M−N)−1) ・・・(7)
2M/(2(M−N−1)+1) ・・・(8)
従って、例えば2の6乗である64と2の7乗である128の間の数が除数である場合、図2に示した除数を2のN乗に近似する方法では64か128に近似するため、大きな誤差がでることがあったが、本発明の除算器を用いると64、128の他に65、66、68、73、85、102、114の7つの新たに近似することができる数字が増え、誤差を小さくすることができる。
また、本発明の実施例2の除算器を画像処理装置において処理前の画像にフィルタカーネルを掛け合わせ、行列演算を行い、もとの画像レベルと画像レベルが変化しないようにフィルタカーネルの総和値で割るコンボリューション演算の手段に用いた。この画像処理装置は、除算を高速で行うことができるため、リアルタイムな画像処理を必要とされるアプリケーションにも適用することができ、且つ除算における誤差が小さいために画像レベルの変化の小さい画像処理を行うことができた。
また、本発明の除算器を画像処理装置に用いた場合、前記のように例えば64と128の間であれば近似することができる数字が増えるために従来と比べると誤差は小さくなるが、やはり誤差は生じる。しかし、この誤差はコンボリューション演算の最後の除算に用いる場合においては、商の誤差自体は発生するものの、被除数の値によらず本発明の除算器で得られる商と真の商の誤差は一定の非となるので生成される画像事態のレベル(明るさ)が若干変わるものの、画像自体が歪むことはなく、許容できる範囲の誤差である。
また、本発明の除算器を画像処理装置に用いた場合、前記のように例えば64と128の間であれば近似することができる数字が増えるために従来と比べると誤差は小さくなるが、やはり誤差は生じる。しかし、この誤差はコンボリューション演算の最後の除算に用いる場合においては、商の誤差自体は発生するものの、被除数の値によらず本発明の除算器で得られる商と真の商の誤差は一定の非となるので生成される画像事態のレベル(明るさ)が若干変わるものの、画像自体が歪むことはなく、許容できる範囲の誤差である。
さらに、総和値をテーブルの除数に存在している数値になるようにフィルタカーネルを設計し、このフィルタカーネルを前記画像処理装置に用いた。除算の際の誤差がなくなるため、前記許容範囲の誤差の画像レベルの変化もなくなった。
また、例えば総和値が64と128の間のフィルタカーネルを設計する際、従来であれば64か128に合わせるしかなかったが、本発明を用いることにより前記のようにさらに7箇所の設定できる範囲が増加し、フィルタカーネルの設計の制約が緩和され、従ってより多彩なフィルタカーネルを設計することができ、ひいてはより多彩な画像処理をできる画像処理装置ができた。
また、例えば総和値が64と128の間のフィルタカーネルを設計する際、従来であれば64か128に合わせるしかなかったが、本発明を用いることにより前記のようにさらに7箇所の設定できる範囲が増加し、フィルタカーネルの設計の制約が緩和され、従ってより多彩なフィルタカーネルを設計することができ、ひいてはより多彩な画像処理をできる画像処理装置ができた。
高速で且つ誤差の少ない除算器を用いることにより、高速で且つ画像レベルの変化の小さい画像処理装置を提供することができる。また、フィルタカーネルの設計の制約が緩和されるため、より多彩な画像処理を行うことのできる画像処理装置を提供することができる。
1、11 Nビットシフタ
2、12 Mビットシフタ
3、12 選択フラグ
4、14 2入力マルチプレクサ
15 テーブルデータ参照器
2、12 Mビットシフタ
3、12 選択フラグ
4、14 2入力マルチプレクサ
15 テーブルデータ参照器
Claims (7)
- 被除数をNビットシフトしてNビットシフトした結果を得る第一のビットシフト手段と、
被除数をMビットシフトしてMビットシフトした結果を得る第二のビットシフト手段と、
前記Nビットシフトした結果とMビットシフトした結果を加算するか減算するかを選択する選択手段とを備え、
前記選択手段によって選択した結果に応じて加算または減算を行うことにより商を求めることを特徴とする除算器。
(N及びMは、除数に応じて決定される値であり、自然数である。) - 前記N、M及び加算するか減算するかの選択をテーブルデータに基づいて決定することを特徴とする請求項1記載の除算器。
- 除数を下記(1)式又は(2)式で表すことができるようなN及びMを決定し、
数式(1)を利用してN及びMを決定した場合には前記選択手段は加算を選択し、数式(2)を利用してN及びMを決定した場合には前記選択手段は減算を選択するように作られたテーブルデータを用いることを特徴とする請求項2記載の除算器。
除数=2M/(2(M−N)+1) ・・・(1)
除数=2M/(2(M−N)−1) ・・・(2) - 除数Jが
(2/3)×2N≦J<2N
であり、且つ
1≦M−N
である場合は前記(1)式を用いてN、Mを決定し、
除数Jが
2N≦J<(4/3)×2N
であり、且つ
2<M−N
である場合は前記(2)式を用いてN、Mを決定することにより、最小数のN、M及び加算か減算かの選択の組み合わせで、最大数の除数を表現することができるテーブルデータを用いることを特徴とする請求項3記載の除算器。 - 処理前の画像にフィルタカーネルを掛け合わせ、行列演算を行い、もとの画像レベルと画像レベルが変化しないようにフィルタカーネルの総和値で割るコンボリューション演算を用いる画像処理装置において、
フィルタカーネルの総和値で割る除算の手段に請求項1〜4いずれかに記載の除算器を用いることを特徴とする画像処理装置。 - 総和値を請求項2、3又は4記載のテーブルの除数に存在している数値になるように設計したフィルタカーネル。
- 請求項6記載のフィルタカーネルを用いることを特徴とする請求項5記載の画像処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005344773A JP2007148941A (ja) | 2005-11-29 | 2005-11-29 | 除算器および除算器を用いた画像処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005344773A JP2007148941A (ja) | 2005-11-29 | 2005-11-29 | 除算器および除算器を用いた画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007148941A true JP2007148941A (ja) | 2007-06-14 |
Family
ID=38210268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005344773A Pending JP2007148941A (ja) | 2005-11-29 | 2005-11-29 | 除算器および除算器を用いた画像処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007148941A (ja) |
-
2005
- 2005-11-29 JP JP2005344773A patent/JP2007148941A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3584053B2 (ja) | 複合オペランド内の多ビット要素を選択するためのマスク | |
JPH06222908A (ja) | 多数の多ビット要素を含む複合オペランドに対して並列的に算術演算を実行する方法 | |
Low et al. | A memory-efficient tables-and-additions method for accurate computation of elementary functions | |
US20200117426A1 (en) | Efficient modulo calculation | |
Lee et al. | Hierarchical segmentation for hardware function evaluation | |
CN106126190B (zh) | 部分余数/除数表拆分实现 | |
EP2940576B1 (en) | Approximating functions | |
JP2005018759A (ja) | 2の浮動小数点数乗の概算を実施するための方法および装置 | |
JP5229314B2 (ja) | Cordic演算回路及び方法 | |
JP5397061B2 (ja) | 演算処理装置、その制御方法および演算処理プログラム | |
US10230376B2 (en) | Apparatus and method for performing division | |
EP2043356A2 (en) | Signal processing apparatus and signal processing method performing gamma correction | |
JP2007148941A (ja) | 除算器および除算器を用いた画像処理装置 | |
JP6064435B2 (ja) | 演算回路、演算処理装置、及び除算方法 | |
CN116755658A (zh) | 一种基于巴雷特约减的模乘器及约减计算方法 | |
US20220334799A1 (en) | Method of Performing Hardware Efficient Unbiased Rounding of a Number | |
US20020165890A1 (en) | Method and apparatus for linear interpolation using gradient tables | |
JP4933405B2 (ja) | データ変換装置及びその制御方法 | |
US20070230808A1 (en) | Image processing apparatus, image processing method, medium storing program, and computer data signal | |
JP2003209715A (ja) | データ変換方法、データ変換回路及びデータ変換プログラム | |
JP6262621B2 (ja) | 画像の拡大縮小処理装置および画像の拡大縮小処理方法 | |
CN116227507B (zh) | 一种用于进行双线性插值处理的运算装置 | |
JP4658821B2 (ja) | ベジェ曲線生成回路 | |
KR20200019670A (ko) | 한계 확인 | |
TWI753668B (zh) | 資訊處理裝置、電腦程式、記錄媒體及資訊處理方法 |