«Это 11-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
предисловие
Привет! Приятель!
Большое спасибо за прочтение статьи Haihong.Если в статье есть какие-либо ошибки, вы можете указать на них~
Самостоятельное введениеଘ(੭ˊᵕˋ)੭
Прозвище: Хайхун
Ярлыки: Программисты|С++ игроки|Студенты
Введение: Я познакомился с программированием благодаря языку C, а затем перевелся на компьютерную специальность, мне посчастливилось получить несколько национальных и провинциальных наград. Сейчас изучаю C++/Linux/Python
Опыт обучения: прочная основа + больше заметок + больше кодирования + больше размышлений + хорошее изучение английского языка!
Нормализация гистограммы изображения
Концепция гистограммы изображения:
Гистограмма изображения — это статистическая таблица, отражающая распределение пикселей изображения, по оси абсцисс — тип пикселей изображения, которые могут быть полутоновыми или цветными. Вертикальная ось представляет общее количество пикселей в изображении для каждого значения цвета или процентное соотношение всех пикселей. Изображение состоит из пикселей, потому гистограмма, отражающая распределение пикселей, часто может использоваться как очень важная характеристика изображения.
Гистограмма оттенков серого изображения: цифровое изображение имеет уровни оттенков серого [0~255], а гистограмма определяется следующим образом:
Среди них k-й уровень серого (например: 255), это номер уровня серого. Нормализованная гистограмма определяется следующим образом:
То есть: количество вхождений k-го уровня серого больше, чем сумма всех уровней серого, то естьвероятность.
получить гистограмму изображения:
t=imread('a1.jpg')
subplot(1,2,1),imshow(t),title('原图')
subplot(1,2,2),imhist(t),title('图像直方图')
Изображение эффекта:
Imhist: Эта функция используется для получения гистограммы данных изображения. В технологии улучшения изображения большое значение имеет гистограмма уровня серого изображения, которая является основой некоторых методов обработки изображений, таких как технология модификации гистограммы и выравнивание гистограммы. Введите doc imhist или help imhist в командном окне Matlab, чтобы получить справочную информацию для этой функции.
Формат вызова:
имист (я, н) imhist(X,карта) [количество, x] = imhist(I) Описание: imhist(I,n), где I — исходное изображение в градациях серого, n — заданное количество уровней градаций серого, значение по умолчанию — 256; imhist(X,map) вычисляет и отображает гистограмму индексированного цветного изображения X, карта - это палитра. Гистограмму также можно отобразить с помощью стержня (x, отсчеты). counts и x — возвращаемый вектор данных гистограммы и соответствующий вектор цвета соответственно.
Здесь мы сосредоточимся на использовании imhist(I,n): Проверочный код:
t=imread('a1.jpg')
subplot(2,3,1),imshow(t),title('原图')
subplot(2,3,2),imhist(t),title('灰度级数默认:256')
subplot(2,3,3),imhist(t,128),title('灰度级数:128')
subplot(2,3,4),imhist(t,64),title('灰度级数:64')
subplot(2,3,5),imhist(t,32),title('灰度级数:32')
subplot(2,3,6),imhist(t,16),title('灰度级数:16')
график результатовПодводя итог imhist(I,n):
Определение n - это количество уровней серого.Здесь мы можем понять, что 0 ~ 255 делится на несколько частей.Например, значение по умолчанию равно 256, что означает, что оно разделено на 256 частей, а одна часть равна 1, поэтому значение серого подсчитывается каждые 1; и n Если это 128, 0-255 делится на 128 частей, одна часть равна 2, а значение серого подсчитывается каждые 2, поэтому на сравнительном изображении n равно 128 выглядит более редкий, чем n равно 256.
Предложение [counts,x] = imhist(I) означает получение абсциссы и ординаты гистограммы, то есть уровня каждого пикселя, и количества вхождений пикселей на каждом уровне пикселя, Это имеет подверженную ошибкам точку ., то есть counts фактически является значением ординаты гистограммы, а x является абсциссой гистограммы.
Итак, какой смысл получать эти два значения? Вот два значения, которые можно использовать для рисования статистического изображения с помощью функции стебля.
Над кодом:
F=imread('a1.jpg');
I=rgb2gray(F);
subplot(1,3,1),imshow(I),title('原图')
subplot(1,3,2),imhist(I),title('原图的图像直方图')
[count,x]=imhist(I)
% 获取直方图的横坐标和纵坐标,即各个像素级,以及每个像素级上的像素出现的次数 counts:纵坐标 x:横坐标
subplot(1,3,3),stem(x,count),title('根据图像直方图绘制的统计图')
% 通过刚才得到的值,绘制条形图。
Изображение эффекта:Здесь видно, что изображение, нарисованное по стеблю, и изображение, нарисованное по imhist, на самом деле одно и то же, но подсчитывается количество изображений, нарисованных по стеблю.
Если нам нужно нормализовать гистограмму изображения здесь, по сути, это изменить ординату на вероятность текущего количества раз на общее количество раз, Это тоже очень просто, просто разделите отсчеты стебля на общее количество пикселей. Код:
F=imread('a1.jpg');
I=rgb2gray(F);
[m,n]=size(I)
subplot(1,4,1),imshow(I),title('原图')
subplot(1,4,2),imhist(I),title('原图的图像直方图')
[count,x]=imhist(I)
subplot(1,4,3),stem(x,count),title('根据图像直方图绘制的统计图')
count=count/m/n
% 获取直方图的横坐标和纵坐标,即各个像素级,以及每个像素级上的像素出现的次数 counts:纵坐标 x:横坐标
subplot(1,4,4),stem(x,count),title('图像直方图归一化')
Изображение эффекта: