Нормализация - это процесс изменения диапазона значений в другой диапазон значений.
У вас есть диапазон [0,3] из-за двоичных значений 00, 01, 10 и 11. Причина, по которой вы хотите нормализовать это значение [0,255], - охватить весь диапазон интенсивностей пикселей. Если бы вы просто сохранили изображение из массива со значениями в диапазоне [0,3], он выглядел бы черным, потому что все эти значения очень близки к 0 и очень далеки от 255.
Страница wikipedia на image normalization дает вам общую формулу для этого. Он также показывает пример преобразования диапазона [50, 180] (назовем этот диапазон A) на [0,255] (диапазон B).
Во-первых, мы сдвигаем А так, чтобы оно начиналось с нуля. Эффективно вычитаете наименьшее значение (50), чтобы [50, 180] становилось [0,130] (назовем это C). Максимальное расстояние для C составляет 130-0 = 130, а для B - 255-0 = 255. Таким образом, вам нужно будет умножить все значения C на 255/130. Так как наименьшее значение в C равно 0, то это будет для C * 255/130. Но если B не начинается с 0, вы просто добавляете необходимое смещение для учетной записи для этого.
В случае, если слова запутывают, вот визуализация преобразования [2,5] в [-4,4].

В ваших случаях, нормализация от [0,3] до [0,255]. Поскольку оба диапазона начинаются с 0, вам не нужны никакие смещения, простое умножение на 255/3. Этот результат преобразует {0,1,2,3} в {0,85,170,255}.
Здесь необходимо соблюдать осторожность, 255/3 - это целое число. Но если бы вы нормализовались, скажем [0,7], для наиболее точного преобразования потребуется коэффициент масштабирования float 255/7. Сохраняете ли вы это как float или округлите его до целого, выходит за рамки этого ответа.
Простейший код для достижения этой цели будет
import Image
import numpy as np
# The array will be of type `np.uint8`. For integer computations that exceed
# this range, use `np.asarray(Image.open(...), dtype=int)`.
stego = np.asarray(Image.open('Steganography_original.png'))
extracted = stego & 0b00000011
extracted *= (255/3)
# Compare result with the one from wikipedia
wiki_extracted = np.asarray(Image.open('Steganography_recovered.png').convert('RGB'))
if np.all(wiki_extracted == extracted):
print 'All pixels match'
ли вы на самом деле есть вопрос? –
* Учитывая приведенную выше информацию, как код Python будет декодировать изображение кота из древовидного изображения? * - Должен ли я перефразировать? –
Это не вопрос, это сайт QA, а не служба «write-my-code-for-me». –