Я посмотрел на изображение Лены, которое вы разместили.Вы действительно работали с этим изображением в качестве начала или это уже результат сжатия цвета?Я спрашиваю, потому что гистограмма изображения, безусловно, выглядит так, что осталось не так уж много для сжатия.Поэтому я бы посоветовал использовать другой источник изображения, например, здесь
img = imread('https://people.sc.fsu.edu/~jburkardt/data/png/lena.png');
Тогда первым делом необходимо убедиться, что изображение использует полный динамический диапазон uint8:
min_img = min(img(:));
max_img = max(img(:));
img_norm = (img - min_img) * (256 / double(max_img - min_img));
Чтобы быть в безопасности, давайте взглянем на изображения и их гистограммы:
figure
subplot(2,2,1)
imshow(img)
subplot(2,2,2)
hist(img(:))
subplot(2,2,3)
imshow(img_norm)
subplot(2,2,4)
hist(img_norm(:))
Поскольку изображение уже достаточно хорошо заполняет диапазон, мало что изменилось вгистограмма.Но попробуйте это с исходным источником изображения, который вы разместили, и вы поймете, что я имел в виду:
![OP's Lena Version](https://i.stack.imgur.com/W6Ujb.png)
По сравнению с альтернативной версией Lena, которую я предоставил
![enter image description here](https://i.stack.imgur.com/9dQPQ.png)
Теперь, когда мы убедились, что у нас есть разумная версия изображения для начала, давайте решим проблему шага квантования: основная идея состоит в том, чтобы
- преобразовать изображение в плавающее и нормализовать его к интервалу [0,1]
- , умножить его на количество желаемых шагов квантования (например, 128 для второго шага)
- округлить (пол) значения и преобразовать обратно в uint8
Таким образом, все значения между числом шагов квантования сжимаются в одно с помощью операции округления.
k = 8
figure
while (k > 0)
target_levels = 2^k;
target_compr_factor = 256 / target_levels;
reduced_image = uint8(floor(double(img)/256 * target_levels) * target_compr_factor);
subplot(3, 3, k);
imshow(reduced_image, [0 255]);
title(['Grey-level resolution 2^',num2str(k)]);
k = k - 1;
end
![lena_quantization](https://i.stack.imgur.com/9RTKh.png)