logo资料库

数字图像处理图像的加减乘除运算代码.doc

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
第十五讲 图像运算(二)
一、领域操作
1、概述
2、滑动领域操作
3、分离领域操作
二、区域操作
1、区域选择
2、区域操作
三、图像统计
1、象素选择
2、强度描述图
3、图像轮廓图
4、图像柱状图
Author:http://www.5dw.org 青州 seo 第十五讲 图像运算 第十五讲 图像运算((二二)) 【目录】 【目录】 一、领域操作 ........................................1 1、概述 ............................................................. 1 2、滑动领域操作 ................................................... 1 3、分离领域操作 ................................................... 4 二、区域操作 ........................................7 1、区域选择 ........................................................ 7 2、区域操作 ........................................................ 9 三、图像统计 .......................................12 1、象素选择 ....................................................... 12 2、强度描述图 ..................................................... 12 3、图像轮廓图 ..................................................... 14 4、图像柱状图 ..................................................... 15 【正文】 【正文】 一、领域操作 一、领域操作 11、概述、概述 邻域运算 -输出-输出 GG 的像素值 的像素值 邻域运算 取决于输入 FF 的像素值及其某个 的像素值及其某个 取决于输入 邻域内的像素值。 邻域内的像素值。 领域大小 -邻域是一个远小于 -邻域是一个远小于 领域大小 图像尺寸、形状规则的像素块,例 22 图像尺寸、形状规则的像素块,例 ××22、、33××33 的正方形,或用来近似表 的正方形,或用来近似表 示圆及椭圆等形状的多边形。一幅 示圆及椭圆等形状的多边形。一幅 图 像 所 定 义 的 所 有 邻 域 应 大 小 相 图 像 所 定 义 的 所 有 邻 域 应 大 小 相 同。同。 邻域类型 -滑动邻域操作、分 -滑动邻域操作、分 邻域类型 离邻域操作。 离邻域操作。 22、滑动领域操作 、滑动领域操作 (1)(1) 方式方式 Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo 该操作一次处理一个像素,输出图像的每一个像素都是通过对输入图 该操作一次处理一个像素,输出图像的每一个像素都是通过对输入图 像某邻域内的像素值采用某种代数运算得到的。右图说明了一个 66××55 矩阵矩阵 像某邻域内的像素值采用某种代数运算得到的。右图说明了一个 个元素的 22××33 滑动邻域,每一个邻域的中心像素都用一个黑点标出。 中中 33 个元素的 滑动邻域,每一个邻域的中心像素都用一个黑点标出。 (2)(2) 中心像素 中心像素 是输入图像真正要进行处理的像素。如果邻域含有奇数行和列,那么 是输入图像真正要进行处理的像素。如果邻域含有奇数行和列,那么 中心像素就是邻域的真实中心;如果行或列有一维为偶数,那么中心像素 中心像素就是邻域的真实中心;如果行或列有一维为偶数,那么中心像素 将位于中心偏左或偏上方。表示为: 将位于中心偏左或偏上方。表示为: floor(([m,n]+1)/2) floor(([m,n]+1)/2) 例如,在一个 22××22 的邻域中,中心像素就是左上方的像素,而右上图 的邻域中,中心像素就是左上方的像素,而右上图 例如,在一个 (1,2),即位于邻域中第二列、第一行的像 ,即位于邻域中第二列、第一行的像 邻域的中心像素为(1,2) 所示的所示的 22××33 邻域的中心像素为 素。素。 (3)(3) 实现步骤 实现步骤 ** 选择原图一个像素 选择原图一个像素 ** 确定该像素的邻域 确定该像素的邻域 用一个函数对邻域内的像素求值并返回标量结果 ** 用一个函数对邻域内的像素求值并返回标量结果 在输出图像对应的位置填入计算值 ** 在输出图像对应的位置填入计算值 ** 重复计算,遍及所有象素 重复计算,遍及所有象素 (4)(4) nlfilter 【格式】B=nlfilter(A,[m 【格式】 【说明】AA 为输入图像, 【说明】 nlfilter 滑动领域操作函数 滑动领域操作函数 n],fun) B=nlfilter(A,[m n],fun) 为输出图像,领域尺寸为 mm××nn,,funfun 为运算为运算 为输入图像,BB 为输出图像,领域尺寸为 函数函数 【其它】mean 【其它】 -求矩阵的平均值 mean2-求矩阵的平均值 std2 -求矩阵的标准差。 -求矩阵的标准差。 mean -求向量的平均值, -求向量的平均值, mean2 -求向量的的标准差,std2 stdstd -求向量的的标准差, median-求向量的中值 -求向量的中值 median maxmax -求向量的最大值 -求向量的最大值 -求向量的最小值 minmin -求向量的最小值 varvar -求向量的方差 -求向量的方差 inline 自定义函数。 自定义函数。 可以用可以用 inline 【例】用函数 mean 【例】用函数 mean 作滑动处理 作滑动处理 CLFCLF I=imread('tire.tif'); I=imread('tire.tif'); I2=nlfilter(I,[5 5],'mean2'); 5],'mean2'); I2=nlfilter(I,[5 subplot(121),imshow(I,[]); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); subplot(122),imshow(I2,[]); Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo 【例】用自定义函数作滑动处理 【例】用自定义函数作滑动处理 CLFCLF I=imread('tire.tif'); I=imread('tire.tif'); f=inline('max(x(:))'); f=inline('max(x(:))'); I2=nlfilter(I,[3 3],f); 3],f); I2=nlfilter(I,[3 subplot(1,2,1),imshow(I); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(I2); subplot(1,2,2),imshow(I2); colfilt 快速领域操作函数 快速领域操作函数 (5)(5) colfilt 【格式】B=colfilt(A,[m 【格式】 【说明】多一个参数'sliding' 【说明】多一个参数 这种操作称为列处理,加快操作速度。 这种操作称为列处理,加快操作速度。 B=colfilt(A,[m n],'sliding',fun) n],'sliding',fun) 'sliding',指定该函数作滑动领域操作。 ,指定该函数作滑动领域操作。 【例】快速滑动领域操作 【例】快速滑动领域操作 Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo CLFCLF I=imread('tire.tif'); I=imread('tire.tif'); I2=colfilt(I,[5 5],'sliding','mean'); 5],'sliding','mean'); I2=colfilt(I,[5 subplot(121),imshow(I,[]); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); subplot(122),imshow(I2,[]); im2col、、col2im col2im 列操作函数 列操作函数 (6)(6) im2col B=im2col(A,[m n],'sliding') 【格式】B=im2col(A,[m 【格式】 B=col2im(A,[m n],[mm,nn],'sliding') B=col2im(A,[m n],'sliding')-图像排成列 -图像排成列 n],[mm,nn],'sliding')-列重构图像 -列重构图像 【例】用列操作函数实现滑动 【例】用列操作函数实现滑动 CLFCLF I=imread('icic.tif'); .tif'); I=imread(' I1=im2col(I,[33 33],'sliding'); ],'sliding'); I1=im2col(I,[ I1=I1=uint8([0 I2=col2im(I1,[33,,33],size(I),'sliding'); ],size(I),'sliding'); I2=col2im(I1,[ subplot(121),imshow(I,[]); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); subplot(122),imshow(I2,[]); uint8([0 -1-1 00 -1-1 44 -1-1 00 -1-1 0]*double(I 0]*double(I11))));; 33、分离领域操作 、分离领域操作 (1)(1) 方式方式 Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo 分 离 邻 域 操 分 离 邻 域 操 作 也 称 图 像 的 块 作 也 称 图 像 的 块 操 作 。 将 矩 阵 划 操 作 。 将 矩 阵 划 分为分为 mm××nn 后得到后得到 矩 形 。 分 离 邻 域 矩 形 。 分 离 邻 域 从 左 上 角 开 始 覆 从 左 上 角 开 始 覆 盖 整 个 矩 阵 , 邻 盖 整 个 矩 阵 , 邻 域 之 间 没 有 重 叠 域 之 间 没 有 重 叠 部 分 。 如 果 分 割 部 分 。 如 果 分 割 的 邻 域 不 能 很 好 的 邻 域 不 能 很 好 地适应图像的大小,那么需要为图像进行零填充。 地适应图像的大小,那么需要为图像进行零填充。 右图说明了一个被划分为 99 个个 44××88 邻域的邻域的 1111××2222 矩阵,零填充过程 矩阵,零填充过程 右图说明了一个被划分为 添加到图像矩阵所需的底部和右边,此时图像矩阵大小变为 1212×× 将数值将数值 00 添加到图像矩阵所需的底部和右边,此时图像矩阵大小变为 2424。。 blkproc 图像块操作函数 图像块操作函数 (2)(2) blkproc 【格式】B=blkproc(A,[m 【格式】 【说明】与滑动操作不同的是整块操作。 【说明】与滑动操作不同的是整块操作。 B=blkproc(A,[m n],fun) n],fun) 【例】图像块操作 【例】图像块操作 CLFCLF I=imread('tire.tif'); I=imread('tire.tif'); f=inline('mean2(x)*ones(size(x))'); f=inline('mean2(x)*ones(size(x))'); I2=blkproc(I,[8 8],f); 8],f); I2=blkproc(I,[8 subplot(1,2,1),imshow(I,[]) subplot(1,2,1),imshow(I,[]) subplot(1,2,2),imshow(I2,[]) subplot(1,2,2),imshow(I2,[]) colfilt 快速块操作函数 快速块操作函数 (3)(3) colfilt 【格式】B=colfilt(A,[m 【格式】 【说明】参数'distinct' 【说明】参数 n],'distinct',fun) B=colfilt(A,[m n],'distinct',fun) 'distinct',说明该函数作快速块操作。 ,说明该函数作快速块操作。 Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo 【例】快速块操作 【例】快速块操作 CLFCLF I=imread('tire.tif'); I=imread('tire.tif'); f=inline('ones(64,1)* mean(x)'); mean(x)'); f=inline('ones(64,1)* I2=colfilt(I,[8 8],'distinct',f); 8],'distinct',f); I2=colfilt(I,[8 subplot(1,2,1),imshow(I,[]) subplot(1,2,1),imshow(I,[]) subplot(1,2,2),imshow(I2,[]) subplot(1,2,2),imshow(I2,[]) im2col、、col2im col2im 列操作函数 列操作函数 (4)(4) im2col B=im2col(A,[m n],'distinct') 【格式】B=im2col(A,[m 【格式】 B=col2im(A,[m n],[mm,nn],'distinct') B=col2im(A,[m n],'distinct')-图像排成列 -图像排成列 n],[mm,nn],'distinct')-列重构图像 -列重构图像 【例】用列操作函数实现块操作 【例】用列操作函数实现块操作 CLFCLF I=imread('tire I=imread(' tire.tif'); .tif'); Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo distinct');'); ones(64,1)* mean(I1) mean(I1);; I1=im2col(I,[88 88],'],'distinct I1=im2col(I,[ I1=I1=ones(64,1)* I2=col2im(I1,[88,,88],size(I),' I2=col2im(I1,[ subplot(121),imshow(I,[]); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); subplot(122),imshow(I2,[]); ],size(I),'distinct distinct');'); 二、区域操作 二、区域操作 要对特定的区域进行处理时,要定义我们感兴趣的区域。Matlab 要对特定的区域进行处理时,要定义我们感兴趣的区域。 Matlab 中,中, 对这个区域的定义通过一个二值图像(与原始图像大小相等)来实现。称 对这个区域的定义通过一个二值图像(与原始图像大小相等)来实现。称 为为 mask mask 图像。所要选定的区域,在相应的 图像。所要选定的区域,在相应的 mask 图中值为 11,否则为 mask 图中值为 ,否则为 00。。 11、区域选择 、区域选择 roipoly 函数来设置一个多边形区域。 函数来设置一个多边形区域。 多边形选择法。用 roipoly (1)(1) 多边形选择法。用 【格式】BWBW == roipoly(I,c,r) roipoly(I,c,r) 【格式】 【说明】用矢量 cc、、rr 来指定多边形各定点的 【说明】用矢量 【格式】BWBW == roipoly(I) roipoly(I) 【格式】 【说明】交互选择多边形 【说明】交互选择多边形 来指定多边形各定点的 xx、、yy 坐标坐标 【例】选择区域 【例】选择区域 CLFCLF I=imread('eight.tif'); I=imread('eight.tif'); c=[222 272272 300300 270270 221221 194]; 194]; c=[222 r=[21 75]; r=[21 75]; BW=roipoly(I,c,r); BW=roipoly(I,c,r); subplot(121),subimage(I); subplot(121),subimage(I); subplot(122),subimage(BW); subplot(122),subimage(BW); 121121 121121 7575 2121 Author:http://www.5dw.org 寿光 seo
Author:http://www.5dw.org 青州 seo 50 100 150 200 50 100 150 200 50 100 300 灰度选择法。用 roicolor 300 roicolor 函数可以实现安灰度选择区域。 函数可以实现安灰度选择区域。 150 200 250 50 100 150 200 250 (2)(2) 灰度选择法。用 【格式】BWBW == roicolor(A,low,high) roicolor(A,low,high) 【格式】 【说明】指定灰度范围,返回掩模 mask 【说明】指定灰度范围,返回掩模 【格式】BWBW == roicolor(A,v) roicolor(A,v) 【格式】 【说明】按向量 vv 指定的灰度,返回掩模 【说明】按向量 mask 图像图像 指定的灰度,返回掩模 mask mask 图像图像 【例】灰度选择法 【例】灰度选择法 CLFCLF I=imread('rice.tif'); I=imread('rice.tif'); BW=roicolor(I,128,255); BW=roicolor(I,128,255); subplot(121),subimage(I); subplot(121),subimage(I); subplot(122),subimage(BW); subplot(122),subimage(BW); 50 100 150 200 250 50 100 150 200 250 50 100 150 200 250 50 100 150 200 250 (3)(3) 矩阵产生法。用矩阵构造的方法选择区域。 矩阵产生法。用矩阵构造的方法选择区域。 【例】灰度选择法 【例】灰度选择法 CLFCLF I=imread('rice.tif'); I=imread('rice.tif'); %% BW=zeros(size(I)); BW=zeros(size(I)); %% BW(100:150,50:140)=1; BW(100:150,50:140)=1; BW=I>150; BW=I>150; subplot(121),subimage(I); subplot(121),subimage(I); Author:http://www.5dw.org 寿光 seo
分享到:
收藏