文档详情

基于simulink的图像处理

m****
实名认证
店铺
PPT
3.22MB
约53页
文档ID:576926293
基于simulink的图像处理_第1页
1/53

基于SimulinkSimulink的图像处理课程小结 图像增强的simulink实现•图像灰度变换增强:增强图像的对比度 Simulink实现的具体步骤:1、启动Simulink方法有两个:(1)在“CommandWindow”中输入“simulink”启动(2)单击matlAB窗体的simulink快捷键2、选择Simulink窗口菜单栏的File|New|Model命令,新建一个*.mdl文件如右图: 3、添加仿真模型所需要的子模块在lx1的窗口中1)从“sources”子模块库中选择“Image Form File”模块拖放到lx1中相应的位置;(2)从“analysis & Enhancement”子模块库中选择“Contrast Adjustment”模块拖放到lx1中相应的位置;(3)从“sink”子模块库中选择“Video Viewer”模块拖放到lx1中相应的位置两次;4、连接各模块 5、各模块参数的设置:双击相应的模块,在弹出的对话框中进行相应设置1) “Image Form File”模块中设置:main标签File name 文件为“pout.tif”;(2) “Contrast Adjustment”模块中设置: main标签Adjust pixels values from下拉列表中选择Range determined by saturating outlier pixels; 6、仿真器参数的设置:在lx1窗口的菜单项Simulation|Configuration Parameters命令,弹出如图对话框,并进行相应设置:选择select标签的solver选项;simulation time标签,将star time和stop time分别为0;在type标签下拉列表选择Fixed step;在solver标签下拉列表中选择Discret额(no continous states)。

6、运行仿真系统 •仿真结果 •上述例子还可由M语言实现:I=imread(‘C:\Program Files\MATLAB\R2010b\toolbox\images\imdemos\pout.tif’);I=double(I);[M,N]=size(I);for i=1:M for j=1:N if I(I,j)<=30 I(I,j)= I(I,j); elseif I(I,j)<=150 I(I,j)= (200-30)/(150-30)*( I(I,j)-30)+30;elseI(I,j)= (255-200)/(255-150)*( I(I,j)-150)+200;end endendFigure;imshow(uint8(I)); 图像平滑增强:突出图像主要部分或抑制噪声,并使得亮度平缓渐变 例如:用中值滤波Median Filter模块去除图像中的椒盐噪声 A=imread('eight.tif'); B=imnoise(A,'salt & pepper',0.02); 建立仿真模型文件1)“Sources”模块库中选择“Image From Workspace”模块;“Analysis & Enhancement”模块库中选“Median Filter”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果。

3)模块参数设置Image From Workspace”模块的参数,main标签value的文本框中输入A;“Image From Workspace1”模块的参数,main标签value的文本框中输入B4)仿真器参数设置同上例运行结果如下: •同样,上例可由M语言实现:A=imread(‘eight.tif’);B=imnoise(A,‘salt &pepper’,0.02);K=medfilt2(B);Figure,Subplot(121),imshow(B);Subplot(122),imshow(K); •图像锐化增强:恰与平滑相反,补偿图像轮廓,增强图像的边缘及灰度跳变的部分,增强细节,使得图像更清晰例如:用FIR滤波器2-D FIR Filter模块进行图像锐化 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Filtering”模块库中选“2-D FIR Filter”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件;(4)仿真器参数设置同上例。

运行结果如下: •通过M语言实现:A=imread(‘fuwa.jpg’);B=fspecial(‘Sobel’);fspecial(‘Sobel’);B=B’;C=filter2(B,A);Figure, imshow(C); 3、图像转换的Simulink实现 数字图像处理中,图像转换主要包括图像类型转换、色彩空间转换、图像求补及图像数据转换等•图像类型转换 图像类型:主要类型有RGB、灰度、二值和索引 例如:用自动阈值Autothreshold模块将灰度图像转换为二值图 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Conversion”模块库中选“Autothreshold”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件;(4)仿真器参数设置同上例运行结果如下: •色彩空间转换 有9种类型可供选择,如RGB转换为灰度,灰度转换为等 建立仿真模型文件。

1)“Sources”模块库中选择“Image From File”模块;“Conversion”模块库中选“Image Data Type Conversion”模块和“Color Space Conversion”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件;在Image Data Type Conversion”模块的Out Data Type下拉列表中选择double;在“Color Space Conversion”模块的Conversion下拉列表选择“R’G’B’ to HSV”4)仿真器参数设置同上例运行结果如下: •通过M语言实现:A=imread(‘pears.png’);HSV=rgb2hsv(A);Figure, imshow(HSV); •图像求补:将原图像灰度翻转 例如:用图像求补Image Complement模块实现 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Conversion”模块库中选“Image Complement”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果。

3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件liftingbody.png;(4)仿真器参数设置同上例运行结果如下: •通过M语言实现:A=imread(‘liftingbody.png’);B=double(A);B=256-1-B;B=uint8(B);Figure, imshow(B); 4、图像几何变换的Simulink实现图像的几何变换主要指在大小、位置和几何形状的变换处理•图像的旋转例如:Rotate模块实现 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Geometric Transformations”模块库中选“Rotate”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件autumn.tif;在“Rotate”模块main标签下的Angle(radians)输入pi/2(4)仿真器参数设置同上例运行结果如下: 通过M语言实现:A=imread(‘autumn.tif’);B=imrotate(A,90,’nearest’);Figure, imshow(B); •图像的缩放:用Resize模块实现 建立仿真模型文件。

1)“Sources”模块库中选择“Image From File”模块;“Geometric Transformations”模块库中选“Resize”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件kits.tif;在“Resize”模块main标签下的Resize facter in文本框输入【50 50】(4)仿真器参数设置同上例运行结果如下: 通过M语言实现:A=imread(‘kits.tif’);B=imresize(A,0.5,’nearest’);Figure, imshow(A);Figure, imshow(B); 5、图像图形学描述Simulink实现数学形态学是以几何学为基础对图像进行分析,其基本思想就是用一个结构体元素作为基本工具来探测和提取图像特征,看这个结构元素是否能够适当有效地放入图像内部形态学最基本的运算时膨胀和腐蚀,利用膨胀和腐蚀运算可以组成开启和闭合等其他形态学的计算 •膨胀和腐蚀:经过膨胀后,图像比原图像所占像素更多;而腐蚀后,图像则较原图像有所收缩。

例如:通过Dilation模块和Erosion模块实现 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Morphological Operation”模块库中选“Dilation”模块和“Erosion”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件cameraman.tif;(4)仿真器参数设置同上例运行结果如下: 通过M语言实现:A=imread(‘cameraman.tif’);SE=strel(’disk’,4,4);B=imdilate(A,SE);C=imerode(A,SE);FigureSubplot(121),imshow(B);xlabel(‘a)膨胀后图像’);Subplot(121), imshow(C); xlabel(‘b)腐蚀后图像’); •开启与闭合:开启通常起到平滑图像轮廓的作用,去掉轮廓上的突出毛刺,截断狭窄的山谷;闭合虽然对轮廓有平滑作用,但结果相反,它能去除区域中的小孔,填平狭窄的断裂、细长的沟壑及轮廓的缺口。

例如:通过Opening和Closing模块消除噪声先行准备带有椒盐噪声的图像A=imread('tire.tif');B=imnoise(A,'salt & pepper'); 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Morphological Operation”模块库中选“Opening”模块和“Closing”模块;“Sinks”模块库中选择“Video Viewer”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件tire.tif;在Opening模块中,将Neighborhood or strucuring element设为strel('disk',2)4)仿真器参数设置同上例运行结果如下: 通过M语言实现:A=imread('tire.tif');B=imnoise(A,'salt & pepper');SE=strel(’disk’,2);C=imopen(B,SE);D=imclose(C,SE);FigureSubplot(131),imshow(B);xlabel(‘a)椒盐图像’);Subplot(132), imshow(C); xlabel(‘b)开运算后图像’);Subplot(132), imshow(D); xlabel(‘c)闭运算后图像’); •形态学对图像的操作:对二值图像,可用形态学对图像进行适当的操作,以此来提取图像的描述。

例如:用形态学方法分析计算一幅硬币图像里的硬币数量 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Morphological Operation”模块库中选“Opening”模块和“Label”模块;“Conversion”子模块中选择"Autothreshold"模块;“Sinks”模块库中选择“Video Viewer”模块和“Display”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件coins.png;在"Autothreshold"模块中,将main标签的Scale threshold复选框选中,在其下的Threshold scaling factor文本框中输入0.9,在“Label”模块中,在Output下拉列表中选择Number of Labels (4)仿真器参数设置同上例运行结果如下: 通过M语言实现:A=imread('coins.png');B=im2bw(A);SE=strel(’disk’,5);C=imopen(B,SE);FigureSubplot(121),imshow(B);xlabel(‘a)二值图像’);Subplot(122), imshow(C); xlabel(‘b)开运算后图像’); 6、图像处理综合实例的Simulink MatlAB/Simulink视频和图像处理模块集包括多个子模块,在实际应用中,往往根据项目的需要,选取适当的模块对视频和图像进行处理。

例如1:使用视频和图像处理模块集,对图像进行旋转和增强,改善图像的显示效果 建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Geometric Transformation”模块库中选择"Rotate"模块;“Analysis & Enhancement”模块选择“Contrast Adjustment”模块;“Sinks”模块库中选择“Video Viewer”模块和“Display”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件circuit.tif;在"Rotate"模块中,将main标签的Angle(radians)文本框中输入pi/2(即90°);在“Contrast Adjustment”模块中,在main标签下的Adjust pixel value from 下拉列表中选择Range determined by saturating Outlier pixels (4)仿真器参数设置同上例运行结果如下: 例如2:使用视频和图像处理模块集,对图像进行缩小、旋转及边缘检测处理。

建立仿真模型文件1)“Sources”模块库中选择“Image From File”模块;“Geometric Transformation”模块库中选择"Resize"模块;“Analysis & Enhancement”模块选择“Edge Detection”模块;“Conversions”模块库选择Color Space Conversion模块;“Sinks”模块库中选择“Video Viewer”模块和“Display”模块;(2)建立连接,形成仿真模型,并保存结果3)模块参数设置Image From File”模块的参数,main标签value的文本框中输入文件peppers.png;在"Resize"模块中,将main标签的Resize factor in%的文本框中输入【50 50】;在“Color Space Conversion”模块中,Conversion下拉列表中选择R'G'B' to intensity (4)仿真器参数设置同上例运行结果如下: MATLABMATLAB在神经网络识别中的应用课程拓展 基于BP神经网络图像识别的MATLAB实现 神经网络是对人脑或自然神经若干基本特性的抽象,是一种基于连接学说构造的智能放声模型,人们试图通过对它的研究最终解开人脑的奥秘,建立起模拟人脑功能和结构的智能系统,使得计算机能够像人脑那样进行信息处理。

BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer) •利用神经网络进行模式识别的基本步骤–首先根据待识别模式建立所需神经网络;–然后利用识别模型训练神经网络;–最后测试神经网络例如:通过M语言实现对以下图形的识别具体实现如下: (1)描述输入模式,确定BP神经网络参数X1=[1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1];X2=[0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0];X1=[1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1]; (2)令这三个输入模式所对应的输出为Y1=[1,0,0]T,Y2=[0,1,0]T,Y3=[0,0,1]T, (3)为有效地识别这三个图形,需要构成一个输入层神经元个数n=16,输出神经元个数为q=3,它的中间神经元个数为8个。

对于这个网络的最大允许误差 max=0.01,其计算方法的数学表达式为:yt为第t个神经网络的期望输出值,Ct为第t个神经网络的实际输出值学习系数 和 ,在学习过程中取0.01;网络的最大学习次数为100 (4)代码实现:function [w,v,theta,r,t,mse]=bptrain(n,p,q,X,Yo,k,emax,cntmax,a1,b1,rou)%n表示输入神经元个数,p为中间层神经元个数,q为输出神经元个数%X表示输入训练模式,Yo为标准输出,k为训练模式的个数%emax表示最大误差,cntmax表示最大训练误差,a1,b1表示学习系数,rou表示动量系数%w、theta表示结束后输入层与输出层连接权系数和阈值%v、r表示训练计算后中间层和输出层连接权和阈值%t表示训练时间,mse表示每次训练结束后的全局误差tic;w=rands(n,p); %输入层与隐含层连接权v=rands(p,q); %隐含层与输出层连接权theta=rands(1,p); %中间层阈值r=rands(1,q); %输出层阈值cnt=1;er=0; %全局误差为0mse=zeros(1,cntmax);%每次迭代全局误差数组while((er>emax)|(cnt<=cntmax)) E=zeros(1,q); %循环模式识别 for cp=1:k X0=X(cp,:); Y0=Yo(cp,:); %计算中间层的输入Y(j) Y=X0*w; %计算中间层的输出 Y=Y-theta; for j=1:p b(j)=1/(1+exp(-Y(j)));%输出中间层 end %计算输出层c Y=b*v; Y=Y-r; for t=1:q c(t)=1/(1+exp(-Y(t)));%输出中间层(Y0(t)-c(t))*c(t)*(1-c(t)); end %计算输出层校正误差d for t=1:q d(t)=(Y0(t)-c(t))*c(t)*(1-c(t)); end %计算中间层校正误差e xy=d*v'; for t=1:p e(t)=xy(t)*b(t)*(1-b(t)); end %计算下一次中间层和输出之间新的连接权v(i,j),阈值r(j) for t=1:q for j=1:p v(j,t)=v(j,t)+a1*d(t)*b(j); end r(t)=r(t)+a1*d(t); end %下移除输入层和中间层之间的连接权w(i,j),阈值r(j) for j=1:p for i=1:n w(i,j)=w(i,j)+b1*e(j)*X0(i); end theta(j)=theta(j)+b1*e(j); end for t=1:q E(cp)=(Y0(t)-c(t))*(Y0(t)-c(t))+E(cp);%计算当前学习模式的全局误差 end E(cp)=E(cp)*0.5; end er=sum(E);%计算全局误差 mse(cnt)=er;%保存全局误差 cnt=cnt+1;%更新学习次数 endt=toc; function c=bptest(p,q,n,w,v,theta,r,X)%c表示模式X送入神经网络的识别结果%计算中间层的输入Y(j)Y=X*w;%计算中间层输出bY=Y-theta;%中间层阈值for j=1:p b(j)=1/(1+exp(-Y(j)));end%计算输出层cY=b*v;Y=Y-r;thr1=0.01;thr2=0.5;for t=1:q c(t)=1/(1+exp(-Y(t)));end clear all;close all;clc;X1=[1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1];%识别模式X2=[0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0];X3=[1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1];X=[X1;X2;X3];Y1=[1 0 0];%输出模式Y2=[0 1 0];Y3=[0 0 1];Yo=[Y1;Y2;Y3];n=16;p=8;q=3;k=3;a1=0.2;b1=0.2;%rou=0.5;%动量系数emax=0.01;cntmax=100;%最长误差,训练次数[w,v,theta,r,t,mse]=bptrain(n,p,q,X,Yo,k,emax,cntmax,a1,b1);%训练网络X4=[1 1 1 1,1 0 0 1,1 1 1 1,1 0 1 1];disp('模式X1的识别结果:')c1=bptest(p,q,n,w,v,theta,r,X1)disp('模式X2的识别结果:')c2=bptest(p,q,n,w,v,theta,r,X2)disp('模式X3的识别结果:')c3=bptest(p,q,n,w,v,theta,r,X3)disp('模式X4的识别结果:')c4=bptest(p,q,n,w,v,theta,r,X4)c=[c1;c2;c3;c4];for i=1:4 for j=1:3 if c(i,j)>0.5 c(i,j)=1; elseif c(i,j)<0.2 c(i,j)=0; end endenddisp('模式X1~X4的识别结果')cdisp('时间:')t 运行结果:模式X1的识别结果:c1 = 0.9491 0.0217 0.0412模式X2的识别结果:c2 = 0.0434 0.9515 0.0462模式X3的识别结果:c3 = 0.0457 0.0501 0.9351模式X4的识别结果:c4 = 0.8990 0.0216 0.0829模式X1~X4的识别结果c = 1 0 0 0 1 0 0 0 1 1 0 0时间:t = 0.2581 论文提交•MATLAB实现的M程序–适当的注释–结果的简要说明 。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档