• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab 中如何识别图片文件格式的

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MATLAB中imread函数的解析

在MATLAB中imread函数能够读取各种常见格式图像中的数据, 返回图像的像素值.

在MATLAB中注册的格式主要包括下面的:

 

MATLAB中有一个imformats函数, 这个函数可以获得以上注册图像的一些信息: 主要包括下面的列举几个常见格式的信息:

 

 

BMP

GIF

ICO

PNG

TIF

 

 

 

 

 

 

JPEG

JPEG2000

JPEG2000

JPEG2000

 

 

 

 

 



 

 

图像格式判断

图像信息获取

图像内容的读取

将数据写成某种格式的图像

下图是上图对应图像格式判断的方法, 主要是对于那些没有扩展名的图像进行判断, 看它是否属于matalb所支持的图像格式.

   

 

 

 

 

 

 

在函数imread中主要是先判断是否给出了图像格式, 如果给出了图像格式, 那么就按这种格式去读取图像, 如果没有给出, 根据文件名去判读, 看有没有扩展名, 看扩展名是否给出, 给出的格式是否在MATLAB的注册图像格式列表中.

如果无法得到图像的格式, 那么就需要循环判断当前的图像是否是MATLAB支持的某一种格式. 判断时候就是执行每种格式对应的"isbmp"类似的函数来进行判断.

 

下面列举几个常见格式的图像文件的识别方法:

 

BMP

GIF

 


 

可以看到BMP文件的前两个字符是\'BM\',这表示该文件是一个BMP格式的文件, 如果没有\'BM\', 表示这个不是BMP, 是其他格式的文件. 我曾经将BMP文件的前两个字符\'BM\'去掉, 结果是该图片文件就无法显示了.

 

可以看到GIF文件的前3个字符是\'GIF\'

 

 


 

PNG

ICO

PNG图像的前4个字符的ASCII值为:137, P,N,G

这个图像格式的判断和之前的不一样, 这个类型是\'uint16\' 是16位(2个字节)无符号整数,如下图所示

读取十六进制数和机器架构有关, 我们是X86的机器, 所以这儿是从低位开始存储:对于16位表示的数字\'1\', 应该是\'0001\', 但是低位要在前,高位在后, 所以为\'0100\'

JPEG

 

JPEG格式图像的前两个字符的ASCII是:255和216


TIF

可以看到TIF包括多种格式的起始码, 下面是其中一种格式

JPEG2000



可以看到jpeg2000有两种形式

 

在MATLAB中具体要读取某种格式的图像时都有对应的读取函数, 函数查看里边的m文件我们可以发现, 最终要进行读写的函数都是.mex文件, 这说明这些都是一些二进制的文件, 这样便于读取的快速进行. 因为其实每一种格式的图片都是进行过压缩的, 所以这些函数其实是进行了一些解压缩操作的.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于delphi PAServer 远程调试DLL文件发布时间:2022-07-18
下一篇:
Delphi中Sender对象的知识发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap