2015-05-25 4 views

ответ

2

Получение индивидуальных бит-плоскостей очень просто в MATLAB. Используйте функцию bitget.

bitget принимает матрицу/матрицу интегрального типа (uint8, uint16 и т. Д.) И возвращает массив/матрицу того же размера, которая дает бит в указанной позиции.

Например, предположим, что ваш образ был A размера M x N и вы хотите наименее значимый бит, вы могли бы сделать это:

B = bitget(A, 1); 

B будет M x N матрица, где каждое место дает наименее значимый бит для соответствующих пикселей на изображении. Вы изменили бы второй параметр от 1 до нескольких бит, как и тип, поддерживаемый для получения желаемого местоположения бит, которого вы хотите, от 1, младшего значащего бита, до K, самого значимого бита.


Если вы хотите, чтобы все битовые плоскости в одной 3D-матрицы, которая может быть легко сделать следующим образом, предполагая 8-разрядное целое без знака полутоновое изображение, сохраненное в A:

B = zeros(size(A, 1), size(A, 2), 8, 'uint8'); 
for idx = 1 : 8 
    B(:,:,idx) = bitget(A, idx); 
end 

Это будет производят 3D-матрицу B из 8 срезов, где первый срез (B(:,:,1)) обозначает LSB в каждом местоположении пикселя вплоть до последнего фрагмента (B(:,:,8)), который обозначает MSB в каждом местоположении пикселя.

Подробнее о bitget на официальной документации MathWorks' на функцию: http://www.mathworks.com/help/matlab/ref/bitget.html

 Смежные вопросы

  • Нет связанных вопросов^_^