【问题标题】:Reshape function in matlab and imagesmatlab和图像中的重塑函数
【发布时间】:2016-06-21 10:35:01
【问题描述】:

我的问题是关于 matlab 中的“重塑”功能。我自己和一些研究人员为研究兴趣制作了一个用于图像(tiff、.JPEG 等)的字节计数器。然后,我们将结果发送给另一个匿名方进行审查。这样做的结果是被告知我们生成的计数器是错误的,显然应该使用 matlab 函数 reshape。建议的代码如下。我不明白这个函数对图像有什么作用!我已经运行了代码,但是......我不明白代码对图像做了什么以及输出数据是什么。

如果有人能为我澄清这一点并给我一个傻瓜的解释,我将非常感激!

clc,    clear,  close   all;

IM  =   imread('Images  for Dataset 2/DS2-11.jpg');

hist(reshape(IM,1,[]),0:255);

【问题讨论】:

    标签: matlab reshape


    【解决方案1】:

    你的代码相当于

    IM=IM(:);
    
    hist(IM,0:255); %note that now histogram is recommended, instead of hist
    

    这基本上从您的图像中生成一维向量,并使用 0:255 箱计算它的直方图。代码reshape(IM,1,[]) 的意思是:重塑IM,所以它的第一个维度是1,第二个是“无论你需要什么来适应它([])”。

    例如:size(IM) 是 200x500。 reshape 函数会给出一个 1x100000 的向量。

    我相信我展示的版本是更清晰的代码。


    注意:当且仅当:

    1. 你的图片是 uint8 类型的
    2. 它是灰度图像,因此没有 RGB 通道

    如果图像是双倍的,那么您的数据将在 [0-1] 范围内,因此分箱 0:255 不会真正起作用。

    如果图像是 RGB,您将“一起”计算 3 个颜色通道,这可能会扭曲您的研究结果。

    【讨论】:

    • 谢谢,这开始有道理了。如果可以的话,有一个后续问题:垃圾箱中的每个值代表什么?
    • @Rbicknel 很高兴它有帮助。考虑接受它作为回答。此外,您可能想了解直方图是什么,特别是您使用直方图之前。 en.wikipedia.org/wiki/Histogram
    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 2019-07-31
    • 2016-05-20
    • 2020-10-05
    • 1970-01-01
    • 2023-04-07
    • 2016-01-11
    相关资源
    最近更新 更多