Matlab vs C# 图像像素值
Posted
技术标签:
【中文标题】Matlab vs C# 图像像素值【英文标题】:Matlab vs C# Image pixel values 【发布时间】:2015-11-08 23:01:02 【问题描述】:我在 Matlab 和 C# 中读取了相同的图像,然后比较了 RGB 通道值,发现存在细微差别(大约 4% 的像素在 3 和 -3 之间变化)。
造成这种差异的原因是什么??? 这是可以解决的吗?
我在 Matlab 中使用了 imread,在 C# 中使用了以下代码(处理 0-255 像素值)
Image Im1 = Image.FromFile("D:/VisualStudio2013/haarwt/haarwt/highcontrast1_512.jpg");
Bitmap bmp = new Bitmap(Im1);
Color c;
double[,] Red = new double[bmp.Width, bmp.Height];
double[,] Green = new double[bmp.Width, bmp.Height];
double[,] Blue = new double[bmp.Width, bmp.Height];
for (int j = 0; j < bmp.Height; j++)
for (int i = 0; i < bmp.Width; i++)
c = bmp.GetPixel(i, j);
Red[i, j] = (double)c.R;
Green[i, j] = (double)c.G;
Blue[i, j] = (double)c.B;
【问题讨论】:
【参考方案1】:您正在阅读 .jpg 文件。 Jpg 文件使用有损压缩。也就是说,通过编码然后解码图像不会保留确切的值。你所经历的是不同的,但却是相关的。 当您使用有损压缩保存图像时,像素的精确值会丢失,这意味着解压缩算法的职责是“猜测”值。这为解压算法的实现留下了空间,这可能是您所经历的原因。
Jpeg 压缩/解压缩协同工作,使这些差异很小且难以察觉,但变化是存在的。
【讨论】:
嗯,好的,所以没有问题要修复...这只是由于有损压缩图像...谢谢....以上是关于Matlab vs C# 图像像素值的主要内容,如果未能解决你的问题,请参考以下文章