Продолжим изучение компьютерного зрения, которое мы начали на прошлом уроке. Напомню кратко, что там было:
Этапы обработки и анализа изображений.
Установка 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()
Вот какой будет эффект от применения данного фильтра:
![](https://habrastorage.org/getpro/habr/upload_files/d6a/7a2/ffb/d6a7a2ffbcd3a62e7c6ace06da2861a6.png)
Но это простой фильтр, он всего лишь усредняет. Более продвинутым считается гауссовский фильтр:
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овского фильтра:
![](https://habrastorage.org/getpro/habr/upload_files/652/5f0/ba8/6525f0ba858ad953b216ca198f2760f6.png)
Казалось бы, в чем разница? Второй просто меньше размыл изображение.
Давайте проверим фильтр в деле. Специально испортим изображение:
![](https://habrastorage.org/getpro/habr/upload_files/878/3b5/0fa/8783b50fab016dc7bfccb55d61b034cf.png)
Пропустим через первый фильтр:
![](https://habrastorage.org/getpro/habr/upload_files/fd4/3c3/f20/fd43c3f20a6275e99e6209254fe56b61.png)
Как видим, дефекты никуда не исчезли, они просто тоже стали размытыми.
А второй фильтр:
![](https://habrastorage.org/getpro/habr/upload_files/072/5c3/ab9/0725c3ab91b3306a7c8fe9e67dce475f.png)
Собственно говоря, тоже самое. Да, потому что размытие такие дефекты не удалить. Для этого есть другие фильтры, о которых я расскажу в будущих уроках. Но для чего же тогда применяется размытие? Считается, что для удаление гауссовского шума. Давайте это тоже проверим.
Теперь испортим фотографию путем добавления гауссовского шума, это можно сделать, например, в фотошопе:
![](https://habrastorage.org/getpro/habr/upload_files/a5a/69e/123/a5a69e123ca091fd4aa6763c1ea179f9.png)
Посмотрим, как сработает первый фильтр:
![](https://habrastorage.org/getpro/habr/upload_files/dc5/511/a4a/dc5511a4a7c75cd63a33f02c0fb9de8c.png)
Шум местами виден.
А второй фильтр:
![](https://habrastorage.org/getpro/habr/upload_files/fec/c7b/d2e/fecc7bd2eb07b171334f47faac58a48e.png)
Шум виден, но размытие меньше.
Мы можем увеличить размер окна, например, сделать не 7, а 11:
![](https://habrastorage.org/getpro/habr/upload_files/ae9/ff0/7c4/ae9ff07c4ee20ac860b4009ed4599513.png)
И по факту у нас получилась первая картинка. Иными словами, гауссовское размытие при большем окне по факту меньше смазывает изображение. Если мы применим усреднение с таким же окном (11 пикселей) то получим вот что:
![](https://habrastorage.org/getpro/habr/upload_files/a88/ca5/6a8/a88ca56a8666a9fd9b8a65d1372f14ad.png)
Таким образом, гаусовский фильтр работает действительно лучше.
Итак, подытожим.
Мы научились применять фильтр размытия к изображению для того, чтобы убрать гауссовский шум, и сравнили два фильтра: фильтр усреднения и гауссовский фильтр.
Комментарии (5)
Strann1ks
17.02.2022 09:24-1Привет!
Можно ли сделать бота для трехмерной игры используя эту библиотеку ? Или есть что то попроще ?
Shmaiser
18.02.2022 01:07Непонятно про шум. почему надо именно гауссовский убирать? Откуда он берется? А то получается что есть картинка с шумом +1 на пиксель и чтобы пофиксить применяем -1 к пикселю и получаем исходную картинку
RalphMirebs
Маловато, очень маловато за раз, почти гомеопатия. А сколько всего планируется частей в цикле статей ?
megabax Автор
Ладно, буду делать больше. Точное количество сколько планирую точно не скажу, буду потихоньку публиковать пока не раскрою все этапы компьютерного зрения, о которых писал в первой статье (Уроки компьютерного зрения на Python + OpenCV с самых азов / Хабр (habr.com) ). Этапов 4, на каждый статьей по 5, будет, думаю, где-то 20 статей.