通过保持最大系数来进行系数阈值处理

时间:2014-05-30 10:24:43

标签: matlab

我一直在做一些实验,使用一些转换,例如Matlab中的图像数据上的DCT。 使用512x512 px lena图像的DCT示例:

x = double(imread('lenna.bmp')); R = dct2(x);

然后,我想通过保留100个最大R系数并将剩余设置为零来对变换系数进行阈值处理。

我该怎么做?

1 个答案:

答案 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