matlab中imread读入图像的原理是什么? 请帮忙一些学术的语言表达一下。。。。

如题所述

这个问题很复杂的。不管是什么语言,C也好,matlab也好,它要读取一个文件的信息都必须按照文件数据的格式来读取,也就是说,matlab读取图像的方法和C语言是一样的。matlab的imread很强大,一个命令可以读取各种类型的图像。但是imread并不是一个实际功能函数。不同的图像格式有不同的编码方式,因此有不同的读取方式。实际上,为每种不同格式的图像编写各自的读取函数是适当的,实际中也是这么做的。
matlab就是这样的,imread只是一个入口函数。它仅仅是做了一些文件名的处理,从你的文件名中,找到绝对路径,找到图像后缀名,然后调用合适的读取函数。比如你打开\toolbox\matlab\imagesci\private文件夹会看到很多诸如readjpg.m,readtif.m的文件。这些才是不同格式图片读取的真正函数,但是!这些函数也不是实际功能函数!你打开这些m函数就可以看到里面其实很简单。它们所做的事情和imread差不多。也是调用了一些别的函数。比如readjpg.m里的实际读取函数是rjpg8c rjpg16c 这些。你会发现这些文件也存在于上面所说的这个文件夹中,但是它们的后缀名不是.m,而是.mex(.mex64 for 64bit),这些实际功能函数并不是用matlab编写的,而是用C编写的,它们是经过编译的文件,不是文本文件。matlab只是调用他们而已。
也就是说实际上matlab读取图像也是调用了C语言编写的代码。而且不同格式的图像有不同的代码。imread只不过是个入口函数而已。
这种结构在matlab里非常非常非常常见。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-09
imread的使用方法是:
I=imread('C:\XXXX\XXXX.jpg');

load 是读取matalab本身附带的索引图(具体路径是C:\MATLAB2009\toolbox\wavelet\wavedemo);而imread是读取你自己的图片(也就是你电脑上的图);问题在于你处理的图片是真彩图(256*256*3)还是伪彩图(256*256);一般我们电脑上的图片都是真彩图,而索引图是伪彩图,所以如果使用imread的话,需要把图片格式转换。

其中转换代码有:
gray2ind 将灰度图像转换成索引图像
grayslice 通过设定阈值将灰度图像转换成索引色图像
im2bw 通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图
ind2gray 将索引色图像转换成灰度图像
ind2rgb 将索引色图像转换成真彩色图像
mat2gray 将一个数据矩阵转换成一副灰度图
rgb2gray 将一副真彩色图像转换成灰度图像;
rgb2ind 将真彩色图像转换成索引色图像追问

我还想知道的就是我处理的是真彩图像的话,读入图像的话是将它化成一个矩阵的格式的话。这个过程是如何实现的。就是远离,不是matlab语言。

本回答被提问者采纳