Show histogram что это
Русские Блоги
Действительно понять гистограмму изображения
оглавление
1. Что такое гистограмма изображения? Какая польза от гистограммы изображения?
Гистограмма изображенияИспользуется, чтобыГистограмма, показывающая распределение яркости на изображении, Учитывая, что в изображении есть несколько пикселей с определенной яркостью или определенным диапазоном яркости,То есть подсчитать количество пикселей определенной яркости на картинке。
Гистограмма изображения из-за егоМеньше вычислительных затратИ имеютПеревод изображения, вращение, масштабированиеИ многие другие преимущества, широко используемые вОбработка изображенийРазличные области, особенноСегментация порога серого изображения、Цветное изображение поискаа такжеКлассификация изображений.
Во-вторых, рассчитать гистограмму изображения
1. OpenCV версия
функция:cv2.calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None)
Роль: рассчитать каждыйПиксельный блокЧисло на картинке. (Причина в пиксельном блоке, потому что следующее может быть передано в Bin для изменения количества пиксельных значений в блоке)
Если мы хотим вывести все три канала BGR на одну и ту же картинку:
Вывод различных значений исторических значений:
2. Версия PLT
3. Numpy версия
(Эта эффективность относительно низкая, обычно не используется)
4. Изображение HSV, гистограмма H-S
Насыщенный оттенок
3. Выравнивание гистограммы
1. Глобальное равновесие
Этот метод обычно используетсяУвеличьте глобальный контраст многих изображенийОсобенно когда контраст полезных данных изображения довольно близок. Таким образом, яркость может быть лучше распределена по гистограмме. Это может быть использовано для усиления локального контраста, не влияя на общий контраст.Уравнение гистограммы выполняет эту функцию путем эффективного расширения обычно используемой яркости.
В гистограмму изображения внесены следующие изменения:(Гистограмма растягивается)
функция:cv2.equalizeHist(gray)
Гистограмма изображения изменяется до и после отображения:
2. Индивидуальная степень равновесия (клах)
Во многих случаях глобальное выравнивание не дает ожидаемых результатов: просто подумайте о представленной выше картине, которая явно темна, и объекты становятся трудно распознать.
функция:cv2.createCLAHE(, clipLimit=None, tileGridSize=None)
4. Сравнение гистограмм
функция:cv2.compareHist(H1, H2, method)
5. Гистограмма отражения проекции
Обзор обратной проекции
Он выведет изображение того же размера, что и входное изображение, из которыхКаждое значение пикселя представляет вероятность того, что соответствующая точка на входном изображении принадлежит цели, Проще говоря, чем выше значение пикселя выходного изображения, тем больше вероятность того, что оно будет представлять искомую цель.
Если изображение показывает видСтруктурная текстура или уникальный объектТогда гистограмму этой области можно рассматривать как функцию вероятности, вид которойПиксельПринадлежитТекстура или объектВероятность а такжеОбратная проекцияПросто записьДанное изображениеМетод того, как пиксели в модели гистограммы адаптируются к распределению пикселей.
Проще говоря, так называемая обратная проекция заключается в том, чтобы сначала рассчитать модель гистограммы объекта, а затем использовать эту модель для поиска объекта на изображении. Например, есть цветная гистограмма, которую можно найти на изображении с помощью обратной проекции.
Роль обратной проекции
Обратное проецирование используется для нахождения точки или области во входном изображении (обычно большого размера), которое наилучшим образом соответствует конкретному изображению (обычно маленькому или только 1 пикселю, называемому шаблонным изображением), то естьПоложение шаблона изображенияПоявляется в положении входного изображения.
Особые случаи
функция:cv2.calcBackProject(images, channels, hist, ranges, scale, dst=None)
Как работает гистограмма Prometheus?
Ниже приведен пример формата экспозиции Prometheus с меткой handler :
_sum и _count работают точно так же, как и для сводки, и могут быть использованы для получения средней продолжительности выполнения в течение последних пяти минут:
Однако существуют очень редкие случаи где _sum отсутствует, например, в некоторых метриках из экспортера MySQLd.
Чтобы вычислить, скажем, квантиль 0,9 (90-й процентиль), вам следует использовать:
Одно большое преимущество гистограмм перед сводками заключается в том, что вы можете агрегировать bucket-ы перед вычислением квантиля — следя за тем, чтобы не потерять метку le :
В дополнении к агрегируемости, гистограммы дешевле на клиенте, так как счетчики быстро инкрементируются. Так почему бы не использовать гистограммы всегда? Есть длинный ответ, но короткая версия состоит в том, что с гистограммами вы должны предварительно выбирать свои bucket-ы, и затраты перемещаются с клиента на сам Prometheus из-за количества элементов bucket. Десять bucket-ов по умолчанию охватывают типичный веб-сервис с задержкой в диапазоне от миллисекунды до секунды, и в некоторых случаях вам может понадобиться это изменить. Здесь, например, они были переопределены, чтобы лучше отслеживать запросы на PromQL, которые по умолчанию имеют двухминутный тайм-аут. Наличие более десятка bucket-ов даст более точные результаты, но может также наплодить множество временных рядов. Особенно в сочетании с другими метками.
В заключение, гистограммы допускают агрегируемое вычисление квантилей, хотя нужно брать во внимание количество элементов. Помните, что сводка без квантилей — более дешевый вариант, если вам не нужна гистограмма.
Способы создания гистограмм с помощью Python
За последний год я сталкивалась с необходимостью рисования гистограмм и столбчатых диаграмм достаточно часто для того, чтобы появилось желание и возможность об этом написать. Кроме того, мне самой довольно сильно не хватало подобной информации. В этой статье приведен обзор 3 методов создания таких графиков на языке Python.
Начнем с того, чего я сама по своей неопытности не знала очень долго: столбчатые диаграммы и гистограммы — разные вещи. Основное отличие состоит в том, что гистограмма показывает частотное распределение — мы задаем набор значений оси Ox, а по Oy всегда откладывается частота. В столбчатой диаграмме (которую в англоязычной литературе уместно было бы назвать barplot) мы задаем и значения оси абсцисс, и значения оси ординат.
Для демонстрации я буду использовать избитый набор данных библиотеки scikit learn Iris. Начнем c импортов:
Преобразуем набор данных iris в dataframe — так нам удобнее будет с ним работать в будущем.
Из интересующих нас параметров data содержит информацию о длине чашелистиков и лепестков и ширине чашелистиков и лепестков.
Используем Matplotlib
Построение гистограммы
Cтроим обычную гистограмму, показывающую частотное распределение длин лепестков и чашелистиков:
Построение столбчатой диаграммы
Используем методы matplotlib-а, чтобы сравнить ширину листьев и чашелистиков. Это кажется удобнее всего делать на одном графике:
Для примера и в целях упрощения картинки возьмем первые 50 строк dataframe.
Используем методы seaborn
На мой взгляд, многие задачи по построению гистограмм проще и эффективнее выполнять с помощью методов seaborn (кроме того, seaborn выигрывает еще и своими графическими возможностями, на мой взгляд).
Я приведу пример задач, решающихся в seaborn с помощью одной строчки кода. Особенно seaborn выигрышный, когда надо построить распределение. Скажем, нам надо построить распределение длин чашелистиков. Решение этой задачи таково:
Если же вам необходим только график распределения, сделать его можно так:
Подробнее о построении распределений в seaborn можно почитать тут.
Здесь все просто. На самом деле, это оболочка matplotlib.pyplot.hist(), но вызов функции через pd.hist() иногда удобнее менее поворотливых конструкций matplotlib-a. В документации библиотеки pandas можно прочитать больше.
Спасибо, что прочитали до конца! Буду рада отзывам и комментариям!
Histogram
What is a Histogram?
A histogram is used to summarize discrete or continuous data. In other words, it provides a visual interpretation Data Presentation Analysts need to effectively communicate the output of financial analysis to management, investors, and business partners. of numerical data by showing the number of data points that fall within a specified range of values (called “bins”). It is similar to a vertical bar graph. However, a histogram, unlike a vertical bar graph, shows no gaps between the bars.
Parts of a Histogram
Importance of a Histogram
Creating a histogram provides a visual representation of data distribution. Histograms can display a large amount of data and the frequency FREQUENCY Function The Frequency Function is categorized under Excel Statistical functions. The function will calculate and return a frequency distribution. We can use it to get the frequency of values in a dataset. of the data values. The median MEDIAN Function The MEDIAN Function is categorized under Excel Statistical functions. The function will calculate the middle value of a given set of numbers. Median can be defined as the middle number of a group of numbers. That is, half the numbers return values that are greater than the median and distribution of the data can be determined by a histogram. In addition, it can show any outliers or gaps in the data.
Distributions of a Histogram
A normal distribution: In a normal distribution, points on one side of the average AVERAGE Function Calculate Average in Excel. The AVERAGE function is categorized under Statistical functions. It will return the average of the arguments. It is used to calculate the arithmetic mean of a given set of arguments. As a financial analyst, the function is useful in finding out the average of numbers. are as likely to occur as on the other side of the average.
A bimodal distribution: In a bimodal distribution, there are two peaks. In a bimodal distribution, the data should be separated and analyzed as separate normal distributions.
A right-skewed distribution: A right-skewed distribution is also called a positively skewed distribution. In a right-skewed distribution, a large number of data values occur on the left side with a fewer number of data values on the right side. A right-skewed distribution usually occurs when the data has a range boundary on the left-hand side of the histogram. For example, a boundary of 0.
A left-skewed distribution: A left-skewed distribution is also called a negatively skewed distribution. In a left-skewed distribution, a large number of data values occur on the right side with a fewer number of data values on the left side. A right-skewed distribution usually occurs when the data has a range boundary on the right-hand side of the histogram. For example, a boundary such as 100.
A random distribution: A random distribution lacks an apparent pattern and has several peaks. In a random distribution histogram, it can be the case that different data properties were combined. Therefore, the data should be separated and analyzed separately.
Example of a Histogram
Jeff is the branch manager at a local bank. Recently, Jeff’s been receiving customer feedback saying that the wait times for a client to be served by a customer service representative are too long. Jeff decides to observe and write down the time spent by each customer on waiting. Here are his findings from observing and writing down the wait times spent by 20 customers:
The corresponding histogram with 5-second bins (5-second intervals) would look as follows:
Jeff can conclude that the majority of customers wait between 35.1 and 50 seconds.
How to Create a Histogram
Let us create our own histogram. Download the corresponding Excel template file for this example.
Step 1: Open the Data Analysis box. This can be found under the Data tab as Data Analysis:
Step 2: Select Histogram:
Step 3: Enter the relevant input range and bin range. In this example, the ranges should be:
Make sure that “Chart Output” is checked and click “OK”.
Related Readings
CFI is the official provider of the global Financial Modeling & Valuation Analyst (FMVA)™ Become a Certified Financial Modeling & Valuation Analyst (FMVA)® CFI’s Financial Modeling and Valuation Analyst (FMVA)® certification will help you gain the confidence you need in your finance career. Enroll today! certification program, designed to help anyone become a world-class financial analyst. To keep advancing your career, the additional CFI resources below will be useful:
Free Excel Tutorial
To master the art of Excel, check out CFI’s FREE Excel Crash Course, which teaches you how to become an Excel power user. Learn the most important formulas, functions, and shortcuts to become confident in your financial analysis.
to take your career to the next level and move up the ladder!
Русские Блоги
(3) Гистограмма обработки изображений в OpenCV
Примечание. Эта статья переведена из OpenCV3.0.0 document-> OpenCV-Python Tutorials, включая исправление неправильного кода в исходном документе.
1. Гистограмма-1: найти, нарисовать, проанализировать
Так что же такое гистограмма? Вы можете представить гистограмму как график или рисунок, чтобы дать вам общее представление о распределении интенсивности изображения. Это график значений пикселей по оси X (в диапазоне от 0 до 255, не всегда) и соответствующего количества пикселей в изображении по оси Y.
Это всего лишь один из способов понять изображение. Просматривая гистограмму изображения, вы можете интуитивно понять контраст изображения, распределение яркости и т. Д. Почти все инструменты обработки изображений теперь предоставляют функции на гистограмме. Ниже приведены фотографии с веб-сайта Cambridge in Color. Я предлагаю вам посетить этот веб-сайт для получения более подробной информации.
Вы можете увидеть изображение и его гистограмму. (Помните, что эта гистограмма отображается как изображение в оттенках серого, а не как цветное). Левая область гистограммы показывает количество более темных пикселей в изображении, а правая область показывает количество более светлых пикселей. Из гистограммы видно, что черных областей не только больше, чем ярких, но и очень небольшое количество средних тонов (значения пикселей в среднем диапазоне, например, около 127).
3. Найдите гистограмму.
Теперь, когда у нас есть простое понимание того, что такое гистограмма, мы можем изучить, как ее найти. И OpenCV, и Numpy имеют встроенные функции. Перед использованием этих функций нам необходимо понять некоторые термины, связанные с гистограммами.
DIMS: это количество параметров, которые мы собираем. В этом случае мы собираем только количество значений интенсивности, поэтому здесь 1.
ДИАПАЗОН: это диапазон значений интенсивности, которые вы хотите измерить. Обычно это [0,256], т.е. все значения интенсивности.
1) Расчет гистограммы в OpenCV
Мы используем функцию cv2.calcHist (), чтобы найти гистограмму. Давайте познакомимся с этой функцией и ее параметрами:
Итак, начнем с примера изображения. Просто загрузите изображение в режиме оттенков серого и найдите полную гистограмму.
2) Расчет гистограммы в Numpy
Numpy также предоставляет функцию np.histogram (). Вместо функции calcHist () вы можете попробовать следующее:
hist такое же, как мы рассчитали ранее. Но в ячейках будет 257 элементов, потому что Numpy вычисляет ячейки как 0-0,99, 1-1,99, 2-2,99 и т. Д. Чтобы показать это, они добавляют в конец ячеек 256. Но нам не обязательно достигать 256, достаточно 255.
Кроме того, обратите внимание на другую функцию Numpy, np.bincount (), которая намного быстрее, чем np.histogram () (примерно в 10 раз), поэтому для ряда гистограмм вы можете попробовать ее лучше, не забудьте использовать np. Установите minlength = 256 в bincount (). Например, hist = np.bincount (img.ravel (), minlength = 256).
Примечание. Функция OpenCV быстрее, чем np.histogram () (примерно в 40 раз). Так что придерживайтесь функций OpenCV.
4. Нарисуйте гистограмму.
Ø Shortway: используйте функции рисования matplotlib
Ø Долгий путь: используйте функцию рисования OpenCV
1) Используйте Matplotlib
Matplotlib поставляется с функцией рисования гистограммы: matplot.pyplot.hist ()
Он непосредственно находит гистограмму и рисует ее. Для поиска гистограммы не нужно использовать функцию calcHist () или np.histogram (). Пожалуйста, посмотрите код ниже:
Вероятно, получится следующий результат:
Или вы можете использовать обычный метод рисования matplotlib, который полезен для рисования BGR.Для этого вам сначала нужно найти данные гистограммы.
2) Используйте OpenCV
С помощью OpenCV вы можете настроить значение гистограммы и ее двоичного файла на координаты x, y, чтобы вы могли использовать функцию cv2.line () или cv2.polyline (), чтобы нарисовать ее для создания того же изображения, что и выше. Это уже доступно в официальной демонстрации OpenCV-Python2.
5. Применение маски.
Мы используем cv2.calcHist (), чтобы найти гистограмму всего изображения. Что делать, если вы хотите найти гистограмму определенных областей изображения? Просто создайте белое изображение с маской в том месте, где вы хотите найти гистограмму, иначе оно будет черным. Затем используйте его как маску.
2. Гистограмма-2: выравнивание гистограммы.
Изучите концепцию выравнивания гистограммы и используйте ее для улучшения контрастности изображения
Рассмотрим изображение, значения пикселей которого ограничены определенным диапазоном. Например, более яркое изображение ограничивает все пиксели более высокими значениями. Но в хорошем изображении будут пиксели из всех областей изображения. Следовательно, вам необходимо растянуть эту гистограмму до конечного положения (как показано на рисунке ниже), что и делает выравнивание гистограммы. Обычно это меняет контраст изображения.
Я предлагаю вам прочитать страницу Википедии о выравнивании гистограмм для получения более подробной информации. Написание примеров дает очень хорошее объяснение, так что почти все можно понять после прочтения. Вместо этого здесь мы увидим его реализацию Numpy. После этого мы увидим его функцию OpenCV.
Еще одна важная особенность выравнивания гистограммы заключается в том, что даже если изображение является более темным (вместо более яркого изображения, которое мы использовали), после выравнивания мы получим почти такое же изображение, что и изображение, которое мы получили. Поэтому он используется как «справочный инструмент» для создания всех изображений с одинаковыми условиями освещения. Это полезно во многих ситуациях. Например, при распознавании лиц перед обучением данных лица изображения лиц выравниваются по гистограмме, чтобы все они имели одинаковые условия освещения.
3. Уравнивание гистограмм в OpenCV
Ниже приведен простой фрагмент кода, который показывает, как мы используем ту же картинку:
Итак, теперь вы можете делать разные изображения при разных условиях освещения, выравнивать их и проверять результаты.
Когда гистограмма изображения ограничена определенной областью, эффект выравнивания гистограммы очень хороший. В случае, когда гистограмма покрывает большую область (то есть существуют как яркие, так и темные пиксели), она не будет эффективна там, где интенсивность сильно меняется. Пожалуйста, проверьте ссылку SOF на других ресурсах.
4.CLAHE (адаптивное выравнивание гистограммы с ограничением контраста)
Мы только что видели первую коррекцию гистограммы с учетом глобального контраста изображения. Во многих случаях это не очень хорошая идея. Например, на следующем рисунке показано входное изображение и его результат после глобального выравнивания гистограммы.
После выравнивания гистограммы контраст фона улучшился. Но сравните лицо статуи на двух изображениях. Из-за высокой яркости мы потеряли большую часть информации. Это связано с тем, что его гистограмма не ограничена определенной областью, как мы видели в предыдущем примере (попробуйте нарисовать гистограмму входного изображения, вы получите больше вдохновения).
Поэтому для решения этой проблемы используется адаптивное выравнивание гистограммы. Здесь изображение разделено на небольшие блоки, называемые «плитками» (размер плитки в OpenCV по умолчанию равен 8 * 8). Затем гистограмма каждого из этих блоков выравнивается как обычно. Следовательно, на небольшой площади гистограмма будет ограничена небольшой областью (если нет шума). Если есть шум, он будет усилен. Чтобы этого избежать, применяется предел контрастности. Если какая-либо ячейка гистограммы превышает указанный предел контрастности (по умолчанию 40 в OpenCV), эти пиксели будут обрезаны и равномерно распределены по другим ячейкам перед применением выравнивания гистограммы. После выравнивания, чтобы удалить артефакты на границе тайла, применяется билинейная интерполяция.
В следующем коде показано, как применить CLAHE (адаптивное выравнивание гистограммы с ограничением контраста) в OpenCV.
3. Гистограмма-3: двумерная гистограмма.
Найдите и нарисуйте гистограмму, которая поможет в следующих главах.
В официальном образце уже есть образец Python для поиска гистограммы цвета. Мы попытаемся понять, как создать такую цветную гистограмму, и это будет полезно для понимания других тем, таких как обратная проекция гистограммы.
3. 2D-гистограмма в OpenCV
Для расчета используйте cv2.calcHist (). Для цветовой гистограммы нам нужно преобразовать изображение из BGR в HSV. (Помните, что для одномерных гистограмм мы преобразовали BGR в оттенки серого). Для двухмерной гистограммы ее параметры будут изменены следующим образом:
import cv2
import numpy as np
4. 2D-гистограмма в Numpy
Numpy также предоставляет специальную функцию: np.histogram2d (). (Помните, что для одномерных гистограмм мы используем np.histogram ()).
import cv2
import numpy as np
from matplotlib import pyplot as plt
5. Нарисуйте двухмерную гистограмму.
Метод 1: используйте cv2.imshow ()
В результате мы получаем двумерный массив размером 180 * 256. Таким образом, мы можем отображать их как обычно, как при использовании функции cv2.imshow (). Это будет изображение в оттенках серого, если вы не знаете тональные значения разных цветов, оно не даст слишком много цветов.
Метод 2: используйте matplotlib
Мы можем использовать функцию matplotlib.pyplot.imshow () для рисования двухмерных гистограмм различных цветовых карт. Это позволяет нам лучше понять различные плотности пикселей. Однако это не позволит нам взглянуть на какой-либо цвет в первый раз, если только вы не хотите знать тональные значения разных цветов. Мне до сих пор нравится этот способ, он проще и лучше.
Примечание. При использовании этой функции помните, что флаг интерполяции должен быть ближайшим, чтобы получить лучшие результаты.
import cv2
import numpy as np
from matplotlib import pyplot as plt
Метод 3: образец стиля OpenCV
В примере OpenCV-Python2 есть код для примера цветовой гистограммы. Если вы запустите код, вы увидите, что гистограмма также отображает соответствующий цвет. Или просто выведите гистограмму с цветовой кодировкой. Результаты очень хорошие (хотя нужно добавить еще строк).
В этом коде автор создал цветовую карту в HSV. Затем конвертируйте его в BGR. Полученное изображение гистограммы умножается на цветовую карту. Он также использовал некоторые шаги предварительной обработки, чтобы удалить небольшие изолированные пиксели, что привело к хорошей гистограмме.
4. Гистограмма-4: обратная проекция гистограммы.
Проекция отражения гистограммы обучения
Он был предложен Майклом Дж. Суэйном и Даной Х. Баллард в их статье, индексированной цветными гистограммами.
3. Алгоритм в Numpy
Посмотреть код и комментарии:
4. Проекция отражения в OpenCV