《图像处理(四)》由会员分享,可在线阅读,更多相关《图像处理(四)(25页珍藏版)》请在金锄头文库上搜索。
1、1上次上次: : 二、图像运算,三、图像变换二、图像运算,三、图像变换1 1图像的点运算(元素群运算)图像的点运算(元素群运算)2 2图像的代数运算图像的代数运算3 3图像的几何运算图像的几何运算上机实验一上机实验一讲:讲:4 4图像的邻域(即点的邻域)操作图像的邻域(即点的邻域)操作输出图像中的每个像素值都是由输入图像中对应的像素及其某输出图像中的每个像素值都是由输入图像中对应的像素及其某个邻域内的像素共同决定的,这种图像运算称为邻域运算。通个邻域内的像素共同决定的,这种图像运算称为邻域运算。通常邻域是指一个远远小于图像尺寸的形状规则的像素块,例如,常邻域是指一个远远小于图像尺寸的形状规则的
2、像素块,例如,、的正方形(或其它形状)的正方形(或其它形状) 。一幅图像所定义的所有邻。一幅图像所定义的所有邻3355域应该具有相同的大小。邻域运算与点运算一起形成了最基本、域应该具有相同的大小。邻域运算与点运算一起形成了最基本、最重要的图像处理方法。邻域操作包括两种类型:滑动邻域操最重要的图像处理方法。邻域操作包括两种类型:滑动邻域操作和分离邻域操作。作和分离邻域操作。邻域邻域点,称滑动邻域操作点,称滑动邻域操作邻域邻域邻域,称分离邻域操作邻域,称分离邻域操作(1 1)滑动邻城操作)滑动邻城操作 sliding-neighborhoodsliding-neighborhood operati
3、onoperation滑动邻域操作一次处理一个像素,输出图像的每一个像素的像滑动邻域操作一次处理一个像素,输出图像的每一个像素的像素值都是通过对输入图像对应像素的某邻域内的像素值采用某素值都是通过对输入图像对应像素的某邻域内的像素值采用某种代数运算得到的。滑动邻域操作,经常被用于图像的非线性种代数运算得到的。滑动邻域操作,经常被用于图像的非线性滤波。例如,一个使输出图像像素值等于输入图像对应像素的滤波。例如,一个使输出图像像素值等于输入图像对应像素的2各个邻域像素值标准偏差的滑动邻域操作等。各个邻域像素值标准偏差的滑动邻域操作等。非线性滤波器非线性滤波器help nlfilterNLFILTE
4、R Perform general sliding-neighborhood operations.B = NLFILTER(A,M N,FUN) applies the function FUN to each M-by-N sliding block of A. FUN is a function that accepts an M-by-N matrix as input and returns a scalar:C = FUN(X)C is the output value for the center pixel in the M-by-N block X. NLFILTER cal
5、ls FUN for each pixel in A. NLFILTER zero pads the M-by-N block at the edges, if necessary.B = NLFILTER(A,M N,FUN,P1,P2,.) passes the additional parameters P1,P2,., to FUN.B = NLFILTER(A,indexed,.) processes A as an indexed image, padding with ones if A is of class double and zeros if A is of class
6、uint8.ExampleFUN can be a FUNCTION_HANDLE created using . This example produces the same result as calling MEDFILT2 with a 3-by-3 neighborhood:B = nlfilter(A,3 3,myfun);3where MYFUN is an M-file containing:function scalar = myfun(x)scalar = median(x(:);FUN can also be an inline object. The example a
7、bove can be written as:fun = inline(median(x(:);B = nlfilter(A,3 3,fun);讲讲 inlineinline 函数函数有时为了描述某个数学函数的方便,可以用有时为了描述某个数学函数的方便,可以用 inlineinline 函数来直函数来直接编写该函数,形式相当于已经介绍过的且经常使用的接编写该函数,形式相当于已经介绍过的且经常使用的 M M 函数,函数,但无需编写一个真正的但无需编写一个真正的 M-M-文件它就可以描述出某种数学关系。文件它就可以描述出某种数学关系。具体调用格式为:具体调用格式为:fun=inline(fun=i
8、nline(函数内容函数内容 ,自变量列表,自变量列表) )其中函数内容是需要填写函数的具体语句,其内容应该与其中函数内容是需要填写函数的具体语句,其内容应该与functionfunction 格式的编写内容完全一致。自变量列表则可以列出类格式的编写内容完全一致。自变量列表则可以列出类似于似于 functionfunction 格式下的每一个自变量,且每个自变量均需要格式下的每一个自变量,且每个自变量均需要用单引号括起来,这样就可以动态定义出用单引号括起来,这样就可以动态定义出 inlineinline 函数。函数。例如例如可以用可以用)sin(),(22yxyxf直接定义。直接定义。) ,
9、,)2.2.sin(yxyxinlinef讲匿名函数:讲匿名函数:匿名函数是匿名函数是 MATLAB7.0MATLAB7.0 版本提出的一种全新的函数描述形式,版本提出的一种全新的函数描述形式,4其描述格式类似于其描述格式类似于 inlineinline 函数,但比该函数更简洁,更容易函数,但比该函数更简洁,更容易使用。具体调用格式为:使用。具体调用格式为:fun=(fun=(变量列表变量列表) )函数内容函数内容例如例如,可以用,可以用 fun=(x,y)sin(x.2+y.2)fun=(x,y)sin(x.2+y.2) )sin(),(22yxyxf直接定义。直接定义。注:更重要的是该函数
10、允许直接使用注:更重要的是该函数允许直接使用 MATLABMATLAB 工作空间中的变工作空间中的变量。例如,若在量。例如,若在 MATLABMATLAB 工作空间中已经定义了变量工作空间中已经定义了变量 a a 和和 b b,则则匿名函数可以用匿名函数可以用 fun=(x,y)a*x.2+b*y.2fun=(x,y)a*x.2+b*y.2 的格式定义数学关的格式定义数学关系式系式 f(x,y)=f(x,y)=,这样无需将,这样无需将 a,ba,b 作为附加参数在输入作为附加参数在输入22byax 变量里表示出来变量里表示出来例例 1 1 滑动邻域操作滑动邻域操作clear all,close
11、 allI=imread(eight.tif);I1=imnoise(I,salt fun1 = inline(median(x(:);I2 = nlfilter(I1,3 3,fun1);figure(1),imshow(I1),pausefigure(2),imshow(I2)5即输出图像的每一个像素的像素值是输入图像对应像素的即输出图像的每一个像素的像素值是输入图像对应像素的邻域内像素值的中值。邻域内像素值的中值。33或或clear all,close allI=imread(eight.tif);I1=imnoise(I,salt fun2 =(x)median(x(:);6I2 =
12、nlfilter(I1,3 3,fun2);figure(1),imshow(I1),pausefigure(2),imshow(I2)(2 2)分离邻域操作)分离邻域操作 distinctdistinct blockblock processingprocessing (讲)邻域(讲)邻域邻域,称分离邻域操作邻域,称分离邻域操作help blkprocBLKPROC Implement distinct block processing for image.B = BLKPROC(A,M N,FUN) processes the image A by applying the functio
13、n FUN to each distinct M-by-N block of A, padding A with zeros if necessary. FUN is a function that accepts an M-by-N matrix, X, and returns a matrix, vector, or scalar Y:Y = FUN(X)BLKPROC does not require that Y be the same size as X. However, B is the same size as A only if Y is the same size as X
14、.B = BLKPROC(A,M N,FUN,P1,P2,.) passes the additional parameters P1,P2,., to FUN.例例 2 2 分离邻域操作分离邻域操作clear all,close all7I=imread(tire.tif);f=inline(uint8(round(mean2(x)*ones(size(x);I1=blkproc(I,8,8,f);figure,subplot(121),imshow(I)subplot(122),imshow(I1)即把输入图像矩阵中的即把输入图像矩阵中的邻域的每一个像素值都设置为该邻邻域的每一个像素值都设
15、置为该邻88域的平均值。域的平均值。注:图像显示邻域注:图像显示邻域邻域邻域四、滤波和滤波器设计四、滤波和滤波器设计滤波的目的是滤去信号或图像的噪声(或干扰)滤波的目的是滤去信号或图像的噪声(或干扰) ,或滤去信号或,或滤去信号或图像中不需要的,而保留需要的。图像经过现代的传感器后或在图像中不需要的,而保留需要的。图像经过现代的传感器后或在8传输过程中可能会被各种各样的噪声污染,这些噪声通常是随机传输过程中可能会被各种各样的噪声污染,这些噪声通常是随机的。噪声可分为内部噪声和外部噪声。的。噪声可分为内部噪声和外部噪声。内部噪声:内部噪声:(1)(1) 光电子噪声光电子噪声这个噪声问题是由光子产
16、生的统计特性决定。而光子的产生这个噪声问题是由光子产生的统计特性决定。而光子的产生服从量子物理的定理,这使我们必须在一个给定的空间内讨服从量子物理的定理,这使我们必须在一个给定的空间内讨论光子的平均数目。光子论光子的平均数目。光子 p p 在给定空间上在在给定空间上在 T T 时间内的概率时间内的概率分布分布 P P 服从服从 PoissonPoisson 分布:分布: , 2 , 1 , 0,!,kkeTTkPTk其中其中 是光强度,它是通过每秒钟内的光子数目来衡量的。是光强度,它是通过每秒钟内的光子数目来衡量的。即使没有别的噪声,光电子仍然会在有限的时间间隔即使没有别的噪声,光电子仍然会在有限的时间间隔 T T 内导内导致噪声。光电噪声不是高斯噪声并且不是外加的。致噪声。光电噪声不是高斯噪声并且不是外