Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Гистограмма

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

Этот скетч-пример рассчитывает и показывает гистограмму изображения. Гистограмма – это способ графического отображения данных, и в этом скетче рассчитывается и показывается распределение уровней серого на изображении. На левом краю показано количество значений белого, а на правом краю – количество значений черного. Значения между этими двумя «полюсами» – это промежуточные значения (оттенки) серого: от наиболее светлого (слева) к наиболее темному (справа).

Примечание: На Android этот скетч будет вести себя по-другому, потому что цветовая информация большинства изображений уже не имеет 24-битную глубину.

Пример

  1. size(640, 360);
  2.  
  3. // загружаем изображение из папки данных скетча;
  4. // чтобы загрузить какое-то другое изображение,
  5. // отредактируйте фрагмент "frontier.jpg",
  6. // вписав туда название своего изображения:
  7. PImage img = loadImage("frontier.jpg");
  8. image(img, 0, 0);
  9. int[] hist = new int[256];
  10.  
  11. // рассчитываем гистограмму:
  12. for (int i = 0; i < img.width; i++) {
  13.   for (int j = 0; j < img.height; j++) {
  14.     int bright = int(brightness(get(i, j)));
  15.     hist[bright]++;
  16.   }
  17. }
  18.  
  19. // находим самое высокое значение гистограммы:
  20. int histMax = max(hist);
  21.  
  22. stroke(255);
  23. // рисуем половину гистограммы (пропускаем каждое второе значение):
  24. for (int i = 0; i < img.width; i += 2) {
  25.   // подгоняем значение «i» (начиная с «0» и до «img.width»)
  26.   // к позиции на гистограмме (0-255):
  27.   int which = int(map(i, 0, img.width, 0, 255));
  28.   // конвертируем значение гистограммы в координату на оси Y:
  29.   int y = int(map(hist[which], 0, histMax, img.height, 0));
  30.   line(i, img.height, i, y);
  31. }

См.также

Внешние ссылки

  1. processing.org - Histogram