Стиснення зображень
Переходимо до останнього завдання, яке може вирішити 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))
Swipe to start coding
Зменшити розмірність чорно-білого зображення до 40 компонентів.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 5.26
Стиснення зображень
Свайпніть щоб показати меню
Переходимо до останнього завдання, яке може вирішити 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))
Swipe to start coding
Зменшити розмірність чорно-білого зображення до 40 компонентів.
Рішення
Дякуємо за ваш відгук!
Awesome!
Completion rate improved to 5.26single