(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-20
(45)【発行日】2023-10-30
(54)【発明の名称】計算装置、複素数の絶対値の計算方法及びプログラム
(51)【国際特許分類】
G06F 17/17 20060101AFI20231023BHJP
G06F 17/10 20060101ALI20231023BHJP
【FI】
G06F17/17
G06F17/10 F
(21)【出願番号】P 2019198315
(22)【出願日】2019-10-31
【審査請求日】2022-08-03
【新規性喪失の例外の表示】特許法第30条第2項適用 発行者名:一般社団法人映像情報メディア学会、刊行物名:映像情報メディア学会技術報告 VOL.43,NO.26、発行年月日:2019年8月19日 集会名:サマーセミナー2019「ビジョン技術の今を知り、未来を切り拓く」、主催:公益社団法人精密工学会 画像応用技術専門委員会 共催:一般社団法人映像情報メディア学会 メディア工学研究会、開催日:2019年8月26日
(73)【特許権者】
【識別番号】304027279
【氏名又は名称】国立大学法人 新潟大学
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100175019
【氏名又は名称】白井 健朗
(74)【代理人】
【識別番号】100195648
【氏名又は名称】小林 悠太
(74)【代理人】
【識別番号】100104329
【氏名又は名称】原田 卓治
(74)【代理人】
【識別番号】100132883
【氏名又は名称】森川 泰司
(72)【発明者】
【氏名】村松 正吾
(72)【発明者】
【氏名】山田 寛喜
(72)【発明者】
【氏名】児玉 侑也
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開昭57-201957(JP,A)
【文献】特開平02-170274(JP,A)
【文献】特開平05-248813(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/17
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
与えられた角度の正弦値と余弦値とのうちの一方と計算対象となる複素数の実部との積と、前記角度の正弦値と余弦値とのうちの他方と前記複素数の虚部との積と、の和を計算し、前記角度の正弦値と余弦値とのうちの前記他方と前記複素数の実部との積と、前記角度の正弦値と余弦値とのうちの前記一方と前記複素数の虚部との積と、の差を計算し、更に、前記和の絶対値と前記差の絶対値とを加算する計算処理を、異なる複数の角度のそれぞれについて実行する計算部と、
前記計算部が前記複数の角度のそれぞれについて前記計算処理を実行することにより得られた複数の値のうちの最大値を、前記複素数の絶対値に対応する値と決定する決定部と、を備える、
計算装置。
【請求項2】
前記計算部は、固定小数点演算により、前記複数の角度のそれぞれについて前記計算処理を実行する、
請求項1に記載の計算装置。
【請求項3】
前記複数の角度の正弦値及び余弦値が少なくとも格納された三角比テーブルを記憶する記憶部、を更に備え、
前記計算部は、前記記憶部に記憶された前記三角比テーブルを参照して、前記計算処理を実行する、
請求項1又は2に記載の計算装置。
【請求項4】
前記複数の角度の個数を設定する設定部、を更に備え、
前記計算部は、前記設定部により設定された前記個数の前記複数の角度のそれぞれについて、前記計算処理を実行する、
請求項1から3のいずれか1項に記載の計算装置。
【請求項5】
前記複数の角度のそれぞれは、0からπ/2までの範囲で互いに等しい間隔を空けた角度である、
請求項1から4のいずれか1項に記載の計算装置。
【請求項6】
前記決定部により決定された前記複素数の絶対値に対応する値に基づいて、信号処理を実行する信号処理部と、
前記信号処理部により実行された前記信号処理の結果を示す出力情報を出力する出力部と、を更に備える、
請求項1から5のいずれか1項に記載の計算装置。
【請求項7】
前記信号処理部は、前記信号処理として、観測画像から復元画像を復元する画像復元処理を実行し、
前記出力部は、前記出力情報として、前記復元画像を出力する、
請求項6に記載の計算装置。
【請求項8】
前記信号処理部は、前記画像復元処理において、繰り返しソフト閾値アルゴリズムを用いて前記観測画像から係数ベクトルを推定し、推定された前記係数ベクトルから前記復元画像を復元する、
請求項7に記載の計算装置。
【請求項9】
計算装置が実行する計算方法であって、
与えられた角度の正弦値と余弦値とのうちの一方と計算対象となる複素数の実部との積と、前記角度の正弦値と余弦値とのうちの他方と前記複素数の虚部との積と、の和を計算し、前記角度の正弦値と余弦値とのうちの前記他方と前記複素数の実部との積と、前記角度の正弦値と余弦値とのうちの前記一方と前記複素数の虚部との積と、の差を計算し、更に、前記和の絶対値と前記差の絶対値とを加算する計算処理を、異なる複数の角度のそれぞれについて実行し、
前記複数の角度のそれぞれについて前記計算処理を実行することにより得られた複数の値のうちの最大値を、前記複素数の絶対値に対応する値と決定する、
複素数の絶対値の計算方法。
【請求項10】
コンピュータを、
与えられた角度の正弦値と余弦値とのうちの一方と計算対象となる複素数の実部との積と、前記角度の正弦値と余弦値とのうちの他方と前記複素数の虚部との積と、の和を計算し、前記角度の正弦値と余弦値とのうちの前記他方と前記複素数の実部との積と、前記角度の正弦値と余弦値とのうちの前記一方と前記複素数の虚部との積と、の差を計算し、更に、前記和の絶対値と前記差の絶対値とを加算する計算処理を、異なる複数の角度のそれぞれについて実行する計算部、
前記計算部が前記複数の角度のそれぞれについて前記計算処理を実行することにより得られた複数の値のうちの最大値を、前記複素数の絶対値に対応する値と決定する決定部、として機能させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算装置、複素数の絶対値の計算方法及びプログラムに関する。
【背景技術】
【0002】
画像処理をはじめとする様々な分野において、複素数の信号処理に対する需用がある。例えば特許文献1は、複素数の絶対値を近似により計算する手法を開示している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
複素数の絶対値は、理論的には、実部と虚部の自乗和の平方根を計算することにより得られる。そのため、計算機において複素数の絶対値を計算するためには、自乗及び平方根の計算が必要になる。しかしながら、自乗の計算は、定数乗算に比べて大きな回路規模及び電力消費を必要とする。一方で、平方根の計算は、多項式近似、区分線形近似(折れ線近似)、CORDIC(Coordinate Rotation Digital Computer)等のような近似計算の手法を利用することができるが、いずれも複素数の実部と虚部の自乗和の計算を避けることはできない。そのため、自乗及び平方根の計算を必要とせずに複素数の絶対値を計算することが求められている。
【0005】
本発明は、上記実情に鑑みてなされたものであり、自乗及び平方根の計算を必要とせずに複素数の絶対値を計算することが可能な計算装置、複素数の絶対値の計算方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点に係る計算装置は、
与えられた角度の正弦値と余弦値とのうちの一方と計算対象となる複素数の実部との積と、前記角度の正弦値と余弦値とのうちの他方と前記複素数の虚部との積と、の和を計算し、前記角度の正弦値と余弦値とのうちの前記他方と前記複素数の実部との積と、前記角度の正弦値と余弦値とのうちの前記一方と前記複素数の虚部との積と、の差を計算し、更に、前記和の絶対値と前記差の絶対値とを加算する計算処理を、異なる複数の角度のそれぞれについて実行する計算部と、
前記計算部が前記複数の角度のそれぞれについて前記計算処理を実行することにより得られた複数の値のうちの最大値を、前記複素数の絶対値に対応する値と決定する決定部と、を備える。
【0007】
前記計算部は、固定小数点演算により、前記複数の角度のそれぞれについて前記計算処理を実行しても良い。
【0008】
前記計算装置は、前記複数の角度の正弦値及び余弦値が少なくとも格納された三角比テーブルを記憶する記憶部、を更に備え、
前記計算部は、前記記憶部に記憶された前記三角比テーブルを参照して、前記計算処理を実行しても良い。
【0009】
前記計算装置は、前記複数の角度の個数を設定する設定部、を更に備え、
前記計算部は、前記設定部により設定された前記個数の前記複数の角度のそれぞれについて、前記計算処理を実行しても良い。
【0010】
前記複数の角度のそれぞれは、0からπ/2までの範囲で互いに等しい間隔を空けた角度であっても良い。
【0011】
前記計算装置は、前記決定部により決定された前記複素数の絶対値に対応する値に基づいて、信号処理を実行する信号処理部と、
前記信号処理部により実行された前記信号処理の結果を示す出力情報を出力する出力部と、を更に備えても良い。
【0012】
前記信号処理部は、前記信号処理として、観測画像から復元画像を復元する画像復元処理を実行し、
前記出力部は、前記出力情報として、前記復元画像を出力しても良い。
【0013】
前記信号処理部は、前記画像復元処理において、繰り返しソフト閾値アルゴリズムを用いて前記観測画像から係数ベクトルを推定し、推定された前記係数ベクトルから前記復元画像を復元しても良い。
【0014】
上記目的を達成するため、本発明の第2の観点に係る複素数の絶対値の計算方法は、
計算装置が実行する計算方法であって、
与えられた角度の正弦値と余弦値とのうちの一方と計算対象となる複素数の実部との積と、前記角度の正弦値と余弦値とのうちの他方と前記複素数の虚部との積と、の和を計算し、前記角度の正弦値と余弦値とのうちの前記他方と前記複素数の実部との積と、前記角度の正弦値と余弦値とのうちの前記一方と前記複素数の虚部との積と、の差を計算し、更に、前記和の絶対値と前記差の絶対値とを加算する計算処理を、異なる複数の角度のそれぞれについて実行し、
前記複数の角度のそれぞれについて前記計算処理を実行することにより得られた複数の値のうちの最大値を、前記複素数の絶対値に対応する値と決定する。
【0015】
上記目的を達成するため、本発明の第3の観点に係るプログラムは、
コンピュータを、
与えられた角度の正弦値と余弦値とのうちの一方と計算対象となる複素数の実部との積と、前記角度の正弦値と余弦値とのうちの他方と前記複素数の虚部との積と、の和を計算し、前記角度の正弦値と余弦値とのうちの前記他方と前記複素数の実部との積と、前記角度の正弦値と余弦値とのうちの前記一方と前記複素数の虚部との積と、の差を計算し、更に、前記和の絶対値と前記差の絶対値とを加算する計算処理を、異なる複数の角度のそれぞれについて実行する計算部、
前記計算部が前記複数の角度のそれぞれについて前記計算処理を実行することにより得られた複数の値のうちの最大値を、前記複素数の絶対値に対応する値と決定する決定部、として機能させる。
【発明の効果】
【0016】
本発明によれば、自乗及び平方根の計算を必要とせずに複素数の絶対値を計算することができる。
【図面の簡単な説明】
【0017】
【
図1】本発明の実施形態1に係る計算装置の構成を示すブロック図である。
【
図2】実施形態1に係る計算装置に記憶されている三角比テーブルの例を示す図である。
【
図3】複素数の絶対値と実部及び虚部との理論的な関係を3次元座標により示す図である。
【
図4】実施形態1において複素数の絶対値を計算するために用いられる関数と実部及び虚部との関係を3次元座標により示す図である。
【
図5】実施形態1に係る計算装置により実行される複素数の絶対値の計算処理の流れを示すフローチャートである。
【
図6】本発明の実施形態2に係る計算装置の構成を示すブロック図である。
【
図7】実施形態2に係る計算装置により実行される画像復元処理の概要を示す図である。
【
図8】実施形態2に係る計算装置により実行される画像復元処理の流れを示すフローチャートである。
【
図9】(a)は、複素数の絶対値の近似手法を用いなかった場合におけるソフト閾値関数の出力の絶対値を3次元座標により示す図である。(b)は、実施形態2に係る近似手法を用いた場合におけるソフト閾値関数の出力の絶対値を3次元座標により示す図である。(c)は、(a)と(b)との差分を示す図である。
【
図10】本発明の性能評価におけるシミュレーションの諸元を示す図である。
【
図11】本発明の性能評価における画像復元処理の諸元を示す図である。
【
図12】(a)は、性能評価に用いた原画像の実部を示す図である。(b)は、性能評価に用いた観測画像の実部を示す図である。(c)は、近似手法を用いずに複素数の絶対値を計算した場合における復元画像の実部を示す図である。(d)は、実施形態2に係る近似手法を用いて複素数の絶対値を計算した場合における復元画像の実部を示す図である。
【
図13】(a)は、性能評価に用いた原画像の虚部を示す図である。(b)は、性能評価に用いた観測画像の虚部を示す図である。(c)は、近似手法を用いずに複素数の絶対値を計算した場合における復元画像の虚部を示す図である。(d)は、実施形態2に係る近似手法を用いて複素数の絶対値を計算した場合における復元画像の虚部を示す図である。
【
図14】近似手法を用いずに複素数の絶対値を計算した場合における復元画像と、実施形態2に係る近似手法を用いて複素数の絶対値を計算した場合における復元画像と、の間におけるピーク信号対雑音比の差分のヒストグラムを示す図である。
【
図15】固定小数点演算の小数部の幅を変えた場合における復元画像のピーク信号対雑音比の推移を示す図である。
【
図16】固定小数点演算の小数部の幅を変えた場合における素子の使用量を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を参照して説明する。なお、図中同一又は相当する部分には同一符号を付す。
【0019】
(実施形態1)
図1に、実施形態1に係る計算装置10の構成を示す。計算装置10は、計算対象として与えられた複素数の絶対値を近似手法により計算する装置である。計算装置10は、一例として、パーソナルコンピュータ、タブレット、サーバ等の情報処理装置である。或いは、計算装置10は、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)、AI(Artificial Intelligence)チップ等のような組み込み機器であっても良い。いずれの場合であっても、同様に説明することができる。
【0020】
図1に示すように、計算装置10は、制御部11と、記憶部12と、入力受付部13と、出力部14と、を備える。
【0021】
制御部11は、計算装置10の各部と制御バスを介して接続されており、計算装置10全体の動作を統括制御する。具体的に説明すると、制御部11は、CPU(Central Processing Unit)、ROM(Read Only Memory)及びRAM(Random Access Memory)を備える。CPUは、例えばマイクロプロセッサ等を備えており、様々な処理及び演算を実行する中央演算処理部として機能する。制御部11において、CPUが、ROMに記憶されている制御プログラムを読み出して、RAMをワークメモリとして用いながら、各種の処理を実行する。
【0022】
記憶部12は、フラッシュメモリ、ハードディスク等の不揮発性メモリを備える。記憶部12は、オペレーションシステム、アプリケーションプログラム等の、制御部11が各種処理を行うために使用するプログラム及びデータを記憶する。また、記憶部12は、制御部11が各種処理を行うことにより生成又は取得するデータを記憶する。
【0023】
記憶部12は、複素数の絶対値を計算するために必要となる各種の定数値を記憶している。具体的には、記憶部12は、
図2に示すような三角比テーブル190を記憶している。三角比テーブル190は、0からπ/2の範囲における複数の角度θのそれぞれについて、正弦値sinθ及び余弦値cosθが対応付けて格納されたテーブルである。
【0024】
ここで、三角比テーブル190における複数の角度θは、互いに一定の角度差をつけられている。複数の角度θの個数をどの程度に設定するか、すなわち0からπ/2の範囲でどの程度の細かい角度差で区切って三角比の値を三角比テーブル190に格納しておくかは、後述する角度θの離散化数Nをどの程度の大きさに設定するかにより異なる。三角比テーブル190により多くの角度θの三角比の値が格納されているほど、離散化数Nとして大きな値が設定可能になる。三角比テーブル190には、計算装置10により計算処理に用いられる可能性がある複数の角度の正弦値及び余弦値が少なくとも格納される。
【0025】
図1に戻って、入力受付部13は、計算装置10の外部からの入力を受け付ける。例えば、入力受付部13は、キーボード、ボタン等の入力デバイスを備えており、入力デバイスを介してユーザからの入力を受け付ける。また、入力受付部13は、広域ネットワーク、LAN(Local Area Network)、USB(Universal Serial Bus)等の有線又は無線による通信を介して、入力を受け付ける。
【0026】
具体的には、入力受付部13は、計算装置10において絶対値を計算する対象となる複素数の入力を受け付ける。また、入力受付部13は、角度θの離散化数Nの設定入力を受け付ける。入力受付部13は、受け付けた入力を制御部11に供給する。
【0027】
出力部14は、計算装置10において計算された複素数の絶対値の計算結果を出力する。例えば、出力部14は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等の表示デバイスを備えており、制御部11による制御のもとで、計算結果を示す画像を表示する。また、出力部14は、広域ネットワーク、LAN、USB等の有線又は無線による通信を介して、計算結果を示す出力情報を計算装置10の外部に出力する。
【0028】
計算装置10は、固定小数点演算により、計算対象となる複素数の絶対値の近似値を計算する。ここで、複素数の絶対値は、理論的には下記(1)式のように、複素数zの実部Re(z)と虚部Im(z)との自乗和の平方根により定められる。
【0029】
【0030】
図3に、上記(1)式で定められる複素数zの絶対値と実部Re(z)及び虚部Im(z)との関係を3次元座標により示す。
図3に示す3次元座標は、水平面内の2方向(x方向及びy方向)に複素数zの実部Re(z)及び虚部Im(z)の値を表し、高さ方向(z方向)に複素数zの絶対値を表している。
【0031】
図3に示すように、実部Re(z)及び虚部Im(z)の値が様々に変化した場合、上記(1)式で定められる複素数zの絶対値は、原点を頂点とし、中心軸が高さ方向に延びる円錐によって表現される。この円錐を水平面に平行な面で切断した場合における切断面は、半径√(Re
2(z)+Im
2(z))の円になる。
【0032】
上記(1)式で定められるように、複素数の絶対値の計算は、自乗及び平方根の計算を含む。自乗の計算は、定数乗算に比べて大きな回路規模及び電力消費を必要とする。一方で、平方根の計算は、多項式近似、区分線形近似(折れ線近似)、CORDIC等のような近似計算の手法を利用することができるが、いずれも複素数の実部と虚部の自乗和の計算を避けることはできない。そのため、(1)式に従って複素数の絶対値を計算するには、相対的に大きな回路規模及び電力消費を必要とする。このような平方根と自乗和の計算は、実数の絶対値演算では現れない複素数特有の課題である。
【0033】
特に、FPGA、GPU、AIチップ等のような組み込み機器や高並列計算機器では、計算速度、回路規模、電力消費等の観点から、固定小数点演算を採用することが望まれる。しかしながら、固定小数点演算は、浮動小数点演算と比べて、ビット幅に対して表現できる実数の範囲が限られるため、自乗及び平方根の計算に適していない。そのため、固定小数点演算では、実数の絶対値を計算することは容易であるのに対して、複素数の絶対値を上記(1)式に従って計算することは容易ではない。
【0034】
そこで、実施形態1に係る計算装置10は、複素数の絶対値の近似値を、自乗及び平方根の計算を必要としない方法で計算する。具体的に説明すると、計算装置10は、複素数zの絶対値が、下記(2)式に示されるように、関数aθ(z)の0≦θ<π/2の範囲における上限値として表現可能であることを利用する。ここで、下記(2)式で定められる関数aθ(z)は、下記(3)式に示されるように、予め与えられた角度θに対する複素数zの関数である。
【0035】
【0036】
【0037】
ここで、複素数zの絶対値が上記(2)式で表現されることについて説明する。上記(3)式で定められる関数aθ(z)は、下記(4)式のように変形することができる。なお、(4)式において、αは、cosα=Re(z)/|z|、且つ、sinα=Im(z)/|z|を満たす角度である。
【0038】
【0039】
θ=α-π/4の関係が成立する場合、(4)式で表される関数aθ(z)は、下記(5)式のように、複素数zの絶対値に等しくなる。また、関数aθ(z)を角度θに関する偏微分を表す下記(6)式から、0≦α-θ<π/2の範囲において、関数aθ(z)は、θ=α-π/4で極大値をとることが分かる。
【0040】
【0041】
【0042】
ここで、任意の整数kに対して、aθ(z)=aθ+πk/2(z)の関係が成立することに注意すると、上記(2)式に示したように、0≦θ<π/2の範囲における関数aθ(z)の上限値が複素数zの絶対値に等しくなることが導かれる。
【0043】
図4に、上記(3)式で定められる関数a
θ(z)と複素数zの実部Re(z)及び虚部Im(z)との関係を3次元座標により示す。
図4に示す3次元座標は、
図3と同様に、水平面内の2方向(x方向及びy方向)に複素数zの実部Re(z)及び虚部Im(z)の値を表し、高さ方向(z方向)に関数a
θ(z)の値を表している。
【0044】
図4に示すように、実部Re(z)及び虚部Im(z)の値が様々に変化した場合、上記(1)式で定められる複素数zの絶対値は、原点を頂点とし、中心軸が高さ方向に延びる正四角錐によって表現される。この正四角錐を水平面に平行な面で切断した場合における切断面の各頂点と正四角錐の中心軸との距離は、
図3に示した円錐の半径√(Re
2(z)+Im
2(z))と一致する。
【0045】
角度θを様々に変化させた場合、
図4に示す正四角錐は、中心軸の周りに回転する。そして、正四角錐が中心軸の周りに回転した場合、正四角錐の斜辺の軌跡は、
図3に示した円錐と一致する。言い換えると、上記(2)式のように0≦θ<π/2の範囲における関数a
θ(z)の上限値(最大値)により複素数zの絶対値を計算する方法は、正四角錐の回転軌跡で円錐を表現することに相当する。
【0046】
関数aθ(z)は、正四角錐を用いた複素数zのスカラー評価と言うことができ、角度θが与えられると、自乗及び平方根の計算を必要とすることなく、定数乗算と実数の絶対値の和によって計算することができる。したがって、固定小数点演算で容易に実現することができる。このように、実施形態1に係る計算装置10は、円錐を正四角錐の回転軌跡で表現できることを利用して、複素数zの絶対値を計算する。
【0047】
具体的には、計算装置10は、関数aθ(z)を計算する際に、角度θを、0からπ/2までの範囲で互いに等しい間隔を空けたN個の角度θ0,θ1,…,θN-1に離散化する。そして、計算部120は、下記(7)式に従って、離散化されたN個の角度θ0,θ1,…,θN-1のそれぞれについて計算された関数aθ(z)の値のうちの最大値によって、複素数zの絶対値を近似する。
【0048】
【0049】
図1に戻って、計算装置10の制御部11は、機能的に、設定部110と、計算部120と、決定部130と、を備える。制御部11において、CPUがROMに記憶されたプログラムをRAMに読み出して実行することにより、これら各部として機能する。
【0050】
設定部110は、離散化された複数の角度θの個数、すなわち角度θの離散化数Nを設定する。具体的に説明すると、設定部110は、入力受付部13により受け付けられた入力に基づいて、離散化数Nを設定する。ユーザは、入力受付部13のキー、ボタン等を操作することで、離散化数Nを設定することができる。
【0051】
ここで、離散化数Nをより大きく設定するほど近似精度がより向上するが、計算量がより増大する。言い換えると、近似精度と計算量とはトレードオフの関係にある。そのため、近似精度と計算量の低減とのどちらを優先するかに応じて、ユーザは、所望の離散化数Nを設定することができる。設定部110は、離散化数Nを設定すると、0からπ/2までの範囲で互いに等しい間隔を空けたN個の角度θk=πk/2N(k=0,1,2,…,N-1)を設定する。
【0052】
計算部120は、設定部110により設定されたN個の角度θ0,θ1,θ2,…,θN-1のそれぞれについて、上記(3)式に従った計算処理を実行し、関数aθk(z)の値を計算する。
【0053】
第1に、計算部120は、与えられた角度θk(kは0からN-1までの整数)の余弦値cosθkと計算対象となる複素数zの実部Re(z)との積と、角度θkの正弦値sinθkと複素数zの虚部Im(z)との積と、の和を計算する。第2に、計算部120は、角度θkの正弦値sinθkと複素数zの実部Re(z)との積と、角度θkの余弦値cosθkと複素数zの虚部Im(z)との積と、の差を計算する。このとき、計算部120は、記憶部12に記憶されている三角比テーブル190を参照して、角度θkに対応する正弦値sinθkと余弦値cosθkとを特定する。
【0054】
第3に、計算部120は、計算した和の絶対値“|cosθk・Re(z)+sinθk・Im(z)|”と差の絶対値“|sinθk・Re(z)-cosθk・Im(z)|”とを加算する。そして、計算部120は、得られた加算値を2の平方根“√2”で除する、すなわち“√2”の逆数を乗ずることにより、関数aθk(z)の値を計算する。以下では、角度θkに対して計算された関数aθk(z)の値を“ak”と表す。
【0055】
計算部120は、このような計算処理を、離散化されたN個の角度θ0,θ1,θ2,…,θN-1のそれぞれについて実行する。これにより、計算部120は、N個の値a0,a1,a2,…,aN-1を得る。
【0056】
角度θkの正弦値sinθk及び余弦値cosθkは、予め三角比テーブル190に記憶されているため、固定小数点の定数として扱うことができる。また、√2の逆数も同様に、その値が予め記憶部12に記憶されることで、固定小数点の定数として扱うことができる。そのため、a0,a1,a2,…,aN-1の計算は、自乗及び平方根の演算はもちろん、変数の乗算も必要とせず、定数乗算、加減算、及び実数絶対値計算という簡便な演算によって実現できる。
【0057】
なお、N個の値a0,a1,a2,…,aN-1の計算は、角度θk毎に独立且つ並列に計算ができる。そのため、計算部120は、1個の角度θkに対して1個の値akを計算する場合に比べて、それほど大きく計算速度を低下させることなく、計算処理を実行することができる。
【0058】
決定部130は、計算部120がN個の角度θ0,θ1,θ2,…,θN-1のそれぞれについて上記の計算処理を実行することにより得られたN個の値a0,a1,a2,…,aN-1のうちの最大値を、計算対象となる複素数zの絶対値に対応する値と決定する。具体的に説明すると、決定部130は、計算部120の計算処理により得られたN個の値a0,a1,a2,…,aN-1を比較する。比較の結果、決定部130は、上記(7)式に従って、N個の値a0,a1,a2,…,aN-1のうちの最大値を、複素数zの絶対値の近似値と決定する。
【0059】
以上のように構成される計算装置10によって実行される複素数zの絶対値の計算処理の流れについて、
図5に示すフローチャートを参照して説明する。
図5に示す計算処理は、計算装置10が絶対値の計算対象となる複素数zの入力を受け付けたことに応答して、開始する。
【0060】
図5に示す計算処理を開始すると、制御部11は、設定部110として機能し、入力受付部13を介してユーザから受け付けた設定入力に従って、角度θの離散化数Nを設定する(ステップS11)。離散化数Nを設定すると、制御部11は、カウンタ変数kの値を0に初期化する(ステップS12)。
【0061】
カウンタ変数kを初期化すると、制御部11は、記憶部12に記憶されている三角比テーブル190を参照して、角度θk(=πk/2N)に対応する余弦値cosθk及び正弦値sinθkを特定する。そして、制御部11は、特定したcosθk及び正弦値sinθkを、それぞれ変数ck,skに代入する(ステップS13)。
【0062】
変数ck,skに値を代入すると、制御部11は、計算部120として機能し、(3)式に従って関数ak(=aθk(z))の値を計算する(ステップS14)。具体的に説明すると、制御部11は、変数ckと複素数zの実部Re(z)との積と、変数skと複素数zの虚部Im(z)との積と、の和を計算し、変数skと複素数zの実部Re(z)との積と、変数ckと複素数zの虚部Im(z)との積と、の差を計算する。そして、制御部11は、計算した和の絶対値と差の絶対値とを加算した加算値を2の平方根で除した値を、関数akの値として計算する。
【0063】
関数akの値を計算すると、制御部11は、カウンタ変数kの値をインクリメントする(ステップS15)。そして、制御部11は、カウンタ変数kが離散化数Nよりも小さいか否かを判定する(ステップS16)。カウンタ変数kが離散化数Nよりも小さい場合(ステップS16;YES)、制御部11は、処理をステップS13に戻し、インクリメントされたカウンタ変数kに対してステップS13~S15の処理を実行する。
【0064】
このように、制御部11は、カウンタ変数kが離散化数Nに達するまで、カウンタ変数kの値を0から1ずつインクリメントしながらステップS13~S15の処理を繰り返す。これにより、制御部11は、N個の値a0,a1,a2,…,aN-1を計算する。
【0065】
最終的に、カウンタ変数kが離散化数Nに達した場合(ステップS16;NO)、制御部11は、決定部130として機能し、繰り返し処理におけるステップS14で計算されたN個の値a
0,a
1,a
2,…,a
N-1のうちの最大値を、複素数zの絶対値の近似値と決定する(ステップS17)。以上により、
図5に示した複素数zの絶対値の計算処理は終了する。
【0066】
以上説明したように、実施形態1に係る計算装置10は、角度θkの余弦値cosθkと複素数zの実部Re(z)との積と、角度θkの正弦値sinθkと複素数zの虚部Im(z)との積と、の和を計算し、角度θkの正弦値sinθkと複素数zの実部Re(z)との積と、角度θkの余弦値cosθkと複素数zの虚部Im(z)との積と、の差を計算し、更に、計算した和の絶対値と差の絶対値とを加算する計算処理を実行する。そして、計算装置10は、このような計算処理を複数の角度θ0,θ1,θ2,…,θN-1のそれぞれについて実行することにより得られた複数の値a0,a1,a2,…,aN-1のうちの最大値を、複素数zの絶対値の近似値と決定する。これにより、自乗及び平方根の計算を必要とせずに、定数乗算、加減算、及び実数絶対値計算によって複素数の絶対値の近似値を計算することができる。そのため、大きな回路規模及び消費電力を必要とせずに、複素数の絶対値の近似値を計算することができる。
【0067】
特に、固定小数点演算では、ビット幅に対して表現できる実数の範囲が限られるため、自乗及び平方根の計算に適していない。これに対して、実施形態1に係る計算装置10によれば、自乗及び平方根の計算を必要としないため、固定小数点演算でも複素数の絶対値の近似値を容易に計算することができる。
【0068】
(実施形態2)
次に、本発明の実施形態2について説明する。実施形態2では、実施形態1で説明した複素数の絶対値を計算する手法を、画像復元処理に適用する。なお、実施形態1と同様の事項については適宜説明を省略する。
【0069】
図6に、実施形態2に係る計算装置20の構成を示す。
図6に示すように、計算装置20は、制御部21と、記憶部12と、入力受付部13と、出力部14と、を備える。制御部21は、機能的に、設定部110と、計算部120と、決定部130と、信号処理部210と、を備える。制御部21において、CPUがROMに記憶されたプログラムをRAMに読み出して実行することにより、計算部120、決定部130及び信号処理部210の各部として機能する。設定部110、計算部120及び決定部130の処理は、実施形態1と同様であるため説明を省略する。
【0070】
信号処理部210は、決定部130により決定された複素数の絶対値に対応する値に基づいて、信号処理を実行する。具体的に説明すると、信号処理部210は、信号処理として、観測画像から復元画像を復元する画像復元処理を実行する。実施形態2に係る計算装置20は、信号処理(画像復元処理)を実行する信号処理装置(画像復元装置)と呼ぶこともできる。
【0071】
図7に、信号処理部210により実行される画像復元処理の概要を示す。
図7において、原画像y、観測画像v及び復元画像y’は、各画素の画素値が複素数により表現される複素画像であって、それぞれの複素画像における複素数の画素値を要素(成分)として有する複素ベクトルにより表される。信号処理部210は、画像復元処理を実行することにより、原画像yが観測過程で劣化した画像である観測画像vから復元画像y’を復元する。
【0072】
入力受付部13は、観測画像vの入力を受け付ける。例えば、入力受付部13は、無線通信又は有線通信を介して、信号処理部210による処理の対象となる観測画像vを計算装置20の外部から受け付ける。或いは、観測画像vは、記憶部12に予め記憶されていても良い。
【0073】
観測画像vは、下記(8)式のように、原画像yに行列Pを乗じ、更にベクトルwを加算したベクトルとして表される。ここで、行列Pは、観測過程における画像の劣化を表す行列である。ベクトルwは、加法性白色ガウスノイズ(AWGN:Additive White Gaussian Noise)を表すベクトルである。
【0074】
【0075】
原画像yは、下記(9)式のように、係数ベクトルxに辞書行列Dを乗じたベクトルとして表される。ここで、辞書行列Dは、原画像yを複数の基底ベクトルのスパースな線形結合により表現するための行列である。係数ベクトルxは、線形結合の係数を要素とするスパースな(すなわち、ほとんどの要素が0である)ベクトルである。
【0076】
【0077】
信号処理部210は、画像復元処理において、ISTA(繰り返しソフト閾値アルゴリズム;Iterative Shrinkage Soft-Thresholding Algorithm)を用いて観測画像vから係数ベクトルxを推定し、推定された係数ベクトルxから復元画像y’を復元する。ここで、ISTAは、スパースモデリングで現れる最適化問題を解く手法の1つである。係数ベクトルxを推定するために、信号処理部210は、スパースモデリングの問題設定の1つであるL1ノルム正則化最小自乗法(Lasso)を利用する。
【0078】
具体的に、L1ノルム正則化最小自乗法は、係数ベクトルxと観測画像vとを用いて、下記(10)式のように定式化される。下記(10)式において、右辺は、係数ベクトルxに関する関数“||PDx-v||2/2+λ||x||1”が最小となるときのxを返す関数を表している。すなわち、信号処理部210は、下記(10)式の右辺の値が最小となるときのxを、係数ベクトルxの推定値x’として求める。また、||PDx-v||2は、ベクトル“PDx-v”のL2ノルムを表し、||x||1は、係数ベクトルxのL1ノルムを表す。λは、正則化パラメータと呼ばれ、誤差と解の大きさとのバランスを調整するパラメータである。正則化パラメータλ、観測過程を表す行列P、及び辞書行列Dは、予め設定されて記憶部12に記憶される。
【0079】
【0080】
上記(10)式を解くために、信号処理部210は、近接勾配法を利用する。具体的には、信号処理部210は、下記(11)式に従って、kの値をk=0,1,2,…と1ずつ増やしながら、第kベクトルx(k)から第(k+1)ベクトルx(k+1)を計算する。
【0081】
【0082】
ここで、上記(11)式における右辺は、ソフト閾値処理を行うための関数(ソフト閾値関数)である。また、γは、γ≦1/λmax((PD)HPD)を満たす定数である。λmax((PD)HPD)は、勾配“∇f(x)=(PD)H(PDx-v)”のリプシッツ定数であって、(PD)HPDの最大固有値である。上付きの“H”は、エルミート転置を意味する。定数γは、適切な値に予め設定されて記憶部12に記憶される。
【0083】
ソフト閾値関数Sτ(z(k))は、具体的には下記(12)式のように定められる。ここで、(12)式におけるz(k)は、下記(13)式で定められるように、観測画像vと第kベクトルx(k)とに基づく複素ベクトルである。
【0084】
【0085】
【0086】
なお、(12)式において、丸の中に“・”を含む記号は、ベクトルの要素毎の積を意味し、丸の中に“/”を含む記号は、ベクトルの要素毎の商を意味する。また、太字の“0”は全ての要素が0であるベクトルを表し、太字の“1”は全ての要素が1であるベクトルを表す。max(s,0)は、与えられたベクトルsの各要素のうちの値が正又は0の要素はそのままで、値が負の要素が0に置き換えられたベクトルを返す関数である。abs(z(k))は、複素ベクトルz(k)の各要素の絶対値を要素とするベクトルを返す関数である。(12)式におけるτ(>0)は閾値である。
【0087】
信号処理部210は、関数abs(z(k))を計算する際に、実施形態1で説明した近似手法を用いて、複素数の絶対値を計算する。具体的に説明すると、計算部120は、上記(3)式に従った計算処理を、異なる複数の角度θ0,θ1,θ2,…,θN-1のそれぞれについて実行することにより、複数の値a0,a1,a2,…,aN-1を計算する。そして、決定部130は、計算部120により計算された複数の値a0,a1,a2,…,aN-1のうちの最大値を、複素数の絶対値の近似値と決定する。
【0088】
計算部120及び決定部130は、このように複素数の絶対値の近似値を計算する処理を、複素数を要素として有する複素ベクトルz(k)の各要素に対して実行する。信号処理部210は、このようにして計算された複素ベクトルz(k)の各要素の絶対値を用いて、上記(11)式及び(12)式に従って、第kベクトルx(k)から第(k+1)ベクトルx(k+1)を計算する。
【0089】
信号処理部210は、kの値を0から順に1ずつ増やしながら、第kベクトルx(k)から第(k+1)ベクトルx(k+1)を計算する処理を繰り返し実行する。そして、信号処理部210は、kの値を増やした場合におけるベクトルx(k)の収束値を、係数ベクトルxの推定値x’と推定する。なお、係数ベクトルの初期値であるk=0のときの第0ベクトルx(0)は、任意に設定することができる。信号処理部210は、このようなISTAの手法により、上記(10)式の最適解を得る。
【0090】
このようにして係数ベクトルxの推定値x’を推定すると、信号処理部210は、推定値x’から復元画像y’を復元する。具体的には、信号処理部210は、上記(9)式に従って、推定値x’に辞書行列Dを乗じることにより、復元画像y’を復元する。
【0091】
出力部14は、信号処理部210が信号処理を実行することにより得られた結果を示す出力情報を出力する。具体的には、出力部14は、出力情報として、信号処理部210が画像復元処理を実行することにより観測画像vから復元された復元画像y’を出力する。例えば、出力部14は、復元画像y’を液晶ディスプレイ等の表示部に表示する。或いは、出力部14は、復元画像y’を有線又は無線による通信を介して計算装置20の外部の情報処理装置に送信する。
【0092】
以上のように構成される実施形態2に係る計算装置20によって実行される画像復元処理の流れについて、
図8に示すフローチャートを参照して説明する。
図8に示す画像復元処理は、計算装置20が入力受付部13を介して観測画像vの入力を受け付け、更に観測画像vから復元画像y’を復元する指示を受け付けたことに応答して開始する。
【0093】
図8に示す画像復元処理を開始すると、制御部21は、カウンタ変数kを0に初期化する(ステップS21)。更に、制御部21は、推定対象となる係数ベクトルxの初期値である第0ベクトルx
(0)を任意に設定する(ステップS22)。
【0094】
次に、制御部21は、観測画像v及び第kベクトルx
(k)に基づく複素ベクトルz
(k)の各要素の絶対値を計算する(ステップS23)。具体的に説明すると、制御部21は、観測画像v及び第kベクトルx
(k)に基づいて、上記(13)式により表される複素ベクトルz
(k)を計算する。そして、制御部21は、複素ベクトルz
(k)の各要素について、実施形態1の
図5に示した複素数の絶対値の計算処理を実行する。
【0095】
複素ベクトルz(k)の各要素の絶対値を計算すると、制御部21は、上記(11)式及び(12)式に従って、複素ベクトルz(k)をソフト閾値関数Sτ(z(k))に入力することにより、第(k+1)ベクトルx(k+1)を計算する(ステップS24)。このとき、制御部21は、ソフト閾値関数Sτ(z(k))に含まれる関数abs(z(k))を計算するために、ステップS23で計算した複素ベクトルz(k)の各要素の絶対値を用いる。
【0096】
第(k+1)ベクトルx(k+1)を計算すると、制御部21は、第(k+1)ベクトルx(k+1)と第kベクトルx(k)との差の絶対値が、予め定められた基準値よりも小さいか否か、又は、カウンタ変数kの値が予め定められた基準回数よりも大きいか否かのいずれか一方が満たされたか否かを判定する(ステップS25)。
【0097】
第(k+1)ベクトルx(k+1)と第kベクトルx(k)との差の絶対値が基準値よりも小さくない場合であって、且つ、カウンタ変数kが基準回数以下である場合(ステップS25;NO)、制御部21は、カウンタ変数kをインクリメントする(ステップS26)。そして、制御部21は、処理をステップS23に戻し、インクリメントされたカウンタ変数kに対してステップS23~S24の処理を実行する。
【0098】
このように、制御部21は、第(k+1)ベクトルx(k+1)と第kベクトルx(k)との差の絶対値が基準値以内に収束するまで、又は、ベクトルx(k)を計算した回数が基準回数を超えるまで、カウンタ変数kの値を0から1ずつインクリメントしながら、ベクトルx(1),x(2),x(3),…を順に計算する。
【0099】
最終的に、第(k+1)ベクトルx(k+1)と第kベクトルx(k)との差の絶対値が基準値よりも小さくなると、又は、カウンタ変数kの値が基準回数より大きくなると(ステップS25;YES)、制御部21は、ステップS24で計算された第(k+1)ベクトルx(k+1)を、係数ベクトルxの推定値x’と推定する(ステップS27)。
【0100】
係数ベクトルxの推定値x’を推定すると、制御部21は、推定値x’に辞書行列Dを乗じることにより、復元画像y’を復元する(ステップS28)。復元画像y’を復元すると、制御部21は、復元された復元画像y’を出力部14により出力する(ステップS29)。以上により、
図8に示した画像復元処理は終了する。
【0101】
以上説明したように、実施形態2に係る計算装置20は、ISTAを用いた画像復元処理において、ソフト閾値処理に含まれる複素数の絶対値の計算処理を、実施形態1で説明した近似手法を用いて実行する。これにより、自乗及び平方根の計算を必要とせずに複素数の絶対値を計算することができるため、実施形態2に係る計算装置20は、大きな回路規模及び消費電力を必要とせずに、画像復元処理を実行することができる。
【0102】
特に、組込み機器や高並列計算機器のような環境の制約が厳しいために固定小数演算が必要となる場合であっても、実施形態2に係る計算装置20によれば、複素数の絶対値の近似値を容易に計算することができる。そのため、厳しい環境の制約のもとであっても、回路規模及び電力消費を抑えつつ、高速に画像復元処理が可能となる。
【0103】
(性能評価)
次に、上記実施形態2で説明した画像復元処理の性能を評価した結果を示す。
【0104】
まず、実施形態2に係る近似手法を
図9(a)~(c)に示す3次元座標に可視化して検証した。
図9(a)~(c)に示す3次元座標は、水平面内の2方向(x方向及びy方向)に複素数zの実部Re(z)及び虚部Im(z)の値を表し、高さ方向(z方向)にソフト閾値関数S
τ(z)の出力の絶対値を表している。
【0105】
より詳細には、
図9(a)は、浮動小数点演算で近似手法を用いずに複素数zの絶対値を計算した場合におけるソフト閾値関数S
τ(z)の出力の絶対値を示している。一方で、
図9(b)は、実施形態2に係る近似手法を用いて複素数zの絶対値を計算した場合におけるソフト閾値関数S
τ(z)の出力の絶対値を示している。
図9(c)は、
図9(a)と
図9(b)と間におけるソフト閾値関数S
τ(z)の出力の絶対値の差分を示している。
【0106】
なお、
図9(b)において実施形態2に係る近似手法を用いた場合における角度θの離散化数Nは2に設定した。また、(12)式に示したソフト閾値関数S
τ(z)の入力と出力はそれぞれベクトルであるが、
図9(a)~(c)では、ベクトルの一つの要素に対するソフト閾値関数S
τ(z)を計算した。
【0107】
図9(c)に示すように、離散化数Nを2に設定しているため、8方向(2N+1方向)で差分の値が0になった。言い換えると、角度がπ/4ずれる毎に、複素数zの絶対値の近似誤差が0になることが確認された。また、
図9(c)に示す範囲内で、近似誤差の最大値は0.0412であった。この結果から、実施形態2で説明した複素数zの絶対値の近似手法は許容できると考えられる。また、このような近似誤差は、離散化数Nを増やすことで減らすことができる。
【0108】
次に、近似手法を用いずに浮動小数点演算で複素数の絶対値を計算した場合と、実施形態2に係る近似手法により複素数の絶対値を計算した場合とで、画像復元処理のシミュレーションを実行した。
【0109】
図10に、シミュレーションの諸元を示す。また、
図11に、画像復元モデルの諸元を示す。
図10に示すように、シミュレーションにおいて、画像復元モデルの辞書行列Dとして非間引きハール変換を仮定し、観測過程を表す行列Pとして画素欠損率10%の画素欠損を仮定した。
【0110】
図12(a)及び
図13(a)に、それぞれ、シミュレーションに用いた原画像の実部及び虚部を示す。
図12(a)に示す画像と
図13(a)に示す画像との組み合わせにより1枚の複素画像と見立てられる。更に、
図12(b)及び
図13(b)に、それぞれ、
図12(a)及び
図13(a)に対応する観測画像を示す。
図12(b)に示した観測画像のPSNR(Peak Signal-to-Noise Ratio:ピーク信号対雑音比)は15.81dBであり、
図13(b)に示した観測画像のPSNRは15.82dBであった。
【0111】
図12(c)及び
図13(c)に、それぞれ、
図12(b)及び
図13(b)に示した観測画像から複素数の絶対値の近似手法を用いずに復元した復元画像を示す。これに対して、
図12(d)及び
図13(d)に、それぞれ、
図12(b)及び
図13(b)に示した観測画像から実施形態2に係る近似手法を用いて復元した復元画像を示す。なお、
図12(d)及び
図13(d)に示す復元画像を復元した際における角度θの離散化数Nは2と設定した。
【0112】
図12(c)及び
図13(c)に示した復元画像のPSNRは、それぞれ、29.24dB及び29.49dBであった。これに対して、
図12(d)及び
図13(d)に示した復元画像のPSNRは、それぞれ、29.23dB及び29.48dBであった。よって、近似手法を用いた場合と用いなかった場合とで、PSNRにほとんど差が見られなかった。また、
図12(a)~(d)に示す4つの画像を比較すると、提案手法による近似を行っても画像復元結果に大きな差は見られないことが確認された。
図13(a)~(d)でも同様である。
【0113】
図14に、複素数の絶対値の近似手法を用いなかった場合における復元画像と、実施形態2に係る近似手法を用いた場合における復元画像と、の間におけるPSNRの差分を1000サンプル集めたヒストグラムを示す。このヒストグラムから確認されるように、画素欠損の場所やノイズの乱数シードを変えても、近似誤差の最悪値は0.08以下であった。このことから、実施形態2に係る近似手法は許容できると考えられる。
【0114】
次に、固定小数点演算におけるビット数と、実施形態2に係る近似手法を用いた場合における復元画像の画質と、の関係を評価した。第1に、固定小数点演算ではオーバーフローやアンダーフローが発生しやすいため、小数部のビット幅が画像復元に与える影響を調べる必要がある。そのため、固定小数点の小数部のビット幅を変化させて出力画像のPSNRの推移を調べた。固定小数点演算は全て符号付き、整数部は5ビット、量子化モードはNearest、オーバーフローモードはSaturateに設定した。
【0115】
図15に、固定小数点演算の小数部の幅を変えた場合における復元画像のPSNRの推移を、実部及び虚部のそれぞれについて示す。
図15の結果から、実部及び虚部のいずれの場合も、小数部が12ビット以上でほぼ変化がなくなることが確認できる。よって、小数部のビット幅は12ビット以上が適当といえる。
【0116】
第2に、実施形態2に係る近似手法の一部の処理をハードウェアで実装をし、ビット幅を変化させて回路面積の推移を調べた。具体的には、Slice LUTs、Slice Registers及びDSP48E1の3種類のFPGA素子をハードウェア実装のターゲットとして評価を行った。FPGA素子の使用量は少ないほど経済性及び省電力性が向上する。そこで以下では、小数部のビット幅に対する素子使用量を測定した。
【0117】
図16に、固定小数点演算の小数部の幅を変えた場合におけるFPGAに実装された素子の使用量(Utilization[%])の推移を示す。Slice LUTsとSlice Registersの使用量は、ビット幅に応じてほぼ右肩上がりで推移している。一方で、DSP48E1の場合、ビット幅に応じて高位合成の配置結果が異なると考えられる。
図16から、いずれの素子の場合であっても、小さなビット幅による合成で回路素子の使用率が抑えられることが確認できる。この結果から、12ビットが最適な小数部のビット幅と考えられる。
【0118】
(変形例)
以上に本発明の実施形態について説明したが、上記実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、本発明の実施形態は種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
【0119】
例えば、上記実施形態1,2では、計算部120は、固定小数点演算により計算処理を実行した。しかしながら、本発明では、計算部120は、浮動小数点演算により上記実施形態で説明した計算処理を実行しても良い。浮動小数点演算では固定小数点演算のように自乗及び平方根の演算の制約が大きい訳ではないが、自乗及び平方根の演算をせずに複素数の絶対値に対応する値を計算することで、回路規模及び消費電力を低減させる効果を得ることができる。
【0120】
上記実施形態1では、計算部120は、複数の角度θ0,θ1,θ2,…,θN-1のそれぞれについて上記(3)式に従った計算処理を実行することで複数の値a0,a1,a2,…,aN-1を計算し、決定部130は、複数の値a0,a1,a2,…,aN-1のうちの最大値を、複素数zの絶対値の近似値と決定した。しかしながら、上記(3)式において正弦値sinθと余弦値cosθとを入れ替えて関数aθ(z)を計算した場合でも、複数の値a0,a1,a2,…,aN-1として同じ組み合わせが得られる。そのため、計算部120は、正弦値sinθと余弦値cosθとを実施形態1で説明した方法とは入れ替えて、関数aθ(z)の値を計算しても良い。具体的に説明すると、本発明において、計算部120は、角度θkの正弦値sinθkと余弦値cosθkとのうちの一方と複素数zの実部Re(z)との積と、角度θkの正弦値sinθkと余弦値cosθkとのうちの他方と複素数zの虚部Im(z)との積と、の和を計算し、角度θkの正弦値sinθkと余弦値cosθkとのうちの他方と複素数zの実部Re(z)との積と、角度θkの正弦値sinθkと余弦値cosθkとのうちの一方と複素数zの虚部Im(z)との積と、の差を計算し、更に、計算した和の絶対値と差の絶対値とを加算する。計算部120は、このような計算処理を異なる複数の角度θ0,θ1,θ2,…,θN-1のそれぞれについて実行することにより、複数の値a0,a1,a2,…,aN-1を計算する。
【0121】
また、本発明において、計算部120は、関数aθ(z)の値そのものを計算することに限らず、例えば√2で除する処理を省略して、関数aθ(z)の値の√2倍に相当する値を計算しても良い。そして、決定部130は、複数の値√2a0,√2a1,√2a2,…,√2aN-1のうちの最大値を、複素数zの絶対値に対応する値と決定しても良い。このように、計算装置10,20は、複素数zの絶対値に対応する値として、複素数zの絶対値そのものの近似値を計算しても良いし、複素数zの絶対値を定数倍した値、又は複素数zの絶対値に定数を加減した値の近似値を計算しても良い。そして、計算装置10,20は、複素数zそのものの近似値ではなく、複素数zの絶対値を定数倍した値、又は複素数zの絶対値に定数を加減した値の近似値を、後段の処理(例えば信号処理部210による画像復元処理)に引き渡しても良い。
【0122】
上記実施形態2では、信号処理部210は、信号処理として、ISTAを用いた画像復元処理を実行した。しかしながら、本発明において、信号処理部210により実行される信号処理は、実施形態2で説明したISTAに基づく画像復元処理に限らない。例えば、ソフト閾値処理は、ISTAに限らず、SAR(Synthetic Aperture Radar:合成開口レーダ)の受信信号から狭帯域無線周波数干渉を分離するためのRNN(Reweighted Nuclear Norm)又はADMM(Alternating Direction Method of Multipliers)のアルゴリズムでも用いられている。SARが受信する信号は複素画像であるため、実施形態2で説明した手法を適用することができる。
【0123】
更には、信号処理部210により実行される信号処理は、CT(Computed Tomography)、MRI(Magnetic Resonance Imaging)等の医用画像処理であっても良い。或いは、信号処理部210により実行される信号処理は、画像復元処理に限らず、音声信号処理、通信信号処理、生体信号処理、機械学習処理等であっても良い。このように、本発明に係る複素数の絶対値を計算する手法は、複素数の絶対値を計算することが必要とする様々なデジタル信号の処理に適用することができる。
【0124】
上記実施形態1,2では、計算装置10,20の制御部11,21において、CPUがROMに記憶されたプログラムを実行することによって、設定部110、計算部120、決定部130及び信号処理部210の各部として機能した。しかしながら、本発明において、制御部11,21は、CPUの代わりに、例えばASIC(Application Specific Integrated Circuit)等の専用のハードウェアを備え、専用のハードウェアが、設定部110、計算部120、決定部130及び信号処理部210の各部として機能しても良い。この場合、各部の機能それぞれを個別のハードウェアで実現しても良いし、各部の機能をまとめて単一のハードウェアで実現しても良い。また、各部の機能のうち、一部を専用のハードウェアによって実現し、他の一部をソフトウェア又はファームウェアによって実現しても良い。
【0125】
なお、本発明に係る機能を実現するための構成を予め備えた計算装置として提供できることはもとより、プログラムの適用により、既存の情報処理装置等を、本発明に係る計算装置として機能させることもできる。すなわち、上記実施形態1,2で例示した計算装置10,20による各機能構成を実現させるためのプログラムを、既存の情報処理装置等を制御するCPU等が実行できるように適用することで、本発明に係る計算装置として機能させることができる。
【0126】
また、このようなプログラムの適用方法は任意である。プログラムを、例えば、フレキシブルディスク、CD(Compact Disc)-ROM、DVD(Digital Versatile Disc)-ROM、メモリカード等のコンピュータ読み取り可能な記憶媒体に格納して適用できる。さらに、プログラムを搬送波に重畳し、インターネットなどの通信媒体を介して適用することもできる。そして、このプログラムを起動し、OS(Operating System)の制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。
【符号の説明】
【0127】
10,20…計算装置、11,21…制御部、12…記憶部、13…入力受付部、14…出力部、110…設定部、120…計算部、130…決定部、190…三角比テーブル、210…信号処理部