在matlab和图像中重塑功能

时间:2016-06-21 10:35:02

标签: matlab reshape

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

如果有人愿意为我澄清这个并给我一个假人的解释,我会非常感激!

clc,    clear,  close   all;

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

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

1 个答案:

答案 0 :(得分:0)

您的代码等同于

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。重塑功能将提供1x100000的矢量。

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

注意:当且仅当:

时,直方图才有效
  1. 您的图片是uint8类型
  2. 它是灰度图像,因此,没有RGB通道
  3. 如果图像是双倍的,那么您的数据将在[0-1]范围内,因此分组0:255不会真正起作用。

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

相关问题