Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Вывод изображения на дисплей

Загрузка, вывод и сохранение изображений в MATLAB. Элементарные преобразования черно-белого изображения.

 

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

Пакет Image Processing Toolbox (IPT) состоит из функций MATLAB (они называются М-функции или М-файлы), которые расширяют возможности стандартной среды MATLAB для решения задач цифровой обработки изображений.

Загрузка изображений

Для загрузки (чтения) изображений в рабочее пространство MATLAB используется функция imread со следующим синтаксисом:

imread(‘filename’).

Здесь filename – строка символов, образующих полное имя загружаемого файла изображения (включая любое расширение). Например, командная строка

>> f=imread(‘chestxray.jpg’);

Присваивает изображение формата JPEG с именем chestxray матричной переменной f. Заметим, что символ (‘) используется в качестве ограничителя символьной строки filename. Точка с запятой в конце командной строки означает инструкцию системе MATLAB не отображать вывод для данной команды. Если точка с запятой отсутствует, то MATLAB отображает результат (вывод) выполнения операций в командной строке. Символ приглашения (>>) обозначает начало командной строки, который появляется в окне команд MATLAB.

Приведем таблицу с некоторыми графическими форматами, распознаваемыми командами imread и imwrite, начиная с MATLAB 6.5.

Формат изображения Расшифровка сокращения Допустимые расширения
TIFF JPEG GIF BMP PNG XWD Tagget Image File Format Joint Photographic Experts Group Graphics Interchange Format Windows Bitmap Portable Network Graphics X Window Dump .tif,.tiff .jpg,.jpeg .gif .bmp .png .xwd

Если в имя файла изображения не включена информация о пути к данному файлу, то filename ищется в текущей папке. А если его там нет, то делается поиск данного файла во всех папках, пути к которым указаны в пути поиска MATLAB. Самый простой способ прочесть изображение из некоторой конкретной папки – это включить полный или относительный путь к этой папке в строке filename. Например, команда

>> f=imread(‘D:\myimage\chestxray.jpg’);

считывает изображение из папки myimage на диске D:, а команда

>> f=imread(‘.\myimage\chestxray.jpg’);

загружает изображение из подпапки myimage текущей рабочей папки. Текущая рабочая папка MATLAB отображается в строке инструментов рабочего стола и ее можно поменять вручную.

Функция size(f) возвращает размер изображения, т.е. число строк и столбцов:

>> size(f)

ans =

1024 1024

Эта функция будет особенно полезной при автоматическом определении размера изображения, которое делается операцией

>> [M,N]=size(f);

При такой записи переменной M будет присвоено число строк изображения, а переменной N – число столбцов.

Функция whos сообщает дополнительную информацию о массиве. Например, строка

>> whos f

дает следующий результат:

Name Size Bytes Class
f 1024x1024   uint8 array
Grand total is 1048576 elements using 1048576 bytes

Запись unit8 означает один из классов данных MATLAB.

 

Вывод изображения на дисплей

Изображения можно вывести на дисплей компьютера с помощью функции imshow, которая имеет синтаксис:

imshow(fg,G);

где f – матрица изображения, а G – число уровней яркости, используемое при отображении этого изображения. Если аргумент G опущен, то по умолчанию принимается 256 уровней яркости. Команда

imshow(f,[low high])

означает, что все пиксели со значением не больше числа low надо показывать черными, а все пиксели со значениями не меньше числа high - белыми. Все промежуточные значения показываются с промежуточной яркостью с использованием числа уровней, принятому по умолчанию.

Запись в командной строке

imshow(f, [ ])

задает для переменной low минимальное значение массива f, а переменной high присваивает его максимальное значение.

Пример 1. Чтение и вывод изображения.

Следующая команда читает изображение bird.bmp, выдает основную информацию об этом изображении и отображает его с помощью функции imshow:

>> f=imread('D:\Document\bird.bmp');

>> whos f

Name Size Bytes Class
f 512x512   uint8 array
Grand total is 262144 elements using 262144 bytes

>> imshow(f, [ ])

В результате выполнения этой команды появится окно, содержащее рисунок, ниспадающие меню и кнопки инструментов.

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

Если теперь показать другое изображение с помощью функции imshow, то MATLAB поместит его на место старого. Чтобы сохранить на рабочем столе предыдущее изображение, можно использовать команду figure. Если набрать строку

>> imshow(f), figure, imshow(g)

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

>> imshow(g, [ ])

 

Сохранение изображений

Изображения записываются на диск функцией imwrite, которая имеет следующий синтаксис:

imwrite(f, ‘filename’)

При такой записи строка filename должна содержать расширение, поддерживаемое системой MATLAB (см. табл. 1). Иначе желаемый формат можно задать явно с помощью третьего аргумента функции. Например, следующая команда записывает матрицу f в изображение с форматом TIFF с именем patient:

>> imwrite(f, ‘ patient ’, ‘tif ’)

или, что эквивалентно,

>> imwrite(f, ‘ patient.tif ‘)

Если строка filename не содержит информацию о пути, то функция imwrite записывает файл в текущую рабочую папку. функция imwrite может иметь другие параметры, зависящие от выбранного формата.

 

 

Классы данных

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

 

Таблица 1. Классы данных. Первые восемь классов называются числовыми, девятый — символьный класс, последний класс — логический

Имя Описание
double Вещественные числа с плавающей запятой двойной точности в диапазоне, примерно, от — 10308 до 10308 (8 байт на число).
uint8 Целые без знака в интервале [0,255] (1 байт на число).
uintl6 Целые без знака в интервале [0,65535] (2 байта на число).
uint32 Целые без знака в интервале [0,4294967295] (4 байта на число).
int8 Целые со знаком в интервале [—128,127] (1 байт на число).
intl6 Целые со знаком в интервале [—32768, 32767] (2 байта на число).
int32 Целые со знаком в интервале [-2147483648, 2147483647] (4 байта).
single Вещественные числа с плавающей запятой обычной точности в диапазоне, примерно, от —1038 до 1038 (4 байта на число).
char Символы (буквы и знаки) (2 байта на символ).
logical Значения 0 или 1 (1 байт на элемент).

 

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

Пакет 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.



<== предыдущая лекция | следующая лекция ==>
 | Построение семантической сети
Поделиться с друзьями:


Дата добавления: 2017-03-11; Мы поможем в написании ваших работ!; просмотров: 2653 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Настоящая ответственность бывает только личной. © Фазиль Искандер
==> читать все изречения...

4428 - | 4202 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.046 с.