收藏 分享(赏)

4、图像空域处理与邻域操作(2 图像邻域操作).ppt

上传人:精品资料 文档编号:8505676 上传时间:2019-06-30 格式:PPT 页数:50 大小:1.38MB
下载 相关 举报
4、图像空域处理与邻域操作(2 图像邻域操作).ppt_第1页
第1页 / 共50页
4、图像空域处理与邻域操作(2 图像邻域操作).ppt_第2页
第2页 / 共50页
4、图像空域处理与邻域操作(2 图像邻域操作).ppt_第3页
第3页 / 共50页
4、图像空域处理与邻域操作(2 图像邻域操作).ppt_第4页
第4页 / 共50页
4、图像空域处理与邻域操作(2 图像邻域操作).ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、数字图像处理,2013年9月,主要内容,1、点运算 2、邻域操作,1、点运算,点运算也称为对比度增强和拉伸、灰度变换,是一种通过对图像中的每个像素值进行计算,从而改善图像显示效果的操作。 点运算常用于改变图像的灰度范围及分布,是图像数字化及图像显示的重要工具。在真正进行图像处理之前,有时可以用点运算来克服图像数字化设备的局限性。,1、点运算,典型的点运算应用包括: 光度学标定:对光失真光学图像的校正。 例如:图像被非线性的仪器数字化,可以用点运算变换灰度级,使之反映光照强度的等步长增量。) 对比度增强:调整图像的亮度、对比度,以便观察。,1、点运算,典型的点运算应用包括: 显示标定:显示校正,

2、突出感兴趣的局部特征,甚至补偿显示屏的伽玛值。 例如:如果图像像素的灰度值与屏幕上点的主观亮度呈非线性,就可用点运算校正。,1、点运算,典型的点运算应用包括: 轮廓线确定:为图像加上轮廓线,对图像阈值化。 例如:根据灰度线划分图像区域、等高线。 图像裁剪:将输出图像的灰度级限制在可用范围内。 例如:将灰度级在0255之外的那些值裁剪掉。,1、点运算,点运算是像素的逐点运算,它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的灰度值决定。点运算不会改变图像内像素点之间的空间关系。,1、点运算,设输入图像为A(x,y),输出图像为B(x,y),则点运算可表示为: B(x,y

3、)=f(A(x,y) 点运算完全由灰度映射函数f决定。根据f的不同可以将图像的点运算分为线性点运算和非线性点运算两种。,1、点运算,线性点运算 线性点运算的灰度变换函数形式可以采用线性方程描述,即 s = ar + b 其中,r 为输入点的灰度值,s为相应输出点的灰度值。,a 1 输出对比度加大(扩) a 1 输出对比度减小(压) a 1、b 0 不发生变化 a 1、b 0 灰度值上移或下移 a 0 图像求补(暗区域变量,亮区域变暗)。,1、点运算,线性点运算,lena.png,1、点运算,线性点运算 rice=imread(rice.png); I=double(rice); J=I*0.4

4、3+60; rice2=uint8(J); subplot(1,2,1),imshow(rice); subplot(1,2,2),imshow(rice2);,1、点运算,线性点运算 fruits=imread(fruits.jpg); I=double(fruits); J=I*0.43+60; fruits2=uint8(J); subplot(1,2,1),imshow(fruits); subplot(1,2,2),imshow(fruits2);,1、点运算,线性点运算 rice=imread(rice.png); I=double(rice); J=-1*I; subplot(1

5、,2,1),imshow(rice,); subplot(1,2,2),imshow(J,);,1、点运算,线性点运算 fruits=imread(fruits.jpg); I=double(fruits); J=-1*I+255; fruits2=uint8(J); subplot(1,2,1),imshow(fruits,); subplot(1,2,2),imshow(fruits2,);,1、点运算,非线性点运算 非线性点运算对应于非线性的灰度变换函数。 左图为几种单调非减灰度变换函数,它们都有正斜率,因而可以保留图像的基本外貌,但图像局部对比度会发生变化。,C0:中间灰度增加 C0:

6、中间灰度减小 C0:无变化 Dm:灰度级上限,1、点运算,非线性点运算 非线性点运算对应与非线性的灰度变换函数。 右图为几种单调非减灰度变换函数,它们都有正斜率,因而可以保留图像的基本外貌,但图像局部对比度会发生变化。,C0:中间灰度增加 C0:中间灰度减小 C0:无变化 Dm:灰度级上限,降低较亮及较暗物体的对比度,加强中间灰度级物体的对比度。 01,压低中间灰度级物体的对比度,加强较亮及较暗物体的对比度。 01,Photoshop软件中Image/Adjust/Curves调整选项的几种情况。,1、点运算,主要内容,1、点运算 2、邻域操作,2、邻域操作,邻域运算 输出目标图像G的像素值取

7、决于输入原图像F的像素值及其某个邻域内的像素值。 邻域大小 邻域是一个远小于图像尺寸、形状规则的像素块,例22、33的正方形,或用来近似表示圆及椭圆等形状的多边形。一幅图像所定义的所有邻域应大小相同。 邻域类型 滑动邻域操作、分离邻域操作。,2、邻域操作,滑动邻域操作 方式 该操作一次处理一个像素,输出图像的每一个像素都是通过对输入图像某邻域内的像素值采用某种代数运算得到的。右图说明了一个65矩阵中3个元素的23滑动邻域,每一个邻域的中心像素都用一个黑点标出。,2、邻域操作,滑动邻域操作 中心像素 是输入图像真正要进行处理的像素。如果邻域含有奇数行和列,那么中心像素就是邻域的真实中心;如果行或

8、列有一维为偶数,那么中心像素将位于中心偏左或偏上方。表示为: floor(m,n+1)/2),2、邻域操作,滑动邻域操作 中心像素 例如,而下图所示的23邻域的中心像素为(1,2),即位于邻域中第二列、第一行的像素。,2、邻域操作,滑动邻域操作 实现步骤 选择原图一个像素 确定该像素的邻域 用一个函数对邻域内的像素求值并返回标量结果 在输出图像对应的位置填入计算值 重复计算,遍及所有像素,2、邻域操作,滑动邻域操作 nlfilter滑动邻域操作函数 格式B=nlfilter(A,m n,fun) 说明 A为输入图像,B为输出图像,邻域尺寸为mn,fun为运算函数 其它 mean 求向量的平均值

9、, mean2求矩阵的平均值 std 求向量的的标准差,std2 求矩阵的标准差。 median求向量的中值 max 求向量的最大值 min 求向量的最小值 var 求向量的方差 可以用inline自定义函数。,2、邻域操作,滑动邻域操作 用函数mean作滑动处理 CLF I=imread(tire.tif); I2=nlfilter(I,5 5,mean2); subplot(121),imshow(I,); subplot(122),imshow(I2,);,2、邻域操作,滑动邻域操作 colfilt快速邻域操作函数 格式B=colfilt(A,m n,sliding,fun) 说明 多一

10、个参数sliding,指定该函数作滑动邻域操作。这种操作称为列处理,加快操作速度。,2、邻域操作,原始图像中的每一个像素都对应于colfilt函数所创建的临时矩阵的一个单独列,该列包含该像素邻域内的所有数值。,2、邻域操作,滑动邻域操作 快速滑动邻域操作 CLF I=imread(tire.tif); I2=colfilt(I,5 5,sliding,mean); subplot(121),imshow(I,); subplot(122),imshow(I2,);,2、邻域操作,滑动邻域操作 im2col、col2im列操作函数 格式图像排成列B=im2col(A,m n, sliding)列

11、重构图像B=col2im(A,m n,mm,nn,sliding),2、邻域操作,滑动邻域操作 快速滑动邻域操作 CLF I=imread(tire.tif); I1=im2col(I,3 3,sliding); I1=uint8(0 -1 0 -1 4 -1 0 -1 0*double(I1); I2=col2im(I1,3,3,size(I),sliding); subplot(121),imshow(I,); subplot(122),imshow(I2,);,2、邻域操作,分离邻域操作 方式 分离邻域操作也称图像的块操作。将矩阵划分为mn后得到矩形。 分离邻域从左上角开始覆盖整个矩阵,

12、邻域之间没有重叠部分。如果分割的邻域不能很好地适应图像的大小,那么需要为图像进行零填充。,2、邻域操作,分离邻域操作 方式 下图说明了一个被划分为9个48邻域的1122矩阵,零填充过程将数值0添加到图像矩阵所需的底部和右边,此时图像矩阵大小变为1224。,2、邻域操作,分离邻域操作 blkproc图像块操作函数 格式B=blkproc(A,m n,fun) 说明 与滑动操作不同的是整块操作。,2、邻域操作,分离邻域操作 图像块操作 CLF I=imread(tire.tif); f=inline(mean2(x)*ones(size(x); I2=blkproc(I,8 8,f); subpl

13、ot(1,2,1),imshow(I,) subplot(1,2,2),imshow(I2,),2、邻域操作,分离邻域操作 colfilt快速块操作函数 格式B=colfilt(A,m n,distinct,fun) 说明 参数distinct,说明该函数作快速块操作。,2、邻域操作,将输入图像的每一个邻域进行重新排列来创建一个临时矩阵,在此之前如果必要会对原始图像进行零填充。,2、邻域操作,分离邻域操作 图像块操作 CLF I=imread(tire.tif); f=inline(ones(64,1)* mean(x); I2=colfilt(I,8 8,distinct,f); subpl

14、ot(1,2,1),imshow(I,) subplot(1,2,2),imshow(I2,),2、邻域操作,分离邻域操作 im2col、col2im列操作函数 格式图像排成列B=im2col(A,m n,distinct)列重构图像B=col2im(A,m n,mm,nn,distinct),2、邻域操作,滑动邻域操作 用列操作函数实现块操作 CLF I=imread(tire.tif); I1=im2col(I,8 8,distinct); I1=ones(64,1)* mean(I1); I2=col2im(I1,8,8,size(I),distinct); subplot(121),i

15、mshow(I,); subplot(122),imshow(I2,);,2、邻域操作- 特定区域处理,特定区域处理 要对特定的区域进行处理时,需要定义感兴趣的区域。Matlab中,对这个区域的定义通过一个二值图像(与原始图像大小相等)来实现。称为mask图像。所要选定的区域,在相应的mask图中值为1,否则为0。,2、邻域操作- 特定区域处理,1) 多边形选择法 用roipoly函数来设置一个多边形区域。 格式BW = roipoly(I,c,r) 说明 用矢量c、r来指定多边形各定点的x、y坐标 格式BW = roipoly(I) 说明 交互选择多边形,2、邻域操作- 特定区域处理,选择区

16、域 CLF I=imread(eight.tif); c=222 272 300 270 221 194; r=21 21 75 121 121 75; BW=roipoly(I,c,r); subplot(121),subimage(I); subplot(122),subimage(BW);,2、邻域操作- 特定区域处理,2) 灰度选择法 用roicolor函数可以实现安灰度选择区域。 格式BW = roicolor(A,low,high) 说明 指定灰度范围,返回掩模mask图像 格式BW = roicolor(A,v) 说明 按向量v指定的灰度,返回掩模mask图像,2、邻域操作- 特

17、定区域处理,灰度选择法 CLF I=imread(eight.tif); BW=roicolor(I,128,255); subplot(121),subimage(I); subplot(122),subimage(BW);,2、邻域操作- 特定区域处理,3) 矩阵产生法 用矩阵构造的方法选择区域。 如: 灰度选择法 CLF I=imread(eight.tif); BW=I150; subplot(121),subimage(I); subplot(122),subimage(BW);,2、邻域操作- 特定区域处理,区域操作 1) 区域运算 可以利用mask函数,进行区域图像的叠加。 如:

18、区域图像叠加 I1=double(imread(rice.png); I2=double(imread(tire.tif); I2=imresize(I2,size(I1),bicubic); BW=zeros(size(I2); BW(100:200,50:200)=1; I3=I1.*BW + I2.*(1-BW); subplot(221),imshow(I1,); subplot(222),imshow(I2,); subplot(223),imshow(BW,); subplot(224),imshow(I3,);,2、邻域操作- 特定区域处理,2) 区域滤波 用roifilt2函数

19、实现对指定区域的滤波或处理。 格式用fun函数对指定区域进行滤波J=roifilt2(h,I,BW) 说明 h为滤波器,I输入图像,BW指定区域,J 输出图像。 格式用fun函数对指定区域进行运算J=roifilt2(I,BW,fun) 说明 、I输入图像,BW指定区域,fun为运算函数,J 输出图像。,2、邻域操作- 特定区域处理,2) 区域滤波 对指定区域进行运算 。 CLF I=imread(eight.tif); c=222 272 300 270 221 194; r=21 21 75 121 121 75; BW=roipoly(I,c,r); f=inline(uint8(abs

20、(double(x)-100); J=roifilt2(I,BW,f); subplot(211),subimage(I); subplot(212),subimage(J);,2、邻域操作- 特定区域处理,3)区域填充 用函数roifill函数实现对指定区域的填充,填充的值为多边形边界点的灰度平滑值,相当于擦除。 格式J=roifill(I,c,r)J=roifill(I)J=roifill(I,BW) 说明 I输入图像,用矢量c、r来指定多边形各定点的x、y坐标,BW指定区域,J 输出图像。,2、邻域操作- 特定区域处理,3) 区域填充 CLF I=imread(eight.tif); c=222 272 300 270 221 194; r=21 21 75 121 121 75; J=roifill(I,c,r); subplot(121),subimage(I); subplot(122),subimage(J);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报