matlab 中如何识别图片文件格式的
MATLAB中imread函数的解析
在MATLAB中imread函数能够读取各种常见格式图像中的数据, 返回图像的像素值.
在MATLAB中注册的格式主要包括下面的:
BMP | GIF | ICO | PNG | TIF |
|
|
| ||
JPEG | JPEG2000 | JPEG2000 | JPEG2000 | |
|
|
图像格式判断 | 图像信息获取 | 图像内容的读取 | 将数据写成某种格式的图像 |
下图是上图对应图像格式判断的方法, 主要是对于那些没有扩展名的图像进行判断, 看它是否属于matalb所支持的图像格式. | |||
|
|
在函数imread中主要是先判断是否给出了图像格式, 如果给出了图像格式, 那么就按这种格式去读取图像, 如果没有给出, 根据文件名去判读, 看有没有扩展名, 看扩展名是否给出, 给出的格式是否在MATLAB的注册图像格式列表中.
如果无法得到图像的格式, 那么就需要循环判断当前的图像是否是MATLAB支持的某一种格式. 判断时候就是执行每种格式对应的"isbmp"类似的函数来进行判断.
下面列举几个常见格式的图像文件的识别方法:
BMP | GIF |
可以看到BMP文件的前两个字符是'BM',这表示该文件是一个BMP格式的文件, 如果没有'BM', 表示这个不是BMP, 是其他格式的文件. 我曾经将BMP文件的前两个字符'BM'去掉, 结果是该图片文件就无法显示了.
|
|
PNG | ICO |
JPEG | |
TIF | |
JPEG2000 | |
可以看到jpeg2000有两种形式 |
在MATLAB中具体要读取某种格式的图像时都有对应的读取函数, 函数查看里边的m文件我们可以发现, 最终要进行读写的函数都是.mex文件, 这说明这些都是一些二进制的文件, 这样便于读取的快速进行. 因为其实每一种格式的图片都是进行过压缩的, 所以这些函数其实是进行了一些解压缩操作的.