C中的二进制图像类型

时间:2013-08-12 23:32:43

标签: c image-processing binary

如果我想在C中创建和处理二进制图像,应该为图像像素设置什么数据类型?由于二进制图像像素只有两个值,我假设我只需要每个像素一个位,因此我必须使用逐位C函数,这是在C中进行二进制图像处理的正确(最有效)方法吗?

如果是这种情况,我该如何为图像分配空间?如果我没有误会,malloc仅以字节为单位分配空间。

为了澄清:我有一个32位浮点图像(已知大小),我应用一个阈值,并希望将阈值结果保存为二进制,以便我可以标记单独的组件。

1 个答案:

答案 0 :(得分:2)

每个像素使用一位是最节省内存但效率最低的,因为访问像素需要按位操作。如果你想这样做,你必须malloc((numPixels + 7)/8),即将分配大小向上舍入到最近的字节。

将图像存储为char s可能是内存和空间考虑的更好平衡。例如,这是OpenCV中阈值化图像的内部表示。