взлом

Открытая медицинская библиотека

Статьи и лекции по медицине ✚ Библиотека студента-медика ✚ Болезни и способы их лечения.

Хирургия Imwrite(X,map,'myfile1.jpg')
просмотров - 304

Создаёт файл myfile1.jpg, который хорошо включать в Internet-страницы для их просмотра браузером Internet Explorer.

Функция capture возвращает матрицу X, соответствующую точкам изображения, и матрицу цветов map (три столбца в формате RGB), использованную в изображении. Каждый элемент матрицы X равен номеру одной из строк матрицы map.

В системе MATLAB по матрицам X и map можно восстановить графическое изображение, применив команды

colormap( map );

image( X );

но данный разговор уже касается объектов image системы MATLAB, которым мы посвятим специальный раздел.

#$+ Показ произвольных растровых изображений.

Произвольное изображение на экране компьютера представляет собой массив пикселов, каждый из которых характеризуется своим цветом. Цвет пиксела определяется тремя составляющими: красным, зелёным и синим (Red, Green, Blue - RGB). Для задания величины составляющей цвета пиксела достаточно одного байта памяти (8 битов), где можно записать целые числа от нуля до 255 (всœего 256 значений).

Итак, каждому пикселу экрана должны соответствовать три целых числа в диапазоне от 0 до 255. В системе MATLAB таким целым числам соответствует тип данных, обозначаемый как uint8. Под такой тип данных отводится в памяти всœего один байт, вместо 8 байт для обычных вещественных (дробных) чисел типа double. По умолчанию любой переменной в системе MATLAB ставится в соответствие тип double независимо от числовых значений, которые вы присваиваете переменным.

К примеру, в результате следующей строки кода

iVar1 = 128

создаётся переменная с именем iVar1 и типом double, которой присваивается значение 128. Для хранения такого значения достаточно одного байта памяти, однако для переменной iVar1 типа double отводится 8 байт памяти. Налицо явный перерасход памяти компьютера.

Чтобы избежать такого перерасхода переменную нужно явно объявлять как целую, используя модификатор uint8:

iVar2 = uint8( 128 );

Так созданная переменная iVar2 считается целой переменной (а не вещественной), и под неё отводится один байт памяти. Такие переменные в системе MATLAB специально предназначены для хранения целых значений от 0 до 255 (с целью экономии памяти) и не предназначены для вычислений! По-крайней мере в версии MATLAB 5.2 это ещё так. В результате для следующего фрагмента

iVar2 = iVar2 + 1;

получаем сообщение об ошибке:

??? Function '+' not defined for variables of class 'uint8'.

Дословно означающее, что операция "сложение" для переменных типа uint8 не определœена.

Чтобы узнать (если забыли), какой тип имеет та или иная переменная из рабочего пространства системы MATLAB, нужно ввести и выполнить команду