以下に添付図面を参照して、この発明にかかる符号化処理装置、符号化処理方法、符号化処理プログラムの最良な実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態にかかる符号化処理装置100と復号化処理装置150の構成を示すブロック図である。図1に示すように、符号化処理装置100で符号化された符号化シンボル列が通信路を介して、復号化処理装置150に入力される。その後、復号化処理装置150が入力された符号化シンボル列に対して復号化処理を施す。なお、通信路とは、ネットワーク経由に制限するものではなく、例えば紙媒体で受け渡しなどを含み、符号化された情報になんらかの変化を及ぼすあらゆる伝達手法による伝達が含まれるものとする。
図1に示すように符号化処理装置100の内部は、入力処理部101と、シンボル列加算部102と、シンボル列結合部103と、符号化シンボル列出力部104と、を備え、入力処理されたシンボル列に対して、符号化処理を施す。また、復号化処理装置150は、復号対象シンボル列入力処理部151と、シンボル列分割部152と、シンボル列減算部153と、数値決定部154と、数値結合部155と、誤り訂正符号復号部156と、出力部157とを備え、入力されたシンボル列S1に対して復号化処理を施す。まず、符号化処理装置100の各構成について説明する。
入力処理部101は、復号化処理を施すシンボル列の入力処理を行う。シンボルの元の数は5とし、シンボルの元の四則演算は5を法とする演算で行うことにする。これにより、位数5のガロア体(有限体)=GF(5)を構成することができる。具体的には、本実施の形態で入力処理の対象となるシンボル列S1は、4桁5進数による数列とする。この4桁のうち2桁はパリティとして利用しても良い。
以下の説明において、符号化対象のシンボル列S1は(3,1,0,2)とする。符号化対象シンボル列はGF(5)上のリードソロモン符号(生成多項式は(x-2)*(x-4))で符号化されている。
シンボル列加算部102は、符号化対象として入力処理されたシンボル列S1と、パイロットシンボル列と、の桁毎に加算処理を1回から4回だけ繰り返し、4個の演算後シンボル列を生成する。なお、本実施の形態では四測演算のうち加算を使用するが、乗算など他の演算を用いても良い。
パイロットシンボル列とは、符号化処理装置100の符号化処理及び復号化処理装置150の復号化処理で利用されるシンボル列とする。当該パイロットシンボル列は、‘0’以外の数値からなる4桁5進数の数列とする。また、パイロットシンボル列は上記リードソロモン符号の符号語となっており、5回繰り返して加算すると零ベクトルとなる。
また、パイロットシンボル列は、qを素数としてGF(q)上であれば、0以外の元を用いて構成すれば十分である。しかしながら、qが素数でない場合は、このようにパイロットシンボル列を構成することができない。しかしながら、例えば計算機分野で重要なGFであるGF(2の自然数乗)を用いる場合、元を0/1に分解して通信するという前提のもと、パイロットシンボル列を(11…1,11…1,…,11…1)と全ての桁が1になるように設定すれば、0/1を均等に出現させることができる。
本実施の形態にかかる符号化処理装置100において、入力処理されたシンボル列S1に対して、パイロットシンボル列を1回〜‘4’回まで繰り返し加算する。これは、元の数‘5’から‘1’減じた数が‘4’であることに基づく。これは元の数が素数の場合に限り、素数以外では異なることになる。
入力処理されたシンボル列が“3102”で、パイロットシンボル列が“3421”の場合について説明する。シンボル列加算部102は、パイロットシンボル列の一回加算で演算後シンボル列“1023”を生成し、二回加算で演算後シンボル列“4444”を生成し、三回加算で演算後シンボル列“2310”を生成し、四回加算で演算後シンボル列“0231”を生成する。
入力処理されたシンボル列及び演算後シンボル列のそれぞれの桁の数値を確認すると、0〜4の全ての数値(元)が出現しているのが確認できる。例えば左の一桁目では、入力処理のシンボル列で‘3’であり、一回加算後の演算後シンボル列で‘1’であり、二回加算後の演算後シンボル列で‘4’であり、三回加算後の演算後シンボル列で‘2’であり、四回加算後の演算後シンボル列で‘0’である。
シンボル列結合部103は、入力処理されたシンボル列及び四個の演算後シンボル列を結合する。具体的には、入力処理されたシンボル列、一回加算後の演算後シンボル列、二回加算後の演算後シンボル列、三回加算後の演算後シンボル列及び四回加算後の演算後シンボル列の順に結合する。以下、結合したシンボル列を結合シンボル列と呼ぶ。
上述した例では、結合シンボル列は、“31021023444423100231”となる。当該結合シンボル列では、全ての元(数値0〜4)が等しく出現していることが確認できる。
符号化シンボル列出力部104は、結合シンボル列を、符号化処理を施した後のシンボル列S2として出力する。
本実施の形態にかかる符号化処理装置100では、上述した処理により作成された符号化シンボル列を出力している。ところで、従来から、画像データに埋込等を行う場合、耐性を強くするためにシンボル列を繰り返して埋め込んでいた。これに対し、本実施の形態にかかる符号化処理装置100では、同一シンボル列を元の異ならせた上で繰り返し埋め込むことで、単に繰り返しシンボル列を埋め込むより、耐性を強くすることができる。
そして、出力されたシンボル列S2は、通信路上で伝達されているうちに誤りが発生している。そして、当該誤りを含む復号対象シンボル列S3が、復号化処理装置150に入力処理される。次に、復号化処理装置150の各構成について説明する。
復号対象シンボル列入力処理部151は、復号対象シンボル列S3の入力処理を行う。復号対象シンボル列S3は、通信路上で誤りが生じた5進数20桁の数列とする。なお、復号対象シンボル列S3に含まれるシンボルにおいては、誤りに偏りが生じているものとする。
例えば、シンボル列毎に異なる電圧値として伝達させた場合、所定のシンボルに限り異なるシンボルと誤って認識される等が考えられる。又はシンボル列が紙媒体に印刷されていた場合、読み取り時に所定のシンボルに限り、他のシンボルと誤って認識される等が考えられる。このような誤りに偏りが生じている場合、従来の手法では正確に抽出できる確率が低下していた。これに対し、本実施の形態にかかる符号化処理及び復号化処理においては、シンボル毎に変化する確率が異なる場合、具体的にはシンボル毎に当該シンボルが自身のシンボル以外に変化する確率が異なる場合に有効である。
シンボル列分割部152は、入力処理された復号対象シンボル列S3を、4桁ごとに分割し、複数のシンボル列を生成する。入力処理された復号対象シンボル列S3なので、分割後に5個のシンボル列が生成される。
シンボル列減算部153は、分割されたシンボル列と、パイロットシンボル列と、の桁毎に、減算を行う。この際、分割されたシンボル列の順序に従って、減算を繰り返す回数を異ならせる。例えば、分割された1個目のシンボル列には減算を行わず、分割された2個目のシンボル列には1回減算を行う。さらに、3個目のシンボル列には2回減算を行い、4個目のシンボル列には3回減算を行い、5個目のシンボル列には4回減算を行う。このように、分割された順番が1増加すると、減算される回数も1増加する。
数値決定部154は、シンボル列減算部153により減算処理が行われたシンボル列において、当該複数のシンボル列の桁毎に最も頻度が高い数値を当該桁の数値として決定する。
数値結合部155は、数値決定部154により決定された桁毎の数値を結合して、準復号シンボル列を生成する。
誤り訂正符号復号部156は、準復号シンボル列に対して復号処理を行い、復号シンボル列を取得する。出力部157は、復号シンボル列を出力する。
次に、以上のように構成された本実施の形態にかかる符号化処理装置100におけるシンボル列に対して符号化処理を施すまでの処理手順について説明する。図2は、本実施の形態にかかる符号化処理装置100における上述した処理の手順を示すフローチャートである。
まず、入力処理部101が、符号化対象となるシンボル列S1の入力処理を行う(ステップS201)。
次に、シンボル列加算部102が、入力処理したシンボル列S1を加算対象に設定する(ステップS202)。このシンボル列S1を、(3,1,0,2)とする。
そして、シンボル列加算部102が、加算対象のシンボル列に対して、パイロットシンボル列を加算して、新たなシンボル列を生成する(ステップS203)。パイロットシンボル列は、(3,4,2,1)とする。加算処理が1回目であれば、演算後シンボル列として(1,0,2,3)を生成する。
次に、シンボル列加算部102は、加算処理が元の数―1か否か判断する(ステップS204)。なお、本実施の形態では元の数が5なので、加算処理が4回か否か判断する。
そして、加算処理を行った回数が4回より小さい場合(ステップS404:No)、ステップS203で生成された演算後シンボル列が、新たな加算対象のシンボル列と設定される(ステップS205)。
このように、処理が繰り返されることで、入力処理したシンボル列にパイロットシンボル列を1〜4回繰り返し加算した、演算後シンボル列(1,0,2,3)、(4,4,4,4)、(2,3,1,0)、(0,2,3,1)が生成される。
そして、シンボル列加算部102が、加算処理を行った回数が4回以上となった場合(ステップS404:Yes)、シンボル列結合部103が、入力処理したシンボル列と、生成した演算後シンボル列とを結合する(ステップS406)。結合したシンボル列は、(3,1,0,2,1,0,2,3,4,4,4,4,2,3,1,0,0,2,3,1)
そして、符号化シンボル列出力部104が、結合したシンボル列を、符号化シンボル列として出力する(ステップS407)。
図3は、符号化処理装置100により出力される符号化シンボル列の概念を示した図である。図3に示すように、符号化対象となるシンボル列にパイロットシンボル列を繰り返し加算して4個の演算後シンボル列を取得する。そして、符号化シンボル列と、4個の演算後シンボル列との、末尾と先頭とを結合して符号化シンボル列(3,1,0,2,1,0,2,3,4,4,4,4,2,3,1,0,0,2,3,1)を生成する。
次に、以上のように構成された本実施の形態にかかる復号化処理装置150におけるシンボル列に対して復号化処理を施すまでの処理について説明する。図4は、本実施の形態にかかる復号化処理装置150における上述した処理の手順を示すフローチャートである。
ところで、復号対象となるシンボル列は、1と2が0に誤る通信路を通り、(3,0,0,0、0,0,0,3,4,4,4,4,0,3,0,0,0,0,3,0)に変化したものとする。
まず、復号対象シンボル列入力処理部151が、復号対象シンボル列の入力処理を行う(ステップS401)。
次に、シンボル列分割部152が、復号対象シンボル列を、所定の桁毎に分割する(ステップS402)。本実施の形態においては、4桁(4シンボル)毎に分割を行うものとする。これにより、5個のシンボル列(3,0,0,0)、(0,0,0,3)、(4,4,4,4)、(0,3,0,0)、(0,0,0,3)が生成される。これらシンボル列を右から順に1番目、2番目と便宜上番号を割り当てる。
そして、シンボル列減算部153が、変数Nに‘0’を設定する(ステップS403)。次に、シンボル列減算部153が、N+1番目のシンボル列に対して、パイロットシンボル列をN回減算する処理を行う(ステップS404)。例えば、最初の1番目のシンボル列であれば0回減算、つまり減算処理は行われない。
その後、シンボル列減算部153が、変数Nが元の数―1以上であるか否か判断する(ステップS405)。本実施の形態では変数Nが4以上であるか否かが判断される。変数Nが3より小さいと判断された場合(ステップS405:No)、シンボル列減算部153が、変数Nに対し1加算する処理を行う(ステップS406)。
このような減算処理を行うことで分割したシンボル列に対して、0回〜4回までのパイロットシンボル列を減算する。これにより、シンボル列(3,0,0,0)、(2,1,3,2)、(3,1,0,2)、(1,1,4,2)、(3,4,0,1)が生成される。
そして、シンボル列減算部153は、変数Nが4以上と判断した場合(ステップS405:Yes)、数値決定部154が、演算後のシンボル列に基づいて、準符号化シンボル列の桁毎に数値を決定する(ステップS407)。本実施の形態では、数値決定部154が、各桁で最も出現頻度が高い数値を、当該桁の数値として決定する。
具体的には、数値決定部154は、減算処理で得られた5個のシンボル列の1桁目で‘3’が3回と最も多く現れていることから、1桁目の数値を‘3’に決定する。当該ステップS407の処理を繰り返すことで、数値決定部154は、2桁目を‘1’、3桁目を‘0’、4桁目を‘2’と決定する。
そして、数値決定部154が、全ての桁について決定を行ったか否か判断する(ステップS408)。全ての桁について数値を決定していない場合(ステップS408:No)、ステップS407の処理を再び行う。
そして、数値決定部154が全ての桁について数値を決定した場合(ステップS408:Yes)、数値結合部155が決定した数値を結合して、準復号シンボル列を生成する(ステップS409)。これにより、準復号シンボル列として、(3,1,0,2)が得られる。
その後、誤り訂正符号復号部156が、生成した準復号シンボル列に対して、復号処理を行う(ステップS410)。本処理手順では、準復号シンボル列(3,1,0,2)を復号すると誤りなしでそのまま(3,1,0,2)が得られる。
次に、出力部157が、復号処理した復号シンボル列を出力する(ステップS411)。これにより、復号化処理装置150の処理が終了する。
図5は、復号化処理装置150により出力される復号シンボル列の概念を示した図である。図5に示すように、復号対象となるシンボル列を4桁毎に分割した後、シンボル列に応じてパイロットシンボル列を0回から4回繰り返して減算を行うことで、4個の演算後シンボル列を取得する。そして、4個の演算後シンボル列に基づいて、それぞれの桁毎に数値を決定して、準復号シンボル列を生成する。その後、誤り訂正を行うことで、復号シンボル列を生成する。
上述した処理手順においては、前提条件としてシンボル列内の‘1’及び‘2’が‘0’に誤る通信路を仮定した。この通信路の場合、シンボル列(3,1,0,2)を単純に5回繰り返し送信するだけでは、最も出現する数値に基づいて復号シンボル列を生成しても(3,0,0,0)となる。これでは、リードソロモン符号を復号できず、元の情報を得ることができない。
これに対して、本実施の形態においては、シンボル列の各桁に出現する元の数を一様化しているため、このような偏った誤りが生じても誤りを訂正することができる。さらに、リードソロモン符号の訂正能力を余らせている。また、本実施の形態にかかる復号化処理装置150の符号化・復号方式の訂正能力は、元の誤りに偏りがない場合は単純に繰り返した場合と同様となる。
図6は、シンボル列内の元が、他の元に遷移する確率を示した図表である。図6に格納されている変数αは、0以上0.25以下の実数とする。図6に示す例では、0〜4のシンボルが、他のシンボルに均等の確率で遷移している。この場合では、本実施の形態にかかる処理と、従来の処理とにおいて誤り訂正が同等となる。還元すると、図6に示す例以外では、本実施の形態にかかる処理は、従来の処理と比べて誤り訂正能力が向上することになる。
また、本実施の形態においては、誤り訂正符号としてリードソロモン符号を用いたが、リードソロモン符号に制限するものではなく、任意の誤り訂正符号を用いることができる。また、本実施の形態のように、同期誤りが発生しない場合では、誤り訂正符号を用いなくともよい。
また、誤り訂正符号を用いない場合は、加算のみが定義できればよいので、加算を法演算で定義し、元の数と互いに素となる数をシンボルとしてパイロットシンボル列を構成すればよい。
上述した実施の形態にかかる符号化処理装置100において、結合シンボルを生成する際に、各シンボル列の先頭と末尾を結合して一つのシンボル列を生成したが、当該結合手法に制限するものではない。つまり、符号化処理装置100及び復号化処理装置150との間で、シンボルの配置情報を共有できればよく、例えば、各シンボルを任意の位置に配置して合成してもよい。
また、復号化処理装置150の数値決定部154において、複数のシンボル列を比較し、桁毎に最も出現している数値を、準復号シンボル列のシンボルとして決定したが、このような手法に制限するものではない。例えば、シンボル毎になんらかの信頼度情報を利用できる場合、その情報を利用してシンボルの値を決定してもよい。例えば、抽出シンボルの尤度が得られる場合は、最尤推定によりシンボルを決定する等も考えられる。
本実施の形態にかかる符号化処理装置100及び復号化処理装置150においては、復号対象シンボル列に対して、パイロットシンボル列を繰り返し加算して元を変更しているため、所定のシンボルが変化しやすい場合であっても、高精度で復号することが可能となる。
また、本実施の形態は5進数の場合について説明したが、素数進数であれば、いずれの進数を使用しても良い。さらに、素数進数でない場合は、1以外の約数をもたない進数であればよい。また、それ以外の進数であっても異なる元が出るため、シンボル変化に対する耐性を向上させることはできる。
つまり、本実施の形態にかかる符号化処理装置100及び復号化処理装置150では、符号化シンボル列中に多様な元を出現させることで、情報シンボルの偏った誤りに対してもロバストな情報抽出を可能となる。したがって、情報の復号精度を向上させることができる。
また、本実施の形態にかかる符号化処理装置100では、パイロットシンボル列を線形誤り訂正符号とすることで、誤り訂正符号の符号長単位で巡回シフトしたシンボル列に対し、誤りを容易に訂正することができる符号化シンボル列を生成することができる。また、復号化処理装置150では、当該符号化シンボル列に対して誤り訂正符号を使用して復号することで、誤り率を小さくすることができる。
また、誤り訂正符号復号部156では、上記信頼度情報が得られる場合は軟判定復号を行ってもよい。
(第2の実施の形態)
第1の実施の形態においては、復号化処理装置150が復号対象シンボル列を入力処理する際に、同期誤りが生じない例について説明した。そこで、第2の実施の形態においては、通信路で同期誤りが発生する場合について説明する。本実施の形態にかかる同期誤りは、シンボル列が巡回する誤り、すなわち、{x(1),x(2),…,x(n)}が{x(i),x(i+1),…,x(n),x(1),x(2),…,x(i―1)}のように変化する誤りを想定している。また、同期誤りと同時に、第1の実施の形態と同様に各シンボルに個別の誤りが生じているものとする。また、本実施の形態においては、シンボルが2元である場合について説明する。
図7は、第2の実施の形態にかかる符号化処理装置700と復号化処理装置750の構成を示すブロック図である。
図7に示すように符号化処理装置700の内部は、入力処理部701と、シンボル列加算部702と、シンボル列結合部703と、符号化シンボル列出力部704と、を備え、入力処理されたシンボル列S11に対して、符号化処理を施し、復号化シンボル列S12を出力する。なお、符号化処理装置700の各構成が行う処理は、処理対象となるシンボルの元が5元から2元に変更された以外、第1の実施形態と異なる点がないので説明を省略する。
また、復号化処理装置750は、復号対象シンボル列入力処理部751と、差分算出部752と、桁数算出部753と、シフト演算部754と、シンボル列分割部755と、シンボル列減算部756と、数値決定部757と、数値結合部758と、誤り訂正符号復号部759と、パイロットシンボル列加算部760と、出力部761とを備え、入力された復号対象シンボル列S13に対して復号化処理を施し、シンボル列S14を出力する。
本実施の形態においては、シンボルはGF(2)の元となる。そこで、符号化対象のシンボル列は2元7桁とする。具体的に(0,1,1,1,0,1,0)の場合について説明する。また、符号化対象シンボル列は(7,4)2元BCH符号(生成多項式は(x^3+x+1))で符号化されている。そして、符号化対象シンボル列の先頭から4シンボル(0,1,1,1)が情報記号とする。
また、同期誤りを訂正するために符号化シンボル列の所定の桁を特定の値に設定する必要がある。そこで、本実施の形態では、情報記号の先頭ビットを特定の値を常に‘0’を設定する。これにより、情報記号のうち、任意の値を設定できる情報量は3bitとなる。
また、パイロットシンボル列を(1,0,1,1,0,0,0)とする。また、元が2であることから、2−1で繰り返し加算数を1とする。また、パイロットシンボル列は上記2元BCH符号の符号語となっており、繰り返し加算数1に1加えた2回、加算を行うと零ベクトルとなる。
符号化の手順は第1の実施形態と同様なので、図2に従って符号化処理手順について説明する。
ステップS201では、入力処理部701が符号化対象のシンボル列(1,0,1,1,0,0,0)を入力処理する。
次に、シンボル列加算部702が、入力処理したシンボル列(1,0,1,1,0,0,0)を、加算対象に設定する(ステップS202)。そして、シンボル列加算部702が、加算対象のシンボル列(1,0,1,1,0,0,0)にパイロットシンボル列(1,0,1,1,0,0,0)を加算処理する(ステップS203)。当該加算処理により、(1,1,0,0,0,1,0)を生成する。
そして、シンボル列加算部702は、加算処理が元の数(2)―1回目と判断し(ステップS204:Yes)、シンボル列結合部703は、入力処理したシンボル列(1,0,1,1,0,0,0)と、加算処理した(1,1,0,0,0,1,0)とを結合して、結合シンボル(0,1,1,1,0,1,0,1,1,0,0,0,1,0)を生成する(ステップS206)。
そして、符号化シンボル列出力部704が、結合シンボル(0,1,1,1,0,1,0,1,1,0,0,0,1,0)を、符号化シンボル列として出力する(ステップS207)。次に、復号化処理装置150の各構成について説明する。
復号対象シンボル列入力処理部751は、復号対象シンボル列S13の入力処理を行う。復号対象シンボル列S13は、通信路上で誤りが生じた2進数7桁の数列とする。なお、復号対象シンボル列S13において、同期誤りが生じていると共に、各シンボルで誤りが生じているものとする。
復号対象シンボル列S13の具体的な例としては、同期ずれとビット誤りが発生する通信路を通り、9シンボル左方向にずれて(0,0,0,1,0,0,1,1,1,0,1,0,1,1)に変化し、さらに4シンボル目に誤りが生じ(0,0,0,0,0,0,1,1,1,0,1,0,1,1)と変化したものとする。
差分算出部752は、復号対象シンボル列S13において、左一桁目から7桁目までのシンボル列と、8桁目から最後までのシンボル列の差分を算出する。この算出されたシンボル列を、差分シンボル列とする。つまり、差分算出部752は、符号化シンボル列と同じ長さの2つのシンボル列の差分を算出する。
桁数算出部753は、差分シンボル列がパイロットシンボル列に最も近くなるようにシフト移動するための桁数を算出する。
シフト演算部754は、算出された桁数だけ、復号対象シンボル列S13に対してシフト演算を行う。
また、復号化処理装置750のシンボル列分割部755、シンボル列減算部756、数値決定部757、数値結合部758、誤り訂正符号復号部759が行う処理は、各構成が行う処理は、処理対象となるシンボルの元が5元から2元に変更された以外、第1の実施形態と異なる点がないので説明を省略する。
パイロットシンボル列加算部760は、誤り訂正後の準復号シンボル列の特定シンボル(先頭ビット)が特定の値(‘0’)となるように、準復号シンボル列に対してパイロットシンボル列を1又は複数回加算する。加算処理が行われた後のシンボル列が、復号シンボル列となる。そして、出力部761は、復号シンボル列を出力する。
次に、以上のように構成された本実施の形態にかかる復号化処理装置750におけるシンボル列に対して符号化処理を施すまでの処理について説明する。図8は、本実施の形態にかかる復号化処理装置750における上述した処理の手順を示すフローチャートである。
まず、復号対象シンボル列入力処理部751が、復号対象シンボル列の入力処理を行う(ステップS801)。
次に、差分算出部752が、復号対象シンボル列のうち、左一桁目から符号化対象シンボル列と同じ長さ分のシンボル列と、当該シンボル列の一桁左のシンボルから符号化対象シンボル列と同じ長さ分のシンボル列と、の差分を算出する(ステップS802)。本実施の形態では、7シンボル離れた位置のシンボル同士から、差分シンボルを算出する。すなわち前半7シンボル(0,0,0,0,0,0,1)から、後半7シンボル(1,1,0,1,0,1,1)を減算し、差分シンボル列(1,1,0,1,0,1,0)を取得する。
次に、桁数算出部753は、差分シンボル列がパイロットシンボル列に最も近くなるようにシフト移動するための桁数を算出する(ステップS803)。例えば、パイロットシンボル列は(1,0,1,1,0,0,0)であるから、上記の差分シンボル列を右方向に2シンボルシフトさせた時にハミング距離が1で最も近くなることが分かる。そこで、桁数算出部753は、移動桁数を右方向2シンボルと算出する。
そして、シフト演算部754が、復号対象シンボル列S13を、右方向に2シンボルシフトさせる演算を行い、シンボル列(1,1,0,0,0,0,0,0,1,1,1,0,1,0)を取得する(ステップS804)。
その後、シンボル列分割部755が、当該シンボル列(1,1,0,0,0,0,0,0,1,1,1,0,1,0)を7シンボル毎に分割し、(1,1,0,0,0,0,0)、(0,1,1,1,0,1,0)を取得する(ステップS805)。
そして、シンボル列減算部756が、変数Nに‘0’を設定する(ステップS806)。次に、シンボル列減算部756が、N+1番目のシンボル列に対して、パイロットシンボル列をN回減算する処理を行う(ステップS807)。例えば、最初の1番目のシンボル列であれば0回減算、つまり減算処理は行われない。
その後、シンボル列減算部756が、変数Nが元の数―1以上であるか否か判断する(ステップS405)。本実施の形態では変数Nが1以上であるか否かが判断される。変数Nが1より小さいと判断された場合(ステップS808:No)、シンボル列減算部756が、変数Nに対し1加算する処理を行う(ステップS809)。
このような減算処理を行うことで分割したシンボル列に対して、0回〜1回までのパイロットシンボル列を減算する。これにより、シンボル列(1,1,0,0,0,0,0)、(1,1,0,0,0,1,0)が生成される。
そして、シンボル列減算部756は、変数Nが1以上と判断した場合(ステップS808:Yes)、数値決定部757が、演算後のシンボル列に基づいて、準符号化シンボル列の桁毎に数値を決定する(ステップS810)。本実施の形態では、数値決定部757が、各桁で最も出現頻度が高い数値を、当該桁の数値として決定する。
具体的には、数値決定部154は、これらシンボルを比較すると、6シンボル目のみが異なるので、ここを消失(*)とし、1シンボル目から順に、1,1,0,0,0,*、0と決定する。
そして、数値決定部757が、全ての桁について決定を行ったか否か判断する(ステップS811)。全ての桁について数値を決定していない場合(ステップS811:No)、ステップS810の処理を再び行う。
そして、数値決定部757が全ての桁について数値を決定した場合(ステップS811:Yes)、数値結合部758が決定した数値を結合して、準復号シンボル列を生成する(ステップS812)。これにより、準復号シンボル列として、(1,1,0,0,0,*、0)が得られる。
その後、誤り訂正符号復号部759は、準復号シンボル列を復号する(ステップS813)当該準復号シンボル列(1,1,0,0,0,*、0)を復号すると、(1,1,0,0,0,1、0)が得られる。なお、当該誤り訂正手法は、周知の手法で算出可能なので、説明を省略する。
次に、パイロットシンボル列加算部760が、復号された準復号シンボル列(1,1,0,0,0,1、0)に対して、特定シンボルが特定の値になるようにパイロットシンボル列を加算する(ステップS814)。本実施の形態においては、上述したように先頭ビット(第1シンボル列)が‘0’となるように、加算処理を行う。そこで、パイロットシンボル列加算部760は、(1,1,0,0,0,1,0)にパイロットシンボル列を1回加算し、復号シンボル列(0,1,1,1,0,1,0)を生成する。
その後、出力部761が、生成した復号シンボル列(0,1,1,1,0,1,0)を出力する(ステップS815)。
本実施の形態のように、同期誤りが発生する環境下で誤り訂正符号を用いる場合、パイロットシンボル列を線形の誤り訂正符号の符号語で構成する必要がある。決定した各桁のシンボルを結合して、準復号シンボル列を生成する際に、復号されるシンボル列に二つの可能性がある。しかしながら、符号語の線形和は符号語である、という線形誤り訂正符号の性質を利用し、どちらの場合でも誤り訂正符号を復号できるようになる。
この復号シンボル列の二つの可能性は、特定シンボルが特定の値になるようにパイロットシンボル列を加算することで一つに絞られる。この場合に、誤り訂正符号の復号後に特定のシンボルを得るため、この二つの候補の選択を誤る確率は誤り訂正符号の誤り率で保証されることになる。しかしながら、誤り訂正符号の誤り率は設定によって極めて小さくすることができるので、値を固定するシンボルは1つあれば十分である(そもそも誤り訂正符号で誤った場合は同期を正しく取ったとしても情報シンボルを誤るため、値を固定するシンボルを1つより大きく取る意味はない)。
また、パイロットシンボル列は、上述したように復号対象シンボル列の同期に利用される。このため、巡回したパターンとの距離が十分大きくなるように設定する必要がある。なお、本実施の形態では巡回する同期誤りのみを仮定したが、その他の位置が入れ替わるような誤りが想定される場合、パイロットシンボル列を位置の入れ替わりが生じた際のシンボル列との距離が十分に大きくなるように設定する。
この場合、桁数算出部753で、位置の入れ替わりの誤りを修正した場合の差分シンボル列とパイロットシンボル列の近さを計算する。
なお、本実施の形態にかかる桁数算出部753において、差分シンボル列とパイロットシンボル列との近さをハミング距離で算出したが、これに制限するものではない。シンボルの信頼度情報を得られる場合、桁数算出部753は当該信頼度情報を用いて距離尺度を算出しても良い。差分シンボルの尤度が得られる場合、桁数算出部753は、最大尤度となる並べ替えを選択してもよい。誤りのタイプに事前確率を設定し、事前確率と尤度から事後確率を算出し、事後確率を最大とする並べ替えを選択してもよい。
また、第1の実施の形態で示したバリエーションを、本実施の形態又は以下に示す変形例及び実施の形態に適用しても良い。
本実施の形態においては、桁毎に元が異なるパイロットシンボル列を用いることで、同期誤りを訂正することが可能となる。これにより、本実施の形態にかかる符号化処理及び復号化処理は、同期用の情報を削減、又は必要とせずとも、部分的な切り取り耐性を向上させることができる。
また本実施の形態においては、符号対象シンボル列において、特定のシンボルを特定の値に設定したことから、同期誤りが生じた場合でも、複数の復号シンボル列候補から、一つの復号シンボル列を特定することができる。
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
(第2の実施の形態の変形例1)
上述した第2の実施の形態において、シンボルが2元の場合について説明した。しかしながら、同期誤りはシンボルが5元の場合についても適用できる。そこで、本変形例では、シンボルが5元である場合について説明する。本変形例では、シンボルが5元から2元に変更されただけなので、第2の実施の形態の符号化処理装置700及び復号化処理装置750と同様の構成を備えているものとして、説明を省略する。
第1の実施の形態と同様に、本変形例で使用するシンボルはGF(5)の元とし、符号化対象のシンボル列(3,1,0,2)とする。符号化対象シンボル列はGF(5)上のリードソロモン符号(生成多項式は(x−2)*(x−4))で符号化されており、先頭シンボルは‘3’に設定する。つまり、復号対象のシンボル列のうち、情報シンボルが(3,1)であるので、任意に設定できる情報は1シンボルとなる。
パイロットシンボル列は、前記リードソロモン符号の符号語である(3,4,2,1)とする。繰り返し加算数は、第1の実施の形態と同様に‘4’となる。
そして、符号化処理装置700が符号化シンボル列として、(3,1,0,2,1,0,2,3,4,4,4,4,2,3,1,0,0,2,3,1)を出力する。そして、通信路上で、符号化シンボル列に11シンボル左にシフトする誤りが生じ、シンボル列(4,2,3,1,0,0,2,3,1,3,1,0,2,1,0,2,3,4,4,4)に変更された。さらに当該しんぼる列に対して、シンボル1と2が0になる誤りが生じ、シンボル列(4,0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,3,4,4,4)に変更されたものとする。これを復号対象のシンボル列とする。
次に、5元のシンボル列の対する復号化処理の手順について、図8に示したフローチャートに従って説明する。
まず、復号対象シンボル列入力処理部751が、復号対象シンボル列(4,0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,3,4,4,4)の入力処理を行う(ステップS801)。
次に、差分算出部752が、復号対象シンボル列のうち、左一桁目から符号化対象シンボル列と同じ長さ分のシンボル列と、当該シンボル列の一桁左のシンボルから符号化対象シンボル列と同じ長さ分のシンボル列と、の差分を算出する(ステップS802)。本実施の形態では、4シンボル離れた位置のシンボル同士から、差分シンボルを算出する。すなわち左に4シンボルシフトさせた(0,0,0,3,0,3,0,0,0,0,0,0,3,4,4,4,4,0,3,0)から、復号対象のシンボルを減算し、差分シンボル(1,0,2,3,0,3,0,2,0,2,0,0,3,4,4,4,1,1,4,1)を得る。
次に、桁数算出部753は、差分シンボル列がパイロットシンボル列に最も近くなるようにシフト移動するための桁数を算出する(S803)。例えば、パイロットシンボル列は(3,4,2,1)であるから、桁数算出部753は、これを5回繰り返した(3,4,2,1,3,4,2,1,3,4,2,1,3,4,2,1,3,4,2,1)と、上記の差分シンボルとを比較する。そして、上記の差分シンボル列を左方向に1,5,9,13,17シンボルシフトさせた時に、シンボルの一致数が6で最も近くなる。そこで、桁数算出部753は、左方向に1シンボルとシフト移動させる桁数を決定する。
図9は、シフト移動させる桁数を決定するまでの概念を示した説明図である。図9に示すように、差分算出部752が、符号化対象シンボル列の桁数分シフト移動させた復号対象シンボル列と、復号対象シンボル列の差分から差分シンボル列を算出する。そして、桁数算出部753が、差分シンボル列と、パイロットシンボル列の繰り返しからなるシンボル列とを比較する。そして、左方向に1(,5,9,13,17)シンボルシフトさせた時に、一致度合いが最も高いと判断した場合、シフト移動させる桁数を、1(又は5,9,13,17)と決定する。
図8に戻り、シフト演算部754が、復号対象シンボル列を左方向に1シンボルシフトさせ、シンボル列(0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,3,4,4,4,4)を算出する。なお、本処理手順では、1シンボル左にシフトさせたが、5,9,13,17シンボル左にシフトさせてもよい。
次に、シンボル列分割部755が、シンボルシフト後のシンボル列を4シンボル毎に分割し、(0,3,0,0)、(0,0,3,0)、(3,0,0,0)、(0,0,0,3)、(4,4,4,4)を得る。
そして、シンボル列減算部756が、変数Nに‘0’を設定する(ステップS806)。次に、シンボル列減算部756が、N+1番目のシンボル列に対して、パイロットシンボル列をN回減算する処理を行う(ステップS807)。例えば、最初の1番目のシンボル列であれば0回減算、つまり減算処理は行われない。
その後、シンボル列減算部756が、変数Nが元の数―1以上であるか否か判断する(ステップS405)。本変形例では変数Nが4以上であるか否かが判断される。変数Nが4より小さいと判断された場合(ステップS808:No)、シンボル列減算部756が、変数Nに対し1加算する処理を行う(ステップS809)。
このような減算処理を行うことで分割したシンボル列に対して、0回〜4回までのパイロットシンボル列を減算する。これにより、シンボル列(0,3,0,0)、(2,1,1,4)、(2,2,1,3)、(1,3,4,0)、(2,3,1,0)が生成される。
そして、シンボル列減算部756は、変数Nが4以上と判断した場合(ステップS808:Yes)、数値決定部757が、演算後のシンボル列に基づいて、準符号化シンボル列の桁毎に数値を決定する(ステップS810)。本実施の形態では、数値決定部757が、各桁で最も出現頻度が高い数値を、当該桁の数値として決定する。これにより、数値決定部757は、それぞれの桁毎に数値2,3,1,0を決定する。
そして、数値決定部757が、全ての桁について決定を行ったか否か判断する(ステップS811)。全ての桁について数値を決定していない場合(ステップS811:No)、ステップS810の処理を再び行う。
そして、数値決定部757が全ての桁について数値を決定した場合(ステップS811:Yes)、数値結合部758が決定した数値を結合して、準復号シンボル列を生成する(ステップS812)。これにより、準復号シンボル列(2,3,1,0)が生成される。
その後、誤り訂正符号復号部759は、準復号シンボル列を復号する(ステップS813)当該準復号シンボル列(2,3,1,0)を復号し、誤り無しで(2,3,1,0)を取得する。
次に、パイロットシンボル列加算部760が、復号された準復号シンボル列(2,3,1,0)に対して、特定シンボルが特定の値になるようにパイロットシンボル列を加算する(ステップS814)。本変形例においては、上述したように先頭シンボルが‘3’になるように、パイロットシンボル列を加算する。
そこで、パイロットシンボル列加算部760が、復号された準復号シンボル列(2,3,1,0)に対してパイロットシンボル列を2回加算し、復号シンボル列(3,1,0,2)を生成する(ステップS815)。
図10は、復号対象シンボル列から復号シンボル列を生成するまでの概念を示した説明図である。図10に示すように、上述した処理で決定した桁数(例えば1桁)だけシンボル列をシフト移動させた後、第1の実施の形態と同様に4桁ごとに分割する。そして、分割されたそれぞれのシンボル列に対してパイロットシンボル列による減算処理を行う。減算回数は0回〜4回とする。このように減算処理により生成された複数のシンボル列から、準復号シンボル列を生成する。そして、生成された準復号シンボル列に対して、誤り訂正を行った後、特定シンボルが特定の値になるようにパイロットシンボル列を加算して、復号シンボル列を生成する。
本変形例では5元の場合について説明したが、当然に他の元でも良い。そして、上述した符号化処理及び復号化処理を用いた場合、元の数に拘わらず、同期誤り及びシンボル誤りを訂正することができる。
本変形例では、パイロットシンボル列が5(元の数)回加算して零ベクトルになることから、巡回シフトしたシンボル列の同期を取れる符号化シンボル列を生成していることになる。これにより、同期誤りを訂正することが可能となる。
(第2の実施の形態の変形例2)
上述した実施の形態及び変形例では、誤り符号訂正としてリードソロモン符号を用いた。しかしながら、誤り符号訂正は、周知を問わずあらゆる符号訂正を用いることができる。そこで、本変形例では、短縮化符号を使用した場合について説明する。
まず、本変形例ではシンボルは2元とし、短縮化符号として(7,4)2元BCH符号(生成多項式は(x^3+x+1)の先頭の情報記号を0に固定した短縮化(6,3)2元BCH符号を用いる。
符号化対象のシンボル列を(1,1,1,0,1,0)、パイロットシンボル列を(0,1,1,0,0,0)とし、繰り返し加算数を1とする。本変形例では、パイロットシンボル列の先頭に0以外のシンボルを追加した基本パイロットシンボル列を用いるとともに、(7,4)2元BCH符号の符号語となるよう設定する。ここでは基本パイロットシンボル列を(1,0,1,1,0,0,0)とする。
また、本実施例では、基本となる(7,4)2元BCH符号のうち1シンボルを固定しているが、符号化対象シンボル列内に固定シンボルを設けたわけではない。このため、本実施例では同期による情報のロスを抑止することができる。
符号化は第2の実施の形態と同様の処理とする。そして、符号化処理装置700が、シンボル列(1,1,1,0,1,0)を符号化することで、符号化シンボル列(1,1,1,0,1,0,1,0,0,0,1,0)を生成する。
復号処理手順は図8に示す処理手順のうち、ステップS813において誤り訂正符号の復号方法が変更される。
まず、ステップS812までで準復号シンボル列(1,0,0,0,1,0)が得られたものとする。ここで先頭に1シンボル追加し、そこを消失とし(*,1,0,0,0,1,0)とする。誤り訂正符号復号部156が消失訂正を行い、準復号シンボル列(1,1,0,0,0,1,0)を取得する。
その後、パイロットシンボル列加算部760は、短縮化部分のシンボルの値が特定の値となるように、基本パイロットシンボル列を加える(ステップS815)。その後、出力部761が、基本パイロットシンボル列加算後のシンボル列から、短縮化部分を除去し、復号シンボル列を取得する。
具体例には、先頭の情報記号を0に固定しているので、パイロットシンボル列加算部760は、基本パイロットシンボル列を1回加算し、シンボル列(0,1,1,1,0,1,0)を取得する。その後、短縮化部分である先頭1シンボルを削除し、復号シンボル列(1,1,1,0,1,0)を取得する。
本変形例では、2元の場合について説明したが、それ以外の場合についても当然に適用することができる。
本変形例では、同期情報を符号化対象シンボル列に含めないで済むため、情報の格納量が増加させることができる。その代わり、誤り訂正符号の消失訂正能力を1つ使用することとなる。本変形例は、符号長を短縮化する必要がある場合に有用である。
つまり、本変形例では、短縮化部分のシンボルを使うことで、情報シンボルの損失なくシンボル列(情報)を同期させることができる。
(第2の実施の形態の変形例3)
第2の実施の形態及び第2の実施の形態の変形例2で示したようにシンボル列が2元の場合、元の出現確率が均等になっていない。2元の場合、元の出現確率を均等にするにはパイロットシンボル列の全てのシンボルが1のものを使用する必要がある。しかしながら、全てのシンボルが1のシンボル列を使用した場合、同期誤りを訂正することができない。そこで、本変形例では、元の出現確率の均等化及び情報同期を行う方法として、シンボル列の符号化処理及び復号化処理を階層的に適用する例について説明する。
本変形例にかかる符号化処理装置では、パイロットシンボル列Aと、シンボル全てが1のシンボル列Bを予め保持しておく。そして、符号化処理装置が符号化対象シンボル列Xを入力処理した場合、符号化シンボル列としてシンボル列{X,X+A,X+B,X+A+B}を生成する。
そして、復号化処理装置が、復号対象シンボル列{X,X+A,X+B,X+A+B}を入力処理する。復号対象シンボル列の長さをnとした場合、復号化処理装置は、当該復号対象シンボル列に含まれるシンボル列のうち、2nシンボル離れた位置のシンボル列間の差分を算出し、当該差分シンボル列においてnシンボル離れた位置のシンボル列間の差分を算出する。当該算出された差分とf(A)+g(f(B,0))との距離が最小になるようにfを算出する。このfは、シンボル列を巡回シフトさせる演算子である。また、gは先頭nシンボルを取得する演算子である。復号対象シンボル列に対して、算出されたfを用いてシンボルシフトを行うことで、同期誤りを訂正する。他の処理は、上述した実施の形態及び変形例で説明した復号の処理手順と同様として説明を省略する。
(第3の実施の形態)
上述した符号化処理及び復号化処理はさまざまな処理に適用することが出来る。そこで、本実施の形態においては、符号化処理及び復号化処理を、電子透かしに適用した例について説明する。
図11は、第3の実施の形態にかかる電子透かし埋込装置1100及び電子透かし抽出装置1150の構成を示すブロック図である。電子透かし埋込装置1100は、上述した第2の実施の形態にかかる符号化処理装置700とは、符号化シンボル列出力部104が削除され、画像埋込部1101及び画像出力部1102が追加されている点で異なる。
また、電子透かし抽出装置1150は、上述した第2の実施の形態にかかる復号化処理装置750とは、復号対象シンボル列入力処理部151が削除され、画像入力処理部1151及び符号化シンボル列抽出部1152とが追加された点で異なる。以下の説明では、上述した第2の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。
ところで、電子透かしにおいては、電子透かしでは強く情報を埋め込むとコンテンツが劣化するため、微弱な信号を分散させて埋め込むことが有用である。パッチワーク法はその主たるものであり、1シンボルに対して複数の特徴量を割り当てその値を変更することで情報を埋め込む。そして、1シンボルに割り当てられた複数の特徴量の偏りから情報を抽出する。また、コンテンツの分割に対して耐性を持たせるため、繰り返し情報が埋め込むことが一般に行われる。そして、本実施の形態にかかる符号化処理及び復号化処理は、「微弱な信号」を「繰り返す」ことが要求される場合に好適である。
次に電子透かし埋込装置1100について説明する。画像埋込部1101は、画像データに対して、シンボル列結合部703により生成された符号化シンボル列を埋め込む処理を行う。この符号化シンボル列は、透かし情報に対して符号化を行ったものとする。なお、画像データに対して、符号化シンボル列を埋め込む手法は、周知の手法を問わず、あらゆる手法を用いることができる。画像出力部1102は、符号化シンボル列が埋め込まれた画像データを出力する。
このようにして出力された符号化シンボル列が埋め込まれた画像データを、電子透かし抽出装置1150が入力処理を行う。そこで、次に電子透かし抽出装置1150について説明する。
画像入力処理部1151は、符号化シンボル列が埋め込まれた画像データの入力処理を行う。そして、符号化シンボル列抽出部1152は、入力処理された画像データから、符号化シンボル列の抽出処理を行う。この抽出手法については、周知の手法を問わず、あらゆる手法を用いることができる。
また、符号化シンボル列抽出部1152は、符号化シンボル列の他に、画像データに埋め込まれた信頼度情報等を抽出することにしても良い。この場合、抽出された信頼度情報を用いて、復号化処理が行われることになる。
そして、抽出処理された符号化シンボル列の復号化処理については、第2の実施の形態と同じものとして説明を省略する。
図11は、上述した実施の形態及び変形例で示した符号化処理装置及び復号化処理装置の機能を実現するためのプログラムを実行したPCのハードウェア構成を示した図である。本実施の形態の符号化処理装置及び復号化処理装置は、CPU(Central Processing Unit)51等の制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53等の記憶装置と、通信I/F57と、これらを接続するバス62を備えており、通常のコンピュータを利用したハードウェア構成となっている。
上述した実施形態及び変形例の符号化処理装置で実行される符号化処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、上述した実施形態及び変形例の復号化処理装置で実行される復号化処理プログラムも、同様にインストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、上述した実施形態及び変形例の復号化処理装置で実行される復号化処理プログラム、及び復号化処理装置で実行される復号化処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施形態及び変形例の復号化処理プログラム、及び復号化処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、上述した実施形態及び変形例の復号化処理プログラム、及び復号化処理プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
上述した実施形態及び変形例の復号化処理プログラム、及び復号化処理プログラムは、符号化処理装置又は復号化処理装置において上記記録媒体から読み出して実行することによりRAM53上にロードされ、上記ソフトウェア構成で説明した各部がRAM53上に生成されるようになっている。
なお、電子透かし埋込装置及び電子透かし抽出装置も、符号化処理装置及び復号化処理装置と同様の構成を備えているものとして説明を省略する。