示例#1
0
def main():
    file = 'example_small.jpg'
    trans_err = 2  # liczba bitów do przekłamania w procentach

    # Wczytanie pliku jpg w skali szarości
    image = read_img(file)
    show_img(image)

    # Wyświetlenie obrazu
    size, data_bin = img_to_bin(image)
    bin_before = data_bin

    # Zakodowanie bitów za pomocą kodu Hamminga
    data_bin, zeros = encode_Hamming(data_bin)

    # Przekłamanie losowych bitów
    data_bin, _ = gen_trans_err(data_bin, trans_err)

    # Odkodowanie bitów
    data_bin = decode_Hamming(data_bin, zeros)
    bin_after = data_bin

    # Wyświetlenie naprawionego obrazu
    fixed_img = bin_to_img(data_bin, size)
    show_img(fixed_img)

    print('Liczba bitow niezgodnych z oryginalnym obrazem: ' +
          str(bin_diff(bin_before, bin_after)))
示例#2
0
def test():
    file = 'example_small.jpg'
    multiple_by = 3  # liczba powielenia kazdego bitu

    print('err,bitcnt,unfixed')
    for i in arange(2, 10.1, 0.1):
        trans_err = round(i, 1)

        # Wczytanie obrazu z pliku
        image = read_img(file)

        _, data_bin = img_to_bin(image)
        bin_before = data_bin

        # Powielenie bitów
        data_bin = multiple_bits(data_bin, multiple_by)

        # Przekłamanie losowych bitów
        data_bin, _ = gen_trans_err(data_bin, trans_err)

        # Naprawa błędów
        fixed_data = demultiple_bits(fix_multiple_bits(data_bin, multiple_by),
                                     multiple_by)
        bin_after = fixed_data

        bit_cnt = bin_diff(bin_before, bin_after)
        diff_bits = round(bit_cnt * 100 / len(bin_after), 4)
        print(
            str(trans_err) + ',' + str(bit_cnt) + ',' +
            format(diff_bits, '.4f'))
示例#3
0
def main():
    file = 'example_small.jpg'
    trans_err = 2  # liczba bitów do przekłamania w procentach
    multiple_by = 3  # liczba powielenia kazdego bitu

    # Wczytanie obrazu z pliku
    image = read_img(file)
    show_img(image)

    # Wyświetlenie obrazu
    size, data_bin = img_to_bin(image)
    bin_before = data_bin

    # Powielenie bitów
    data_bin = multiple_bits(data_bin, multiple_by)

    # Przekłamanie losowych bitów
    data_bin, _ = gen_trans_err(data_bin, trans_err)

    # Wyświetlenie zakłóconego obrazu
    distorted_img = bin_to_img(demultiple_bits(data_bin, multiple_by), size)
    show_img(distorted_img)

    # Naprawa błędów
    fixed_data = demultiple_bits(fix_multiple_bits(data_bin, multiple_by),
                                 multiple_by)
    bin_after = fixed_data

    # Wyświetlenie naprawionego obrazu
    fixed_img = bin_to_img(fixed_data, size)
    show_img(fixed_img)

    print('Liczba bitow niezgodnych z oryginalnym obrazem: ' +
          str(bin_diff(bin_before, bin_after)))
示例#4
0
文件: bch.py 项目: Ferrilux/NiDUC
def main():
    file = 'example_small.jpg'
    trans_err = 2  # liczba bitów do przekłamania w procentach

    # Stworzenie obiektu BCH
    BCH_POLYNOMIAL = 8219
    BCH_BITS = 16
    bch = BCH(BCH_POLYNOMIAL, BCH_BITS)

    # Wczytanie pliku jpg w skali szarości
    image = read_img(file)
    show_img(image)

    # Wyświetlenie obrazu
    size, data_bin = img_to_bin(image)
    bin_before = data_bin

    # Zakodowanie bitów za pomocą kodu BCH
    coded_bin = bch.encode(bin_to_bytes(data_bin))

    # Przekłamanie losowych bitów
    corrupted_bin, _ = gen_trans_err(bytes_to_bin(coded_bin), trans_err)

    # Odkodowanie bitów
    corrupted_bin = bin_to_bytes(corrupted_bin)
    decoded_bin = bch.decode(coded_bin)
    bin_after = bytes_to_bin(decoded_bin)

    # Wyświetlenie naprawionego obrazu
    fixed_img = bin_to_img(bin_after, size)
    show_img(fixed_img)

    print('Liczba bitow niezgodnych z oryginalnym obrazem: ' +
          str(bin_diff(bin_before, bin_after)))