-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprova.asv
More file actions
141 lines (113 loc) · 3.57 KB
/
prova.asv
File metadata and controls
141 lines (113 loc) · 3.57 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
% Algoritmo per compressione lossless e lossy di immagini con wavelet (Haar), e
% zooming
%
%
%
% Autore: Roberto Calandrini
%
close all;
clear all;
clc;
% Definizione wavelet di Haar 1D (Filtri di decomposizione e ricostruzione)
Lod=[sqrt(2)/2 sqrt(2)/2];
Hid=[-sqrt(2)/2 sqrt(2)/2];
Lor=Lod;
Hir=-Hid;
%Leggo Immagine in grayscale
lena=double(imread('Lena_grayscale.bmp'));
%Definisco la massima scala di decomposizione raggiungibile (con o senza replicazione dei bordi)
[scala]=scal(lena);
%decomposizione completa diadica con Haar wavelet
[new]=deco(lena,scala,Lod,Hid);
%riordino la decomposizione nello stile di Matlab
[resh]=ordwave(lena,new,scala);
%definizione di alcuni parametri usati dopo
l1=size(lena,1);
l2=size(lena,2);
in=0; %livello di dettaglio iniziale
%plotta l'immagine alla risoluzione minima (approssimazione di grado più alto interpolata)
imin=resh(1:l1/2^scala,1:l2/2^scala);
imin=imresize(imin,[l1 l2]);
figure,imagesc(imin),colormap('gray'),title('Immagine bassa risoluzione');
%menu iniziale
sce=-1;
while(sce~=0)
sce=menu('Menu elaborazione Immagine: ',...
'1 - Compressione immagine',...
'2 - Zoom',...
'0- Uscita'...
)
switch(sce)
case 1
%%1 - Compressione immagine
[complos,complles]=compress(resh);
case 2
%%2 - Zoom
sce2=menu('Quale parte dell''immagine si desidera zoomare? ',...
'0 - Immagine intera',...
'1 - Regione di interesse'...
)
switch(sce2)
case 0
%%0 - Immagine intera
zoo=-1;
while(zoo~=0)
zoo=menu('Scegliere: ',...
'1 - Zoom IN',...
'2 - Zoom OUT',...
'0 - Uscita'...
)
switch(zoo)
case 1
%%1 - Zoom IN
if (in==scala)
disp('Massimo livello di dettaglio raggiunto');
else
in=in+1;
[ima]=zooming(lena,resh,scala,in,Lor,Hir);
imagesc(ima),colormap('gray')
end
case 2
%%2 - Zoom OUT
if (in==0)
disp('Operazione non possibile, questo è il livello di dettaglio più basso');
else
in=in-1; %livello di dettaglio
[ima]=dezoom(lena,resh,scala,in,Lor,Hir);
imagesc(ima),colormap('gray')
end
case 0
%%0 - Uscita
disp('Uscita..');
otherwise,
disp('Scelta non valida');
end
end
case 1
%%1 - Regione di interesse
subim = IMCROP(imin); %dà l'immagine ritagliata con il mouse della quale si vuole lo zoom
otherwise,
disp('Scelta non valida');
end
case 0
%%0- Uscita
disp('Uscita..');
otherwise
disp('Scelta non valida');
end
end
%END
%Cose da fare e problemi:
%
% 1) Finire lo zoom su regioni di interesse
% 2) Capire se è sempre possibile sfruttare la sparsità
% dell'immagine decomposta per compressione lossless
% (idea: replicare l'immagine ai bordi fino a potenza di 2, di modo che la decomposizione diadica
% sia molto spinta e ne aumenti parecchio la sparsità)
%
%
%
%
%
%
%