【问题标题】:Showing two images with the same colorbar in log在日志中显示两个具有相同颜色条的图像
【发布时间】:2016-12-06 15:39:43
【问题描述】:

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

我所说的稀疏矩阵是指它包含许多恰好为零的元素。

我想在同一个颜色图和一个独特的颜色条下显示两个矩阵。在 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

你有什么建议?如何修改上面的代码?

任何帮助将不胜感激!

【问题讨论】:

    标签: image matlab image-processing plot


    【解决方案1】:

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

    因此,只需执行imagesc(10*log10(1 + Matrix));,那么最小值始终以0 为界,而最大值不受限制,但受Matrix 中的最大值的约束。

    【讨论】:

    • 谢谢你的回答:)
    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2019-11-01
    • 2018-11-28
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多