大家。我试图计算激光点图像的亮度,图像最初是绿色的,因为激光是单色的绿色。然后照片被转换为灰度图像,使用灰度滤镜,我试图定义两个for循环来获得图片的像素值,但似乎我得到了一些非常意外的东西,我不知道发生了什么。我想我需要有人为我照亮。
情况:我有一个黑白图像,下面的算法没有给出最亮点,即白点,而是指向一些随机位置(不是黑色也不是白色)。编辑:我使用循环遍历图片以找到像素值。
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。
答案 0 :(得分:1)
计算图像上最亮点的代码工作正常。问题是图片显示在一个图片框中,该图片框缩小图像和鼠标移动代码,以确定图片框中光标的位置与原始图像上的点不匹配。