Головна Математика Стиснення зображень за допомогою SVD

🔢 Стиснення зображень за допомогою SVD

Стиснення зображень через SVD: залиште k найбільших сингулярних значень і порівняйте якість та економію пам'яті.

Математика2DСередній60 FPS
svd-compression ↗ Відкрити окремо
DRAG · SCROLL · CLICK — керуйте прямо у вікні симуляції.

Схожі симуляції

Про стиснення зображень методом SVD

Сингулярний розклад (SVD) факторизує будь-яку матрицю M розміром m×n у вигляді M = UΣVᵀ, де U і V — ортогональні матриці, а Σ — діагональна матриця невід'ємних сингулярних чисел σ₁ ≥ σ₂ ≥ … ≥ 0. При застосуванні до зображення (яке розглядається як матриця значень пікселів) сингулярні числа можна вважати мірою «важливості» кожного шару структури: перші кілька сингулярних чисел відображають загальні форми та контраст, тоді як пізніші кодують дрібні деталі й шум. Збереження лише перших k сингулярних чисел дає найкраще можливе наближення рангу k у сенсі мінімізації норми Фробеніуса похибки — результат, відомий як теорема Екарта-Юнга (1936).

Ця симуляція розкладає тестове зображення 64×64 на до 64 сингулярних компонент. Перетягніть повзунок рангу, щоб додати або видалити компоненти, і спостерігайте, як якість реконструкції змінюється в реальному часі. Стовпчикова діаграма під зображеннями показує спектр сингулярних чисел — компоненти ліворуч від лінії відсічення включені; ті, що праворуч, відкидаються.

Часті запитання

Що саме обчислює SVD?

SVD розкладає матрицю M у вигляді M = UΣVᵀ. Стовпці U — це ліві сингулярні вектори (вихідні напрямки), стовпці V — праві сингулярні вектори (вхідні напрямки), а діагональні елементи Σ — сингулярні числа, тобто коефіцієнти масштабування. Кожна матриця має SVD; на відміну від власного розкладу, він працює для неквадратних і несиметричних матриць.

Чому збереження більшої кількості сингулярних чисел дає краще зображення?

Кожна сингулярна трійка (σᵢ, uᵢ, vᵢ) додає до реконструкції один шар рангу 1: σᵢ·uᵢ·vᵢᵀ. Більші сингулярні числа вносять більше «енергії» (структури) у зображення. Зі збільшенням рангу k ви охоплюєте більшу частину загальної енергії Фробеніуса ∑σᵢ², а похибка наближення ‖M − Mₖ‖² = σₖ₊₁² + … + σᵣ² зменшується. Гладким зображенням потрібно менше компонент, ніж зашумленим або деталізованим.

Що таке коефіцієнт стиснення і як він обчислюється?

Для збереження SVD рангу k зображення m×n потрібно k·(m + n + 1) чисел замість m·n. Коефіцієнт стиснення дорівнює k(m+n+1)/(mn). Для зображення 64×64 з k=8 це дає 8×129/4096 ≈ 0,25, тобто ви зберігаєте лише чверть початкових даних. Компроміс — якість: дуже низькі ранги втрачають дрібні деталі.

Що таке теорема Екарта-Юнга?

Теорема Екарта-Юнга-Мірського (1936) стверджує, що наближення SVD рангу k, Mₖ = Σᵢ₌₁ᵏ σᵢ uᵢ vᵢᵀ, є найближчою матрицею рангу k до M як за нормою Фробеніуса, так і за спектральною нормою. Жодна інша матриця рангу k не може бути ближчою. Це робить SVD математично оптимальною стратегією стиснення матриць із втратами.

Як сингулярні числа пов'язані з власними числами?

Сингулярні числа M — це квадратні корені власних чисел MᵀM (або MMᵀ). Якщо M симетрична й додатно напіввизначена, її сингулярні числа дорівнюють її власним числам. Для загальної матриці власні числа можуть бути комплексними, тоді як сингулярні числа завжди дійсні й невід'ємні. Найбільше сингулярне число дорівнює спектральній нормі (матричній 2-нормі) M.

Чому зашумлене зображення стискається погано?

У випадкового шуму всі сингулярні числа приблизно рівні — енергія розподілена рівномірно по всіх компонентах, а не сконцентрована в перших кількох. Немає низьковимірної структури, яку можна було б використати. Натомість природні зображення мають різко спадний спектр сингулярних чисел, оскільки сусідні пікселі корельовані, а гладкі ділянки домінують. Саме тому JPEG та інші кодеки зображень можуть досягати високого стиснення фотографій, але не випадкових даних.

Де ще застосовується SVD, крім зображень?

SVD повсюдний: він лежить в основі PCA в аналізі даних, латентно-семантичного аналізу в NLP (пошук прихованих тем у тексті), колаборативної фільтрації в рекомендаційних системах (Netflix Prize), обчислення псевдооберненої матриці в чисельній лінійній алгебрі та теорії керування (збалансоване зменшення порядку моделі). У машинному навчанні матриці ваг нейронних мереж іноді апроксимують низьким рангом через SVD для прискорення виведення.

У чому різниця між SVD і власним розкладом?

Власний розклад A = PDP⁻¹ вимагає, щоб A була квадратною й діагоналізовною, а власні вектори утворюють стовпці P. SVD M = UΣVᵀ працює для будь-якої матриці (включно з неквадратними), використовує два різні ортогональні базиси (U і V) і завжди існує. Для симетричних додатно напіввизначених матриць обидва розклади збігаються: U = V = матриця власних векторів, Σ = матриця власних чисел.

Скільки сингулярних чисел має матриця зображення m×n?

Матриця m×n має r = min(m, n) ненульових сингулярних чисел, де r — її ранг. Зображення 64×64 має щонайбільше 64 сингулярних числа. На практиці природні зображення мають ефективний числовий ранг значно нижчий за 64, оскільки сингулярні числа швидко спадають до нуля — крива кумулятивної енергії швидко виположується, тобто перші ~10–20 компонент охоплюють понад 95% загальної дисперсії.

Що таке похибка Фробеніуса на панелі статистики?

Норма Фробеніуса ‖A‖_F = √(∑ᵢⱼ aᵢⱼ²) вимірює загальний «розмір» матриці як корінь із суми квадратів усіх елементів. Похибка Фробеніуса, показана тут, — це ‖M − Mₖ‖_F = √(σₖ₊₁² + … + σᵣ²), тобто квадратний корінь з енергії відкинутих сингулярних чисел. За теоремою Екарта-Юнга жодне наближення рангу k не може досягти меншої похибки Фробеніуса.

⚙ Принцип роботи

Залишіть лише перші k сингулярних чисел зображення і подивіться, скільки шарів рангу 1 потрібно, щоб картинка знову стала впізнаваною.

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install