项目简介
本项目是基于C语言和SIMD(单指令多数据)技术构建的BMP位图处理工具,借助MMX指令集加速图像处理操作。可实现BMP图像的读取、颜色反转、密集处理等功能,且能通过命令行参数与环境变量灵活控制处理流程。此项目主要用于学习与研究,不建议在生产环境使用。
项目的主要特性和功能
- BMP图像读写:支持BMP格式图像的读写,处理后的图像能保存为新的BMP文件。
- 颜色反转:具备串行和并行(SIMD加速)的颜色反转操作,可快速处理图像像素。
- 密集处理:可设置步长对图像进行密集处理,适用于像素点间隔大的图像处理场景。
- SIMD加速:运用MMX指令集加速图像处理,支持以8像素为一单位的矩阵处理。
- 多线程支持:尝试通过多线程加速SIMD操作,但目前未成功。
- 调试信息:支持打印调试信息,方便开发者了解处理过程细节。
安装使用步骤
环境要求
- 支持C11标准的编译器(如GCC、Clang)。
- CMake 3.0及以上版本。
- 支持小端字节序的机器。
- 支持MMX和SSE指令集的CPU。
编译步骤
- 复制或下载项目源码。
- 在项目根目录下创建构建目录并进入:
bash mkdir build cd build
- 使用CMake配置项目:
bash cmake ..
- 编译项目:
bash make -j4
- 编译完成后,可执行文件
bitmaprevcolorsimd
将生成在build
目录下。
使用示例
- 基本使用:
bash ./bitmaprevcolorsimd input.bmp output.bmp
- 颜色反转:
bash INV=1 ./bitmaprevcolorsimd input.bmp output.bmp
- SIMD加速反转:
bash FASTINV=1 ./bitmaprevcolorsimd input.bmp output.bmp
- 密集处理:
bash DENSE=2,2 ./bitmaprevcolorsimd input.bmp output.bmp
- 调试信息:
bash DBG=1 ./bitmaprevcolorsimd input.bmp output.bmp
注意事项
- 项目仅支持小端字节序的机器,ARM等大端字节序的机器可能无法正常编译或运行。
- 多线程支持目前尚未成功,使用
THR=1
可能会导致程序崩溃。 - 项目代码主要用于学习和研究,不建议在生产环境中使用。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】