single
Стиснення зображень
Свайпніть щоб показати меню
Переходимо до останнього завдання, яке може вирішити PCA - це стиснення зображення.
Рішення даної задачі відбувається за тим же алгоритмом, що і зазвичай. Ми вже знаємо, як створювати моделі PCA та завантажувати в них дані. Тому зараз ми заглибимося в інші деталі.
Стиснення чорно-білих і кольорових зображень здійснюється по-різному. Стиснення чорно-білих зображень нічим не відрізняється від стиснення звичайних. У той час як для кольорових зображень потрібно: розділити зображення на 3 кольорові канали RGB, зменшити розмірність кожного каналу за допомогою PCA, а потім об’єднати канали в повноцінне кольорове зображення.
Щоб прочитати зображення та розділити їх на канали RGB, нам потрібні бібліотеки matplotlib і cv2:
import matplotlib.pyplot as plt
import cv2
img = plt.imread('test.jpg')
b, g, r = cv2.split(RGB_img)
Стандартизуємо дані. Ми можемо реалізувати це простіше, не використовуючи бібліотеку, а лише за допомогою поділу:
r_scaled = r / 255
g_scaled = g / 255
b_scaled = b / 255
Тепер створимо 3 моделі PCA:
from sklearn.decomposition import PCA
pca_r = PCA(n_components=50)
pca_r_trans = pca_r.fit_transform(r_scaled)
pca_g = PCA(n_components=50)
pca_g_trans = pca_g.fit_transform(g_scaled)
pca_b = PCA(n_components=50)
pca_b_trans = pca_b.fit_transform(b_scaled)
Тепер ми можемо об'єднати отримані дані в одне зображення:
pca_r_org = pca_r.inverse_transform(pca_r_trans)
pca_g_org = pca_g.inverse_transform(pca_g_trans)
pca_b_org = pca_b.inverse_transform(pca_b_trans)
img_compressed = cv2.merge((pca_b_org, pca_g_org, pca_r_org))
Проведіть, щоб почати кодувати
Зменшити розмірність чорно-білого зображення до 40 компонентів.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат