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 的向量。
我相信我展示的版本是更清晰的代码。
注意事项:当且仅当:
时直方图才有效
- 你的图片是uint8类型
- 它是一张灰度图像,因此没有 RGB 通道
如果图像是双重的,那么您的数据将在 [0-1] 范围内,因此合并 0:255 不会真正起作用。
如果图像是 RGB,您将计算 3 个颜色通道 "together",这可能会扭曲您的研究结果。
我的问题是关于 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 的向量。
我相信我展示的版本是更清晰的代码。
注意事项:当且仅当:
时直方图才有效- 你的图片是uint8类型
- 它是一张灰度图像,因此没有 RGB 通道
如果图像是双重的,那么您的数据将在 [0-1] 范围内,因此合并 0:255 不会真正起作用。
如果图像是 RGB,您将计算 3 个颜色通道 "together",这可能会扭曲您的研究结果。