实验四 图像增强—灰度变换之直方图变换

一.实验目的

1.掌握灰度直方图的概念及其计算方法;

2.熟练掌握直方图均衡化计算过程;了解直方图规定化的计算过程;

3.了解色彩直方图的概念和计算方法

二.实验内容

1 读取数字图像,显示直方图(例如使用imhist,有余力可尝试bar,stem等函数),并进行直方图均衡化处理;

2 显示经过均衡化处理过的图像直方图。

3 有余力可探索更多关于直方图的图像处理操作(例如直方图规定化、局部直方图规定化等)。

4 记录和整理实验报告。

三.实验程序、实验结果与实验分析

1.实验程序

(1)读取数字图像,显示直方图,并进行直方图均衡化处理(Test4_1)

I=imread('pollen.jpg');  

J=histeq(I);%对原图像进行直方图均衡化处理

figure;subplot(1,2,1) ;imshow(I);title('原图像');         

subplot(1,2,2) ;imshow(J); 

title('直方图均衡化后的图像') ;   

figure; subplot(1,2,1) ;

imhist(I,64);    %将原图像直方图显示为64级灰度

title('原图像直方图') ;       

subplot(1,2,2);             

imhist(J,64) ;    %将均衡化后图像的直方图显示为64级灰度

title('均衡变换后的直方图') ; 

(2)读取数字图像,显示直方图,并进行直方图规定化处理(Test4_2)

I=imread('mars.jpg');

% 显示原始图像和其直方图

figure;

subplot(1, 2, 1);

imshow(I);

title('火星天体福布斯的图像');

subplot(1, 2, 2);

imhist(I, 64);

title('原图像直方图');

m1 = 0.15; sig1 = 0.05;  m2 = 0.75; sig2 = 0.05; 

A1 = 1; A2 = 0.07;  k = 0.002; 

p = twomodegauss(m1, sig1, m2, sig2, A1, A2, k);

% 对图像进行直方图规定化处理

J = histeq(I, p);

% 显示规定化处理后的图像和其直方图

figure;

subplot(1, 2, 1);

imshow(J);

title('直方图规定化后的图像');

subplot(1, 2, 2);

imhist(J, 64);

title('规定化处理后的直方图');

(3)读取数字图像,显示直方图,并进行局部直方图规定化处理(Test4_3)

f=imread('mars.jpg');

figure; 

subplot(2, 2, 1); 

imshow(f); 

title('原始图像'); 

g1=adapthisteq(f);

subplot(2, 2, 2); 

imshow(g1); 

title('用默认值使用adpthisteq函数的结果'); 

g2=adapthisteq(f,'NumTiles',[25,25]);

subplot(2, 2, 3); 

imshow(g2); 

title('将参数NumTiles设置为[25,25]时函数的结果'); 

g3=adapthisteq(f,"NumTiles",[25,25],"ClipLimit",0.05);

subplot(2, 2, 4); 

imshow(g3); 

title('使用这个小片数量,并且ClipLimit=0.05时得到的结果');

2.实验结果

(1)读取数字图像,显示直方图,并进行直方图均衡化处理

(2)读取数字图像,显示直方图,并进行直方图规定化处理

直方图规定化后的图像

(3)读取数字图像,显示直方图,并进行局部直方图规定化处理

3.实验分析

(1)读取数字图像,显示直方图,并进行直方图均衡化处理

①读取灰度图像pollen.jpg
I=imread('pollen.jpg');  
②对原图像进行直方图均衡化处理
J=histeq(I);
③将均衡化后图像的直方图显示为64级灰度 
imhist(J,64) ;    %将均衡化后图像的直方图显示为64级灰度

(2)读取数字图像,显示直方图,并进行直方图规定化处理

①读取灰度图像mars.jpg
I=imread('mars.jpg');
②使用双模态高斯函数作为特定的直方图
m1 = 0.15; sig1 = 0.05;  m2 = 0.75; sig2 = 0.05; 

A1 = 1; A2 = 0.07;  k = 0.002; 

p = twomodegauss(m1, sig1, m2, sig2, A1, A2, k);
③对图像进行直方图规定化处理
J = histeq(I, p);

(3)读取数字图像,显示直方图,并进行局部直方图规定化处理

①读取灰度图像mars.jpg
f=imread('mars.jpg');
②使用adpthisteq函数全部默认设置
g1=adapthisteq(f);
③将小片大小增加到[25,25]
g2=adapthisteq(f,'NumTiles',[25,25]);
④使用小片数量[25,25],使ClipLimit=0.05
g3=adapthisteq(f,"NumTiles",[25,25],"ClipLimit",0.05);

四.思考题

1.直方图是什么概念?它反映了图像的什么信息?

直方图是一个统计图表,它用于表示数字图像中每个灰度级出现的频率或次数。对于一幅给定的图像,直方图能够展示图像中每个像素强度值(灰度级)的分布情况。横坐标通常代表灰度级,而纵坐标则代表该灰度级在图像中出现的频数或频率。

直方图反映了图像的以下几个关键信息:

对比度:通过直方图,可以观察图像中像素强度的分布情况,从而判断图像的对比度。

亮度:直方图的偏移情况可以反映图像的整体亮度。如果直方图主要偏向较高的灰度级,则图像整体偏亮;反之,如果偏向较低的灰度级,则图像整体偏暗。

动态范围:直方图能够展示图像所包含的灰度级范围,从而反映图像的动态范围。


2.直方图均衡化是什么意思?它的主要用途是什么?

直方图均衡化是一种增强图像对比度的方法,通过拉伸像素强度值的分布范围来增强图像的对比度。具体来说,它将原始图像的直方图变换为均匀分布的形式,从而增强图像中不同灰度级之间的对比度。

直方图均衡化的主要用途包括:

提高图像对比度:通过均衡化操作,可以使图像的灰度级分布更加均匀,从而提高图像的对比度,使图像中的细节更加清晰。

改善视觉效果:对于对比度较低的图像,直方图均衡化可以显著改善其视觉效果,使图像更加鲜明、生动。

预处理步骤:在图像处理和分析中,直方图均衡化常作为预处理步骤,为后续的特征提取、目标识别等任务提供更好的图像质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/776473.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【19】认证服务03—分布式下Session共享问题

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【19】分布式下Session共享问题 session原理分布式下session共享问题Session共享问题解决—session复制Session共享问题解决—客户端存储Session共享问题解决—hash一致性Session共享问题…

嵌入式linux面试1

1. linux 1.1. Window系统和Linux系统的区别 linux区分大小写windows在dos(磁盘操作系统)界面命令下不区分大小写; 1.2. 文件格式区分 windows用扩展名区分文件;如.exe代表执行文件,.txt代表文本文件,.…

Seatunnel本地模式快速测验

前言 SeaTunnel(先前称为WaterDrop)是一个分布式、高性能、易于扩展的数据集成平台,旨在实现海量数据的同步和转换。它支持多种数据处理引擎,包括Apache Spark和Apache Flink,并在某个版本中引入了自主研发的Zeta引擎…

【c++】通过写一个C++函数来模拟跨境洗钱和系统警告

效果图&#xff1a; 源码&#xff1a; #include <iostream> #include <cstdlib> #include <ctime> #include <iomanip> #include <chrono> #include <thread> // 引入线程头文件#ifdef _WIN32 // 确保只在Windows上包含Windows.h #inclu…

zigbee笔记:六、看门狗定时器(Watch Dog)

一、看门狗基础 1、看门狗功能&#xff1a; 由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造成各种寄存器和内存的数据混乱&#xff0c;会导致程序指针错误等&#xff0c;程序运行可能会陷入死循环。程序的正常运行被打断&#xff0c;由单片机控制的系统无法继…

芯片的PPA-笔记

写在前面&#xff1a;这个仅记录自己对芯片PPA的一些思考&#xff0c;不一定正确&#xff0c;还请各位网友思辨的看待&#xff0c;欢迎大家谈谈自己的想法。 1 此次笔记的起因 记录的原因&#xff1a;自己在整理这段时间的功耗总结&#xff0c;又看到工艺对功耗的影响&#x…

12.SQL注入-盲注基于时间(base on time)

SQL注入-盲注基于时间(base on time) boolian的盲注类型还有返回信息的状态&#xff0c;但是基于时间的盲注就什么都没有返回信息。 输入payload语句进行睡5秒中&#xff0c;通过开发这工具查看时间&#xff0c;如图所示&#xff0c;会在5秒钟后在执行&#xff0c;因此存在基于…

面试篇-系统设计题总结

文章目录 1、设计一个抢红包系统1.1 高可用的解决方案&#xff1a;1.2 抢红包系统的设计1.3 其他 2、秒杀系统设计 这里记录一些有趣的系统设计类的题目&#xff0c;一般大家比较喜欢出的设计类面试题目会和高可用系统相关比如秒杀和抢红包等。欢迎大家在评论中评论自己遇到的题…

磁钢生产领域上下料解决方案

随着智能制造技术的不断革新&#xff0c;磁钢生产领域正逐步引入自动化生产线。然而&#xff0c;传统的人工上下料方式存在诸多问题&#xff0c;难以满足现代生产需求。富唯智能提出了一款复合机器人磁钢上下料解决方案&#xff0c;通过先进的自动化技术&#xff0c;提高生产效…

填报高考志愿,怎样正确地选择大学专业?

大学专业的选择&#xff0c;会关系到未来几年甚至一辈子的发展方向。这也是为什么很多人结束高考之后就开始愁眉苦脸&#xff0c;因为他们不知道应该如何选择大学专业&#xff0c;生怕一个错误的决定会影响自己一生。 毋庸置疑&#xff0c;在面对这种选择的时候&#xff0c;我…

Keycloak SSO 如何验证已添加的 SPN 是否生效

使用 Kerberos Ticket 验证&#xff1a; 在客户端计算机上&#xff0c;运行以下命令以获取 Kerberos Ticket&#xff1a; klist检查是否存在与 HTTP/yourdomain.com 相关的票证。如果存在&#xff0c;说明 SPN 已生效。 测试应用程序&#xff1a; 使用具有 HTTP/yourdomain.com…

windows USB 设备驱动开发-控制传输的数据包

每次在主机控制器和 USB 设备之间移动数据时&#xff0c;都会发生传输。 通常&#xff0c;USB 传输可大致分为控制传输和数据传输。 所有 USB 设备都必须支持控制传输&#xff0c;并且可以支持用于数据传输的端点。 每种类型的传输都与设备缓冲区USB 端点 的类型相关联。 控制传…

Linux 查看磁盘是不是 ssd 的方法

lsblk 命令检查 $ lsblk -d -o name,rota如果 ROTA 值为 1&#xff0c;则磁盘类型为 HDD&#xff0c;如果 ROTA 值为 0&#xff0c;则磁盘类型为 SSD。可以在上面的屏幕截图中看到 sda 的 ROTA 值是 1&#xff0c;表示它是 HDD。 2. 检查磁盘是否旋转 $ cat /sys/block/sda/q…

北京十大拆迁律师事务所排名

历史时刻在重演&#xff0c;土地征地拆迁作为城市发展中不可或缺的环节备受地方政府重视。然而&#xff0c;在土地征收过程中&#xff0c;往往因为拆迁补偿引发各种纠纷案件&#xff0c;给拆迁方和被拆迁方带来重大损失&#xff0c;侵害双方利益&#xff0c;尤其是被征收人。因…

CentOS修复OpenSSH漏洞升级到openssh 9.7 RPM更新包

在做政府和学校单位网站时&#xff0c;经常需要服务器扫描检测&#xff0c;经常被OpenSSH Server远程代码执行漏洞&#xff08;CVE-2024-6387&#xff09;安全风险通告&#xff0c;出了报告需要升级OpenSSH。 使用yum update openssh是无法更新到最新的&#xff0c;因为系统里的…

YOLOX算法实现血细胞检测

原文:YOLOX算法实现血细胞检测 - 知乎 (zhihu.com) 目标检测一直是计算机视觉中比较热门的研究领域。本文将使用一个非常酷且有用的数据集来实现YOLOX算法,这些数据集具有潜在的真实应用场景。 问题陈述 数据来源于医疗相关数据集,目的是解决血细胞检测问题。任务是通过显微…

谷粒商城学习-09-配置Docker阿里云镜像加速及各种docker问题记录

文章目录 一&#xff0c;配置Docker阿里云镜像加速二&#xff0c;Docker安装过程中的几个问题1&#xff0c;安装报错&#xff1a;Could not resolve host: mirrorlist.centos.org; Unknown error1.1 检测虚拟机网络1.2 重设yum源 2&#xff0c;报错&#xff1a;Could not fetch…

给我的 IM 系统加上监控两件套:【Prometheus + Grafana】

监控是一个系统必不可少的组成部分&#xff0c;实时&#xff0c;准确的监控&#xff0c;将会大大有助于我们排查问题。而当今微服务系统的话有一个监控组合很火那就是 Prometheus Grafana&#xff0c;嘿你别说 这俩兄弟配合的相当完美&#xff0c;Prometheus负责数据采集&…

MyBatis入门程序详解

目录 一、MyBatis概述 二、编写MyBatis入门程序 三、配置SQL提示 四、传统jdbc的劣势 一、MyBatis概述 MyBatis是一个基于Java的持久层框架&#xff0c;它内部封装了JDBC操作&#xff0c;使得开发人员可以更专注于SQL语句本身而非繁琐的JDBC操作细节。在MyBatis中&#xff0…

LLM - 词向量 Word2vec

1. 词向量是一个词的低维表示&#xff0c;词向量可以反应语言的一些规律&#xff0c;词意相近的词向量之间近乎于平行。 2. 词向量的实现&#xff1a; &#xff08;1&#xff09;首先使用滑动窗口来构造数据&#xff0c;一个滑动窗口是指在一段文本中连续出现的几个单词&#x…