MATLAB实验Matlab在数字图像处理中的应用
基于Matlab的数字图像处理系统设计_毕业论文设计 精品推荐

论文(设计)题目:基于MATLAB的数字图像处理系统设计基于MATLAB的数字图像处理系统设计摘要MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且是图像处理系统的理想开发工具。
笔者阐述了一种基于MATLAB的数字图像处理系统设计,其中包括图像处理领域的大部分算法,运用MATLAB 的图像处理工具箱对算法进行了实现,论述了利用系统进行图像显示、图形表换及图像处理过程,系统支持索引图像、灰度图像、二值图像、RGB 图像等图像类型;支持BMP、GIF、JPEG、TIFF、PNG 等图像文件格式的读,写和显示。
上述功能均是在MA TLAB 语言的基础上,编写代码实现的。
这些功能在日常生活中有很强的应用价值,对于运算量大、过程复杂、速度慢的功能,利用MATLAB 可以既能快速得到数据结果,又能得到比较直观的图示。
关键词:MATLAB 数字图像处理图像处理工具箱图像变换第一章绪论1.1 研究目的及意义图像信息是人类获得外界信息的主要来源,近代科学研究、军事技术、工农业生产、医学、气象及天文学等领域中,人们越来越多地利用图像信息来认识和判断事物,解决实际问题,由此可见图像信息的重要性,数字图像处理技术将会伴随着未来信息领域技术的发展,更加深入到生产和科研活动中,成为人类生产和生活中必不可少的内容。
MATLAB 软件不断吸收各学科领域权威人士所编写的实用程序,经过多年的逐步发展与不断完善,是近几年来在国内外广泛流行的一种可视化科学计算软件。
MATLAB 语言是一种面向科学与工程计算的高级语言,允许用数学形式的语言来编写程序,比Basic、Fortan、C 等高级语言更加接近我们书写计算公式的思维方式,用MATLAB 编写程序犹如在演算纸上排列出公式与求解问题一样。
它编写简单、编程效率高并且通俗易懂。
1.2 国内外研究现状1.2.1 国内研究现状国内在此领域的研究中具有代表性的是清华大学研制的数字图像处理实验开发系统TDB-IDK 和南京东大互联技术有限公司研制的数字图像采集传输与处理实验软件。
数字图像处理实验报告 实验一 图像增强实验

实验一图像增强实验一、实验目标:掌握图像增强的算法。
二、实验目的:1. 了解灰度变换增强和空域滤波增强的Matlab实现方法2. 掌握直方图灰度变换方法3. 掌握噪声模拟和图像滤波函数的使用方法三、实验内容:(1)图像的点操作、邻域操作算法。
(2)图像的直方图处理算法。
四、实验设备:1.PIII以上微机; 2.MATLAB6.5;五、实验步骤:(1)读入图像:用matlab函数实现图像读入(可读入Matlab中的标准测试图像)(原始图像)(2)实现图像点操作运算(如gamma校正,对数校正等)(3)实现图像的邻域处理(实现均值滤波,拉普拉斯滤波)(4)实现直方图均衡处理matlab 源程序clear all;clc;f=imread('girl_noise.jpg');figure,imshow(f),title('原始图像');[m,n]=size(f);f0= im2double(f); % 整型转换为double 类f1=f0;std_i=zeros(1,m-2);%灰线处理for i=2:m-1%灰线处理std_i(i-1)=std(f0(i,:));if(std_i(i-1)<0.1)for j=1:mf0(i,j)=(f0(i-1,j)+f0(i+1,j))/2;endendendfigure,imshow(f0),title('滤除灰线后的图像');fz=f0-f1;[r,c]=find(fz~=0);%寻找灰线噪声的位置f2=f0;change=0;count=0;for i=3:m-2%白线处理for j=1:mif(abs(f0(i,j)-f0(i-1,j))>0.2&&abs(f0(i,j)-f0(i+1,j))>0.2) count=count+1;endif(count>n*0.8)count=0;change=1;break;endendif(change==1)for k=1:mf0(i,k)=(f0(i-1,k)+f0(i+1,k))/2;endchange=0;count=0;endendfigure,imshow(f0),title('滤除白线后的图像');fz1=f2-f0;[r1,c1]=find(fz1~=0); %寻找白线噪声的位置fn = medfilt2(f0); %反射对称填充figure, imshow(fn),title('中值滤波后的图像');f0 = im2double(fn); % 整型转换为double 类g =2*f0- imfilter(f0,w4, 'replicate'); % 增强后的图像figure, imshow(g),title('高提升滤波图像(A=2)');图像处理结果六、结果分析从上面结果可以看出,带状噪声处理部分,已经基本将带状噪声去除。
MATLAB数字图像处理中的指令用法

• • • • • •
imshow(BW)显示一张二值图像BW imshow(X,map)用指定的调色板来显示图像 imshow(RGB)显示一张真彩色图像RGB imshow(...,display_option) imshow(x,y,A,...) imshow filename
• • • •
• • • • •
13.meshgrid
• • • • • • • • • • • • • • 函数功能生成绘制3-D图形所需的网格数据。在计算机中进行绘图操作时, 往 往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图 操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面 内对坐标进行采样得到的坐标对(x, y)。 例如:画一个128*128,截止频率为15的理想滤波器 for u=1:128 for v=1:128 if sqrt((u-64)^2+(v-64)^2)<=15 H(u,v)=1; else H(u,v)=0; end end end imshow(H); [u,v]=freqspace(128,'meshgrid'); figure,mesh(u,v,H)
• matlab中,每个figure都有(而且仅有)一个colormap,翻 译过来就是色图。 • COLORMAP(MAP) 用MAP矩阵映射当前图形的色图。 • COLORMAP('default') 默认的设置是 JET. • MAP = COLORMAP 获得当前色图矩阵. • COLORMAP(AX,...) 应用色图到AX坐标对应的图形,而非当 前图形. • MAP实际上是一个mx3的矩阵,每一行的3个值都为0-1之 间数,分别代表颜色组成的rgb值,[1 0 0] 代表红色,[0 1 0]代表绿色,[0 0 1]代表蓝色。系统自带了一些colormap, 如:winter、autumn等。输入winter,就可以看到它是一 个64x3的矩阵。用户可以自定义自己的colormap,而且不 一定是64维的。
Matlab技术在医学图像处理中的应用案例

Matlab技术在医学图像处理中的应用案例引言医学图像处理是一项关键技术,它在医学领域中得到了广泛的应用。
利用图像处理算法和工具可以提取、分析和可视化医学图像中的信息,为疾病诊断和治疗提供有力的支持。
本文将介绍Matlab技术在医学图像处理中的应用案例,展示出其强大的功能和潜力。
一、医学图像的获取与处理在医学领域,各种各样的图像被用于研究和诊断。
例如,X射线、MRI、CT和超声图像等都可以提供丰富的信息。
然而,这些图像往往需要经过预处理和增强,以减少噪声和改善图像质量。
Matlab提供了一系列强大的图像处理函数和工具箱,方便医学专业人员对图像进行处理。
比如,可以使用imread函数读取图像文件,im2double函数将图像转换为双精度浮点数,imresize函数改变图像大小,imadjust函数进行灰度调整等。
二、医学图像的分割与标记在进行医学图像处理时,经常需要对图像进行分割,即将图像中的目标或感兴趣区域从背景中提取出来。
Matlab提供了多种图像分割算法,如阈值法、区域生长法、边缘检测和分水岭算法等。
这些算法可以应用于不同类型的医学图像,如肿瘤的分割、血管的提取等。
此外,Matlab还可以进行图像标记,以便更好地显示和分析图像中的结构和特征。
三、医学图像的特征提取与分类医学图像的特征提取和分类是医学图像处理中的重要任务之一。
通过提取图像中的形态、纹理、颜色等特征,可以帮助医生识别和定位疾病,从而进行更精确的诊断和治疗。
Matlab提供了多种特征提取算法和数据处理工具,如灰度共生矩阵、小波变换和主成分分析等。
这些方法可以对图像进行高级特征提取和降维处理,为后续的分类和诊断提供支持。
四、医学图像的重建与增强在一些医学应用中,图像重建和增强是必不可少的步骤。
比如,在CT图像中,需要对原始数据进行重建和归一化处理,以产生高质量的图像。
在MRI图像中,可以通过4D重建算法对时间序列数据进行处理,以监测和分析器官的活动。
使用Matlab进行图像增强与图像修复的方法

使用Matlab进行图像增强与图像修复的方法图像增强与图像修复是数字图像处理领域中的重要研究方向之一。
随着数字摄影和图像处理技术的快速发展,越来越多的应用需要对图像进行增强和修复,以提高图像的质量和视觉效果。
在本文中,我们将探讨使用Matlab进行图像增强和图像修复的方法。
一、图像增强方法图像增强是通过对图像进行处理,改善其质量,使其更加清晰、鲜明和易于观察。
下面将介绍几种常用的图像增强方法。
1. 灰度拉伸灰度拉伸是一种简单而有效的图像增强方法,通过拉伸图像的灰度范围,使得图像中的细节更加明确可见。
具体操作是将图像的最低灰度值映射到0,最高灰度值映射到255,中间的灰度值按比例映射到相应的范围。
在Matlab中,我们可以使用imadjust函数实现灰度拉伸。
2. 直方图均衡化直方图均衡化是一种常用的图像增强方法,通过对图像的灰度分布进行调整,使得图像的对比度得到增强。
具体操作是对图像的灰度直方图进行均衡化处理,将图像的灰度级分布均匀化。
在Matlab中,我们可以使用histeq函数实现直方图均衡化。
3. 锐化锐化是一种常用的图像增强方法,通过增强图像的边缘和细节,使得图像更加清晰和立体。
具体操作是对图像进行高通滤波,突出图像中的边缘信息。
在Matlab中,我们可以使用imsharpen函数实现图像锐化。
4. 去噪去噪是一种常用的图像增强方法,通过抑制图像中的噪声,提高图像的质量。
常见的去噪方法包括中值滤波、均值滤波和小波去噪等。
在Matlab中,我们可以使用medfilt2函数实现中值滤波。
二、图像修复方法图像修复是对图像中存在的缺陷或损坏进行补全或恢复的过程,以提高图像的可视化效果。
下面将介绍几种常用的图像修复方法。
1. 图像插值图像插值是一种常用的图像修复方法,通过根据已知的像素值推测缺失的像素值,从而补全图像中的缺失部分。
常见的插值方法包括最近邻插值、双线性插值和双立方插值等。
在Matlab中,我们可以使用interp2函数实现图像插值。
基于matlab的图像对比度增强处理的算法的研究与实现

基于matlab的图像对比度增强处理的算法的研究与实现1. 引言1.1 研究背景图像对比度增强是数字图像处理中的一个重要领域,它能够提高图像的视觉质量,使图像更加清晰、鲜明。
随着现代科技的快速发展,图像在各个领域的应用越来越广泛,因此对图像进行对比度增强处理的需求也越来越迫切。
在数字图像处理领域,图像对比度增强处理是一种经典的技术,通过调整图像的灰度级范围,提高图像的对比度,使图像更加清晰和易于观察。
对比度增强处理可以应用于医学影像、卫星图像、照片修复等领域,有效提升图像质量和信息量。
随着数字图像处理算法的不断发展和完善,基于matlab的图像对比度增强处理算法也得到了广泛研究和应用。
通过matlab编程实现图像对比度增强处理算法,可以快速、高效地对图像进行处理,并进行实验验证和效果分析。
研究基于matlab的图像对比度增强处理算法的研究与实现具有重要的理论意义和实际应用价值。
1.2 研究目的研究目的是探索基于matlab的图像对比度增强处理算法,通过对比不同算法的效果和性能进行分析,进一步提高图像的清晰度和质量。
具体目的包括:1. 深入理解图像对比度增强处理的基本原理,掌握常用的算法和技术;2. 研究基于matlab的图像对比度增强处理算法实现的方法和步骤,探究其在实际应用中的优劣势;3. 通过实验结果与分析,评估不同算法在提升图像对比度方面的效果和效率;4. 对现有算法进行优化与改进,提出更加有效的图像对比度增强处理方法;5.总结研究成果,为今后进一步完善图像处理技术提供参考和借鉴。
通过对图像对比度增强处理算法的研究与实现,旨在提高图像处理的效率和质量,满足不同应用领域对图像处理的需求,促进图像处理技术的发展和应用。
1.3 研究意义对比度增强处理是图像处理领域中一项重要的技术,在实际应用中有着广泛的使用。
通过增强图像的对比度,可以使图像更加清晰、鲜明,提高图像的质量和观感效果。
对比度增强处理在医学影像分析、卫星图像处理、数字摄影等领域都有着重要的应用。
基于MatLab的数字图像清晰化方法

直方图的分布,使得直方图移向暗区,可以看出图像的视觉效
·62·
Computer Era No. 4 2008
基于 Web 的授课质量评价系统的研究与实践
刘利俊 1,吴达胜 2 (1. 杭州广播电视大学网络中心,浙江 杭州 310012;2. 浙江林学院信息工程学院)
g1 和 g2 分别为门限阈值(g1<g2)。当噪声较小时,它对小波
系数的增益较大;当噪声较大时,对小波系数的增益较小。该算
法达到了自适应增强的效果。在 MatLab 中使用自适应阈值增
强方法的代码如下。
[x,ma p]=imre a d‘( 中值滤波后图像.tif’); %读取原图像
x=double (x);
直方图均衡化是较好的直方图修正方法,它生成了自适应 的变换函数,它是以已知图像的直方图为基础的。然而,一旦一 幅图像的变换函数计算完毕,它将不再改动,除非直方图有变 动。直方图均衡化通过扩展输入图像的灰度级到较宽亮度尺度 的范围来实现图像的增强,但这种方法并不总能得到成功的结 果。在 MatLab 中使用如下代码实现直方图匹配增强对比度,相 应的图像与图像直方图示于图 5 及图 6。
指标体系的适应性原则。 系统运行的性能和分布与集中处理。由于整个学校学生
人数众多,同时用户可能会很多,有时也许会多达几千个,因 而系统运行的性能是非常关键的,系统应该具有分布与集中 处理功能。
系统的安全性。为了尽量避免报复现象的产生,系统的安 全保密工作应该规定不同的用户具有不同的操作权限。系统用 户可以分成四个群体:学生、教师、领导、专家。安全性问题主要 考虑以下几点:①学生群体只能对当前任课教师进行评价;② 教师群体只能看到他人(学生、同时、领导、专家)对自己的评价 结果,而看不到具体的评价者情况,以免教师对他人实行报复; 同时教师可以对同行进行评价,这些同行必须是与评价者在同 一 学 院(系)的 ,否 则 代 表 性 不 强 ;③ 领 导 群 体 只 能 对 本 学 院 (系)教师进行评价;④专家群体可以评价学校的全体教师。同 时系统还要能够对一些不负责任的学生进行监督控制,需要设 置专门的超级用户可查看学生对教师的评价细节(包括学生学 号、姓名、班级、评价分数等信息)。
数字图像处理课程设计报告matlab

数字图像处理课程设计报告姓名:学号:班级: .net设计题目:图像处理教师:赵哲老师提交日期: 12月29日一、设计内容:主题:《图像处理》详细说明:对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等),二、涉及知识内容:1、二值化2、各种滤波3、算法等三、设计流程图四、实例分析及截图效果:运行效果截图:第一步:读取原图,并显示close all;clear;clc;% 清楚工作窗口clc 清空变量clear 关闭打开的窗口close allI=imread('1.jpg');% 插入图片1.jpg 赋给Iimshow(I);% 输出图II1=rgb2gray(I);%图片变灰度图figure%新建窗口subplot(321);% 3行2列第一幅图imhist(I1);%输出图片title('原图直方图');%图片名称一,图像处理模糊H=fspecial('motion',40);%% 滤波算子模糊程度40 motion运动q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制q1=rgb2gray(q);imhist(q1);title('模糊图直方图');二,图像处理锐化H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的qq=imfilter(I,H,'replicate');qq1=rgb2gray(qq);imhist(qq1);title('锐化图直方图');三,图像处理浮雕(来源网络)%浮雕图l=imread('1.jpg');f0=rgb2gray(l);%变灰度图f1=imnoise(f0,'speckle',0.01);%高斯噪声加入密度为0.01的高斯乘性噪声 imnoise噪声污染图像函数 speckle斑点f1=im2double(f1);%把图像数据类型转换为双精度浮点类型h3=1/9.*[1 1 1;1 1 1;1 1 1];%采用h3对图像f2进行卷积滤波f4=conv2(f1,h3,'same');%进行sobel滤波h2=fspecial('sobel');g3=filter2(h2,f1,'same');%卷积和多项式相乘 same相同的k=mat2gray(g3);% 实现图像矩阵的归一化操作四,图像处理素描(来源网络)f=imread('1.jpg');[VG,A,PPG] = colorgrad(f);ppg = im2uint8(PPG);ppgf = 255 - ppg;[M,N] = size(ppgf);T=200;ppgf1 = zeros(M,N);for ii = 1:Mfor jj = 1:Nif ppgf(ii,jj)<Tppgf1(ii,jj)=0;elseppgf1(ii,jj)=235/(255-T)*(ppgf(ii,jj)-T);endendendppgf1 = uint8(ppgf1);H=fspecial('unsharp');Motionblur=imfilter(ppgf1,H,'replicate');figure;imshow(ppgf1);调用function [VG, A, PPG] = colorgrad(f, T)if (ndims(f)~=3) || (size(f,3)~=3)error('Input image must be RGB');endsh = fspecial('sobel');sv = sh';Rx = imfilter(double(f(:,:,1)), sh, 'replicate');Ry = imfilter(double(f(:,:,1)), sv, 'replicate');Gx = imfilter(double(f(:,:,2)), sh, 'replicate');Gy = imfilter(double(f(:,:,2)), sv, 'replicate');Bx = imfilter(double(f(:,:,3)), sh, 'replicate');By = imfilter(double(f(:,:,3)), sv, 'replicate');gxx = Rx.^2 + Gx.^2 + Bx.^2;gyy = Ry.^2 + Gy.^2 + By.^2;gxy = Rx.*Ry + Gx.*Gy + Bx.*By;A = 0.5*(atan(2*gxy./(gxx-gyy+eps)));G1 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A));A = A + pi/2;G2 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A)); G1 = G1.^0.5;G2 = G2.^0.5;VG = mat2gray(max(G1, G2));RG = sqrt(Rx.^2 + Ry.^2);GG = sqrt(Gx.^2 + Gy.^2);BG = sqrt(Bx.^2 + By.^2);PPG = mat2gray(RG + GG + BG);if nargin ==2VG = (VG>T).*VG;PPG = (PPG>T).*PPG;endf1=rgb2gray(f);imhist(f1);title('素描图直方图');五,图像处理实色混合(来源网络)%实色混合I(I<=127)=0; %对像素进行处理,若值小于等于127,置0 I(I>127)=255; %对像素进行处理,若值大于127,置255 imshow(I);title('像素图');I1=rgb2gray(f);imhist(I1);title('像素图直方图');六,图像处理反色图f=imread('1.jpg');q=255-q;imshow(q);title('反色图');imhist(q1);title('反色图直方图');七,图像处理上下对称A=imread('1.jpg');B=A;[a,b,c]=size(A);a1=floor(a/2); b1=floor(b/2); c1=floor(c/2);B(1:a1,1:b,1:c)=A(a:-1:a-a1+1,1:b,1:c);figureimshow(B)title('上下对称');A=rgb2gray(A);figureimhist(A)title('上下对称直方图');八,图像处理类左右对称C=imread('1.jpg');A=C;C(1:a,1:b1,1:c)=A(1:a,b:-1:b+1-b1,1:c);figureimshow(C)title('左右对称');A=rgb2gray(A);figureimhist(A);title('左右对称直方图');九,图像处理单双色显示a=imread('1.jpg');a1=a(:,:,1);a2=a(:,:,2); a3=a(:,:,3);aa=rgb2gray(a);a4=cat(3,a1,aa,aa); a5=cat(3,a1,a2,aa);figuresubplot(121);imshow(a4);title('单色显示');subplot(122);imshow(a5);title('双色显示');a4=rgb2gray(a4);a5=rgb2gray(a5);figuresubplot(121);imhist(a4);title('单色显示直方图');subplot(122);imhist(a5);title('双色显示直方图');十,图像处理亮暗度调整a=imread('1.jpg');a1=0.8*a;figuresubplot(121);imshow(a1);title('暗图');subplot(122);imshow(a2);title('亮图')q3=rgb2gray(a1);q4=rgb2gray(a2);figuresubplot(121);mhist(q3);title('暗图直方图') subplot(122);imhist(q4);title('亮图直方图')十一,图像处理雾化处理q=imread('1.jpg');m=size(q,1);n=size(q,2);r=q(:,:,1);g=q(:,:,2);b=q(:,:,3);for i=2:m-10for j=2:n-10k=rand(1)*10;%产生一个随机数作为半径di=i+round(mod(k,33));%得到随机横坐标dj=j+round(mod(k,33));%得到随机纵坐标r(i,j)=r(di,dj);%将原像素点用随机像素点代替 g(i,j)=g(di,dj);b(i,j)=b(di,dj);endenda(:,:,1)=r;a(:,:,2)=g;a(:,:,3)=b;imshow(a)title('雾化处理图');q=rgb2gray(a);figureimhist(q);title('雾化处理图直方图');十二,图像处理高斯滤波I = imread('1.jpg');G =fspecial('gaussian', [5 5], 2);% fspecial生成一个高斯滤波器Ig =imfilter(I,G,'same');%imfilter使用该滤波器处理图片imshow(Ig);title('高斯滤波');I1=rgb2gray(Ig);imhist(I1);title('高斯滤波直方图');十三,图像处理色彩平衡(来自网络)im=imread('1.jpg');im2=im;%存储元图像im1=rgb2ycbcr(im);%将im RGB图像转换为YCbCr空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十Matlab在数字图像处理中的应用(基础篇)一、实验目的1.熟悉图像的四种类型。
2.熟练掌握图像的读、写操作以及显示方法。
3. 熟悉图像的类型转换以及格式转换。
二、实验原理1. 图像的表示以及数字化广义的图像是指视觉信息。
举凡照片、图画、电视画面以及由透镜、光栅及全息图所构成的光学成像等均属之。
我们观察一幅单色静止图像,其亮度的明暗变化就构成图像视觉。
所以,一幅单色(monochrome)静止的图像可以表示为强度或亮度的二维分布(,)F x y,其中F代表图像亮度或者强度,(x,y)是二维平面点坐标。
对于黑白图像,通常用不同的灰度级来表示其亮度的差异;对于彩色图像,可以视为由单个单色的二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)按不同的比例组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。
此时,每一幅分量图像只有亮度的二维分布,如图1所示。
通常我们看到的图像是一幅亮度在空间连续变化的模拟图像(即图像关于亮度F以及空间坐标x,y连续)。
例如在显微镜下看到的就是一副光学模拟图像。
连续的模拟图像经过离散化处理后变成计算机能够识别的点阵图像,称为数字图像。
把模拟图像转换成数字图像其实就是数字化 (即离散化)图像亮度F以及空间坐标x,y。
将坐标数字化称为取样;将亮度数字化称为量化。
采样和量化的过程如图2所示。
二维图像平面经过数字化后,变成一个个方形的像素(pixel),亮度数字化之后变成一个二维的数值矩阵。
所以一副数字图像对应于一个数值矩阵,该矩阵通常称为图像的数据矩阵。
图像数据矩阵的大小即是图像像素的数目,矩阵的行与列决定一个像素点,矩阵元素值(也称像素值)反映该像素点的灰度。
例如图2右边所示的图像数据矩阵为8×8的二维矩阵,那么该数字图像包含8×8=64个像素,第一行第一列代表第一个像素,其像素值(元素值)1表达该像素的灰度。
由于数字图像和数值矩阵之间有着十分自然的对应关系,所以MA TLAB非常适合用来处理数字图像。
表示该组分在源图像中所占比例越大。
图2图像的采样和量化2.图像的类型MATLAB采用4种不同的方式把图像数据矩阵中的元素值(又称像素值)解释为对应像素的颜色:强度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 强度图像(Intensity images)也称灰度图像(grayscale)。
一幅强度图像就是一个数据矩阵,矩阵的每个元素对应一个图像像素,元素值(像素值)代表像素的亮度或者灰度级。
像素值的数据类型可以是uint8或uint16或者double型。
如果是uint8或uint16,则像素值的范围分别是[0,255]和[0,65536],其中0代表黑色(亮度最低或灰度级最低),255或者65536代表白色(亮度最高或者灰度级最高),其他整数介于两者之间;若像素值是double类,系统规定双精度型像素值的取值范围是[0,1],0代表黑色,1代表白色,其余介于两者之间。
例如图2中的数据矩阵,如果该图是强度图像,则第一个像素值1代表该像素的亮度是仅次于黑色的灰度级,余者类推。
(2) 二值图像(Binary images)对于一幅二值图像,其数据矩阵中像素值的取值只有0和1两个逻辑数,分别代表黑色和白色,所以二值图像只有黑色和白色两种颜色。
下图描绘了一幅二值图像。
图3二值图像及其像素值(3) 索引图像(Indexed images)在强度图像和二值图像中,数据矩阵中的像素值直接代表像素的亮度(即颜色),而索引图像的像素值则并不直接代表颜色,而是把像素值按照一定的规则映射到颜色表(colormap)或者调色板中的某一个颜色。
所以索引图像也叫映射图像,一幅索引图像包含一个图像数据矩阵和一个预先定义的色图(Colormap)矩阵。
色图矩阵是一个m×3的double型数组,矩阵的元素值介于[0 1]之间。
色图矩阵的每一行代表一种彩色,它是个3元行数组,分别代表R分量(红色分量)、G分量(绿色分量)、B分量(蓝色分量)的比例,例如(0 0 1)代表蓝色,(1 1 1)代表白色等。
色图矩阵的列数m代表颜色的种类。
图像数据矩阵的类型可以是uint8或uint16或者double型。
对于uint8或uint16类型,像素值0映射到色图矩阵(即颜色表)的第一行,表示该像素使用颜色表的第一个颜色绘制,像素值1映射到色图矩阵的第二行,类此类推,可见uint8或uint16型的像素值和颜色种类之间有一个偏差1。
对于数据矩阵是double型的,像素值1映射到色图矩阵的第一行,2映射到第二行,以此类推。
由上可见,索引图像数据矩阵的像素值也就是对颜色表的索引值(Index)。
注意,索引图像的颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。
当读入索引图像文件时,必须同时读入其数据矩阵和色图矩阵,即绘图用的颜色表。
图4所示代表一幅索引图像,其数据矩阵是double类型。
(4) RGB图像(RGB images)RGB图像也称真彩色图像。
其图像数据矩阵是一个m×n×3数组,数组中的元素值定义了相应像素的红(R)、绿(G)、蓝(B)颜色分量,其中沿第3维(即“页”维)方向的第一页图4索引图像的double型数据矩阵及其色图矩阵代表像素的R颜色分量,第二页是G分量,第三页是B分量。
所以RGB图像不需要色图矩阵或颜色表,每个像素点的颜色由其R、G、B分量直接指定。
例如,像素点(10,5)的红、绿、蓝分量分别储存在数据矩阵的(10,5,1)、(10,5,2)、(10,5,3)三个元素中。
数据矩阵的类型有double、uint8或uint16。
对于double型,每个颜色分量介于0和1之间,如果像素的颜色分量是(0 0 0),则是黑色像素,(1 1 1)是白色像素。
图5显示一幅RGB图像的数据矩阵。
图5 RGB图像的数据矩阵及其三个颜色分量,第1个平面(即第1“页”)为R分量,第2个平面是G分量,第3个是B分量。
2.图像的读、写与图像信息查询Matlab为用户提供了特殊的函数用于从图像格式文件中读写图像数据。
其中读取图像格式文件的函数是imread,写入图像格式文件的函数是imwrite,查询图像信息的函数是imfinfo。
下面分别介绍它们的用法。
(1) imread[X,MAP]=imread(’filename’,’fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据(色图矩阵),fmt为图像的格式,如bmp、jpg、png、tif、gif格式等,filename为读取的图像文件(可以加上文件的路径)。
例:[X,MAP]=imread(’flowers.tif’, ’tif’);或者 [X,MAP]=imread(’flowers.tif’);如果读取的是RGB图像或者强度图像,色图矩阵一般为空,即MAP=[]。
(2) imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X, MAP, ’filename’, ’fmt’)按照fmt指定的格式将图像数据矩阵X和颜色表MAP写入文件filename。
(3) imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为imfinfo(’filename’, ’fmt’)imfinfo函数返回一个结构体,该结构体包含图像的各方面信息,其主要数据:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。
例:imfinfo('rice.png');% 注意查看图像类型和颜色表3. MATLAB中图像文件的显示MATLAB图像处理工具箱提供了imshow函数来显示各种图像,其语法如下:imshow(I, n)或imshow(BW); imshow(X, MAP); imshow(RGB)其中imshow(I, n)用于显示强度(灰度)图像,I是图像数据矩阵,n为灰度级数目,缺省值为256。
其它的分别用于显示二值图像、索引色图像和RGB真彩色图像。
另外,对RGB彩色图像,还可以用imshow( RGB(:, :, 1) )、imshow( RGB(:, :, 2) )、imshow( RGB(:, :, 3) )分别显示RGB图像的R、G、B三个分量(这里RGB代表图像数据矩阵),但是注意,这样显示出的图像是各分量所对应的灰度图像,见图1所示。
4. 图像类型转换用imfinfo函数读取图像文件的有关信息可以确定图像的类型。
图像类型之间的转换有时非常有用。
下表是MA TLAB提供的部分图像类型转换函数:上表中函数有类似的调用格式:函数的输入参数是图像数据矩阵(如果是索引图像,那么输入参数还包括颜色表),返回值是转换后的函数(包括索引函数的调色板),只有函数im2bw 的调用格式不同,其输入参数中还包括一个截取阈值LEVEL,超过此阈值的像素被截取为1否则为0。
如:[X, MAP]=imread('trees.tif');X0=im2bw(X,0.4);% 将RGB图像转换为二值图像(黑白图像),截取阈值=0.4 5、图像文件格式的转换图像文件格式之间的转换,可以间接利用图像读写函数来完成;首先使用imread函数按照原有的图像格式进行图像读取,然后调用imwrite函数对图像进行保存,并指定图像的保存格式。
如将BMP格式转换为PNG格式:bitmap=imread(’mybitmap.bmp’, ’bmp’)imwrite(bitmap, ’mybitmap.png’, ’png’)三、实验内容1.利用imread( )函数分别读取四种类型的图像(注:Matlab安装目录下\toolbox\images \imdemos文件夹里,系统附带了各种类型的图片),回答思考题1。
2.读取一幅RGB图片,并将它转换成其他几种图像类型(通过帮助系统自学相应转换函数的具体用法);3. 读取一幅TIF格式的图像,将它转换成JPG文件格式,并尝试使用不同的压缩品质(使用help imwrite查询其‘quality’参数的用法)压缩文件,比较压缩前后文件的大小和图像质量。
4(选做).读取一幅索引图像,将图像显示出来。
尝试修改MAP颜色矩阵的值,再将图像显示出来,对比观察图像颜色的变化。
四、思考题1.如何识别一幅图像的类型?有几种方法?2.MatLab软件可以支持哪些图像文件格式?(提示:查看imread或imwrite的帮助系统)。