Сегодня я собираюсь показать вам несколько основных методов обработки изображений. Ну а что такое обработка изображений, согласно https://www.engineersgarage.com/articles/image-processing-tutorial-applications обработка изображений — это метод преобразования изображения в цифровую форму и выполнения над ним некоторых операций для того, чтобы чтобы получить улучшенное изображение или извлечь из него некоторую полезную информацию.

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

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

После импорта библиотек мы пытаемся прочитать изображение с помощью OpenCV. Код для этого — img=cv2.imread(‘short path/image’).

Всегда полезно использовать короткий путь, потому что длинные пути обычно дают некоторые ошибки, подобные той, что показана на этой странице StackOverflow https://stackoverflow.com/questions/44476790/typeerror-image-data-can-not-convert-to -float-on-plt-imshow/56178831#56178831, на который я ответил. Так, например, если вы работаете в среде рабочего стола, лучше создать папку на рабочем столе, где вы будете выполнять эту работу, а в папке также создать папку изображений, чтобы вы могли хранить все свои изображения внутри. Это. См. пример ниже. Примечание. Я использую Anaconda.

Теперь мы хотим получить общее представление о том, что представляет собой наше изображение. В этой части я использую изображение Альберта Эйнштейна. Итак, теперь я хочу узнать, что такое тип изображения.

Отсюда мы видим, что это пустой массив. Другими словами, чтобы узнать форму нашего изображения, мы хотим узнать количество столбцов, строк и количество каналов, которые мы используем для функции «.shape()». Например, если мы посмотрим на имя переменной, данное при чтении в нашем изображении, оно называлось «img», поэтому мы будем использовать «img.shape ()». Вот изображение, показывающее, что мы должны сделать

Из приведенного выше мы видим, что наше изображение имеет двести двадцать пять (225) строк и двести двадцать пять (225) столбцов. Это означает, что это квадратное изображение, а цифра 3 означает, что оно имеет 3 канала, а именно красный, зеленый и синий (RGB). Размер на изображении выше просто говорит нам общее количество пикселей. Затем мы можем решить построить изображение с помощью библиотеки matplotlib, которую мы сократили до plt. Мы рисуем в оттенках серого

Мы также можем получить некоторые другие сведения о нашем изображении, такие как знание интенсивности нашего изображения. И минимальная, и максимальная интенсивность. Наша минимальная интенсивность равнялась 1, а максимальная равнялась нулю (0).

Мы также можем попробовать немного сегментировать наше изображение. Исходя из наших знаний о сегментации в Python, мы собираемся выполнить некоторую сегментацию нашего изображения. Например, предположим, что мы хотим выбрать всю определенную строку и, возможно, десятый столбец в этой строке и сделать это место черным, мы делаем то, что показано на изображении ниже.

если мы сравним то, что у нас есть, с исходным изображением, мы обнаружим, что была нарисована черная линия. Он черный, потому что мы установили его на 0.

Не запутайтесь в этот момент. Наше изображение имеет минимальную интенсивность 1 и максимальную интенсивность 255. Значение 255 — самое яркое, а 1 — самое темное. Поэтому, если мы применим 255 к темной части нашего изображения, мы в конечном итоге осветлим эту область изображения. Кроме того, если мы применим 1 к определенной части изображения, мы получим ее затемнение. Исходя из этой идеи, мы можем догадаться, что 40 — темный, 80 — темный, возможно, не такой темный, как 1. Кроме того, 150 — белый, а не такой белый, как 255. С помощью этого объяснения давайте попробуем отбелить некоторые части нашей картинки.

Мы установили маску и сказали, что любой пиксель, интенсивность которого меньше 87, назначаем ему 255 (белый), так некоторые темные области нашего изображения внезапно стали белыми. Мы также можем изменить это, сказав, что областям больше 87 должно быть присвоено темное значение, например 1. Мы увидим, что у нас будет в основном темное изображение с некоторыми белыми точками.

Вы можете продолжить манипулировать изображением, играя с сегментацией.

Давайте попробуем другое изображение и попробуем манипулировать им. Это также изображение Эйнштейна.

Итак, как обычно, я использовал OpenCV для чтения изображения.

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

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

Выше я создал копию исходного изображения Einstine, чтобы не трогать и не манипулировать предыдущим. Итак, что я сделал, так это выбрал красный канал и выбрал пиксели больше 160, то есть пиксели ближе к белому цвету. Затем мы присвоили маску переменной red_ein, отключили все цвета, кроме зеленого, и установили зеленый канал на 255 (помните, что 255 — это максимум). Затем мы рисуем новое изображение и видим, как появляется зеленый цвет.

Это было краткое и быстрое введение в обработку изображений. Надеюсь, вам всем понравилось. Просто попробуйте попрактиковаться, и вы все поймете. Оставляйте вопросы в разделе комментариев ниже