2014-07-25 4 views
0

모두. 나는 레이저 스팟 이미지의 밝기를 계산하려고 시도 했었습니다. 이미지는 원래 녹색이었고 레이저는 녹색으로 단색이었습니다. 하지만 그 사진은 그레이 스케일 이미지를 사용하여 그레이 스케일 필터를 사용하여 그림의 픽셀 값을 얻기 위해 두 개의 for-loop를 정의하려고 시도했지만 실제로 예상치 못한 것을 얻은 것 같습니다. 무슨 일이 일어나고 있는지 전혀 알지 못합니다. . 나는 나를 위해 빛을 비춰 줄 사람이 필요하다고 생각합니다.그레이 스케일 (32bbparb)의 이미지 밝기 계산

상황 : 흑백 이미지가 있습니다. 아래 알고리즘은 가장 밝은 점 즉 흰색 점을 제공하지 않았으며 대신 임의의 위치 (검은 색이나 흰색이 아님)를 가리 킵니다.

편집 : 픽셀 값을 찾기 위해 그림 위로 반복 루프를 사용합니다.

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++; 
    } 
     } 

밝기 이러한 모든 알고리즘이 가장 밝은 점에 대한 잘못된 위치를 준 찾기 위해, 나는 결과에 영향을 미치는 투명성에 대한 별도의 알파 채널을했기 때문에 그것의 궁금합니다. 전체 그림을 통해 당신 루프 후, 당신은 max_brightness을받을 것을 그래서이 최대 밝기를 발견하는 방법을 위의 코드는

 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 픽셀을 설정 .

+0

MY 코드가 실제로 길기 때문에 여기에 게시되지 않았습니다. –

+1

사진이 회색조 인 경우 모든 색상 구성 요소 (R, G 및 B)가 동일해야합니다. 이것은 어떤 알고리즘을 사용하든 (또는 'brightness = pixelColor.R'을 사용하더라도) 가장 밝은 픽셀이 정확하게 발견되어야 함을 의미합니다. 나는 그 문제가 다른 곳에 있다고 생각한다. – Lasooch

+0

코드가 길어질 수 있지만 관련 부분을 포함해야합니다. 예를 들어, i와 j는 무엇입니까? 어떤면에서 잘못된 위치를 부여합니까? 어떻게 알 수 있니? – DavidG

답변

1

이미지에서 가장 밝은 부분을 해결하는 코드가 올바르게 작동합니다. 문제는 그림을 그림 상자에 표시하여 그림의 크기를 줄이고 mousemove 코드를 사용하여 그림 상자 내의 커서 위치가 원본 이미지의 지점과 일치하지 않는지 확인하는 것입니다.

+0

예, 마우스 커서를 그림 상자의 끝으로 옮기고 (424,232) 있지만 그림 상자는 (640,360)입니다. 나는 e.X와 e.Y 마우스를 각각 1.509433과 1.5517 배로 늘려서 크기를 조정했습니다. 그게 너 내가 원하는 걸까?나는 그것을 시도했다, 그것은 가장 밝은 점에 가까운 어떤 곳 그러나 정확하게 나타내지 않았던 곳을 나타내었다. –

관련 문제