Удалить debug_decode.py
This commit is contained in:
@@ -1,80 +0,0 @@
|
|||||||
cat > debug_decode.py << 'EOF'
|
|
||||||
print("Отладка decode_dct")
|
|
||||||
|
|
||||||
from core.dct import _apply_dct, _extract_bits_from_block, MID_FREQ_INDICES
|
|
||||||
from core.utils import bits_to_text
|
|
||||||
from PIL import Image
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
# Загружаем закодированное изображение
|
|
||||||
print("Загружаем out_min.png...")
|
|
||||||
img = Image.open("out_min.png").convert('L')
|
|
||||||
pixels = np.array(img, dtype=np.float64)
|
|
||||||
height, width = pixels.shape
|
|
||||||
print(f"Размер: {height}x{width}")
|
|
||||||
|
|
||||||
# Извлекаем все биты
|
|
||||||
print("\nИзвлекаем биты из всех блоков...")
|
|
||||||
all_bits = []
|
|
||||||
block_count = 0
|
|
||||||
|
|
||||||
for i in range(0, height - 8 + 1, 8):
|
|
||||||
for j in range(0, width - 8 + 1, 8):
|
|
||||||
block = pixels[i:i+8, j:j+8]
|
|
||||||
dct_block = _apply_dct(block)
|
|
||||||
bits_from_block = _extract_bits_from_block(dct_block, len(MID_FREQ_INDICES))
|
|
||||||
all_bits.extend(bits_from_block)
|
|
||||||
block_count += 1
|
|
||||||
|
|
||||||
if block_count <= 5:
|
|
||||||
print(f"Блок {block_count}: биты={bits_from_block[:20]}...")
|
|
||||||
|
|
||||||
print(f"\nВсего извлечено битов: {len(all_bits)}")
|
|
||||||
|
|
||||||
# Покажем первые 50 битов
|
|
||||||
print(f"\nПервые 50 битов: {all_bits[:50]}")
|
|
||||||
|
|
||||||
# Поиск стоп-маркера (8 нулей подряд)
|
|
||||||
print("\nПоиск стоп-маркера (8 нулей подряд)...")
|
|
||||||
stop_counter = 0
|
|
||||||
stop_position = -1
|
|
||||||
for i, bit in enumerate(all_bits):
|
|
||||||
if bit == 0:
|
|
||||||
stop_counter += 1
|
|
||||||
if stop_counter == 8:
|
|
||||||
stop_position = i - 7
|
|
||||||
print(f"Стоп-маркер найден на позиции бита {stop_position}")
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
stop_counter = 0
|
|
||||||
|
|
||||||
if stop_position == -1:
|
|
||||||
print("Стоп-маркер НЕ НАЙДЕН!")
|
|
||||||
# Покажем где встречаются нули
|
|
||||||
print("\nПоиск 8 нулей подряд:")
|
|
||||||
for i in range(len(all_bits) - 7):
|
|
||||||
if all_bits[i:i+8] == [0,0,0,0,0,0,0,0]:
|
|
||||||
print(f" Найдено на позиции {i}")
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
print(f"Битов до стоп-маркера: {stop_position}")
|
|
||||||
bits_to_use = all_bits[:stop_position]
|
|
||||||
|
|
||||||
# Преобразуем в байты
|
|
||||||
print("\nБайты до стоп-маркера:")
|
|
||||||
for k in range(0, len(bits_to_use), 8):
|
|
||||||
if k + 8 <= len(bits_to_use):
|
|
||||||
byte_bits = bits_to_use[k:k+8]
|
|
||||||
byte_val = 0
|
|
||||||
for b in byte_bits:
|
|
||||||
byte_val = (byte_val << 1) | b
|
|
||||||
print(f" Байт {k//8}: {byte_val:3d} (0x{byte_val:02x}) биты={byte_bits}")
|
|
||||||
|
|
||||||
# Декодируем
|
|
||||||
bits_string = ''.join(str(b) for b in bits_to_use)
|
|
||||||
try:
|
|
||||||
decoded = bits_to_text(bits_string)
|
|
||||||
print(f"\nДекодировано: '{decoded}'")
|
|
||||||
except Exception as e:
|
|
||||||
print(f"\nОшибка декодирования: {e}")
|
|
||||||
EOF
|
|
||||||
Reference in New Issue
Block a user