Исследование методов обработки изображений с помощью пакета IMAGE PROCESSING TOOLBOX: Методические указания к лабораторным работам, страница 5

Поскольку в языке Matlab элементы массива упорядочены по столбцам, то допустимы операторы вида A(n1:n2), которые выделяют пронумерованные элементы с номера n1 до номера n2. Оператор A(:) записывает все элементы массива A в виде столбца.

Для определения размера массива может использоваться оператор size, который возвращает вектор, элементы которого содержат число строк, столбцов и т.д. анализируемого массива.  Например:

%формируем массив размером 1x2

mas = [1 2; 3 4]

%определяем размерность массива

razmer = size(mas)

При работе с матрицами в системе Matlab, используются стандартные арифметические операторы: +, -, *, / (- левое деление), \ (- правое деление), ^(- возведение матрицы в степень).

Для обозначения поэлементных операций с векторами и матрицами используется оператор .(- точка), который добавляется перед стандартным обозначением арифметической операции:

¨  .*– поэлементное умножение для массивов;

¨  .^ – возведение в степень для массивов;

¨  .\– левое деление для массивов;

¨  ./– правое деление для массивов.

Пример

%формируем две матрицы 3x3

A = [1 2 3; 4 5 6; 7 8 9]

B = [1 1 1; 2 2 2; 3 3 3]

%перемножаем матрицы

C = A*B

%выполняем поэлементное умножение массивов

D = A.*B

Циклы

Для организации циклических вычислений в Matlab используются два оператора: for и while.

Синтаксис оператораfor:

for <variable> = <expression>

    <statements>

end

В качестве выражения <expression> обычно используется выражение вида:

i_start:i_step:i_end,

где i_start  - стартовое значение счетчика цикла <variable>, i_step – шаг, с которым изменяется значение счетчика цикла, i_end  - конечное значение счетчика цикла. Если шаг не задан, то по умолчанию он принимается равным 1.

Пример

for m = 1:k

    for n = 1:k

        a(m,n) = 1/(m+n -1);

    end

end

Синтаксис оператораwhile:

while <expression>

    <statements>

end

Операторы <statements> выполняются до тех пор, пока действительная часть выражения <expression> имеет все ненулевые элементы.

Пример

K = 1;

eps = 0;

n = 10;

while eps < n

    eps = eps+k;

k = k + 1;

end

Для преждевременного выхода из циклов используется оператор break. Оператор break определен только внутри операторовfor и while. Для выхода из функций необходимо использовать оператор return.

Для досрочной передачи управления на следующую итерацию цикла используется оператор continue.

Условные операторы

Для реализации ветвления реализованы следующие операторы: if и switch.

Операторif может иметь следующий синтаксис:

if <expression>

    <statements>

end

Операторы <statements> выполняются, если выражение <expression> справедливо.

Расширенная форма оператора if имеет следующий вид:

if <expression>

    <statements1>

else

    <statements2>

end

Если выражение <expression> истинно, то выполнятся операторы <statements2>, иначе – операторы <statements1>.

Пример

if A > B

   'greater'

else if A < B

   'less'

else if A == B

   'equal'

else

   error('Unexpected situation')

end

Оператор switch имеет следующий вид:

switch <switch_expr>

  case <case_expr>

    <statement>,...,<statement>

  case {<case_expr1>,<case_expr2>,<case_expr3>,...}

    <statement>,...,<statement>

...

  otherwise

    <statement>,...,<statement>

end

В отличие от C++, в Matlab в операторе switch выполняется только первая case-ветка, значение case_expr которой совпало с результатом вычисления выражения switch_expr. Поэтому нет необходимости в использовании оператора break для выхода.

Пример

method = 'Bilinear';

switch lower(method)

   case {'linear','bilinear'}

      disp('Method is linear')

   case 'cubic'

      disp('Method is cubic')

case 'nearest'

      disp('Method is nearest')

   otherwise

      disp('Unknown method.')

end

Краткий перечень основных функций пакета Image Processing Toolbox и операторов, наиболее часто используемых при обработке матриц, приведен в приложении. Для того чтобы в среде Matlab посмотреть справочную информацию по какой-либо функции, необходимо в командном окне набрать команду вида

helpcommand,

где command – имя интересующего нас оператора.

Пример

helpimhist

Команды работы со строками

t = strcat(t1,t2,…)- объединение нескольких строк t1,t2,…

в новую строку t.

t=int2str(k)-преобразование целого числа kв строку t.

5. Порядок выполнения работы

С помощью пункта меню FILE®NEW®M-FILE или соответствующей кнопки панели инструментов открыть окно редактора. В нем составить программу на языке Matlab с использованием команд из пакета Image Processing Toolbox, которая выполняла бы следующую последовательность действий.

1. Считать изображение из файла, указанного преподавателем.

2. Определить параметры изображения и его размер. При этом для непосредственного вывода этих характеристик в командное окно не следует ставить в конце команды imfinfo символ   ;   .

3. Отобразить считанное изображение на экране.

4. Вырезать из исходного изображения небольшой участок, выделив его с помощью мыши. Вывести его в новое окно и сохранить в новом файле в своем рабочем каталоге.

5. Изменить режим вывода изображений, добавив оси координат.

6. Вырезать из исходного изображения участок 100х100 точек с заданным местоположением, определяя его по координатным осям. Вывести его в текущее окно с запретом масштабирования.

7. Создать новое изображение из последнего, увеличив его размеры в два раза. Вывести его в новое окно, запретив масштабирование.

8. Повернуть последнее изображение влево на 45 градусов с сохранением размеров. Отобразить его в отдельном окне.

9. Отобразить на экране двумерную функцию яркости в виде поверхности.

10. Вывести в одно окно последовательность заданного числа кадров. Использовать режим вывода, в котором отсутствуют мелькания при смене кадров.