matlab数字图像灰度分布直方图函数

matlab数字图像灰度分布直方图函数

简介

本文主要介绍数字图像灰度直方分布图的绘制方法,包括使用matlab的imhist函数和自己编写对应的功能程序

背景知识

数字图像在计算机中的保存形式为矩阵,矩阵中每个元素值保存着图像对应像素的信息。彩色图片为三维矩阵,每一维各自包含彩色图片的RGB信息。灰色图片为二维矩阵,每个元素的取值为[0,255]之间的整数。数字图像的灰度分布直方图即统计矩阵中值为0,1,2…255的元素的个数,观察其比重。

imhist函数

matlab中的imhist函数的使用方法主要有以下三种形式

imhist(I) 
imhist(I,n) 
[counts,x] = imhist (…)

1.第一种方式比较常见,其中参数I表示灰度图,即二维矩阵。利用lena图显示其输出效果:

image=imread('图像保存的路径');
image_gray=rgb2gray(image);%0.2989R+ 0.5870G + 0.1140B
image_gray=rgb2gray(image);%转换为灰度图
imhist(image_gray);

输出结果如下
在这里插入图片描述
2.方法2中参数I也是表示灰度图数据,n便是将灰度划分成n个区间,统计每个区间中元素的个数绘制灰度分布直方图。n默认为256。

image = imread('图像保存的路径');
image_gray=rgb2gray(image);%0.2989R+ 0.5870G + 0.1140B
image_gray=rgb2gray(image);%转换为灰度图
imhist(image_gray,50);

输出结果
在这里插入图片描述
3.方法3中imhist函数不再输出图像,直接返回参数。其中参数count保存各个灰度区间元素个数,x保存各个区间的灰度值边界。

image = imread('图像保存的路径');
image_gray=rgb2gray(image);%0.2989R+ 0.5870G + 0.1140B
image_gray=rgb2gray(image);%转换为灰度图
[count,x]=imhist(image_gray,5);

结果

count=
     349
     73353
     128298
     59681
     463
x=
     0
     63.7500
     127.5000
     191.2500
     255.0000

编写简单的功能函数

利用matlab编写简单的功能函数实现输出图像的灰度分布直方图功能。
代码如下:

function my_hist(n,image)
close all;
k=256/n;
histograms(n)=0;
for i=1:1:n
    a=size(find(image<=k*i))-size(find(image<=k*(i-1)));
    histograms(i)=a(1);
end
bar(0:k:n*k-1,histograms,'grouped');title('手写代码lena灰度分布直方图')

n=256时结果:
在这里插入图片描述
和imhist函数对比:
在这里插入图片描述
两者一致
n=100:
在这里插入图片描述
n=50:
在这里插入图片描述若有不足,感谢指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值