С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
1

Wavelet - преобразование сжатие изображений

06.12.2012, 22:50. Показов 6486. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане!
Вот есть маленькая программка, обеспечивающая сжатие и восстановление изображения с помощью вейвлетов.
Она работает правильно =)
Внимание, вопрос!
скажите пожалуйста, что можно улучшить в программе (как показать более подробно этапы сжатия картинки), что нужно изменить в коде, чтобы производить сжатие и восстановление любой картинки, а не M-файла?

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
clc;
close all;
load detfingr; %загрузка файла 
nbc = size(map,1);
wname = 'sym4'; %выбор базисной функции - более полно отражает колебания в выбранном диапазоне частот и наименее чувствительна к краевым эффектам
lev = 3; %уровень разложения данных
 
%реализуем двумерное многоуровневое дискретное разложение данных, заданных
%матрицей X
[c,s] = wavedec2(X,lev,wname); 
% c-матрица, содержащая коэффициенты аппроксимации и детализации горизонтального, вертикального и диагонального разложения. 
% s-матрица, каждый из элементов которой определяет соответствующую ему
% размерность матрицы разложения на уровнях lev. Т е структура собственно
% разложения
 
%    wdcbm2 -порог Берга-Массара для двумерных процедур шумоподавления
% параметры настройки порога
alpha =1.5; % т к производится расчёт, предназанченный для решения сжатия изображений
% prod - вектор-строка, содержащая произведения элементов каждого столбца
m = 2.7*prod(s(1,:)); %самый грубый коэффициент аппроксимации (*1..6)
[thr,nkeep] = wdcbm2(c,s,alpha,m); 
% thr-матрица размером 3*j, содержит значения порогов для всех уровней j
% горизонтакльного, вертикального и диагонального разложений исходного
% изображения
% nkeep - вектор, содержит число коэффициентов разложения, сохраняемых в
% процессе шумоподавления и сжатия данного изображения.
% nkeep[j] =m*((lev+2-j)^alpha)
 
%удаление шумов и сжатие
[xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,lev,thr,'h'); % xd-результирующая матрица (Х) - после сжатия и удаления шумов. Используем жёсткую процедуру удаления шумов
colormap(pink(nbc)); 
subplot(2,2,1), image(wcodemat(X,nbc)), 
title('Исходное изображение'); 
subplot (2,2,2), image(wcodemat(xd,nbc)), 
title('Сжатое изображение'); 
xlabl = ['2-norm rec. :', num2str(perfl2)]; 
xlab2 = [' % - zero cfs:  ',num2str(perf0), '%']; 
xlabel([xlabl  xlab2])
%приведены исходный и сжатый отпечатки пальца; при этом более 94 %  коэффициентов обнулено,  а в оставшихся сосредоточено 98 %  от
%энергии всех коэффициентов разложения. Несмотря на то, что сжатие осуществлено в десятки раз,  качество изображения остается вполне 
%хорошим. Поэтому объем архива отпечатков пальцев для криминалистических отделов может быть существенно уменьшен. 
 
% Извлечение коэффициентов аппроксимации и детализации
% последнего уровня
sa2 = appcoef2 (c, s, wname, 0);
sh2 = detcoef2 ('h', c, s, lev);
sv2 = detcoef2 ('v', c, s, lev);
sd2 = detcoef2 ('d', c, s, lev);
% Рисуем изображение
% и то, что осталось после разложения
figure
text(50,50,'\leftarrowПрямое вейвлет-преобразование')
text(100,50, '\leftarrowНЧ- Низкочастотное фильтрование')
text(150, 50, '\leftarrowВЧ - Высокочастотное фильтрование')
 
colormap(pink(nbc)); 
subplot (2,2,1)
image (wcodemat(sa2,nbc)), title ('sa2 - НЧ по строке и столбцу') 
subplot (2,2,2) 
subimage (sh2), title ('sh2 - ВЧ по строке и НЧ по столбцу')
subplot (2,2,3)
subimage (sv2), title ('sv2 - НЧ по строке и ВЧ по столбцу')
subplot (2,2,4)
subimage (sd2), title ('sd2 - ВЧ по строке и столбцу')
 
figure
colormap(pink(nbc));
woman_rec = waverec2 (c, s, wname);
% Восстановленные изображения
subplot(2,2,1), image (wcodemat(woman_rec,nbc)), title ('Восстановление с waverec2')
%очищенное от шумов изображение
[xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,lev,thr,'s'); 
subplot(2,2,2), image(wcodemat(xd,nbc)); title('Очищенное изображение')
буду очень благодарна за рекомендации с примерами функций

ps почему-то если просто
Matlab M
1
load file
заменяешь на
Matlab M
1
2
 filename = dir('filename.png');
X = imread( filename.name );
то всё рушится. подскажите, что же делать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2012, 22:50
Ответы с готовыми решениями:

Сжатие изображения в wavelet toolbox
Друзья, нужна помощь. C помощью wavelet toolbox нужно сжать изображение использую 3 вейвлет...

Wavelet преобразование
Доброго времени суток. Сразу скажу что я новичек в matlab. Поставили задачу, с помощью вейвлет...

Wavelet преобразование изображение
Задание: Перевести изображение из RGB в YCbCr, воспользоваться функцией dwt2, приравнять матрицы...

Wavelet Analyzer
Приветствую! Проблема такая: не пойму, как записать процедуры, совершаемые в тулбоксе, в виде...

2
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
07.12.2012, 11:16 2
А просто X = imread('filename.png'); не помогает?
1
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
07.12.2012, 19:02  [ТС] 3
Зосима, помогает, обработка изображения алгоритмом явно происходит. только вот не получается показать на экран сжатое изображение, восстановленное и очищенное от шумов. помогите, пожалуйста
0
07.12.2012, 19:02
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2012, 19:02
Помогаю со студенческими работами здесь

Wavelet исследование на периодичность
Помогите, люди добрые и умные! Есть большая куча (массив) векторов разной длины x{i} (от десятка...

Matlab Wavelet Morlet для Delphi
Добрый день, уважаемые форумчане! У меня следующая проблема. Я использовал в течение нескольких...

Как разложить сигнал с помощью Wavemenu, 1-D Wavelet
Добрый день! Подскажите, пожалуйста, я раскладываю сигнал с помощью Wavemenu, 1-D Wavelet. Все...

Пропадает часть графика при работе с Subplot и Wavelet toolbox
Собрал из частей кода из Help(a) программу которая должна была выводить 3 графика "Анализируемый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru