3.83M
Category: programmingprogramming

Работа 3. Анализ изображений

1.

Работа 3
Анализ изображений.

2.

3.

1. Создать цветную и черно-белую миниатюру на основе
изображения P1. Размер миниатюры произвольный. Сохранить
миниатюру в свою папку.
Листинг
С помощью метода convert() мы можем преобразовать картинку.
Параметр 1 – преобразует в ч-б.
Параметр L – преобразует в полутоновое.
Метод thumbnail – служит для создания миниатюры определенных
размеров( также возможно воспользоваться методом resize())
Метод save служит для сохранения картинки, а close для ее закрытия.
Результат

4.

2. Повернули изображение
Здесь мы используем сразу несколько новых
функций. Например, для выделения какой-то
прямоугольной области мы пользуемся
классом ImageDraw, а точнее его методом
Draw(поле для рисования) . С помощью
draw.rectangle() можно нарисовать
прямоугольник.
Метод crop() отвечает за вырезание области,
rotate() за поворот фрагмента, paste() помогает
нам вставить повернутый фрагмент назад.
90
-125

5.

3. Для полутонового изображения P1 и его инвертированного
изображения построить гистограммы.
Invert() помогает нам инвертировать изображение. С помощью hist строим гистограммы (важно заметить, что входной
аргумент массив, поэтому применяем array().flatten()
Посмотрев на диаграммы и изображения, становится понятно, что последние столбцы отвечают за белый цвет, первые за
черный, а между за полутоновые цвета( немаксимальные и неминимальные параметры rgb). Так же инвертируя
изображение, легко было понять, что крайние столбики отвечают именно за белый и черный цвет, потому что
инвертируя, мы фактически поменяли цвета на противоположные и диаграмма стала зеркальной. То есть чем ближе к
концу, тем больше столб диаграммы отвечает за светлые цвета, чем ближе к началу – тем больше за темные.

6.

4. Наложить на изображение белый шум, построить гистограмму.
Сохранить исходное, модифицированное изображение и сравнить
гистограммы.
С помощью функции random_noise() мы накладываем шум на
изображение. Соответсвенно. параметр mode=‘salt’ отвечает за наложение
именно белых пикселей. Белые пиксели накладываются случайным
образом.
На диаграмме мы можем заметить, что последний столбик возрастает для
изображения с белым шумом по сравнению с исходным. И это показывает,
что был наложен именно белый шум, так как возрос столбик отвечающий
именно за белый цвет, а это свидетельствует об увеличении числа белых
пикселей на фото.

7.

5. Выполнить размытие изображения по Гауссу с произвольными значениями.
Нарисовать изолинии для различных значений и сравнить их.
Исходное
Изолинии – это кривые линии, соединяющие
точки с одинаковой заданной величиной какоголибо показателя.
Команда contour() помогает рисовать изолинии.
Gaussian_filter() выполняет размытие по Гауссу с
определенным
параметром.
Размыли
полутоновое изображение из-за простоты
выполнения.
При большем размытии увеличивается количество изолиний, так как больше точек начинают
иметь схожие значения. Четкость и резкость изображения уменьшается. Разность значений
пикселей уменьшается. Изолинии увеличиваются.
Также можно заметить, что диаграммы при размытии выравниваются(специально еще
сделано размытие 100). Это объясняется уменьшением разности значений пикселей.
Размыто 5
Размыто 20

8.

6. Создать свою маску наложений и применить ее к произвольному изображению или
фотографии.
Для
наложения
фотографий
по
каким-то
определенным
контурам(накладываемая фотография будет иметь не свою изначальную
форму) используются маски. Маску можно как самому создать, используя
ImageDraw.Draw(), так и скачать и загрузить её с помощью функции
Image.open().
Чтобы применить маску, пользуемся все той же функцией paste(), где в
качестве 3 параметра указываем нашу созданную маску!

9.

6. Выполнить операцию нерезкого маскирования для произвольного цветного и
полутонового изображения (размыть исходное изображение, вычесть из исходного
изображения размытое (должна увеличиться резкость)).
Для начала с помощью filters.Gaussian_filter() размыли
исходные изображения. А затем вычли из исходного
изображения размытые. Как видим, ожидаемого
повышения резкости не произошло. Качество
изображения стало хуже.
English     Русский Rules