Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 2
- четверг, 17 февраля 2022 г. в 00:35:17
Продолжим изучение компьютерного зрения, которое мы начали на прошлом уроке. Напомню кратко, что там было:
· Этапы обработки и анализа изображений.
· Установка OpenCV
· Простая программа на OpenCV – отображения картинки в окне.
· Изменение размеров картинки.
· Преобразование из цветного формата в черно-белый.
Как я уже писал в первой части, для того, чтобы удалить из изображения различные шумы, применяют размытие изображение. Например, вот так:
import cv2
my_photo = cv2.imread('MyPhoto.jpg')
average_image = cv2.blur(my_photo,(7,7))
cv2.imshow('MyPhoto', average_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Вот какой будет эффект от применения данного фильтра:
Но это простой фильтр, он всего лишь усредняет. Более продвинутым считается гауссовский фильтр:
import cv2
my_photo = cv2.imread('MyPhoto.jpg')
gaussian_image = cv2.GaussianBlur(my_photo,(7,7),0)
cv2.imshow('MyPhoto', gaussian_image )
cv2.waitKey(0)
cv2.destroyAllWindows()
Но мы не верим, давайте проверим. Вот результат применения гаусcовского фильтра:
Казалось бы, в чем разница? Второй просто меньше размыл изображение.
Давайте проверим фильтр в деле. Специально испортим изображение:
Пропустим через первый фильтр:
Как видим, дефекты никуда не исчезли, они просто тоже стали размытыми.
А второй фильтр:
Собственно говоря, тоже самое. Да, потому что размытие такие дефекты не удалить. Для этого есть другие фильтры, о которых я расскажу в будущих уроках. Но для чего же тогда применяется размытие? Считается, что для удаление гауссовского шума. Давайте это тоже проверим.
Теперь испортим фотографию путем добавления гауссовского шума, это можно сделать, например, в фотошопе:
Посмотрим, как сработает первый фильтр:
Шум местами виден.
А второй фильтр:
Шум виден, но размытие меньше.
Мы можем увеличить размер окна, например, сделать не 7, а 11:
И по факту у нас получилась первая картинка. Иными словами, гауссовское размытие при большем окне по факту меньше смазывает изображение. Если мы применим усреднение с таким же окном (11 пикселей) то получим вот что:
Таким образом, гаусовский фильтр работает действительно лучше.
Итак, подытожим.
Мы научились применять фильтр размытия к изображению для того, чтобы убрать гауссовский шум, и сравнили два фильтра: фильтр усреднения и гауссовский фильтр.