if I dct a gray image and then Idct, isnt it should be the original gray image?

2 views (last 30 days)
A=imread('yachae.jpg');
B=rgb2gray(A);
DCTB=dct2(B);
IDCTB=idct2(DCTB);
imshow(IDCTB);
isnt it should be the original image if I dct a gray image and idct back?
but the result is a white image...where should i fix?

Answers (1)

Walter Roberson
Walter Roberson on 23 Nov 2019
No, it should not be the same. You are not doing an integer transform, so you are taking in a integer image and outputing a floating point result that is in approximately the same value range but is double precision instead of integer data type. imshow() applied to a double precision matrix assumes that the data is in the range 0 to 1 and that anything outside that range should saturate to the boundary.
Try
imshow(IDCTB, [])

Products

Community Treasure Hunt

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

Start Hunting!