如何在MATLAB中得到DCT能量分布图,或者我们可以称之为DCT系数分布图?
信息处理
图像处理
2022-02-05 06:56:58
1个回答
该图像的大致形状可以(可能)通过应用于整个图像的Matlab 函数DCT2获得(问题 1)。我怀疑此图像来自实际 DCT 矩阵的绝对值,该矩阵通常具有正值和负值(问题 2)。绝对值可能被非线性映射修改,例如对数或幂。原因是右下角的值几乎都是黑色的,在高频处可能为零。您是否有正值和负值,该区域可能以中灰色显示。
PNG 文件有 251 种颜色,因此具有实数值的绝对 DCT 矩阵以某种方式四舍五入到 8 位,可能是缩放的,而不是二值化的。
关于你的问题:如何处理系数?您应该告诉我们除了显示灰度绝对 2D DCT 图像之外您还想做什么。您可以计算 DCT 域中的能量浓度,或者将两条亮线识别为原始图像上具有高梯度的两个主要方向。
以下代码生成类似的图像,如下所示。
parBoxCox = 0.15;
data = imread('gantrycrane.png');
dataTrans = (1+(abs(dct2(rgb2gray(data))))).^parBoxCox;
dataTrans = floor(dataTrans*255/max(dataTrans(:)));
imagesc(dataTrans);colormap gray
其它你可能感兴趣的问题

