首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

请教大神,要在极不靠谱的信道,通过 320bits 传递 16bits 数据,用什么检错纠错算法比较好,不会丢,只会位翻转

  •  1
     
  •   noname2001 · 32 天前 · 2131 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大量冗余,怎么实现可靠传输,谢谢各位了。

        1
    geligaoli   31 天前
    这么高的冗余,加上校验数据,可以多次重传。
        2
    xemtof   31 天前
    试试海明码。
        3
    geligaoli   31 天前
        4
    cigarzh   31 天前
    啥叫极不靠谱? bit flipping 概率很高吗?
        5
    noname2001   31 天前
    @cigarzh 翻转率极高 一片片的翻转
        6
    noname2001   31 天前
    @geligaoli rscode 测试过 效果普通 这个页面现在没办法打开 谢谢您回复
        7
    noname2001   31 天前
    我的场景是通过在画面中增加水印,会通过 h264 和 jpeg 双重有损编码, 增加的信息大范围被损坏,想要一种可靠的算法确定 16bits 信息。目前做的的尝试有 fft 水印、rscode 等
        8
    noname2001   31 天前
    @geligaoli 是单向传输 多谢
        9
    noname2001   31 天前
    @xemtof 海明能检测多位翻转吗? 我的应用是正文 2 字节、校验位可以是 28 字节,如果海明能搞定就好了
        10
    lonewolfakela   31 天前
    "翻转率极高 一片片的翻转",“极高”到底是多高呢,有的人可能觉得 10%就很高了,有的人可能到 50%才会说“极高”……另外“一片片”是说反转的位置是连续的么?那么一般在 320bits 里连续的翻转段会有多长呢?
        11
    noname2001   31 天前
    @lonewolfakela 可能最极端会接近 90%
        12
    noname2001   31 天前
    所以有效数据位选择 16 位,相当于 6.6%的有效数据
        13
    honeycomb   31 天前 via Android
    @noname2001 你应当掌握访问 Wiki 的技能,都是写算法的了。
        14
    noname2001   31 天前
    @lonewolfakela 我增加的水印实际显示和背景相关,所以会出现大片的错误,是全 0 或全 1 这种,连续位翻转的可能性不大 多谢
        15
    noname2001   31 天前
    @honeycomb 特殊 日寸 其 月, 好失落 多谢
        16
    xemtof   31 天前
    @noname2001 能,有公式 2^k -1 > n+k。
        17
    danielmiao   31 天前
    @noname2001 从理论上讲高于 50%的错误率是没办法的吧,因为大部分的纠错也好查错也好的基础条件是,正确数据是占多数的,通过多数的正确数据去恢复少数的错误数据,你这 90%的错误率的时候,实际上错误数据要远大于正确数据,而你无法识别那些是正确的那些是错误的,最终的结果是正确数据被错误数据纠正成错误数据了
        18
    noname2001   31 天前
    需求是给视频照片加不可见水印,通过 264 或 jpeg 编码、解码后还能得到这个信息 多谢
        19
    danielmiao   31 天前
    根据你的描述,我猜测的场景应该是防止盗录 /截屏,在视频数据里加上了唯一识别码,然后想在提取出来唯一识别码,我感觉换个思路会不会更好,比如在纯中块中间插入某些颜色接近但是能规避 JPEG 合并的像素点之类的方案
        21
    noname2001   31 天前
    @danielmiao LSB 之类的算法对 JPEG 基本无用 信噪比太低 当成噪声处理掉了
        22
    noname2001   31 天前
    @crystom 多谢多谢 拜读一下
        23
    noname2001   31 天前
    @crystom 这个 FFT 这试过了 抗干扰还行 但是运算效率不能满足我的需求 多谢
        24
    danielmiao   31 天前
    @noname2001 LSB 算法确实信噪比太低;可以考虑类似锐化效果方式,在轮廓边缘加上特定的数据带,从感官上来说无非是图片被锐化过,普通人不仔细看应该不太明显,同时抗编码攻击效果还行,缺点是只能适用于截图,翻拍无效,而且抗变型攻击能力奇差,拉伸缩放以后基本上无效了
        25
    Cooky   31 天前 via Android
    sha256 ?省事
        26
    smdbh   31 天前
    很好奇应用背景
        27
    SeanChense   31 天前
    应付位翻转难道不应该用格雷码吗?
        28
    bilibilifi   31 天前 via iPhone
    信息论有点忘了...记得有库可以干的
        29
    blindie   31 天前 via Android
    这不就是典型数字水印的需求吗。直接搜相关论文吧。学校里的时候老师教的是就是 FFT 加水印,现在最新技术是啥就不知道了。又要效果又要速度,那可能得找个权衡。
        30
    favourstreet   31 天前 via Android
    不开玩笑:把 16Bit 重复 20 遍,20 个 bit 当一个使
        31
    expy   31 天前
    电影院防盗摄的水印应该有成熟的实现吧。

    搜搜 transcoding resistant digital watermark ?

    https://www.researchgate.net/publication/316486963_Digital_Cinema_Watermarking_State_of_Art_and_Comparison
        32
    ivan_wl   31 天前
    BCH, LDPC
        33
    fonlan   31 天前 via Android
    Polar 极化码?
        34
    noname2001   31 天前
    亲爱的大神们:我们应用的场景是,给视频或图片素材打水印、通过网络播放、在前端通过 hdmi 信号分析画面,判断是否有水印或水印 ID。抓取 hdmi 的设备只能输出 mjpeg 的码流, 所以有 h264 和 jpeg 双重有损编码破坏。bit 全 0 或全 1 损坏率可能达到 90%。
        35
    noname2001   31 天前
    目前作过的尝试有:
    1 重复法,测试误报率高。
    2 fft 水印:测试速度慢,实时性差,水印人眼勉强辨识,opencv 很难识别,特别影响画面边角纯色区域(条纹很明显)
    3 其他 gayhub/stego-toolkit 这里提到的隐写算法,都无法适应我们应用的场景。
    4 rscode 算法:测试超过 1 半损坏,基本无法还原。
        36
    noname2001   31 天前
    大家提到的抗转码水印、BCH、LDPC、极化码,我还正在研究,特别是 Polar 感觉好前沿, 哈哈。

    再次感谢大家集思广议,让我受益匪浅。
        37
    noname2001   30 天前
    别沉 自顶, 想找一个冗余 10 倍,能可靠纠错的算法,这个需求很特别( BT ) 还请大神赐教!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2111 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 07:09 · PVG 15:09 · LAX 00:09 · JFK 03:09
    ♥ Do have faith in what you're doing.