当前位置: 首页 > news >正文

[数字图像处理]直方图规定化

这里分别使用基于像素手动计算调用工具箱函数两种方法实现直方图规定化

1.基于像素进行直方图规定化

(1)读取了原始图像和期望图像,并将它们转换为灰度图像

(2)计算原始图像和期望图像的像素概率分布直方图P(i)和P(j),并统计它们的累积直方图Pi和Pj

(3)根据原始图像和期望图像的累积直方图,找到使Pi/Pj误差最小的映射关系

(4)对原始图像进行直方图规定化,展示原始图像、期望图像及规定化后的图像

代码:

%直方图规定化
I0=imread("C:\Users\Desktop\图像1.jpg");
I=rgb2gray(I0);
I1=rgb2gray(I0);
G=imread("C:\Users\Desktop\期望图像0.jpg");
G2=rgb2gray(G);
%计算原图像的长宽
[x,y]=size(I);
%创建数组存储像素概率
p=zeros(1,256)
%统计每个像素值出现的概率
for i=0:255
%length计算相同像素的个数
p(i+1)=length(find(I==i))/(x*y);
end
%输出原图及原图直方图
figure,
subplot(331),imshow(I);
title('原图')
subplot(332);
bar(0:255,p,'b')
title('原图直方图');
%求累计概率,得到累积直方图
s=zeros(1,256)
for i=1:256
for j=1:i
s(i)=p(j)+s(i);
end
end
subplot(333);
bar(0:255,s,'b');
title('原图累积直方图');
%计算期望图像的长宽
[a,b]=size(G2);
%创建数组存储像素概率
z=zeros(1,256)
%统计每个像素值出现的概率
for i=0:255
%length计算相同像素的个数
z(i+1)=length(find(G2==i))/(a*b);
end
%输出期望图像及直方图
subplot(334),imshow(G2);
title('期望图像')
subplot(335);
bar(0:255,z,'b')
title('期望图像直方图');
%求累计概率,得到累积直方图
h=zeros(1,256)
for i=1:256
for j=1:i
h(i)=z(j)+h(i);
end
end
subplot(336);
bar(0:255,h,'b');
title('期望图像累积直方图');
new_I=zeros(256,1,'uint8');
%按照[Pj/Pi]误差最小,查找i对应的j
for i=1:1:256
min=abs(s(i)-h(1));
for j=1:1:256
if(abs(s(i)-h(j))<min)
min=abs(s(i)-h(j));
new_I(i)=j;
end
end
end
% 应用映射关系进行直方图规定化
new_Img = zeros(size(I1));
for i = 1:256
new_Img(I1==i)=new_I(i);
end
[x,y]=size(new_Img);
p1=zeros(1,256)
for i=0:255
p1(i+1)=length(find(new_Img==i))/(x*y);
end
subplot(337)
imshow(uint8(new_Img)); % 使用uint8()函数将图像数据转换为无符号整数类型
title('规定化的图像');
subplot(338)
bar(0:255,p1,'b');
title('直方图规定化');
%求累计概率,得到累积直方图
p11=zeros(1,256)
for i=1:256
for j=1:i
p11(i)=p(j)+p11(i);
end
end
subplot(339);
bar(0:255,p11,'b');
title('规定图像后的累积直方图');

2.调用工具箱函数实现直方图规定化

实现直方图规定化的语法为:g=histeq(f,hspec)

其中,f为输入图像,hspec为规定的直方图,g为输出图像,输出图像的直方图近似于指定的直方图hspec。首先读取了一张灰度图片,然后定义了一个灰度级范围hgram,范围从50到250。接着使用histeq函数对原始图像G进行直方图规定化,得到规定化后的图像I_histeq。

代码:

%直方图规定化
G=imread('C:\Users\Desktop\灰度图片.jpg');
hgram=50:2:250
%使用histeq函数进行规定化
I_histeq=histeq(G,hgram);
figure,
subplot(221),imshow(G);
title('原图')
subplot(222),imhist(G);
title('原图直方图')
subplot(223),imshow(I_histeq);
title('规定化图像')
subplot(224),imhist(I_histeq);
title('规定化图像直方图')

图1为通过手动计算调整原始图像的像素值分布,使其尽可能接近期望图像的像素值分布,从而实现图像的直方图规定化的结果。原始图像的直方图可能比较集中,显示较低的对比度和动态范围。而期望图像的直方图覆盖了更广泛的像素值范围,有更高的对比度和动态范围。规定化后的图像直方图与期望图像的直方图更加相似,可以看到原始图像人物脸部区域较亮,对比度较高,而期望图像整体较暗,对比度较低,通过规定化处理后,图像对比度降低,可以明显发现人物脸部区域变暗。

图1

图2为调用工具包函数实现的直方图规定化结果。通过使用工具包中的函数调整图片的对比度和亮度。自定义期望直方图(hgram=50:2:250)使调整的图像像素均匀分布在50-250之间,经过规定化处理,可以发现规定化后的图像对比度和亮度增强。

 

图2

相关文章:

[数字图像处理]直方图规定化

这里分别使用基于像素手动计算、调用工具箱函数两种方法实现直方图规定化 1.基于像素进行直方图规定化 &#xff08;1&#xff09;读取了原始图像和期望图像&#xff0c;并将它们转换为灰度图像 &#xff08;2&#xff09;计算原始图像和期望图像的像素概率分布直方图P(i)和…...

OpenMCU(一):STM32F407 FreeRTOS移植

概述 本文主要描述了STM32F407移植FreeRTOS的简要步骤。移植描述过程中&#xff0c;忽略了Keil软件的部分使用技巧。默认读者熟练使用Keil软件。本文的描述是基于OpenMCU_FreeRTOS这个工程&#xff0c;该工程已经下载放好了移植stm32f407 FreeRTOS的所有文件 OpenMCU_FreeRTOS工…...

Redis - 高可用实现方案解析:主从复制与哨兵监控

文章目录 Pre概述Redis 高可用实现方案一、主从复制机制1.1 全量同步流程1.2 增量同步&#xff08;PSYNC&#xff09;流程 二、哨兵监控机制2.1 故障转移时序流程 三、方案对比与选型建议四、生产环境实践建议 Pre Redis-入门到精通 Redis进阶系列 Redis进阶 - Redis主从工作…...

SPI硬件设计及通信原理解析

SPI(Serial Peripheral interface,串行外围设备接口),是一种高速的,全双工,同步通信总线。 SPI采用主从控制模式(Master--Slave)架构,一般有1个主设备、一个或多个从设备,使得主设备可以与多个从设备之间实现片间通信。 SPI在芯片管脚中只占用四根线节约了芯片的管脚…...

腾讯云物联网平台(IoT Explorer)设备端使用

1、直接看图流程 2、跑起来demo,修改产品id,设备名称,设备秘钥。 3、连接部分 4、修改默认地址和端口 sdk里面的地址默认是带着产品ID拼接的,咱们现在中铁没有泛域名解析,要改下这里。把+productID都去掉,然后地址里的.也去掉。...

elk的相关的基础

以下是关于ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;的200个基础问题及其答案&#xff0c;涵盖了ELK的核心概念、组件、配置、使用场景、优化等方面。 ​Elasticsearch 基础 ​**什么是Elasticsearch&#xff1f;**​ 答&#xff1a;Elasticsearch是一个分…...

结合PyMuPDF+pdfplumber,删除PDF指定文本后面的内容

🚀 一、需求场景解析 在日常办公中,我们经常会遇到这样的痛点: 合同处理:收到上百份PDF合同,需要找到"签署页"之后的内容并删除报表加工:批量移除财务报表中的敏感数据区域文档归档:快速提取技术文档的关键章节传统的手动操作方式存在三大致命缺陷: ❗ 耗时…...

张驰咨询:用六西格玛重构动力电池行业的BOM成本逻辑

在动力电池行业&#xff0c;BOM&#xff08;物料清单&#xff09;成本每降低1%&#xff0c;都可能改写企业的利润曲线。某头部企业的三元锂电池BOM成本曾较行业标杆高出11%&#xff0c;单电芯利润率被压缩至3%的生死线。然而&#xff0c;通过张驰咨询的六西格玛方法论&#xff…...

【深度学习CV】【图像分类】从CNN(卷积神经网络)、ResNet迁移学习到GPU高效训练优化【案例代码】详解

摘要 本文分类使用的是resNet34,什么不用yolo v8&#xff0c;yolo v10系列,虽然他们也可以分类&#xff0c;因为yolo系列模型不纯粹&#xff0c;里面包含了目标检测的架构&#xff0c;所以分类使用的是resNet 本文详细介绍了三种不同的方法来训练卷积神经网络进行 CIFAR-10 图…...

《基于HarmonyOS NEXT API 12+,搭建新闻创作智能写作引擎》

在信息爆炸的时代&#xff0c;新闻行业对于内容生产的效率和质量有着极高的要求。AI技术的发展为新闻创作带来了新的变革契机&#xff0c;借助AI智能写作助手&#xff0c;新闻工作者可以快速生成新闻稿件的初稿&#xff0c;大大提高创作效率。本文将基于HarmonyOS NEXT API 12及…...

python代码注释方式

在 Python 中&#xff0c;注释是用于解释代码、提高代码可读性和可维护性的重要工具。Python 支持两种主要的注释方式&#xff1a;单行注释和多行注释。此外&#xff0c;Python 还支持文档字符串&#xff08;docstrings&#xff09;&#xff0c;用于为模块、函数、类和方法提供…...

小哆啦解题记:螺旋矩阵

小哆啦开始刷力扣的第二十八天 54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; &#x1f32a;️ 一场螺旋风暴的较量 在一个阳光明媚的午后&#xff0c;小哆啦悠闲地坐在窗边啃着曲奇&#xff0c;突然&#xff0c;一道神秘的光芒闪过&#xff0c;小智从代码的虚空中出现…...

【C#】委托是什么

在 C# 中&#xff0c;委托&#xff08;Delegate&#xff09; 是一种类型安全的函数指针&#xff0c;可以将方法作为参数传递或者保存方法的引用。下面详细介绍一下委托的相关概念和用法&#xff1a; 1. 基本概念 类型安全&#xff1a;委托在声明时会指定方法的返回类型和参数…...

[Lc(2)滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…...

迷你世界脚本玩家接口:Player

玩家接口&#xff1a;Player 彼得兔 更新时间: 2024-07-28 17:49:05 继承自 Actor 具体函数名及描述如下: 序号 函数名 函数描述 1 getAttr(...) 玩家属性获取 2 setAttr(...) 玩家属性设置 3 getHostUin(...) 获取房主uin 4 isMainPlayer(...) …...

三、0-1搭建springboot+vue3前后端分离-springboot整合mybatis plus 之本地安装mysql

一、安装mysql&#xff1a; 官网下载&#xff1a;https://dev.mysql.com/downloads/mysql/?spm5176.28103460.0.0.40f75d27Stx4Xj 网盘分享&#xff1a;http://链接: https://pan.baidu.com/s/1mS_-VxrKAeRL3utBvD64gg?pwd6666 提取码: 6666 复制这段内容后打开百度网盘手机…...

市场趋势解析与交易策略优化

市场趋势解析与交易策略优化 在市场环境不断变化的情况下&#xff0c;理解市场趋势并优化交易策略是交易者稳健发展的关键。通过科学的方法识别市场动向&#xff0c;结合数据分析优化交易方案&#xff0c;可以提高交易效率并降低风险。本文将探讨趋势分析的要点&#xff0c;并介…...

Spring Boot 常用注解全解析:从核心到进阶的实践指南

目录 引言&#xff1a;为什么注解是Spring Boot开发者的“战略武器”&#xff1f; 一、核心启动注解 1.1 应用启动三剑客 二、Web开发注解 2.1 控制器层注解 三、依赖注入注解 3.1 依赖管理矩阵 四、数据访问注解 4.1 JPA核心注解 五、配置管理注解 5.1 配置绑定注解…...

如何优化FFmpeg拉流性能及避坑指南

FFmpeg作为流媒体处理的核心工具&#xff0c;其拉流性能直接影响直播/点播体验。本文从协议优化、硬件加速、网络策略三大维度切入&#xff0c;结合实战案例与高频踩坑点&#xff0c;助你突破性能瓶颈&#xff01; 一、性能优化进阶&#xff1a;从协议到硬件的全链路调优 协议选…...

基础dp——动态规划

目录 一、什么是动态规划&#xff1f; 二、动态规划的使用步骤 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 三、试题讲解 1.最小花费爬楼梯 2.下降路径最小和 3.解码方法 一、什么是动态规划&#xff1f; 动态规划&#xff08;Dynamic Programming&…...

HALCON实战:从一维码到复杂OCR,图像增强与运算的工业视觉全流程解析

1. 工业视觉检测的挑战与HALCON解决方案 在自动化产线上&#xff0c;产品表面的一维码、二维码和字符识别是质量控制的关键环节。我曾在某电子元件生产线遇到这样的场景&#xff1a;传送带以每秒3米的速度移动&#xff0c;产品表面既有激光刻印的微小点阵字符&#xff0c;又有喷…...

不伤身的酒是智商税?这款轻养新标杆打破偏见

1.当“喝酒伤身”成为共识&#xff0c;谁在挑战这个铁律&#xff1f;中国人喝酒的历史&#xff0c;几乎和文明史一样长。但“喝酒伤身”这四个字&#xff0c;也像影子一样&#xff0c;从未离开过酒桌。每一次举杯&#xff0c;耳边总有人念叨&#xff1a;“少喝点”“伤肝”“伤…...

trae中安装mcp报Cannot find package/ERR_MODULE_NOT_FOUND问题

简介 我在trae中安装高德地图的mcp和其他的mcp报出了以下错误&#xff0c;以此记录并分享给大家。 新的改变 node:internal/modules/esm/resolve:204 const resolvedOption FSLegacyMainResolve(pkgPath, packageConfig.main, baseStringified); ^ Error: Cannot find pack…...

音乐自由之路:Unlock-Music技术突破实战指南

音乐自由之路&#xff1a;Unlock-Music技术突破实战指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…...

C++的std--allocator_traits分配器特性与自定义内存管理的适配

C标准库中的内存管理一直是个既基础又复杂的主题。std::allocator_traits作为C11引入的分配器特性模板&#xff0c;为自定义内存管理提供了统一的适配接口&#xff0c;让开发者能在不重写整套分配逻辑的情况下&#xff0c;灵活扩展内存管理策略。无论是实现高性能内存池&#x…...

Vue3 + FFmpeg.wasm 实战:5分钟搞定浏览器端视频格式转换(附完整代码)

Vue3 FFmpeg.wasm&#xff1a;浏览器端视频处理的革命性方案 当现代Web应用越来越依赖多媒体处理能力时&#xff0c;传统依赖后端转码的方案暴露出明显短板&#xff1a;上传耗时、服务器压力大、隐私数据外流风险。而FFmpeg.wasm的出现彻底改变了这一局面——这个基于WebAssem…...

避开深沟槽工艺的“坑”:从DLTS数据到TCAD仿真的硅光电二极管陷阱态优化实战

硅光电二极管陷阱态优化的工程实践&#xff1a;从DLTS表征到TCAD仿真 在半导体制造领域&#xff0c;深沟槽隔离&#xff08;DTI&#xff09;工艺虽然能有效解决器件间的串扰问题&#xff0c;但其引入的界面陷阱态却成为光电二极管性能提升的"隐形杀手"。工艺工程师们…...

量子密钥分发系统的工程实践(四):基于FPGA的后处理核心模块剖析

1. FPGA在QKD后处理中的核心作用 量子密钥分发&#xff08;QKD&#xff09;系统的后处理环节就像一位严谨的会计&#xff0c;需要把原始账本&#xff08;量子信号&#xff09;整理成无可争议的最终报表&#xff08;安全密钥&#xff09;。而FPGA在这个过程中的角色&#xff0c;…...

3GPP TS 23.256标准解读:无人机广播远程识别码(Broadcast Remote ID)到底是怎么工作的?

3GPP TS 23.256标准深度解析&#xff1a;无人机广播远程识别码的技术实现与合规路径 当一架无人机在城市上空盘旋时&#xff0c;地面人员如何快速确认它的合法身份&#xff1f;监管机构又该如何在密集的无线电环境中精准捕捉每一架飞行器的信息&#xff1f;这些问题的答案&…...

Clawdbot惊艳效果:Qwen3-32B在医疗问诊摘要与术语标准化输出实测

Clawdbot惊艳效果&#xff1a;Qwen3-32B在医疗问诊摘要与术语标准化输出实测 1. 测试背景与平台介绍 Clawdbot是一个统一的AI代理网关与管理平台&#xff0c;为开发者提供直观的界面来构建、部署和监控自主AI代理。这个平台集成了聊天界面、多模型支持和强大的扩展系统&#…...