这是我的问题。我有一个bmp文件,并尝试获取图片的RGB值。我使用了4种不同的方法来实现这一点,在Matlab中进行了简化,包装" bmp"和" pixmap"在R,photoshop。但是,对于相同的像素点,这4种方法返回的值略有不同。
imread()在Matlab中,read.bmp()在包" bmp"在R中返回相同的值:(155,92,75)
getChannels()" pixmap"在R回报(0.6431535, 0.3817427,0.3112033):它们似乎正常化了。将点1中获得的值除以pic中红色通道的范围 ([0,241])获得完全相同的值。绿色和蓝色通道的范围是[0,187]和[0,176]。
Photoshop会返回略有不同的值:(160,95,77)。
为什么这些方法会返回不同的RGB值?任何帮助将不胜感激。
更新信息:
原始图片(在Mac ox和ps中使用预览打开): original
Matlab imread()和imshow()图片: Matlab version
我发现如果我在photoshop中将颜色模式从RGB转换为CYMK,那么pic看起来与Matlab中的相同。
答案 0 :(得分:1)
Matlab和R专为科学或技术应用而设计,可直接读取图像。然而,Photoshop专为美学应用而设计,并且更关注给定图像的整体外观。图像中颜色表示的一个更重要的事情是它被获取的colour space,定义了可表示色调的范围(或gamut)。
虽然您没有向我们展示有问题的图像,但如果它缺少嵌入的配置文件,Photoshop很可能会假设您的图像位于标准RGB色彩空间sRGB中。由于您的显示器可能具有不同的色域,并且默认情况下,Photoshop使用Adobe RGB来表示图像(因为它比sRGB略宽),它可能会将其静默转换为“新”空间。如下图所示,两者略有不同:
- 并且因此报告的值略有不同。
简而言之,如果你想制作精彩的假日快照,请使用Photoshop。如果你想做好科学,那就远离它吧。