基于MATLAB图像处理(第2版)讲稿课件_第1页
基于MATLAB图像处理(第2版)讲稿课件_第2页
基于MATLAB图像处理(第2版)讲稿课件_第3页
基于MATLAB图像处理(第2版)讲稿课件_第4页
基于MATLAB图像处理(第2版)讲稿课件_第5页
已阅读5页,还剩205页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于MATLAB的图像处理基于MATLAB图像处理(第2版)讲稿关于图像等图像研究有着重要的实际应用价值与理论研究价值图像的研究正在继续,国际上有很多有关图像研究的期刊、专著;各种图像相关的产品不断问世本书使用MATLAB作为工具讲解图像处理的基本原理与基本方法学习时要坚持上机操作,坚持思考基于MATLAB图像处理(第2版)讲稿第1章图像1.1Matlab的命令使用与程序设计1.1.2M-File程序设计

1.1.3Figure窗口的图形操作功能

1.1.4自定义函数

1.1.5Matlab的矩阵操作

1.1.6多维数组与图像矩阵

基于MATLAB图像处理(第2版)讲稿1.2图像的表示方法1.2.1图像的数字化

1.2.2图像的读取与显示

1.2.3图像的分类

基于MATLAB图像处理(第2版)讲稿2.

图像的数字化

在计算机中,图像被看作是一些数值构成的矩阵。例如图1-7所示数据就代表着图像

基于MATLAB图像处理(第2版)讲稿s=size(A),则有s=22223说明图像的长为22、宽为22,由3种颜色迭加而成。下面是其红色阵的数据(1到15列)基于MATLAB图像处理(第2版)讲稿2.图像数据的调用既然图像数据是存储在数组中,那么调用图像数据就变成了操作数组元素。例如:>>B=A(1:5,1:9,1)B=2212212212212212212212212212212342342342342342342342342212342342342342342342342342212342342342342344442212342342342344000调用红色阵的1到5行,1到9列基于MATLAB图像处理(第2版)讲稿函数imshow()可以把任意的二维数组(矩阵)显示成为图像。另外,函数imview()、image()、imagesc()也可以用来显示图像。

基于MATLAB图像处理(第2版)讲稿1.基于颜色表示的图像分类(1)灰度图像灰度图像对应着一个数据矩阵(二维数组),数组元素的值表示图像在该位置上的亮度值。一般常用数值0表示黑色,255表示白色,用0到255之间的数表示灰(亮)度。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿下面程序使用getframe函数装载这几幅图像,使用movie函数播放这几幅图像就是完成了一个动画制作。fori=1:3k=int2str(i);k1=strcat('e:\',k,'.jpg');a1=imread(k1);image(a1);m(:,i)=getframe;endmovie(m,10)

基于MATLAB图像处理(第2版)讲稿第2章图像几何操作与代数运算

2.1图像的缩放旋转与裁剪

2.2图像的几何变换

2.3图像的加减乘除运算

2.4图像的特征值与奇异值

2.5图像逻辑运算

基于MATLAB图像处理(第2版)讲稿2.1图像的缩放旋转与裁剪

2.1.1图像的裁剪

2.1.2图像的缩放

2.1.3图像的旋转

基于MATLAB图像处理(第2版)讲稿1.imcrop函数该函数有两个参数,一个用来指定裁剪图像,一个用来定义裁剪矩形。【例2-1】使用imcrop函数对图像进行裁剪。编写如下程序:A=imread('D:\imageprocess\IMG_7354.jpg');A1=imcrop(A,[190,100,290,220]);subplot(1,2,1),imshow(A);subplot(1,2,2),imshow(A1)程序运行结果如图2-1所示。imcrop函数中的参数[190,100,290,220]的含义是以图像上的(190,100)点为裁剪矩形的左上角坐标,裁剪矩形的宽为290,高为220。

基于MATLAB图像处理(第2版)讲稿3.

Matlab函数roipolyMatlab中提供了定义多边形区域的函数roipoly,可以使用该函数定义多边形区域,然后实行裁剪操作。【例2-2】使用roipoly函数选取图像块。I=imread('D:\125.jpg');subplot(1,2,1)imshow(I)C1=[103080];C2=[2010068];BW=roipoly(I,C1,C2);subplot(1,2,2)imshow(BW)程序运行结果如图2-3所示。

基于MATLAB图像处理(第2版)讲稿2.1.2图像的缩放图像的缩放也是经常使用的一种操作。在图像缩放过程中,涉及到图像数据的删除与增加。特别是图像放大的时候,需要考虑如何在扩大后的空隙中加入新的图像颜色数据。增加颜色数据的主要方法是根据周围相近象素的颜色值进行插值计算。

基于MATLAB图像处理(第2版)讲稿1.

imresize函数缩放图像【例2-5】使用imresize函数缩小或放大图像。下面程序把图像缩小到原来的0.5倍。c=imread('D:\earth.jpg');c2=imresize(c,0.5);imshow(c2)下面程序把原图像变成100行100列图像,行数增加,使用插值函数完成颜色的填补。c=imread('D:\earth.jpg');c2=imresize(c,[100,100]);imshow(c2)

基于MATLAB图像处理(第2版)讲稿2.

三种插值方法图像放大后,需要增加像素,计算新增加的像素颜色值一般使用插值的方法。常用的插值方法有:最近邻插值方法、双线性插值方法、双立方插值方法等。Imresize函数就使用这三种插值方法。

基于MATLAB图像处理(第2版)讲稿2.1.3图像的旋转Matlab使用imrotate函数旋转图像。例如,使用下面命令段可以把图像逆时针旋转30度。>>B=imread('saturn.tif');>>imshow(B)>>figure>>imrotate(B,30,'crop')这几句命令绘制出图2-7(a)与(b)图。参数'crop'是旋转的时候图像底板大小保持不变,图像大小也保持不变

基于MATLAB图像处理(第2版)讲稿【例2-10】使用imrotate函数旋转图像,制作动画效果。编写如下程序,可以制作出动画效果。I=imread('D:\imageprocess\LenaCircle.PNG');fori=1:10imrotate(I,36*i,'crop');end随着i的每次增加,图像依次逆时针旋转36度、72度、……直到300度。旋转时的中间结果如图2-8所示。

基于MATLAB图像处理(第2版)讲稿2.2图像的几何变换

2.2.1画图软件中的图像扭曲

2.2.2图像二维空间变换

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例2-11】使用imtransform函数实现图像平面扭曲功能。T=maketform('affine',[.500;.510;001]);I=imread('cameraman.tif');I2=imtransform(I,T);subplot(1,2,1)imshow(I)subplot(1,2,2)imshow(I2)程序的运行结果如图2-10所示。

基于MATLAB图像处理(第2版)讲稿2.3图像的加减乘除运算

2.3.1图像加减运算

2.3.2图像的乘除运算

基于MATLAB图像处理(第2版)讲稿【例2-14】设计矩阵进行图像加减运算。A=imread('D:\0045.jpg');s=size(A);%s(1),s(2)B=double(A);%Q1=zeros(s(1),s(2));%Q1大小与A一致Q2=zeros(s(1),s(2));form=s(1):-1:1%从s(1)到1,每次减1

forn=s(2):-1:1Q1(m,n)=m;Q2(m,n)=n;endendC(:,:,1)=B(:,:,1);C(:,:,2)=B(:,:,2)-Q2;C(:,:,3)=B(:,:,3)+Q1/3;基于MATLAB图像处理(第2版)讲稿【例2-17】观察分析图像矩阵乘以或除以常数后图像亮度的改变。设计下面程序,程序运行结果是图2-18。A=imread('D:\0010.jpg');A1=double(A);A2=A1*1.5;A3=A1/1.5;A2=uint8(A2);A3=uint8(A3);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(A2)subplot(1,3,3);imshow(A3)

基于MATLAB图像处理(第2版)讲稿图像矩阵与图像矩阵进行逐元素对应乘除运算

【例2-18】利用矩阵对应相乘把两个图像合成在一起。A=imread('D:\0045.jpg');B=imread('D:\0041.jpg');s=size(A);m=s(1),n=s(2);B1=imresize(B,[mn]);A=double(A);C=double(B1);D=A.*C/128;D=uint8(D);subplot(1,3,1);imshow(uint8(A))subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(D)基于MATLAB图像处理(第2版)讲稿两个图像矩阵按照数学上定义的乘法进行运算

基于MATLAB图像处理(第2版)讲稿2.4图像的特征值与奇异值

2.4.1图像矩阵的特征值

2.4.2图像矩阵的奇异值

基于MATLAB图像处理(第2版)讲稿1图像矩阵特征值矩阵特征值是这样定义的:设A是[nn]矩阵,如果数λ与n维非零向量X满足方程

则称数λ为矩阵A的特征值,称非零向量X为矩阵A的特征向量。在计算数学中,一般用迭代的方法求取矩阵的特征值。Matlab提供了求取特征值的函数eig(A),其中A是参数,是要求取特征值的矩阵。

基于MATLAB图像处理(第2版)讲稿设计下面程序段:A=imread('D:\shizi1.bmp');A1=rgb2gray(A);A2=double(A1);T=eig(A2);T'运行程序后,得到灰度矩阵A1的特征值数据:

基于MATLAB图像处理(第2版)讲稿使用下面程序可以求出并且在命令窗口显示出图像的特征向量。A=imread('D:\shizi1.bmp');A1=rgb2gray(A);A2=double(A1);[GT]=eig(A2);G变量G中存储的就是灰度图像A1的特征向量。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例2-23】求图像矩阵的奇异值。下面程序是求图像shizi1.bmp的灰度矩阵的奇异值。A=imread('D:\shizi1.bmp');A1=rgb2gray(A);A2=double(A1);T=svd(A2);T'基于MATLAB图像处理(第2版)讲稿2.5图像逻辑运算

2.5.1二值图像逻辑运算

基于MATLAB图像处理(第2版)讲稿【例2-27】对二值图像实施与、或、非、异或运算。A1=imread('D:\1.bmp');A2=imread('D:\11.bmp');A3=imread('D:\0.bmp');A4=imread('D:\00.bmp');B1=im2bw(A1);B2=im2bw(A2);B3=im2bw(A3);B4=im2bw(A4);C1=B1&B3;%与操作C2=B2|B3;%或操作C3=~B1;%非操作C4=XOR(B3,B4);%异或操作subplot(2,4,1);imshow(B1)subplot(2,4,2);imshow(B2)subplot(2,4,3);imshow(B3)subplot(2,4,4);imshow(B4)subplot(2,4,5);imshow(C1)subplot(2,4,6);imshow(C2)subplot(2,4,7);imshow(C3)subplot(2,4,8);imshow(C4)

程序运行结果如图2-28所示。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿第3章图像空间域处理与邻域操作

3.1图像增强

3.2图像的邻域操作

3.3图像滤波函数及工作原理

3.4图像膨胀与腐蚀

基于MATLAB图像处理(第2版)讲稿3.1图像增强

3.1.1灰度调整

3.1.2灰度调整函数

3.1.3彩色图像增强

基于MATLAB图像处理(第2版)讲稿统计每个颜色值的点的个数,即直方图统计的目的是为了确定增强的参数设置A=imread('pout.tif');A1=floor(double(A));s=size(A1);N=zeros(256);fori=1:s(1)forj=1:s(2)k=A1(i,j);N(k+1)=N(k+1)+1;endendbar(N)基于MATLAB图像处理(第2版)讲稿事实上,Matlab提供了函数imadjust、histeq、adapthiteq、brighten等进行灰度调整。可以在以后的研究工作中直接使用Matlab中这些函数调整图像灰度(颜色)对比度。

基于MATLAB图像处理(第2版)讲稿1.imadjust函数函数imadjust可以将图像的灰度值调整到一个指定的范围,实现类似例3-3的功能,以增强图像的明暗对比。【例3-4】使用函数imadjust对图像进行灰度调整。编写如下程序:A1=imread('pout.tif');B1=imadjust(A1,[0.20.5],[0,1]);A2=imread('cameraman.tif');B2=imadjust(A2,[0,0.2],[0.5,1]);subplot(1,4,1);imshow(A1)subplot(1,4,2);imshow(B1)subplot(1,4,3);imshow(A2)subplot(1,4,4);imshow(B2)程序的运行结果如图3-4所示。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿2.stretchlim函数

函数stretchlim(A)是用来计算灰度矩阵A的最佳输入区间,即imadjust(I,[LOW_INHIGH_IN],[LOW_OUTHIGH_OUT])中的第2个参数[LOW_INHIGH_IN]。所谓最佳是指按照这个区间输入的话,图像的灰度对比度最大。

例如,使用该函数计算例3-3中使用的图像的最佳输入区间为[0.30590.6314];'cameraman.tif'的最佳输入区间为[0.03530.8039]。而下面例题3-5中的图像'D:\imageprocess\IMG_7420.jpg'的最佳截取输入区间为[0.16080.6941]。

基于MATLAB图像处理(第2版)讲稿3.histeq函数函数histeq能够自动完成图像灰度调整,一般用来增强图像的灰度对比度。【例3-6】使用函数histeq增强图像灰度对比度。使用下面程序能够得到图3-9所示效果。I=imread('tire.tif');J=histeq(I);subplot(1,2,1);imshow(I)subplot(1,2,2);imshow(J)基于MATLAB图像处理(第2版)讲稿4.brighten函数

【例3-7】使用函数brighten增加灰度图像的亮度。设计下面程序:J=imread('D:\imageprocess\IMG_5943.jpg');A=rgb2gray(J);imshow(A)figure,imshow(A)brighten(0.6)figure,imshow(A)brighten(-0.6)

基于MATLAB图像处理(第2版)讲稿RGB彩色图像增强【例3-8】使用函数imadjust对RGB彩色图像进行颜色调整。RGB1=imread('flowers.tif');RGB2=imadjust(RGB1,[.2.30;.6.71]);subplot(1,2,1)imshow(RGB1)subplot(1,2,2)imshow(RGB2)基于MATLAB图像处理(第2版)讲稿3.2图像的邻域操作

3.2.1邻域操作

3.2.2Matlab邻域操作函数

基于MATLAB图像处理(第2版)讲稿邻域操作指在图像处理时,输入要处理像素的某邻域内各个像素值,输出要处理的像素的新值。邻域操作是图象处理(例如图像增强、图像滤波)时经常用到的方法。使用该方法处理图像时一般使用算子模板逐行(或逐列)在图像上滑动,滑动的时候对模板经过区域进行运算,把计算的结果作为区域中心像素的新值,所以有时也称为滑动邻域操作。

基于MATLAB图像处理(第2版)讲稿邻域操作方法充分地利用了图像相邻像素间的颜色关系,利用相邻像素间的颜色分布对图像进行平滑、增强、边缘提取、滤波、恢复等,图像的腐蚀与膨胀操作也可以看作是邻域操作的一种。

基于MATLAB图像处理(第2版)讲稿【例3-11】对小狮子图像进行邻域操作,使小狮子图像的轮廓变得清晰。

编写如下程序,绘制出图3-15(c)所示图形。A1=imread('D:\shizi1.bmp');A2=double(A1);A3=floor((A2(:,:,1)+A2(:,:,2)+A2(:,:,3))/3);C=[-1-1-1-18-1-1-1-1];fori=2:15forj=2:15L=A3(i-1:i+1,j-1:j+1).*C;A4(i,j)=sum(sum(L));endendA4imshow(A4)

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿1.

nlfilter函数在Matlab中,nlfilter函数是最基本的邻域操作函数。该函数被调用的一般形式为:B=nlfilter(A,[MN],FUN),其中A是被处理的图像,[MN]表示滑动块的高为M、宽为N。FUN是要对滑动覆盖区域进行操作的函数名,该函数可以是各种滤波算子,可以是任意定义的运算。

基于MATLAB图像处理(第2版)讲稿【例3-12】使用nlfilter函数进行图像邻域操作。编写下面程序,得到的结果显示在图3-17中。A=imread('D:\shizi.bmp');A1=rgb2gray(A);subplot(1,2,1);imshow(A1);fun=inline('median(x(:))');B=nlfilter(A1,[33],fun);subplot(1,2,2);imshow(B)

基于MATLAB图像处理(第2版)讲稿colfilt函数与nlfilter函数的另一个重要区别是colfilt函数在移动的时候可以在'sliding'与'distinct'两者中进行选择,而nlfilter函数只是执行'sliding'操作。colfilt函数在选择'distinct'时,滑动块不再逐象素滑动,而是逐块移动。看下面例题:【例3-15】使用colfilt函数进行图像邻域distinct操作。编写如下程序:A=imread('D:\shizi1.bmp');A1=rgb2gray(A);A2=double(A1);f=inline('ones(16,1)*mean(x)');B=floor(colfilt(A2,[44],'distinct',f))

基于MATLAB图像处理(第2版)讲稿程序中distinct操作每次从前一个[44]图像块移动到下一个[44]图像块,移动时不互相重叠。一共移动了16次,如图3-20所示。

图3-20使用colfilt函数distinct操作示意图

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿3.3图像滤波函数及工作原理

3.3.1滤波函数imfilter

3.3.2滤波器的定义

基于MATLAB图像处理(第2版)讲稿函数imfilter是Matlab中使用较多的滤波函数,基本调用形式为:B=IMFILTER(A,H,OPTION)其中A为要进行滤波的图像矩阵,可以为多维的彩色图像矩阵(数组);H是已经定义的滤波算子。

基于MATLAB图像处理(第2版)讲稿【例3-17】使用函数imfilter对图像进行滤波,同时研究该函数的边界参数的意义。rgb=imread('D:125.jpg');h=ones(5,5)/25;rgb1=imfilter(rgb,h);rgb2=imfilter(rgb1,h,'replicate');subplot(1,3,1),imshow(rgb),title('Original')subplot(1,3,2),imshow(rgb1),title('Filtered')subplot(1,3,3),imshow(rgb2),title('boundaryreplication')

基于MATLAB图像处理(第2版)讲稿【例3-18】使用函数imfilter对图像进行滤波,观察滤波结果,分析几个滤波器的区别。rgb=imread('D:003.bmp');h1=[000.00000.00210.00420.19580.19790.20000.19790.19580.00420.00210.000000];h2=[121;000;-1-2-1];h3=[0.16670.66670.16670.6667-3.33330.66670.16670.66670.1667];基于MATLAB图像处理(第2版)讲稿rgb1=imfilter(rgb,h1);rgb2=imfilter(rgb,h2);rgb3=imfilter(rgb,h3);subplot(2,2,1),imshow(rgb),title(‘原图像’)subplot(2,2,2),imshow(rgb1),title(‘运动滤波’)subplot(2,2,3),imshow(rgb2),title(‘水平边缘增强’)subplot(2,2,4),imshow(rgb3),title('拉普拉斯滤波')

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿可以使用Matlab中的函数fspecial(T,P)产生一个由T指定的二维线性滤波器。参数T可以在下面选项中选取。'average'均值滤波器'disk'圆形均值滤波器'gaussian'高斯低通滤波器'laplacian'二维拉普拉斯滤波器'log'高斯拉普拉斯滤波器'motion'运动滤波器'prewitt'Prewitt水平边缘增强滤波器'sobel'Sobel水平边缘增强滤波器

基于MATLAB图像处理(第2版)讲稿3.4图像膨胀与腐蚀

3.4.1二值图像的膨胀与腐蚀运算

3.4.2灰度图像的膨胀与腐蚀

3.4.3开运算与闭运算

基于MATLAB图像处理(第2版)讲稿图像膨胀与腐蚀也叫做数学形态学运算。一般来说对于二值图像,膨胀运算后图像中物体“加长”或“变粗”;腐蚀运算后图像中物体“收缩”或“细化”。下面先通过一些例题观察分析膨胀与腐蚀后的效果

基于MATLAB图像处理(第2版)讲稿【例3-22】对二值图像实施膨胀运算。A=imread('C:\MATLAB6p5\work\bc.bmp');B=~A;M=[1;1;1];N=[110];P=[001;010;000];Q=[001;000;100];C1=imdilate(B,M);C2=imdilate(B,N);C3=imdilate(B,P);C4=imdilate(B,Q);subplot(1,5,1);imshow(B)subplot(1,5,2);imshow(C1)subplot(1,5,3);imshow(C2)subplot(1,5,4);imshow(C3)subplot(1,5,5);imshow(C4)

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例3-24】对二值图像实施腐蚀运算,并且与膨胀运算进行比较。A=imread('0370.bmp');B=im2bw(A);B=~B;M=strel('diamond',3);C1=imerode(B,M);C2=imdilate(B,M);subplot(1,3,1);imshow(B)subplot(1,3,2);imshow(C1)subplot(1,3,3);imshow(C2)

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿第4章图像变换

4.1图像Radon变换

4.2Hadamard变换

基于MATLAB图像处理(第2版)讲稿4.1图像Radon变换

4.1.1函数Radon

4.1.2函数Iradon

基于MATLAB图像处理(第2版)讲稿Matlab中提供了函数radon用来完成图像Radon变换,该变换实质上是计算指定方向上图像矩阵的投影。【例4-1】图像Radon变换。A=imread('D:\0371.bmp');[C,x1]=radon(A,0);[D,x2]=radon(A,30);subplot(1,3,1);imshow(A)subplot(1,3,2);plot(x1,C)subplot(1,3,3);plot(x2,D)读入图像,然后调用radon函数,变换后绘制出图4-1(a)-(c)所示图形

基于MATLAB图像处理(第2版)讲稿为了更好地进行观察,绘制了二值图像0372.bmp,如图4-1(d)所示。使用上面程序,对0372.bmp进行变换,把程序中文件0371.bmp改为0372.bmp即可。得到的结果如图4-1(e)、(f)所示。从这个结果能进一步直观的理解Radon变换。

基于MATLAB图像处理(第2版)讲稿上面是课后习题8中给出的关于radon变换的定义,从这个定义进一步理解radon变换。

基于MATLAB图像处理(第2版)讲稿Matlab也提供了函数iradon用来进行逆Radon变换。例4-2先利用函数Radon计算一组旋转角度下的Radon变换C,C是二维数组,记载着对应于每个角度的变换后的数据。然后利用C及旋转角度,使用函数Iradon重建图像。

见下一页基于MATLAB图像处理(第2版)讲稿【例4-2】利用逆Radon变换复原图像。设计如下程序B=imread('D:\0371.bmp');T=0:10:180;[C,x]=radon(B,T);%进行了19次若当变换D=iradon(C,T);subplot(1,3,1);imshow(B)subplot(1,3,2);imagesc(T,x,C)subplot(1,3,3);image(D)程序运行结果见下页图4-2

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿4.3离散余弦变换

4.3.1离散余弦变换函数

4.3.2离散余弦变换的数学表达

4.3.3离散余弦变换矩阵与基函数

基于MATLAB图像处理(第2版)讲稿离散余弦变换(DCT)将图像表示为具有不同振幅和频率的离散的余弦曲线或曲面的和。Matlab提供了函数dct2来计算图像的二维离散余弦变换。一幅图像的大部分可视特征信息都可以用少量的DCT系数来表示,图像的jpg压缩格式主要是基于离散余弦变换方法。

基于MATLAB图像处理(第2版)讲稿函数Dct2

【例4-5】利用函数dct2对图像进行离散余弦变换。A=imread('D:\6.bmp');B=imread('D:\7.bmp');C=imread('D:\a.jpg');C1=im2bw(C);A1=dct2(A);B1=dct2(B);C2=dct2(C1);subplot(1,6,1);imshow(A)subplot(1,6,2);imshow(A1)subplot(1,6,3);imshow(B)subplot(1,6,4);imshow(B1)subplot(1,6,5);imshow(C1)subplot(1,6,6);imshow(C2)

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿几个复杂图像基于MATLAB图像处理(第2版)讲稿【例4-7】利用函数idct2对图像进行逆离散余弦变换。D=imread('D:\0066.jpg');D1=rgb2gray(D);s=size(D1);D2=dct2(D1);D3=idct2(D2);P=zeros(s);P1=P;P2=P;P3=P;P1(1:10,1:10)=D2(1:10,1:10);P2(1:30,1:30)=D2(1:30,1:30);P3(1:60,1:60)=D2(1:60,1:60);E1=idct2(P1);E2=idct2(P2);E3=idct2(P3);subplot(2,3,1);imshow(D1);subplot(2,3,2);imshow(D2);subplot(2,3,3);image(D3)subplot(2,3,4);image(E1);subplot(2,3,5);image(E2);subplot(2,3,6);image(E3)

图形见下页:基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例4-10】设计程序,使其能够实现函数dct2的功能。A=imread('D:\6.bmp');s=size(A);M=s(1);N=s(2);ap0=sqrt(1/M);ap=sqrt(2/M);aq0=sqrt(1/N);aq=sqrt(2/N);forp=1:M-1forq=1:N-1k=0;form=0:M-1forn=0:N-1k=A(m+1,n+1)*cos(pi*(2*m+1)*p/(2*M))*cos(pi*(2*n+1)*q/(2*N))+k;endendB(p+1,q+1)=ap*aq*k;endend

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例4-11】设计程序生成离散余弦变换的变换矩阵。设计下面程序:M=14;fori=2:Mforj=1:MP(i,j)=sqrt(2/M)*cos(((i-1)*(2*j-1)*pi)/(2*M));endendP(1,:)=sqrt(1/M);P14=P运行程序能够得到[1414]大小的变换矩阵P14。如何使用矩阵形式编写程序实现离散余弦变换?

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例4-12】编制程序实现逆离散余弦变换。

程序较长,参考教材:程序的难点在于循环语句嵌套在一起,中间又有分支语句。分支语句是为了解决分别有两个值的问题。程序利用分支语句把各种情况都考虑进来,把第一行第一列都计算出来,是一个比较完整的程序。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿1.离散余弦变换矩阵生成函数dctmtxMatlab提供了函数dctmtx来生成离散余弦变换矩阵,相当于例4-11实现的功能。【例4-13】利用函数dctmtx生成离散余弦变换矩阵,然后使用该变换矩阵对图像进行离散余弦变换。A0=imread('D:\a.jpg');A=im2bw(A0);s=size(A);M=s(1);N=s(2);P=dctmtx(M);Q=dctmtx(N);B=P*A*Q’;

实验结果显示与例4-5中得到的C2结果相同。(即语句C2=dct2(C1);得到的结果一样)基于MATLAB图像处理(第2版)讲稿3.离散余弦变换基函数基函数是数学上一个非常重要的概念。1、x、x2、x3……乘以系数加到一起能够组合成任意的多项式,1、x、x2、x3……就是一组基函数。简单有规律的基函数可以构造出一个函数集合或者函数空间。离散余弦变换可以用它的基函数组合而成。下面4-4式就表示离散余弦变换的基函数,一共M*N个。下面是用图像显示的8*8的离散余弦变换的基函数:基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿上机或者课后作业:1.修改例4-10中的程序,使其也能够计算出变换后第一行与第一列的值。2.修改例4-11中的程序,把该程序修改成为函数,使其输入参数M,就能够计算出M阶的离散余弦变换的变换矩阵。

基于MATLAB图像处理(第2版)讲稿第5章图像分析

5.1图像的灰度统计特性

5.2图像的轮廓提取与区域分割

5.3图像的四叉树分解

5.4图像的纹理分析

5.5图像的图形化

5.6视频图像

基于MATLAB图像处理(第2版)讲稿5.1图像的灰度统计特性

5.1.1图像的象素操作

5.1.2图像的区域属性度量

5.1.3图像的颜色直方图

5.1.4图像的方差及相关系数

基于MATLAB图像处理(第2版)讲稿其实对图像进行的最基本操作是对图像进行像素操作。在目前的计算方式下,对图像进行的一切操作本质上都是从像素开始的。与很多语言一样,Matlab也提供了图像(图形)像素操作功能。Matlab的像素操作函数有pixval与impixel等。

基于MATLAB图像处理(第2版)讲稿1.pixval函数pixval函数可以交互显示图像上像素的颜色值。该函数还可以显示两个像素点之间的欧氏距离。【例5-1】pixval函数的使用。A=imread('D:\0059.jpg');A1=rgb2gray(A);A2=dct2(A1);A3=fft2(A1);subplot(1,4,1);imshow(A)subplot(1,4,2);imshow(A1)subplot(1,4,3);imshow(A2)subplot(1,4,4);imshow(A3)pixval;

交互取点情况见下图基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例5-2】impixel函数的使用。A=imread('D:\0059.jpg');A1=rgb2gray(A);A2=dct2(A1);A3=fft2(A1);subplot(1,4,1);imshow(A);[x1,y1,B1]=impixelsubplot(1,4,2);imshow(A1);[x2,y2,B2]=impixelsubplot(1,4,3);imshow(A2)subplot(1,4,4);imshow(A3)程序运行后,先显示第一个子图,然后等待选取。单击要选取的位置,再右击,该位置的坐标以及该点的颜色值被存储在[x1,y1,B1]中。同时,第二个子图出现,同样操作后,坐标以及颜色值被存储在[x2,y2,B2]中。

基于MATLAB图像处理(第2版)讲稿图像的区域属性有面积值、图像中的洞孔数目、图像的质心等。本节先分别使用函数bwarea()与bweuler()计算二值图像的前景面积与图像中的洞孔数目。然后自编程序计算图像质心,接着介绍Matlab的特征计算函数imfeature()。最后使用这些函数编写几个程序解决实际问题。

基于MATLAB图像处理(第2版)讲稿1.区域面积【例5-4】使用bwarea函数计算二值图像的前景面积。A=imread('D:\6.bmp');%A、B、C、D都是二值图像B=imread('D:\0.bmp');C=imread('D:\shouxieshuzi.bmp');D=imread('D:\0371.bmp');E0=imread('D:\0059.jpg');E=im2bw(E0);k(1)=bwarea(~A);k(2)=bwarea(~B);k(3)=bwarea(~C);k(4)=bwarea(~D);k(5)=bwarea(~E);subplot(1,5,1);imshow(A)subplot(1,5,2);imshow(B)subplot(1,5,3);imshow(C)subplot(1,5,4);imshow(D)subplot(1,5,5);imshow(~E)k%图在下面基于MATLAB图像处理(第2版)讲稿k=1.0e+005*0.00760.02540.14870.16691.8463因为图像大小不同,在Matlab的subplot中显示为一样大小。但实际上数据是准确的。

基于MATLAB图像处理(第2版)讲稿【例5-5】使用bweuler函数计算二值图像的欧拉数。设计下面程序:A=imread('D:\shouxieshuzi.bmp');A1=~A;B=imread('D:\003.bmp');B=im2bw(B);B1=~B;ka=bweuler(A1)kb=bweuler(B1)subplot(1,2,1);imshow(A1)subplot(1,2,2);imshow(B1)程序的运行结果是:ka=9,kb=-2。

基于MATLAB图像处理(第2版)讲稿【例5-8】函数imfeature的调用方法。A=imread('D:\8.bmp');L=bwlabel(A);sta=imfeature(L,'Area','Centroid')程序运行结果是:sta=Area:3155Centroid:[37.601967.2447]在使用函数imfeature(L,‘P’)时,可以在参数P的位置写入Area、Centroid、BoundingBox等,能够直接计算出相应的特性。

图像8.bmp只有一个连通区域,所以只计算出一个面积,一个质心。

基于MATLAB图像处理(第2版)讲稿5.图像区域特性计算应用实例

【例5-10】计算数字的欧拉数识别数字8。使用Windows的画图书写印刷体数字如图5-8所示,以二值方式存储在D盘,文件名为shibie8yi.bmp。编写下面程序:A=imread('D:\shibie8yi.bmp');L=bwlabel(A);e=imfeature(L,'EulerNumber');fori=1:25e(i)endimshow(A)

欧拉数为-1的就是数字8。

基于MATLAB图像处理(第2版)讲稿下面是一个完整的程序,能够计算出图5-8中图像的8在第几个区域。A=imread('D:\shibie8yi.bmp');L=bwlabel(A);e=imfeature(L,'EulerNumber');imshow(A)fori=1:25ife(i).EulerNumber==-1iendend计算结果是打印出8、16、19。即第8个、第16个、第19个数字。

基于MATLAB图像处理(第2版)讲稿1.灰度图像直方图【例5-12】求灰度图像直方图。A=imread('D:\0067.jpg');B0=rgb2gray(A);B=double(B0);s=size(B);h=zeros(1,256);fori=1:s(1)forj=1:s(2)k=B(i,j);k=floor(k);h(k+1)=h(k+1)+1;endendsubplot(1,3,1);imshow(B0)subplot(1,3,2);imhist(B0)subplot(1,3,3);plot(h)程序的运行结果如图5-9所示。

基于MATLAB图像处理(第2版)讲稿(a)原图像(b)imhist函数绘制的直方图(c)自编程序语句绘制的直方图图5-9计算并绘制图像的直方图

基于MATLAB图像处理(第2版)讲稿【例5-15】使用函数mean2计算图像的均值。下面两条语句构成的程序就可以计算图像的均值。A=imread('D:\6781.bmp');m=mean2(A)

基于MATLAB图像处理(第2版)讲稿【例5-16】计算向量的标准偏差。设计下面程序:A=[125689];m=mean(A);s0=0;fori=1:6s0=s0+(A(i)-m)^2;ends1=s0/5;s=sqrt(s1)该程序计算向量A的标准偏差,计算的结果是:3.1885基于MATLAB图像处理(第2版)讲稿【例5-19】使用函数corrcoef计算几个图像的相关系数。fori=1:5k=int2str(i);k1=strcat('D:\',k,'a.bmp');B1(i,:,:)=imread(k1);k2=strcat('D:\',k,'b.bmp');B1(i+5,:,:)=imread(k2);subplot(2,5,i),C(:,:)=B1(i,:,:);imshow(C);subplot(2,5,i+5),C(:,:)=B1(i+5,:,:);imshow(C);endC1(:,:)=B1(1,:,:);C2(:,:)=B1(2,:,:);C3(:,:)=B1(3,:,:);C4(:,:)=B1(4,:,:);C5(:,:)=B1(5,:,:);C6(:,:)=B1(6,:,:);C7(:,:)=B1(7,:,:);C8(:,:)=B1(8,:,:);C9(:,:)=B1(9,:,:);C10(:,:)=B1(10,:,:);M=corrcoef(double(C1),double(C2))%图像在下页基于MATLAB图像处理(第2版)讲稿(a)1a(b)2a(c)3a(d)4a(e)5a

(f)1b(g)2b(h)3b(i)4b(j)5b

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿5.2图像的轮廓提取与区域分割

5.2.1图像的轮廓提取

5.2.2图像的边缘轮廓提取方法分析

5.2.3图像的区域分割

基于MATLAB图像处理(第2版)讲稿图像的轮廓提取主要依据图像本身的颜色分布。例如提取二值图像轮廓可以查找某个非零像素点临近是否有0点,0元素是如何分布的;提取灰度图像轮廓可以凭借灰度分布的梯度(导数),梯度变化比较大的地方就是轮廓;提取彩色图像轮廓时,可以把图像化为灰度图像,然后进行提取,也可以根据某个彩色分量矩阵直接提取图像轮廓。

基于MATLAB图像处理(第2版)讲稿Matlab提供了二值图像轮廓提取函数bwperim。【例5-20】使用函数bwperim提取二值图像的轮廓。设计下面程序:A=imread('D:\6782.bmp');EA=bwperim(A);subplot(1,2,1)imshow(A)subplot(1,2,2)imshow(EA)该程序的运行结果如图5-15所示。

基于MATLAB图像处理(第2版)讲稿【例5-22】使用函数imcontour绘制手写数字灰度图像的等值线。A=imread('D:\123456.jpg');A1=rgb2gray(A);imshow(A1);figureimcontour(A1);基于MATLAB图像处理(第2版)讲稿【例5-23】图像边缘提取。设计下面程序:I=imread('D:\911.jpg');BW1=edge(I);subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(BW1)基于MATLAB图像处理(第2版)讲稿图像边缘提取检测的基本原理基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿Edge函数中含有多个边缘提取算法,这些算法利用参数形式调用,例如'roberts'、'sobel'、'prewitt'等代表着各种算法,都是基于上述差分及梯度原理设计的,提取边缘时就是使用这些算子进行邻域操作。

基于MATLAB图像处理(第2版)讲稿I=imread('D:\0043.jpg');level=80/255;BW=im2bw(I,level);imshow(BW)程序运行后分离的结果如图5-27所示。

level=80/255;,之所以选择这个阈值,是有下面的程序估算出来的基于MATLAB图像处理(第2版)讲稿【例5-27】根据灰度直方图确定一个阈值,分离图像的前景与背景。A=imread('D:\0043.jpg');B=rgb2gray(A);subplot(1,2,1);imshow(B)B=double(B);subplot(1,2,2);hist(B)

程序运行结果如图5-26所示。

基于MATLAB图像处理(第2版)讲稿下面例题给出了自动确定阈值的方法,即迭代确定阈值方法。【例5-28】迭代方法确定阈值。A=imread('D:\0043.jpg');B=rgb2gray(A);T=0.5*(double(min(B(:)))+double(max(B(:))));d=false;while~dg=B>=T;Tn=0.5*(mean(B(g))+mean(B(~g)));d=abs(T-Tn)<0.5;T=Tn;endT

【思考题】为什么这种方法能够计算出近似的阈值?

基于MATLAB图像处理(第2版)讲稿作业,教材课后习题,三、程序设计题中的4与6题。基于MATLAB图像处理(第2版)讲稿5.4图像的纹理分析

5.4.1图像的纹理滤波函数

5.4.2图像的灰度级别共生矩阵函数

5.4.3图像纹理的数学描述

基于MATLAB图像处理(第2版)讲稿函数调用语句J=rangefilt(I)返回与I同样维数的数组J,J中的每个元素值都是I中对应元素的邻域内最大值减去最小值得到的,默认情况下使用[33]邻域。I可以是灰度图像,也可以是彩色图像。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例5-36】局部熵函数entropyfilt(A)的工作方法。A=imread('F:\images\Waterlilies.jpg');A1=rgb2gray(A);B=entropyfilt(A1);subplot(1,2,1),imshow(A1);subplot(1,2,2),imshow(B,[]);程序的运行结果为图5-34所示。

基于MATLAB图像处理(第2版)讲稿【例5-37】使用函数Graycomatrix计算像素对出现的频率。I=[111585235712123567]K=graycomatrix(I,'G',[])

计算出的结果为:K=220010000020000000002000

0000000000000111000000101000000000001000

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿5.5图像的图形化

5.5.1图像灰度信息的提取及三维化

5.5.2图像迭代重构

基于MATLAB图像处理(第2版)讲稿【例5-43】从图像提取三维图形数据。A=imread('D:\face2.jpg');A1=rgb2gray(A);s=size(A1);subplot(1,3,1);imshow(A1);subplot(1,3,2)fori=1:2:s(1)forj=1:2:s(2)plot3(i,j,A1(i,j));holdonendendview([80,82])

基于MATLAB图像处理(第2版)讲稿一个灰度图像是一个离散的二元函数,平面(x,y)位置上有一个高度值z,如图5-36(a)所示。根据混沌理论,把各个图像化为一个三维单位区域上的函数,然后,使用多个图像依串插迭代,可以重构图像。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿5.6视频图像

5.6.1视频图像内容关联性分析

5.6.2视频图像滤波

基于MATLAB图像处理(第2版)讲稿视频图像是由一帧帧具有关联的图像构成的,充分利用这些联系来处理视频图像是本章要研究的内容。这里的视频图像主要取自于电影、电视剧、新闻、体育、娱乐以及动漫产品等。在1.1.6节中,就已经涉及到序列图像的存储与显示了。在这一节中更深入的讨论序列图像的存储、显示与表示等内容。

基于MATLAB图像处理(第2版)讲稿【例5-47】足球序列彩色图像的差。fori=1:9k=int2str(i);k1=strcat('D:\imageprocess\chanshe0',k,'.jpg');B(i,:,:,:)=double(imread(k1));endfori=1:8C(:,:,:)=B(i+1,:,:,:)-B(i,:,:,:);C1=imadjust(C,[,],[0,1]);subplot(3,3,i);imshow(C1);end

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例5-49】简单的帧平均滤波方法。设计下面程序:M=uint8(zeros(128,128,1,5));fori=1:5[M(:,:,:,i),map]=imread('d:\image\024.gif',i);N(:,:,i)=ind2gray(M(:,:,:,i),map);subplot(1,5,i),imshow(N(:,:,i))end

基于MATLAB图像处理(第2版)讲稿【例5-50】简单的帧中值滤波方法。M=uint8(zeros(128,128,1,5));fori=1:5[M(:,:,:,i),map]=imread('d:\image\024.gif',i);N(:,:,i)=ind2gray(M(:,:,:,i),map);N(:,:,i)=imnoise(N(:,:,i),'salt&pepper',0.05);subplot(1,5,i),imshow(N(:,:,i))endfori=1:3fork1=1:128fork2=1:128Q(k1,k2,i)=median([N(k1,k2,i),N(k1,k2,i+1),N(k1,k2,i+2)]);endendsubplot(1,3,i),imshow(Q(:,:,i));end

基于MATLAB图像处理(第2版)讲稿课后习题选讲基于MATLAB图像处理(第2版)讲稿第6章图像应用程序设计

6.1图像编码

6.2图像信息隐藏

6.3图像理解

6.4图像处理软件开发

基于MATLAB图像处理(第2版)讲稿本章主要介绍图像编码、图像信息隐藏、图像理解以及图像软件开发。在这些内容的学习过程中,一方面强化前面章节内容的学习,一方面主要是培养图像处理应用程序设计能力,同时了解图像软件开发的一些相关技术。

基于MATLAB图像处理(第2版)讲稿6.1图像编码

6.1.1Huffman编码

6.1.2离散余弦变换编码

6.1.3小波变换编码

基于MATLAB图像处理(第2版)讲稿图像编码,本质上来说,就是为了一定的目的对图像数据按约定的规则进行变换和组合,得到新的数据集合。如果目的是以尽可能少的代码来表示尽可能多的数据信息,那么这种编码就是图像压缩;如果目的是防止传输的过程中被窃取,那么这种编码就是图像信息隐藏。

基于MATLAB图像处理(第2版)讲稿从编码对象上可以把图像编码分为静止图像编码、视频(活动)图像编码、二值图像编码等;从信息损失的角度可以分为有损编码与无损编码;从具体的编码技术角度可以分为空域法、变换域法,还可以分为像素编码、预测编码、变换编码等。

基于MATLAB图像处理(第2版)讲稿编码是计算机处理数据时使用的一种通用方法。例如,一个文件中出现了5种字符a、b、c、d、e,那么就可以用000,001,010,011,100表示这5个字符。字符串abcaaaaccde就可以表示为:10010011100。这种表示方法一共需要33比特。这种编码方式是可行的,如果传输不出现差错的话,可以按照约定准确地读出所表达的字符串。不过这种方法还可以进一步改进,使其更加高效。例如,可以使用下面的霍夫曼编码方法进行编码。

基于MATLAB图像处理(第2版)讲稿基于MATLAB图像处理(第2版)讲稿【例6-3】设计程序计算例6-1中各个数据元素的霍夫曼编码值。globalstaticCP=[5/113/111/111/111/11];C=cell(length(P),1);s=cell(length(P),1);fori=1:length(P)s{i}=i;endwhilenumel(s)>2[P,i]=sort(P);P(2)=P(1)+P(2);P(1)=[];s=s(i);s{2}={s{1},s{2}};s(1)=[];endmakec(s,[]);C基于MATLAB图像处理(第2版)讲稿functionmakec(sc,cod)globalstaticCifisa(sc,'cell')makec(sc{1},[cod0]);makec(sc{2},[cod1]);elseC{sc}=char('0'+cod);end

基于MATLAB图像处理(第2版)讲稿【例6-5】利用离散余弦变换以及相关函数对图像进行分块变换与复原。A=imread('D:\0059.jpg');A1=rgb2gray(A);A2=im2double(A1);T=dctmtx(8);B=blkproc(A2,[88],'P1*x*P2',T,T');mask1=[1000000000000000000000000000000000000000000000000000000000000000];

基于MATLAB图像处理(第2版)讲稿mask2=[1100000010000000000000000000000000000000000000000000000000000000];mask3=[1110000011000000100000000000000000000000000000000000000000000000];

基于MATLAB图像处理(第2版)讲稿B1=blkproc(B,[88],'P1.*x',mask1);C1=blkproc(B1,[88],'P1*x*P2',T',T);B2=blkproc(B,[88],'P1.*x',mask2);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论