- 41
- 0
- 约8.46千字
- 约 44页
- 2017-11-26 发布于湖北
- 举报
第4章 图像的运算
第4章 图像的运算 图像的代数运算是指多幅图像的加减乘除运算和一般的线性运算。 图像运算要求所有信息都是图像且其灰度值都是非负整数值。 主要内容 4.1 点运算 4.2图像的代数运算 4.3图像的逻辑运算 4.4图像的块和邻域处理 4.5图像的几何运算 4.1点运算 用于改变图像的灰度范围分布。 在对图像各像素进行处理时,是输入该图像本身会读的运算方式。 对图像进行点运算时各像素间不发生关系,各像素的处理是独立进行的。 4.1图像的代数运算 4.1.1图像的加运算 计算两幅图像矩阵对应像素值的和。 前提是两幅图像矩阵的大小和类型相同,维数要相同。 调用格式: Z=imadd(X,Y) X、Y中的一个可以是常数。 4.1.2图像的减法运算 图像减法称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。可以使用图像减法来检测一系列相同场景图像的差异。 调用格式: Z=imsubtract(X,Y) Z为输入图像X与输入图像Y相减的结果。减法操作有时会导致某些像素值变为一个负数,此时,该函数自动将这些负数截取为0,可以调用imabsdiff函数,将两幅图像相应像素差值的绝对值。 4.2.4图像插值 图像几何运算在图像处理领域的应用主要是二维插值。 Matlab提供了三种插值方法: 最近邻插值(Nearest neighbor interpolation) 双线性插值(Bilinear interpolation) 双三次插值(Bicubic interpolation) 4.3区域处理 在进行图像处理时,有时只需对图像中的某个特定区域进行处理,并不需要对整个图像进行处理,比如要对用户选定的一个区域作均值滤波或对比度增强的操作。 4.3.1 指定目标区域 4.3.2区域滤波 4.3.3区域填充处理 4.3.2区域滤波 matlab中使用roifilt2函数对指定区域进行滤波处理 调用格式: I=roifilt2(h,I,BW):使用滤波器h对图像I中的二值掩膜BW进行滤波。 J=roifilt2(I,BW,fun):对图像I中的二值掩膜BW作函数运算fun。 4.3.3区域填充处理 roifill函数对指定区域进行填充处理 调用格式: J=roifill(I):由用户手动选择填充的区域。旋转多边形的顶点后,按Enter键确认选择,用Space和Del表示取消一个选择。 J=roifill(I,c,r):填充由向量c,r指定的多边形区域。 J=roifill(I,BW):用掩膜图像BW旋转区域。 [J,BW]=roifill(…):在填充区域的同时返回掩膜图像BW。 J=roifill(x,y,I,xi,yi):在指定的坐标系下填充由向量xi,yi指定的多边形区域。 例17:滑动邻域操作实例 I=imread(tire.tif);
f=@(x)max(x(:));%求最大值函数
I2=nlfilter(I,[3 3],f);%滑动邻域操作求邻域内的最大值
subplot(121);imshow(I);
subplot(122);imshow(I2); 在这个程序中,首先生成一个求最大值的内敛函数,然后调用滑动领域操作函数求邻域内最大值,这样每个像素的值都为3X3邻域内的最大值。 2、colfilt函数 实现快速的邻域操作。当需要对图像的局部实现运算时,可以使用该函数。 常用调用格式: (1)B=colfilt(A,[m n],block_type,fun) mXn:图像块的尺寸 block_ type为指定块的移动方式 distinct:表示图像不重叠 sliding:表示图像块滑动。 fun为运算函数,其形式为y=fun(x) (2)B=colfilt(A,’indexed’,…)将A作为索引图像处理 colfit函数为图像中每个像素建立一个列向量,向量的各元素对应该像素的邻域,如一个大小为6X5的图像,对其按块大小为2X3进行邻域处理。 colfit函数为图像建立一个30列的矩阵,每列有6个元素。 例18: clc clear all I=imread(tire.tif); I1=uint8(colfilt(I,[5 5],‘sliding’,@mean));%用列处理进行滑动邻域操作 f=@(x)ones(25,1)*mean(x);%进行分块处理操作的函数I2=imread(cameraman.tif); I3=uint8(colfilt(double(I2),[5 5],distinct,f));%用列处理进行滑动邻域操作subplo
原创力文档

文档评论(0)