我一直在做一些实验,使用一些转换,例如Matlab中的图像数据上的DCT。 使用512x512 px lena图像的DCT示例:
x = double(imread('lenna.bmp')); R = dct2(x);
然后,我想通过保留100个最大R系数并将剩余设置为零来对变换系数进行阈值处理。
我该怎么做?
答案 0 :(得分:1)
使用prctile
查找超过或等于R
的100000个条目的值。然后将该值用作阈值,即将所有较低值设置为零:
threshold = prctile(R(:),(1-1e5/numel(R))*100); %// compute threshold
R(R<threshold) = 0; %// set values below the threshold to zero