Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Министерство связи и информатизации Республики...docx
Скачиваний:
12
Добавлен:
27.09.2019
Размер:
4.08 Mб
Скачать

Графики абсолютных отклонений.

Вывод:

В результате расчетов PSNR во всех случаях получилось больше 37 дБ, следовательно, во всех случаях различия между оригиналом и восстановленным изображением практически незаметны.

Наибольшие значения PSNR получились у изображений 1, 4 и 5. Из этого можно сделать вывод, что лучше восстанавливаются изображения, у которых нет резких переходов от темного к светлому, а также меньше мелких объектов, т.е. меньше структурированность.

Наибольшая МАЕ( максимальная абсолютная ошибка) наблюдается у изображений 3, 4 и 6, т.к. здесь наблюдаются резкие переходы от светлого к темному. Например, граница между темным лесом и светлым полем или различия цветности между близко стоящими зданиями.

По индексу структурной похожести все изображения имеют достаточно близкое значение к 1, т.е. они достаточно схожи с оригиналом.

Наибольшее значение SSIM имеют те изображения, где наибольшее значение PSNR и наименьшее значение МАЕ.

Изображение 4 имеет достаточно большое значение PSNR, но также имеет большое значение МАЕ, что привело к сравнительно малому значению SSIM. Это можно объяснить тем, что параметр PSNR чувствителен к среднему отличаю сигналов по амплитуде.

Из этого можно сделать заключение, что наиболее хорошо восстанавливаются изображения, у которых меньше различие по структуре(например, отдельно поле или отдельно лес) и с меньшей контрастностью оригинала.

Приложение А

Текст программы

clear;

IMAGE=double(imread('out_8_1.bmp'));

NewImage=zeros(size(IMAGE)); % Сюда будут записываться пиксели восстановленного изображения.

% Размер тайла изображения.

x=128;

y=128;

%--------------------------------------------------------------------

Nlevels=16; %количество уровней квантователя. 16=2^4. Т.е. в 4 бита.

%Уровни квантования задаются границами квантования. Уровень равен середине

%отрезка между двумя границами.

%Инициализация квантователя

Nlevels=Nlevels/2;%Один бит оставляем для знака ошибки, т.е. всего уровней Nlevels/2.

levels=round(0:127/(Nlevels):127);%начальное положение границ квантователя.

baseeta=33;%Шаг адаптивности.

etamod=1.125;%Множитель шага адаптивности.

eta=baseeta;

cod=1;

%-------------------------------------------------

coded=[];%Сюда будут складываться сжатые данные

%Первое значение передаётся без сжатия.

%--------------------------------------------------

for ii=1:floor(size(IMAGE,1)/x)

for jj=1:floor(size(IMAGE,2)/y)

clc

[ii,jj]

M=IMAGE((ii-1)*x+1:ii*x,(jj-1)*y+1:jj*y);

N=zeros(size(M));

ind=[];

znach=M(1,1);

coded=[];

FirstPixel=M(1,1);

for l=1:x

for m=1:y

pred=predsimple(N,l,m,znach);%Предсказатель.

%Квантование одного пикселя изображения

[cod,znach,levels,eta]=aquant(M(l,m),pred,cod,levels,baseeta,eta,etamod);

%--------------------------------------

N(l,m)=znach;

% coded=[coded cod];

end;

% clc

% [l,m]

end;

%В данной реализации деквантования не производится, а

%восстановленное изображение получается сразу при сжатии.

NewImage((ii-1)*x+1:ii*x,(jj-1)*y+1:jj*y)=N;

imshow(NewImage,[0,255])

%Процедура деквантования аналогична процедуре квантования.

%--------------------------------------------------------

end;

end;

n = 1024.0;

m = 1024.0;

'--------------------------------------------------------------------'

%--------------------------------------------------------------------

k = 8; %количество уровней квантователя.

mse = 0.0;

for i = 1:m

for j= 1:n

mse = mse + (IMAGE(i,j)-NewImage(i,j))^2.0;

end;

end;

mse = mse/(m*n);

psnr = 10.0*log10((((2.0^k)-1)^2.0)/mse)

f=0;

d=0;

for i=1:m

for j=1:n

f=abs(IMAGE(i,j))^2.0;

if d<f

d=f;

end;

end;

end;

pmse = mse/d

z=double(0.0);

x=double(0.0);

for i=1:1024.0

for j=1:1024.0

z=z+IMAGE(i,j)^2.0;

end;

end;

nmse=mse*(n*m)/z

snr = 10.0*log10(1/nmse)

%----------------------------------------------------------------

mae = 0;

dif = zeros(1024);

[a,b] = meshgrid(1:n);

for i = 1:m

for j = 1:n

dif(i,j) = abs(IMAGE(i,j)-NewImage(i,j));

if mae < dif(i,j)

mae = dif(i,j);

end;

end;

end;

figure, mesh(a,b, abs(IMAGE-NewImage));

mae

%--------------------------------------------------------------------

s3 = 0.0;

s4 = 0.0;

s1 = 0.0;

s2 = 0.0;

for i = 1:m

for j= 1:n

s1 = s1 + IMAGE(i,j);

s2 = s2 + NewImage(i,j);

end;

end;

s1 = s1/(n*m);

s2 = s2/(n*m);

s5 = 0.0;

for i = 1:m

for j= 1:n

s3 = s3 + (IMAGE(i,j) - s1)^2.0;

s4 = s4 + (NewImage(i,j) - s2)^2.0;

s5 = s5 + (IMAGE(i,j)-s1)*(NewImage(i,j)-s2);

end;

end;

s3 = s3/(n*n);

s4 = s4/(n*n);

s5 = s5/(n*m);

c1 = (0.01*(2.0^k-1))^2.0;

c2 = (0.03*(2.0^k-1))^2.0;

ssim = ((2.0*s1*s2+c1)*(2.0*s5+c2))/((s1^2.0+s2^2.0+c1)*(s3+s4+c2))