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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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里非常非常非常常见。
参考技术A 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语言。

本回答被提问者采纳

彩色图像转变为灰度图像的matlab的程序代码是啥?

参考技术A

    MidGrayPic = zeros(rows , cols);%用得到的参数创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像  
    MidGrayPic = uint8(MidGrayPic);%将创建的全零矩阵转化为uint8格式,因为用上面的语句创建之后图像是double型的

    RGB=imread('img.bmp','bmp'); %读入彩色图片figure(1),imshow(RGB),title('彩色图');         %显示彩色图片I=rgb2gray(RGB);  %彩色转化成灰度图figure(2),imshow(I),title('灰度图');     %显示灰度图

    不能恢复成彩色图像了,只能根据要求转变成伪彩色图像,你把前期的程序给我,我帮你做。还有把要求说详细点。

以上是关于matlab中imread读入图像的原理是啥? 请帮忙一些学术的语言表达一下。。。。的主要内容,如果未能解决你的问题,请参考以下文章

matlab 关于图像处理的投影法是啥?

matlab图像显示及保存

关于matlab的imread函数

如何对matlab plot生成的fig曲线图像进行去噪,平滑处理。

如何在 MATLAB 中将多个图像读入一个数组?

如何用matlab计算二值化图中白色区域的像素点个数