2016-07-22 37 views
1

这是我的问题。我有一个bmp文件,并尝试获取图片的RGB值。我用4种不同的方法来完成这个任务,在Matlab中进行imread,在R,photoshop中打包“bmp”和“pixmap”。但是,对于相同的像素点,这4种方法返回的值稍有不同。为什么Photoshop在Matlab和R中有不同的RGB值?

  1. 在包 “BMP” 中的R imread()在Matlab和read.bmp()返回相同的值:(155,92,75)

  2. getChannels()中包 “像素映像”在R收益(0.6431535, 0.3817427,0.3112033):他们似乎是正常化。将图1中获得的值除以图片 ([0,241])中红色通道的范围得到完全相同的值。绿色和蓝色通道的范围是[0,187]和[0,176]。

  3. Photoshop返回稍微不同的值:(160,95,77)。

为什么这些方法返回不同的RGB值?任何帮助将不胜感激。

更新信息:

原始图像(预览开在苹果牛和PS): original

Matlab的imread()和imshow()图像: Matlab version

而且我发现,如果我在photoshop中将颜色模式从RGB转换为CYMK,pic看起来与Matlab中的相同。

+1

你能上传实际图片吗? – Suever

+0

可能的重复http://stackoverflow.com/questions/38468519/reading-grayscale-image-in-matlab/38469926#38469926 –

+0

我觉得原始的BMP图像没有以RGB24色彩格式存储(每个颜色通道一个字节) 。试试:I = imread('QMWLH.bmp');显示尺寸(I),确保尺寸为640x360x3。保存我imwrite(我,'RGB.bmp');现在在Photoshop中打开RGB.bmp,并检查值。也可能是伽马相关... – Rotem

回答

1

Matlab和R是为科学或技术应用而设计的,并且会直接读入图像不变。然而,Photoshop是为美学应用而设计的,并且更关心给定图像的整体外观。图像中颜色表示的一个比较重要的事情是其获取的colour space,定义可表示阴影的范围(或gamut)。

虽然您没有向我们展示相关图像,但很可能如果它缺少嵌入式配置文件,Photoshop假定您的图像位于标准RGB色彩空间sRGB中。由于您的显示器可能具有不同的色域,并且默认情况下,photoshop使用Adobe RGB来表示图像(因为它比sRGB稍宽),因此可能会将其默默转换为“新”空间。如下图所示,两者是稍有不同:

Adobe RGB

- ,并且因此报告的值稍有不同。

总之,如果您想制作出色的假期快照,请使用Photoshop。如果你想做好科学,不要离开它。

+0

你有没有经过测试,还是仅仅是一个假设?我尝试了它(我使用了相对旧的photoshop版本),并且RGB值与Matlab中的相同。 – Rotem

+0

我已经在嵌入颜色配置文件的相机图像上测试了这一点,RGB值与'imread'略有不同。更改颜色配置文件(在Photoshop中)确实会改变在Photoshop中报告的内容,但不会改变matlab。 – Landak

+0

BMP或其他文件格式? – Rotem

相关问题