【发布时间】:2014-05-30 22:16:11
【问题描述】:
我一直在使用一些转换进行一些实验,例如在 Matlab 中对图像数据进行 DCT。 使用 512x512 px lena 图像的 DCT 示例:
x = double(imread('lenna.bmp')); R = dct2(x);
然后,我想通过保留 R 的 100000 个最大系数来对变换系数进行阈值处理,并将剩余的设置为零。
我该怎么做?
【问题讨论】:
-
我试过使用全局阈值 sqrt(2*log(number.of coefficient)
-
这是您想要的全局阈值。尝试构建一个逆直方图,然后您可以找到哪个值将您的样本拆分为 100.000 个较大的系数和其他系数。使用此值作为阈值。
-
sqrt(2*log(number.of coefficient))期望提供的公式是什么?系数的数量是多少?请注意,这与(number.of coefficient)相同,对吧? 2*log(x) = log(x^2)。
标签: matlab