Вопрос по обработке изображения
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Вопрос по обработке изображения Expand / Collapse
Автор
Сообщение
09.04.2007 21:51
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 09.04.2007 21:44
Сообщ.: 14, Visits: 116
Я получил  от своего преподавателя следующее задание по обработке изображений. Есть черная поверхность с светящимся пятном посередине, которое может быть разноцветным (файл 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++) {
          for (x1 = 0; x1 < xmax; x1++) {
            brisum = 0;
            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#. Вот если бы удалось это сделать, то можно было бы все рассчитать. Помогите, пожалуйста, разобраться, как в моем случае работать с цветом и яркостью точек.

Сообщ. #912338
18.04.2007 22:43
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.05.2008 21:37
Сообщ.: 193, Visits: 2 044
Удобнее рисовать использую объект Graphics. Его можно создать так

Graphics g = Graphics.FromImage(youBtimapObject);

Потом создаете объект Color, используя набор составляющих цветов GRB. Затем Pen и/или Brush объект и рисуете на объекте g.

Сообщ. #912588
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 7:47