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

灰度均衡变换之c++实现(qt + 不调包)

1.基本原理

    灰度均衡是以累计分布函数变换为基础的直方图修正法,它可以产生一副灰度级分布概率均匀的图像。也就是说,经过灰度均衡后的图像在没一级灰度上像素点的数量相差不大。公式见下图,n_{x}为灰度值为x的像素点的个数,n为总像素点

2.代码实现(代码是我以前自学图像处理时写的,代码很粗糙没做任何优化,但很好理解

    此代码中“origiin”一般为灰度图片,彩色图片转灰度图片,可参考我的一篇博客:彩色图转灰度图之c++实现(qt + 不调包)

/*灰度均衡函数*/
QImage* MainWindow::GrayEqualize(QImage* origiin)
{QImage* newImage = new QImage(origiin->width(), origiin->height(), QImage::Format_ARGB32);int r, g, b;unsigned char* graydata = origiin->bits();long lTemp;std::vector<int> hist(256);std::vector<int> map(256);for (int i=0;i!=origiin->width();i++){for (int j=0;j!=origiin->height();j++){int index = int(*graydata);hist[index] = hist[index]+1;graydata+=4;}}graydata = NULL;for (int i = 0; i < 256; i++){lTemp = 0;for (int j = 0; j <= i; j++)lTemp += hist[j];map[i] = (int) (lTemp * 255.0f / origiin->width() / origiin->height());}unsigned char* graydata1 = origiin->bits();for(int y = 0; y < newImage->height(); y++){for(int x = 0; x < newImage->width(); x++){int index = int(*graydata1);r = g = b = map[index];graydata1+=4;newImage->setPixel(x, y, qRgb(r, g, b));}}graydata = NULL;return newImage;
}

3.参考资料

    数字图像处理——技术详解与Visual C++实践(左飞等著),写代码与写博客的时间相差两年,至于还参考其他的资料不,我已经忘记了,如若需要,我可以补上去

http://www.lryc.cn/news/117843.html

相关文章:

  • flink1.17 自定义trigger ContinuousEventTimeTrigger
  • AIGC:【LLM(五)】——Faiss:高效的大规模相似度检索库
  • 自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅱ]
  • 桥接模式-java实现
  • Linux systemd管理常用的几个小案例
  • 38、IPv6过渡技术
  • HMMER-序列分析软件介绍
  • 【项目学习1】如何将java对象转化为XML字符串
  • nginx负载均衡
  • 【毕业项目】自主设计HTTP
  • 关于安卓jar包修改并且重新发布
  • Java课题笔记~ AspectJ 对 AOP 的实现(掌握)
  • npm 报错 cb() never called!
  • finally有什么作用以及常用场景
  • Python web实战之Django URL路由详解
  • 10-数据结构-队列(C语言)
  • 面试之快速学习C++11 - 右值 移动构造 std::move
  • vue实现5*5宫格当鼠标滑过选中的正方形背景颜色统一变色
  • 2023-08-09 LeetCode每日一题(整数的各位积和之差)
  • EditPlus连接Linux系统远程操作文件
  • JVM 垃圾回收
  • 编程中的宝藏:二分查找
  • 计算机网络 数据链路层
  • 如何维护自己的电脑
  • 智能优化算法——哈里鹰算法(Matlab实现)
  • 【深度学习】多粒度、多尺度、多源融合和多模态融合的区别
  • 利用SCCM进行横向移动
  • Nginx 负载均衡
  • Java课题笔记~ ServletConfig
  • oracle的异常处理