tumanovalex
Помогающий
Offline
|
|
« : 10-04-2007 15:16 » |
|
Я получил от своего преподавателя следующее задание по обработке изображений. Есть черная поверхность с светящимся пятном посередине, которое может быть разноцветным (файл BMP). Это светящееся пятно создает изображение на другой черной поверхности того же размера, расположенной параллельно на расстоянии "a". Нужно это изображение создать. Изучив учебники по оптике, я начал писать программу: Bitmap bmTest = new Bitmap("G:\\ImageSrc.bmp"); // исходное изображение (координаты точек x1 и y1) Bitmap bmResult = new Bitmap("G:\\ImageTrg.bmp"); // изображение, полученное в результате обработки (координаты точек x2 и y2) int a = 100, x1, x2, y1, y2, xmax = bmTest.Width, ymax = bmTest.Height; double b2, b, brisum, bri, r2; for (x2 = 0; x2 < xmax; x2++) { for (y2 = 0; y2 < ymax; y2++) { brisum = 0.0; for (x1 = 0; x1 < xmax; x1++) { for (y1 = 0; y1 < ymax; y1++) { bri = bmTest.GetPixel(x1, y1).GetBrightness(); //получение яркости b2 = (x2 - x1) ^ 2 + (y2 - y1) ^ 2; r2 = b2 + a * a; brisum = brisum + bri * Math.Sqrt(b2 / r2)/r2; } //y1 } //x1 // вот тут нужно присвоить точке результирующего изображения нужный цвет и яркость ( к сожалению, не знаю, как это сделать) } // y2 } // x2 bmTest.Save("G:\\ImageTrg.bmp"); } } К сожалению, я не знаю, как установить нужную яркость для точек на второй поверхности, не нашел таких методов для C#. Вот если бы удалось это сделать, то можно было бы все рассчитать. Помогите, пожалуйста, разобраться, как в моем случае работать с цветом и яркостью точек на второй поверхности.
|