Сжатое восприятие с использованием Matlab
Я пытаюсь реализовать технику сжатия с использованием matlab, чтобы восстановить изображение из меньшего количества измерений.
До сих пор я делил изображение на блоки 8 на 8, затем умножал каждый блок, считывая матрицу PHI, которая является гауссовой случайной матрицей, после чего декодировал сжатые блоки, используя CVX или L1 Magic.
Проблема в том, что я не получаю хороших результатов, так может кто-нибудь помочь мне, пожалуйста?
пример кода
x=imread('greyscale_image.tiff');
x=im2double(x);
x_1blk=x(1:8,1:8);
xdct=dct2(x_1blk);
xq=xdct/quanMTX;
xq=reshape(xq,[],1);
y=phi*xq;
x0=phi.'*y;
tic
s1=l1eq_pd(x0, phi, [], y,1e-3);
toc
s1=reshape(s1,8,8);
s1=s1*quantMTX;
s1=idct2(s1);
Я получаю около 25 000 за PSNR, в то время как я ожидаю получить около 29 000