Reconstruct the initial image with idct2

Hello, for an assignment I needed to create an image of 512x512 pixels black with in its center a square of white pixel of 100pixels, then I had to make its transformation into discrete cosine and now I must thanks to the function idct2, reconstruct the initial image by retaining only :
  • The 80% largest coefficients of the DCT
  • The 50% largest coefficients of the DCT
  • The 20% largest coefficients of the DCT
But I don't know how to set this parameter, here is my code currently.
image=zeros(512,512);
image(206:305,206:305)=255;
J = dct2(image);
imshow(log(abs(J)),[])
colormap parula
colorbar

 Respuesta aceptada

Jonas
Jonas el 19 de Jun. de 2021
Editada: Jonas el 19 de Jun. de 2021

0 votos

have a look into this post

3 comentarios

No I hadn't found this post. Thanks a lot for your help. Here is how I proceeded I think I have the solution to keep for example the 75% largest coefficient of my DCT. Can you confirm that this is the case?
image=zeros(512,512);
image(206:305,206:305)=255;
J = dct2(image);
Y=prctile(abs(J),75,'all');
J(abs(J)<=Y)=0;
imshow(rescale(idct2(J)))
Jonas
Jonas el 20 de Jun. de 2021
your code is correct. it will remove all values that are smaller than 75% border of absolute values. you can change it to 80, 50 (which is the median by the way!) and 20 to achieve your original goal according to your question
Damien Dubois
Damien Dubois el 20 de Jun. de 2021
Thank you very much for your precious help

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Image Processing Toolbox en Centro de ayuda y File Exchange.

Productos

Versión

R2021a

Preguntada:

el 17 de Jun. de 2021

Comentada:

el 20 de Jun. de 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by