Похожие презентации:
анализ и обработка изображений лекция
1. Тема 1. Анализ и обработка изображений
Знакомство с библиотекой OpenCV2. Что такое OpenCV?
Что такое OpenCV ?OpenCV (Open Source Computer Vision Library) — это
открытая библиотека для работы с алгоритмами
компьютерного зрения, машинным обучением и
обработкой изображений.
Написана на C++
Python
JavaScript
Ruby
других языков
программирования.
3. Где используется OpenCV?
OpenCV может использоваться везде, где нужнокомпьютерное зрение. Эта отрасль IT работает с
технологиями, которые позволяют устройству «увидеть»,
распознать и описать изображение. Компьютерное зрение
дает точную информацию о том, что изображено на
картинке, с описанием, характеристиками и размерами (с
определенной степенью достоверности).
Также библиотека работает с машинным обучением —
отраслью, которая обучает алгоритмы действовать тем или
иным образом.
4.
робототехнике — дляориентирования робота в
пространстве, распознавания
объектов и взаимодействия с
ними
мобильной фотографии —
для создания бьютифильтров, изменяющих лицо
приложений
медицинских технологиях —
для создания точных методов
диагностики, например 3Dвизуализации органа при МРТ
OPEN CV
промышленных
технологиях — для
автоматизированного
контроля качества, считывания
этикеток, сортировки
продуктов и пр.;
на транспорте — для
разработки автопилотов.
безопасности — для создания
«умных» камер
видеонаблюдения, которые
реагируют на подозрительные
действия, для считывания и
распознавания биометрии
5. А что же он может делать или функциональные возможности OpenCV
Работа свидеороликами
Распознавание
объектов
Рисование поверх
изображения
Добавление эффектов
Видоизменение
изображений
Работа со структурами
данных
А что же он может делать или
функциональные возможности
OpenCV
6. Из чего состоит OpenCV
храненияматематических
функций и
вычислений, алгебры
и структур данных;
распознавания
примитивов;
хранения моделей для
машинного обучения;
ввода и вывода
картинок или видео,
чтения и записи в
файл;
обработки
изображения;
детектирования
объектов — лиц,
предметов и других;
отслеживания и
анализа движений на
видео;
обработки
трехмерной
информации;
ускорения работы
библиотеки;
хранения устаревшего
или еще не готового
кода и других.
7. Преимущества OpenCV
Активноесообщество
Это полезно и для
новичков, и для
экспертов. Докуме
нтация по OpenCV
представлена на
нескольких
языках.
Бесплатный доступ
Бесплатной
лицензии. У
библиотеки
открытый
исходный код.
Обилие
алгоритмов
OpenCV включает
более 2500
инструментов и
алгоритмов
компьютерного
зрения и
машинного
обучения.
Высокая скорость
Библиотека
работает быстрее
масштабного и
тяжелого ПО для
математических
вычислений,
Возможность
работы в реальном
времени
Благодаря высокой
скорости и
кроссплатформенно
сти OpenCV
подходит для
работы с
изображениями в
режиме реального
времени.
8. Недостатки OpenCV
Сложность восвоении
нужно знать теории
компьютерного зрения и
машинного обучения.
Поэтому порог входа в
отрасль выше, чем в других
популярных направлениях IT.
Отсутствие кодов
обработки ошибок
Если возникла ошибка, в
OpenCV бывает сложно
понять, где именно. Поэтому
при отладке программ у
новичков могут быть
проблемы.
Ориентированность
на большие
платформы
OpenCV работает на
масштабных платформах.
Если запустить ее на
микроконтроллере,
одноплатном компьютере,
производительность будет
невысокой.
9.
Тема 1. Анализ и обработкаизображений
1.Трансформация изображения
Под трансформацией понимается любое его
преобразование. Перемещение, вращение и
масштабирование растра выполняется для того,
чтобы «привязать» растр к координатам проекта.
10. Возможна трансформация..?
Изменениеразмеров
изображения
Добавление
изображения на
изображения
Обрезка
изображения
Изменение
четкости
изображения
Поворот
изображения
Масштабирование
изображения
11.
Трансформация изображения12.
Трансформация изображенияRound 1.
Перенос изображения
Трансляция изображения — это
прямолинейное перемещение изображения
из одного места в другое, поэтому
перемещение объекта называется
трансляцией. Матрица, показанная ниже,
используется для перевода изображения
Значение b x определяет, насколько изображение будет перемещено по оси x, а
значение b y определяет перемещение изображения по оси y:
13.
Трансформация изображенияRound 1.
Перенос изображения
cv2.warpPerspective:
принимает в качестве
входных данных
матрицу
преобразования (3x3) .
cv2.warpAffine:
принимает на вход
матрицу
преобразования (2x3) .
Обе функции принимают три входных параметра: Входное изображение, матрица
трансформации, кортеж высоты и ширины изображения.
14.
Трансформация изображенияRound 1.
Перенос изображения
import numpy as np
import cv2
import matplotlib.pyplot as plt
# read the input image
img = cv2.imread("city.jpg")
# convert from BGR to RGB so we can
plot using matplotlib
img = cv2.cvtColor(img,
cv2.COLOR_BGR2RGB)
# disable x & y axis
plt.axis('off')
# show the image
plt.imshow(img)
plt.show()
# get the image shape
rows, cols, dim = img.shape
# transformation matrix for translation
M = np.float32([[1, 0, 50],
[0, 1, 50],
[0, 0, 1]])
# apply a perspective transformation to the
image
translated_img = cv2.warpPerspective(img,
M, (cols, rows))
# disable x & y axis
plt.axis('off')
# show the resulting image
plt.imshow(translated_img)
plt.show()
# save the resulting image to disk
plt.imsave("city_translated.jpg",
translated_img)
15.
Трансформация изображенияRound 1.
Перенос изображения
Обратите внимание, что мы используем plt.axis('off'), поскольку не хотим
выводить значения осей, и показываем изображение с помощью imshow()функции
matplotlib.
Мы также используем plt.imsave()функцию для локального сохранения
изображения.
Было
Стало
16.
Трансформация изображенияRound 2.
Масштабирование изображения
Масштабирование изображения — это
процесс изменения размера цифрового
изображения . В OpenCV есть встроенная
функция cv2.resize(), но
преобразование мы будем выполнять с
помощью умножения матриц, как и
раньше. Матрица, используемая для
масштабирования, показана ниже:
S x и S y — коэффициенты масштабирования
для осей x и y соответственно.
17.
Трансформация изображенияRound 2.
Масштабирование изображения
import numpy as np
import cv2
import matplotlib.pyplot as plt
rows, cols, dim = img.shape
#transformation matrix for Scaling
M = np.float32([[1.5, 0 , 0],
[0, 1.8, 0],
# read the input image
[0, 0, 1]])
img = cv2.imread("city.jpg")
# apply a perspective transformation to the
# convert from BGR to RGB so we can plot
image
using matplotlib
scaled_img =
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.warpPerspective(img,M,(cols*2,rows*2))
# disable x & y axis
# disable x & y axis
plt.axis('off')
plt.axis('off')
# show the image
# show the resulting image
plt.imshow(img)
plt.imshow(scaled_img)
plt.show()
plt.show()
# get the image shape
# save the resulting image to disk
plt.imsave("city_scaled.jpg", scaled_img)
18.
Трансформация изображенияRound 2.
Масштабирование изображения
На что-то это
похоже…
Масштаб вашей картинки изменился, но исходный
размер файла нет)))
Это похоже на смещение картинки где в остатке
смещенной области появлялось черное пятно.
Естествна это можно обрезать
19.
Трансформация изображенияRound 3.
Сдвиг изображения
Отображение сдвига — это линейная карта, которая смещает
каждую точку в фиксированном направлении. Она заменяет
каждую точку по горизонтали или вертикали определенным
значением, пропорциональным ее координатам x или y.
Существует два типа эффектов сдвига.
20.
Трансформация изображенияRound 3.
Сдвиг изображения
Сдвиг в
направлении оси X
Когда сдвиг выполняется в направлении оси X, границы
изображения, параллельные оси X, сохраняют свое положение, а
края, параллельные оси Y, меняют свое место в зависимости от
коэффициента сдвига
21.
Трансформация изображенияRound 3.
Сдвиг изображения
Сдвиг в
направлении оси Y
Первая матрица — это
сдвиг, примененный к
оси X. Если вам нужна
ось Y,
закомментируйте
первую матрицу и
раскомментируйте
вторую.
Когда сдвиг выполняется в направлении оси Y, границы
изображения, параллельные оси Y, сохраняют свое положение, а
края, параллельные оси X, меняют свое место в зависимости от
коэффициента сдвига.
22.
Трансформация изображенияRound 3.
Сдвиг изображения
# read the input image
img = cv2.imread("city.jpg")
# convert from BGR to RGB so we can
plot using matplotlib
img = cv2.cvtColor(img,
cv2.COLOR_BGR2RGB)
# disable x & y axis
plt.axis('off')
# show the image
plt.imshow(img)
plt.show()
# get the image shape
rows, cols, dim = img.shape
# transformation matrix for Shearing
M = np.float32([[1, 0.5, 0],
[0, 1 , 0],
[0, 0 , 1]])
# shearing applied to y-axis
# M = np.float32([[1, 0, 0],
#
[0.5, 1, 0],
#
[0, 0, 1]])
# apply a perspective transformation to the
image
sheared_img =
cv2.warpPerspective(img,M,(int(cols*1.5),int(
rows*1.5)))
# disable x & y axis
plt.axis('off')
# show the resulting image
plt.imshow(sheared_img)
plt.show()
# save the resulting image to disk
plt.imsave("city_sheared.jpg", sheared_img)
23.
Трансформация изображенияRound 3.
Сдвиг изображения
Изображение по оси X:
*P.S. помогает в определение лиц …
Изображение по оси Y:
24.
Трансформация изображенияRound 4.
Отражение изображения
Отражение изображения (или зеркальное
отображение) полезно для переворачивания
изображения. Оно может переворачивать
изображение как по вертикали, так и по горизонтали,
что является частным случаем масштабирования. Для
отражения по оси X мы устанавливаем
значение Sy равным -1, а Sx равным 1, и наоборот для
отражения по оси Y.
25.
Трансформация изображенияRound 4.
Отражение изображения
# read the input image
img = cv2.imread("city.jpg")
# convert from BGR to RGB so we can plot
using matplotlib
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# disable x & y axis
plt.axis('off')
# show the image
plt.imshow(img)
plt.show()
# get the image shape
rows, cols, dim = img.shape
# transformation matrix for x-axis reflection
M = np.float32([[1, 0, 0 ],
[0, -1, rows],
[0, 0, 1 ]])
# transformation matrix for y-axis reflection
# M = np.float32([[-1, 0, cols],
#
[ 0, 1, 0 ],
#
[ 0, 0, 1 ]])
# apply a perspective transformation to the
image
reflected_img =
cv2.warpPerspective(img,M,(int(cols),int(rows)
))
# disable x & y axis
plt.axis('off')
# show the resulting image
plt.imshow(reflected_img)
plt.show()
# save the resulting image to disk
plt.imsave("city_reflected.jpg", reflected_img)
26.
Трансформация изображенияRound 4.
Отражение изображения
Изображение по оси X:
Изображение по оси Y:
Как и раньше, это будет отражать ось X. Если вы хотите отражение по оси Y,
раскомментируйте вторую матрицу и прокомментируйте первую.
27.
Трансформация изображенияRound 5.
Поворот изображения
Вращение — математическое понятие, представляющее собой
движение определенного пространства, сохраняющее хотя бы одну
точку. Поворот изображений — это обычная процедура обработки
изображений, используемая в приложениях для сопоставления,
где алгоритмов
тета ( θ ) — угол на
поворота
выравнивания и других
основе изображений. Она
также широко используется в дополнении данных, особенно когда
речь идет о классификации изображений.
P.S где тета ( θ ) — угол поворота
28.
Трансформация изображенияRound 5.
Поворот изображения
# read the input image
img = cv2.imread("city.jpg")
# convert from BGR to RGB so we can plot
using matplotlib
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# disable x & y axis
plt.axis('off')
# show the image
plt.imshow(img)
plt.show()
# get the image shape
rows, cols, dim = img.shape
#angle from degree to radian
angle = np.radians(10)
#transformation matrix for Rotation
M = np.float32([[np.cos(angle), (np.sin(angle)), 0],
[np.sin(angle), np.cos(angle), 0],
[0, 0, 1]])
# apply a perspective transformation to the
image
rotated_img = cv2.warpPerspective(img, M,
(int(cols),int(rows)))
# disable x & y axis
plt.axis('off')
# show the resulting image
plt.imshow(rotated_img)
plt.show()
# save the resulting image to disk
plt.imsave("city_rotated.jpg", rotated_img)
29.
Трансформация изображенияRound 5.
Поворот изображения
Поворот изображения
P.S. Применяется в выполнении
обнаружение краев в Python с
помощью OpenCV.
Обнаружение краев
30.
Трансформация изображенияRound 6.
Обрезка изображения
Обрезка изображения — это
удаление нежелательных внешних
областей из изображения. Во
многих приведенных выше
примерах присутствуют черные
пиксели, их можно легко удалить с
помощью обрезки.
31.
Трансформация изображенияRound 6.
Обрезка изображения
import numpy as np
import cv2
import matplotlib.pyplot as plt
# read the input image
img = cv2.imread("city.jpg")
# convert from BGR to RGB so we can plot
using matplotlib
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# disable x & y axis
plt.axis('off')
# show the image
plt.imshow(img)
plt.show()
# get 200 pixels from 100 to 300 on both x-axis
& y-axis
# change that if you will, just make sure you
don't exceed cols & rows
cropped_img = img[100:300, 100:300]
# disable x & y axis
plt.axis('off')
# show the resulting image
plt.imshow(cropped_img)
plt.show()
# save the resulting image to disk
plt.imsave("city_cropped.jpg", cropped_img)
32.
Трансформация изображенияRound 6.
Обрезка изображения
Поскольку OpenCV загружает изображение как массив numpy, мы
можем обрезать изображение, просто проиндексировав массив, в
нашем случае мы решили получить 200 пикселей от 100 до 300 по
обеим осям, вот выходное изображение:
33.
Трансформация изображенияFinal Round.
Задание.
• Загрузите изображение
• Покажите изображение
• Перенесите изображение на рандомные координаты. После
чего отобразите результат( или сохраните новую картинку)
• Увеличите масштаб картинки( используя свой возраст как
коэффициент масштабирования(сохраните картинку)
• Произведите сдвиг изображения по оси Y на текущее
количество минут(сохраните изображение)
• Отзеркальте изображение по любой из осей(сохраните)
• Обрежьте изображение(сохраните результат)
• Поверните изображение на ваш возраст умноженное на
3.(сохраните изображение)
34.
Тема 1. Анализ и обработкаизображений
2.Изменение значений компонентов цвета
35.
Что по цвету?Цвет — качественная субъективная
характеристика электромагнитного излучения
оптического диапазона, определяемая на
основании возникающего физиологического
зрительного ощущения и зависящая от ряда
физических, физиологических и психологических
факторов.
36.
Изменение значений компонентов цветаЦветовая модель — это модель представления
цвета каждой точки с помощью группы чисел.
Некий цветовой код.
красный,
синий
зеленый
RGB
цветовой тон
—H
яркость —
V
насыщение
—S
HSV
37.
Изменение значений компонентов цветаBGR — стандартное цветовое пространство OpenCV (используется по умолчанию). Является аналогом RGB
пространства, но с другим порядком компонентов.
RGB — в данном методе отображения цвета мы раскладываем каждый пиксель на составляющие в
виде красной (red), зеленой (green) и голубой (blue) компоненты.
HSV — это отображение создано для упрощения представление цвета человеком. Люди в случае описания
цвета редко пользуются компонентами цвета, обычно они применяют такие слова как оттенок
(hue), насыщенность (saturation) и интенсивность (value) цвета.
XYZ — модель была выведена в лаборатории CIE. Задача состояла в описании всех цветов, которые может
видеть глаз человека. Компоненты X, Y, Z в данной модели описывают чувствительность
среднестатистического наблюдателя к стандартным возбуждениям.
GRAY — черно-белое пространство, где яркость рассчитывается как средняя яркость всех трех компонент
модели BGR.
YUV — данная схема пришла из телевидения, где компонента Y – значение яркости, а UV – двух
цветоразностных сигналов.
38.
Изменение значений компонентов цвета39.
Изменение значений компонентов цветаКто такой этот ваш
RGB ? Рэпер что ли?
40.
Изменение значений компонентов цветаКто такой этот ваш
RGB ? Рэпер что ли?
41.
Изменение значений компонентов цветаКто такой этот ваш
CMYK ? Битмэйкер ?
42.
Изменение значений компонентов цветаКто такой этот ваш
CMYK ? Битмэйкер ?
43.
Изменение значений компонентов цветаПеревод
img = cv.cvtColor(img,cv.COLOR_BGR2RGB)
Функция img = cv.cvtColor() принимает на
вход изменяемое изображение и
«направление» для перехода:
cv.COLOR_BGR2RGB. Первым указывается
текущий «формат представления» (BGR),
далее символ «2» (созвучно с английским
«to», которое интерпретируется как русское
«в») после конечный «формат
представления». Получается, что мы вводим
команду перевести формат BGR в RGB.
44.
Изменение значений компонентов цветаimport sys
import numpy as np
import cv2 as cv
fn = "KOT.jpg" # путь к файлу с картинкой
img = cv.imread(fn) # загрузка изображения
img = cv.cvtColor(img,cv.COLOR_BGR2RGB)
cv.imshow('KOT', img) # выводим итоговое
изображение в окно
cv.waitKey() # окно изображения открыто пока не
нажмем какую-нибудь клавишу
cv.destroyAllWindows()
45.
Изменение значений компонентов цветаПосле выполнения получаем:
Было
Стало
BGR
RGB
46.
Изменение значений компонентов цветаИзображение по порогу (бинаризация)
Для анализа изображений
проще всего использовать
двухцветное (черно-белое)
изображение.
import sys
import numpy as np
import cv2 as cv
fn = "KOT.jpg" # путь к файлу с картинкой
img = cv.imread(fn)
img =
cv.cvtColor(img,cv.COLOR_BGR2GRAY)
ret, img = cv.threshold(img, 127, 255, 0)
cv.imshow('KOT', img) # выводим
итоговое изображение в окно
cv.waitKey()
cv.destroyAllWindows()
img=cv.cvtColor(img,cv.COLOR_BGR2GRAY) ret, img = cv.threshold(img, 127, 255, 0)
47.
Изменение значений компонентов цвета48.
Изменение значений компонентов цветаРазложение по каналам
BGR
49.
Изменение значений компонентов цветаcolor_spaces = ('RGB','GRAY','HSV','LAB','XYZ','YUV')
color_images = {color : cv2.cvtColor(image_bgr,
getattr(cv2,'COLOR_BGR2' + color))
for color in color_spaces}
for color in color_images:
cv2.imshow(color, color_images[color])
cv2.waitKey(0)
RGB, GRAY, YUV,
LAB, HSV, XYZ в
BGR
50.
Тема 1. Анализ и обработкаизображений
3. Применение фильтров
51.
3. Применение фильтровФильтр в OpenCV - это операция обработки
изображений, которая применяется к пикселям
изображения для изменения их значений в
соответствии с определенным алгоритмом
52.
3. Применение фильтровА куда ,где и откуда эти ваши фильтры?
Фильтры в OpenCV могут быть применены к:
целое изображение
определенная область изображения
Они работают путем применения математических операций или
статистических методов к пикселям изображения или их
окрестностям.
53.
3. Применение фильтровВиды царства фильтровых…
Фильтры
размытия (Blur)
Фильтры
шумоподавления
Фильтры
резкости
(Sharpening)
Фильтры
цветового
пространства
Фильтры границ
(Edge Detection)
Фильтры
изменения
яркости и
контрастности
Программное обеспечение