Обработка изображений в Matlab для начинающих

Представьте, что вы наводите камеру на какой-то объект, и камера сообщает вам имя этого объекта. Да, Google Lens на смартфонах Android делает то же самое, используя обработку изображений. Это дает компьютеру возможность обнаруживать и распознавать объекты и предпринимать соответствующие действия. Обработка изображений имеет множество приложений, таких как обнаружение и распознавание лиц, распознавание отпечатков пальцев, дополненная реальность, оптическое распознавание текста, сканирование штрих-кода и многие другие. Существует множество программ для обработки изображений, среди которых MATLAB является наиболее подходящим для начинающих.

Обработка изображений в Matlab для начинающих

MATLAB может выполнять множество операций расширенной обработки изображений, но в этой статье (чтобы не перегружать ее информацией) мы рассмотрим основные операции работы с изображениями в Matlab, такие как преобразование RGB в серый, поворот изображения, двоичное преобразование и т. д. Кроме того, вы можете создавать автоматизированные программы для удаления шума, преобразования изображений, фильтрацию с использованием функций — все это также описано в данной статье.

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

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

1. Обработка изображений с использованием окна редактора MATLAB

Теперь напишем код для выполнения некоторых базовых операций обработки изображений в окне редактора. Скопируйте и вставьте приведенный ниже код в окно редактора.

В переменной ‘a’ мы импортируем изображение с помощью команды imread(‘filename’) , а затем создаем график из строки ‘2’ и столбца ‘3’ с помощью subplot(row, column, position) и отображаем импортированное изображение в позиции ‘1’. Чтобы показать изображение, мы используем команду imshow(‘filename’).

Ниже приведено несколько команд для выполнения базовой обработки загруженного изображения:

  • В переменной «b» мы преобразуем изображение RGB в изображение с интенсивностью оттенков серого с помощью команды rgb2gray(‘filename’) и отображаем его на графике в позиции «2».
  • В переменной «c» мы преобразуем изображение в двоичное изображение или, можно сказать, в формат «0» (черный) и «1» (белый), используя команду im2bw(‘filename’) и отображая его на графике в позиции «3».
  • В переменной «d» мы корректируем или сопоставляем значения интенсивности изображения в оттенках серого с помощью команды imadjust (‘filename’) и отображаем ее на графике в позиции «4».
  • В переменной «e» мы строим гистограмму изображения в оттенках серого с помощью команды imhist(‘filename’) и отображаем ее на графике в позиции «5». Для построения гистограммы вам всегда необходимо преобразовать изображение в оттенки серого, и тогда вы сможете увидеть гистограмму этого графического файла.
  • Команда Imfinfo(‘filename with location’) используется для отображения информации о графическом файле.
  • Команда [height, width, colour_planes] = size(‘filename’) используется для отображения размера и цветовых плоскостей конкретного графического файла.
  • colormap(‘spring’) используется для изменения типа цветовой карты графического файла. Здесь в своем коде я установил эту команду как комментарий, но вы можете использовать ее, удалив знак процента. В MATLAB есть много типов цветов, таких как Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines и Spring.

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

2. Обработка изображений с помощью графического интерфейса MATLAB

Создание графического пользовательского интерфейса MATLAB для обработки изображений

Для создания графического пользовательского интерфейса (Graphical User Interface, GUI) для обработки изображений запустите GUI, введя следующую команду в командном окне .

Откроется всплывающее окно, затем выберите новый blank GUI (шаблон графического интерфейса), как показано на изображении ниже.

Теперь нам нужно выбрать количество кнопок (каждая кнопка будет выполнять разные задачи) и одну ось для отображения изображения.

Чтобы изменить размер или форму кнопки Pushbutton или Axes, просто щелкните по ней, и вы сможете перетаскивать углы кнопки. Двойным щелчком по любой из них вы сможете изменить цвет, строку, тег и другие параметры этой конкретной кнопки. После настройки она будет выглядеть так

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

Код графического интерфейса MATLAB для обработки изображений

Полный код MATLAB для обработки изображений с использованием графического интерфейса MATLAB приведен в конце этого проекта. Кроме того, мы включаем сюда для загрузки файл графического интерфейса (.fig) и файл кода (.m), используя которые вы можете настроить размер кнопок или осей в соответствии с вашими требованиями. Мы отредактировали сгенерированный код, как описано ниже.

В функции «uploadimage» скопируйте и вставьте приведенный ниже код, чтобы вставить файл с ПК. Здесь команда uigetfile(‘image extension type’) используется для импорта изображения в графический интерфейс MATLAB. Прочитайте этот файл с помощью команды imread() , а затем отобразите его с помощью команды imshow() на axes1, используя axes(handles.axes1) . Теперь с помощью команды setappdata() сохраните переменную в графическом интерфейсе, чтобы переменная была доступна из одной части графического интерфейса в другой его части.

Теперь в каждой функции вы увидите команду getappdata(), которая используется для извлечения данных, хранящихся с помощью setappdata() в графическом интерфейсе.

Здесь мы объясним восемь наиболее часто используемых функций при обработке изображений.

N п/п Команда Название кнопки Задача, которая должна быть выполнена
1. uigetfile() Загрузить изображение Нажмите, чтобы импортировать изображение с диска
2. rgb2gray() RGB в серый Нажмите, чтобы преобразовать изображение RGB в оттенки серого
3. im2bw() Преобразовать в двоичное изображение Нажмите, чтобы преобразовать изображение в двоичный формат
4. Перезагрузить Нажмите, чтобы восстановить исходное изображение
5. imhist() Гистограмма Нажмите, чтобы увидеть гистограмму изображения
6. imcomplement() Дополнить изображение Нажмите, чтобы проверить дополнительное изображение
7. edge(filename,method) Обнаружение края Нажмите, чтобы обнаружить края изображения
8. imrotate(filename,angle) Вращение по часовой стрелке Нажмите, чтобы повернуть изображение по часовой стрелке.
9. imrotate(filename,angle) Вращение против часовой стрелки Нажмите, чтобы повернуть изображение против часовой стрелки.

1. Преобразовать RGB-изображение в оттенки серого

В функции «rgb2gray» скопируйте и вставьте приведенный ниже код, чтобы преобразовать изображение RGB в оттенки серого с помощью команды rgb2gray() .

2. Преобразование в двоичное изображение

В функции «im2bw» скопируйте и вставьте приведенный ниже код, чтобы преобразовать изображение в двоичное изображение, или вы можете сделать это в формате «0» (черный) и «1» (белый), используя команду im2bw() .

3. Сброс до исходного изображения

В функции reset’ скопируйте и вставьте приведенный ниже код, чтобы сбросить отредактированное изображение до исходного.

4. Построение гистограммы изображения

В функции ‘histogram’ скопируйте и вставьте приведенный ниже код, чтобы построить гистограмму изображения в оттенках серого с помощью команды imhist(‘filename’) и отобразить ее на оси 1Для построения гистограммы вам всегда необходимо преобразовать изображение в оттенки серого, и тогда вы сможете увидеть гистограмму этого графического файла.

5. Преобразовать в дополнительное изображение

В функции «complementimage» скопируйте и вставьте приведенный ниже код, чтобы увидеть дополнение вставленного графического файла с помощью команды imcomplement() .

6. Обнаружение краев с использованием метода Кэнни

В функции «edge» скопируйте и вставьте приведенный ниже код, чтобы обнаружить и найти края в изображении в оттенках серого, используя команду Edge(‘filename’,’method’) . В качестве метода вы можете выбрать один из этих трех: Кэнни, Прюитта и монтаж . Мы используем метод Кэнни для обнаружения краев. Кроме того, вы не можете обнаружить край непосредственно из исходного изображения. Сначала вам нужно преобразовать его в оттенки серого, а затем вы сможете обнаружить края.

7. Повернуть изображение по часовой стрелке

В функции clockwise’ скопируйте и вставьте приведенный ниже код, чтобы повернуть изображение по часовой стрелке, используя команду imrotate(filename,’angle’).

8. Поворот изображения против часовой стрелки

В функции anticlockwise’ скопируйте и вставьте приведенный ниже код, чтобы повернуть изображение против часовой стрелки, используя команду imrotate(filename,‘angle’).

Запуск кода MATLAB GUI для обработки изображений

Теперь нажмите кнопку ‘RUN’ чтобы запустить отредактированный код в файле .m.

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

Когда все будет готово, импортируйте изображение с ПК, нажав кнопку ‘Upload Image’ («Загрузить изображение»). Теперь вы сможете конвертировать или поворачивать изображение, нажав соответствующую кнопку. В таблице выше показано, какую задачу мы выполняем при нажатии любой конкретной кнопки:

Результат нажатия каждой кнопки показан на следующем изображении.

Работу каждой кнопки в более наглядном виде вы можете посмотреть в следующем видео.

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

  • Геометрические операции;
  • Блокирующие операции;
  • Линейная фильтрация и проектирование фильтров;
  • Преобразования;
  • Анализ и улучшение изображений;
  • Операции с бинарными изображениями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *