ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:715.21KB ,
资源ID:3679039      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3679039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(滤波反投影程序的设计报告Word下载.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

滤波反投影程序的设计报告Word下载.doc

1、令式内积分等于g(xcos+ysin),则有 g(xcos+ysin)=-+wPw,ej2wt|t= xcos+ysindw实际上,g(xcos+ysin)就是投射角度为时的滤波投影,在t-s坐标系中表达时,转化为g(t,)=h(t)*p(t,),h(t)是传递函数H(w)=|w|的傅里叶逆变换,p(t, )是P(w, )的傅里叶逆变换。所以式可写成 f(x,y)= 0g(xcos+ysin)d 在图3.5中注意到 Xr=rcos(-)=xcos+ysin 是从原点出发的通过点(r,)的射线方程,式可写为: f(x,y)= 0grcos-,d 两式表明:f(x,y)在(x,y)处的重建,等于通

2、过该点的所有角度下滤波投影的累加所得到的像素值,而Xr=rcos(-)=xcos+ysin的变化代表了所有平行投影射线。(三)Radon变换一个无限薄的切片内相对线性衰减系数的分布是由它的所有线积分的集合唯一决定,揭示了函数和投影之间的关系,若函数为f(x,y),则不同角度下的投影可写为P(t,)=-+fx,yxcos+ysin-tdxdy (四)滤波函数 由于直接反投影法把取自有限空间的投影均匀回抹到了射线所及的无限空间的各个像素上,使得原来像素值为0的点不为0,从而产生星状伪迹,滤波反投影算法用人为设计的一维滤波函数对所得投影数据进行卷积,而后进行反投影和累加时,由于正负抵消,可一定程度上

3、消除星状伪迹。现在常用的滤波函数有R-L、S-L、Hanning、Hamming、Parzen、Sigwin窗函数,本次设计比较了R-L、S-L和Parzen 滤波函数的效果,发现Parzen滤波效果最好。1.R-L滤波函数R-L滤波函数频率响应为:R-L滤波函数滤波计算简单,避免了大量的正弦、余弦计算,所重建图像轮廓清楚,空间分辨率高,但有Gibbs现象,表现为明显的振荡响应,特别是工件的边缘和衰减系数变化剧烈(即密度变化)时,尤为明显。S-L滤波器对投影中的高频成分具有抑制作用,进而使重建图像的振荡响应减小,对含噪声的投影数据,重建质量较用RL的好,但在低频段不及R-l滤波函数好,这是由于

4、H(w)在低频段也偏离了|w|的缘故3.Parzen滤波函数三、程序实现程序包含FBP_GUI.m和dps.m两个m文件,其中投影、滤波和反投影过程均为自己编写,没有使用Matlab自带函数,附录中对过程有详细注释,程序大致流程为:运行FBP_GUI.m,跳出界面,选择图像,进行相应处理后存入P,传入主函数dps().投影角度和步长定义为1,利用Radon变换原理进行投影存入R,截取正弦图R1构造滤波函数R-L、S-L和Parzen的离散采样序列存入h将滤波函数h与R1卷积存入G线性内插,将滤波投影值回抹存入a计算三个图像重建精度判据d,r,e,文本输出重建结束、点击别的按钮可进行新图像的重建

5、、点击exit则关闭整个GUI界面。四、运行结果(1)sheep Logan256*256图像重建(2)自定义灰度图像重建(3)自定义RGB图像重建(4)不同滤波函数重建效果比较(以sheep logan图像为例)使用的滤波函数归一化均方距离判据d归一化平均绝对距离判据r最坏情况距离判eParzen0.504870.70730.48133S-L0.636140.991910.49659R-L0.756071.21570.50068可以看出不同滤波函数重建精度:Parzen优于S-L优于R-L。所以后续图像均采用Parzen滤波函数进行滤波处理。五、总结本次程序设计完成了设计目的,投影和反投影过

6、程没有使用自带函数,但是在处理像素比较大的图像时程运行时间比较长,是一个缺点,图像也存在一定误差,效果不是特别完美,不过也算是锻炼了自己的能力,对图像重建中对滤波反投影算法有了深刻的了解,增加了对这门课程的兴趣,期待在以后的学习中能进一步完善程序,缩短运行时间,减小图像误差。六、附录程序代码dps.m文件代码如下:function a=dps(P)tic;%P=phantom(256);%P=imread(gray1.jpg);%P=rgb2gray(P);N,N=size(P);subplot(2,3,2);imshow(P); title(int2str(N),*,int2str(N),原

7、始图像);%先进行自定义radon变换-thm=45; %45度时会出现最大尺寸pre = imrotate(P,thm);mmax,nmax = size(pre);s=1;%创建一个180*nmax的空白图片,用以存储投影后的线状图片Final = zeros(180/s,nmax);%这里180代表180角度,每个角度投影成为一条线t = 1;for theta = 1:s:179Protate = imrotate(P,theta); %对原图旋转一个角度,求和(线积分)Pf = sum(Protate,1);mreal,nreal=size(Pf); %计算实际尺寸%确定起始点if

8、(nmax - nreal)/2-floor(nmax - nreal)/2) = 0 From = floor(nmax - nreal)/2 + 1);%总点数为偶数时 else From = floor(nmax - nreal)/2) + 1;%总点数为奇数时 end%确定结束点End = floor(nmax-nreal)/2) + nreal;%将一个角度Radon变换后的线状图存入结果图像的某一行Final(180/s-t,From:End) = Pf; %从最底下一行开始存起%上移一行t = t + 1;end%再逆时针旋转R=imrotate(Final,90);subplo

9、t(2,3,3);imshow(R,);title(自定义投影后图像z=2*ceil(norm(size(P)-floor(size(P)-1)/2)-1)+3;% radon变换默认平移点数/角度e=floor(z-N)/2)+2; R1=R(e:(N+e-1),:mm,nn=size(R1);subplot(2,3,4);imagesc(R1);title(int2str(mm),int2str(nn),正弦图colormap(gray);colorbar;%滤波函数构造-g=1-N:N-1;% d=1;% R-L滤波函数% for i=1:2*N-1% if g(i)=0% h(i)=1

10、/(4*(d2);% else if mod(g(i),2)=0% h(i)=0;% else % h(i)=(-1)/(pi2*d2*(g(i)2);% end% end% end%S-L滤波函数% d=1;% h(i)=2/(pi2*d2*(1-4*g(i)2);%Parzen滤波函数 for i=1: h(i)=(24*pi*g(i)*cos(pi*g(i)-96*sin(pi*g(i)-48*pi*g(i)*cos(pi*g(i)/2)+384*sin(pi*g(i)/2)-2*(pi3)*(g(i)3)-72*pi*g(i)/(4*(pi5)*(g(i)5); end h(N)=0.

11、0435;%将投影与滤波函数卷积-G=zeros(N,180);for m=1:180 for i=1:N b=0; for n=1: b=b+h(N+n-i)*R1(n,m); G(i,m)=b; end%投影滤波后线性内插进行图像重建-a=zeros(N); %重建图像初始化,每个像素点像素值为0ns=(N+1)/2;180 %遍历每个投影角度 r=pi/180; %将角度换为弧度N for j=1:N %遍历原图的每一个像素点 Xrm=(i-ns)*cos(m*r)+(j-ns)*sin(m*r)+ns-1; %坐标转换 if XrmN-1 n=N-1; c=(1-t)*G(n,m)+t

12、*G(n+1,m); %内插后的滤波投影值 a(N+1-j,i)=a(N+1-j,i)+c; %像素值的叠加%将P、a的像素值变换到0-1之间P=double(P);P=P-min(min(P);kk=max(max(P);for i=1: for j=1: P(i,j)=P(i,j)/kk;a=double(a);a=a-min(min(a);kkk=max(max(a); a(i,j)=a(i,j)/kkk;subplot(2,3,5);imshow(a,); %重建图形的显示滤波反投影重建图像%重建图像质量评价-%计算归一化均方距离判据d;ave=0;for x=1: for y=1:

13、ave=ave+P(x,y); end ave=ave/(N*N); x1=0; x2=0; for x=1: x1=x1+(P(x,y)-a(x,y)2; x2=x2+(P(x,y)-ave)2; evaluate_d=sqrt(double(x1/x2); %计算归一化平均绝对距离判据 r; x3=0; x4=0; x3=x3+abs(P(x,y)-a(x,y); x4=x4+abs(P(x,y); evaluate_r=x3/x4; %计算最坏情况距离判据e ns=floor(N/2)-1; g=zeros(ns);ns T=(P(2*x,2*y)+P(2*x+1,2*y)+P(2*x,

14、2*y+1)+P(2*x+1,2*y+1)/4; R=(a(2*x,2*y)+a(2*x+1,2*y)+a(2*x,2*y+1)+a(2*x+1,2*y+1)/4; g(x,y)=abs(T-R); evaluate_e=max(max(g); %结果文本显示-o=ones(500,1000);subplot(2,3,6);imshow(o,);s_title=图像重建精度判据如下:;text(0,0,s_title,Fontsize,14);s=num2str(toc);s_one=run time = s s;text(0,100,s_one,FontSize,10); s=num2str

15、(evaluate_d);s_two=归一化均方距离判据d=;text(0,200,s_two,s=num2str(evaluate_r);s_three=归一化平均绝对距离判据r=text(0,300,s_three,s=num2str(evaluate_e);s_four=最坏情况距离判据e=text(0,400,s_four,tocFBP_GUI.m文件代码如下:function varargout = FBP_GUI(varargin)% FBP_GUI MATLAB code for FBP_GUI.fig% FBP_GUI, by itself, creates a new FBP

16、_GUI or raises the existing% singleton*.% H = FBP_GUI returns the handle to a new FBP_GUI or the handle to% the existing singleton*.% FBP_GUI(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in FBP_GUI.M with the given input arguments.Property,Value,.) creates a new FBP

17、_GUI or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before FBP_GUI_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to FBP_GUI_OpeningFcn via varargin.% *See GUI O

18、ptions on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help FBP_GUI% Last Modified by GUIDE v2.5 15-Apr-2017 14:24:03% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_Stat

19、e = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, .gui_OpeningFcn, FBP_GUI_OpeningFcn, .gui_OutputFcn, FBP_GUI_OutputFcn, .gui_LayoutFcn, , .gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);if nargout varargout1:nargout = gui_mainfcn(gui_State,

20、 varargin:);else gui_mainfcn(gui_State, varargin:% End initialization code - DO NOT EDIT% - Executes just before FBP_GUI is made visible.function FBP_GUI_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved

21、- to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to FBP_GUI (see VARARGIN)% Choose default command line output for FBP_GUIhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes FBP_GUI wait

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2