图像处理与机器视觉.doc

上传人:啊飒飒 文档编号:11593492 上传时间:2021-08-25 格式:DOC 页数:17 大小:1.32MB
返回 下载 相关 举报
图像处理与机器视觉.doc_第1页
第1页 / 共17页
图像处理与机器视觉.doc_第2页
第2页 / 共17页
图像处理与机器视觉.doc_第3页
第3页 / 共17页
图像处理与机器视觉.doc_第4页
第4页 / 共17页
图像处理与机器视觉.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《图像处理与机器视觉.doc》由会员分享,可在线阅读,更多相关《图像处理与机器视觉.doc(17页珍藏版)》请在三一文库上搜索。

1、图像处理与机器视觉作 业姓名: 学号: 专业: 测试计量技术及仪器 时间:2016年4月作业一:图像增强1、 图像灰度变换。对图像(见图1)进行对比度拉伸,通过直方图获取灰度分布的最小、最大值。图1 灰度拉伸算法描述:直方图均衡化是灰度变换的一个重要应用,它广泛应用在图像增强处理中。可以产生一幅灰度级分布具有均匀概率密度的图像, 扩展了像素取值的动态范围。由于许多图像的灰度值是非均匀分布的,而且灰度值集中在一个小区间内的图像也是很常见的。直方图均衡化就是一种通过重新均匀地分布各灰度值来增强图像对比度的方法。直方图均衡化处理是以累积分布函数 (Cumulative Distri-bution F

2、unction- CDF ) 为基础的直方图修改法。直方图均衡化的目的是将原始图像的直方图变为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像。源程序:clear;clc;close;I=imread(E:学习图像处理与机器视觉灰度变换.bmp);%读取图像 m,n,o=size(I); grayPic=rgb2gray(I); figure,imshow(I); figure,imshow(grayPic); gp=zeros(1,256); %计算各灰度出现的概率for i=1:256 gp(i)=length(find(grayPi

3、c=(i-1)/(m*n); end figure,bar(0:255,gp); title(原图像直方图); xlabel(灰度值); ylabel(出现概率); newGp=zeros(1,256); %计算新的各灰度出现的概率S1=zeros(1,256); S2=zeros(1,256); tmp=0; for i=1:256 tmp=tmp+gp(i); S1(i)=tmp; S2(i)=round(S1(i)*256); end for i=1:256 newGp(i)=sum(gp(find(S2=i); end figure,bar(0:255,newGp); title(均衡

4、化后的直方图); xlabel(灰度值); ylabel(出现概率); newGrayPic=grayPic; %填充各像素点新的灰度值for i=1:256 newGrayPic(find(grayPic=(i-1)=S2(i); end figure,imshow(newGrayPic);处理结果及分析: 运行以上代码后,matlab出来的图像如下图1.1和图1.2所示: 图1.1 原图像及其直方图 图1.2 直方图均衡化后的图像及其直方图从上图中可以看出,图像灰度的最大值为250,最小为0,用直方图均衡化后,图像的直方图的灰度间隔被拉大了,均衡化的图像的一些细节显示了出来,这有利于图像的

5、分析和识别。直方图均衡化就是通过变换函数histeq将原图的直方图调整为具有“平坦”倾向的直方图,然后用均衡直方图校正图像。2、(选作)设计K近邻均值(中值)滤波器,给出图像(见图)处理结果。1) 以待处理像素为中心,作一个m*m的作用模板。2) 在模板中,选择K个与待处理像素的灰度差为最小的像素。3) 将这K个像素的灰度均值(中值)替换掉原来的像素值。图2 图像滤波算法描述:邻近均值滤波,即中值滤波(Median filtering)是一种非常有用的非线性信号处理方法,在一定程度上可以克服采用诸如邻域均值滤波等线性低通滤波器消除噪声时,会将图像边缘模糊掉的缺点。中值滤波尤其对图像中的脉冲噪声

6、、扫描噪声等能有良好的去除效果,但是对含有过多细节的图像,处理效果一般不好。中值滤波器根据器计算方法,可以称为非线性滤波器中的排序统计滤波器,它不是简单的加权求和,而是先把邻域像素按灰度级进行排序,然后再选择该组的中值作为模板输出结果。由于中值滤波在算法设计上使与周围像素灰度级相差较大的点处理后能和周围的像素值比较接近,因此可以衰减随机噪声,尤其是脉冲噪声等。但由于不是简单的取均值,因此产生的模糊要少得多。图2.1为中值滤波器得一维应用示例,其中图(a)为一叠加有1/4采样频率正弦震荡得离散信号序列,在3点邻域中进行中值滤波,在得到得处理结果(b)中,完全消除了正弦波的干扰,而且保留了边界。(

7、a) (b) 图2.1 中值滤波 中值滤波由于需要对邻域所有像素按灰度级进行排序之后得到模板输出结果,因此在计算速度上要比模板卷积慢。为了加快处理速度,在程序设计时采用“冒泡”排序法排序。选用函数medfilt2,b=medfilt2(a,m,n);b是中值滤波后的图象矩阵,a是原图矩阵,m和n是处理模版大小,默认33源程序:clear;clc;close;%medfilt2函数Y=imread(E:学习图像处理与机器视觉图像滤波.bmp);%读取图像H=medfilt2(Y,2 2);subplot(1,2,1),imshow(Y),title(原图)subplot(1,2,2),imsho

8、w(H),title(中值滤波后的效果图);figure,imshow(newGrayPic);处理结果及分析:当选22时,处理结果为:图2.2 中值滤波2*2效果图当选33时,处理结果为:图2.3 中值滤波3*3效果图 当选77时,处理结果为:图2.4 中值滤波7*7效果图由上可知,经过中值滤波后图像变得更加清晰可见。并且函数medfilt2中,M*M选取并不是越大越好,也不是越小越好,从而要选取适当的值。用matlab编写的中值滤波算法程序:clear;clc;close;X=imread(E:学习图像处理与机器视觉图像滤波.bmp );Y=uint8(X); %把x转换成8位的无符号整形

9、数据。U1 = imnoise(Y,salt & pepper, 0.02);subplot(1,2,1),imshow(uint8(U1),title(原图);p=size(U1);x1=double(U1);x2=x1;n=3; %模板 n*n.for i=1:p(1)-n+1 for j=1:p(2)-n+1 c=x1(i:i+(n-1),j:j+(n-1); %取出x1中从(i,j)开始的n行n列元素,即模板(nn的) e=c(1,:); %是c矩阵的第一行 for u=2:n e=e,c(u,:); %将c矩阵变为一个行矩阵 end mm=median(e); %mm是中值 x2(i

10、+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素 endend %未被赋值的元素取原值D=uint8(x2);subplot(1,2,2),imshow(uint8(D),title(中值滤波后的效果图);处理结果如下图:图2.5中值滤波处理效果图从处理结果看出,用matlab函数medfilt2和自己编写的程序,能达到同样的效果。作业二:图像变换1、 对图像(见图)用FFT算法从空域变换到频域;显示幅度频谱,使图像能量中心移到几何中心。将图像旋转450,再显示幅度频谱。图 3 图像变换 算法描述:傅立叶变换是数字图像处理中应用最广的一种变换,其中图像

11、增强、图像复原和图像分析与描述等,每一类处理方法都要用到图像变换,尤其是图像的傅立叶变换。图像的频域增强,常用的图像增强技术可分为基于空域和基于变换域的两类方法。最常用的变换域是频域空间。在频域空间,图像的信息表现为不同频率分量的组合。如果能让某个范围内的分量或某些频率的分量受到抑制而让其他分量不受影响,就可以改变输出图像的频率分布,达到不同的增强目的。频域增强的工作流程:傅立叶变换滤波器傅立叶反变换频域空间的增强方法对应的三个步骤:(1) 将图像f(x,y)从图像空间转换到频域空间,得到F(u,v);(2) 在频域空间中通过不同的滤波函数H(u,v)对图像进行不同的增强,得到G(u,v)(注

12、:不同的滤波器滤除的频率和保留的频率不同,因而可获得不同的增强效果);(3) 将增强后的图像再从频域空间转换到图像空间,得到图像g(x,y)。将图像由空域转换到频域,理论基础是傅里叶变换,要在数字图像处理中应用傅立叶变换,还需要解决两个问题:一是在数学中进行傅立叶变换的f(x)为连续(模拟)信号,而计算机处理的是数字信号(图像数据);二是数学上采用无穷大概念,而计算机只能进行有限次计算。通常,将受这种限制的傅立叶变换称为离散傅立叶变换(Discrete Fourier Transform,DFT)。设f(x)|f(0),f(1), f(2), f(N-1)为一维信号f(x)的N个抽样,其离散傅

13、立叶变换对为:式中:x,u=0, 1, 2, , N1。旋转图像函数imrotate,如 J = imrotate(I,45,bilinear,crop); %双线性插值法旋转图像45度,并剪切图像和原图像大小一致。源程序:clc;clear;close;I,map=imread(E:学习图像处理与机器视觉图像变换.bmp);subplot(2,2,1),imshow(I),title(图像变换原图);J1=imrotate(I,45,bilinear,crop); %双线性插值法旋转图像60度,并剪切图像和原图像大小一致subplot(2,2,3),imshow(J1),title(旋转图像

14、45度);J2=fft2(I); %fft2 函数用于数字图像的二维傅立叶变换K1=fftshift(abs(J2); %频谱中心化RR1=real(K1); %取傅立叶变换的实部II1=imag(K1); %取傅立叶变换的虚部A1=sqrt(RR1.2+II1.2); %计算频谱幅值A1=(A1-min(min(A1)/(max(max(A1)-min(min(A1)*225; %归一化,max(a)求矩阵a中列最大,max(max(a)表示求a中最大元素。subplot(2,2,2),imshow(A1),title(原图像的幅度频谱); %显示原图像的频谱J3=fft2(J1); %ff

15、t2 函数用于数字图像的二维傅立叶变换K2=fftshift(abs(J3); %频谱中心化RR2=real(K2); %取傅立叶变换的实部II2=imag(K2); %取傅立叶变换的虚部A2=sqrt(RR2.2+II2.2); %计算频谱幅值A2=(A2-min(min(A2)/(max(max(A2)-min(min(A2)*225; %归一化subplot(2,2,4),imshow(A2),title(旋转后图像的幅度频谱); %显示旋转图像的频谱处理结果及分析: 图3.1 图像变换处理对比图由旋转不变性可知,如果时域中离散函数旋转45角度,则在变换域中该离散傅立叶变换函数也将旋转同

16、样的角度。2(选作)、已知图像为求其2维FFT变换F(u,v)。源程序:clc;clear;close;f=0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8;subplot(1,2,1),imshow(f,0 255),title(图像变换原图);F=fft2(f);%F=fftshift(log(1+abs(F); %频谱中心化subplot(1,2,2),imshow(F,0 255),title(傅里叶变换后图像);处理结果及分析:图3.2 图像变换作业二结果图作业三:图像分割1、采用合适方法对图像(见图4)进行边缘检测。图4 边缘检测算法描述:边缘检测是从图像中抽取边缘集

17、合。基本步骤:去噪 增强 检测 定位去噪:滤波器降低噪声,但也导致边缘强度损失。增强:突显邻域中灰度有显著变化的点,一般通过梯度幅值完成。检测:梯度幅值较大的并不全是边缘点,确定哪些是边缘点,如梯度幅值阈值判定。定位:精确确定边缘的位置及方向,可在子像素分辨率上来估计。采用的检测方法有,Roberts算子定位比较精确,但由于不包括平滑,所以对于噪声比较敏感。Prewitt算子和Sobel算子都是一阶的微分算子,而前者是平均滤波,后者是加权平均滤波且检测的图像边缘可能大于2个像素。这两者对灰度渐变低噪声的图像有较好的检测效果。实际工程中,Sobel算子应用比较广泛。LOG 滤波器方法通过检测二阶

18、导数过零点来判断边缘点。LOG 滤波器中的正比于低通滤波器的宽度,越大,平滑作用越显著,去除噪声越好,但图像的细节也损失越大,会出现边缘间断现象;越小,平滑作用越轻,会出现假边缘,所以要求适当选取。Canny方法是一阶传统微分中检测阶跃型边缘效果最好的算子之一。它比Roberts算子、Sobel算子和Prewitt算子的去噪能力都要强,能真正检测到弱边缘。缺陷:采用固定的门限,缺乏对不同图像的自适应性,自动化程度低。源程序:clc;clear;close;Y,map=imread(E:学习图像处理与机器视觉边缘检测.bmp);subplot(2,3,1),imshow(Y),title(边缘检

19、测原图);BY_roberts=edge(Y,roberts);subplot(2,3,2),imshow(BY_roberts),title(roberts检测);BY_sobel=edge(Y,sobel);subplot(2,3,3),imshow(BY_sobel),title(sobel检测);BY_prewitt=edge(Y,prewitt);subplot(2,3,4),imshow(BY_prewitt),title(prewitt检测);BY_laplace=edge(Y,log);subplot(2,3,5),imshow(BY_laplace),title(laplac

20、e检测);BY_canny=edge(Y,canny);subplot(2,3,6),imshow(BY_canny),title(canny检测);处理结果及分析:图4.1 边缘检测结果2(选作)、采用判断分析法对图像(图5)进行分割处理。图5 图像分割算法描述:判别分析法确定最佳阈值的准则, 是使进行阈值处理后分离的像素类之间的类间方差最大。设图像总像素数为N,灰度值为i的像素数为Ni,则至灰度级K的灰度分布的0阶矩及1阶矩分别定义为0阶矩: 1阶矩:当K=L-1时,(L-1)=1;(L-1)T,T称为图像的平均灰度。归一化直方图为:源程序:clc;clear;close;Y=imread

21、(E:学习图像处理与机器视觉图像分割.bmp);H=graythresh(Y); %使用最大类间方差法找到图片的一个合适阈值,供函数im2bw用H1=im2bw(Y,H);subplot(1,2,1),imshow(Y),title(图像分割原图);subplot(1,2,2),imshow(H1),title(判别分析法分割后的图像);处理结果与分析:图5.1 图像分割处理结果由图5.1可知,经过判别分析法分割后可以看到图形的大概轮廓。作业四:图像特征提取1、采用图像分块处理的方法提取图像不同区域的特征值。图6 图像特征提取算法描述:图像分块就是将一个mn的图像矩阵I分成 pq图像分块矩阵。

22、即其中每个子图像是矩阵。需要指出的是,在进行矩阵分块时,必须使子图像的大小与原始图像划分的块数满足,才可缓解小样本问题。把所有训练图像样本的子图像看作训练样本图像向量,再对之施行LDA方法。训练样本图像的分块矩阵表示为则所有训练图像样本的子图像矩阵的类间散布矩阵为所有训练图像样本的子图像矩阵的类内散布矩阵为其后的任务与 LDA 类似,就是找出的前r个最大特征值所对应的特征向量,设投影矩阵 ,则训练样本的特征矩阵为源程序:clc;clear;close;I=imread(E:学习图像处理与机器视觉图像特征.bmp);rs=size(I,1);%行数cs=size(I,2);%列数%ch为列间隔c

23、w为行间隔%numr为间隔块个数numc为间隔块个数ch=41;cw=40;numr=round(rs/ch);numc=round(cs/cw);%区域块分割t1=(0:numr-1)*ch+1;t2=(1:numr)*ch;t3=(0:numc-1)*cw+1;t4=(1:numc)*cw;figure;imshow(I);hold on;for i=1:numr for j=1:numc x=t1(i):t2(i); y=t3(j):t4(j); %绘制矩形块 rectangle(Position,t3(j) t1(i) length(x) length(y),. EdgeColor,r,LineWidth,3); endend处理结果及分析:图6.1 图像特征提取结果图由图6.1可知,本文的提出的方法优于Fisherfaces方法。其原因是:通过对原始数字图像分块,再利用 LDA 抽取到每一子块的局部特征,这些局部特征与直接将 LDA 用于原始图像抽取的全局特征相比对模式更具有鉴别性,尤其是对光照变化较大的图像效果更好。不过在特征提取时所花费的时间多于 Fisherfaces 方法。

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1