首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#,.Net 4.0中读取像素值时遇到问题

在C#,.Net 4.0中读取像素值时遇到问题
EN

Stack Overflow用户
提问于 2012-07-13 18:03:57
回答 1查看 1.3K关注 0票数 1

我正在学习C#,我正在尝试这一点,使我的家庭工作在图像处理的例子。我正在尝试读取灰度级jpeg图像中沿水平线的像素值。我制作的一些照片告诉我,我正在读一个Format8bppIndexed图像(这对我来说是一种惊喜,因为我相信jpeg图像根本不使用调色板)。在windows窗体的适当控件中加载图像的代码如下所示:

代码语言:javascript
复制
 try
  {
       myImage = ( Bitmap ) Image.FromFile(imageName);
  }
  catch
  {
    MessageBox .Show("Unable to load the image" , Text, MessageBoxButtons .OK, MessageBoxIcon .Hand);
  }
  pictureBox1.Image = myImage ;  

然后,我尝试沿着图像中的任意直线路径读取像素,当按下按钮时,将它们列在csv文件中。我想,作为一个灰色的图像,读红色就足够了(是吗?)其他颜色成分是相等的;在我看来,使用getBrightness似乎是过分的):

代码语言:javascript
复制
  cursorStartx = 0;
  cursorStarty = 256;
  cursorEndx   = myImage.Width;
  cursorEndy   = 256;
  Color pixel;

StreamWriter fs = new StreamWriter( "pixels.csv" , true );
for (var i = 0; i < cursorEndx; i++)
{
  pixel = myImage.GetPixel(i, cursorStarty);
  fs.WriteLine( String .Format("{0}; {1}; {2}" , i, cursorStarty, pixel.R));
}
fs.Close();

当读取文件中的横截面时,我看到一些根本没有意义的值:它们都是17 (?)的倍数:

代码语言:javascript
复制
0; 256; 17
1; 256; 0
2; 256; 17
3; 256; 0
4; 256; 17
5; 256; 0
6; 256; 17
7; 256; 0
8; 256; 17
9; 256; 0
10; 256; 17
............
66; 256; 17
67; 256; 34
68; 256; 51
69; 256; 68
70; 256; 85
71; 256; 85
72; 256; 102
73; 256; 85

在同一程序中生成的直方图显示,在17 (?)的倍数处,计数峰明显不同。

为了执行实际检查,我在perl中做了一些类似的事情(我在Perl方面有更多的经验,我只是在学习C#),使用模块GD读取同一图像中相同路径上的像素,得到非常不同的值。

imageJ的直方图drwan的第一行如下:

代码语言:javascript
复制
0   0
1   0
2   1
3   1
4   15
5   81
6   304
7   984
8   2362
9   206144
10  2582
11  1408
12  653
13  451
14  345
15  321
16  277
17  288

完全不同的故事。

有人可能会向我解释我在做什么可怕的愚蠢的错误?

非常感谢

事情变得越来越有趣。用图像实验室读取同一幅图像,用C#编写,得到了同样的错误:直方图显示了像素值为17倍的离散计数。用ImageJ读取图像,用Java编写,得到了正确的直方图。现在,我试图找出是否有一种方法,使用C#,以某种方式管理图像读取,以便能够得到正确的值,或者这是一个主要的问题和选择是:放弃或执行某种低级别的图像读取( jpeg格式的硬东西.)

EN

Stack Overflow用户

发布于 2012-07-13 18:15:47

当将4bpp信道转换为8bpp信道时,17的倍数实际上是相当常见的。0x00,0x11,0x22 . 0xFF都是17的倍数。

在我看来,你有一个量化的16色灰度图像与抖动。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11475889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档