MATLAB中的灰度直方图
来源:互联网 发布:数控铣床编程方法 编辑:程序博客网 时间:2024/06/05 06:09
灰度直方图
直白的说就是图像灰度值的统计函数图像,统计图像中各个灰度值(黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0)出现的次数或概率。
MATLAB中imhist可以进行图像的灰度直方图运算:
imhist ( I )
imhist ( I , n )
[ counts , x ] = imhist ( … )
参数说明
- I 为要计算灰度直方图的图像数据
- n 为指定灰度级数目。将所有的灰度级均匀的分布在n 个小区间内,如n为64,则可以将0~255总共256个灰度级划分为32个长度为8的灰度空间。调用imhist(I,32)后,此时纵轴分别统计每个长度为8的灰度空间的像素在图像中出现的次数或概率。一般n设为2的整数次幂,这样可以无需圆整
返回值
- counts为直方图数据向量。counts(i)表示第i个灰度区间的像素数目。
- x是保存了对应的灰度小区间的向量。
若调用时不接收这个函数的返回值,则直接显示直方图;在得到这些返回数据之后,可以使用stem(x,counts)来手工绘制直方图。
1. 一般直方图
实验所用到的图1名称qilin.bmp(这里采用的图片其模式都是灰度模式)
对于彩色图片而言可以用下列程序
I=imread('图片名称'); % 读取图片R=I(:,:,1); % 获取图片红通道信息G=I(:,:,2); % 获取图片绿通道信息B=I(:,:,3); % 获取图片蓝通道信息
得到RGB三原色的各自的灰度分布,然后再用inhist(…)显示出其灰度直方图。
% 一般直方图clear,clc;close all;I = imread('qilin.bmp'); % 读取图片figure; % 创建窗口imshow(I);title('Source'); % 显示并命名标题figure;subplot(1,2,1); % 把绘图窗口分成1行2列2块区域,聚焦到第一块区域imhist(I);title('Histogram未分段');subplot(1,2,2); % 把绘图窗口分成1行2列2块区域,聚焦到第二块区域imhist(I,64);title('Histogram分为64段小区间');
实验结果
由图2可见指定了n后,灰度就变得比较离散。
2. 归一化直方图
在imhist函数返回值中,counts得到每个小区间的像素个数,再计算counts与图像中像素总数的比值就可以得到归一化的直方图。
%归一化直方图clear,clc;close all;I = imread('qilin.bmp'); % 读取图片figure; % 创建窗口[M,N] = size(I); % 计算图像大小[counts,x] = imhist(I,32); % 计算有32个小区间的灰度直方图counts = counts/(M*N); % 计算归一化灰度直方图各区间的值stem(x,counts); % 绘制归一化直方图
运行结果如图
总的来说,分析图像的灰度直方图可以得到很多有效的信息,如可以很直观的了解图像的亮度和对比度等信息。
直方图的峰值分布可以反映图像的亮暗:如果图像较亮,则峰值出现在直方图的靠右部分;如果图像较暗,则峰值出现在直方图的靠左部分。如果直方图只在中间一小段有非零值,则图像的对比度较低;如果直方图的非零值分布广泛且比较均匀,则图像的对比度较高。
本文中的代码MATLAB灰度直方图
- MATLAB中的灰度直方图
- 归一化灰度直方图 Matlab
- Matlab图像的灰度直方图
- matlab求灰度图像的灰度直方图
- MATLAB中绘制灰度图像的直方图
- matlab实现灰度直方图均匀化
- matlab绘制图像的灰度直方图
- matlab原图像转成灰度图画直方图
- Matlab点运算之灰度直方图
- 用matlab做出灰度图像的灰度直方图
- [图像]图像灰度均衡化和灰度直方图(Matlab实现)
- 灰度直方图
- 灰度直方图
- 灰度直方图
- 灰度直方图
- 灰度直方图
- 灰度直方图
- 灰度直方图
- springMVC里面的注解@InitBinder
- C#获取设备信息
- java邮件接口调用
- 一位10年Java工作经验的架构师聊Java和工作经验
- React Native 入门(五)
- MATLAB中的灰度直方图
- http你不得不知道的那些事(四)-http报文
- ICD和ICE的区别
- 10.22C语言笔试题
- vue.js 项目 环境搭建、打包发布
- Codeforces#435
- 自然语言处理1---文本预处理(删除非文本,非数字字符)
- Eclipse开发第一个JNI小实例
- Mac上使用C++ 11标准编译程序