포럼: Japanese (Thread #12913)

リードソロモンのバグ? (2006-11-21 06:10 by Anonymous #26118)

ReedSolomon.javaを使って
11010111 11100000 10001101 11011000 00000000
00000000 10000110 00111111 00111000 10110111
の誤り訂正を行ったところ,エラーは発見されませんでした。
しかしわざと6ワード目の最右ビットを変えて
誤り訂正を行ったところ,
11010111 11100000 10001101 11011000 00000000 00000001 10000110 00111111 00111000 10110111
           ↓
11010111 11100000 10001101 01111001 00000000 00000001 10000110 00111111 00111000 10110111
となってしまい,最初のビット列とは異なるビット列が
得られてしまいました。

これはリードソロモンのバグでしょうか?

Reply to #26118×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: リードソロモンのバグ? (2006-11-21 09:22 by yanbe #26121)

報告ありがとうございます。結論から言うとおそらくバグです。

ReedSolomonクラスは過去に「どうもバグがあるらしい」という報告を何回か受けていました。今回、初めてその具体的な例を提示していただけたので、これで検証できそうです。

近いうちにチェックしてみます。それまでしばしお待ちください。
Reply to #26118

Reply to #26121×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: リードソロモンのバグ?追記 (2006-11-22 09:17 by Anonymous #26131)

引き続きリードソロモン検証を行っております.

間違っているかもしれませんが,一応検証の報告をしておきます.

どうやらencode_data関数を使って作成したデータに対しては
正しく誤り訂正が出来ることが分かりました.

http://www.swetake.com/qr/qr3.html

を見てQRコードの誤り訂正について学習したのですが
その一番下にある
32 65 205 69 41 220 46 128 236
に対して17個の誤り訂正コード語を付加したところ,
サイトにあるような
A.32 65 205 69 41 220 46 128 236 42 159 74 221 244 169 239 150 138 70 237 85 224 96 74 219 61
とはならずに
B.32 65 205 69 41 220 46 128 236 197 120 43 131 62 107 35 225 194 255 60 146 245 18 182 199 228
となってしまいました.
Aに誤りを含ませたところ,正しく訂正することはできませんでしたが,
Bに含ませた誤りは訂正することが出来ました.
http://kunekunekune.hp.infoseek.co.jp/rs.java

私はリードソロモンには詳しくないので
今は深く言及できませんが,一応報告まで.
Reply to #26118

Reply to #26131×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

生成多項式が違います (2007-09-28 22:09 by m-miyzaki #32546)

http://sourceforge.net/projects/rscode/
のデコーダは生成多項式G(x)が違うので、
そのままではQRコードには使えません。
とはいえ、シンドロームの最上位項以外は一致
しますので、誤まり確認ぐらいはできるようです。

http://sourceforge.jp/projects/reedsolomon/
にQRコード対応のJAVAによるデコーダのプロジェクトを
開きましたので、よかったら使ってみてください。
Reply to #26118

Reply to #32546×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: 生成多項式が違います (2007-10-01 18:30 by yanbe #32606)

御指摘ありがとうございます.現状のリードソロモン符号周りのバグの原因は御指摘の通りだと思います.

早速,ご紹介いただいたリードソロモン符号のデコーダ実装を手元のコードに組み込んでみました.

その結果,概ね正しく動いているようです.特に,手元のテスト画像セットのうち,今までは生成多項式が違うためにエラー訂正に失敗していたQRコードも,訂正できています.

特に問題が無ければ近々このリードソロモン符号の実装に基づいた新バージョンを公開したいと思います.
Reply to #32546

Reply to #32606×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

ありがとうございます (2007-10-01 22:28 by m-miyzaki #32610)

できましたら、ver. 0.1.5をリリースしましたので、
そちらでリリースしてください。

それと現行のBCH(15, 5)の処理ですが、
2重エラーと3重エラーの復号に、若干問題があるようです。

いっしょにBCH(15, 5)の復号プログラムもありますので
試してもらえるとうれしいです。アルゴリズムは、
32個の正規のコードとのハミング距離をとり、
3以下だったらそのコードを採用するという。
シンプルかつ、これだけは書きたくなかったものですが、
たぶん、シンドロームを計算するよりも高速です。
Reply to #32606

Reply to #32610×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login