关于bmp图片的c语言算法读入,BMP图像直方图均衡算法(C语言大作业)
#万丈高楼平地起 #C语言大作业 ##一、学习笔记篇
1.学习MarkDown
MarkDown注重写作本身,而非花俏的界面
编辑器:vscode 插件:Markdown,Markdown Preview
2.bmp文件格式
BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式, 可以分成两类:设备有向量相关位图(DDB)和设备无向量相关位图(DIB)。
1.进制表示
H 表示该数是十六进制,B 表示二进制;O 表示八进制。
2.BMP文件组成
文件头,信息头,调色版,数据文件
这些维基百科一下应该可以明白
只不过需要一些耐心。
值得注意的是BMP文件是16进制文件,你在读入的时候 需要进行二进制的转换
3.c语言读入bmp文件
在读入BMP文件之前,我希望你至少对于指针,结构体以及文件二进制输入输出有了解。
如果你对这个还不了解,那我建议你可以百度了解一下先或者翻一下你的大学教材,因为这才是基础。
如果你看了以上知识了,那么你心中大概就知道该怎么去完成这个作业了。
值得一提的是:
1.fread,fwirte,fopen,fclose是怎么使用的?
2.结构体的内存是这么分配的,它的初始地址是?
3.结构体所占内存是怎么计算的?为什么成员字节数会小于等于结构体字节?
4.怎么解决成员字节数会小于等于结构体字节(字节对齐)这个问题?
5.文件如何进行二进制输入输出?
解答:
1. 自行百度了解
2. 结构体你可以理解为一个数组,它的每个成员地址是和数组一样是连续的,
其实你会发现内存存储永远满足一个连续性,所以函数的内存也是连续的。
这样你就发现实际上读入的时候我直接将信息头和文件头写出一个个结构体
之后从结构体开始位置和BMP文件的对应位置开始,一一复制过去就可以了。
3. 成员字节数会小于等于结构体字节,是因为存在一个字节对齐问题,系统
处理的时候是连续4个字节处理的,因此不是4个的倍数就会补齐,假设一个
结构体成员是3字节的a,4字节的b,补全之后结构体的字节就变成了((3+1)+4)>7
4. 所以如果贸然赋值就会有数据对齐问题,这个时候就要利用#pragma pack()
具体使用方法还请百度
5. 被这个地方卡了一下午,务必注意二进制输入就一定要二进制输出不然后果就是
扭曲的人脸
小小建议:
在处理数据时候,可以下载Hex Editor Neo观察BMP文件数据 和自己的进行比对
看有没有问题
4.图像直方图均衡算法实现
处理完数据之后,就作业的均衡算法就是套公式了,所以建议把PPT仔细看看,有很多提示的
5.总结
写这个之前,先考虑要什么基础知识,先把基础知识巩固之后,再去完成这项作业
不要一上来就想着马上写完。
6.推荐参考资料
最佳参考资料:老师提供的PPT
BMP文件格式:https://www.cnblogs.com/wainiwann/p/7086844.html
图像直方图均衡算法: 老师提供的PPT(最佳)
https://mp.weixin.qq.com/s/Lx6nGILofQN9e5KuWgh7mw(进阶了解)
C语言 fread()与fwrite()函数说明与示例
https://www.cnblogs.com/xudong-bupt/p/3478297.html
关于bmp图片的c语言算法读入,BMP图像直方图均衡算法(C语言大作业)相关推荐
- 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求:亮度保持的夜景图像直方图均衡算法 matlab程序 我是大四学生,最近在做一个论文,头疼死了,不知道这个论文的程序怎么写.这里是matlab论坛 我想 ...
- [matlab数字图像处理4]打开一幅过度曝光图像,拉伸其图像,观察图像变换,对图像直方图均衡算法
%任务:打开一幅过度曝光图像,拉伸其图像,观察图像变换,对图像直方图均衡算法: %本作业使用MATLAB2021A完成 clear; clc; close all f=imread("4.j ...
- matlab图片surf图,用matlab实现SURF图像配准 算法
[实例简介] 一种使用用matlab实现SURF图像配准 算法 [实例截图] [核心代码] 55c5c3ca-3c4f-4857-a0b1-100a10233884 └── surf ├── exam ...
- 【手撕算法】FMM图像修复算法C++实现
FMM算法出自Telea的论文 An Image Inpainting Technique Based on the Fast Marching Method opencv的inpaint函数就是采用 ...
- 深圳大学算法实验总结2020(实验1~6+大作业)
实验代码 + 报告资源: 链接: https://pan.baidu.com/s/1CuuB07rRFh7vGQnGpud_vg 提取码: ccuq [本篇博客旨在帮助更多人少走弯路,欢迎转载.若转载 ...
- c语言编写程序判断图的连通,图论期末大作业编程题(如何判断一个4连通4正则图为无爪、无K4图)...
博士期间估计这可能是唯一一个要编程的作业,搞了半天弄出这个东西,放这里为以后用到的时候查找方便. 说来也是可笑,读博士期间发现大家对上课也都没什么兴趣,老师也是那么回事,都说博士期间学的课程是要有助于 ...
- c语言在bmp图片上写字的函数,在bmp上写字
1.如何在bmp上写字,画画等 2.C++文件读写 3.如何取得桌面.开始菜单等特殊位置路径 4.C++多态的分类 重载多态,强制多态,包含多态,参数多态.普通函数和类的成员函数的重载属于重载多态,还 ...
- 外卖派单模拟系统C语言代码,GitHub - Sndav/SuperDeliver: 外卖派单模拟系统大作业
概要设计书 [TOC] 1.0 编码规范 变量名 变量名使用下划线命名方法 变量定义后,写上该变量的作用及其含义 变量不得使用i,j,k,a,b,c,包括循环变量 循环变了使用iter_i,iter_ ...
- 【某航】A*算法实现十五数码问题--人工智能课程大作业
代码链接:github代码 1.问题要求 15数码问题是在4×4方格盘上,放有15个数码,剩下一个位置为空(方便起见,用0表示空),每一空格其上下左右的数码可移至空格.本问题给定初始位置和目标位置,要 ...
- 图像对比算法有哪些,图像对比算法是什么
图像比对的原理或者算法 原理如下:首先两张图要配准(可以姑且理解为对准),然后做减法就可以得到两张图不同的地方.题主可以先从图像配准开始学习. 关于编程语言和工具:在C/C++下的图像处理库OpenC ...
最新文章
- 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array...
- python 折线图中文乱码_彻底解决 Python画图中文乱码问题--Pyplotz组件
- linux shell加密压缩,linux的shell指令进行压缩或者解压缩
- python用多线程可以快几倍_用了python多进程,我跑程序花费的时间缩短了4倍
- PAID Network宣布已获币安DeFi加速器基金投资
- 解决Vue编译和打包时频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory...
- LaTex 加粗(加黑)的方式
- 好评度很高的通用基础库,代码写的不错!
- C/C++ Bug记录
- mysql test 映射到实体_第80天:Python 操作 MySQL
- 房价增幅或于年底见顶
- idea实现远程调试
- 关于简单的打地鼠游戏开发总结
- This system is not registered with an entitlement server.
- 地表反射率影响因素_全了,高考地理答题要点归纳!
- Flutter 平移动画 — 4种实现方式
- Swagger2 总结
- 最详细的链路层讲解,这一篇就够了
- 定义主函数main()
- 2011年RSA中国大会报名注册正式启动