C#调用OpenCvSharp实现图像的直方图均衡化

news2024/11/23 20:11:49

  本文学习基于OpenCvSharp的直方图均衡化处理方式,并使用SkiaSharp绘制相关图形。直方图均衡化是一种图像处理方法,针对偏亮或偏暗的图像,通过调整图像的像素值来增强图像对比度,详细原理及介绍见参考文献1-4。
  直方图均衡化第一步要将彩色图像转换为灰度图像,调用OpenCvSharp中的Cv2.CvtColor函数转换,主要代码及效果图如下所示:

Mat oriImage = Cv2.ImRead(imagePath);
Mat grayImage = new Mat();
Cv2.CvtColor(oriImage, grayImage, ColorConversionCodes.BGR2GRAY);
picImage.Image = grayImage.ToBitmap();//OpenCvSharp.Extensions的扩展函数支持将Mat数据转换为Winform的Bitmap数据对象,便于在图片控件中显示。

在这里插入图片描述

  针对直方图均衡化,主要通过以下几步处理数据(参考自参考文献1):

序号操作说明
1统计直方图统计像素出现次数
2归一化直方图将每个像素的出现次数除以所有像素的出现次数之和
3累计直方图计算每个像素的累计概率分布情况,详细说明见参考文献5
4均衡直方图计算每个像素的累计概率乘以像素范围,详细说明见参考文献5的示例

  通过直方图均衡化,增强原始图像偏亮或偏暗区域的对比度,提高图片可视化效果,为后续的图像处理奠定基础。OpenCvSharp中提供EqualizeHist函数处理图像的直方图均衡化,调用特别简单如下图所示:

Mat equImage = new Mat();
Cv2.EqualizeHist(grayImage, equImage);
picImage.Image = equImage.ToBitmap();

  最后是运行效果,下图左侧为原始灰度图,右侧为直方图均衡化后的图像,可以看到图像两侧的椅子经过直方图均衡化后更加明显,人物穿的裤子看得也更加清楚。
在这里插入图片描述

参考文献:
[1]https://www.bilibili.com/video/BV1DT421m7S8?p=11&vd_source=db4a1f65c18549c78df3e9d579e59e19
[2]https://blog.csdn.net/xyk2795950571/article/details/134445449
[3]https://blog.csdn.net/crossoverpptx/article/details/128605747
[5]https://blog.csdn.net/qq_46021105/article/details/127738173

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

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

相关文章

计算机组成原理笔记-第1章 计算机系统概论

第一章 计算机系统概论 笔记PDF版本已上传至Github个人仓库:CourseNotes,欢迎fork和star,拥抱开源,一起完善。 该笔记是最初是没打算发网上的,所以很多地方都为了自我阅读方便,我理解了的地方就少有解释&a…

如何恢复 Mac 数据?适用于 Mac 的免费磁盘恢复软件

对于大多数 Mac 电脑用户来说,丢失数据是他们最不想遇到的噩梦之一。然而,无论我们多么小心地使用 Mac,多么有条理地存储重要文件,我们仍然有可能丢失 Mac 上的数据。某些硬件故障更有可能导致您意外丢失文件。除此之外&#xff0…

在WordPress上添加亚马逊联盟链接的三种方法

在互联网快速发展的今天,很多人都希望通过网络来增加收入,而加入亚马逊联盟计划(Amazon Associates)无疑是一个不错的选择。如果你有一个WordPress网站,那么在文章中添加亚马逊联盟链接是个很好的变现方式。今天&#…

IDEA services模块无法启动springboot服务(添加了springboot但是为空白)

https://blog.csdn.net/m0_54042402/article/details/117918995 https://blog.csdn.net/qq_46550964/article/details/122235235 Alt8 显示services模块 发现有springboot启动模块,点一下springboot之后,这个模块就消失了 会自动在.idea文件夹下的work…

Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流

技术背景 VR头显需要更高的分辨率以提供更清晰的视觉体验、满足沉浸感的要求、适应透镜放大效应以及适应更广泛的可视角度,超高分辨率的优势如下: 提供更清晰的视觉体验:VR头显的分辨率直接决定了用户所看到的图像的清晰度。更高的分辨率意…

AI全栈之coze的logo生成

前言 前几日体验了国产的AI-Agents产品coze 它是一种能够自主执行任务、与环境进行交互并根据所获取的信息做出决策和采取行动的软件程序 并且可以自己去创建属于自己的AIBot,还是很有意思的,大家可以去体验体验 在体验过程中,我发现在创…

Zygote进程的理解

Zygote进程是安卓系统的一个重要进程,由init进程创建而来;另外系统里的重要进程(system_server等)都是由zygote进程fork的,所有的app进程也是由zygote进程fork的。 一、C 里的fork函数 fork是Linux里面创建子进程的函…

【Apache Doris】如何实现高并发点查?(原理+实践全析)

【Apache Doris】如何实现高并发点查?(原理实践全析) 一、背景说明二、原理介绍三、环境信息四、Jmeter初始化五、参数预调六、用例准备七、高并发实测八、影响因素九、总结 本文主要分享 Apache Doris 是如何实现高并发点查的,以…

Virtualbox主机和虚拟机之间文件夹共享及双向拷贝

在VirtualBox这样的虚拟化环境中,实现主机与虚拟机之间的文件夹共享与双向文件传输是一个常见的需求。下面,我们将详细讲解如何在VirtualBox中实现这一功能。 一、安装与准备 首先,确保你已经安装了VirtualBox,并在其上成功创建…

图像处理与视觉感知复习--三维重建基础

文章目录 完整的摄像机模型(摄像机内外参数)理解三个参考系齐次坐标系中的投影变换 摄像机标定单视图几何无穷远点、无穷远线、无穷远平面影消点、影消线 三维重建基础与极几何极几何、本质矩阵与基础矩阵 双目立体视觉视差或深度的推导过程 完整的摄像机…

微信小程序毕业设计-餐厅点餐系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

单机小游戏好上架的应用市场有哪些?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

长尾式差分放大电路调零

长尾式放大电路用了两个参数相同的三极管,但实际上并没有完全相同的三极管,所以为了提高差分放大电路的对称性(一边电流增加多少,另一边电流减小多少,即能在电阻Re上产生的压降不变(后面做虚地处理)),在下图中加入可调…

【CT】LeetCode手撕—143. 重排链表

目录 题目1- 思路2- 实现⭐143. 重排链表——题解思路 3- ACM 实现 题目 原题连接:143. 重排链表 1- 思路 模式识别:重排链表 ——> 逆向 ——> ① 找到中间节点 ——> ②逆置 mid.next 链表——> ③遍历 2- 实现 ⭐143. 重排链表——题解…

Vue72-路由传参1

一、需求 点击哪个消息,就展示哪个消息的详情 这是一个三级路由! 给路由组件:detail.vue传递消息数据。 二、代码步骤 2-1、编写路由组件 从$route.query属性里面获取传参 2-2、编写路由规则 2-3、编写路由标签,传参 1、to的字…

做好海外ASO优化的7大核心要素你了解几个?

海外App进行ASO优化时,需要综合考虑多个方面以确保应用在应用商店中获得更高的曝光率和下载量。以下是一些关键的ASO优化步骤,结合参考文章中的相关信息进行详细阐述: 1.关键词优化 调研目标市场的用户行为和检索习惯,挖掘与应用…

让你的 Python 代码更快的小技巧

我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。 今天就让我们一起来看下让 Python 性能更高的 9 个小技巧 python学习资料分享(无偿)…

PXE自动平台 搭建 银河麒麟 UEFI x86_64 ARM64

1. PXE自动化 原理 要实现PXE自动安装需要以下组件: DHCP服务:服务器通过网络启动时自动分配IP地址。TFTP服务:提供服务器启动下载启动引导EFI。HTTP服务:操作系统镜像下载。 各组件工作原理如下[1]: 开PXE后&…

Android-app自动更新总结(已适配9-0)(1)

} //检查版本号,第一次请求(post),,,UpdateAppBean根据服务器返回生成 private void requestAppUpdate(int version, final DataRequestListener listener) { OkGo.post(Const.HOST_URL Const.UPDATEAPP).params(“version”, v…

leetcode 动态规划 (基础版) 下降路径最小和

题目: 题解: 这题和三角型路径和相似,但这题无法在像哪一题一样通过换一个方向逃避下标特判。所以这道题就写一个下标特判的方案。特殊的下标是每一行的第一个元素和最后一个元素,它们由头上的一个元素和左上和右上中的其中一个…