🔢 Стиснення зображень за допомогою SVD
Стиснення зображень через SVD: залиште k найбільших сингулярних значень і порівняйте якість та економію пам'яті.
Схожі симуляції
Про стиснення зображень методом 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