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

matlab中imread读入图像的原理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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,:);
%得到的数据就同源文件用二进制查看方式一样了。

鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Rust问答之从HelloWorld中可以学到什么发布时间:2022-07-18
下一篇:
Cargo, Rust’s Package Manager发布时间: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