数字图像处理实验(直方图均衡化规定化)

news2024/9/22 6:41:02

图像均衡化

  图像均衡化是一种图像处理技术,它的目的是改善图像的对比度。

  具体来说,对于一张图像,其直方图就是统计图像中各灰度级出现的次数的图像。通常情况下,图像的直方图会呈现不平衡的状态,即图像的某些灰度级出现的次数很多,而其它灰度级出现的次数很少。这样的图像在显示时,可能会出现对比度差的问题,使得图像看起来比较暗或者模糊。

  图像均衡化就是对图像进行直方图均衡,使得图像中各灰度级出现的次数更加平均。这样,图像的对比度就会得到提高,图像看起来就会更加清晰。

  在 Matlab 中可以使用 histeq 函数来对图像进行均衡化。该函数会对图像的直方图进行均衡,使得图像中各灰度级出现的概率相同。

% 读入图像
I = imread('Jo.jpg');

% 对图像进行均衡化
I_eq = histeq(I);

% 显示原图像和均衡化后的图像
subplot(1,2,1);
imshow(I);
title('原图像');
subplot(1,2,2);
imshow(I_eq);
title('均衡化后的图像');

注意,histeq 函数的输入和输出都是灰度图像。如果你的图像是彩色图像,那么可以先将其转换为灰度图像,然后再使用 histeq 函数进行均衡化。例如:

% 读入图像
I = imread('Jo.jpg');

% 将图像转换为灰度图像
I_gray = rgb2gray(I);

% 对图像进行均衡化
I_eq = histeq(I_gray);

% 显示原图像和均衡化后的图像
subplot(1,3,1);
imshow(I);
title('原图像');
subplot(1,3,2);
imshow(I_gray);
title('灰度图像');
subplot(1,3,3);
imshow(I_eq);
title('均衡化后的图像');

% 读入图像
I = imread('Jo.jpg');

% 将图像转换为灰度图像
I_gray = rgb2gray(I);


% 对图像进行均衡化
I_eq = histeq(I_gray);

% 显示原图像和均衡化后的图像
subplot(2,2,1);
imshow(I_gray);
title('灰度图像');
subplot(2,2,2);
imhist(I_gray);
title('灰度直方图');
subplot(2,2,3);
imshow(I_eq);
title('均衡化图像');
subplot(2,2,4);
imhist(I_eq);
title('均衡化直方图');

 

观察可以发现灰度值变得平均,不会让灰度聚在某一区域使得图像看起来比较暗或者模糊。这里图像变亮。

直方图规定化

  直方图规定化是一种图像处理技术,它的目的是使图像的直方图呈现特定的形状。

  具体来说,对于一张图像,其直方图就是统计图像中各灰度级出现的次数的图像。通常情况下,图像的直方图会呈现不平衡的状态,即图像的某些灰度级出现的次数很多,而其它灰度级出现的次数很少。直方图规定化的目的就是使图像的直方图呈现特定的形状,通常情况下是使其呈现平坦的形状。

  直方图规定化的具体做法是,首先计算出图像的直方图,然后根据直方图计算出每个灰度级的累计分布函数,再根据累计分布函数计算出新的灰度级,最后将图像中每个像素的灰度级替换为对应的新灰度级。

  注意,直方图规定化和图像均衡化是有区别的。图像均衡化的目的是提高图像的对比度,而直方图规定化的目的是使图像的直方图呈现特定的形状。

% 读入图像
I = imread('Jo.jpg');

% 将图像转换为灰度图像
I_gray = rgb2gray(I);
hgram=50:2:250

% 对图像进行规定化
I_eq = histeq(I_gray,hgram);

% 显示原图像和规定化后的图像
subplot(2,2,1);
imshow(I_gray);
title('灰度图像');
subplot(2,2,2);
imhist(I_gray);
title('灰度直方图');
subplot(2,2,3);
imshow(I_eq);
title('规定化图像');
subplot(2,2,4);
imhist(I_eq);
title('规定化直方图');

控制台:

列 1 至 21

    50    52    54    56    58    60    62    64    66    68    70    72    74    76    78    80    82    84    86    88    90

  列 22 至 42

    92    94    96    98   100   102   104   106   108   110   112   114   116   118   120   122   124   126   128   130   132

  列 43 至 63

   134   136   138   140   142   144   146   148   150   152   154   156   158   160   162   164   166   168   170   172   174

  列 64 至 84

   176   178   180   182   184   186   188   190   192   194   196   198   200   202   204   206   208   210   212   214   216

  列 85 至 101

   218   220   222   224   226   228   230   232   234   236   238   240   242   244   246   248   250

 也可以使用期望图像直方图来规定化:

% 读入图像
I = imread('D1.jpg');

% 将图像转换为灰度图像
I_gray = rgb2gray(I);

I_match=imread('D2.jpg');%期望图像
I_mgray=rgb2gray(I_match);
[hgram,x]=imhist(I_match);
% 对图像进行规定化
I_eq = histeq(I_gray,hgram);
subplot(3,2,1);
imshow(I_mgray);
title('期望图像');
subplot(3,2,2);
imhist(I_mgray);
title('期望图像直方图');

% 显示原图像和规定化后的图像
subplot(3,2,3);
imshow(I_gray);
title('灰度图像');
subplot(3,2,4);
imhist(I_gray);
title('灰度直方图');
subplot(3,2,5);
imshow(I_eq);
title('规定化图像');
subplot(3,2,6);
imhist(I_eq);
title('规定化直方图');

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQLSERVER 的主键索引真的是物理有序吗?

一:背景 1. 讲故事 最近在看 SQL SERVER 2008 查询性能优化,书中说当一个表创建了聚集索引,那么表中的行会按照主键索引的顺序物理排列,这里有一个关键词叫:物理排列,如果不了解底层原理,真的…

5G NR标准: 第18章 射频特性

第18章 射频特性 如第 3 章所述,NR 的射频特性与 5G 的可用频谱以及在这些频谱分配中运行所需的频谱灵活性密切相关。 虽然频谱灵活性一直是前几代移动系统的基石,但对于 NR,这一点变得更加突出。 它由几个组成部分组成,包括在不…

C++11 线程异步

文章目录1. 线程异步的概念2. future2.1 共享状态2.2 常用成员函数3. promise3.1 常用成员函数3.2 promise的基本使用4. package_task4.1 常用成员函数4.2 package_task的基本使用5. async5.1 async的基本使用6. promise、package_task、async的对比与总结1. 线程异步的概念 问…

干货 | 读懂 Appium 日志,让测试效率翻倍!

Appium 服务器运行时会产生很多日志,但是很多人并不了解其中的意义,也无法掌握有用的信息。本文将详细解读如何读懂 Appium 日志,并让你的测试效率翻倍。开启服务日志第一行显示了 Appium 版本和运行地址。$ appium[Appium] Welcome to Appiu…

曾经对程序员最好的公司,倒下了

硅谷有一家公司,它发明了同时代最好的CPU,最好的操作系统,最好的编程语言,但是由于傲慢和目光短浅,在短短二十多年间就走到了尽头。它就是Sun Microsystems,硅谷最让人惋惜的公司。1Sun的出现是个巧合。80年…

运动蓝牙耳机哪个品牌好、2023年最出色运动蓝牙耳机推荐

上班通勤、娱乐和运动时间都需要一款耳机的陪伴。相信音乐是许多健身爱好者锻炼时的必备,在枯燥的运动中用音乐分散注意力,不仅可以提高运动的积极性,还能让身体产生一种非常奇妙的愉悦感。不过,想要在运动中获得更好的聆听体验&a…

【图像处理OpenCV(C++版)】——3.2 几何变换之投影变换

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

前端高频vue面试题总结

created和mounted的区别 created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。 如何从真实DOM到虚拟DOM …

springboot 全局 Date参数接收 String格式 转换异常报错

报错: .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type java.util.Date from String "2022-12-13 11:22:11": not a v…

C语言实现c++对象和私有成员

C语言实现c对象和私有成员 C语言实现c对象 类是C中面向对象编程思想中比较重要的组成部分,与结构体一样类只是一个模板只有在创建对象时才会申请内存空间,类其实是把具有共同特性的数据或方法(面向对象编程中,一般把函数称为方法…

录屏软件哪个好用?10个免费好用的「录屏软件」推荐

想知道如何录制自己的流媒体视频吗?有几个选项可以让您免费录制流媒体视频:桌面屏幕录像机、在线工具、浏览器扩展、iOS 应用程序和 Android 应用程序。 查看下表以获取有关不同直播流媒体录像机的更多信息:它们的主要用途和运行的操作系统。…

基于YOLOV5的火灾检测系统(含模型)+GUI界面

基于YOLOV5的火灾检测系统 本期我们带来的内容是基于YOLOV5的火灾检测系统,火灾检测系统还是比较有实际意义的,也方便大家在背景描述中展开。废话不多说,还是先看效果。 完整代码下载地址:基于YOLOV5的火灾检测系统(含模型&…

MySQL高级 SQL优化【limitcountupdate优化】

目录 1:SQL优化 1.1:limit优化 1.2:count优化 1.2.1:概述 1.2.2:count用法 1.3:update优化 1:SQL优化 1.1:limit优化 在数据量比较大时,如果进行limit分页查询&a…

拉伯配资|战略新兴产业火了,高增长低估值股曝光

导读:2022年,A股商场值得记录的前史性大事件不断。这一年,A股商场上市公司数量正式打破5000家,战略新兴工业上市公司数量打破2500家,占比初次打破50%大关。这一年,A股商场顶住杂乱的外部环境要素&#xff0…

一文读懂:什么是CRM?企业如何通过CRM盈利?

今天和大家分享一篇干货文章,主要探讨什么是CRM,用大白话解释企业究竟如何通过CRM盈利。文章有点长,但看完,相信你会有所收获。 一、什么是CRM CRM——客户关系管理系统,它不仅是一个系统,一个技术解决方案…

云原生安全系列 4:6个 Kubernetes 安全最佳实践

引言: Kubernetes为我们提供了一套很好的核心软件安全原则,但我们仍然需要理解并实施它们。对于 Kubernetes 集群分布式部署,攻击向量的数量也会增加,了解并尽可能限制这些攻击面的最佳实践非常重要。 即使在使用托管的 Kuberne…

以系统思维推进零信任架构演进

声明 本文是学习零信任数据动态授权桔皮书. 下载地址 http://github5.com/view/55013而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 以工程化思维推进零信任架构演进 前文所述零信任数据动态授权能力,是围绕数据本身的库、表、字段构建安…

光点数据中台能干啥?怎么做?用在哪?_光点科技

如今,数据营销已经成为许多公司数字化转型的必要选择。数据中台的支持是企业中任何高层次的业务应用不可或缺的。数据中心面向的公司业务不再是单一业务线,而是从公司整体角度审视业务全景,寻找可重用的沉淀能力。 今天,让我们来了…

一个 Qml MenuBar 的问题

基本情况 使用 QQuick.Control 中的 MenuBar 实现主菜单栏。菜单栏包括 File、Edit、View、Help 菜单项。点击菜单项,会弹出对应的菜单。 ApplicationWindow {id: windowwidth: 320height: 260visible: truemenuBar: MenuBar {Menu {title: qsTr("&File&…

List集合

首先看这个框架图: List集合代表一个元素有序,可重复的集合,集合中每个元素都有对应的顺序索引。List接口中增加了一些根据索引操作元素的方法: void add(int index,E element ) 在列表的指定位置插入该元素。 boolean addAll(in…