Обработка изображений в Матлаб доступна в его пакете инструментов под названием «Image Processing Toolbox». Сегодня мы приоткроем завесу по обработке изображений с помощью «чистого» Matlab и расширением «Image Processing Toolbox».
Напомним, что Matlab — это язык программирования, который предназначен для решения математических и технических задач. В основном этот язык используется в научной и инженерной сфере. Он универсален и работает во всех основных операционных системах.
Обработка изображений в Матлаб
Обработка изображений — это не основная деятельность Matlab. Вообще, языкам программирования достаточно сложно обрабатывать изображения. Пока с этим действием неплохо справляются несколько языков программирования: Python, Java, Scala, Matlab и др.
Сложность обработки изображения в том, что перед этим его нужно распознать, для того чтобы предпринять какие-то манипуляции. С распознаванием лично справляется человеческий глаз, но полностью имитировать его работу программными средствами не получается. Глаза человека — это уникальные органы, которые до сих пор до конца не изучены. Глаз способен разглядеть мельчайшие детали и различает цвета, тона и полутона. Он может отличить различие цвета в зависимости от внешней освещенности. Человеческий глаз очень чувствителен и многогранен.
Ни один язык программирования не способен даже близко приблизиться к возможностям человеческого глаза. Каждая функция обработки или распознавания изображения языком программирования дается ему с большим трудом и, чтобы реализовать ее возможность, трудятся десятки программистов.
Обработка изображений в Matlab: основные возможности
Если вы всерьез хотите заниматься обработкой изображений в Матлаб, тогда вам обязательно нужно установить для этого библиотеку «Image Processing Toolbox». Без нее функции по обработке изображений очень ограничены. Чуть ниже мы перечислим основные возможности этой библиотеки.
Изменение геометрических форм изображения
Это основная функция при работе с изображениями любыми инструментами. Под изменением геометрических форм подразумевают:
- кадрирование изображения;
- изменение размера изображения;
- поворот изображения.
Под кадрированием понимают обработку изображения, при которой можно курсором мыши выделить участок картинки и разместить его в новом окне.
В коде это выглядит так:
L=imread('producer.jpeg')
imshow(L);
imcrop;
На практике это выглядит так:
Изменение размеров изображения является простой и полезной функцией. На деле получается, что можно изменить размер любого изображения и вывести его в отдельном окне. В коде Матлаб такая функция будет реализована следующим способом:
L=imread('producer.jpeg')
imshow(L);
imresize;
На практике это выглядит так:
Если нужно повернуть изображение на какой-либо заданный угол, тогда в библиотеке «Image Processing Toolbox» можно найти для этого специальную функцию.
В коде Матлаб это выглядит так:
L1=inrotate(L, 40, 'bicubic');
figure, imshow(L1)
На практике это будет выглядеть таким образом:
Несложно заметить, что в этой категории функций находятся те, которые позволяют физически воздействовать на изображение.
Как проводить анализ изображений
Не всегда нужно воздействовать на изображение. Иногда нужно провести какой-либо его анализ. В библиотеке «Image Processing Toolbox» для таких манипуляций присутствует много функций, например:
- imhist;
- impixel;
- mean2;
- corr2;
- и др.
Давайте представим, что вам нужно получить гистограмму изображения, чтобы определить распределение интенсивности пикселей. В этом случае можно воспользоваться вот таким кодом Матлаб:
L=imread('producer.jpeg');
figure, imshow(L);
figure, imhist(L);
На практике это будет выглядеть таким образом:
Иногда нужно провести анализ изображения, чтобы выяснить интенсивность определенных пикселей. В этом случае можно воспользоваться функцией "impixel", которая прямо в интерактивном режиме выдаст искомые значения. Но также можно поступить проще и воспользоваться опцией "Data Cursor". В режиме этой опции вы сможете курсором наводить на интересующий вас пиксель и получать о нем необходимую информацию. На деле это выглядит таким образом:
Подробнее о функциях анализа изображений можно узнать в официальной документации к библиотеке «Image Processing Toolbox».
Как улучшить изображения
Обработка изображений в Матлаб включает в себя и применение улучшений качества изображений. Есть много "ручных" способов, как можно улучшить изображение, но в библиотеке «Image Processing Toolbox» присутствуют несколько автоматических функций улучшения. Например:
- histeq;
- imadjust;
- imfilter;
- и др.
Гистограмма — это информативное панно изображения. У идеального изображения гистограмма должна быть равномерной, что показывает на идеальное распределение яркости на самом изображении. Чтобы привести гистограммы близкой к идеальной, в Матлаб используют функцию "histeq". По сути, эта функция перераспределяет яркость изображения, чтобы гистограмма стала равномерной.
В коде это будет выглядеть так:
L=imread('producer.jpeg');
figure, imshow(L);
L1=histeq(L);
Figure, imsow(L1);
На практике это будет выглядеть следующим образом, где первое изображение исходное, а второе — уже обработанное:
Чтобы более интенсивно улучшить изображение, нужно использовать функцию "imadjust". Она использует более широкий диапазон интенсивностей, за счет чего обработка изображений в Матлаб получается на более высоком уровне.
В коде это будет выглядеть вот так:
L=imread('producer.jpeg');
figure, imshow(L);
L1=imadjust(L);
figure, imshow(L1);
figure, imhist(L);
figure, imhist(L1);
На практике это будет выглядеть следующим образом, причем первое изображение необработанное, а второе уже обработано:
Еще один способ улучшить качество изображения — это использовать функцию "imfilter" вместе с "fspecial", которая позволяет использовать разные вариации масок фильтра. Допустим мы хотим на своем изображении поработать с резкостью и немного повысить ее. В этом случае у нас будет вот такой код:
L=imread('producer.jpeg');
figure, imshow(L);
H = fspecial('unsharps');
L1 = imfilter(L,H,'replicate');
figure, imshow(L1);
В результате мы получим следующее:
Как отфильтровать изображения в Матлаб
В процессе обработки изображений в Матлаб, используя библиотеку «Image Processing Toolbox», можно использовать большое количество функций для фильтрации изображений. Отметим 3 основные функции:
- "fspecial",
- "ordfilt2",
- "medfilt2".
Каждая из этих функции по-особому отфильтровывает изображение и задает ему определенную маску. Обязательно попробуйте их использовать при работе с изображениями и вы сможете достичь, например, вот такой результат:
Как сегментировать изображения в Матлаб
В библиотеке «Image Processing Toolbox» есть определенный набор функций, которые могут сегментировать изображение по заданным параметрам. Среди таких функций нужно выделить следующие:
- "gtdecomp";
- "edge";
- roicolor.
Например, если нужно провести глубокий анализ изображения и сегментировать на участки, основываясь на их однородности, тогда можно воспользоваться функцией "qtdecomp". Тогда вы получите вот такой результат:
Заключение
На этом обработка изображений в Матлаб не заканчивается. В этом языке присутствует еще много интересных инструментов для работы с графикой. Мы постепенно будем разбирать их в следующих статьях. Если отразить все имеющиеся инструменты в рамках одной статьи, тогда может получиться целая эпопея, которую будет довольно сложно читать.
Другое