作者iterator (rotareti)
看板C_Sharp
标题Re: [问题] 读灰阶影像的问题(灰阶值错误)
时间Fri Oct 5 16:26:03 2012
※ 引述《timon (Tim On Five)》之铭言:
: 非常感谢大家的帮忙,在各位的推文与回文我也学到很多。
: 我不知道这样解释对不对,如下:
: 如果是test.jpg是16阶影像的话,这种结果是说得通的(16转256每个值会*16)。
: 可是我拿这张图使用matlab和Photoshop来看每个Pixel的灰阶值,
: 取得第一行第一列(1, 1)的灰阶值是97,(2, 2)=95,(3, 3)=89...。
: 以上测试每个Pixel的灰阶值都分布在0-255(不是16的倍数)都是正常的。
: 这不是说明原图应该是256阶8-bit的灰阶影像吗?? (不知道这样说法正不正确@@")
: 非常抱歉,我实在搞不太清楚...再次谢谢大家!!
这个现象 (* 17) 是发生在转成 bitmap 的时候,
测试了一下, 在 Windows XP(无) 跟 Windows 7(有) 的结果是不同的,
应该是 MS 在底层实作上改了什麽造成.
如果要取得像 Photoshop 得到的数值, 可以透过下面这样的程式:
//add reference to PresentationCore, System.Xaml
using System.Windows.Media.Imaging;
using (FileStream stream = new FileStream("test.jpg", FileMode.Open))
{
JpegBitmapDecoder decoder = new JpegBitmapDecoder(stream,
BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None);
byte[] buf = new byte[90000];
decoder.Frames[0].CopyPixels(buf, 300, 0);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.23.102
1F:→ erspicu:这种XP跟WIN7差异上产生的灵异现象 真的很讨厌 10/06 12:57
2F:→ erspicu:一般人也很难探究到OS底层到底发生了什麽差异问题 10/06 12:58