Гистограмма изображения: Гистограмма изображения—ArcGIS Pro | Документация

Гистограмма изображения—ArcGIS Pro | Документация

Гистограмма изображения визуально суммирует распределение непрерывной числовой переменной через измерение частоты, при которой определенные значения появляются в изображении. Ось x в гистограмме изображения представляет собой числовую линию, которая показывает диапазон значений пикселов изображения, который был разбит на несколько диапазонов или групп. Для каждой группы показывается столбец, толщина этого столбца представляет плотность числового диапазона в группе, а высота столбца представляет число пикселов, попавших в этот диапазон. Понимание распределения данных – это важный момент в процессе их изучения.

Переменная

Для гистограммы изображения нужна одна непрерывная Числовая переменная по оси x, состоящая из значений пикселов выбранного канала изображения.

Преобразование

Некоторые аналитические методы интерполяции требуют нормального распределения данных. Если данные сдвинуты (распределение несимметрично), то может понадобиться преобразовать данные к нормальному распределению. Гистограммы позволяют вам оценить эффект логарифмического преобразования и преобразования по методу квадратного корня на распределение данных. Для справки, вы можете добавить график нормального распределения поверх гистограммы, включив отметку Показать Нормальное распределение на панели Свойства диаграммы.

Логарифмическое преобразование

Логарифмическое преобразование часто используется, когда данные смещены в положительном направлении и присутствует мало очень больших значений. Если эти большие значения расположены в наборе данных, логарифмическое преобразование поможет сделать дисперсию более постоянной и привести данные к нормальному распределению.

Например, распределение со смещением в положительную сторону на диаграмме слева трансформировано в нормальное распределение с использованием логарифмического преобразования на диаграмме справа:

Логарифмическое преобразование можно применять только к значениям больше нуля.

Преобразование по методу квадратного корня

Преобразование по методу квадратного корня похоже на логарифмическое тем, что уменьшает правое смещение набора данных. В отличие от логарифмических преобразований, преобразования по методу квадратного корня могут применяться к нулевым значениям.

Преобразование преобразование по методу квадратного корня можно применять только к значениям больше или равно нулю.

Количество бинов

Количество диапазонов по умолчанию соответствует квадратному корню из общего количества записей в наборе данных. Его можно выровнять, изменив значение Числа бинов на вкладке Данные на панели Диаграма. Изменение количества столбцов позволяют увидеть более или менее детальную структуру ваших данных.

Статистика

Некоторые основные статистические параметры также отображаются на гистограмме. Среднее и медиана отображаются каждое одной линией, по одному стандартному отклонению от среднего (выше и ниже) отображается двумя линиями. Вы можете щелкнуть эти элементы в таблице статистики или легенде диаграммы для включения или выключения их.

Таблица Статистика, которая отображается на вкладке Данные панели Свойства диаграммы, содержит следующую статистику для выбранного числового поля:

  • Среднее
  • Медиана
  • Стандартное отклонение
  • Количество
  • Минимум
  • Максимум
  • Сумма
  • Значения NULL
  • Асимметрия
  • Эксцесс

Если на слое источнике диаграммы имеется выбранный набор, в таблице статистики будет отображаться один столбец со статистикой по всему набору данных, а другой — только со статистикой выбранного набора.

Если слой источник диаграммы является набором тематических или категорийных данных, а не с полями Переменная Число Value, число ячеек для Суммы вычисляться не будет. Используется по умолчанию. Если вы хотите, чтобы в диаграмме присутствовали вычисления Суммы для числа ячеек, щелкните Переменная и включите опцию Настроить число ячеек.

В таблице статистики имеются элементы управления для включения и выключения на гистограмме линий среднего, медианы и стандартного отклонения, а также для изменения их цвета.

Щелкните правой кнопкой мыши в таблице статистики и выберите Копировать таблицу, Копировать строку или Копировать значение, чтобы скопировать и вставить статистику из Свойств диаграммы в другие окна или приложения.

Оси

Границы по оси Y

Границы по оси Y устанавливаются в соответствии с диапазоном данных по оси Y. Эти значения можно настроить, введя нужные граничные значения по оси. Настройки границ оси можно использовать для сохранения масштаба согласованности диаграммы для сравнения. Щелчок на кнопке сброса вернет граничные значения оси к настройкам по умолчанию.

Числовой формат

Вы можете отформатировать способ отображения числовых значений оси, указав категорию форматирования или задав пользовательский формат. Например, $#,### можно использовать как строку пользовательского формата для отображения денежных значений.

Направляющие

Направляющие или диапазоны могут быть добавлены на диаграммы для ориентировки или как способ выделить важнейшие значения. Чтобы добавить направляющую, перейдите на вкладку Направляющие на панели Свойства диаграммы и нажмите Добавить направляющую. Чтобы нарисовать линию, введите значение, где вы хотите ее добавить. Чтобы задать диапазон, укажите начальное и конечное значения. Дополнительно можно добавить к направляющей текст, указав значение Надпись.

Оформление

Заголовки и описание

Диаграммам и осям присваиваются названия по умолчанию на основе имен переменных и типа диаграммы. Эти значения можно редактировать на вкладке Общие панели Свойства диаграммы. Также для диаграммы можно ввести Описание, которое представляет из себя текстовый блок, появляющийся в нижней части окна диаграммы.

Визуальное форматирование

В активном окне диаграммы становится доступной контекстная вкладка Диаграмма, которая позволяет выполнить визуальное форматирование диаграммы. К параметрам форматирования диаграмм относятся следующие:

  • Изменение размера, цвета и стиля шрифта, используемого для заголовков осей, надписей осей, текста описания и текста легенды
  • Изменение цвета, ширины и типа линий сетки и осей
  • Изменение цвета фона диаграммы

Более подробную информацию о том, как изменить внешний вид вашего графика гистограммы, см. в разделе Изменение внешнего вида диаграммы.

Связанные разделы

Отзыв по этому разделу?

Гистограммы при обработке изображений с помощью Skimage-Python

  Перевод   Ссылка на автора

Визуализации всегда были эффективным способом представления и объяснения многих статистических деталей. При обработке изображений гистограммы используются для отображения многих аспектов изображения, с которым мы работаем. Такие как,

  • Воздействие
  • Контраст
  • Динамический диапазон
  • насыщение

и многое другое. Визуализируя гистограмму, мы можем улучшить визуальное присутствие изображения, а также мы можем выяснить, какой тип обработки изображения мог быть применен, сравнивая гистограммы изображения.

Изображения хранятся в виде значений пикселей, каждое значение пикселей представляет значение интенсивности цвета. Гистограммы — это частотное распределение этих значений интенсивности, которые встречаются на изображении.

h(i) = the number of pixels in I(image) with the intensity value i

Например, если i = 0, h (0) — это количество пикселей со значением 0.

Изображение в градациях серого

from skimage import io
import matplotlib.pyplot as pltimage = io.imread('~/Desktop/Lenna_gray.png')ax = plt.hist(image. ravel(), bins = 256)
plt.show()Output: Figure-1
Рисунок 1

В приведенном выше коде мы загрузили изображение Lenna в оттенках серого и сгенерировали его гистограмму с помощью matplotlib. Поскольку изображение хранится в виде двумерной упорядоченной матрицы, мы преобразовали его в одномерный массив с помощью метода ravel ().

Цветное изображение

В цветных изображениях у нас есть 3 цветовых канала, представляющих RGB. В комбинированной цветовой гистограмме счетчик интенсивности представляет собой сумму всех трех цветовых каналов.

h(i) = h_red(i) + h_green(i) + h_blue(i)
from skimage import io
import matplotlib.pyplot as pltimage = io.imread('~/Desktop/Lenna.png')
_ = plt.hist(image.ravel(), bins = 256, color = 'orange', )_ = plt.hist(image[:, :, 0].ravel(), bins = 256, color = 'red', alpha = 0.5)_ = plt.hist(image[:, :, 1].ravel(), bins = 256, color = 'Green', alpha = 0.5)_ = plt.hist(image[:, :, 2].ravel(), bins = 256, color = 'Blue', alpha = 0. 5)_ = plt.xlabel('Intensity Value')
_ = plt.ylabel('Count')
_ = plt.legend(['Total', 'Red_Channel', 'Green_Channel', 'Blue_Channel'])
plt.show()Output: Figure-2
Фигура 2

Обычно диапазон значений интенсивности изображений составляет от [0–255] в 8-битном представлении (2⁸). Но изображения также могут быть представлены с помощью 2¹⁶, 2³² бит и так далее. В таких случаях диапазон интенсивности высок, и трудно представить каждое значение интенсивности в гистограмме.

Мы используем binning для преодоления вышеуказанной проблемы. Здесь мы квантуем диапазон в несколько сегментов. Например,

if we quantize 0-255 into 8 bins, here our bins will be
0-31, 32-63, 64-95, 96-127, 128-159, 160-191, 192-223, 224-255

Теперь нам нужно найти способ поместить каждое значение интенсивности в соответствующие ячейки. Мы можем просто решить это,

k = 256 #number of possible integer values in 8 bit representation
b = 8 #number of binsj = floor( (h(i)*b)/k )#j is the bin number of the intensity value at position i

давайте снова построим гистограмму изображения Ленны в оттенках серого, но на этот раз с 8 ячейками,

from skimage import io
import matplotlib.
pyplot as pltimage = io.imread('~/Desktop/Lenna_gray.png')_ = plt.hist(image.ravel(), bins = 8 )
_ = plt.xlabel('Intensity Value')
_ = plt.ylabel('Count')
plt.show()Output: Figure-3
Рис-3

Накопительная гистограмма — это специальная гистограмма, которая может быть получена из нормальной гистограммы. Мы находим отсчеты каждого значения интенсивности от 0 до 255, а затем добавляем каждый последующий отсчет,

if i = 0 then H(i) = h(0)
else H(i) = H(i-1) + h(0)

Накопительные гистограммы полезны во многих приложениях обработки изображений, таких как выравнивание гистограмм и так далее.

from skimage import io
import matplotlib.pyplot as pltimage = io.imread('~/Desktop/Lenna_gray.png')_ = plt.hist(image.ravel(), bins = 256, cumulative = True)
_ = plt.xlabel('Intensity Value')
_ = plt.ylabel('Count')
plt.show()Output: Figure-4
Рисунок-4

Надеюсь, вы понимаете, что такое гистограмма и как создавать гистограммы с использованием скимаджа.

Давайте встретимся снова, и я расскажу вам о некоторых случаях использования гистограмм в Image Processing.

гистограмма изображения | Научные объемные изображения

Гистограмма изображения является графическим представлением количества пикселей в изображении как функции их интенсивности.

Гистограммы состоят из бинов , каждый бин представляет определенный диапазон значений интенсивности. Гистограмма вычисляется путем изучения всех пикселей изображения и присвоения каждого из них бину в зависимости от интенсивности пикселей. Окончательное значение бина — это количество назначенных ему пикселей. Количество бинов, на которые делится весь диапазон интенсивности, обычно порядка квадратного корня из числа пикселей.

Гистограммы изображений — важный инструмент для проверки изображений. Они позволяют с первого взгляда определить фон и диапазон значений серого. Также можно сразу обнаружить отсечение и шум квантования в значениях изображения.

В одномерной гистограмме, показанной здесь ниже (как и в других связанных примерах), количество пикселей в каждом бине представлено как высотой столбца, так и цветовой шкалой, окрашивающей каждый столбец. Более высокие полосы имеют цвета ближе к красному.

Расширяя эту концепцию гистограммы до нескольких измерений, мы также можем создавать представления двухканальных гистограмм или более.

Гистограмма в мастере Essential

Гистограмма изображения вычисляется и отображается в Huygens Essential в процессе деконволюции. Этап гистограммы включен только в ознакомительных целях, чтобы вы могли выявить проблемы, которые могли возникнуть во время записи изображения. Это не имеет значения для последующего процесса деконволюции.

См. «Просмотр гистограммы изображения» в дорожной карте Essential Deconvolution для получения соответствующих советов по интерпретации.

Расчет гистограммы изображения

В Huygens Professional его можно вычислить любым из следующих способов:

  1. Выберите изображение, щелкнув его миниатюру в главном окне Huygens. Выберите параметр «Гистограмма изображения» в меню «Правка» (или введите Alt+G ). Гистограмма будет рассчитана с использованием значений по умолчанию.
  2. Откройте рабочее окно выбранного изображения, щелкнув маленькую кнопку с надписью O справа от эскиза изображения. Вы найдете выбор Вычислить гистограмму в Анализе. Это дает вам возможность выбрать процентиль и режим представления.
  3. Tcl-команда, введенная непосредственно на вкладке оболочки Tcl в Главном окне.:
 история yourImageName 

для значения по умолчанию. Или вы можете ввести, например:

 yourImageName hist -vAxis lin -perc 25 -tclReturn 

В этом примере вертикальная ось находится в линейном режиме (также возможен логарифмический или сигмовидный), процентиль равен 25%. Параметр tclReturn полезен при запуске скрипта Tcl в пакетной обработке, когда для дальнейшей оценки необходимы числовые значения гистограммы.

Процентиль указывает значение, ниже которого встречается данный процент значений. Процентиль соответствует значению с указанной кумулятивной частотой. Некоторые процентили имеют особое значение: значение 50-го процентиля указывает, что половина наблюдений меньше этого значения (а половина больше), что является просто другим названием для медианы . Другими специальными процентилями являются 5-й и 95-й процентили, оба определяют 90-процентный центральный диапазон, диапазон, в котором центральные 90% всех значений ложь.

Отображение гистограммы

Результаты гистограммы отображаются в виде эскиза в главном окне Huygens Professional. Миниатюра дает вам приблизительное представление о результатах. Открытие миниатюры в расширенном средстве просмотра дает вам доступ к числовому анализу на основе пикселей.

Чтобы получить данные гистограммы в текстовой строке, используйте параметр -exportData в команде гистограммы (при вводе в оболочке Tcl в Pro или Scripting).

См. некоторые примеры гистограмм изображений и их применения в следующих статьях:

  • Вырезанные изображения
  • Уровень черного
  • Двухканальные гистограммы
  • Тео против опыта PSF

Гистограммы изображений в OpenCV. Понимание гистограмм изображения с помощью… | by Raghunath D

Понимание гистограмм изображений с использованием OpenCV

Гистограмма — очень важный инструмент в обработке изображений. Это графическое представление распределения данных. 9Гистограмма изображения 0003 дает графическое представление распределения интенсивностей пикселей в цифровом изображении.

Ось X указывает диапазон значений, которые может принимать переменная. Этот диапазон можно разделить на ряд интервалов, называемых интервалами . Ось Y показывает количество значений, попадающих в этот интервал или интервал.

  • При построении гистограммы у нас есть интенсивность пикселей по оси X и частота по оси Y. Как и для любой другой гистограммы, мы можем решить, сколько бинов использовать.

Гистограмму можно рассчитать как для полутонового изображения, так и для цветного изображения. В первом случае у нас есть один канал, следовательно, одна гистограмма. Во втором случае у нас есть 3 канала, следовательно, 3 гистограммы.

Вычисление гистограммы изображения очень полезно, так как дает интуитивное представление о некоторых свойствах изображения, таких как тональный диапазон , контрастность и яркость .

→ Чтобы определить доминирующие цвета в изображении, мы можем использовать график гистограммы канала Hue.

На гистограмме изображения ось x представляет различные значения цвета, лежащие в диапазоне от 0 до 255, а ось y представляет количество раз, когда конкретное значение интенсивности появляется на изображении.

Расчет гистограммы

OpenCV предоставляет функцию cv2. calcHist для расчета гистограммы изображения. Подпись следующая:

 cv2.calcHist(изображения, каналы, маска, бины, диапазоны) 

где:
1. изображений — это изображение, которое мы хотим вычислить по гистограмме в виде списка, поэтому, если наше изображение находится в переменной image , мы передадим [image] ,
2. каналов — это индекс каналов рассматривать обернутый как список ( [0] для изображений в градациях серого, так как есть только один канал и [0] , [1] или [2] для цветных изображений, если мы хотим рассмотреть канал зеленый, синий или красный соответственно),
3. маска — это маска, которая будет применена к изображению, если мы хотим рассмотреть только конкретную область (мы будем игнорировать это в этом посте),
4. бинов — это список, содержащий количество бинов для использования для каждый канал,
5. диапазонов — это диапазон возможных значений пикселей, который составляет [0, 256] в случае цветового пространства RGB (где 256 не включительно).

Возвращаемое значение hist представляет собой numpy.ndarray с формой (n_bins, 1) , где hist[i][0] — количество пикселей, имеющих значение интенсивности в диапазоне от до -го бина.

Мы можем упростить этот интерфейс, обернув его функцией, которая не только вычисляет гистограмму, но и рисует ее (на данный момент мы собираемся исправить количество бинов до 256 ):

 import cv2 
from matplotlib импортирует pyplot как plt

def draw_image_histogram (изображение, каналы, цвет = 'k'):
hist = cv2.calcHist ([изображение], каналы, нет, [256], [0, 256])
plt.plot(hist, color=color)
plt.xlim([0, 256])

Теперь посмотрим на гистограммы этих трех образцов изображений:

Построение гистограммы для полутонового изображения.

 import cv2 
import matplotlib.pyplot as pltimage = cv2.imread('dark-tones.jpg')gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)histogram = cv2.calcHist([gray_image], [0], None, [256], [0, 256])
plt.plot(histogram, color='k')
plt.show()

Если мы построим гистограмму для всех изображений, показанных выше, мы получим такие гистограммы :

Давайте теперь проанализируем эти графики и посмотрим, какую информацию мы можем извлечь из них.

  1. Из первого мы можем сделать вывод, что все пиксели соответствующего изображения имеют низкую интенсивность, поскольку почти все они находятся примерно в диапазоне [0, 60] .
  2. Из второго мы видим, что распределение интенсивности пикселей по-прежнему более скошено по более темной стороне, так как медианное значение составляет около 80 , но дисперсия намного больше.
  3. Затем из последнего мы можем сделать вывод, что соответствующее изображение в целом намного светлее, но также имеет несколько темных областей.

Вот изображения в градациях серого с соответствующими гистограммами:

Цветовая гистограмма

Теперь перейдем к гистограммам цветных образцов изображений.

 import cv2 
import matplotlib.pyplot as pltimage = cv2.imread('dark-tones.jpg') for i, col in enumerate(['b', 'g', 'r']):
hist = cv2 .calcHist([изображение], [i], нет, [256], [0, 256])
plt.plot(hist, color = col)
plt.xlim([0, 256])

plt.show()

Если мы выполним эту функцию для образцов изображений, мы получим следующие гистограммы:

Графики находятся в том же порядке, что и образцы изображений.

  1. Как и следовало ожидать из первого графика, мы видим, что все каналы имеют низкую интенсивность, соответствующую очень темному красному, зеленому и синему. Мы также должны учитывать, что черный цвет, который задается (0, 0, 0) в RGB, присутствует в соответствующем изображении в изобилии, и это может объяснить, почему все каналы имеют пики в нижней части оси X. . В любом случае, это не может быть оценено с точки зрения типа визуализации, учитывая, что мы рисуем три канала независимо друг от друга. Позже мы увидим, как мы можем наблюдать распределение комбинации значений каналов, используя многомерные гистограммы .
  2. На втором графике видно, что есть темно-красный пик, который может соответствовать скалам и горам, в то время как зеленый и синий каналы имеют более широкий диапазон значений.
  3. Из последнего графика, если исключить пики всех каналов в интервале [0, 30] , мы можем наблюдать обратное тому, что мы видели на первом графике. Все три канала имеют высокие интенсивности и если учесть, что (255, 255, 255) в RGB соответствует белому цвету, тогда по изображению понятно, почему на гистограмме такое распределение.

Ниже приведены примеры изображений с соответствующими гистограммами:

Процесс выравнивания гистограммы представляет собой метод обработки изображения для настройки контраста изображения путем изменения гистограммы изображения.

Интуиция, стоящая за этим процессом, заключается в том, что гистограммы с большими пиками соответствуют изображениям с низкой контрастностью, где фон и передний план либо темные, либо оба светлые. Следовательно, выравнивание гистограммы растягивает пик по всему диапазону значений, что приводит к улучшению общей контрастности изображения.

Обычно применяется к изображениям в оттенках серого и имеет тенденцию создавать нереалистичные эффекты, но широко используется там, где требуется высокая контрастность, например, в медицинских или спутниковых изображениях.

OpenCV предоставляет функцию cv2.equalizeHist для выравнивания гистограммы изображения. Сигнатура следующая:

 cv2.equalizeHist(image) 

Выравнивание гистограммы для изображений в градациях серого:

Давайте теперь посмотрим, как мы можем легко выровнять изображение в градациях серого и показать его. Вот код:

 def show_grayscale_equalized(image): 
grayscale_image = cv2. cvtColor(image, cv2.COLOR_BGR2GRAY)
eq_grayscale_image = cv2.equalizeHist(grayscale_image)
plt.imshow(eq_grayscalepl_image()) 9t.3show, cmap=0grayscale

Выравнивание гистограммы для цветных изображений:

Самый наивный подход состоит в том, чтобы применить один и тот же процесс ко всем трем каналам RGB по отдельности и соединить их вместе. Проблема в том, что этот процесс изменяет относительное распределение цвета и, следовательно, может привести к резким изменениям цветового баланса изображения.

 def show_rgb_equalized(изображение): 
каналов = cv2.split(изображение)
eq_channels = []
для ch, color in zip(channels, ['B', 'G', 'R']):
eq_channels. append(cv2.equalizeHist(ch))

eq_image = cv2.merge(eq_channels)
eq_image = cv2.cvtColor(eq_image, cv2.COLOR_BGR2RGB)
plt.imshow(eq_image)
plt.show()

5

5 Пример:
 import cv2 
import matplotlib.pyplot as pltimage = cv2. imread('dark-tones.jpg')###############
# Выравнивание гистограммыchannels = cv2.split(image)eq_channels = []
для ch, цвет в zip(каналы, ['B', 'G', 'R']):
eq_channels.append(cv2.equalizeHist(ch))eq_image = cv2.merge(eq_channels)cv2.namedWindow(" Исходное", cv2.WINDOW_AUTOSIZE)
cv2.namedWindow("Выровненное изображение", cv2.WINDOW_AUTOSIZE)cv2.imshow("Исходное", изображение)
cv2.imshow("Выровненное изображение", eq_image)cv2.waitKey()
cv2 .destroyAllWindows()############
# График гистограммы для выровненного изображения# show Histogram
channels = ('b', 'g', 'r')# теперь мы разделяем цвета и график каждый в гистограмме
для i, цвет в enumerate(channels):
histogram = cv2.calcHist([eq_image], [i], None, [256], [0, 256])
plt.plot(histogram, color=color)
plt.xlim([0, 256])plt.show()

В качестве альтернативы можно сначала преобразовать изображение в цветовое пространство HSV , а затем применить выравнивание гистограммы только к каналу яркости или значения, оставив оттенок и насыщенность изображения не изменилась.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *