Функции > Обработка изображений > Обработка изображения > Пример. Одномерные и двумерные гистограммы
  
Пример. Одномерные и двумерные гистограммы
Используйте функции , imhist и imhist2hist2d для создания одно- и двумерных гистограмм.
Сведения об использовании этого примера см. в разделе Сведения о примерах обработки изображений.
imhist
Данная функция создает гистограмму для элементов матрицы M, разделяя диапазон интенсивности на n столбцов. Каждый столбец содержит то количество пикселов, которое подходит под его диапазон уровней интенсивности. Например, если n = 256, то для каждого возможного уровня интенсивности 8-битного изображения в оттенках серого существует один столбец. Если количество столбцов меньше 256, уровни интенсивности делятся следующим образом:
Нажать для копирования этого выражения
Маркировка столбцов начинается с 0. Если количество столбцов больше 256, их размер будет меньше 1.
1. Задайте небольшую матрицу, чтобы увидеть отношение между значениями и видом гистограммы.
Нажать для копирования этого выражения
2. Определите число столбцов для применения функции imhist к матрице, указанной выше.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Поскольку n = 255, каждый из 256 уровней интенсивности получит отдельный столбец. Как видно из матрицы P, единственный столбец, счетчик которого будет больше единицы, это столбец под номером 150.
Нажать для копирования этого выражения
3. Нарисуйте гистограмму уровней интенсивности.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
4. Задайте переменной n меньшее значение (например, 5) и посмотрите разницу.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Поскольку n = 5, все 256 уровней интенсивности должны быть разделены на 5 отдельных столбцов. Значения интенсивности от 0 до 256/5 вносятся в столбец 0, значения от 256/5 до 512/5 — в столбец 1 и т. д.
Нажать для копирования этого выражения
Как видно из матрицы P и диаграммы выше, значения интенсивности распределятся следующим образом:
0, 30, 40 — в столбце 0 (0-51)
В столбце 1 значений нет (52-103)
120 и три значения по 150 — в столбце 2 (103-154)
200 — в столбце 3 (154-205)
240 — в столбец 4 (205-256)
5. Используйте функцию READ_IMAGE для чтения изображения, содержащего пробелы.
Нажать для копирования этого выражения
(pattern.bmp)
6. Примените функцию imhist к изображению.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Пустые пространства на изображении (значения интенсивности, равные 255) отобразятся в виде больших пиков на правой стороне гистограммы. Черный цвет и другие отдельные тона можно увидеть в других столбцах.
7. Вычислите количество элементов в столбце 0 (черный цвет) и в столбце 255 (белый цвет).
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Области на изображении с различными оттенками серого отобразятся в виде небольших пиков вдоль оси X.
imhist2
Данная функция может быть использована для разбиения значений за пределами диапазона 0-255.
1. Задайте матрицу, содержащую элементы за пределами диапазона 0-255.
Нажать для копирования этого выражения
2. Укажите число столбцов и вычислите гистограмму с n столбцов.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
3. Вычислите конечные точки n столбцов.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
hist2d
Данная функция создает двумерную гистограмму из двух изображений M и N, используя n столбцов в каждой размерности. Переменные M и N должны иметь одинаковый размер. Если два изображения имеют примерно одинаковое число пикселов при одинаковых интенсивностях, то матрица, возвращаемая функцией hist2d, будет иметь сильную диагональ. Функция разбивает диапазон 0-255 на n столбцов.
1. Задайте число столбцов и 2 матрицы изображений с одинаковым размером.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
2. Используйте оператор умножения векторов с функцией bin_label, заданной выше, чтобы вычислить число столбцов для матриц P и Q.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Двумерная гистограмма является матрицей n x n, увеличивающей счетчик в столбце c и строке r для каждого элемента матрицы Pbins с номером столбца c и соответствующего элемента матрицы Qbins со значением r. Например, первые элементы матриц Pbins и Qbins равняются 0 и 2 соответственно, поэтому счетчик в столбце 0 и строке 2 матрицы гистограммы увеличится на единицу.
3. Вычислите матрицу гистограммы, создав сначала матрицу нулей и увеличив затем значения.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
4. Сравните выходные данные, приведенные выше, с выходными данными функции hist2d.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
5. Для более конкретного примера предположим, что имеется цветное изображение.
Используйте функцию , чтобы увеличить изображение, а затем используйте функцию READRGBWRITERGB, чтобы записать изображение в файл.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
(smallwar.bmp)
6. Используйте функцию extract для извлечения зеленого и синего компонентов по отдельности, чтобы обеспечить сравнение двух цветовых компонентов.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
7. Отобразите двумерную гистограмму.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
(hist2d.bmp)
8. Отобразите двумерную гистограмму в виде изображения интенсивности в логарифмической шкале.
Нажать для копирования этого выражения
Изучите изображение и отметьте разные интенсивности. Сильная диагональ в данной двумерной гистограмме означает, что большинство пикселов в соответствующих расположениях имеют одинаковые интенсивности. Это приемлемо для двух компонент цвета на одной и той же фотографии. Диагональ была бы менее выпуклой для двух изображений с разными текстурами.