![]() |
|
![]() ![]() ![]() |
|
accessd |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 23.3.2007 Репутация: нет Всего: нет |
может кто занимался сжатием изображений при помощи svd(сингулярное разложение матрицы)
сам метод svd: имеется матрица А, она приводится к следующей форме А = U*W*V, где U имеет размер MxN, W - диагональная с сингулярными значениями на главной диагонали, V - ортонормированная размером NxN. объясню суть метода сжатия: изображение разлагается на основные цвета RGB. каждый цвет записывается в матрицу. матрицы, назовем их red, green, blue разлагаются с помощью svd. чтобы сжать мы зануляем некоторые сингулярные числа, вообще они идут в матрице по убыванию, в конце есть близкие к нулю, которые не оказывают особого действия на изменение изображения. так вот, например у нас была матрица 16х16, соответственно имеем 16 сингулярных значений. мы берем например 3, остальные близки к нулю. передаем или сохраняем только 3 столбца матрицы U, 3 строки матрицы V, и первые три сингулярных значений. затем, чтобы восстановить исходное изображение, дополняем остальные элементы матриц нулями. перемножаем три восстановленные матрицы U, W, V. в результате умножения получаем матрицы red_uncompress, green_uncompress и blue_uncompress. ну и собственно заново собираем изображение из этих матриц. возникла проблема: например есть изображение размером 200х150 в формате bmp. сжимаем при 150 сингулярных числах, все ok. ниже примерно 135, начинают появляться "цветные точки", причем не на всем изображении, а только на определенных частях, на белом, черном и их оттенках, само изображение сохраняет структуру и выглядит вполне приемлимо. так вот, если уменьшать дальше кол-во сингулярных чисел, то изображение становится все "грязнее". из-за чего может такое происходить? bmp-ха прилагается.. это расжатое изображение Присоединённый файл ( Кол-во скачиваний: 15 ) ![]() |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 1 Всего: 50 |
А как еще должно быть, если сжатие с потерями? -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
accessd |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 23.3.2007 Репутация: нет Всего: нет |
рекомендую глянуть изображение.. загрязняется либо белый фон, либо черный. к тому же при таком уменьшении использования сингулярных чисел, сжатия пока не наблюдается. для такой картинки, сжатие будет при их кол-ве < 84. http://www.access1.nm.ru/japan_uncompress.bmp Это сообщение отредактировал(а) accessd - 31.3.2007, 19:32 |
|||
|
||||
accessd |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 23.3.2007 Репутация: нет Всего: нет |
разобрался. проблема решилась прописыванием не хитрых условий в методе умножения матриц, чтобы значения трех составляющих rgb не выходили за границы 0-255.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |