在日志中显示具有相同颜色条的两个图像

时间:2016-12-05 20:13:00

标签: image matlab image-processing plot

我有两个相同大小p x n的稀疏矩阵“Matrix1”和“Matrix2”。

通过稀疏矩阵,我的意思是它包含许多正好为零的元素。

我想在同一个色彩图和唯一的颜色条下显示两个矩阵。在MATLAB中这样做很简单:

bottom = min(min(min(Matrix1)),min(min(Matrix2)));
top  = max(max(max(Matrix1)),max(max(Matrix2)));
subplot(1,2,1)
imagesc(Matrix1)
colormap(gray)
caxis manual
caxis([bottom top]);
subplot(1,2,2)
imagesc(Matrix2)
colormap(gray)
caxis manual
caxis([bottom top]);
colorbar;

我的问题:

事实上,当我使用imagesc(Matrix)显示矩阵时,它可以忽略使用imagesc(10*log10(Matrix))时始终显示的噪音(或背景)。

这就是为什么我要展示矩阵的10*log10。但在这种情况下,最小值将为-Inf,因为矩阵是稀疏的。在这种情况下,caxis会出错,因为底部等于-Inf

你有什么建议我?如何修改上述代码?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

非常重要的一点是,矩阵中的最小值始终为0。利用这一点,解决问题的一种非常简单的方法是在日志操作中添加1,以便映射到原始矩阵中0的值也映射到0 log 1}}操作。这可以避免您遇到的-Inf错误。事实上,如果您愿意,这是一种可视化傅里叶变换的常用方法。将1添加到对数可确保变换在输出中没有负值,但导数或其变化率保持不变,因为效果只是将1单位的曲线转换为左

因此,只需执行imagesc(10*log10(1 + Matrix));,然后最小值始终位于0,而最大值无限制但受Matrix中最大值的限制。