以灰度(32 barb)计算图像的亮度

时间:2014-07-25 21:52:02

标签: c# image camera grayscale

大家。我试图计算激光点图像的亮度,图像最初是绿色的,因为激光是单色的绿色。然后照片被转换为灰度图像,使用灰度滤镜,我试图定义两个for循环来获得图片的像素值,但似乎我得到了一些非常意外的东西,我不知道发生了什么。我想我需要有人为我照亮。

情况:我有一个黑白图像,下面的算法没有给出最亮点,即白点,而是指向一些随机位置(不是黑色也不是白色)。 enter image description here

编辑:我使用循环遍历图片以找到像素值。

for (int i = xstart; i < xend; i++)
{

    for (int j = ystart; j < yend; j++)
    {
        Color pixelColor = myBitmap.GetPixel(i, j);
        brightness = pixelColor.GetBrightness();
        //brightness = 0.2126 * pixelColor.R + 0.7152 * pixelColor.G + 0.0722 * pixelColor.B;
        //brightness = 0.333 * pixelColor.R + 0.333 * pixelColor.G + (1 - 0.333 * 2) * pixelColor.B;
        brightness_array[k, 0] = i;
        brightness_array[k, 1] = j;
        brightness_array[k, 2] = brightness;
        k++;
    }
        }

找到亮度所有这些算法都给出了最亮点的错误位置,我想知道这是因为我有一个额外的透明度alpha通道会影响结果。

        double max_brightness = 0.0;
        int positionX = 0;
        int positionY = 0;
        for (int m = 0; m < k; m++)
        {
            if (brightness_array[m, 2] > max_brightness)
            {
                positionX = Convert.ToInt32(brightness_array[m, 0]);
                positionY = Convert.ToInt32(brightness_array[m, 1]);
                max_brightness = brightness_array[m, 2];
            }
        }

以上代码是我找到最大亮度的方法,我逐个扫描像素,并将新的max_brightness像素设置为max_brightness,这样在循环整个图片之后,你应该得到max_brightness。

1 个答案:

答案 0 :(得分:1)

计算图像上最亮点的代码工作正常。问题是图片显示在一个图片框中,该图片框缩小图像和鼠标移动代码,以确定图片框中光标的位置与原始图像上的点不匹配。