数字图像处理--(03)数字图像增强之直方图操作(MATLAB)

简介: 数字图像处理--(03)数字图像增强之直方图操作(MATLAB)

直方图


直方图是图象的一种统计表达,反映了图中灰度的分布情况。

直方图处理以概率论为基础,常用的方法主要有直方图均衡化和直方图规定化。

直方图均衡化:自动增强,效果不易控制,总得到全图增强的结果

直方图规定化:有选择地增强,须给定需要的直方图,可特定增强的结果

直方图均衡化


直方图均衡化是一种利用灰度变换自动调节图像对比度质量的方法,基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累计分布函数变换法为基础的直方图修正法。

通俗点说就是:

把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布,说的简单点,就是把原来的图像的灰度分配均匀,使得0-255都有一定的取值,这样对比度相对大些,视觉上更好看。

主要作用: 增强动态范围偏小的图像的反差 。

基本思想: 把原始图的直方图变换为在整个灰度范围内均匀分布的形式,增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。直方图更一般的(归一化的)概率表达形式 :

image.png

上式中,n 是图像里像素的总个数。通过图像里像素的总个数归一化,所得到的直方图表达了比例。

实现步骤


直方图均衡化处理的步骤如下:

  1. 求出给定待处理图像的直方图
  2. 利用累计分布函数对原图像的统计直方图做变换,得到新的图像灰度。
  3. 进行近似处理,将新灰度代替旧灰度,同时将灰度值相等或相近的每个灰度直方图合并在一起

MATLAB实现直方图均衡化处理的函数是:J=histeq(I,n):I为输入的原图像,J为直方图均衡化后得到的图像,n为均衡化后的灰度级数,默认值为64

MATLAB实现


Matlab图像处理工具箱提供了用于直方图均衡化的函数histeq(),调用语法如下:[J,T]=histeq(I)

I是原始图像,J是经过直方图均衡化的输出图像,T是变换矩阵

图像归一化:将图像转换成唯一的标准形式以抵抗各种变换,从而可消除同类图像不同变形体之间的外观差异

灰度归一化:当图像归一化用于消除灰度因素(光照)等造成的图像外观变化时,称为灰度归一化.

编写均衡化函数


clc;
clearall;closeall;
img=imread('../img1.jpg');
subplot(2,2,1);imshow(img);title("原始图像");
subplot(2,2,2);imhist(img);title("原始图像直方图");
%%进行灰度统计[H,W]=size(img);
nk=zeros(1,256);
fori=1 : Hforj=1: Wnk(img(i,j)+1) =nk(img(i,j)+1)+1;
endend%%计算灰度分布pk=zeros(1,256);
pk=nk/ (H*W);
%%计算累计直方图分布sk=zeros(1,256);
sk(1)=pk(1);
fori=2:256sk(i) =sk(i-1) +pk(i); 
end%%累积分布取整数值归一化kt=zeros(1,256);
kt=uint8(255.*sk );
%%对图像均衡化o_img=zeros(size(img));
fori=1 : Hforj=1: Wo_img(i,j)=kt(img(i,j)+1);
endendo_img=uint8(o_img);
subplot(2,2,3);imshow(o_img);title("输出图像");
subplot(2,2,4);imhist(o_img);title("输出图像直方图");

image.png

histeq函数使用


clc;
clearall;closeall;
gray1=uint8(imread('../gray1.jpg'));
o_gray1=histeq(gray1);
subplot(2,2,1);imshow(gray1);title("灰度原始图像");
subplot(2,2,2);imhist(gray1);title("灰度原始图像直方图");
subplot(2,2,3);imshow(o_gray1);title("灰度输出图像");
subplot(2,2,4);imhist(o_gray1);title("灰度输出图像直方图");

image.png

直方图规定化


直方图规定化的基本思想:有目的的增强某个灰度区间的图像,即能够人为地修正直方图的形状,使之与期望的图像相匹配。

直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像之间的关系,选择地控制直方图,使原始图像的直方图变成规定的形状,从而弥补了直方图均衡不具备交互作用的特性。

方法步骤


直方图的规定划的方法步骤:

1.分别计算原图像与目标图像的累计概率分布

2.分别对原图像与目标图像进行直方图均衡化操作

3.利用组映射关系使原图像直方图按照规定进行变换

代码实现


clearI=imread('../img1.jpg');%读取图像Imatch=imread('../img2.jpg');%读取匹配图像Jmatch=imhist(Imatch);%获取匹配图像直方图Iout=histeq(I,Jmatch);%直方图匹配figure;%显示原图像、匹配图像和匹配后的图像subplot(1,3,1),imshow(I);title('原图像');
subplot(1,3,2),imshow(Imatch);title('匹配图像');
subplot(1,3,3),imshow(Iout);title('匹配之后图像');
figure;%显示原图像、匹配图像和匹配后图像的直方图subplot(3,1,1),imhist(I,64);title('原图像直方图');
subplot(3,1,2),imhist(Imatch,64);title('匹配图像图像直方图');
subplot(3,1,3),imhist(Iout,64);title('匹配之后图像直方图');

彩色图像效果


image.png

image.png

灰度图像效果


image.png

image.png

目录
相关文章
|
6月前
|
编解码 资源调度
MATLAB | 绘图配色第九期带高斯分布的直方图
MATLAB | 绘图配色第九期带高斯分布的直方图
82 0
|
6月前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
6月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
6月前
|
算法 数据安全/隐私保护 数据格式
基于混沌序列的图像加解密算法matlab仿真,并输出加解密之后的直方图
该内容是一个关于混沌系统理论及其在图像加解密算法中的应用摘要。介绍了使用matlab2022a运行的算法,重点阐述了混沌系统的特性,如确定性、非线性、初值敏感性等,并以Logistic映射为例展示混沌序列生成。图像加解密流程包括预处理、混沌序列生成、数据混淆和扩散,以及密钥管理。提供了部分核心程序,涉及混沌序列用于图像像素的混淆和扩散过程,通过位操作实现加密。
|
6月前
|
算法 计算机视觉 异构计算
基于直方图相似性的图像分类算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容包含了一段关于图像处理算法的摘要,主要包括: 1. 展示了MATLAB和FPGA的测试结果图像,显示了图像读取完成的标志和相似性指标,其中图1与图2有较强相似性,图1与图3相似性较弱。 2. 算法使用的是vivado 2019.2和matlab 2022A版本。 3. 算法原理涉及图像直方图统计和直方图相似性度量,通过计算直方图的差异来衡量图像相似度,FPGA实现包括图像采集、直方图计算、比较和分类决策步骤。 4. 提供了一个部分核心Verilog程序,用于读取图像数据并在FPGA上进行直方图相似性计算。
|
6月前
|
计算机视觉
数字图像处理笔记(一)Matlab实现直方图均衡化
数字图像处理笔记(一)Matlab实现直方图均衡化
|
6月前
|
机器学习/深度学习 存储 算法
毕业论文:基于matlab的数字图像分割技术研究及实现(分享需要的同学)
毕业论文:基于matlab的数字图像分割技术研究及实现(分享需要的同学)
198 0
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
174 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
122 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现

热门文章

最新文章