Основные средства по обработке изображений входят в пакет прикладных программ Images. С его возможностями можно детально ознакомиться, выполнив следующую команду:
» help images
Image Processing Toolbox.
Version 2.2.2 (R12) 10-Mar-2000
Release information.
Readme = Display information about
versions 2.0. 2.1. and 2.2.
Toolbox preferences.
iptgetpref = Get value of Image Processing
Toolbox preference.
iptsetpref = Set value of Image Processing
Toolbox preference. Demos.
dctdemo- 2-0 DCT image compression demo.
edgedemo - Edge detection demo.
firdemo = 2-D FIR filtering and filter design demo.
imadjdemo - Intensity adjustment and histogram
equalization demo.
landsatdemo = Landsat color composite demo.
nrfiltdemo = Noise reduction filtering demo.
qtdemo = Quadtree decomposition demo.
roidemo = Region-of-interest processing demo.
В обширном списке (выше он дан лишь выборочно) содержится более сотни команд для работы с растровыми изображениями. Эти изображения могут быть получены со сканера, цифрового фотоаппарата либо от видеокамеры, подключенной к компьютеру через видеобластер или подобное устройство.
Пакет Images поддерживает следующие возможности:
· отображение рисунков различных графических форматов (в том числе с высоким разрешением) на экране дисплея;
· расширенные функции записи рисунков в файл, считывание их из файла и получение информации о файле;
· выполнение геометрических операций с графическими объектами, таких как разворот или интерполяция данных;
· операции на уровне элементарных частей изображений — пикселов;
· аналитические операции с изображениями;
· осуществление компрессии и декомпрессии изображений;
· выполнение различных видов фильтрации изображений и конструирование фильтров;
· выполнение различных преобразований изображений;
· поразрядные (битовые) операции с рисунками;
· операции задания и преобразования цветов;
· преобразование типов и форматов рисунков;
· демонстрация возможностей пакета;
· организация показа слайдов.
Объем данной книги не позволяет описать этот пакет подробно, но в этом нет и особого смысла. Если вы уяснили методы работы с системой MATLAB, вам не составит особого труда ознакомиться с составом всех команд и функций пакета и опробовать их на практике. В связи с этим мы остановимся лишь на нескольких демонстрационных примерах.
Примеры применения пакета Images
Есть ряд способов ознакомиться с весьма обширными и впечатляющими возможностями пакета Images: с помощью демонстрационных примеров (Demos) в справочной базе данных системы, путем непосредственного запуска этих примеров (список приводился выше), запуском отдельных команд и т. д.
Пример реконструкции изображений с управлением оригиналом, создаваемым изображением и ошибкой реконструкции представлен в файле dctdemo. Он выводит свое окно со средствами пользовательского интерфейса. Можно задать выбор той или иной исходной картинки, задать степень компрессии изображения и визуально наблюдать за характером преобразований (рис. 7.16). Для просмотра следует нажать кнопку Apply (Применить), кнопка Close (Закрыть) закрывает окно, а кнопка Info выводит информацию о примере.
Другой важной сферой применения пакета Images является фильтрация изображений, например с целью их очистки от шумовых помех. В качестве исходного изображения взят фотоснимок планеты Сатурн, затем с помощью генератора случайных чисел на него нанесены помехи в виде точек. Имеется возможность оценить степень очистки изображения от помех при использовании различных алгоритмов фильтрации, представленных в пакете Images рядом функций.
Следующий пример иллюстрирует возможность изменения яркости изображения. Кривая яркости может устанавливаться перемещением ее точек с помощью мыши. Можно задавать линейный или нелинейный вид этой кривой и тут же наблюдать изменение характеристик изображения. Вид кривой существенно влияет на яркость и контрастность изображений и позволяет выполнять тоновую коррекцию, например осветлять слишком темные изображения или, наоборот, затемнять светлые изображения.
Наконец, последний в этом уроке пример (остальные вы можете просмотреть самостоятельно) показывает действенность алгоритма повышения четкости изображения в произвольной его области. В нашем случае эта область ограничена треугольником. В окне можно наблюдать (и выбирать) исходное изображение, задавать область действия алгоритма и просматривать результирующее изображение. Даже эти примеры дают возможность оценить обширные возможности пакета Images в технике обработки реальных изображений.
Примеры программирования задач со средствами пакета Images
Вы можете ознакомиться с каждым демонстрационным примером пакета Images, выполнив команду type fname, где fname — имя файла с демонстрационным примером. Однако следует отметить, что демонстрационные программы являются весьма сложными, поскольку создают окна в виде стандартных панелей с современными элементами пользовательского интерфейса и переключателями выбора вариантов. Мы рекомендуем читателю воздержаться от знакомства с этими программами до ознакомления с уроком 20, в котором систематически описаны средства программирования системы MATLAB. А пока мы ограничимся парой характерных примеров, наглядно показывающих, что при работе с системой MATLAB вполне можно руководствоваться народной поговоркой: «Не боги горшки обжигают».
Рассмотрим, к примеру, задачу фильтрации искаженного помехами произвольного изображения, представленного некоторым файлом. Реализующая эту сложную и весьма эффективную операцию программа выглядит следующим образом:
% Picture filter
I = imreadCsaturn.tif);
h = [1 2 1: 0 0 0: -1 -2 -1];
I2 - filter2(h.I);
imshow(I2,[ ]). colorbar
В результате исполнения этой простой и вполне очевидной программы можно получить отфильтрованное изображение из файла saturn.tif . Хотите попробовать обработать какой-либо снимок? Все, что для этого нужно, — подготовить снимок в нужном формате (например, tif) и заменить во второй строке имя демонстрационного файла на имя вашего файла.
Рассмотрим еще один достаточно простой пример — построение сферы в виде глобуса и наклеивание на полушарие этого глобуса изображения карты погоды:
load earth sphere: h - findobjC'Type'.'surface');
hemisphere= [ones(257.125).X.ones(257,125)];
set(h.'CData'.f1i pud(hemi sphere).'FaceColor'.
'texturemap')
colormap(map)
axis equal
view([90 0])
setCgca.'CameraViewAngleMode'.'manual')
view([65 30])
Пакет Images можно рассматривать как полезный инструмент для создания новых алгоритмов и методов обработки изображений и обучения специалистов. Применение его непосредственно для обработки изображений вполне возможно, но все же едва ли целесообразно. Дело в том, что обширнейшие возможности по обработке изображений открывают профессиональные графические пакеты, например Adobe Photoshop, Ulead Photolmpact, Corel Draw и др., в которых реализованы самые современные методы обработки изображений и использованы последние новации пользовательского интерфейса. В этом случае достоинство средств MATLAB проявляется только в математической прозрачности реализаций алгоритмов обработки изображений.
Галерея трехмерной графики
Для знакомства с возможностями трехмерной графики и построением пользовательского интерфейса MATLAB имеет галерею (Gallery) в виде профессионально выполненных графических программ. Доступ к ним возможен как из режима демонстрации (команда Examples and Demos в меню Help командного окна MATLAB), так и путем запуска команды из командной строки с указанием имени соответствующего файла.
Галерея представлена фигурами и файлами, список которых приведен в табл. 7.1.
Обратите внимание на то, что иногда имя файла не совпадает с именем фигуры в галерее. Некоторые из фигур галереи мы уже описывали — это knot (см. рис. 4.4) и logo . Ниже приведено еще несколько примеров, которые дают наглядное представление о возможностях дескрипторной графики системы MATLAB.
Полезно обратить внимание на то, что в этом примере сам по себе график — двумерный. Объемный вид поверхности достигается сочетанием функциональной окраски с изображением графика векторного поля с помощью стрелок.
Команда kleinl строит график объемной ленты Мебиуса с одним перекручиванием. Этот график хорошо иллюстрирует хотя и одноцветную, но функциональную закраску фигуры с имитацией ее освещения источником света, расположенным вверху справа, и реализацией эффектов отражения света.
Команда cruller строит объемное кольцо Мебиуса с двойным перекручиванием. В данном случае используется обычная функциональная окраска с сохранением линий каркаса фигуры.
Команда tory4 строит четыре переплетающихся друг с другом тора (объемных кольца) в пространстве (рис. 7.25). Наглядности этой картины также способствует функциональная окраска торов и видимые линии каркаса. Обратите внимание, что невидимые линии удалены.
Любопытную фигуру, напоминающую раковину улитки, строит команда spharm2. Здесь интересно применение многоцветной функциональной окраски с использованием интерполяции по цвету, а также имитация эффектов отражения при освещении фигуры источником точечного света. Отчетливо видны зеркальные блики на поверхности фигуры.
Еще одна команда — modes — иллюстрирует построение фаз анимации поверхности . Она генерирует 12 фигур, отражающих положение поверхности в пространстве в различные моменты времени.
В целом указанный набор программ дает хорошее представление о возможностях трехмерной графики системы MATLAB. Команда type name, где name — имя соответствующей команды, выводит полный листинг программы, реализующей построение той или иной фигуры.