снижение качества изображения под Matlab - PullRequest
3 голосов
/ 05 октября 2009

Привет, Я пытаюсь найти простой способ манипулировать изображением, чтобы снизить его качество с 8 до 3 бит.

Какой самый простой способ добиться этого? Приветствия

Ответы [ 3 ]

4 голосов
/ 05 октября 2009

Если вы хотите линейно масштабировать его, просто разделите значение каждого пикселя на 255/7 (т. Е. Если исходное изображение хранится в матрице I, пусть изображение с низким разрешением J = I / (255/7)).

ОБНОВЛЕНО: Из-за ошибки в моей константе масштабирования.

Вот пример:

Results

2 голосов
/ 05 октября 2009

Если у вас есть изображение, которое хранится как тип uint8 в MATLAB, то значения пикселей будут в диапазоне от 0 до 255. Чтобы ограничить значения только 3 битами точности (таким образом, используя только цифры от 0 до 7 ), вы можете масштабировать данные как в следующем примере:

>> data = uint8([0 23 128 200 255]);  % Create some data of type uint8
>> scaledData = data*(7/255)

scaledData =

    0    1    4    5    7

>> class(scaledData)

ans =

uint8

Обратите внимание, что даже если масштабированные значения ограничены диапазоном от 0 до 7, переменная, в которой они хранятся, по-прежнему имеет тип данных uint8, поскольку это самый маленький MATLAB. Неиспользуемые старшие биты равны 0.

В зависимости от того, как вы выводите данные масштабированного изображения в файл (если вы хотите это сделать), вы можете уменьшить точность сохраненных значений до менее чем 8 бит (например, PNG-файлы). может хранить 4-битные типы ).

1 голос
/ 05 октября 2009

int8 - наименьшее целочисленное значение в Matlab. Вы можете использовать только 3 из 8 битов в int8, сдвигая вправо любое значение любого пикселя в изображении.

Если у вас есть доступ к Fixed-Point Toolbox , вы можете использовать numerictype объекты с простым обозначением:

T = numerictype(s,w)

Соч. из руководства Matlab:

T = числовой тип (s, w) создает объект числового типа с фиксированной точкой: неопределенное масштабирование, подписанное свойство значение s и длина слова w.

...