Matlab 如何实现 BMP读取
2个回答
展开全部
MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计算平台,它几乎能够满足所有的计算需求。自MATLAB4.0问世以来,MATLAB语言就一直受到工程应用的各个领域的学者和工程师们的关注。2001年Mathworks公司又推出了强大的MATLAB升级版本MATLAB6.0,使其在符号运算和图形处理功能上得到了进一步完善。除此之外,新版本的MATLAB还增强了它的各种应用工具箱,使MATLAB的应用面越来越广,功能也越来越强大。因此MATLAB已成为最为普遍的计算工具之一。
MATLAB软件具有很强的开放性和适用性。在保持内核不便的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox)。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。此外,MATLAB还支持用户用自己编写的M文件(MATLAB的程序文件)组成自己的工具箱,极大的方便了用户的使用和维护。本文想就MATLAB中提供的图像处理工具箱(Image Processing Toolbox)的使用作一些实例方面的介绍。
二、MATLAB数字图像处理 MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。实际上MATLAB中的绝大多数的运算都是通过矩阵这一形式进行的。这一特点也就决定了MATLAB在处理数字图像上的独特优势。理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。二维图像进行均匀采样,就可以得到一幅离散化成M×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。而MATLAB的长处就是处理矩阵运算,因此用MATLAB处理数字图像非常的方便。
MATLAB支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读,写和显示。MATLAB对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。下面用一些实例进行简单说明: 1、图像的读取 MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息(见例1) %例1:图像数据及图像信息的读取 imfinfo e:\matlabwork\tuxiang\Girl.bmp %读取图像信息 [A,M]=imread('e:\matlabwork\tuxiang\Girl.bmp','bmp'); %图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中 imshow(A,M);title('原图像'); M(:,1)=0; %将颜色数据矩阵的一列置零 figure imshow(A,M);title('改变颜色后的图像')
MATLAB软件具有很强的开放性和适用性。在保持内核不便的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox)。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。此外,MATLAB还支持用户用自己编写的M文件(MATLAB的程序文件)组成自己的工具箱,极大的方便了用户的使用和维护。本文想就MATLAB中提供的图像处理工具箱(Image Processing Toolbox)的使用作一些实例方面的介绍。
二、MATLAB数字图像处理 MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。实际上MATLAB中的绝大多数的运算都是通过矩阵这一形式进行的。这一特点也就决定了MATLAB在处理数字图像上的独特优势。理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。二维图像进行均匀采样,就可以得到一幅离散化成M×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。而MATLAB的长处就是处理矩阵运算,因此用MATLAB处理数字图像非常的方便。
MATLAB支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读,写和显示。MATLAB对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。下面用一些实例进行简单说明: 1、图像的读取 MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息(见例1) %例1:图像数据及图像信息的读取 imfinfo e:\matlabwork\tuxiang\Girl.bmp %读取图像信息 [A,M]=imread('e:\matlabwork\tuxiang\Girl.bmp','bmp'); %图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中 imshow(A,M);title('原图像'); M(:,1)=0; %将颜色数据矩阵的一列置零 figure imshow(A,M);title('改变颜色后的图像')
推荐于2016-04-26
展开全部
Matlab读取BMP文件代码,参考如下:
function BMPReader(strPathName)
fFile = fopen(strPathName, 'rb');
[data, count] = fread(fFile);
%offset
nOffset = 0;
for i = 1:4
nOffset = nOffset + bitshift(data(10+i), (i-1)*8);
end
%width
nWidth = 0;
for i = 1:4
nWidth = nWidth + bitshift(data(18+i), (i-1)*8);
end
%height
nHeight = 0;
for i = 1:4
nHeight = nHeight + bitshift(data(22+i), (i-1)*8);
end
%bit count
nBitCount = data(29) + bitshift(data(30), 8);
%bmp格式存储是从图片的下到上
img = zeros(nHeight, nWidth);
img = reshape(data(nOffset+1:end), nWidth, nHeight);
img = flipud(img'); %先转置,然后上下交换
imshow(img, [0, 255]);
%close file
fclose(fFile);
function BMPReader(strPathName)
fFile = fopen(strPathName, 'rb');
[data, count] = fread(fFile);
%offset
nOffset = 0;
for i = 1:4
nOffset = nOffset + bitshift(data(10+i), (i-1)*8);
end
%width
nWidth = 0;
for i = 1:4
nWidth = nWidth + bitshift(data(18+i), (i-1)*8);
end
%height
nHeight = 0;
for i = 1:4
nHeight = nHeight + bitshift(data(22+i), (i-1)*8);
end
%bit count
nBitCount = data(29) + bitshift(data(30), 8);
%bmp格式存储是从图片的下到上
img = zeros(nHeight, nWidth);
img = reshape(data(nOffset+1:end), nWidth, nHeight);
img = flipud(img'); %先转置,然后上下交换
imshow(img, [0, 255]);
%close file
fclose(fFile);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询