matlab 和图像中的重塑函数

Reshape function in matlab and images

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

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

clc,    clear,  close   all;

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

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

您的代码等同于

IM=IM(:);

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

这基本上是从您的图像生成一维矢量,然后使用 0:255 分箱计算它的直方图。代码 reshape(IM,1,[]) 的意思是:重塑 IM 所以它的第一个维度是大小 1,第二个维度是 "whatever you need to fit it ([])"。

示例:size(IM) 为 200x500。 reshape 函数将给出一个 1x100000 的向量。

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


注意事项:当且仅当:

时直方图才有效
  1. 你的图片是uint8类型
  2. 它是一张灰度图像,因此没有 RGB 通道

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

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