Полутоновые изображения
Полутоновое изображение — это матрица, элементы яркости которой представлены в виде числовых значений. Если элементы полутонового изображения принадлежат классу uint8 или uintl6, то они представлены целыми числами, соответственно, в интервалах [0.255] и [0,65535]. Если изображение принадлежит классу double, то его пикселы являются вещественными числами с плавающей запятой. По общему соглашению, пикселы изображений double должны лежать в интервале [0,1].
Функции для конвертации цветных изображений:
-
Имя
Преобразует в
Допустимый класс
im2uint8
uint8
logical,uint8,uintl6,double
im2uintl6
uintl6
logical,uint8,uint16,double
mat2gray
double (в область [0,1])
double
im2double
double
logical,uint8,uintl6,double
im2bw
logical
uint8,uint16,double
Функция im2uint8 обнуляет все отрицательные значения входного изображения, ставит число 255 на место величин, больших 1, и умножает остальные значения на 255, после чего округляет результат до ближайшего целого числа.
Преобразование произвольных массивов double в перенормированные массивы (изображения) double со значениями в интервале [0,1] выполняется с помощью функции mat2gray, имеющий следующий синтаксис:
g = mat2gray(A, [Amin, Amax]) ,
где изображение g имеет значения пикселов в интервале от 0 (белый) до 1 (черный). Параметры Amin и Amax имеют следующее действие: все элементы, меньшие Amin, обнуляются, а все элементы, большие Amax, заменяются на 1.
При выполнении команды
>> g = mat2gray(A) ;
значения Amin и Amax — это настоящие максимум и минимум массива А. Предполагается, что входной массив из класса double. Выходной массив также принадлежит классу double.
Функция im2double преобразует входной массив в класс double. Если входной массив был из класса logical,uint8 или uint 16, то функция im2double преобразует его в класс double с диапазоном [0,1]. Если входной массив был класса double, то функция im2double оставляет его без изменений.
Функция im2bw, имеющая синтаксис g = im2bw(f, Т) порождает двоичное изображение g из полутонового изображения f, используя порог Т. Значения всех элементов f, меньших Т, становятся логическим 0, а все остальные — логическими 1. Значение порога Т должно находиться в интервале [0,1] независимо от класса входного изображения. Выходной массив автоматически делается логическим.
Индексирование векторов
Запись
>> v(:) генерирует вектор-столбец;
>> v(l:end) дает вектор-строку
>> v(l:2:end) начать с 1, считать с шагом 2 и остановиться, когда счетчик достигнет последнего элемента
>> v(end:-2:l) счетчик индексов начинается от последнего элемента, уменьшается на каждом шаге на 2 и останавливается, достигнув первого элемента
Функция linspace, имеющая синтаксис
х = linspace(а, Ь, n) ,
порождает вектор-строку х из n элементов, расположенных на равных расстояниях на отрезке от числа а до числа Ь, включая их самих.
» А = [123; 456; 789]
Слово end можно использовать аналогично векторному индексированию.
>> A(end, end)
ans = 9
>> A (end, end - 2)
ans = 7
>> A(2:end, end:-2:1)
ans = 6 4
9 7
>> s = sum(A(:)) нахождение суммы всех элементов числовой матрицы.
>> k = size(A, 1) сообщает размер матрицы А по первому измерению, т.е. выдает число строк матрицы А
>> size (А, 2) сообщает число столбцов матрицы.
- Функция zeros(M.N) генерирует матрицу MxN из одних нулей класса double.
- Функция ones(M.N) генерирует матрицу MxN из одних единиц класса double.
- Функция true (M,N) строит логическую матрицу MxN из единиц (истина).
- Функция false(M,N) строит логическую матрицу MxN из нулей (ложь).
- Функция magic (М) порождает «магический квадрат» МхМ. В этой квадратной матрице суммы чисел по любой строке, по любому столбцу и по главным диагоналям равны между собой.
- Функция rand(M,N) генерирует матрицу MxN, элементами которой являются нормально распределенные (гауссовы) случайные величины со средним 0 и с дисперсией 1.