建设网站的工作步骤,个人网站可以做营销吗,亚洲电视全球运营中心,别人网站 自己的二级域名前言#xff1a;
#x1f60a;#x1f60a;#x1f60a;欢迎来到本博客#x1f60a;#x1f60a;#x1f60a;
#x1f31f;#x1f31f;#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义#xff0c;适用于平时学习、工作快…前言
欢迎来到本博客 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义适用于平时学习、工作快速查询等随时更新。 具体食用方式可以点击本专栏【OpenCV快速查找(更新中)】–搜索你要查询的算子名称或相关知识点或者通过这篇博客通俗易懂OpenCV(C版)详细教程——OpenCV函数快速查找(不断更新中)]查阅你想知道的知识即可食用。
支持如果觉得博主的文章还不错或者您用得到的话可以悄悄关注一下博主哈如果三连收藏支持就更好啦这就是给予我最大的支持 文章目录学习目标一、概念及原理1.1 相关概念及原理二、 代码实现三、 总结学习目标 熟悉自适应直方图均衡化概念及原理 C实现自适应直方图均衡化案例 上一节介绍了更为方便的方法来自动调节图像对比度——全局直方图均衡化但是原图中比较亮的区域经过全局直方图均衡化处理后会出现了失真的情况而且出现了明显的噪声。该如何处理呢
一、概念及原理
1.1 相关概念及原理 关于自适应直方图均衡化步骤如下 首先将图像划分为不重叠的区域块然后对每一个块分别进行直方图均衡化。在没有噪声影响的情况下每一个小区域的灰度直方图会被限制在一个小的灰度级范围内但是如果有噪声每一个分割的区域块执行直方图均衡化后噪声会被放大。最后为了避免出现噪声这种情况利用“限制对比度(Contrast Limiting)”的方式如果直方图的bin超过了提前预设好的“限制对比度”那么会被裁减然后将裁剪的部分均匀分布到其他的bin这样就重构了直方图。 ———————————————— 小知识灰度与彩色直方图bin的含义 1、计算颜色直方图时横坐标是颜色空间纵坐标是该颜色的像素点的数量。 2、对于RGB而言每个通道都有0到255个灰度集即一共256个。如果采用bins1的思路则有 256 x 256 x 256 个横坐标并且横坐标对应的纵坐标的值也比较少一个图中像素值相同的也不多 3、为解决这种问题采用了合并的思想也就出现了bin。计算颜色直方图需要将颜色空间划分为若干个小的颜色区间。对于每个颜色通道R,G,B每32个划分到一个bin里面(具体一个bin中的区间为多少可以视情况而定)。排列组合后有8 x 8 x 8 一共有512 bin 也就是直方图的横坐标共512个刻度。 R0到255 划分为 8个binG0到255 划分为 8个binB0到255 划分为 8个bin举个例子假设一个像素的RGB3个通道的取值分别为2,5,4那么在bins下的坐标就应该为(1,1,1)。因为2相对于R通道来说属于第一个bins后面的同理。如下图所示假设设置“限制对比度”为50第3个bin所对应的像素个数大于50然后将多出的将会均匀分布到每一个bin重构后的直方图如图(右)所示接下来利用重构后的直方图进行均衡化操作。 可以看到此时的直方图又会整体上升了一个高度但也有部分bin会超过我们设置的上限(如地5个bin)。当然在实现的时候有很多解决方法可以多重复几次裁剪过程使得上升的部分变得微不足道也可以用另一种常用的方法 示例 假设图中裁剪值为ClipLimit50。 (1) 求出直方图中高于该值的部分的和TotalNum (图中只有一个bin超过ClipLimit假设为82即82-5032) (2) 假设将TotalNum均分给所有灰度级直方图整体上升的高度LTotalNum/N即32/(256/16)2 (3) 同时以upper ClipLimit-L为界限对直方图进行如下处理 1) 若幅值高于ClipLimit直接置为ClipLimit即图中第5个bin 2) 若幅值处于Upper和ClipLimit之间将其填补至ClipLimit 3) 若幅值低于Upper直接填补L个像素点 经过上述操作用来填补的像素点个数通常会略小于TotalNum还有一些剩余的像素点没分出去。可以再把这些点均匀地分给那些目前幅值仍然小于ClipLimit的灰度值。 二、 代码实现 关于OpenCV实现的限制对比度的自适应直方图均衡化函数其实在OpenCV中并没有提及相关函数提供了函数createCLAHE()来构建指向CLAHE对象的指针其中默认设置“限制对比度(clipLimit(40.0))块的大小为8×8。
#include iostream
#include opencv2/opencv.hpp
# include opencv2/core/core.hpp
#includeopencv2/highgui/highgui.hpp
using namespace std;
using namespace cv ;int main() {Mat src imread(D:/VSCodeFile/0penCV_CSDN/image/img3.jpg);//Mat src;if (src.empty() {cout“the image is empty! 《 endl;//全局直方图均衡化Mat gray;cvtColor(src, gray, COLOR_BGR2GRAY);Mat dst;equalizeHist(gray, dst);//限制对比度的自适应直方图均衡化//构建CLAHE 对象PtrCLAHE clahe createCLAHE(2.0, Size(8, 8));Mat dst1;// 限制对比度的自适应直方图均衡化clahe-apply(gray, dst1);//图片显示imshow(原图, src);imshow(直方图均衡化演示, dst);imshow(对比度增强, dst1);waitKey (0) ;return 0;
} 结果显示了对原图进行全局直方图均衡化(HE)和限制对比度自适应直方图均衡化(CLAHE)的效果仔细观察会发现原图中比较亮的区域经过HE处理后出现了失真的情况(两个人体已经模糊)而且出现了明显的噪声而CLAHE避免了这两种情况。 对比度增强只是图像增强方法中的一种手段目前提到的对比度拉伸的方法受图像噪声的影响会很明显在下一章内容开始介绍去除噪声的方法去噪之后再使用对比度增强技术效果会更好。 三、 总结 最后长话短说大家看完就好好动手实践一下切记不能三分钟热度、三天打鱼两天晒网。OpenCV是学习图像处理理论知识比较好的一个途径大家也可以自己尝试写写博客来记录大家平时学习的进度可以和网上众多学者一起交流、探讨有什么问题希望大家可以积极评论交流我也会及时更新来督促自己学习进度。希望大家觉得不错的可以点赞、关注、收藏。 今天的文章就到这里啦~ 喜欢的话点赞、收藏⭐️、关注哦 ~