Метка «HSB»

Так уж получилось, что мне надо было написать маленькую программку для получения HSB-характеристик изображения. Самое тривиальное решение пришло в голову сразу:

public struct HSB
{
      public float H, S, B;
}

public static HSB GetHSB(Bitmap img)
{
      HSB imgHSB = new HSB();
      int width = img.Width, height = img.Height;
      int pixelsCount = height * width;

      for (int i = 0; i < pixelsCount; i++)
      {
            int y = i / width, x = i % height;
            imgHSB.H += img.GetPixel(x, y).GetHue();
            imgHSB.S += img.GetPixel(x, y).GetSaturation();
            imgHSB.B += img.GetPixel(x, y).GetBrightness();
      }

      imgHSB.H /=  pixelsCount;
      imgHSB.S /= pixelsCount;
      imgHSB.B /=  pixelsCount;
      return imgHSB;
}

Но оно не удовлетворило меня своей медлительностью: для изображения с размерами 2100х1500 пикселей метод выполнялся долгих 14209мс. Оказалось, что во всем виноват метод Bitmap.GetPixel.
Следовало искать другие, более быстрые способы.
Читать полностью »

Piccy.info - Free Image Hosting
Мы часто говорим о таком понятии как свет, источниках освещения, цвете изображений и объектов, но не совсем хорошо себе представляем, что такое свет и что такое цвет. Пора разобраться с этими вопросами и перейти от представления к понимаю.
Читать полностью »