2016-06-21 92 views
0

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

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

clc, clear, close all; 

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

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

回答

0

您的代码相当于

IM=IM(:); 

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

这基本上使得1D矢量从图像和单位计算它的一个直方图,使用0:255个箱。代码reshape(IM,1,[])的意思是:重塑IM,所以它的第一个尺寸是1号尺寸,第二个尺寸是“无论你需要什么尺寸([])”。

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

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


注意:如果直方图会的工作,且仅当:

  1. 你的形象是UINT8型
  2. 它是一个灰度图像,因此,没有RGB通道

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

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

+0

谢谢,这是开始有意义..一个跟进问题,如果我可能:每个箱中的值代表什么? – Rbicknel

+0

@Rbicknel很高兴帮助。考虑接受它作为一个asnwer。此外,您可能想要阅读直方图是什么,特别是在*之前使用一个。 https://en.wikipedia.org/wiki/Histogram –