matlab中imread读入图像的原理


imread的使用方法是:
I=imread('C:\XXXX\XXXX.jpg');

I = imread('E:\2012\The standard image\Lena.bmp');
I1 = imread('E:\\2012\\The standard image\\Lena.bmp');
I3 = imread('E:\2012\数字图像处理\数字图像处理标准测试图\Lena.bmp');

注释:也就是说Matlab读取文件没有类似于C的那种必须有"\\"或者必须用英文字符。



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

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



不管是什么语言,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只不过是个入口函数而已。

具体例子:
使用Imread读取Lena.bmp图像,
I= imread('Lena.bmp');
format hex;
I(512,:);
%得到的数据就同源文件用二进制查看方式一样了。
优质内容筛选与推荐>>
1、图的数据结构和基础算法c++
2、小故事
3、数论问题
4、 2007中国软件技术大会将于12月8号召开!
5、[导入][转贴] 邓小平的预言


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号