假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1
简单点说,汉明距离就是一组二进制数据变成另一组数据所需的步骤数(它表示两个相同长度的字符串对应位置的不同字符的数量),显然,这个数值可以衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样。
要检测所有最多d个错误的集合,必须满足任意两个帧之间的海明距离是d+1或更多。
这是因为,如果距离小于d+1,那么当一个帧发生少于或等于d个错误时,可能会变成另一个有效的帧,这样就检测不到错误了。
考虑二进制编码“1010”和“1001”,海明距离为2,这意味着我们可以检测出最多1个错误,因为任何一个单一位的错误都会导致结果与原来的两个编码都不同。
要校正所有最多d个错误的集合,必须满足任意两个帧之间的海明距离是2d+1或更多。
如果一个码字有d位发生差错,它仍然距离原来的码字距离最近,可以直接恢复为该码。
也就是说,纠错的目的是为了让检测出差错的编码,这里出现差错的编码也就是与目标编码不符的非法编码,变回它改变前的合法编码,而在海明距离是2d+1时,如果出现d位差错,它只需要d位改变就可变回合法编码,一旦出现d+1位差错,数据也会想要通过d位改变成为合法编码,但此合法编码并非之前我们想要的编码,所以2d+1的海明距离只能纠正d个错误。
如图,非法编码1只需改变d位就能变为合法编码1,而如果其一开始的编码为合法编码2,即其出现了d+1个错误,其仍会变为合法编码1,无法达到纠正效果 。