Inverse dct in matlab

1 回表示 (過去 30 日間)
Stewart Tan
Stewart Tan 2019 年 9 月 1 日
回答済み: R.G. 2019 年 9 月 1 日
So I want to remove the higher frequency dct from an image and reconstruct it, so i followed an example by Matlab https://www.mathworks.com/help/images/ref/dct2.html. However, when i tried with my own image, it didn't turn out to be great. I'm using an image:
Capture.PNG
and i followed every step in the link with:
img = imread('giraffe.png');
img = rgb2gray(img);
J = dct2(img);
figure
imshow(log(abs(J)),[])
colormap(gca,jet(64))
colorbar
The colorbar
Capture2.PNG
J(abs(J) < 10) = 0;
img_r = idct2(J);
imshow(img_r)
But my output image became:
Capture.PNG
Why did this happen?

採用された回答

R.G.
R.G. 2019 年 9 月 1 日
Hello! Just specify display range. Use imshow(img_r, [0 255]) instead.
I've checked it.
img = imread('giraffe.png');
img = rgb2gray(img);
J = dct2(img);
J(abs(J) < 100) = 0;
img_r = idct2(J);
imshow(img_r, [0 255])

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by