24位bmp彩色图的直方图均衡化

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

关于直方图均衡化,教材大都讲解的是8bit灰度图的直方图均衡化,什么是直方图均衡化,我没有完全理解,以后若能有通俗易懂的理解,我会贴上来,我的大概理解是:

1、累计函数即概率密度函数面积的相等导致的映射函数。

2、因为上述完成的映射后灰度的变化范围只是在[0,N],N为灰度图有效像素数目,所以得进行线性拉伸255/N。

具体代码:

void RmwHistogramEqualize(BYTE *pimg,int width,int height)
{//直方图均衡化
	BYTE *pcur,*pend=pimg+width*height;
	unsigned int hist[256];
	int LUT[256],i,sum;
	memset(hist,0,sizeof(int)*256);
//	memset(LUT,0,sizeof(int)*256);
	for(pcur=pimg;pcur<pend;)//这步其实也是直方图求解
		hist[*(pcur++)]++;
	for(sum=hist[0],LUT[0]=0,i=0;i<256;i++)
	{
		sum=sum+hist[i];
		LUT[i]=255*sum/(width*height);
	}
	for(pcur=pimg;pcur<pend;)
		*(pcur++)=LUT[*pcur];
}
这是我上课的老师写的,他是图像处理领域的大牛级人物。

所以8bit灰度图的直方图均衡化利用这几行代码就能完成,简单。一下是效果图:


这两张,分别是均衡化前后的对比,可以看出,确实直方图均衡化以后,图片的对比度更加大,即人物更清晰了。

今天要讨论的是24位彩色bmp图片的均衡化,首先看一下效果图:


这辆图片,依次是均衡化前和均衡化以后的、

具体的操作方法,其实很简单,就是讲RGB分布放入一个数组,对R数组、G数组和R数组分别均衡化,然后在一次写入图片即可。对于,这种方法的正确性,我没去证实,只是看了一篇档次比较低的文献后,今晚进行的实验,从实验效果来看,处理过的图片的前景确实变淡了,人物也更加突出了。Good Luck!

#include"fun.h"
#include<iostream.h>
void main()
{
	BYTE *pimg,*p1,*p2,*p3;
	int width,height;
	pimg=RmwReadImg24("lena.bmp",&width,&height);//将图片像素数据读出来的函数
	p1=new BYTE[width*height];
	p2=new BYTE[width*height];
	p3=new BYTE[width*height];
	BYTE *pp1=p1;
	BYTE *pp2=p2;
	BYTE *pp3=p3;
	for(int i=0;i<width*height*3;i++)//分布将RGB放入对应的数组
		if(i%3==0)
			*(pp1++)=*(pimg+i);
		else if(i%3==1)
			*(pp2++)=*(pimg+i);
			else
			*(pp3++)=*(pimg+i);
	RmwHistogramEqualize(p1,width,height);//8bit灰度图片的均衡化操作
	RmwHistogramEqualize(p2,width,height);
	RmwHistogramEqualize(p3,width,height);
//	RmwWriteImage(p1,width,height,"p1.bmp");
//	RmwWriteImage(p2,width,height,"p2.bmp");
//	RmwWriteImage(p3,width,height,"p3.bmp");
	int j=0;
	for(j=0;j<width*height*3;j++)//将RGB三个均衡化以后的数组在拼在一起
		if(j%3==0)
			*(pimg+j)=*(p1++);
		else if(j%3==1)
			*(pimg+j)=*(p2++);
		else
			*(pimg+j)=*(p3++);
		
	RmwWriteImage24(pimg,width,height,"lenaEqu.bmp");//将像素数据写入图片文件函数
}


遥感图像处理必看:TIF格式16转8的正确姿势(附Python代码) 本文深入解析了遥感图像处理中16TIF格式图像在普通软件中显示异常(如全黑或伪彩色)的根本原因,即深度差异导致的显示映射错配。文章提供了完整的Python实战代码,详细讲解了如何通过线性拉伸和直方图均衡化等方法,将16TIF图像正确转换为8用于显示,并强调了保留原始数据用于科学分析的重要性。 阅读详情

相关推荐

作业一:彩色图像的直方图均衡化.zip

问题1:提取RGB三个通道图像,计算其平均直方图结果,然后再进行均衡化; 问题2:RGB空间转为HSI空间图像,对I(亮度,Intensity)通道进行直方图均衡化,再转为RGB图像

位图直方图均衡化直方图的绘制

我处理的是24的真彩色图,所以会先将非灰度的24位图变换为灰度的24位图,然后进行。在直方图绘制的时候用到了从父窗口获得成员数据或调用父窗口中的函数。这部分也是我参考网络上的程序写的,而建立非模态对话框也是。 获得父对话框窗口中的成员变量的值或调用父窗口中的函数的代码:CWnd* hParent=GetParent(); CDIPDlg* dlg=(CDIPDlg*)hParent;

彭军的专栏 1376

数字图像处理实验(1)--彩色图直方图均衡化

编程实现彩色图像的直方图均衡化处理。要求给出原始图像直方图均衡化图像及其直方图直方图均衡化时所用的灰度级变换曲线图。

opencv_24直方图均衡化

####一. 直方图 1.直方图显示图像在灰度范围内(0-255),每个像素在在一个灰度值出现的频率。 ####二.直方图均衡化直方图变换为均匀分布的形式 .直方图均衡化可以提高对比度。拉伸图像灰度值范围。突出小的细节。 通过remap 将图像像素从图像映射到直方图序列中,再从原图直方图映射到均衡化直方图,最后从均衡化直方图映射到图像上,得到增强对比度的图像直方图均衡化没有改变图像...

weixin_41405284的博客 268

BMP灰度图像直方图均衡化(C语言实现)

原始图像为一张彩色图像,所以第一步是要将其转变为灰度图。具体转变原理这里不详述,总之是要得到这一个像素的亮度a,再将a赋值给RGB。本文使用的BMP图像24的非压缩格式,24分别记录了RGB值,想要得到这个格式的图像,可以通过画图来另存为。这一步中,通过A矩阵统计灰度值,再进行均衡化。处理后原图,灰度图和直方图均衡的灰度图分别为。

purple_prince的博客 817

24彩图直方图均衡化处理_opengl

#include<cstdio> #include<cassert> #include<cstring> #include<math.h> #include<time.h> #include<Windows.h> #include<GL/gl.h> #include<GL/glu.h> #includ...

MYIHS 1910

数字图像处理学习笔记(1.3)---位图的读写、几何变换、傅里叶变换、直方图均衡

图像直方图均衡 #include"bmp.h" #include #include #include #include int* m_histArray; void Bitmap::releasedHist() { if (m_histArray != NULL) delete[] m_histArray; } //说明:灰度图像统计直方图,m_histArray中存放了当前图像的统

corfox_liu的专栏 1153

直方图均衡化

void GrayScaleProcess(unsigned char* pBuf, int width, int height) { for (int i=0; i<height; i++) { for (int j=0; j<width;j=j+1) { unsigned ...

weixin_33937499的博客 77

图像增强 亮度恢复 亮度自适应增强 低亮度调整 *4【C++】

题目:分析图 3 所示的图像存在什么问题,请用 C 语言编程设计一种图像处理方法解决 该问题,给出算法的关键代码和实验结果。(20 分)该图像是一张彩色图像,但是人眼观察整体较暗,其原因是因为拍摄成像时光照不足,所以需要通过图像增强手段进行光照补足。

Jing_HJY的博客 1636

几种常见的图像处理的方法

本章所涉及的方法有:灰度化彩色图像,将图像转换为ASNII码文件,直方图均衡化,伽马校正,哈尔小波变换。 0.知识储备 这里我们处理的是bmp格式的图像bmp格式的文件有3个文件头,第一个文件头大小为14个字节,主要是对整个文件的信息的存储。 typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD

smells2的专栏 1万+

24bitBMP图像直方图显示

最基础的数字图像的c++代码显示一24bit BMP图像直方图

数字图像处理(包括824直方图,图片保存,画十字和对角线等)

数字图像处理,内涵10个文件夹,内容包括824BMP图片的另存为和部分另存为,824BMP图片直方图,824BMP图片直方图另存为,画十字和对角线。

彩色图直方图均衡化C语言代码

linux下结合opencv1.0使用,对于开发板摄像头采集的视频进行优化处理,解决视频太暗或太亮的弊端

Visual C++实现数字图像处理核心算法:从BMP解析到性能优化

数字图像处理是计算机视觉与图形学的基石,其核心在于对像素矩阵进行数学运算与逻辑操作,以实现增强、滤波、分割等目标。理解其底层原理,如卷积、直方图均衡化与形态学操作,对于掌握高级视觉任务至关重要。在工程实践中,C++因其对内存与计算资源的精细控制,常被用于实现高性能图像处理算法。Visual C++作为Windows平台的主流开发环境,结合其原生API与编译器优化,能够充分发挥硬件性能,尤其适合需要直接操作图像字节、实现底层算法的场景。本文以Visual C++为工具,从BMP文件格式解析入手,逐步实现灰度化

383

mfc画图程序源代码_(初心者向け)Image Processing 图像处理程序设计

一. 程序概况程序名称:Xin's Image Processing现版本 : .ver 1.72设计环境:WIN32程序功能:完成基本的图像处理基本功能实现设计者 :ZwqXin完成用时:数不清的日夜经历版本: .ver 1.0 完成程序构架的设计,主窗口界面布局的设计,完成BMP文件操作类OperateBMP,实现8BIT, 16BIT, 24BIT, 32BIT图片的读入,显示与保存...

weixin_39940714的博客 808

数字图像处理学习笔记(1.3)---位图的读写、几何变换、傅里叶变换、直方图均衡...

图像直方图均衡 #include"bmp.h" #include<cmath> #include<cstring> #include<cstdio> #include<iostream> int* m_histArray; void Bitmap::releasedHist() { if (m_histArray != NULL) ...

weixin_33906657的博客 153

C++与MFC实现图像直方图:从算法原理到Windows桌面应用开发

图像直方图是数字图像处理中的基础统计工具,用于分析图像的像素强度分布,是理解图像对比度、亮度等特性的关键。其原理是通过遍历图像像素,统计每个灰度级出现的频率,形成直观的分布图表。掌握直方图计算不仅有助于图像分析,更是深入学习**内存操作**和**性能优化**的实践入口。在工程层面,将核心算法与用户界面结合,能锻炼完整的桌面应用开发能力。本文以**C++**和**MFC**框架为例,详细拆解如何在Windows平台构建一个集图像加载、直方图统计与可视化于一体的应用程序,涵盖GDI+绘图、文档/视图架构及常见问

weixin_30600197的博客 361

matlab图像取反_MATLAB图像处理例子

前面曾经就介绍过图像处理的一些知识了,这里就MATLAB来介绍一些图像处理的案例。今天算是填一个坑。图像都在https://gitee.com/lcl1026504480/MATLAB-imgprocess/tree/master/im/%E5%AE%9E%E9%AA%8C%E5%9B%BE%E5%83%8F/%E5%AE%9E%E9%AA%8C%E5%9B%BE%E5%83%8F里面。图像处理基...

weixin_30662937的博客 4011

图像处理matlab

2016年10月20日 来上师大读研39天,生活确定下来,我现在的研究方向是机器视觉方面,有图像方面的常识需要来学习。我边学习《数字图像处理与机器视觉》张铮,徐超,人民邮电大学出版社。数字图像的分类根据特性分为: - 位图 通常用数字阵列来表示,常见的格式有BMP,JPG,GIF - 矢量图 是由矢量数据库来表示,常见的

DavidHan008 4377
上一篇: C++ 文件操作笔记
下一篇: C++指针的一些小实践
funouc
博客等级 码龄15年 6粉丝 11原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值