关于matlab的imread函数

2024-11-17 05:26:05
推荐回答(2个)
回答(1):

首先你用whos I命令,查看一下变量I的结构。
imread读取了tiff格式的图片之后,得到的是一个M x N x 4的矩阵(M,N是图片大小),这一点和读取JPG等格式的图片不同。
也就是说,可能不是imread读取过程中产生的问题,而是imshow现实过程中出现的问题。

如果你确定是imread过程中产生的问题,你可以help imread,查看一下imread的详细使用方法。
当读取tiff图片时,imread其实是有几个参数的(index,info等),你可以在文档中查看一下,如何设置这几个参数。

此外,如果你不想仔细研究一下imread和imshow对于tiff格式图片的特殊处理方法,也可以考虑先对图片格式进行转换:建议使用ImageMagick中的convert命令,当然你也可以在matlab中使用system等命令进行批量处理。

回答(2):

imread只是一个入口函数。它仅仅是做了一些文件名的处理,从你的文件名中,找到绝对路径,找到图像后缀名,然后调用合适的读取函数。
比如你打开\toolbox\matlab\imagesci\private文件夹会看到很多诸如readjpg.m,readtif.m的文件。这些才是不同格式图片读取的真正函数,但是!这些函数也不是实际功能函数!你打开这些m函数就可以看到里面其实很简单。它们所做的事情和imread差不多。也是调用了一些别的函数。比如readjpg.m里的实际读取函数是rjpg8c rjpg16c 这些。你会发现这些文件也存在于上面所说的这个文件夹中,但是它们的后缀名不是.m,而是.mexw32(.mexw64 for 64bit),这些实际功能函数并不是用matlab编写的,而是用C编写的,它们是经过编译的文件,不是文本文件。matlab只是调用他们而已。
也就是说实际上matlab读取图像也是调用了C语言编写的代码。而且不同格式的图像有不同的代码。imread只不过是个入口函数而已。
这种结构在matlab里非常常见。