- •Ссылки на лекции
- •Удобные функции: Функция с сохранением
- •Функция, создающие аргументы для двумерного графика
- •Загрузка файлов в Colab (на примере архива с изображениями деревьев)
- •Лабораторная работа № 1. Работа с изображениями
- •Лабораторная работа № 2. Подготовка изображений для машинного обучения
- •Лабораторная работа № 3. Классификация изображений на основе логистической регрессии
- •Лабораторная работа № 4. Проверка гипотезы
- •Лабораторная работа № 5. Метод главных координат.
- •Лабораторная работа № 6. Кривые обучения.
- •Лабораторная работа № 7. Машинное обучение без учителя.
- •Лабораторная работа № 8. Обнаружение аномалий.
Загрузка файлов в Colab (на примере архива с изображениями деревьев)
import os
if not os.path.exists('NoTrees'):
!gdown 1yPAs-3H5gQGdM02KFiZKwVHT4AM_yeiI
!unzip /content/Trees.zip
!rm -rf /content/Trees.zip
Описание:
Условие проверяет, что файлы ещё не загружены (нет папки NoTrees)
!gdown – скачивает файл с google drive по его индексу (можно найти в ссылке):
https://drive.google.com/file/d/индекс/view?usp=sharing
!unzip – разархивировать архив по указанному пути
!rm – удаление ненужных файлов (в данном случае сам архив после извлечения файлов)
Лабораторная работа № 1. Работа с изображениями
Цель работы: Освоение ввода, изменения изображений, вывода на экран.
Задание. Дано изображение:
https://upload.wikimedia.org/wikipedia/commons/8/82/UEIT_captured.jpg
Написать программу на python, выполняющую следующие действия:
Найти и вывести на экране размер изображения.
Вывести на экране изображение
Создать негативное изображение
Создать копию части изображения согласно последней цифре j по приведённой схеме:
0
1
2
3
4
5
6
7
8
9
Вывести на экране только один канал изображения в виде ч/б изображения (в градациях серого) согласно последней цифре j:
0 - 3: красный, 4 - 6: зелёный, 7-9: синий
Создать копию изображения и изменить её так, чтобы пиксели, не удовлетворяющие условию, стали чёрными. Вывести её на экране. Условия по последней цифре j:
0,4,7: красный ярче, чем зелёный и красный ярче чем синий 1,5,8: синий темнее, чем красный и зелёный суммарно 2,6,9: зелёный ярче, чем красный, но тусклее, чем синий 3: среднее арифметическое значение компонент больше 128
Если последняя цифра в j 0-4, каждый пункт должен быть отдельной функцией
Если последняя цифра в j 5-9, своих функций создавать не нужно.
Примечание:
Для загрузки изображений используется модуль из пакета scikit-image:
import skimage
Функция модуля, загружающая изображение, называется:
io.imread('название файла')
Изображение представляется в виде таблицы цветных точек, каждая точка представлена тремя значениями в пространстве RGB (Red - красный, Green - зелёный, Blue - синий). Каждое значение -- это число от 0 (тёмный) до 255 (яркий). Таким образом, набор (255, 0, 0) -- это красный цвет, (128,128, 128) - серый (одинаковая яркость всех компонент), (255, 255, 255) - белый.
В python изображение представляется в виде трёхмерного массива numpy. Каждый элемент массива -- это значение одного компонента одного пикселя, при этом первый индекс отвечает за номер строки, второй - за номер столбца, третий - за номер компоненты (0 - красный, 1 - зелёный, 2 - синий) Например, зелёную компоненту 10 пикселя по вертикали и 20-го по горизонтали можно получить как:
img[10, 20, 1]
где img -- массив с изображением.
Вывести изображение на экран можно с помощью функции imshow модуля matplotlib.pyplot:
import matplotlib.pyplot as plt
import skimage
img = skimage.io.imread('img.png')
print(img[10,20,:]) # Вывод значения пикселя в координатах (10,20)
plt.imshow(img)
plt.show()
