Ознакомиться с примером использования сингулярного разложения (Singular Values Decomposition, SVD) матрицы для сжатия изображений. Получить навыки работы в системе компьютерной алгебры SageMath, в частности освоить систему облачных вычислений с Web-интерейсом CoCalc (SageMathCloud).
# | Использование SVD-разложения для сжатия RGB-изображения |
---|---|
1 | Задите на официальную страницу SageMath http://www.sagemath.org/, перейдите на страницу проекта CoCalc (SageMathCloud) нажав соответствующую кнопку. Создайте свой аккаунт, войдите в систему и создайте проект hello_sage. |
2 | С помощью вкладки New создайте файл Sage-оболочки, выбрав тип Sage worksheet. Для удобства управления файлами проекта можно сразу создать файл командной оболочки shell, выбрав тип >_Terminal (ssh-соединение). Открытые файлы проекта отображаются в виде вкладок. Управлять файлами проекта (в том числе и загружать файлы) можно через вкладку Files. |
3 | Загрузите в проект файлы с изображениями BW_251x251.png (ч/б), BW_688x430.png(ч/б), CAT_344x361.png (цветное) и модуль с описанием основной функции img_squeeze.sage. Изучите реализацию метода сжатия RGB-изображения на основе SVD-разложения. |
4 | Для каждого из изображений выполните SVD-сжатие. Для этого нужно загрузить модуль с описанием функции load("img_squeeze.sage") и вызвать функцию img_squeeze (fn_in, fn_out, percent), где fn_in, fn_out - имена входного и выходного файла, percent - вещественное число от 0 до 1 - доля общего количества сингулярных чиcел, которые будут сохранены в SVD-представлении. Например, percent = 0.10 означает, что 10 процентов от общего количества сингулярных значений будет включено в сумму, остальные обрезаются. |
5 | Для каждого изображения выполните сжатие с коэффициентами: 0.10, 0.20, 0.50, 0.80. Сохраните результат в разные файлы. При каких коэффициентах результирующее изображение почти неотличимо от оригинала? Сравните объемы файлов. Модифицируйте код таким образом, чтобы выводились все сингулярные значения. Начиная с какого номера значениями можно принебречь, подсчитайте соответствующий коэффициент? |
6 | Выполните сжатие уже обработанного файла, проанализируйте сингулярные значения. |