Matlab图像处理系列——图像点运算和灰度直方图Matlab仿真

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、图像点运算
二、灰度直方图
三、灰度直方图的Matlab仿真
1、一般直方图仿真
2、归一化直方图仿真
四、Matlab仿真源码
1、一般直方图仿真源码
2、归一化直方图仿真源码

本节内容
一、图像点运算

对于一个数字图像处理系统来说,一般可以将处理流程分为3个阶段。
第一阶段:图像预处理阶段;
第二阶段:特征抽取阶段;
第三阶段:识别分析阶段。
点运算是对图像中的每个像素依次进行同样的灰度变换运算。设r和s分别是输入图像f(x,y)和输出图像g(x,y)在任一点(x,y)的灰度值,点运算表示s=T®,其中T为采用的点运算算子,表示在原始图像和输出图像之间的某种灰度级映射关系。
点运算也被称为对比度增强、对比度拉伸或对比度变换。常常用于改变图像的灰度范围及分布,是图像数字化及图像显示常常需要的工具。
二、灰度直方图
灰度直方图描述了一幅图像的灰度级统计信息,主要应用于图像分割和图像灰度变换处理过程中。
从数学角度看,图像直方图描述的是图像的各个灰度级的统计特性,是图像灰度值的函数,统计一幅图像中各个灰度级出现的次数或概率。
归一化直方图,可以直接反映出不同灰度级出现的比率。
从图形角度看,灰度直方图是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。
灰度直方图的计算是根据其统计定义进行的,图像的灰度直方图是一个离散函数,表示图像每一灰度级与该灰度级出现频率的对应关系。
一幅图像的像素总数为N,灰度级总数为L,其中灰度级为g的像素总数为Ng,则这幅数字图像的灰度直方图横坐标为灰度g(0≤g≤L-1),纵坐标则为灰度值出现的次数Ng。总作弊为各个灰度级出现的概率Pg=Ng/N。
三、灰度直方图的Matlab仿真
Matlab中支持的默认图像数据类型为uint8,使用imread函数读取图像文件,通常为uint8类型。

I=imread(FILENAME,FMT);
FILENAME指定图像文件的完整路径和文件名。
若要读入的文件在当前工作目录中,
或者自动搜索列表中给出的路径下,则只需要提供文件名即可;
FMT表示图像文件的格式所对应的标准扩展名;
I表示一个包含图像数据的矩阵。

Matlab提供了imhist函数进行图像的灰度直方图运算。
imhist(I);
imhist(I,n);
[counts,x]=imhist(……);
I表示计算灰度直方图的图像;
n为指定的灰度级数目,若给定参数n,将所有的灰度级均匀分布在n个小区间内,而不是所有的灰度级全部分开。
counts为直方图数据向量,counts(i)表示第i个灰度区间中的像素数目;
x表示保持对应的灰度小区间的向量。
Matlab也支持使用stem(x,counts)绘制直方图。
1、一般直方图仿真
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直方图1纵轴显示了图像中所有像素取到某一特定灰度值的次数,横轴对应从0到255的所有灰度值;
直方图2将横轴0-255总共256个灰度级均分为64个长度为4的灰度区间,纵轴分别统计每个灰度区间中的像素在图像中出现的次数。通常将灰度区间的长度设置为2的整数次幂。
2、归一化直方图仿真
在imhist函数的返回值中,counts保存了落入每个区间的像素的个数,通过计算counts与图像中像素总数的商可以得到归一化直方图。
在这里插入图片描述

四、Matlab仿真源码
1、一般直方图仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
figure;
%显示原图
imshow(I);
title('原图');
figure;
%显示直方图
imhist(I);
title('直方图1');
figure;
%生成有64个小区间的灰度直方图
imhist(I,64);
title('直方图2');

2、归一化直方图仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
figure;
%计算图像大小
[M N]=size(I);
%计算有64个小区间的灰度直方图
[counts,x]=imhist(I,64);
%计算归一化灰度直方图各区间的值
counts=counts/M/N;
%绘制归一化直方图
stem(x,counts);
title('64小区间直方图');
figure;
%计算图像大小
[M N]=size(I);
%计算有64个小区间的灰度直方图
[counts,x]=imhist(I,32);
%计算归一化灰度直方图各区间的值
counts=counts/M/N;
%绘制归一化直方图
stem(x,counts);
title('32小区间直方图');
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰的FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值