Другое

Как выполнить обработку изображений в Матлаб, поиск края и области

Обработка изображений в Матлаб доступна в его пакете инструментов под названием «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". Тогда вы получите вот такой результат:

Изменение геометрических форм изображения

Заключение

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

Схожие статьи

Свойство CSS-flex: определение, шпаргалка, назначение и свойства
Другое

Свойство CSS-flex: определение, шпаргалка, назначение и свойства

Хеш-таблица СИ: подробный обзор, принцип работы и сфера применения
Другое

Хеш-таблица СИ: подробный обзор, принцип работы и сфера применения

Как найти петлю в локальной сети и как ее оперативно устранить
Другое

Как найти петлю в локальной сети и как ее оперативно устранить

Начинающий программист
Другое

Начинающий программист

×