Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа № 1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
148.99 Кб
Скачать

Типы изображений

Пакет IPT поддерживает следующие типы изображений:

  • полутоновые изображения (изображения с градацией серого цвета);

  • двоичные изображения;

  • индексированные изображения;

  • цветные изображения RGB.

Большинство монохромных изображений обрабатывается операциями, которые работают с двоичными и полутоновыми изображениями, поэтому вначале наше внимание будет обращено именно на эти два типа изображений. Индексированный тип и тип изображений RGB будут обсуждаться

Полутоновое изображение — это матрица, элементы яркости которой представлены в виде числовых значений. Если элементы полутонового изображения принадлежат классу uint8 или uintl6, то они представлены целыми числами, соответственно, в интервалах [0,255] и [0,65535]. Если изображение принадлежит классу double, то его пиксели являются вещественными числами с плавающей запятой. По общему соглашению, пиксели изображений double должны лежать в интервале [0,1].

Двоичные изображения имеют в MATLAB весьма специфический смысл. Они являются логическими массивами, состоящими из 0 и 1. Поэтому массив элементов 0 и 1 других классов, например, uint8, двоичным изображением не считается. Для преобразования числовых массивов в логические служит функция logical. Если А — числовой массив, состоящий из 0 и 1, то для построения логического массива В с теми же элементами следует выполнить команду

В = logical(А) .

Если массив А имеет также другие элементы, отличные от 0 и 1, то функция logical преобразует все его ненулевые единицы в логический элемент 1, а все нулевые — в логический элемент 0. Операции сравнения и логические операторы тоже порождают логические массивы.

Чтобы проверить, является ли данный массив логическим, применяется функция islogical:

islogical(C) .

Если С — логический массив, то эта функция возвращает 1, в противном случае - 0.

Конвертирование классов и типов изображений

В пакете ITP имеются специальные функции (см. табл. 2.), которые совершают перенормировку (перемасштабирование) при конвертации одних классов и типов изображений в другие.

Таблица 2. Функции IPT для конвертации классов и типов изображений.

Имя

Преобразует в

Допустимый класс

im2uint8

uint8

logical,uint8,uint16,double

im2uintl6

uint16

logical,uint8,uint16,double

mat2gray

double (в область [0,1])

double

im2double

double

logical,uint8,uintl6,

,double

im2bw

logical

uint8,uint16,double

Индексирование матриц

Матрицы в MATLAB можно представить в виде последовательности векторов- строк, заключенных в квадратные скобки и разделенных точкой с запятой. Например, набрав строку

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

получаем матрицу 3x3

А =

1 2 3

4 5 6

7 8 9

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

>> А(2, 3)

ans = 6

Оператор двоеточие может использоваться при индексировании матриц для выбора двумерных блоков их элементов. Например,

>> СЗ = А(: , 3)

СЗ =

3

6

9

Здесь можно также использовать эквивалентную запись А(1:3, 3), которая просто выберет третий столбец матрицы.

Следующая команда извлекает верхние две строки:

>> Т2 = А(1:2, 1:3)

Т2 =

1 2 3

4 5 6

Слово end задает последний элемент строки или столбца. Следующие примеры являются простейшими иллюстрациями этого приема.

>> A (end, end)

ans = 9

>> A (end, end - 2)

ans =7

Индексировать можно не только последовательные элементы. Например, можно задать команду

>> А (1:2: end, 1:2: end)

ans =

1 3

7 9

Запись 1:2:end означает следующее: начать с 1, считать с шагом 2 и остановиться, когда счетчик достигнет последнего элемента. Шаг может быть отрицательным

Задание.

  1. Загрузить изображение в соответствии с вариантом. Определить размер изображения. Вывести дополнительную информацию о массиве с помощью функции whos.

  2. Вывести изображение на экран. Сохранить изображение.

  3. Перевернуть изображение симметрично относительно горизонтальной оси. Вывести результат на экран.

  4. Уменьшить исходное изображение, проредив его матрицу, в 2 и в 4 раза. Вывести результат на экран.

  5. Обрезать исходное изображение так, чтобы соответствующая ему матрица стала квадратной. Вывести результат на экран.

  6. Создать квадратную матрицу размера, совпадающего с размером матрицы, полученной в пункте 5, с помощью одной из стандартных функций: magic(n), rand(n) и других. Вывести результат на экран.

  7. Перемножить матрицы, полученные в пунктах 5 и 6. Вывести результат на экран.

5