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

2 次查看(过去 30 天)
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?

回答(1 个)

Walter Roberson
Walter Roberson 2019-11-23
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, [])

产品

Community Treasure Hunt

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

Start Hunting!

Translated by