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)))
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'))
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)))
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)))